summaryrefslogtreecommitdiff
path: root/language/japanese
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/japanese
Initial commit
Diffstat (limited to 'language/japanese')
-rw-r--r--language/japanese/BX/bxbase/LICENSE21
-rw-r--r--language/japanese/BX/bxbase/README-ja.md535
-rw-r--r--language/japanese/BX/bxbase/README.md133
-rw-r--r--language/japanese/BX/bxbase/bxbase-ja.pdfbin0 -> 76496 bytes
-rw-r--r--language/japanese/BX/bxbase/bxbase-ja.tex108
-rw-r--r--language/japanese/BX/bxbase/bxbase.def673
-rw-r--r--language/japanese/BX/bxbase/bxbase.sty73
-rw-r--r--language/japanese/BX/bxbase/bxtoolbox-ext.def563
-rw-r--r--language/japanese/BX/bxbase/bxtoolbox-ja.def186
-rw-r--r--language/japanese/BX/bxbase/bxtoolbox.def1078
-rw-r--r--language/japanese/BX/bxbase/bxtoolbox.sty27
-rw-r--r--language/japanese/BX/bxbase/bxutf8.def182
-rw-r--r--language/japanese/BX/bxbase/bxutf8x.def96
-rw-r--r--language/japanese/BX/bxbase/zxbase.sty149
-rw-r--r--language/japanese/BX/bxjaholiday/LICENSE21
-rw-r--r--language/japanese/BX/bxjaholiday/README.md62
-rw-r--r--language/japanese/BX/bxjaholiday/bxjaholiday.pdfbin0 -> 87495 bytes
-rw-r--r--language/japanese/BX/bxjaholiday/bxjaholiday.sty926
-rw-r--r--language/japanese/BX/bxjaholiday/bxjaholiday.tex279
-rw-r--r--language/japanese/BX/bxjalipsum/LICENSE21
-rw-r--r--language/japanese/BX/bxjalipsum/README.md91
-rw-r--r--language/japanese/BX/bxjalipsum/bxjalipsum.sty1785
-rw-r--r--language/japanese/BX/bxjalipsum/sample-bxjalipsum-1.tex45
-rw-r--r--language/japanese/BX/bxjalipsum/sample-bxjalipsum-2.tex25
-rw-r--r--language/japanese/BX/bxjaprnind/LICENSE21
-rw-r--r--language/japanese/BX/bxjaprnind/README-ja.md47
-rw-r--r--language/japanese/BX/bxjaprnind/README.md62
-rw-r--r--language/japanese/BX/bxjaprnind/bxjaprnind.pdfbin0 -> 321328 bytes
-rw-r--r--language/japanese/BX/bxjaprnind/bxjaprnind.sty388
-rw-r--r--language/japanese/BX/bxjaprnind/bxjaprnind.tex119
-rw-r--r--language/japanese/BX/bxjaprnind/sample-bxjaprnind.pdfbin0 -> 67452 bytes
-rw-r--r--language/japanese/BX/bxjaprnind/sample-bxjaprnind.tex131
-rw-r--r--language/japanese/BX/bxjscls/LICENSE28
-rw-r--r--language/japanese/BX/bxjscls/README-ja.md279
-rw-r--r--language/japanese/BX/bxjscls/README.md146
-rw-r--r--language/japanese/BX/bxjscls/bxjscls-manual.pdfbin0 -> 635563 bytes
-rw-r--r--language/japanese/BX/bxjscls/bxjscls-manual.tex1664
-rw-r--r--language/japanese/BX/bxjscls/bxjscls.dtx11608
-rw-r--r--language/japanese/BX/bxjscls/bxjscls.ins16
-rw-r--r--language/japanese/BX/bxjscls/bxjscls.pdfbin0 -> 1051568 bytes
-rw-r--r--language/japanese/BX/bxwareki/LICENSE21
-rw-r--r--language/japanese/BX/bxwareki/README.md53
-rw-r--r--language/japanese/BX/bxwareki/bxwareki-cd.def126
-rw-r--r--language/japanese/BX/bxwareki/bxwareki.pdfbin0 -> 182364 bytes
-rw-r--r--language/japanese/BX/bxwareki/bxwareki.sty513
-rw-r--r--language/japanese/BX/bxwareki/bxwareki.tex240
-rw-r--r--language/japanese/BX/bxwareki/bxwareki2019.def3
l---------language/japanese/CJK1
-rw-r--r--language/japanese/README.CJK5
-rw-r--r--language/japanese/bxcjkjatype/LICENSE21
-rw-r--r--language/japanese/bxcjkjatype/README-ja.md284
-rw-r--r--language/japanese/bxcjkjatype/README.md282
-rw-r--r--language/japanese/bxcjkjatype/bxcjkjatype.sty1056
-rw-r--r--language/japanese/bxcjkjatype/sample-bxcjkjatype-beamer.pdfbin0 -> 157803 bytes
-rw-r--r--language/japanese/bxcjkjatype/sample-bxcjkjatype-beamer.tex76
-rw-r--r--language/japanese/bxcjkjatype/sample-bxcjkjatype.pdfbin0 -> 101778 bytes
-rw-r--r--language/japanese/bxcjkjatype/sample-bxcjkjatype.tex48
-rw-r--r--language/japanese/endnotesj/LICENSE27
-rw-r--r--language/japanese/endnotesj/Makefile26
-rw-r--r--language/japanese/endnotesj/README.md25
-rw-r--r--language/japanese/endnotesj/endnotesj-ja.pdfbin0 -> 146998 bytes
-rw-r--r--language/japanese/endnotesj/endnotesj-ja.tex232
-rw-r--r--language/japanese/endnotesj/endnotesj.sty664
-rw-r--r--language/japanese/japanese-otf-uptex/00otf-uptex.txt384
-rw-r--r--language/japanese/japanese-otf-uptex/COPYRIGHT26
-rw-r--r--language/japanese/japanese-otf-uptex/README32
-rw-r--r--language/japanese/japanese-otf-uptex/basepl/ubase-h.pl192
-rw-r--r--language/japanese/japanese-otf-uptex/basepl/ubase-v.pl156
-rw-r--r--language/japanese/japanese-otf-uptex/basepl/ubrsg-h.pl167
-rw-r--r--language/japanese/japanese-otf-uptex/basepl/ubrsg-v.pl142
-rw-r--r--language/japanese/japanese-otf-uptex/script/CheckDVICode.pm284
-rw-r--r--language/japanese/japanese-otf-uptex/script/MakeSPList.pm71
-rwxr-xr-xlanguage/japanese/japanese-otf-uptex/script/mktfm_sp.pl99
-rwxr-xr-xlanguage/japanese/japanese-otf-uptex/script/mkutf32list.pl162
-rwxr-xr-xlanguage/japanese/japanese-otf-uptex/script/mkutfvf_sp.pl166
-rw-r--r--language/japanese/japanese-otf-uptex/script/sp_list_c.txt17
-rw-r--r--language/japanese/japanese-otf-uptex/script/sp_list_j.txt75
-rw-r--r--language/japanese/japanese-otf-uptex/script/sp_list_k.txt14
-rw-r--r--language/japanese/japanese-otf-uptex/script/sp_list_t.txt204
-rwxr-xr-xlanguage/japanese/japanese-otf-uptex/script/umkpkana.pl601
-rwxr-xr-xlanguage/japanese/japanese-otf-uptex/script/umkvpkana.pl568
-rw-r--r--language/japanese/japanese-otf-uptex/sty/mlutf.sty58
-rw-r--r--language/japanese/japanese-otf-uptex/sty/otf.sty578
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/Makefile192
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/era.tex111
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/exclam.tex133
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/otfscale.tex69
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/paren0.tex45
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/punct0.tex31
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/punctuation.tex181
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/sp_cns_utf.tex204
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/sp_gb_utf.tex17
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex75
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex75
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/sp_kr_utf.tex14
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/uotf-sp-utf8.tex313
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/uotftest-utf8.tex291
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/uotftest.tex191
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/upbrsgtest.tex293
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/upjis2004.tex158
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/upkanatest1.tex103
-rw-r--r--language/japanese/japanese-otf-uptex/test/uplatex/upkanatest2.tex75
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothb-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothb-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothbn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothbn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgotheb-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgotheb-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothebn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothebn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothr-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothr-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothrn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothrn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothr-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothr-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothrn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothrn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminb-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminb-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminbn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminbn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminl-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminl-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminln-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminln-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminr-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminr-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminrn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgexpminrn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothb-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothb-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothbn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothbn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgotheb-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgotheb-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothebn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothebn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothr-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothr-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothrn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothrn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothr-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothr-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothrn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothrn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminb-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminb-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminbn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminbn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminl-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminl-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminln-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminln-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminr-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminr-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminrn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminrn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgothb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgothb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgothbn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgothbn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgotheb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgotheb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgothebn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgothebn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgothr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgothr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgothrn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpgothrn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpmgothr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpmgothr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpmgothrn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpmgothrn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminbn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminbn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminl-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminl-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminln-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminln-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminrn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upexpminrn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgothb-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgothb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgothbn-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgothbn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgotheb-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgotheb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgothebn-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgothebn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgothr-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgothr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgothrn-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphgothrn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphmgothr-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphmgothr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphmgothrn-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphmgothrn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminb-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminbn-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminbn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminl-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminl-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminln-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminln-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminr-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminrn-h.tfmbin0 -> 432 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uphminrn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgothb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgothb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgothbn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgothbn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgotheb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgotheb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgothebn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgothebn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgothr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgothr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgothrn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlgothrn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlmgothr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlmgothr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlmgothrn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlmgothrn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminbn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminbn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminl-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminl-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminln-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminln-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminrn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/upnmlminrn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubygothb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubygothb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubygotheb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubygotheb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubygothr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubygothr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubymgothr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubymgothr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubyminb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubyminb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubyminl-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubyminl-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubyminr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/uprubyminr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcgrk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcgrk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcgrl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcgrl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcgrm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcgrm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcgro-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcgro-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcmrk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcmrk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcmrl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcmrl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcmrm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcmrm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcmro-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfcmro-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrj-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrj-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrn-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrn-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgro-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgro-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrp-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrp-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrr-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrr-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrs-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrs-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrt-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrt-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgru-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgru-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrv-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrv-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrw-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrw-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrx-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrx-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgry-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgry-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrz-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfgrz-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbj-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbj-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbn-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbn-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbo-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbo-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbp-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbp-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbr-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbr-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbs-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbs-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbt-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbt-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbu-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbu-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbv-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbv-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbx-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbx-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgby-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgby-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbz-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgbz-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgej-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgej-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgek-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgek-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgel-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgel-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgem-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgem-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgen-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgen-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgeo-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgeo-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgep-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgep-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgeq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgeq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjger-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjger-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjges-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjges-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjget-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjget-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgeu-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgeu-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgev-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgev-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgex-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgex-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgey-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgey-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgez-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgez-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrj-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrj-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrn-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrn-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgro-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgro-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrp-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrp-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrr-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrr-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrs-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrs-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrt-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrt-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgru-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgru-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrv-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrv-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrx-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrx-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgry-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgry-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrz-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjgrz-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbj-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbj-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbn-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbn-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbo-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbo-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbp-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbp-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbr-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbr-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbs-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbs-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbt-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbt-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbu-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbu-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbv-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbv-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbx-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbx-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmby-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmby-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbz-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmbz-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrj-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrj-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrn-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrn-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgro-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgro-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrp-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrp-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrr-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrr-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrs-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrs-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrt-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrt-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgru-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgru-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrv-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrv-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrx-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrx-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgry-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgry-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrz-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmgrz-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlj-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlj-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmll-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmll-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmln-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmln-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlo-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlo-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlp-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlp-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlr-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlr-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmls-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmls-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlt-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlt-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlu-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlu-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlv-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlv-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlx-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlx-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmly-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmly-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlz-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmlz-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrj-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrj-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrn-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrn-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmro-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmro-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrp-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrp-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrr-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrr-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrs-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrs-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrt-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrt-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmru-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmru-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrv-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrv-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrx-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrx-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmry-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmry-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrz-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfjmrz-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrj-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrj-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrn-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrn-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmro-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmro-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrp-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrp-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrr-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrr-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrs-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrs-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrt-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrt-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmru-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmru-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrv-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrv-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrw-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrw-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrx-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrx-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmry-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmry-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrz-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utfmrz-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrn-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrn-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgro-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgro-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrp-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrp-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrr-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrr-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrs-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrs-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrt-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrt-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgru-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgru-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrv-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrv-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrw-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrw-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrx-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrx-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrz-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftgrz-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrk-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrk-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrl-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrl-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrm-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrm-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrn-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrn-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmro-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmro-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrp-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrp-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrq-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrq-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrr-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrr-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrs-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrs-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrt-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrt-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmru-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmru-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrv-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrv-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrw-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrw-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrx-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrx-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrz-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/tfm/utftmrz-v.tfmbin0 -> 172 bytes
-rwxr-xr-xlanguage/japanese/japanese-otf-uptex/umakeotf78
-rwxr-xr-xlanguage/japanese/japanese-otf-uptex/umakeotf_brsg65
-rwxr-xr-xlanguage/japanese/japanese-otf-uptex/umakeotf_jis04112
-rw-r--r--language/japanese/japanese-otf-uptex/umakeotf_pre12
-rwxr-xr-xlanguage/japanese/japanese-otf-uptex/umakeotf_prop38
-rwxr-xr-xlanguage/japanese/japanese-otf-uptex/umkjvf953
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-v.vfbin0 -> 651344 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-v.vfbin0 -> 651344 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-h.vfbin0 -> 651320 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-v.vfbin0 -> 651344 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-v.vfbin0 -> 651344 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-h.vfbin0 -> 651320 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-v.vfbin0 -> 651348 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-h.vfbin0 -> 651320 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-v.vfbin0 -> 651348 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-v.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-v.vfbin0 -> 651092 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-v.vfbin0 -> 651092 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-v.vfbin0 -> 651092 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgothb-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgothb-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgothbn-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgothbn-v.vfbin0 -> 651344 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgotheb-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgotheb-v.vfbin0 -> 651344 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgothebn-h.vfbin0 -> 651320 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgothebn-v.vfbin0 -> 651344 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgothr-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgothr-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgothrn-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpgothrn-v.vfbin0 -> 651344 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpmgothr-h.vfbin0 -> 651320 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpmgothr-v.vfbin0 -> 651348 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpmgothrn-h.vfbin0 -> 651320 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpmgothrn-v.vfbin0 -> 651348 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminb-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminb-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminbn-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminbn-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminl-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminl-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminln-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminln-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminr-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminr-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminrn-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upexpminrn-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgothb-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgothb-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgothbn-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgothbn-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgotheb-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgotheb-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgothebn-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgothebn-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgothr-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgothr-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgothrn-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlgothrn-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlmgothr-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlmgothr-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-h.vfbin0 -> 651072 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-v.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminb-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminb-v.vfbin0 -> 651092 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminbn-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminbn-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminl-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminl-v.vfbin0 -> 651092 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminln-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminln-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminr-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminr-v.vfbin0 -> 651092 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminrn-h.vfbin0 -> 651068 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/upnmlminrn-v.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubygothb-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubygothb-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubygotheb-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubygotheb-v.vfbin0 -> 651344 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubygothr-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubygothr-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubymgothr-h.vfbin0 -> 651320 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubymgothr-v.vfbin0 -> 651348 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubyminb-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubyminb-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubyminl-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubyminl-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubyminr-h.vfbin0 -> 651316 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/uprubyminr-v.vfbin0 -> 651340 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcgrk-h.vfbin0 -> 136 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcgrk-v.vfbin0 -> 136 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcgrl-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcgrl-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcgrm-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcgrm-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcgro-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcgro-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcmrk-h.vfbin0 -> 136 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcmrk-v.vfbin0 -> 136 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcmrl-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcmrl-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcmrm-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcmrm-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcmro-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfcmro-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrj-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrj-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrk-h.vfbin0 -> 4696 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrk-v.vfbin0 -> 4696 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrl-h.vfbin0 -> 4740 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrl-v.vfbin0 -> 4740 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrm-h.vfbin0 -> 2616 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrm-v.vfbin0 -> 2616 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrn-h.vfbin0 -> 3972 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrn-v.vfbin0 -> 3972 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgro-h.vfbin0 -> 4896 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgro-v.vfbin0 -> 4896 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrp-h.vfbin0 -> 2756 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrp-v.vfbin0 -> 2756 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrq-h.vfbin0 -> 3700 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrq-v.vfbin0 -> 3700 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrr-h.vfbin0 -> 2428 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrr-v.vfbin0 -> 2428 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrs-h.vfbin0 -> 4140 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrs-v.vfbin0 -> 4140 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrt-h.vfbin0 -> 1964 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrt-v.vfbin0 -> 1964 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgru-h.vfbin0 -> 1092 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgru-v.vfbin0 -> 1092 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrv-h.vfbin0 -> 592 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrv-v.vfbin0 -> 592 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrw-h.vfbin0 -> 88 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrw-v.vfbin0 -> 88 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrx-h.vfbin0 -> 112 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrx-v.vfbin0 -> 112 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgry-h.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgry-v.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrz-h.vfbin0 -> 1184 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfgrz-v.vfbin0 -> 1184 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbj-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbj-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbk-h.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbk-v.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbl-h.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbl-v.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbm-h.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbm-v.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbn-h.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbn-v.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbo-h.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbo-v.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbp-h.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbp-v.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbq-h.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbq-v.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbr-h.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbr-v.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbs-h.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbs-v.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbt-h.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbt-v.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbu-h.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbu-v.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbv-h.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbv-v.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbx-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbx-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgby-h.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgby-v.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbz-h.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgbz-v.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgej-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgej-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgek-h.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgek-v.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgel-h.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgel-v.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgem-h.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgem-v.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgen-h.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgen-v.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgeo-h.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgeo-v.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgep-h.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgep-v.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgeq-h.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgeq-v.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjger-h.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjger-v.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjges-h.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjges-v.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjget-h.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjget-v.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgeu-h.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgeu-v.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgev-h.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgev-v.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgex-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgex-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgey-h.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgey-v.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgez-h.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgez-v.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrj-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrj-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrk-h.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrk-v.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrl-h.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrl-v.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrm-h.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrm-v.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrn-h.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrn-v.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgro-h.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgro-v.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrp-h.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrp-v.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrq-h.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrq-v.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrr-h.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrr-v.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrs-h.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrs-v.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrt-h.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrt-v.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgru-h.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgru-v.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrv-h.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrv-v.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrx-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrx-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgry-h.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgry-v.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrz-h.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjgrz-v.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbj-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbj-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbk-h.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbk-v.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbl-h.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbl-v.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbm-h.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbm-v.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbn-h.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbn-v.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbo-h.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbo-v.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbp-h.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbp-v.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbq-h.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbq-v.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbr-h.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbr-v.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbs-h.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbs-v.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbt-h.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbt-v.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbu-h.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbu-v.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbv-h.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbv-v.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbx-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbx-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmby-h.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmby-v.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbz-h.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmbz-v.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrj-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrj-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrk-h.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrk-v.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrl-h.vfbin0 -> 684 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrl-v.vfbin0 -> 684 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrm-h.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrm-v.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrn-h.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrn-v.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgro-h.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgro-v.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrp-h.vfbin0 -> 752 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrp-v.vfbin0 -> 752 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrq-h.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrq-v.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrr-h.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrr-v.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrs-h.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrs-v.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrt-h.vfbin0 -> 412 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrt-v.vfbin0 -> 412 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgru-h.vfbin0 -> 276 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgru-v.vfbin0 -> 276 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrv-h.vfbin0 -> 480 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrv-v.vfbin0 -> 480 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrx-h.vfbin0 -> 72 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrx-v.vfbin0 -> 72 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgry-h.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgry-v.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrz-h.vfbin0 -> 820 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmgrz-v.vfbin0 -> 820 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlj-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlj-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlk-h.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlk-v.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmll-h.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmll-v.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlm-h.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlm-v.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmln-h.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmln-v.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlo-h.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlo-v.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlp-h.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlp-v.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlq-h.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlq-v.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlr-h.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlr-v.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmls-h.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmls-v.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlt-h.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlt-v.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlu-h.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlu-v.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlv-h.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlv-v.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlx-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlx-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmly-h.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmly-v.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlz-h.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmlz-v.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrj-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrj-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrk-h.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrk-v.vfbin0 -> 784 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrl-h.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrl-v.vfbin0 -> 680 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrm-h.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrm-v.vfbin0 -> 376 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrn-h.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrn-v.vfbin0 -> 852 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmro-h.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmro-v.vfbin0 -> 444 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrp-h.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrp-v.vfbin0 -> 748 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrq-h.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrq-v.vfbin0 -> 632 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrr-h.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrr-v.vfbin0 -> 528 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrs-h.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrs-v.vfbin0 -> 768 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrt-h.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrt-v.vfbin0 -> 408 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmru-h.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmru-v.vfbin0 -> 272 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrv-h.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrv-v.vfbin0 -> 476 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrx-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrx-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmry-h.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmry-v.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrz-h.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfjmrz-v.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrj-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrj-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrk-h.vfbin0 -> 4696 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrk-v.vfbin0 -> 4696 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrl-h.vfbin0 -> 4740 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrl-v.vfbin0 -> 4740 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrm-h.vfbin0 -> 2616 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrm-v.vfbin0 -> 2616 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrn-h.vfbin0 -> 3972 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrn-v.vfbin0 -> 3972 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmro-h.vfbin0 -> 4896 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmro-v.vfbin0 -> 4896 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrp-h.vfbin0 -> 2756 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrp-v.vfbin0 -> 2756 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrq-h.vfbin0 -> 3700 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrq-v.vfbin0 -> 3700 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrr-h.vfbin0 -> 2428 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrr-v.vfbin0 -> 2428 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrs-h.vfbin0 -> 4140 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrs-v.vfbin0 -> 4140 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrt-h.vfbin0 -> 1964 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrt-v.vfbin0 -> 1964 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmru-h.vfbin0 -> 1092 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmru-v.vfbin0 -> 1092 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrv-h.vfbin0 -> 592 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrv-v.vfbin0 -> 592 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrw-h.vfbin0 -> 88 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrw-v.vfbin0 -> 88 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrx-h.vfbin0 -> 112 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrx-v.vfbin0 -> 112 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmry-h.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmry-v.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrz-h.vfbin0 -> 1184 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utfmrz-v.vfbin0 -> 1184 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrk-h.vfbin0 -> 3792 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrk-v.vfbin0 -> 3792 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrl-h.vfbin0 -> 3876 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrl-v.vfbin0 -> 3876 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrm-h.vfbin0 -> 2160 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrm-v.vfbin0 -> 2160 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrn-h.vfbin0 -> 3080 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrn-v.vfbin0 -> 3080 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgro-h.vfbin0 -> 4252 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgro-v.vfbin0 -> 4252 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrp-h.vfbin0 -> 1972 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrp-v.vfbin0 -> 1972 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrq-h.vfbin0 -> 2992 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrq-v.vfbin0 -> 2992 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrr-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrr-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrs-h.vfbin0 -> 3264 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrs-v.vfbin0 -> 3264 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrt-h.vfbin0 -> 1496 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrt-v.vfbin0 -> 1496 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgru-h.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgru-v.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrv-h.vfbin0 -> 136 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrv-v.vfbin0 -> 136 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrw-h.vfbin0 -> 88 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrw-v.vfbin0 -> 88 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrx-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrx-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrz-h.vfbin0 -> 428 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftgrz-v.vfbin0 -> 428 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrk-h.vfbin0 -> 3792 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrk-v.vfbin0 -> 3792 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrl-h.vfbin0 -> 3876 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrl-v.vfbin0 -> 3876 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrm-h.vfbin0 -> 2160 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrm-v.vfbin0 -> 2160 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrn-h.vfbin0 -> 3080 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrn-v.vfbin0 -> 3080 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmro-h.vfbin0 -> 4252 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmro-v.vfbin0 -> 4252 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrp-h.vfbin0 -> 1972 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrp-v.vfbin0 -> 1972 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrq-h.vfbin0 -> 2992 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrq-v.vfbin0 -> 2992 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrr-h.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrr-v.vfbin0 -> 1872 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrs-h.vfbin0 -> 3264 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrs-v.vfbin0 -> 3264 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrt-h.vfbin0 -> 1496 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrt-v.vfbin0 -> 1496 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmru-h.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmru-v.vfbin0 -> 816 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrv-h.vfbin0 -> 136 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrv-v.vfbin0 -> 136 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrw-h.vfbin0 -> 88 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrw-v.vfbin0 -> 88 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrx-h.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrx-v.vfbin0 -> 68 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrz-h.vfbin0 -> 428 bytes
-rw-r--r--language/japanese/japanese-otf-uptex/vf/utftmrz-v.vfbin0 -> 428 bytes
-rw-r--r--language/japanese/japanese-otf/COPYRIGHT25
-rw-r--r--language/japanese/japanese-otf/README37
-rw-r--r--language/japanese/japanese-otf/TeXLive-maps/otf-cktx.map35
-rw-r--r--language/japanese/japanese-otf/basepl/base-h.pl155
-rw-r--r--language/japanese/japanese-otf/basepl/base-v.pl150
-rw-r--r--language/japanese/japanese-otf/basepl/base0-h.pl30
-rw-r--r--language/japanese/japanese-otf/basepl/base2-h.pl47
-rw-r--r--language/japanese/japanese-otf/basepl/base2-v.pl31
-rw-r--r--language/japanese/japanese-otf/basepl/base3-v.pl47
-rw-r--r--language/japanese/japanese-otf/basepl/brsg-h.pl137
-rw-r--r--language/japanese/japanese-otf/basepl/brsg-v.pl136
-rwxr-xr-xlanguage/japanese/japanese-otf/makeotf342
-rwxr-xr-xlanguage/japanese/japanese-otf/mkjvf713
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjgb-h.ofmbin0 -> 372 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjgb-v.ofmbin0 -> 324 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjge-h.ofmbin0 -> 372 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjge-v.ofmbin0 -> 324 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjgr-h.ofmbin0 -> 372 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjgr-v.ofmbin0 -> 324 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjmb-h.ofmbin0 -> 372 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjmb-v.ofmbin0 -> 324 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjmgr-h.ofmbin0 -> 372 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjmgr-v.ofmbin0 -> 324 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjml-h.ofmbin0 -> 372 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjml-v.ofmbin0 -> 324 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjmr-h.ofmbin0 -> 372 bytes
-rw-r--r--language/japanese/japanese-otf/ofm/otf-cjmr-v.ofmbin0 -> 324 bytes
-rw-r--r--language/japanese/japanese-otf/otf-script-gteb.diff268
-rw-r--r--language/japanese/japanese-otf/readme-ja.txt227
-rw-r--r--language/japanese/japanese-otf/script/glyphdatabin0 -> 32768 bytes
-rw-r--r--language/japanese/japanese-otf/script/mkaltutfvf.pl118
-rw-r--r--language/japanese/japanese-otf/script/mkcidofm.pl66
-rw-r--r--language/japanese/japanese-otf/script/mkcidvf.pl105
-rw-r--r--language/japanese/japanese-otf/script/mkjp04tfmvf.pl104
-rw-r--r--language/japanese/japanese-otf/script/mkmlcidvf.pl114
-rw-r--r--language/japanese/japanese-otf/script/mkpkana.pl272
-rw-r--r--language/japanese/japanese-otf/script/mkpropofm.pl86
-rw-r--r--language/japanese/japanese-otf/script/mktfm.pl164
-rw-r--r--language/japanese/japanese-otf/script/mkutfvf.pl91
-rw-r--r--language/japanese/japanese-otf/script/mkvpkana.pl277
-rwxr-xr-xlanguage/japanese/japanese-otf/script/otf-hangul.rb51
-rw-r--r--language/japanese/japanese-otf/sty/ajmacros.sty746
-rw-r--r--language/japanese/japanese-otf/sty/mlcid.sty35
-rw-r--r--language/japanese/japanese-otf/sty/mlutf.sty58
-rw-r--r--language/japanese/japanese-otf/sty/otf-hangul.dfu11555
-rw-r--r--language/japanese/japanese-otf/sty/otf.sty405
-rw-r--r--language/japanese/japanese-otf/sty/redeffont.sty211
-rw-r--r--language/japanese/japanese-otf/test/brsgtest.tex153
-rw-r--r--language/japanese/japanese-otf/test/jis2004.tex59
-rw-r--r--language/japanese/japanese-otf/test/koreanexample.tex44
-rw-r--r--language/japanese/japanese-otf/test/otftest.tex148
-rw-r--r--language/japanese/japanese-otf/test/pkanatest.tex32
-rw-r--r--language/japanese/japanese-otf/test/pkanatest2.tex47
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgothb-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgothb-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgothbn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgothbn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgotheb-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgotheb-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgothebn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgothebn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgothr-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgothr-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgothrn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpgothrn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpmgothr-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpmgothr-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpmgothrn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpmgothrn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminb-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminb-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminbn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminbn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminl-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminl-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminln-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminln-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminr-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminr-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminrn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgexpminrn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgothb-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgothb-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgothbn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgothbn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgotheb-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgotheb-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgothebn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgothebn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgothr-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgothr-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgothrn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlgothrn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlmgothr-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlmgothr-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlmgothrn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlmgothrn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminb-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminb-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminbn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminbn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminl-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminl-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminln-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminln-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminr-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminr-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminrn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/brsgnmlminrn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcgr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidcmr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgb5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjge5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmb5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjml5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidjmr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkgr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkgr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkgr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkgr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkmr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkmr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkmr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkmr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkmr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkmr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkmr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkmr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkmr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidkmr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtgr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtgr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtgr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtgr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtmr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtmr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtmr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtmr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtmr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtmr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtmr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtmr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtmr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/cidtmr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgothb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgothb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgothbn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgothbn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgotheb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgotheb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgothebn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgothebn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgothr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgothr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgothrn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expgothrn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expmgothr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expmgothr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expmgothrn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expmgothrn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminbn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminbn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminl-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminl-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminln-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminln-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminrn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/expminrn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgothb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgothb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgothbn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgothbn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgotheb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgotheb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgothebn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgothebn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgothr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgothr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgothrn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hgothrn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hmgothr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hmgothr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hmgothrn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hmgothrn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminbn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminbn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminl-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminl-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminln-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminln-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminrn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/hminrn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgothb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgothb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgothbn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgothbn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgotheb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgotheb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgothebn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgothebn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgothr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgothr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgothrn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlgothrn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlmgothr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlmgothr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlmgothrn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlmgothrn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminbn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminbn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminl-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminl-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminln-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminln-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminrn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/nmlminrn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ccgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ccgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ccmr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ccmr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjgb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjgb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjge-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjge-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjmb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjmb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjmgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjmgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjml-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjml-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjmr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-cjmr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ckgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ckgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ckmr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ckmr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ctgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ctgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ctmr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ctmr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ucgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ucgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ucmr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ucmr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujgb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujgb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujgbn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujgbn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujge-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujge-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujgen-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujgen-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujgrn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujgrn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmbn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmbn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmgrn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmgrn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujml-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujml-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmln-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmln-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmrn-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ujmrn-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ukgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ukgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ukmr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-ukmr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-utgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-utgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-utmr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/otf-utmr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubygothb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubygothb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubygotheb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubygotheb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubygothr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubygothr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubymgothr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubymgothr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubyminb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubyminb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubyminl-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubyminl-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubyminr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/rubyminr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcgrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfcmrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfgrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgb9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgba-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgba-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbe-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbe-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbn9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbna-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbna-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbnb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbnb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbnc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbnc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbnd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbnd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbne-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbne-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbnf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgbnf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjge9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgea-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgea-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgeb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgeb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgec-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgec-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjged-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjged-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgee-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgee-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgef-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgef-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgen9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgena-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgena-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgenb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgenb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgenc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgenc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgend-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgend-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgene-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgene-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgenf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgenf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrn9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrna-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrna-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrnb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrnb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrnc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrnc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrnd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrnd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrne-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrne-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrnf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjgrnf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmb9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmba-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmba-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbe-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbe-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbn9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbna-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbna-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbnb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbnb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbnc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbnc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbnd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbnd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbne-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbne-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbnf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmbnf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrn9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrna-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrna-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrnb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrnb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrnc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrnc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrnd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrnd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrne-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrne-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrnf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmgrnf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjml9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmla-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmla-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmld-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmld-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmle-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmle-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmln9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlna-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlna-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlnb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlnb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlnc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlnc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlnd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlnd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlne-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlne-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlnf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmlnf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrn9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrna-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrna-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrnb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrnb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrnc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrnc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrnd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrnd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrne-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrne-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrnf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfjmrnf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkgrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfkmrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utfmrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftgrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr0-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr2-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr2-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr3-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr6-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr6-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr7-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr7-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr8-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr8-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr9-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmr9-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmra-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmra-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmrb-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmrb-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmrc-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmrc-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmrd-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmrd-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmre-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmre-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmrf-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/tfm/utftmrf-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgothb-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgothb-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgothbn-h.vfbin0 -> 142000 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgothbn-v.vfbin0 -> 141976 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgotheb-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgotheb-v.vfbin0 -> 141744 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgothebn-h.vfbin0 -> 142000 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgothebn-v.vfbin0 -> 141980 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgothr-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgothr-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgothrn-h.vfbin0 -> 142000 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpgothrn-v.vfbin0 -> 141976 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpmgothr-h.vfbin0 -> 141716 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpmgothr-v.vfbin0 -> 141744 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpmgothrn-h.vfbin0 -> 142008 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpmgothrn-v.vfbin0 -> 141984 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminb-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminb-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminbn-h.vfbin0 -> 141996 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminbn-v.vfbin0 -> 141976 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminl-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminl-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminln-h.vfbin0 -> 141996 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminln-v.vfbin0 -> 141976 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminr-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminr-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminrn-h.vfbin0 -> 141996 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgexpminrn-v.vfbin0 -> 141976 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgothb-h.vfbin0 -> 141468 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgothb-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgothbn-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgothbn-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgotheb-h.vfbin0 -> 141472 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgotheb-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgothebn-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgothebn-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgothr-h.vfbin0 -> 141468 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgothr-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgothrn-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlgothrn-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlmgothr-h.vfbin0 -> 141472 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlmgothr-v.vfbin0 -> 141528 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlmgothrn-h.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlmgothrn-v.vfbin0 -> 141764 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminb-h.vfbin0 -> 141468 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminb-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminbn-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminbn-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminl-h.vfbin0 -> 141468 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminl-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminln-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminln-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminr-h.vfbin0 -> 141468 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminr-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminrn-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/brsgnmlminrn-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr2-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr3-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr5-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr5-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr6-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr6-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr7-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcgr7-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr2-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr3-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr5-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr5-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr6-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr6-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr7-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidcmr7-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb2-v.vfbin0 -> 113876 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb3-v.vfbin0 -> 112480 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb5-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgb5-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge2-v.vfbin0 -> 113876 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge3-v.vfbin0 -> 112480 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge5-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjge5-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr2-v.vfbin0 -> 113876 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr3-v.vfbin0 -> 112480 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr5-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjgr5-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb2-v.vfbin0 -> 113876 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb3-v.vfbin0 -> 112480 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb5-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmb5-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr0-h.vfbin0 -> 111836 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr0-v.vfbin0 -> 111836 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr1-h.vfbin0 -> 112220 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr1-v.vfbin0 -> 112220 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr2-h.vfbin0 -> 112220 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr2-v.vfbin0 -> 113880 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr3-h.vfbin0 -> 112220 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr3-v.vfbin0 -> 112484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr4-h.vfbin0 -> 112220 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr4-v.vfbin0 -> 112220 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr5-h.vfbin0 -> 112220 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmgr5-v.vfbin0 -> 112220 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml2-v.vfbin0 -> 113876 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml3-v.vfbin0 -> 112480 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml5-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjml5-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr2-v.vfbin0 -> 113876 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr3-v.vfbin0 -> 112480 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr5-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidjmr5-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkgr0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkgr0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkgr1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkgr1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkgr2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkgr2-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkgr3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkgr3-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkgr4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkgr4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkmr0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkmr0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkmr1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkmr1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkmr2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkmr2-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkmr3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkmr3-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkmr4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidkmr4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtgr0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtgr0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtgr1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtgr1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtgr2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtgr2-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtgr3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtgr3-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtgr4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtgr4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtmr0-h.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtmr0-v.vfbin0 -> 111832 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtmr1-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtmr1-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtmr2-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtmr2-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtmr3-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtmr3-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtmr4-h.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/cidtmr4-v.vfbin0 -> 112216 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgothb-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgothb-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgothbn-h.vfbin0 -> 142000 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgothbn-v.vfbin0 -> 141976 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgotheb-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgotheb-v.vfbin0 -> 141744 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgothebn-h.vfbin0 -> 142000 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgothebn-v.vfbin0 -> 141980 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgothr-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgothr-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgothrn-h.vfbin0 -> 142000 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expgothrn-v.vfbin0 -> 141976 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expmgothr-h.vfbin0 -> 141716 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expmgothr-v.vfbin0 -> 141744 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expmgothrn-h.vfbin0 -> 142008 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expmgothrn-v.vfbin0 -> 141984 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminb-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminb-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminbn-h.vfbin0 -> 141996 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminbn-v.vfbin0 -> 141976 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminl-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminl-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminln-h.vfbin0 -> 141996 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminln-v.vfbin0 -> 141976 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminr-h.vfbin0 -> 141712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminr-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminrn-h.vfbin0 -> 141996 bytes
-rw-r--r--language/japanese/japanese-otf/vf/expminrn-v.vfbin0 -> 141976 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgothb-h.vfbin0 -> 141468 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgothb-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgothbn-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgothbn-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgotheb-h.vfbin0 -> 141472 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgotheb-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgothebn-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgothebn-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgothr-h.vfbin0 -> 141468 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgothr-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgothrn-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlgothrn-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlmgothr-h.vfbin0 -> 141472 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlmgothr-v.vfbin0 -> 141528 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlmgothrn-h.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlmgothrn-v.vfbin0 -> 141764 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminb-h.vfbin0 -> 141468 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminb-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminbn-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminbn-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminl-h.vfbin0 -> 141468 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminl-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminln-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminln-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminr-h.vfbin0 -> 141468 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminr-v.vfbin0 -> 141524 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminrn-h.vfbin0 -> 141756 bytes
-rw-r--r--language/japanese/japanese-otf/vf/nmlminrn-v.vfbin0 -> 141760 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubygothb-h.vfbin0 -> 141688 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubygothb-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubygotheb-h.vfbin0 -> 141688 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubygotheb-v.vfbin0 -> 141744 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubygothr-h.vfbin0 -> 141688 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubygothr-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubymgothr-h.vfbin0 -> 141688 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubymgothr-v.vfbin0 -> 141744 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubyminb-h.vfbin0 -> 141688 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubyminb-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubyminl-h.vfbin0 -> 141688 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubyminl-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubyminr-h.vfbin0 -> 141688 bytes
-rw-r--r--language/japanese/japanese-otf/vf/rubyminr-v.vfbin0 -> 141740 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgr9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgra-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgra-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgrb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgrb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgrc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgrc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgrd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgrd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgre-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgre-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgrf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcgrf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmr9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmra-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmra-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmrb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmrb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmrc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmrc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmrd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmrd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmre-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmre-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmrf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfcmrf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr0-h.vfbin0 -> 118576 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr0-v.vfbin0 -> 118576 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr1-h.vfbin0 -> 118952 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr1-v.vfbin0 -> 118952 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr2-h.vfbin0 -> 119168 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr2-v.vfbin0 -> 119168 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr3-h.vfbin0 -> 122188 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr3-v.vfbin0 -> 122188 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr4-h.vfbin0 -> 122576 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr4-v.vfbin0 -> 122576 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr5-h.vfbin0 -> 120808 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr5-v.vfbin0 -> 120808 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr6-h.vfbin0 -> 120768 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr6-v.vfbin0 -> 120768 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr7-h.vfbin0 -> 120928 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr7-v.vfbin0 -> 120928 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr8-h.vfbin0 -> 121028 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr8-v.vfbin0 -> 121028 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr9-h.vfbin0 -> 121140 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgr9-v.vfbin0 -> 121140 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgra-h.vfbin0 -> 119972 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgra-v.vfbin0 -> 119972 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgrb-h.vfbin0 -> 123044 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgrb-v.vfbin0 -> 123044 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgrc-h.vfbin0 -> 123044 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgrc-v.vfbin0 -> 123044 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgrd-h.vfbin0 -> 120904 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgrd-v.vfbin0 -> 120904 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgre-h.vfbin0 -> 122712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgre-v.vfbin0 -> 122712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgrf-h.vfbin0 -> 120284 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfgrf-v.vfbin0 -> 120284 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgb9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgba-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgba-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbe-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbe-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbn9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbna-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbna-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbnb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbnb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbnc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbnc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbnd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbnd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbne-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbne-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbnf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgbnf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjge9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgea-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgea-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgeb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgeb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgec-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgec-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjged-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjged-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgee-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgee-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgef-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgef-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgen9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgena-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgena-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgenb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgenb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgenc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgenc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgend-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgend-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgene-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgene-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgenf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgenf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgr9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgra-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgra-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgre-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgre-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrn9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrna-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrna-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrnb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrnb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrnc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrnc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrnd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrnd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrne-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrne-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrnf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjgrnf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmb9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmba-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmba-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbe-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbe-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbn9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbna-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbna-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbnb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbnb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbnc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbnc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbnd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbnd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbne-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbne-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbnf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmbnf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgr9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgra-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgra-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgre-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgre-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn0-h.vfbin0 -> 118488 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn0-v.vfbin0 -> 118488 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn1-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn1-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn2-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn2-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn3-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn3-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn4-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn4-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn5-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn5-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn6-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn6-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn7-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn7-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn8-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn8-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn9-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrn9-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrna-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrna-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrnb-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrnb-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrnc-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrnc-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrnd-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrnd-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrne-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrne-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrnf-h.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmgrnf-v.vfbin0 -> 118872 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjml9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmla-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmla-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmld-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmld-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmle-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmle-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmln9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlna-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlna-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlnb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlnb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlnc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlnc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlnd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlnd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlne-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlne-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlnf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmlnf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmr9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmra-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmra-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmre-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmre-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrn9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrna-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrna-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrnb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrnb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrnc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrnc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrnd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrnd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrne-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrne-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrnf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfjmrnf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgr9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgra-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgra-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgrb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgrb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgrc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgrc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgrd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgrd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgre-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgre-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgrf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkgrf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmr9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmra-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmra-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmrb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmrb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmrc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmrc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmrd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmrd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmre-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmre-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmrf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfkmrf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr0-h.vfbin0 -> 118576 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr0-v.vfbin0 -> 118576 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr1-h.vfbin0 -> 118952 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr1-v.vfbin0 -> 118952 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr2-h.vfbin0 -> 119168 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr2-v.vfbin0 -> 119168 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr3-h.vfbin0 -> 122188 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr3-v.vfbin0 -> 122188 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr4-h.vfbin0 -> 122576 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr4-v.vfbin0 -> 122576 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr5-h.vfbin0 -> 120808 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr5-v.vfbin0 -> 120808 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr6-h.vfbin0 -> 120768 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr6-v.vfbin0 -> 120768 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr7-h.vfbin0 -> 120928 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr7-v.vfbin0 -> 120928 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr8-h.vfbin0 -> 121028 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr8-v.vfbin0 -> 121028 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr9-h.vfbin0 -> 121140 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmr9-v.vfbin0 -> 121140 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmra-h.vfbin0 -> 119972 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmra-v.vfbin0 -> 119972 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmrb-h.vfbin0 -> 123044 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmrb-v.vfbin0 -> 123044 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmrc-h.vfbin0 -> 123044 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmrc-v.vfbin0 -> 123044 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmrd-h.vfbin0 -> 120904 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmrd-v.vfbin0 -> 120904 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmre-h.vfbin0 -> 122712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmre-v.vfbin0 -> 122712 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmrf-h.vfbin0 -> 120284 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utfmrf-v.vfbin0 -> 120284 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgr9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgra-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgra-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgrb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgrb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgrc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgrc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgrd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgrd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgre-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgre-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgrf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftgrf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr0-h.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr0-v.vfbin0 -> 118484 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr1-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr1-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr2-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr2-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr3-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr3-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr4-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr4-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr5-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr5-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr6-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr6-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr7-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr7-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr8-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr8-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr9-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmr9-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmra-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmra-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmrb-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmrb-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmrc-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmrc-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmrd-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmrd-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmre-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmre-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmrf-h.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/japanese-otf/vf/utftmrf-v.vfbin0 -> 118868 bytes
-rw-r--r--language/japanese/jlreq/LICENSE12
-rw-r--r--language/japanese/jlreq/Makefile185
-rw-r--r--language/japanese/jlreq/README-ja.md450
-rw-r--r--language/japanese/jlreq/README-template.html94
-rw-r--r--language/japanese/jlreq/README-template.tex68
-rw-r--r--language/japanese/jlreq/README.md122
-rw-r--r--language/japanese/jlreq/jfm-jlreq.lua1195
-rw-r--r--language/japanese/jlreq/jlreq-helpers.sty555
-rw-r--r--language/japanese/jlreq/jlreq-ja.pdfbin0 -> 353139 bytes
-rw-r--r--language/japanese/jlreq/jlreq-trimmarks-ja.md165
-rw-r--r--language/japanese/jlreq/jlreq-trimmarks.md159
-rw-r--r--language/japanese/jlreq/jlreq-trimmarks.sty957
-rw-r--r--language/japanese/jlreq/jlreq.cls5877
-rw-r--r--language/japanese/jlreq/jlreq.pdfbin0 -> 115733 bytes
-rw-r--r--language/japanese/jlreq/luajfm2pl.lua342
-rw-r--r--language/japanese/jlreq/make_variant_jfm.lua177
l---------language/japanese/jsclasses1
-rw-r--r--language/japanese/jtex/00NEWS148
-rw-r--r--language/japanese/jtex/00README28
-rw-r--r--language/japanese/jtex/README26
-rw-r--r--language/japanese/platex-tools/LICENSE27
-rw-r--r--language/japanese/platex-tools/Makefile28
-rw-r--r--language/japanese/platex-tools/README.md83
-rw-r--r--language/japanese/platex-tools/plarray.pdfbin0 -> 66352 bytes
-rw-r--r--language/japanese/platex-tools/plarray.sty60
-rw-r--r--language/japanese/platex-tools/plarray.tex82
-rw-r--r--language/japanese/platex-tools/plextarray.pdfbin0 -> 92346 bytes
-rw-r--r--language/japanese/platex-tools/plextarray.sty121
-rw-r--r--language/japanese/platex-tools/plextarray.tex157
-rw-r--r--language/japanese/platex-tools/plextdelarray.pdfbin0 -> 71413 bytes
-rw-r--r--language/japanese/platex-tools/plextdelarray.sty55
-rw-r--r--language/japanese/platex-tools/plextdelarray.tex159
-rw-r--r--language/japanese/platex-tools/pxatbegshi.pdfbin0 -> 68491 bytes
-rw-r--r--language/japanese/platex-tools/pxatbegshi.sty100
-rw-r--r--language/japanese/platex-tools/pxatbegshi.tex82
-rw-r--r--language/japanese/platex-tools/pxeverysel.pdfbin0 -> 58790 bytes
-rw-r--r--language/japanese/platex-tools/pxeverysel.sty169
-rw-r--r--language/japanese/platex-tools/pxeverysel.tex66
-rw-r--r--language/japanese/platex-tools/pxeveryshi.pdfbin0 -> 44094 bytes
-rw-r--r--language/japanese/platex-tools/pxeveryshi.sty28
-rw-r--r--language/japanese/platex-tools/pxeveryshi.tex67
-rw-r--r--language/japanese/platex-tools/pxftnright.pdfbin0 -> 56616 bytes
-rw-r--r--language/japanese/platex-tools/pxftnright.sty140
-rw-r--r--language/japanese/platex-tools/pxftnright.tex66
-rw-r--r--language/japanese/platex-tools/pxmulticol.pdfbin0 -> 49650 bytes
-rw-r--r--language/japanese/platex-tools/pxmulticol.sty25
-rw-r--r--language/japanese/platex-tools/pxmulticol.tex62
-rw-r--r--language/japanese/platex/LICENSE28
-rw-r--r--language/japanese/platex/Makefile171
-rw-r--r--language/japanese/platex/README.md66
-rw-r--r--language/japanese/platex/exppl2e.pdfbin0 -> 172427 bytes
-rw-r--r--language/japanese/platex/exppl2e.sty405
-rw-r--r--language/japanese/platex/jclasses.dtx4523
-rw-r--r--language/japanese/platex/jltxdoc.dtx205
-rw-r--r--language/japanese/platex/kinsoku.dtx395
-rw-r--r--language/japanese/platex/pl209.dtx240
-rw-r--r--language/japanese/platex/pl209.ins32
-rw-r--r--language/japanese/platex/platex-en.pdfbin0 -> 149713 bytes
-rw-r--r--language/japanese/platex/platex.dtx1793
-rw-r--r--language/japanese/platex/platex.ini9
-rw-r--r--language/japanese/platex/platex.pdfbin0 -> 288279 bytes
-rw-r--r--language/japanese/platex/platexrelease.dtx384
-rw-r--r--language/japanese/platex/platexrelease.ins25
-rw-r--r--language/japanese/platex/platexrelease.pdfbin0 -> 121553 bytes
-rw-r--r--language/japanese/platex/plcls.ins48
-rw-r--r--language/japanese/platex/plcore.dtx2474
-rw-r--r--language/japanese/platex/pldoc.pdfbin0 -> 841630 bytes
-rw-r--r--language/japanese/platex/pldocs.ins24
-rw-r--r--language/japanese/platex/plext.dtx1457
-rw-r--r--language/japanese/platex/plfmt.ins35
-rw-r--r--language/japanese/platex/plfonts.dtx2803
-rw-r--r--language/japanese/platex/plnews.cls100
-rw-r--r--language/japanese/platex/plnews01.tex234
-rw-r--r--language/japanese/platex/plnews02.tex122
-rw-r--r--language/japanese/platex/plnews03.tex80
-rw-r--r--language/japanese/platex/plnews04.tex85
-rw-r--r--language/japanese/platex/plnews05.tex67
-rw-r--r--language/japanese/platex/plnews06.tex137
-rw-r--r--language/japanese/platex/plnews07.tex106
-rw-r--r--language/japanese/platex/plnews08.tex111
-rw-r--r--language/japanese/platex/plnewsc01.tex150
-rw-r--r--language/japanese/platex/plnewsc02.tex79
-rw-r--r--language/japanese/platex/plnewsc03.tex78
-rw-r--r--language/japanese/platex/plnewsc04.tex113
-rw-r--r--language/japanese/platex/plnewsc05.tex87
-rw-r--r--language/japanese/platex/plnewsc06.tex134
-rw-r--r--language/japanese/platex/plnewsc07.tex274
-rw-r--r--language/japanese/platex/plnewsc08.tex96
-rw-r--r--language/japanese/platex/plnewsc09.tex81
-rw-r--r--language/japanese/platex/plnewsc10.tex77
-rw-r--r--language/japanese/platex/plnewsc11.tex94
-rw-r--r--language/japanese/platex/plnewsc12.tex69
-rw-r--r--language/japanese/platex/plvers.dtx462
-rw-r--r--language/japanese/plautopatch/LICENSE27
-rw-r--r--language/japanese/plautopatch/Makefile26
-rw-r--r--language/japanese/plautopatch/README.md95
-rw-r--r--language/japanese/plautopatch/plarydshln.sty35
-rw-r--r--language/japanese/plautopatch/plautopatch-ja.pdfbin0 -> 100134 bytes
-rw-r--r--language/japanese/plautopatch/plautopatch-ja.tex154
-rw-r--r--language/japanese/plautopatch/plautopatch.pdfbin0 -> 33938 bytes
-rw-r--r--language/japanese/plautopatch/plautopatch.sty208
-rw-r--r--language/japanese/plautopatch/plautopatch.tex156
-rw-r--r--language/japanese/plautopatch/pldocverb.sty41
-rw-r--r--language/japanese/plautopatch/plextarydshln.sty60
-rw-r--r--language/japanese/plautopatch/plextcolortbl.sty39
-rw-r--r--language/japanese/plautopatch/plsiunitx.sty71
-rw-r--r--language/japanese/plautopatch/pxpdfpages.sty51
-rw-r--r--language/japanese/plautopatch/pxpgfrcs.sty34
-rw-r--r--language/japanese/ptex-base/LICENSE28
-rw-r--r--language/japanese/ptex-base/Makefile21
-rw-r--r--language/japanese/ptex-base/README.md30
-rw-r--r--language/japanese/ptex-base/ascii-jplain.tex48
-rw-r--r--language/japanese/ptex-base/eptex.ini4
-rw-r--r--language/japanese/ptex-base/eptex.src778
-rw-r--r--language/japanese/ptex-base/eptexdefs.lib92
-rw-r--r--language/japanese/ptex-base/kinsoku.tex274
-rw-r--r--language/japanese/ptex-base/ptex.ini4
-rw-r--r--language/japanese/ptex-base/ptex.tex68
-rw-r--r--language/japanese/ptex/COPYRIGHT25
-rw-r--r--language/japanese/ptex/COPYRIGHT.jis32
-rw-r--r--language/japanese/ptex/Changes.txt302
-rw-r--r--language/japanese/ptex/Files27
-rw-r--r--language/japanese/ptex/INSTALL85
-rw-r--r--language/japanese/ptex/INSTALL.txt83
-rw-r--r--language/japanese/ptex/Makefile.in344
-rw-r--r--language/japanese/ptex/README36
-rw-r--r--language/japanese/ptex/README.txt32
-rw-r--r--language/japanese/ptex/configure47
-rw-r--r--language/japanese/ptex/jbibd.sed17
-rw-r--r--language/japanese/ptex/jbibextra.c485
-rw-r--r--language/japanese/ptex/jbibextra.h27
-rw-r--r--language/japanese/ptex/jbibtex.ch1649
-rw-r--r--language/japanese/ptex/jbibtex.defines3
-rw-r--r--language/japanese/ptex/kanji.c233
-rw-r--r--language/japanese/ptex/kanji.defines23
-rw-r--r--language/japanese/ptex/kanji.h.in76
-rw-r--r--language/japanese/ptex/mkconf53
-rw-r--r--language/japanese/ptex/pconvert73
-rw-r--r--language/japanese/ptex/pdvitype.ch1181
-rw-r--r--language/japanese/ptex/pltotf.ch780
-rw-r--r--language/japanese/ptex/ptex-base.ch7679
-rw-r--r--language/japanese/ptex/ptexextra.c2319
-rw-r--r--language/japanese/ptex/ptexextra.h61
-rw-r--r--language/japanese/ptex/ptexhelp.h71
-rw-r--r--language/japanese/ptex/tftopl.ch544
-rw-r--r--language/japanese/ptex/usage.c28
-rw-r--r--language/japanese/ptex/version.c54
-rw-r--r--language/japanese/ptex2pdf/COPYING339
-rw-r--r--language/japanese/ptex2pdf/README.md190
-rwxr-xr-xlanguage/japanese/ptex2pdf/ptex2pdf.lua454
-rw-r--r--language/japanese/pxbase/LICENSE21
-rw-r--r--language/japanese/pxbase/README-ja.md227
-rw-r--r--language/japanese/pxbase/README.md85
-rw-r--r--language/japanese/pxbase/pxbabel.pdfbin0 -> 151727 bytes
-rw-r--r--language/japanese/pxbase/pxbabel.sty434
-rw-r--r--language/japanese/pxbase/pxbabel.tex332
-rw-r--r--language/japanese/pxbase/pxbase.def7
-rw-r--r--language/japanese/pxbase/pxbase.sty15
-rw-r--r--language/japanese/pxbase/pxbasenc.def516
-rw-r--r--language/japanese/pxbase/pxbsjc.def6
-rw-r--r--language/japanese/pxbase/pxbsjc1.def7
-rw-r--r--language/japanese/pxbase/pxjsfenc.def212
-rw-r--r--language/japanese/pxbase/upkcat.sty79
-rw-r--r--language/japanese/pxchfon/LICENSE21
-rw-r--r--language/japanese/pxchfon/PXcjk0.sfd36
-rw-r--r--language/japanese/pxchfon/README-ja.md191
-rw-r--r--language/japanese/pxchfon/README.md151
-rw-r--r--language/japanese/pxchfon/pxchfon.pdfbin0 -> 298853 bytes
-rw-r--r--language/japanese/pxchfon/pxchfon.sty2006
-rw-r--r--language/japanese/pxchfon/pxchfon.tex1352
-rw-r--r--language/japanese/pxchfon/pxchfon0.def4
-rw-r--r--language/japanese/pxchfon/pxjafont.sty24
-rw-r--r--language/japanese/pxchfon/sample/sample-2000jis.pdfbin0 -> 2323 bytes
-rw-r--r--language/japanese/pxchfon/sample/sample-2000jis.tex7
-rw-r--r--language/japanese/pxchfon/sample/sample-2004jis.pdfbin0 -> 2323 bytes
-rw-r--r--language/japanese/pxchfon/sample/sample-2004jis.tex7
-rw-r--r--language/japanese/pxchfon/sample/sample-pxchfon.pdfbin0 -> 44396 bytes
-rw-r--r--language/japanese/pxchfon/sample/sample-pxchfon.tex56
-rw-r--r--language/japanese/pxchfon/tfm/cfjam-r-l0j.tfmbin0 -> 944 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjam-r-l5j.tfmbin0 -> 1020 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjam-r-t1.tfmbin0 -> 1232 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjam-r-ts1.tfmbin0 -> 1100 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-b-l0j.tfmbin0 -> 944 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-b-l5j.tfmbin0 -> 1020 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-b-t1.tfmbin0 -> 1232 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-b-ts1.tfmbin0 -> 1100 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-l-l0j.tfmbin0 -> 944 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-l-l5j.tfmbin0 -> 1020 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-l-t1.tfmbin0 -> 1232 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-l-ts1.tfmbin0 -> 1100 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-r-l0j.tfmbin0 -> 944 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-r-l5j.tfmbin0 -> 1020 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-r-t1.tfmbin0 -> 1232 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjar-r-ts1.tfmbin0 -> 1100 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-b-l0j.tfmbin0 -> 944 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-b-l5j.tfmbin0 -> 1020 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-b-t1.tfmbin0 -> 1232 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-b-ts1.tfmbin0 -> 1100 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-r-l0j.tfmbin0 -> 944 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-r-l5j.tfmbin0 -> 1020 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-r-t1.tfmbin0 -> 1232 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-r-ts1.tfmbin0 -> 1100 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-x-l0j.tfmbin0 -> 944 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-x-l5j.tfmbin0 -> 1020 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-x-t1.tfmbin0 -> 1232 bytes
-rw-r--r--language/japanese/pxchfon/tfm/cfjas-x-ts1.tfmbin0 -> 1100 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjam-r-l0j.tfmbin0 -> 928 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjam-r-t1.tfmbin0 -> 1184 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjam-r-ts1.tfmbin0 -> 1092 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjam-rz-l0j.tfmbin0 -> 512 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-b-l0j.tfmbin0 -> 928 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-b-t1.tfmbin0 -> 1184 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-b-ts1.tfmbin0 -> 1092 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-bz-l0j.tfmbin0 -> 512 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-l-l0j.tfmbin0 -> 928 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-l-t1.tfmbin0 -> 1184 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-l-ts1.tfmbin0 -> 1092 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-lz-l0j.tfmbin0 -> 512 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-r-l0j.tfmbin0 -> 928 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-r-t1.tfmbin0 -> 1184 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-r-ts1.tfmbin0 -> 1092 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjar-rz-l0j.tfmbin0 -> 512 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-b-l0j.tfmbin0 -> 928 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-b-t1.tfmbin0 -> 1184 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-b-ts1.tfmbin0 -> 1092 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-bz-l0j.tfmbin0 -> 512 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-r-l0j.tfmbin0 -> 928 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-r-t1.tfmbin0 -> 1184 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-r-ts1.tfmbin0 -> 1092 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-rz-l0j.tfmbin0 -> 512 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-x-l0j.tfmbin0 -> 928 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-x-t1.tfmbin0 -> 1184 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-x-ts1.tfmbin0 -> 1092 bytes
-rw-r--r--language/japanese/pxchfon/tfm/r-cfjas-xz-l0j.tfmbin0 -> 512 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjam-r-l0j.vfbin0 -> 1064 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjam-r-l5j.vfbin0 -> 1272 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjam-r-t1.vfbin0 -> 1788 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjam-r-ts1.vfbin0 -> 492 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-b-l0j.vfbin0 -> 1064 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-b-l5j.vfbin0 -> 1272 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-b-t1.vfbin0 -> 1788 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-b-ts1.vfbin0 -> 492 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-l-l0j.vfbin0 -> 1064 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-l-l5j.vfbin0 -> 1272 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-l-t1.vfbin0 -> 1788 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-l-ts1.vfbin0 -> 492 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-r-l0j.vfbin0 -> 1064 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-r-l5j.vfbin0 -> 1272 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-r-t1.vfbin0 -> 1788 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjar-r-ts1.vfbin0 -> 492 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-b-l0j.vfbin0 -> 1064 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-b-l5j.vfbin0 -> 1272 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-b-t1.vfbin0 -> 1788 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-b-ts1.vfbin0 -> 492 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-r-l0j.vfbin0 -> 1064 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-r-l5j.vfbin0 -> 1272 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-r-t1.vfbin0 -> 1788 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-r-ts1.vfbin0 -> 492 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-x-l0j.vfbin0 -> 1064 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-x-l5j.vfbin0 -> 1272 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-x-t1.vfbin0 -> 1788 bytes
-rw-r--r--language/japanese/pxchfon/vf/cfjas-x-ts1.vfbin0 -> 492 bytes
-rw-r--r--language/japanese/pxjahyper/LICENSE21
-rw-r--r--language/japanese/pxjahyper/README-ja.md66
-rw-r--r--language/japanese/pxjahyper/README.md49
-rw-r--r--language/japanese/pxjahyper/pxjahyper.pdfbin0 -> 96162 bytes
-rw-r--r--language/japanese/pxjahyper/pxjahyper.sty982
-rw-r--r--language/japanese/pxjahyper/pxjahyper.tex136
-rw-r--r--language/japanese/pxjodel/LICENSE21
-rw-r--r--language/japanese/pxjodel/README.md81
-rw-r--r--language/japanese/pxjodel/pxjodel.pdfbin0 -> 120139 bytes
-rw-r--r--language/japanese/pxjodel/pxjodel.sty188
-rw-r--r--language/japanese/pxjodel/pxjodel.tex227
-rw-r--r--language/japanese/pxjodel/tfm/jodhgothb-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/jodhgotheb-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/jodhgothr-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/jodhmgothe-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/jodhminb-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/jodhminl-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/jodhminr-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/zu-jodhgothb-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/zu-jodhgotheb-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/zu-jodhgothr-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/zu-jodhmgothe-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/zu-jodhminb-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/zu-jodhminl-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/tfm/zu-jodhminr-hq.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxjodel/vf/jodhgothb-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/jodhgotheb-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/jodhgothr-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/jodhmgothe-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/jodhminb-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/jodhminl-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/jodhminr-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/zu-jodhgothb-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/zu-jodhgotheb-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/zu-jodhgothr-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/zu-jodhmgothe-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/zu-jodhminb-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/zu-jodhminl-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxjodel/vf/zu-jodhminr-hq.vfbin0 -> 104 bytes
-rw-r--r--language/japanese/pxrubrica/LICENSE21
-rw-r--r--language/japanese/pxrubrica/README-ja.md74
-rw-r--r--language/japanese/pxrubrica/README.md77
-rw-r--r--language/japanese/pxrubrica/pxrubrica-en.pdfbin0 -> 52922 bytes
-rw-r--r--language/japanese/pxrubrica/pxrubrica-en.tex159
-rw-r--r--language/japanese/pxrubrica/pxrubrica.dtx7467
-rw-r--r--language/japanese/pxrubrica/pxrubrica.ins4
-rw-r--r--language/japanese/pxrubrica/pxrubrica.pdfbin0 -> 456786 bytes
-rw-r--r--language/japanese/pxrubrica/sample/test-jlreq.pdfbin0 -> 12473 bytes
-rw-r--r--language/japanese/pxrubrica/sample/test-jlreq.tex109
-rw-r--r--language/japanese/pxrubrica/sample/test-sample.pdfbin0 -> 299469 bytes
-rw-r--r--language/japanese/pxrubrica/sample/test-sample.tex136
-rw-r--r--language/japanese/pxrubrica/sample/test-sf.pdfbin0 -> 4098 bytes
-rw-r--r--language/japanese/pxrubrica/sample/test-sf.tex116
-rw-r--r--language/japanese/pxrubrica/sample/test-toc.pdfbin0 -> 6565 bytes
-rw-r--r--language/japanese/pxrubrica/sample/test-toc.tex19
-rw-r--r--language/japanese/pxufont/LICENSE21
-rw-r--r--language/japanese/pxufont/README.md95
-rw-r--r--language/japanese/pxufont/pxufont-ruby.sty25
-rw-r--r--language/japanese/pxufont/pxufont.sty186
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgothb-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgothb-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgothbn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgothbn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgotheb-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgotheb-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgothebn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgothebn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgothr-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgothr-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgothrn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlgothrn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlmgothr-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlmgothr-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlmgothrn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlmgothrn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminb-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminb-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminbn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminbn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminl-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminl-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminln-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminln-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminr-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminr-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminrn-h.tfmbin0 -> 584 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-brsgnmlminrn-v.tfmbin0 -> 576 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgb5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjge5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmb5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmgr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjml5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr0-h.tfmbin0 -> 2508 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr0-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr1-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr1-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr2-h.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr2-v.tfmbin0 -> 2680 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr3-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr3-v.tfmbin0 -> 556 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr4-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr4-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr5-h.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-cidjmr5-v.tfmbin0 -> 172 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-goth10.tfmbin0 -> 1196 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-jis-v.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-jis.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-jisg-v.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-jisg.tfmbin0 -> 468 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-min10.tfmbin0 -> 1196 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgothb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgothb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgothbn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgothbn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgotheb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgotheb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgothebn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgothebn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgothr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgothr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgothrn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlgothrn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlmgothr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlmgothr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlmgothrn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlmgothrn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminbn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminbn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminl-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminl-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminln-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminln-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminrn-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-nmlminrn-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubygothb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubygothb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubygotheb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubygotheb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubygothr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubygothr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubymgothr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubymgothr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubyminb-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubyminb-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubyminl-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubyminl-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubyminr-h.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-rubyminr-v.tfmbin0 -> 504 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-tgoth10.tfmbin0 -> 856 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-tmin10.tfmbin0 -> 856 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgothb-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgothb-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgothbn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgothbn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgotheb-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgotheb-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgothebn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgothebn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgothr-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgothr-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgothrn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlgothrn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlmgothr-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlmgothr-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlmgothrn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlmgothrn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminb-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminb-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminbn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminbn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminl-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminl-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminln-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminln-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminr-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminr-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminrn-h.tfmbin0 -> 952 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upbrsgnmlminrn-v.tfmbin0 -> 660 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgothb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgothb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgothbn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgothbn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgotheb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgotheb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgothebn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgothebn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgothr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgothr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgothrn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlgothrn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlmgothr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlmgothr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlmgothrn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlmgothrn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminbn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminbn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminl-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminl-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminln-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminln-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminrn-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-upnmlminrn-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubygothb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubygothb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubygotheb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubygotheb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubygothr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubygothr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubymgothr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubymgothr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubyminb-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubyminb-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubyminl-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubyminl-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubyminr-h.tfmbin0 -> 868 bytes
-rw-r--r--language/japanese/pxufont/tfm/zu-uprubyminr-v.tfmbin0 -> 588 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjgb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjgb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjge-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjge-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjmb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjmb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjmgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjmgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjml-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjml-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjmr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-gjmr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjgb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjgb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjge-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjge-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjmb-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjmb-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjmgr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjmgr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjml-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjml-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjmr-h.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/tfm/zur-rjmr-v.tfmbin0 -> 108 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgothb-h.vfbin0 -> 110372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgothb-v.vfbin0 -> 110432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgothbn-h.vfbin0 -> 110672 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgothbn-v.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgotheb-h.vfbin0 -> 110376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgotheb-v.vfbin0 -> 110436 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgothebn-h.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgothebn-v.vfbin0 -> 110680 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgothr-h.vfbin0 -> 110372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgothr-v.vfbin0 -> 110432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgothrn-h.vfbin0 -> 110672 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlgothrn-v.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlmgothr-h.vfbin0 -> 110376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlmgothr-v.vfbin0 -> 110440 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlmgothrn-h.vfbin0 -> 110680 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlmgothrn-v.vfbin0 -> 110684 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminb-h.vfbin0 -> 110372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminb-v.vfbin0 -> 110432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminbn-h.vfbin0 -> 110672 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminbn-v.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminl-h.vfbin0 -> 110372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminl-v.vfbin0 -> 110432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminln-h.vfbin0 -> 110672 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminln-v.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminr-h.vfbin0 -> 110372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminr-v.vfbin0 -> 110432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminrn-h.vfbin0 -> 110672 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-brsgnmlminrn-v.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb0-h.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb0-v.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb1-h.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb1-v.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb2-h.vfbin0 -> 65108 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb2-v.vfbin0 -> 66768 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb3-h.vfbin0 -> 65480 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb3-v.vfbin0 -> 65744 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb4-h.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb4-v.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb5-h.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgb5-v.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge0-h.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge0-v.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge1-h.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge1-v.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge2-h.vfbin0 -> 65112 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge2-v.vfbin0 -> 66772 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge3-h.vfbin0 -> 65480 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge3-v.vfbin0 -> 65744 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge4-h.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge4-v.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge5-h.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjge5-v.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr0-h.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr0-v.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr1-h.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr1-v.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr2-h.vfbin0 -> 65108 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr2-v.vfbin0 -> 66768 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr3-h.vfbin0 -> 65480 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr3-v.vfbin0 -> 65744 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr4-h.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr4-v.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr5-h.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjgr5-v.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb0-h.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb0-v.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb1-h.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb1-v.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb2-h.vfbin0 -> 65108 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb2-v.vfbin0 -> 66768 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb3-h.vfbin0 -> 65480 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb3-v.vfbin0 -> 65744 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb4-h.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb4-v.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb5-h.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmb5-v.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr0-h.vfbin0 -> 65372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr0-v.vfbin0 -> 65372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr1-h.vfbin0 -> 65764 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr1-v.vfbin0 -> 65764 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr2-h.vfbin0 -> 65112 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr2-v.vfbin0 -> 66772 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr3-h.vfbin0 -> 65484 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr3-v.vfbin0 -> 65748 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr4-h.vfbin0 -> 65996 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr4-v.vfbin0 -> 65996 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr5-h.vfbin0 -> 41380 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmgr5-v.vfbin0 -> 41380 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml0-h.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml0-v.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml1-h.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml1-v.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml2-h.vfbin0 -> 65108 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml2-v.vfbin0 -> 66768 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml3-h.vfbin0 -> 65480 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml3-v.vfbin0 -> 65744 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml4-h.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml4-v.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml5-h.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjml5-v.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr0-h.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr0-v.vfbin0 -> 65368 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr1-h.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr1-v.vfbin0 -> 65760 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr2-h.vfbin0 -> 65108 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr2-v.vfbin0 -> 66768 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr3-h.vfbin0 -> 65480 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr3-v.vfbin0 -> 65744 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr4-h.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr4-v.vfbin0 -> 65992 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr5-h.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-cidjmr5-v.vfbin0 -> 41376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-goth10.vfbin0 -> 110348 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-jis-v.vfbin0 -> 110148 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-jis.vfbin0 -> 110176 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-jisg-v.vfbin0 -> 110148 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-jisg.vfbin0 -> 110176 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-min10.vfbin0 -> 110348 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgothb-h.vfbin0 -> 110372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgothb-v.vfbin0 -> 110432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgothbn-h.vfbin0 -> 110672 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgothbn-v.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgotheb-h.vfbin0 -> 110376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgotheb-v.vfbin0 -> 110436 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgothebn-h.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgothebn-v.vfbin0 -> 110680 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgothr-h.vfbin0 -> 110372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgothr-v.vfbin0 -> 110432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgothrn-h.vfbin0 -> 110672 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlgothrn-v.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlmgothr-h.vfbin0 -> 110376 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlmgothr-v.vfbin0 -> 110440 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlmgothrn-h.vfbin0 -> 110680 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlmgothrn-v.vfbin0 -> 110684 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminb-h.vfbin0 -> 110372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminb-v.vfbin0 -> 110432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminbn-h.vfbin0 -> 110672 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminbn-v.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminl-h.vfbin0 -> 110372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminl-v.vfbin0 -> 110432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminln-h.vfbin0 -> 110672 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminln-v.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminr-h.vfbin0 -> 110372 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminr-v.vfbin0 -> 110432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminrn-h.vfbin0 -> 110672 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-nmlminrn-v.vfbin0 -> 110676 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubygothb-h.vfbin0 -> 110728 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubygothb-v.vfbin0 -> 110784 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubygotheb-h.vfbin0 -> 110728 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubygotheb-v.vfbin0 -> 110784 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubygothr-h.vfbin0 -> 110728 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubygothr-v.vfbin0 -> 110784 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubymgothr-h.vfbin0 -> 110732 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubymgothr-v.vfbin0 -> 110788 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubyminb-h.vfbin0 -> 110728 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubyminb-v.vfbin0 -> 110784 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubyminl-h.vfbin0 -> 110728 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubyminl-v.vfbin0 -> 110784 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubyminr-h.vfbin0 -> 110728 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-rubyminr-v.vfbin0 -> 110784 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-tgoth10.vfbin0 -> 110536 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-tmin10.vfbin0 -> 110536 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgothb-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgothb-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgothbn-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgothbn-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgotheb-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgotheb-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgothebn-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgothebn-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgothr-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgothr-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgothrn-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlgothrn-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlmgothr-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlmgothr-v.vfbin0 -> 651132 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlmgothrn-h.vfbin0 -> 651104 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlmgothrn-v.vfbin0 -> 651132 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminb-h.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminb-v.vfbin0 -> 651124 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminbn-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminbn-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminl-h.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminl-v.vfbin0 -> 651124 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminln-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminln-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminr-h.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminr-v.vfbin0 -> 651124 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminrn-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upbrsgnmlminrn-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgothb-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgothb-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgothbn-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgothbn-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgotheb-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgotheb-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgothebn-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgothebn-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgothr-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgothr-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgothrn-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlgothrn-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlmgothr-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlmgothr-v.vfbin0 -> 651132 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlmgothrn-h.vfbin0 -> 651104 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlmgothrn-v.vfbin0 -> 651132 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminb-h.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminb-v.vfbin0 -> 651124 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminbn-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminbn-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminl-h.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminl-v.vfbin0 -> 651124 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminln-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminln-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminr-h.vfbin0 -> 651096 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminr-v.vfbin0 -> 651124 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminrn-h.vfbin0 -> 651100 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-upnmlminrn-v.vfbin0 -> 651128 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubygothb-h.vfbin0 -> 663404 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubygothb-v.vfbin0 -> 663432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubygotheb-h.vfbin0 -> 663404 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubygotheb-v.vfbin0 -> 663432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubygothr-h.vfbin0 -> 663404 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubygothr-v.vfbin0 -> 663432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubymgothr-h.vfbin0 -> 663408 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubymgothr-v.vfbin0 -> 663436 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubyminb-h.vfbin0 -> 663404 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubyminb-v.vfbin0 -> 663432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubyminl-h.vfbin0 -> 663404 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubyminl-v.vfbin0 -> 663432 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubyminr-h.vfbin0 -> 663404 bytes
-rw-r--r--language/japanese/pxufont/vf/zu-uprubyminr-v.vfbin0 -> 663432 bytes
-rw-r--r--language/japanese/uplatex/LICENSE29
-rw-r--r--language/japanese/uplatex/Makefile124
-rw-r--r--language/japanese/uplatex/README.md22
-rw-r--r--language/japanese/uplatex/README_uplatex.txt57
-rw-r--r--language/japanese/uplatex/ujclasses.dtx4538
-rw-r--r--language/japanese/uplatex/ukinsoku.dtx590
-rw-r--r--language/japanese/uplatex/uplatex-en.pdfbin0 -> 116732 bytes
-rw-r--r--language/japanese/uplatex/uplatex.dtx1217
-rw-r--r--language/japanese/uplatex/uplatex.ini9
-rw-r--r--language/japanese/uplatex/uplatex.pdfbin0 -> 226435 bytes
-rw-r--r--language/japanese/uplatex/uplcls.ins49
-rw-r--r--language/japanese/uplatex/upldoc.pdfbin0 -> 543496 bytes
-rw-r--r--language/japanese/uplatex/upldocs.ins24
-rw-r--r--language/japanese/uplatex/uplfmt.ins32
-rw-r--r--language/japanese/uplatex/uplfonts.dtx482
-rw-r--r--language/japanese/uplatex/uplvers.dtx194
-rw-r--r--language/japanese/uptex-base/00readme_uptex.txt29
-rw-r--r--language/japanese/uptex-base/01uptex_doc_utf8.txt591
-rw-r--r--language/japanese/uptex-base/02uptex_changelog_utf8.txt689
-rw-r--r--language/japanese/uptex-base/LICENSE29
-rw-r--r--language/japanese/uptex-base/Makefile21
-rw-r--r--language/japanese/uptex-base/README.md22
-rw-r--r--language/japanese/uptex-base/README_uptex.txt54
-rw-r--r--language/japanese/uptex-base/euptex.ini4
-rw-r--r--language/japanese/uptex-base/euptex.src780
-rw-r--r--language/japanese/uptex-base/samples/00readme_uptex_samples.txt83
-rw-r--r--language/japanese/uptex-base/samples/Makefile483
-rw-r--r--language/japanese/uptex-base/samples/adobe-cid.tex138
-rw-r--r--language/japanese/uptex-base/samples/adobe-cns-utf8.tex990
-rw-r--r--language/japanese/uptex-base/samples/adobe-gb-utf8.tex1244
-rw-r--r--language/japanese/uptex-base/samples/adobe-jp-utf8.tex679
-rw-r--r--language/japanese/uptex-base/samples/adobe-kr-utf8.tex727
-rw-r--r--language/japanese/uptex-base/samples/aozora-ujarticle-utf8.tex39
-rw-r--r--language/japanese/uptex-base/samples/aozora-ujbook-utf8.tex39
-rw-r--r--language/japanese/uptex-base/samples/aozora-ujreport-utf8.tex39
-rw-r--r--language/japanese/uptex-base/samples/aozora-utarticle-utf8.tex39
-rw-r--r--language/japanese/uptex-base/samples/aozora-utbook-utf8.tex39
-rw-r--r--language/japanese/uptex-base/samples/aozora-utf8.tex39
-rw-r--r--language/japanese/uptex-base/samples/aozora-utreport-utf8.tex39
-rw-r--r--language/japanese/uptex-base/samples/area-euc-incl.tex6
-rw-r--r--language/japanese/uptex-base/samples/area-euc.mp20
-rw-r--r--language/japanese/uptex-base/samples/area-jis-incl.tex6
-rw-r--r--language/japanese/uptex-base/samples/area-jis.mp20
-rw-r--r--language/japanese/uptex-base/samples/area-sjis-incl.tex6
-rw-r--r--language/japanese/uptex-base/samples/area-sjis.mp20
-rw-r--r--language/japanese/uptex-base/samples/area-uptex-incl.tex6
-rw-r--r--language/japanese/uptex-base/samples/area-uptex.mp21
-rw-r--r--language/japanese/uptex-base/samples/area-utf8-incl.tex6
-rw-r--r--language/japanese/uptex-base/samples/area-utf8.mp20
-rw-r--r--language/japanese/uptex-base/samples/bkmk-docinfo.txt12
-rw-r--r--language/japanese/uptex-base/samples/bkmk-jis.tex227
-rw-r--r--language/japanese/uptex-base/samples/bkmk-utf8.tex294
-rw-r--r--language/japanese/uptex-base/samples/box-euc.eps17
-rw-r--r--language/japanese/uptex-base/samples/box-jis.eps17
-rw-r--r--language/japanese/uptex-base/samples/box-sjis.eps17
-rw-r--r--language/japanese/uptex-base/samples/box-utf8.eps17
-rwxr-xr-xlanguage/japanese/uptex-base/samples/check_enc.pl52
-rw-r--r--language/japanese/uptex-base/samples/cjk_babel.tex459
-rw-r--r--language/japanese/uptex-base/samples/console_io.tex46
-rw-r--r--language/japanese/uptex-base/samples/greek-uplatex.tex70
-rw-r--r--language/japanese/uptex-base/samples/iotext.txt2
-rw-r--r--language/japanese/uptex-base/samples/jbib1-jis.tex141
-rw-r--r--language/japanese/uptex-base/samples/jbib2-utf8.tex176
-rw-r--r--language/japanese/uptex-base/samples/jbtest.bib122
-rw-r--r--language/japanese/uptex-base/samples/jis_uni_variation.tex236
-rw-r--r--language/japanese/uptex-base/samples/jstr-euc-incl.tex6
-rw-r--r--language/japanese/uptex-base/samples/jstr-euc.mp10
-rw-r--r--language/japanese/uptex-base/samples/jstr-jis-incl.tex6
-rw-r--r--language/japanese/uptex-base/samples/jstr-jis.mp10
-rw-r--r--language/japanese/uptex-base/samples/jstr-sjis-incl.tex6
-rw-r--r--language/japanese/uptex-base/samples/jstr-sjis.mp10
-rw-r--r--language/japanese/uptex-base/samples/jstr-uptex-incl.tex6
-rw-r--r--language/japanese/uptex-base/samples/jstr-uptex.mp10
-rw-r--r--language/japanese/uptex-base/samples/jstr-utf8-incl.tex6
-rw-r--r--language/japanese/uptex-base/samples/jstr-utf8.mp10
-rw-r--r--language/japanese/uptex-base/samples/kinsoku-chk-utf8.tex87
-rw-r--r--language/japanese/uptex-base/samples/linebreak.bib45
-rw-r--r--language/japanese/uptex-base/samples/min10x.tfmbin0 -> 1184 bytes
-rw-r--r--language/japanese/uptex-base/samples/misc-check-h-utf8.tex366
-rw-r--r--language/japanese/uptex-base/samples/misc-check-v-utf8.tex333
-rw-r--r--language/japanese/uptex-base/samples/otfsmpl-uplatex.tex135
-rw-r--r--language/japanese/uptex-base/samples/punctuation.tex395
-rw-r--r--language/japanese/uptex-base/samples/sangoku-uplatex.tex66
-rw-r--r--language/japanese/uptex-base/samples/sangoku-uptex.tex57
-rw-r--r--language/japanese/uptex-base/samples/set3-check-h-utf8.tex166
-rw-r--r--language/japanese/uptex-base/samples/show_kcat.tex328
-rw-r--r--language/japanese/uptex-base/samples/simple-euc.tex94
-rw-r--r--language/japanese/uptex-base/samples/simple-jis.tex94
-rw-r--r--language/japanese/uptex-base/samples/simple-sjis.tex94
-rw-r--r--language/japanese/uptex-base/samples/simple-u-jis.tex87
-rw-r--r--language/japanese/uptex-base/samples/simple-u-utf8.tex92
-rw-r--r--language/japanese/uptex-base/samples/simple-utf8.tex94
-rwxr-xr-xlanguage/japanese/uptex-base/samples/testrun.bat135
-rw-r--r--language/japanese/uptex-base/samples/texxet-jis.tex37
-rw-r--r--language/japanese/uptex-base/samples/umin10x.tfmbin0 -> 1184 bytes
-rw-r--r--language/japanese/uptex-base/samples/utfsmpl-uplatex.tex96
-rw-r--r--language/japanese/uptex-base/samples/widow.tex109
-rw-r--r--language/japanese/uptex-base/samples/yaku-jsc-jis.tex69
-rw-r--r--language/japanese/uptex-base/samples/yaku-jsc-utf8.tex91
-rw-r--r--language/japanese/uptex-base/ukinsoku.tex411
-rw-r--r--language/japanese/uptex-base/uptex.ini4
-rw-r--r--language/japanese/uptex-base/uptex.tex58
-rw-r--r--language/japanese/zxjafbfont/LICENSE24
-rw-r--r--language/japanese/zxjafbfont/README24
-rw-r--r--language/japanese/zxjafbfont/zxjafbfont.sty63
-rw-r--r--language/japanese/zxjafont/LICENSE21
-rw-r--r--language/japanese/zxjafont/README-ja.md55
-rw-r--r--language/japanese/zxjafont/README.md49
-rw-r--r--language/japanese/zxjafont/zxjafont.pdfbin0 -> 142301 bytes
-rw-r--r--language/japanese/zxjafont/zxjafont.sty427
-rw-r--r--language/japanese/zxjafont/zxjafont.tex285
-rw-r--r--language/japanese/zxjatype/LICENSE21
-rw-r--r--language/japanese/zxjatype/README-ja.md86
-rw-r--r--language/japanese/zxjatype/README.md60
-rw-r--r--language/japanese/zxjatype/example/example.pdfbin0 -> 143039 bytes
-rw-r--r--language/japanese/zxjatype/example/example.tex96
-rw-r--r--language/japanese/zxjatype/example/xetexsamp01.pdfbin0 -> 32759 bytes
-rw-r--r--language/japanese/zxjatype/zxjatype.sty1041
4174 files changed, 138414 insertions, 0 deletions
diff --git a/language/japanese/BX/bxbase/LICENSE b/language/japanese/BX/bxbase/LICENSE
new file mode 100644
index 0000000000..8ada757fbc
--- /dev/null
+++ b/language/japanese/BX/bxbase/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/BX/bxbase/README-ja.md b/language/japanese/BX/bxbase/README-ja.md
new file mode 100644
index 0000000000..c4489be1f7
--- /dev/null
+++ b/language/japanese/BX/bxbase/README-ja.md
@@ -0,0 +1,535 @@
+BXbase パッケージバンドル
+=========================
+
+LaTeX: 他の BX パッケージのためのサポートライブラリ
+
+本バンドルの主な目的は、作者(ZR)の制作する他のパッケージ(名前が
+“BX”や“PX”で始まる)が依拠するライブラリ機能の提供である。
+
+ただし bxbase パッケージは少数のユーザレベルのコマンドも含むので
+単体でも有用である。
+
+### 前提環境
+
+ * TeX フォーマット: LaTeX
+ * TeX エンジン: 不問
+ * DVI ウェア(DVI 出力時): 不問
+
+### 構成物
+
+ * `bxbase.sty`: ‘bxbase’パッケージ
+ * `bxbase.def`: ‘bxbase’のサブモジュール
+ * `bxtoolbox.sty`: ‘bxtoolbox’パッケージ
+ * `bxtoolbox.def`: ‘bxtoolbox’のサブモジュール
+ * `bxtoolbox-ext.def`: ‘bxtoolbox’のサブモジュール
+ * `bxtoolbox-ja.def`: ‘bxtoolbox’のサブモジュール
+ * `bxutf8.def`: ‘bxutf8’入力エンコーディング定義
+ * `bxutf8x.def`:‘bxutf8x’入力エンコーディング定義
+ * `zxbase.sty`: ‘zxbase’パッケージ
+ * `bxbase-ja.pdf`: ‘bxbase’のユーザ向け説明書(日本語)
+ * `bxbase-ja.tex`: `bxbase-ja.pdf` のソースファイル
+
+### インストール
+
+TDS 1.1 に準拠するシステムの場合、以下のようにファイルを移動する:
+
+ - `*.sty`, `*.def` → $TEXMF/tex/latex/BXbase
+
+この後必要に応じて mktexlsr を実行する。
+
+### ライセンス
+
+本パッケージは MIT ライセンスの下で配布される。
+
+bxbase パッケージ ― 基礎ライブラリ
+----------------------------------
+
+基本的に、他のパッケージの内部で読み込まれるものであり、作者(ZR)の制作
+する他のパッケージで必要な機能を提供する。
+
+本パッケージは幾つかのユーザ命令も提供していたが、その大部分が 1.1 版に
+おいて非推奨となった。日本語入力に関する少数の機能が残されている。
+
+### ユーザ向け機能
+
+ユーザ向け機能についてはマニュアル `bxbase-ja.pdf` を参照されたい。
+
+### 開発者向け機能
+
+ここでは bxbase パッケージが提供する開発者向け機能について簡単に解説する。
+
+※ bxbase パッケージは内部で bxtoolbox パッケージを読み込むため、bxtoolbox
+の機能も利用できる。
+
+#### 書式記述に関する注意
+
+`<LaTeXマクロ定義記述>` は `\newcommand` 等の LaTeX マクロ定義命令に
+後続する要素列で、以下のものに等しい。
+
+ {<命令>}[<引数個数>][<引数既定値>]{<置換テキスト>}
+
+`<TeXマクロ定義記述>` は `\def` 等の TeX マクロ定義プリミティブに
+後続する要素列で、以下のものに等しい。
+
+ <命令><引数宣言部>{<置換テキスト>}
+
+`<TeXマクロ定義記述*>` は `<TeXマクロ定義記述>` の先頭の `<命令>`
+を除去したもの。
+
+#### プログラミング補助
+
+ * `\bxDebug{<テキスト>}`
+ デバック出力用命令。このパッケージでの定義では何もしない。
+ * `\bxRequireDefinition{<ファイルベース名>}`
+ 拡張子 .def のファイルを `\usepackage` と同じ方式で読み込む。
+ * `\bxNullify\制御綴`
+ `\制御綴` を「何もしない命令」で `\providecommand` により
+ 上書きされないものに再定義する。
+ * `\bxForEachIn<引数1>,<引数2>,...\do{<置換テキスト>}`
+ 各々の引数について、`<置換テキスト>` の `#1` をそれで置き換えた
+ ものを実行する。LaTeX の `\@for` のラッパーで、`\@for` と同じく、
+ `\bxForEachIn` の直後のトークンは予め一度展開される。
+ * `\bxForEachTokenIn<トークン1><トークン2>...\do{<置換テキスト>}`
+ 各々の引数について `<置換テキスト>` の `#1` を置き換えたものを
+ 実行する。LaTeX の `\@tfor` のラッパー。
+ * `\bxWithArgExpd{<引数1>}\do{<置換テキスト>}`
+ * `\bxWithArgsExpd{<引数1>}{<引数2>}...\do{<置換テキスト>}`
+ `<置換テキスト>` 中の `#1`、`#2`… を各々の引数を一回展開した
+ ものに置き換えたものを実行する。`\bxWithArgExpd` は 1 引数用に
+ 最適化したもの。
+ * `\bxWithArgFullExpd{<引数1>}\do{<置換テキスト>}`
+ * `\bxWithArgsFullExpd{<引数1>}{<引数2>}...\do{<置換テキスト>}`
+ `\bxWithArgsExpd` と同様だが、一回展開でなく完全展開する点が
+ 異なる。
+ * `\bxChompComma<命令>`
+ `<命令>` の 置換テキストの先頭が `,` の場合、それを削除したもので
+ 再定義する。
+ * `\bxAssign<代入文>\relax`
+ 代入を行った後、代入文の後ろにゴミがないかを判定しその結果を
+ スイッチ `\ifbxOk` に返す。
+ * `\bxCheckMA<テキスト>\bxEndCheckMA`
+ `\edef` 中ではこの部分がエラーを出す命令に展開される。
+
+#### TeX エンジン判別
+
+ * `\bxEngineTypeX` [整数定数]
+ 1=pTeX拡張; 2=XeTeX拡張; 3=Omega拡張; 0=以上に該当せず
+ * `\bxEngineTypeY` [整数定数]
+ 1=eTeX拡張; 3=pdfTeX拡張; 5=LuaTeX拡張; 0=以上に該当せず
+ ※現在の LuaTeX は X/Y=0/5 となる。
+ ※upTeX か否かの判定は ifptex パッケージを用いる。
+
+#### Babel 関係
+
+ * `\bxAtBeginDocumentBabel{<テキスト>}`
+ Babel 読込時にのみ実行される begin-document 時のフック。
+ * `\bxTrivLangDef{<言語名>}`
+ 中身(キャプション定義等)が空の Babel 言語オプションを生成する。
+
+#### 数値の書式化出力
+
+ * `\bxToHexTwo{<整数>}` [%02X 形式; 0x00~FF]
+ * `\bxToHexThree{<整数>}` [%03X 形式; 0x000~FFF]
+ * `\bxToHexFour{<整数>}` [%04X 形式; 0x0000~FFFF]
+ * `\bxToHexFive{<整数>}` [%05X 形式; 0x00000~FFFFF]
+ * `\bxToHexFiveX{<整数>}` [%05X 形式; 0x00000~FFFFF ※1]
+ * `\bxToHexEight{<整数>}` [%08X 形式; 0x00000000~7FFFFFFF]
+ * `\bxToHexTiny{<整数>}` [%X 形式; 0x0~FF]
+ * `\bxToHexSmall{<整数>}` [%X 形式; 0x0~7FFF]
+ * `\bxToHexUC{<整数>}` [%04X 形式; 0x0000~10FFFF ※2]
+ 16 進表記を `\bxHex` に返す。UC は 4~6 桁での表記。
+ ※1 0xFFFFF を超える場合は `FFFFF` になる
+ ※2 XeTeX/LuaTeX/upTeX の場合、`\char` が可能な範囲。
+ * `\bxToDecFour{<整数>}` [%04d 形式; 0000~9999]
+ * `\bxToDecFive{<整数>}` [%05d 形式; 00000~99999]
+ ゼロ付の 10 進表記を `\bxHex` に返す。
+
+#### 符号値による入力
+
+ * `\bxCodeValueSeq\制御綴{<符号値>,...} [16進]`
+ * `\bxCodeValueSeqD\制御綴{<符号値>,...} [10進]`
+ 各々の `<符号値>` を解釈した結果を `\bxUcv` に代入してマクロ
+ `\制御綴` を呼び出す。解釈方法はそれぞれ `\Ux` と `\AJ` 命令の
+ 解説にある通り。
+ * `\bxUHex{<コード値16進表記>}`
+ bxutf8 が構成する内部表現。用いる機能は `\Ux` と同じ。
+ * `\bxUInt{<整数>}`
+ bxutf8x が構成する内部表現。用いる機能は `\Ux` と同じ。
+
+#### 文字列操作
+
+ * `\bxToLower{<文字列>} [小文字]`
+ * `\bxToUpper{<文字列>} [大文字]`
+ `<文字列>` を小文字/大文字に変換したものを `\bxRes` に返す。
+
+#### Special 出力
+
+ * `\bxDocumentSpecial{<テキスト>}`
+ `\AtBeginDvi` を普通に用いて DVI の先頭部に special を出力する。
+ * `\bxDocumentSpecialUrgent{<テキスト>}`
+ DVI のなるべく先頭(他の special より前)の位置に special を出力。
+
+#### Safe caret 機能
+
+ * `\bxBDHookSafeCaret`
+ safe caret 機能に関する begin-document フック。
+ * `\bxEnableSafeCaret`
+ safe caret 機能を使用可能にしておく。すなわち、プレアンブルでこの
+ 命令が呼ばれなかった場合、safe caret は使用不可になる。実際にある
+ 状況で safe caret を有効にするには、`\bx@acr@normcaret` を「その
+ 状況での本来の `^` の動作」に定義した上で `^` をアクティブにする
+ 必要がある。
+ ※ ユーザ命令の `\safecaret` はこの命令を実行した上で、verbatim
+ と babel での適切な safe caret 処理を有効化している。
+
+#### Shadow map 機能
+
+Shadow map とは「16 ビット整数 → 整数」の写像を TFM として表現
+したもの。
+
+ * `\bxUseShadowMap\制御綴{<TFM名>}`
+ `\制御綴` を指定の TFM から生成される shadow map として定義。
+ * `\bxMap\制御綴`
+ 整数レジスタ `\bxUcv` の現在の値に shadow map を適用し、その結果を
+ `\bxUcv` に代入する。
+
+#### モジュール名
+
+ここでいう「モジュール」とは文書クラス(.cls)・パッケージ(.sty)・
+定義ファイル(.def)の総称。「モジュール読込中に発生するエラーを出力
+するためのマクロ」を別のモジュール内で定義する際に、呼び出した側の
+モジュール名をメッセージ中に出力させるための仕組み。
+
+ * `\bxSetModuleName{<文字列>}`
+ 現在のモジュールに対するモジュール名を設定する。
+ * `\bxModuleName`
+ 現在のモジュールに対するモジュール名に展開される。モジュール名が
+ 設定されていない場合はファイルのベース名を代わりに使う。
+ * `\bxError` [`\PackageError` に対応]
+ * `\bxWarning` [`\PackageWarning` に対応]
+ * `\bxWarningNoLine` [`\PackageWarningNoLine` に対応]
+ * `\bxInfo` [`\PackageInfo` に対応]
+ 現在のモジュール名をパッケージ名として `\PackageError` 等を呼ぶ。
+
+#### keyval の拡張
+
+(xkeyval が普及した今では非推奨かも…)
+
+keyval の `\setkeys` について、「未定義のキーをエラーにせず、代わりに
+未定義のキーのリストを作成する」という変種を提供する。この機能は
+xkeyval で `\setkeys*` として提供されている。しかし xkeyval が利用
+できない環境に対応するために keyval へのパッチとして実現すること
+にする。しかし、xkeyval はこのパッチを無効化してしまう。従って
+xkeyval.sty が存在するかに応じて処理を分けることにした。
+
+ * `\bxPrepareSetKeysSafe`
+ `\bxSetKeysSafe` を使用可能にする。
+ ※ xkeyval.sty が存在するかを判定し、存在すれば読み込む。
+ そして `\bxSetKeysSafe` の実現方法をこの段階で確定させる。
+ * `\bxSetKeysSafe{<ファミリ>}{<テキスト>}`
+ `\setkeys` と同様だが、未定義のキーをエラーとせず、代わりに
+ 未定義のキーからなるコンマ区切りのリストを `\bxRestKeys` に
+ 代入する。
+
+#### ドライバ判別
+
+以下の説明で「先天的な」ドライバとは、TeX 実行時に使用が判定できる
+もの(事実上「TeX エンジンがドライバを兼ねるもの」に等しい)を指し、
+例えば pdfTeX、XeTeX、LuaTeX が該当する。
+
+ * `\bxDriverList`
+ (後天的な)ドライバ名のリスト。
+ ※ 現状では「`dvips,dvipdfmx,dviout`」。
+ * `\bxDriverInherent`
+ 先天的なドライバ名(未定義なら空)に展開される。
+ * `\bxSetDriver[<ファイル名>]{<ドライバ名>}`
+ 指定のファイル名をもつモジュールに対するドライバ名を指定する。
+ `<ファイル名>` がない場合は現在のモジュールに対する設定。
+ * `\bxDriver`
+ 現在のモジュールに対するドライバ名に展開される。未定義ならば
+ `default` を返す。
+ * `\bxDriverSpecifiedFor{<ファイル名>}`
+ `\bxDriver` と同様だが、指定のファイル名をもつモジュールに
+ 対する設定を返す。
+ * `\bxDefineDDProcess{<名前>}{<ドライバ名>}<TeXマクロ定義記述*>`
+ ドライバ依存マクロを定義する。
+ * `\bxDefineDDProcessDefault{<名前>}`
+ `<ドライバ名>` が `default` の `\bxDefineDDProcess`。
+ * `\bxDoDDProcess{<名前>}`
+ ドライバ依存マクロを実行する。
+ * `\bxDeclareDriverOptions`
+ 後天的なドライバ名の各々について、「`\bxSetDriver{ドライバ名}`
+ を呼ぶ」という動作のパッケージ(クラス)オプションを定義する。
+
+bxtoolbox パッケージ ― 非 e-TeX エンジンでの etoolbox の模倣
+-------------------------------------------------------------
+
+本パッケージの主な目的は、etoolbox パッケージの一部の機能を e-TeX 拡張を
+持たないエンジンで利用可能にすることである。(pTeX エンジンの e-TeX 拡張
+が普及し出したのは 2010 年頃である。)
+
+なお、本パッケージを e-TeX 拡張をもつエンジンで読み込んだ場合は、本物の
+etoolbox が読み込まれてその機能が使われる。
+
+### etoolbox 互換命令
+
+ここに挙げる命令は、etoolbox の命令の複製であり、それぞれ、命令名の頭の
+`bx` を取って先頭を小文字に変えた名前(`\bxCsdef`→`\csdef`)の etoolbox
+の命令に対応する。e-TeX 拡張のエンジンで動作する場合は実際に etoolbox を
+読み込んでそれの命令のエイリアスとするが、そうでない場合は自前の実装を
+用いる。
+
+各命令の詳細については etoolbox のマニュアルを参照されたい。etoolbox の
+元の命令と仕様が異なる部分にのみ説明を付している(この説明は e-TeX 非拡張
+のエンジンでの動作時のみ当てはまることに注意)。
+
+(頑強な命令の定義)
+
+ * `\bxNewrobustcmd[*]<LaTeXマクロ定義記述>`
+ * `\bxRenewrobustcmd[*]<LaTeXマクロ定義記述>`
+ * `\bxProviderobustcommand[*]<LaTeXマクロ定義記述>`
+ * `\bxRobustify{<命令>}`
+ e-TeX の \protected の代わりに LaTeX の protect 処理を用いる。結果
+ 的に \DeclareRobustCommand と同じ処理が使われる。
+
+(メイン文書コンパイル時フック)
+
+ * `\AfterPreamble{<テキスト>}`
+ * `\AtEndPreamble{<テキスト>}`
+ * `\AfterEndPreamble{<テキスト>}`
+ * `\AfterEndDocument{<テキスト>}`
+
+(マクロ定義)
+
+ * `\csdef<TeXマクロ定義記述*>`
+ * `\csgdef<TeXマクロ定義記述*>`
+ * `\csedef<TeXマクロ定義記述*>`
+ * `\csxdef<TeXマクロ定義記述*>`
+
+(命令の意味の操作)
+
+ * `\cslet{<命令名1>}{<命令2>}`
+ * `\letcs{<命令1>}{<命令名2>}`
+ * `\csletcs{<命令名1>}{<命令名2>}`
+ * `\bxCsuse{<命令名>}`
+ * `\undef{<命令>}`
+ * `\csundef{<命令名>}`
+ * `\bxCsshow{<命令名>}`
+ `\bxCsuse` と `\bxCsshow` は、LaTeX の protect を施しているが、
+ 動く引数の中で展開されるとエラーになる。
+
+(マクロの追記式定義)
+
+ * `\appto{<命令>}{<テキスト>}`
+ * `\gappto{<命令>}{<テキスト>}`
+ * `\eappto{<命令>}{<テキスト>}`
+ * `\xappto{<命令>}{<テキスト>}`
+ * `\csappto{<命令名>}{<テキスト>}`
+ * `\csgappto{<命令名>}{<テキスト>}`
+ * `\cseappto{<命令名>}{<テキスト>}`
+ * `\csxappto{<命令名>}{<テキスト>}`
+ * `\preto{<命令>}{<テキスト>}`
+ * `\gpreto{<命令>}{<テキスト>}`
+ * `\epreto{<命令>}{<テキスト>}`
+ * `\xpreto{<命令>}{<テキスト>}`
+ * `\cspreto{<命令名>}{<テキスト>}`
+ * `\csgpreto{<命令名>}{<テキスト>}`
+ * `\csepreto{<命令名>}{<テキスト>}`
+ * `\csxpreto{<命令名>}{<テキスト>}`
+
+(真理値変数―bool系)
+
+ * `\newbool{<名前>}`
+ * `\providebool{<名前>}`
+ * `\booltrue{<名前>}`
+ * `\boolfalse{<名前>}`
+ * `\setbool{<名前>}{<値>}`
+ * `\ifbool{<名前>}{<真>}{<偽>}`
+ * `\notbool{<名前>}{<真>}{<偽>}`
+
+(真理値変数―toggle系)
+
+ * `\newtoggle{<名前>}`
+ * `\providetoggle{<名前>}`
+ * `\toggletrue{<名前>}`
+ * `\togglefalse{<名前>}`
+ * `\settoggle{<名前>}{<値>}`
+ * `\iftoggle{<名前>}{<真>}{<偽>}`
+ * `\nottoggle{<名前>}{<真>}{<偽>}`
+
+(定義済判定)
+
+ * `\ifdef{<命令>}{<真>}{<偽>}`
+ * `\ifundef{<命令>}{<真>}{<偽>}`
+ * `\bxIfcsdef{<命令名>}{<真>}{<偽>}`
+ * `\bxIfcsundef{<命令名>}{<真>}{<偽>}`
+ `\bxIfcsdef` と `\bxIfcsdef` は動く引数の中で展開されるとエラーに
+ なる。
+
+### それ以外の命令
+
+種々の事情により、「etoolbox 互換用」以外の機能も含まれている。
+
+(エンジンチェック―ifトークン)
+
+ * `\ifbxineTeX`
+ * `\ifbxinpdfTeX`
+ * `\ifbxinLuaTeX`
+ * `\ifbxinOmega`
+ * `\ifbxinAleph`
+ * `\ifbxinXeTeX`
+ * `\ifbxinpTeX`
+ * `\ifbxinupTeX`
+ エンジンのチェック。これらは TeX の if-トークンである。
+
+(エンジンチェック―LaTeXテスト)
+
+ * `\bxIfineTeX{<真>}{<偽>}`
+ * `\bxIfinpdfTeX{<真>}{<偽>}`
+ * `\bxIfinLuaTeX{<真>}{<偽>}`
+ * `\bxIfinOmega{<真>}{<偽>}`
+ * `\bxIfinAleph{<真>}{<偽>}`
+ * `\bxIfinXeTeX{<真>}{<偽>}`
+ * `\bxIfinpTeX{<真>}{<偽>}`
+ * `\bxIfinupTeX{<真>}{<偽>}`
+ エンジンのチェック。これらは LaTeX 形式のテストである。(完全展開
+ 可能である。)
+
+(プリミティブifトークンのLaTeXテスト版)
+
+ * `\bxIf{<テスト>}{<真>}{<偽>}`
+ * `\bxIfcat{<テスト>}{<真>}{<偽>}`
+ * `\bxIfx{<テスト>}{<真>}{<偽>}`
+ * `\bxIfdim{<テスト>}{<真>}{<偽>}`
+ * `\bxIfnum{<テスト>}{<真>}{<偽>}`
+ TeX のプリミティブなテストを LaTeX 形式のテストにしたもの。例えば
+ 以下のようにして使う。
+ `\bxIfx{\somecs\relax}{\dotrue}{\dofalse}`
+ `\bxIfnum{\count@<3}{\dotrue}{\dofalse}`
+ (これらの命令は完全展開可能である。)
+
+(プリミティブ判定)
+
+ * `\bxIfPrimitive{<命令>}{<真>}{<偽>}`
+ * `\bxIfPrimitiveX{<命令名>}{<真>}{<偽>}`
+ `<命令>` が同名の TeX プリミティブであるかを判定する。機能としては
+ pdfTeX の `\ifpdfprimitive` と同じ。`\bxIfPrimitive` は脆弱である。
+ `\bxIfPrimitiveX` は完全展開可能(従って頑強)であるが、pdfTeX
+ 拡張の `\ifpdfprimitive` が使えない時は処理が非常に重い。
+ * `\bxIfCsPrimitive{<命令名>}{<真>}{<偽>}`
+ 引数が命令名であることを除き `\bxIfPrimitive` と同じ。
+
+(文字列化)
+
+ * `\bxDetokenize{<テキスト>}`
+ e-TeX 拡張の `\detokenize` と同じ機能で、e-TeX 拡張が有効の場合は
+ `\detokenize` のエイリアスになる。無効の場合は自前の実装を使うが、
+ 処理が非常に重い。(完全展開可能である。)
+ * `\bxStringify{<テキスト>}`
+ 完全展開して detokenize した文字列に展開する。現状では全エンジン
+ について自前の実装を使っていて処理が非常に重い。(完全展開可能。)
+
+(トークン列比較)
+
+ * `\bxIfExpToEqual{<テキスト1>}{<テキスト2>}{<真>}{<偽>}`
+ * `\bxIfExpToEqualX{<テキスト1>}{<テキスト2>}{<真>}{<偽>}`
+ 2つのテキストについて、完全展開して detokenize した結果の文字列が
+ 等しいかを判定する。機能としては pdfTeX の `\pdfstrcmp` での等価
+ 判定と同じ。`\bxIfExpToEqual` は脆弱である。`\bxIfExpToEqualX`
+ は完全展開可能だが、`\pdfstrcmp` が使えない時は処理が非常に重い。
+ * `\bxIfstrequalX{<テキスト1>}{<テキスト2>}{<真>}{<偽>}`
+ etoolbox の `\ifstrequal` と同じ機能、すなわち 2 つのテキストに
+ ついて展開せずに detokenize した結果の文字列が等しいかを判定する。
+ 元の `\ifstrequal` と異なり完全展開可能であるが、e-TeX 拡張が無効
+ の時は処理が非常に重い。
+
+(プレアンブル専用命令宣言)
+
+ * `\bxPreamble<TeXマクロ定義命令><TeXマクロ定義記述>`
+ * `\bxPreamble<LaTeXマクロ定義命令>[*]<LaTeXマクロ定義記述>`
+ `\@onlypreamble` を設定してマクロを定義する。
+ ※ 実際の動作は単に `\bxPreamble\制御綴A[*]\制御綴B` を
+ `\@onlypreamble\制御綴B \制御綴A[*]\制御綴B`
+ に置き換えているだけである。
+
+(保護付マクロ定義)
+
+ * `\bxRobustdef<TeXマクロ定義記述>`
+ * `\bxRobustgdef<TeXマクロ定義記述>`
+ * `\bxRobustedef<TeXマクロ定義記述>`
+ * `\bxRobustxdef<TeXマクロ定義記述>`
+ 保護付な命令を定義する。e-TeX 拡張が有効であれば、`\protected` を
+ 有効にし、無効であれば、LaTeX の保護機構を用いる。前に `\long` を
+ 付けられるが `\global` は不可。
+
+(その他)
+
+ * `\bxIfInMovingArg{<真>}{<偽>}`
+ いわゆる動く引数(実行が抑止された環境)であるかのテスト。実行が有効
+ である場合は、<偽> を実行したのと等価になる。実行が抑止されている
+ 場合は「無意味な代入文」の後に <真> を続けたものに展開される。この
+ 命令は、動く引数の中での使用を事前に検査してエラーを出すという目的
+ を想定している。(`\bxCheckForMovingArg` も参照。)
+
+ * `\bxMessageToken{<文字列>}{<テキスト>}`
+ `<テキスト>` の中の `#1` を制御綴 `\<文字列>` に置換したテキスト
+ を実行する。`\<文字列>` の意味は変化しない。`<テキスト>` 中で
+ パラメタ `#1` 等を使う場合は `##1` のように書く必要がある。例えば
+ 以下のように用いる。
+
+ \bxMessageToken{Hello TeX!}{\def\dohello{\do#1}}
+
+ `\dohello` の定義は `\do` の後に制御綴「`\Hello TeX!`」が続いた
+ ものになる。
+
+ * `\bxCheckForMovingArg{<テキスト>}`
+ 動く引数の中であるかの確認。動く引数の中でない場合は `<テキスト>`
+ が実行されるが、ある場合は次のように「未定義命令の形」でエラーが
+ 表示される。ここでは、`\xx@prepare` の中で `\bxCheckForMovingArg`
+ のテストを行っているとする。
+
+ ! Undefined control sequence.
+ <argument> \ ERROR: Use in wrong place!
+ <*> \protected@edef\xx@example{\xx@prepare
+ \xx@tmpa}
+
+ ※ 実行が抑止されている場合は `\errmessage` プリミティブも実行
+ されないので、普通にエラー表示ができないのである。
+ ※ `\bxIfInMovingArg` を利用しているので、そこに述べられている
+ ように、動く引数である場合の展開結果にはゴミが残る。
+
+zxbase パッケージ ― XeTeX 用基礎ライブラリ
+-------------------------------------------
+
+作者(ZR)の制作する他のパッケージで必要な、XeTeX 特有の機能を提供する。
+
+現状では、本パッケージに公開の機能は存在しない。
+
+更新履歴
+--------
+
+ * Version 1.1 〈2017/05/29〉
+ - 内容の整理。
+ - 一部の機能を非推奨にした。
+ * Version 1.0 〈2013/04/29〉
+ - ほぼ全面的な書き直し。
+ * Version 0.5 〈2010/06/15〉
+ - bxbase: `\JI`/`\KI` を追加。
+ - bxbase: `\dvipdfmxmapline`/`\dvipdfmxmapfont` を追加。
+ - bxutf8: BMP 外の符号値への対応。
+ * Version 0.4a 〈2009/11/16〉
+ - bxbase で `\UI`/`\Ux` を zxjatype と、`\AJ` を zxotf
+ と連携させた。
+ - zxbase パッケージを追加。
+ * Version 0.4 〈2009/07/05〉
+ - PXbase の v0.4 に合わせた改訂。
+ * Version 0.3 〈2008/04/06〉
+ - bxutf8x を追加。
+ - bxutf8 のバグを修正。
+ - bxbase でも pxbase の命令 `\recordpapersize` を使用可能にした。
+ * Version 0.2 〈2008/03/28〉
+ - 最初の公開版。
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/BX/bxbase/README.md b/language/japanese/BX/bxbase/README.md
new file mode 100644
index 0000000000..7daab0f13b
--- /dev/null
+++ b/language/japanese/BX/bxbase/README.md
@@ -0,0 +1,133 @@
+BXbase Package Bundle
+=====================
+
+LaTeX: Support library for other BX packages
+
+The main purpose of this bundle is to serve as underlying library
+to make work other packages created by the same author (their names
+start with “BX” or “PX”).
+
+However bxbase package contains a few user-level commands and is of
+some use by itself.
+
+### System Requirements
+
+ * TeX format: LaTeX.
+ * TeX engine: Any engine.
+ * DVI-ware (in DVI output): Anything.
+
+### Package content
+
+ * `bxbase.sty`: the ‘bxbase’ package
+ * `bxbase.def`: a submodule of ‘bxbase’
+ * `bxtoolbox.sty`: the ‘bxtoolbox’ package
+ * `bxtoolbox.def`: a submodule of ‘bxtoolbox’
+ * `bxtoolbox-ext.def`: a submodule of ‘bxtoolbox’
+ * `bxtoolbox-ja.def`: a submodule of ‘bxtoolbox’
+ * `bxutf8.def`: the ‘bxutf8’ input encoding definition
+ * `bxutf8x.def`: the ‘bxutf8x’ input encoding definition
+ * `zxbase.sty`: the ‘zxbase’ package
+ * `bxbase-ja.pdf`: the user manual for the ‘bxbase’ (in Japanese)
+ * `bxbase-ja.tex`: the source file of `bxbase-ja.pdf`
+
+### Installation
+
+In a system compliant to TDS 1.1, move the files as follows:
+
+ - `*.sty`, `*.def` → $TEXMF/tex/latex/BXbase
+
+And rehash your TEXMF trees if necessary.
+
+### License
+
+This package is distributed under the MIT License.
+
+bxbase Package ― The base library
+----------------------------------
+
+This package provides many package-level features, which are required by
+other packages created by the same author.
+
+It also contains some user-level commands, but most of such commands have
+been deprecated since v1.1, except a few which are related to inputting
+Japanese text.
+
+Unfortunately the documentation is available only in Japanese. (However,
+those unfamiliar with the Japanese language will probably have no need to
+load this package directly.)
+
+bxtoolbox Package ― To emulate etoolbox on non-e-TeX
+-----------------------------------------------------
+
+The main goal of this package is to provide part of the functions of the
+[etoolbox] package for TeX engines without e-TeX extension. (Note that
+TeX users in Japan have long used the pTeX engine for writing Japanese,
+and e-TeX extention for the engine did not appeared until around 2010.)
+
+[etoolbox]: https://www.ctan.org/pkg/etoolbox
+
+Note that when this package is loaded in e-TeX engines, then it loads
+the real etoolbox and uses the functions of that package.
+
+### e-TeX functions provided by this package
+
+Below is the list:
+
+ \AfterPreamble \AtEndPreamble \AfterEndPreamble
+ \AfterEndDocument
+ \csdef \csgdef \csedef \csxdef
+ \cslet \letcs \csletcs \undef \csundef
+ \appto \gappto \eappto \xappto
+ \csappto \csgappto \cseappto \csxappto
+ \preto \gpreto \epreto \xpreto
+ \cspreto \csgpreto \csepreto \csxpreto
+ \newbool \providebool \booltrue \boolfalse
+ \setbool \ifbool \notbool
+ \newtoggle \providetoggle \toggletrue \togglefalse
+ \settoggle \iftoggle \nottoggle
+ \ifdef \ifundef
+ \ifstrequal \ifstrempty
+
+### “Fakes” provided by this package
+
+These commands have a name of the original command prefixed by “bx”,
+that is, `\bxZzz` instead of `\zzz`. Some come in two versions: `\bxZzz`
+works as `\zzz` but is lack of expandability `\zzz` has, whereas `\bxZzzX`
+is expandable as `\zzz` is but otherwise flawed.
+
+ * `\bxNewrobustcmd`: Uses LaTeX-protect instead of `\protected`.
+ * `\bxRenewrobustcmd`: Ditto.
+ * `\bxProviderobustcmd`: Ditto.
+ * `\bxRobustify`: Ditto.
+ * `\bxCsuse`: Forbidden in moving arguments.
+ * `\bxCsuseX`: Suffering from `\relax`’ifying.
+ * `\bxCsshow`: Forbidden in moving arguments.
+ * `\bxIfcsdef`: Forbidden in moving arguments.
+ * `\bxIfcsundef`: Forbidden in moving arguments.
+ * `\bxIfcsundefX`: Suffering from `\relax`’ifying.
+
+Note: On e-TeX extended engines, these commands are simply aliases to the
+real commands of etoolbox.
+
+zxbase Package ― The base library for XeTeX
+--------------------------------------------
+
+This package provides XeTeX-specific features, which are required by
+other packages created by the same author.
+
+For the present this package contains no public features.
+
+Revision History
+----------------
+
+ * Version 1.1 〈2017/05/29〉
+ * Version 1.0 〈2013/04/29〉
+ * Version 0.5 〈2010/06/15〉
+ * Version 0.4a 〈2009/11/16〉
+ * Version 0.4 〈2009/07/05〉
+ * Version 0.3 〈2008/04/06〉
+ * Version 0.2 〈2008/03/28〉
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/BX/bxbase/bxbase-ja.pdf b/language/japanese/BX/bxbase/bxbase-ja.pdf
new file mode 100644
index 0000000000..8ce551a152
--- /dev/null
+++ b/language/japanese/BX/bxbase/bxbase-ja.pdf
Binary files differ
diff --git a/language/japanese/BX/bxbase/bxbase-ja.tex b/language/japanese/BX/bxbase/bxbase-ja.tex
new file mode 100644
index 0000000000..aac6d38777
--- /dev/null
+++ b/language/japanese/BX/bxbase/bxbase-ja.tex
@@ -0,0 +1,108 @@
+% 文字コードは UTF-8
+% uplatex で組版する
+\documentclass[a4paper,uplatex]{jsarticle}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{1.1}
+\newcommand{\PkgDate}{2017/05/29}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{~:\quad}
+\providecommand{\pTeX}{p\TeX}
+\providecommand{\upTeX}{u\pTeX}
+\providecommand{\pLaTeX}{p\LaTeX}
+\providecommand{\upLaTeX}{u\pLaTeX}
+%-----------------------------------------------------------
+\begin{document}
+\title{\Pkg{bxbase} パッケージ\\
+(ユーザ命令の解説)}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion \quad[\PkgDate]}
+\maketitle
+
+%===========================================================
+\section{パッケージの読込}
+
+|\usepackage| で読み込む。オプションは無い。
+\begin{quote}\small\begin{verbatim}
+\usepackage{bxbase}
+\end{verbatim}\end{quote}
+
+\Note 本パッケージのライブラリとしての機能は特定の
+エンジンやDVIウェアに依存しないが、以下に述べる命令に
+ついては必ずしもそうでないことに注意。
+
+%===========================================================
+\section{機能}
+
+%-------------------
+\subsection{符号値による文字入力}
+
+\begin{itemize}
+\item |\Ux{|\Meta{コード値}|,...}|\\
+ |\UI{|\Meta{<コード値>}|,...}|\Means
+Unicode コード値による入力を行う。
+|\Ux| は欧文用、|\UI| は和文用
+(I は Ideographic の意味)。
+コード値は以下の形式で表す。
+コンマで区切って複数文字入力できる。
+\begin{itemize}
+\item \Meta{16進数}\Means |A72C|, |02000B|, |1bd| 等。
+\item |+|\Meta{10進数}\Means |+254|, |+0937| 等。
+\item |'|\Meta{8進数}\Means |'376|, |'1651| 等。
+\end{itemize}
+
+Unicode 文字の出力には次の順番で利用可能な最初の機能を用いる。
+(|\UI| の場合 3) を飛ばす。)
+\begin{enumerate}
+\item[1)] \Pkg{zxjatype}パッケージ。
+この場合、その機構に従って出力される。
+すなわち |\UI| は必ず和文フォントで出力し、
+|\Ux| は和文/欧文切替の対象となる。
+\item[2)] XeTeXのUnicode出力。
+\item[3)] (|\Ux| のみ)\Pkg{bxucs}パッケージ。
+\item[4)] {\upTeX}の和文Unicode出力。
+\item[5)] \Pkg{UTF}/\Pkg{OTF}パッケージ。
+\item[6)] \Pkg{ums}/\Pkg{bxsuika}パッケージ。
+\end{enumerate}
+どれも使えない場合は「16進表現による代替表現」になる。
+
+\item |\AJ{|\Meta{コード値}|,...}|\Means
+Adobe-Japan1のコード値による入力を行う。
+コード値は10進数で指定する。
+出力には次の順番で利用可能な最初の機能を用いる。
+\begin{enumerate}
+\item[1)] \Pkg{zxotf}パッケージ。
+\item[2)] \Pkg{UTF}/\Pkg{OTF}パッケージ。
+\end{enumerate}
+どれも使えない場合は代替表現になる。
+
+\item |\JI{|\Meta{コード値}|,...}|\Means
+いわゆる「JISコード」(JIS~X~0208のGL表現)
+のコード値による入力を行う。
+コード値指定の方法は |\Ux| と同じ。
+出力には{(u)\pTeX}のJISコード和文出力の機能を使う。
+使えない場合は代替表現になる。
+
+\item |\KI{|\Meta{コード値}|,...}|\Means
+いわゆる「区点コード」のコード値による入力を行う。
+コード値指定は「RRCC」(RRは区番号、CCは点番号を10進2桁で表したもの)
+の形式で指定する。
+出力には{(u)\pTeX}のJISコード和文出力の機能を使う。
+使えない場合は代替表現になる。
+
+\item |\bxUx| / |\bxUI| / |\bxAJ| / |\bxJI| / |\bxKI|\Means
+|\Ux| 等は非常に短い名前なので他のパッケージと衝突する恐れがあり、
+そこでこのパッケージでは既に同名の命令がある場合は上書きしない
+ようにしている。
+|\bxUx| 等はそれぞれ |\Ux| 等と同じで、
+先のような場合にも常に使える。
+
+\end{itemize}
+
+なお、このパッケージは\Pkg{bxutf8}の為のドライバ(|\bxUHex|)
+および\Pkg{bxutf8x}の為のドライバを |\Ux| に相当するものに設定する。
+
+%===========================================================
+\end{document}
diff --git a/language/japanese/BX/bxbase/bxbase.def b/language/japanese/BX/bxbase/bxbase.def
new file mode 100644
index 0000000000..614ac5dcc8
--- /dev/null
+++ b/language/japanese/BX/bxbase/bxbase.def
@@ -0,0 +1,673 @@
+%%
+%% This is file 'bxbase.def'.
+%%
+
+%% file declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{bxbase.def}[2017/05/29 v1.1 BX base library]
+\def\bx@pkgname{BXbase} % bundle name
+
+%% check intergrity
+\edef\bxbz@tmpa{\@currname.\@currext}\def\bxbz@tmpb{bxbase.def}
+\ifx\bxbz@tmpa\bxbz@tmpb\else
+ \PackageError\bx@pkgname{Illegal load sequence}\@eha
+\expandafter\endinput\fi\relax
+
+%% code guards
+\edef\bxbz@restore@codes{%
+ \catcode33=\the\catcode33%
+ \catcode34=\the\catcode34%
+ \catcode39=\the\catcode39%
+ \catcode43=\the\catcode43%
+ \catcode45=\the\catcode45%
+ \catcode46=\the\catcode46%
+ \catcode47=\the\catcode47%
+ \catcode58=\the\catcode58%
+ \catcode60=\the\catcode60%
+ \catcode62=\the\catcode62%
+ \catcode94=\the\catcode94%
+ \catcode96=\the\catcode96%
+\relax}
+\catcode33=12 % <!>
+\catcode34=12 % <">
+\catcode39=12 % <'>
+\catcode43=12 % <+>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode60=12 % <<>
+\catcode62=12 % <>>
+\catcode94=7 % <^>
+\catcode96=12 % <`>
+\AtEndOfPackage{%
+ \bxbz@restore@codes
+ \let\bxbz@restore@codes\@undefined}
+
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{bxtoolbox}[2017/05/29]
+
+%% variables
+\let\bxHex\relax % result of \bxToHex...
+\let\bxRes\relax % result of \bxToLower
+\ifundef\bxUcv{\newcount\bxUcv}{} % argument of \bx@Ux
+
+%% unique tokens
+\def\bxbz@uniq{\bxbz@uniq@}
+
+%% error messages
+\def\bx@error{\PackageError\bx@pkgname}
+\def\bx@warn{\PackageWarningNoLine\bx@pkgname}
+\def\bx@err@nobbl{\bx@error{babel not yet loaded}\@eha}
+\def\bx@err@nanbc{\bx@error{Non-BMP characters not supported}\@eha}
+\def\bx@err@ilnfm{\bx@error{Illegal number format}\@eha}
+\def\bx@err@uddrv#1{\bx@error{\string#1 is undefined}\@eha}
+\def\bxbz@warn@depre#1#2{%
+ \PackageWarning\bx@pkgname
+ {The command '\string#1' is obsolete and\MessageBreak
+ its use is deprecated%
+ \ifx\relax#2\relax, \else
+ \MessageBreak (use #2 instead),\MessageBreak
+ \fi detected}}
+
+%--------------------------------------- programming tools
+
+%%<+> \bxCheckMA\CS <text> \bxEndCheckMA
+% If this construct appears in moving arguments, it expands to
+% an error message command.
+\def\bxCheckMA{\let\bx@chkma@a\bx@chkma@a\noexpand}
+\let\bxEndCheckMA\@empty \let\bx@chkma@z\relax
+\def\bx@chkma@a#1{\bx@chkma@z\relax\bx@chkma@b}
+\def\bx@chkma@b#1#2#3\bxEncCheckMA{\noexpand\bx@err@ivfrg#1#2}
+\def\bx@err@ivfrg#1{\bx@error{Cannot use \string#1 here}\@eha}
+
+%%<+D> \bxCheckCounterpart{<base_name>}
+% Compares the version between the current file and <base_name>
+% with the extension of current file, and if the latter file is
+% already loaded and moreover turns out to be newer than the
+% system aborts loading the current file.
+\bxPreamble\newcommand*\bxCheckCounterpart[1]{%
+ \PackageWarning\bx@pkgname
+ {'\string\bxCheckCounterpart' is no more supported,%
+ \MessageBreak detected}}
+
+%--------------------------------------- TeX engine distinction
+
+%%<+> \bxEngineTypeX / \bxEngineTypeY
+% Numbers that signify what I am.
+ % \bxEngineTypeX values
+\chardef\bxETTeX=0 % none of those
+\chardef\bxETpTeX=1 % pTeX-extended
+\chardef\bxETXeTeX=2 % XeTeX-extended
+\chardef\bxETOmega=3 % Omega-extended
+ % \bxEngineTypeY values (plus \bxETTeX)
+\chardef\bxETeTeX=1 % e-TeX-extended
+\chardef\bxETpdfTeX=3 % pdfTeX-extended
+\chardef\bxETLuaTeX=5 % LuaTeX-extended
+ % (here old pdfTeX without e-TeX is ignored)
+ %
+ % Note:
+ % Originally LuaTeX was supposed to be 'both pdfTeX- and Omega-
+ % extended' (\bxEngineTypeX/Y = 3/3); however, It seems that
+ % in today's LaTeX world LuaTeX is no longer seen as Omega-
+ % extended (indeed, current LuaTeX drops many of the Omega-
+ % specific features). So LuaTeX got relocated at \bxEngineTypeX/Y
+ % = 0/5.
+\ifbxinpTeX \let\bxEngineTypeX\bxETpTeX
+\else\ifbxinXeTeX \let\bxEngineTypeX\bxETXeTeX
+\else\ifbxinOmega \let\bxEngineTypeX\bxETOmega
+\else \let\bxEngineTypeX\bxETTeX
+\fi\fi\fi
+\ifbxineTeX \let\bxEngineTypeY\bxETeTeX
+\else\ifbxinpdfTeX \let\bxEngineTypeY\bxETpdfTeX
+\else\ifbxinLuaTeX \let\bxEngineTypeY\bxETLuaTeX
+\else \let\bxEngineTypeY\bxETTeX
+\fi\fi\fi
+\bxDebug{engine type = \the\bxEngineTypeX/\the\bxEngineTypeY}
+
+%--------------------------------------- Babel something
+
+%%<+> \bxBDHookBabel
+% A begindocument-hook about Babel.
+\newbool{bx@bbl@inuse}
+\bxPreamble\def\bx@bbl@bdhook{}
+\bxPreamble\newcommand*\bxBDHookBabel{%
+ \AtBeginDocument{%
+ \@ifpackageloaded{babel}{%
+ \bx@bbl@inusetrue
+ \ifx\bx@bbl@captlang\@undefined\else \bx@bbl@do@captlang \fi
+ \bx@bbl@bdhook
+ }{}}%
+ \bxNullify\bxBDHookBabel}
+
+%%<+> \bxAtBeginDocumentBabel{<text>}
+% Register a begin-document hook that will be invoked only when babel
+% is loaded.
+\bxPreamble\newcommand\bxAtBeginDocumentBabel{%
+ \g@addto@macro\bx@bbl@bdhook}
+
+%% \bx@bbl@patch@sel@lang
+% A patch to \select@language that disables automatic switching of
+% caption language.
+\bxPreamble\def\bx@bbl@patch@sel@lang{%
+ \global\let\bx@bbl@patch@sel@lang\relax
+ \global\let\bx@bbl@org@select@language\select@language
+ \gdef\select@language##1{%
+ \bx@bbl@copy{**C}{##1}\bx@bbl@copy{##1}{**Z}%
+ \bx@bbl@org@select@language{##1}\bx@bbl@copy{##1}{**C}}}
+
+%% \bx@bbl@do@captlang
+% Sets the caption language of Babel according to the value of
+% \bx@bbl@captlang.
+\bxPreamble\def\bx@bbl@do@captlang{%
+ \bxIfExpToEqual{\bx@bbl@captlang}{main}%
+ {\let\bx@bbl@captlang\bbl@main@language}{}%
+ \bxIfExpToEqual{\bx@bbl@captlang}{default}{}%else
+ {\bxIfcsundef{l@\bx@bbl@captlang}{\@nolanerr\bx@bbl@captlang}%
+ {\@nameuse{date\bx@bbl@captlang}%
+ \@nameuse{captions\bx@bbl@captlang}}}}
+
+%% \bx@bbl@copy{<lang1>}{<lang2>}
+% Copies \captions... and \date... for save.
+\def\bx@bbl@copy#1#2{%
+ \csletcs{captions#1}{captions#2}%
+ \csletcs{date#1}{date#2}}
+\csdef{captions**Z}{\@empty}
+\csdef{date**Z}{\@empty}
+
+%%<*D> \fixcaptionlanguage{<lang>}
+%%<+> \bxFixCaptionLanguage{<lang>}
+% Change the caption language manually, with disabling automatic
+% switching on it.
+\bxPreamble\newcommand*\fixcaptionlanguage[1]{%
+ \bxbz@warn@depre\fixcaptionlanguage{}%
+ \bxFixCaptionLanguage{#1}}
+\bxPreamble\newcommand*\bxFixCaptionLanguage[1]{%
+ \@ifpackageloaded{babel}%
+ {\bx@bbl@patch@sel@lang
+ \xdef\bx@bbl@captlang{#1}}%
+ {\bx@err@nobbl}}
+
+%%<+> \bxProvideCaptionLanguage{<lang>}
+\bxPreamble\newcommand*\bxProvideCaptionLanguage[1]{%
+ \ifundef\bx@bbl@captlang
+ {\bxFixCaptionLanguage{#1}}{}}
+
+%%<*> \setmainlanguage{<lang>}
+% Changes the 'main' language (one that is effective at beginning).
+\bxPreamble\newcommand*\setmainlanguage[1]{%
+ \bxIfcsundef{date#1}{\@nolanerr{#1}}{}%
+ \xdef\bbl@main@language{#1}}
+
+%%<+> \bxTrivLangDef{<lang>}
+% Makes a fake language option.
+\bxPreamble\newcommand*\bxTrivLangDef[1]{%
+ \bxIfcsundefX{date#1}{%
+ \bxIfcsundefX{l@#1}%
+ {\expandafter\chardef\csname l@#1\endcsname\z@}{}%
+ \csdef{date#1}{\relax}%
+ \csdef{captions#1}{\relax}%
+ \csdef{extras#1}{\relax}%
+ \csdef{noextras#1}{\relax}%
+ \csdef{date#1}{\relax}%
+ }{}}
+
+%--------------------------------------- input through code values
+
+%%<+> \bxBDHookUnicode
+% A begindocument-hook about Unicode (& CID) input.
+\bxPreamble\newcommand*\bxBDHookUnicode{%
+ \AtBeginDocument{\bx@assign@Ux}%
+ \bxNullify\bxBDHookUnicode}
+
+%%<+> \bxBDHookJisInput
+% A begindocument-hook about JIS-code input.
+\bxPreamble\newcommand*\bxBDHookJisInput{%
+ \AtBeginDocument{\bx@assign@JI}%
+ \bxNullify\bxBDHookJisInput}
+
+%%<+> \bxFallbackSym{<code>}
+\newcommand*\bxFallbackSym[1]{%
+ \leavevmode\bx@fbs@fnt{\dimen@=\bx@junit\relax
+ \hb@xt@\dimen@{\hss\vrule\@width\z@\@height.88\dimen@\@depth.12\dimen@
+ \frame{\lower.04\dimen@\hb@xt@.84\dimen@{\hss\vbox to.84\dimen@{\vss
+ \hsize=.84\dimen@\baselineskip\z@\lineskip.01\dimen@\parskip\z@skip
+ \leftskip\@flushglue\rightskip\@flushglue\parfillskip\z@skip
+ \parindent\z@\let\\\bx@fbs@c\leavevmode\let\sml=\bx@fbs@fs\bx@fbs@f
+ #1\unskip\par\vss}\hss}}\hss}}}
+\edef\bx@junit{\ifnum\bxEngineTypeX=\@ne 1zw\else 1em\fi}
+\def\bx@fbs@c{\unskip\par\ignorespaces}
+\def\bx@fbs@fnt{\global\let\bx@fbs@fnt\relax
+ \global\font\bx@fbs@fs=phvr at 2.4pt
+ \global\font\bx@fbs@f=phvr at 3.6pt}
+
+%%<+> \bxCodeValueSeq\CS{<text>}
+% Dispatcher for code value sequences.
+\newcommand*\bxCodeValueSeq{%
+ \let\bx@cvseq@branch\bx@cvseq@branch@hex
+ \bx@cvseq@a}
+\def\bx@cvseq@a#1#2{%
+ {\catcode33=12%
+ \xdef\bx@gtmpa{\uppercase{\def\noexpand\bx@tmpa{#2}}}}%
+ \let\bx@cvseq@do=#1\bx@gtmpa\relax
+ \expandafter\bx@cvseq@b\bx@tmpa,!\@nil}
+\def\bx@cvseq@b{\futurelet\bx@toka\bx@cvseq@branch}
+\def\bx@cvseq@branch@hex{%
+ \if !\bx@toka \let\bx@nxt\bx@cvseq@fin
+ \else\if "\bx@toka \let\bx@nxt\bx@cvseq@pfx
+ \else\if '\bx@toka \let\bx@nxt\bx@cvseq@pfx
+ \else\if +\bx@toka \let\bx@nxt\bx@cvseq@pfx
+ \else \let\bx@nxt\bx@cvseq@hex \fi\fi\fi\fi
+ \bx@nxt}
+\def\bx@cvseq@pfx{%
+ \afterassignment\bx@cvseq@post \bxUcv=}
+\def\bx@cvseq@hex{%
+ \afterassignment\bx@cvseq@post \bxUcv="0}
+\def\bx@cvseq@post#1{%
+ \if ,#1\expandafter\bx@cvseq@post@a
+ \else \bx@err@ilnfm \expandafter\bx@cvseq@fin \fi}
+\def\bx@cvseq@post@a{%
+ \bx@cvseq@do \bx@cvseq@b}
+\def\bx@cvseq@fin#1\@nil{}
+
+%%<+> \bxCodeValueSeqD\CS{<text>}
+% Same as \bxCodeValueSeq, except that it defaults to decimal.
+\newcommand*\bxCodeValueSeqD{%
+ \let\bx@cvseq@branch\bx@cvseq@branch@dec \bx@cvseq@a}
+\def\bx@cvseq@branch@dec{%
+ \if !\bx@toka \let\bx@nxt\bx@cvseq@fin
+ \else \let\bx@nxt\bx@cvseq@pfx \fi
+ \bx@nxt}
+
+%%<*> \bxUx, \bxUI, \bxAJ, \bxJI, \bxKI
+% The prefixed names for \Ux, etc. They are (more likely to be)
+% collision-safe.
+\bxNewrobustcmd*\bxUx{\bxCodeValueSeq\bx@Ux}
+\bxNewrobustcmd*\bxUI{\bxCodeValueSeq\bx@UI}
+\bxNewrobustcmd*\bxAJ{\bxCodeValueSeqD\bx@AJ}
+\bxNewrobustcmd*\bxJI{\bxCodeValueSeq\bx@JI}
+\bxNewrobustcmd*\bxKI{\bxCodeValueSeqD\bx@KI}
+
+%%<+> \bxUHex{<value>}, \bxUInt{<value>}
+% Alternative entry points for \Ux. The code value is specified in
+% hexadecimal (\bxUHex) / decimal (\bxUInt) numerals.
+\def\bxbz@tmpa{\bxUIntDummyBxutfx}
+\bxIfx{\bxUInt\bxbz@tmpa}{\undef\bxUInt}{}
+\def\bxbz@tmpa{\bxUHexDummyBxutf}
+\bxIfx{\bxUHex\bxbz@tmpa}{\undef\bxUHex}{}
+\newcommand*\bxUHex{\protect\bx@Uxh}
+\newcommand*\bxUInt{\protect\bx@UInt}
+\def\bx@UInt#1{\bxUcv=#1\relax\bx@Ux}
+
+%% \bx@UIh@fb, \bx@AJ@fb
+\def\bx@UIh@fb#1{\bxUcv="#1\relax\bxToHexFive\bxUcv
+ \expandafter\bx@b@fb@five\bxHex[Ux]}
+\def\bx@AJ@fb{\bxToDecFive\bxUcv
+ \expandafter\bx@b@fb@five\bxHex[AJ]}
+\def\bx@JI@fb{\bxToHexFour\bxUcv
+ \expandafter\bx@b@fb@four\bxHex[JI]}
+\def\bx@KI@fb{\bxToDecFive\bxUcv
+ \expandafter\bx@b@fb@five\bxHex[KI]}
+\def\bx@b@fb@five#1#2#3#4#5#6[#7]{%
+ \bxFallbackSym{{\sml#7}\\\bx@hx@supzero#1#2#3\\#4#5}}
+\def\bx@b@fb@four#1#2#3#4#5[#6]{%
+ \bxFallbackSym{{\sml#6}\\#1#2\\#3#4}}
+\def\bx@hx@supzero#1{\ifx0#1\else\expandafter#1\fi}
+
+%% \bx@assign@Ux
+% Picks up appropriate drivers \bx@Ux etc. according to current
+% load-states of packages.
+% [driver] [purpose] [argument] [default]
+% \bx@Ux Unicode \bxUcv go to \bx@UI
+% \bx@Uxh Unicode #1(hex) go to \bx@UIh
+% \bx@UI Unicode-ideo. \bxUcv go to \bx@UIh
+% \bx@UIh Unicode-ideo. #1(hex) fallback
+% \bx@AJ Adobe-Japan1 \bxUcv fallback
+% From the default value it can be said:
+% - Implemetations for \bx@Ux(h) must fallback on \bx@UI(h) when
+% they cannot be handle the given character, unless such fallback
+% is known to be useless.
+% - When you implement one of \bx@Ux or \bx@Uxh, then you must also
+% implement the other.
+% - When you implement \bx@UI, then you must also implement \bx@UIh.
+% (But you can implement only \bx@UIh.)
+ % Initial values
+\def\bx@Ux{\bx@UI} % pass to \bx@UI
+\def\bx@Uxh{\bx@UIh} % pass to \bx@UIh
+\def\bx@UI{\bxToHexUC\bxUcv\bx@UIh\bxHex} % pass to \bx@UIh
+\let\bx@UIh\bx@UIh@fb % 'fallback' driver
+\let\bx@AJ\bx@AJ@fb % 'fallback' driver
+ % some helpers
+ % one more step put so that \UTF could be redefined
+\def\bx@UIh@otf{\UTF}
+ % \UMS with the argument expanded
+\def\bx@UIh@ums#1{\expandafter\UMS\expandafter{#1}}
+ % \CID with \bxUcv
+\def\bx@AJ@otf{\CID\bxUcv}
+\bxPreamble\def\bx@assign@Ux{%
+ % If I have bxucs, then set \bx@Ux to \bx@Ux@ucs
+ % (which fallbacks on \bx@UI in failure).
+ \@ifpackageloaded{bxucs}{%
+ \let\bx@Ux\bx@Ux@ucs\let\bx@Uxh\bx@Uxh@ucs}{}%
+ % If I have ums or bxsuika then I use \UMS as \bx@UIh driver.
+ \@ifpackageloaded{ums}{\bxOktrue}{\bxOkfalse}
+ \@ifpackageloaded{bxsuika}{\bxOktrue}{}
+ \ifbxOk \let\bx@UIh\bx@UIh@UMS \fi
+ % If I have utf or otf then I use \UTF as \bx@UIh driver.
+ \@ifpackageloaded{utf}{\bxOktrue}{\bxOkfalse}
+ \@ifpackageloaded{otf}{\bxOktrue}{}
+ \ifbxOk \let\bx@UIh\bx@UIh@otf \let\bx@AJ\bx@AJ@otf \fi
+ % pxotf is same as otf, except that it also provides a direct
+ % way to \bx@UI and \bx@AJ.
+ \@ifpackageloaded{pxotf}{%
+ \let\bx@UIh\bxUIh@otf \let\bx@UI\pxUcvUTF \let\bx@AJ\pxUcvCID}{}%
+ % If I am upTeX I use \kchar.
+ \ifbxinupTeX
+ \def\bx@UI{\kchar\bxUcv}\def\bx@UIh##1{\kchar"##1\relax}%
+ % If I am a Unicode-aware engine, then...
+ \else\ifnum\bxEngineTypeX>\@ne %
+ \def\bx@UI{\char\bxUcv}\def\bx@UIh##1{\char"##1\relax}%
+ \let\bx@Ux\bx@UI \let\bx@Uxh\bx@UIh
+ % zxjatype provides better handling of \UI & \Ux.
+ \@ifpackageloaded{zxjatype}{%
+ \let\bx@UI\zxjt@UI \let\bx@UIh\zxjt@UIh
+ \let\bx@Ux\zxjt@Ux \let\bx@Uxh\zxjt@Uxh}{}%
+ % zxotf provides \CID comamnd.
+ \@ifpackageloaded{zxotf}{%
+ \def\bx@AJ{\CID\bxUcv}}{}%
+ \fi\fi
+ % If \bx@UIh@usr is known I use it.
+ \ifx\bx@UIh@usr\@undefined\else \let\bx@UIh\bx@UIh@usr \fi
+ \let\bx@setuidriver@a\bx@setuidriver@b
+ \ifx\bx@AJ@usr\@undefined\else \let\bx@AJ\bx@AJ@usr \fi
+ \let\bx@setajdriver@a\bx@setajdriver@b
+}
+
+%%<*> \setUIdriver\CS
+\newcommand*\setUIdriver[1]{%
+ \ifx#1\@undefined \bx@err@uddrv#1%
+ \else \bx@setuidriver@a#1\fi}
+\def\bx@setuidriver@a#1{\let\bx@UIh@usr#1}
+\def\bx@setuidriver@b#1{\let\bx@UIh#1}
+
+%%<*> \setAJdriver\CS
+\newcommand*\setAJdriver[1]{%
+ \ifx#1\@undefined \bx@err@uddrv#1%
+ \else \bx@setajdriver@a#1\fi}
+\def\bx@setajdriver@a#1{\let\bx@AJ@usr#1}
+\def\bx@setajdriver@b#1{\let\bx@AJ#1}
+
+%%%% \bx@assign@JI
+% Picks up appropriate drivers \bx@JI etc.
+% [driver] [purpose] [argument] [default]
+% \bx@JI JIS-code \bxUcv fallback
+% \bx@KI Kuten-code \bxUcv fallback
+\def\bx@JI{\bx@JI@fb}
+\def\bx@KI{\bx@KI@fb}
+\bxPreamble\def\bx@assign@JI{%
+ % \JI & \KI are available only in (u)pTeX
+ \ifnum\bxEngineTypeX=\@ne
+ \def\bx@JI{\char\jis\bxUcv\relax}\let\bx@KI\bx@KI@pTeX
+ \fi
+}
+\ifnum\bxEngineTypeX=\@ne %----<*pTeX>
+%% \bx@KI@pTeX
+ % \KI{2????} (0213 plane 2) works only when kanji-internal=sjis
+\mathchardef\bx@ki@max=\ifnum\jis"2121="8140 30000\else 20000\fi\relax
+\mathchardef\bx@ki@myr=10000
+\mathchardef\bx@ki@bas="2020
+\let\bx@ki@char=\char
+\ifx\kchar\@undefined\else \let\bx@ki@char=\kchar \fi
+\def\bx@KI@pTeX{%
+ \ifnum\bxUcv<\bx@ki@max\else \bxUcv=\z@ \fi
+ \ifnum\bxUcv<\bx@ki@myr \advance\bxUcv\bx@ki@myr \fi
+ \expandafter\bx@ki@ptex@a\the\bxUcv\@nil
+ \bx@ki@char\jis\bxUcv\relax}
+\begingroup \@tempcnta=94
+ \@for\bx@tmpa:=01,08,03,04,05,12,13,14,15\do{\advance\@tempcnta\@ne
+ \expandafter\xdef\csname bx@JSH/\bx@tmpa\endcsname{\the\@tempcnta}}
+ \@tempcntb=77 \loop
+ \advance\@tempcnta\@ne \advance\@tempcntb\@ne
+ \expandafter\xdef\csname bx@JSH/\the\@tempcntb\endcsname
+ {\the\@tempcnta}%
+ \ifnum\@tempcntb<94 \repeat
+\endgroup
+\def\bx@ki@ptex@a#1#2#3#4#5#6\@nil{%
+ \ifnum#1=\@ne \bxUcv=#2#3\relax
+ \else \bxUcv=0\csname bx@JSH/#2#3\endcsname\relax \fi
+ \multiply\bxUcv\@cclvi \advance\bxUcv#4#5\relax
+ \advance\bxUcv\bx@ki@bas}
+\fi %----</pTeX>
+
+%--------------------------------------- "safe-caret" module
+
+%% variables
+\newbool{bx@acr@ok}
+\newbool{bx@acr@needed}
+\newbool{bx@safecaret}
+
+\catcode`\^=13 %---- make caret active
+
+%%<*> \safecaret
+\bxPreamble\newcommand*\safecaret{%
+ \bx@safecarettrue}
+
+%%<+> \bxEnableSafeCaret
+\bxPreamble\newcommand*\bxEnableSafeCaret{%
+ \bx@acr@neededtrue}
+
+%% \bx@acr@defbytes
+\bxPreamble\def\bx@acr@defbytes{%
+ \bgroup\@tempcnta128\lccode`\Z=`\B\catcode`\^\active
+ \@whilenum\@tempcnta<256 \do{%
+ \lccode`\^\@tempcnta \chardef\bx@acr@tok\@tempcnta
+ \expandafter\bx@acr@defbytes@do@a\meaning\bx@acr@tok\@nil
+ \advance\@tempcnta\@ne}\egroup}
+\bxPreamble\def\bx@acr@defbytes@do@a#1"#2\@nil{% name is bx@acr@B/ab etc.
+ \lowercase{\expandafter\gdef\csname bx@acr@Z/#2\endcsname{^}}}
+\@onlypreamble\bx@acr@defbytes
+\@onlypreamble\bx@acr@defbytes@do@a
+
+%% \bx@acr@caret
+% This command should be \let'd to active <^>.
+\def\bx@acr@caret{%
+ \let\bx@acr@out\@empty \bx@acr@caret@a}
+\def\bx@acr@caret@a{%
+ \bx@acr@nextcaret{\bx@acr@caret@b}{\bx@acr@finish{\bx@acr@nxc}}}
+\def\bx@acr@caret@b#1{%
+ \let\bx@acr@hex\@empty
+ \bx@acr@nexthexdgt{\bx@acr@caret@c}{\bx@acr@finish{\bx@acr@nxdc}}}
+\def\bx@acr@caret@c#1{%
+ \edef\bx@acr@hex{#1}%
+ \bx@acr@nexthexdgt{\bx@acr@caret@d}{\bx@acr@finish{\bx@acr@nxdc\bx@acr@hex}}}
+\def\bx@acr@caret@d#1{%
+ \edef\bx@acr@hex{\bx@acr@hex#1}%
+ \expandafter\bx@acr@caret@e\csname bx@acr@B/\bx@acr@hex\endcsname
+ \bx@acr@ifok{\bx@acr@nextcaret{\bx@acr@caret@g}{\bx@acr@finish{}}}%
+ {\bx@acr@finish{\bx@acr@nxdc\bx@acr@hex}}}
+\def\bx@acr@caret@e#1{%
+ \ifx#1\relax \bx@acr@okfalse
+ \else \bx@acr@oktrue \expandafter\bx@acr@caret@f#1\fi}
+\def\bx@acr@caret@f#1{%
+ \expandafter\def\expandafter\bx@acr@out\expandafter{\bx@acr@out#1}}
+\def\bx@acr@caret@g#1{\bx@acr@caret@a}
+\def\bx@acr@nxc{\noexpand^}
+\def\bx@acr@nxdc{\noexpand^\noexpand^}
+\def\bx@acr@nextcaret#1#2{%
+ \def\bx@acr@tmpa{#1}\def\bx@acr@tmpb{#2}%
+ \futurelet\bx@acr@tok\bx@acr@nextcaret@a}
+\def\bx@acr@nextcaret@a{%
+ \let\bx@acr@nxt\bx@acr@tmpb
+ \ifx^\bx@acr@tok \let\bx@acr@nxt\bx@acr@tmpa
+ \fi \bx@acr@nxt}
+\def\bx@acr@nexthexdgt#1#2{%
+ \def\bx@acr@tmpa{#1}\def\bx@acr@tmpb{#2}%
+ \futurelet\bx@acr@tok\bx@acr@nexthexdgt@a}
+\def\bx@acr@nexthexdgt@a{%
+ \let\bx@acr@nxt\bx@acr@tmpb
+ \ifcat @\noexpand\bx@acr@tok \let\bx@acr@nxt\bx@acr@tmpa \fi
+ \ifcat "\noexpand\bx@acr@tok \let\bx@acr@nxt\bx@acr@tmpa \fi
+ \bx@acr@nxt}
+\def\bx@acr@ifok{%
+ \ifbx@acr@ok \expandafter\@firstoftwo \else \expandafter \@secondoftwo \fi}
+\def\bx@acr@finish#1{%
+ \edef\bx@acr@nxt{#1}%
+ \ifx\bx@acr@out\@empty \bx@acr@oktrue \else \bx@acr@okfalse \fi
+ \bx@acr@ifok{\expandafter\bx@acr@finish@a\bx@acr@nxt\@nil}%
+ {\expandafter\bx@acr@out\bx@acr@nxt}}
+\def\bx@acr@finish@a#1#2\@nil{%
+ % replace first ^ with normal one to avoid loop
+ \bx@acr@normcaret #2}
+\let\bx@acr@normcaret\sp % this does not mean much
+
+%% \bx@acr@initialize
+\bxPreamble\def\bx@acr@initialize{%
+ \bx@acr@defbytes}
+
+%% \bx@acr@annihilate
+\bxPreamble\def\bx@acr@annihilate{%
+ \let\bx@acr@caret\relax\let\bx@acr@caret@a\relax
+ \let\bx@acr@caret@b\relax\let\bx@acr@caret@c\relax
+ \let\bx@acr@caret@d\relax\let\bx@acr@caret@e\relax
+ \let\bx@acr@caret@f\relax\let\bx@acr@caret@g\relax
+ \let\bx@acr@nextcaret\relax\let\bx@acr@nextcaret@a\relax
+ \let\bx@acr@nexthexdgt\relax\let\bx@acr@nexthexdgt@a\relax
+ \let\bx@acr@finish\relax\let\bx@acr@finish@a\relax}
+
+%% \bx@acr@babel@hookcaret
+\bxPreamble\def\bx@acr@babel@hookcaret{%
+ \expandafter\ifx\csname active@char\string^\endcsname\relax\else
+ \declare@shorthand\system@group{^}{\bx@acr@caret}%
+ \let\bx@acr@normcaret\bx@acr@babel@normcaret
+ \bxEnableSafeCaret \fi}
+\edef\bx@acr@babel@normcaret{%
+ \expandafter\noexpand\csname normal@char\string^\endcsname}
+
+%% \bx@acr@verbatim@hookcaret
+\bxPreamble\def\bx@acr@verbatim@hookcaret{%
+ \g@addto@macro\@noligs{\catcode`\^\active\let^\bx@acr@caret
+ \let\bx@acr@normcaret\bx@acr@verb@normcaret}%
+ \bxEnableSafeCaret}
+\begingroup \catcode`\^=12
+\global\let\bx@acr@verb@normcaret=^%
+\endgroup
+
+%%<+> \bxBDHookSafeCaret
+% Begin-document hook.
+\bxPreamble\newcommand*\bxBDHookSafeCaret{%
+ \AtBeginDocument{%
+ %% function activated by '\safecaret'
+ \ifbx@safecaret
+ \@ifpackageloaded{babel}{\bx@acr@babel@hookcaret}{}%
+ \bx@acr@verbatim@hookcaret
+ \fi
+ %% initialize or annihilate...
+ \ifbx@acr@needed \bx@acr@initialize
+ \else \bx@acr@annihilate \fi
+ \let\bxEnableSafeCaret\@undefined}%
+ \bxNullify\bxBDHookSafeCaret}
+
+\catcode`\^=7 %---- make caret normal
+
+%--------------------------------------- hyphenation something
+
+%%<*> 'withnohyph' environment
+\expandafter\ifx\csname l@nohyphenation\endcsname\relax
+ \newlanguage\l@nohyphenation \fi
+\def\withnohyph{\language\l@nohyphenation}
+\let\endwithnohyph\relax
+
+%--------------------------------------- patch for 'ucs' package
+
+%% \bxBDHookUcsFastErrors
+% The begin-document hook, which forces the 'fasterrors' option
+% of 'ucs' package when running on pTeX.
+\bxPreamble\newcommand*\bxBDHookUcsFastErrors{%
+ \ifbxinpTeX
+ \AtBeginDocument{%
+ \@ifpackageloaded{ucs}{%
+ \let\UnicodeOptionfasterrorsfalse\UnicodeOptionfasterrorstrue
+ \UnicodeOptionfasterrorstrue}{}}%
+ \fi
+ \bxNullify\bxBDHookUcsFastErrors}
+
+%--------------------------------------- DVI-specials
+
+%%<*D> \usejapanesepdfstring
+\bxPreamble\newcommand*\usejapanesepdfstring{}
+\if s\bxInternalJaEncoding
+ \def\usejapanesepdfstring{% why use CP932??
+ \bxDocumentSpecialUrgent{pdf:tounicode 90ms-RKSJ-UCS2}%
+ \bxNullify\usejapanesepdfstring}
+\else\if e\bxInternalJaEncoding
+ \def\usejapanesepdfstring{%
+ \bxDocumentSpecialUrgent{pdf:tounicode EUC-UCS2}%
+ \bxNullify\usejapanesepdfstring}
+\else\if u\bxInternalJaEncoding
+ \def\usejapanesepdfstring{%
+ \bxDocumentSpecialUrgent{pdf:tounicode UTF8-UCS2}%
+ \bxNullify\usejapanesepdfstring}
+\else
+ \def\usejapanesepdfstring{%
+ \bx@warn{\string\usejapanesepdfstring\space ignored,\MessageBreak
+ since internal encoding is unknown}%
+ \bxNullify\usejapanesepdfstring}
+\fi\fi\fi
+\preto\usejapanesepdfstring{%
+ \bxbz@warn@depre\usejapanesepdfstring{'pxjahyper' package}}
+
+%%<*D> \recordpapersize
+\bxPreamble\newcommand*\recordpapersize{%
+ \bxbz@warn@depre\recordpapersize{'bxpapersize' package}%
+ \bxDocumentSpecial{papersize=\the\paperwidth,\the\paperheight}%
+ \bxNullify\recordpapersize}
+
+%%<*D> \dvipdfmxmapline{<text>}
+%%<*D> \dvipdfmxmapfile{<text>}
+\bxPreamble\newcommand*\dvipdfmxmapline[1]{%
+ \bxbz@warn@depre@dpxmap
+ \bxDocumentSpecial{pdf:mapline #1}}
+\bxPreamble\newcommand*\dvipdfmxmapfile[1]{%
+ \bxbz@warn@depre@dpxmap
+ \bxDocumentSpecial{pdf:mapfile #1}}
+\def\bxbz@warn@depre@dpxmap{%
+ \bxbz@warn@depre\dvipdfmxmapfile{'pxchfon' package}%
+ \global\let\bxbz@warn@depre@dpxmap\relax}
+
+%--------------------------------------- CJK font scaling
+
+%% \bxbz@doc@class@type
+%%<+D> \pxDocClassType
+% 1 = pLaTeX standard class
+% 2 = New standard classes by Okumura
+% 0 = otherwise
+\bxUcv=\z@
+\@ifclassloaded{jarticle}{\bxUcv=\@ne}{}
+\@ifclassloaded{jreport}{\bxUcv=\@ne}{}
+\@ifclassloaded{jbook}{\bxUcv=\@ne}{}
+\@ifclassloaded{tarticle}{\bxUcv=\@ne}{}
+\@ifclassloaded{treport}{\bxUcv=\@ne}{}
+\@ifclassloaded{tbook}{\bxUcv=\@ne}{}
+\@ifclassloaded{ujarticle}{\bxUcv=\@ne}{}
+\@ifclassloaded{ujreport}{\bxUcv=\@ne}{}
+\@ifclassloaded{ujbook}{\bxUcv=\@ne}{}
+\@ifclassloaded{utarticle}{\bxUcv=\@ne}{}
+\@ifclassloaded{utreport}{\bxUcv=\@ne}{}
+\@ifclassloaded{utbook}{\bxUcv=\@ne}{}
+\@ifclassloaded{jsarticle}{\bxUcv=\tw@}{}
+\@ifclassloaded{jsreport}{\bxUcv=\tw@}{}
+\@ifclassloaded{jsbook}{\bxUcv=\tw@}{}
+\chardef\bxbz@doc@class@type=\bxUcv
+\chardef\pxDocClassType=\bxUcv
+
+%%<+> \pxUpScale
+\edef\pxUpScale{%
+ \ifx\Cjascale\@undefined
+ \ifcase\bxbz@doc@class@type 1\or 0.962216\or 0.924690\else 1\fi
+ \else \Cjascale \fi}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxbase/bxbase.sty b/language/japanese/BX/bxbase/bxbase.sty
new file mode 100644
index 0000000000..194d7ccf3f
--- /dev/null
+++ b/language/japanese/BX/bxbase/bxbase.sty
@@ -0,0 +1,73 @@
+%%
+%% This is file 'bxbase.sty'.
+%%
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxbase}[2017/05/29 v1.1 BX base library]
+
+%--------------------------------------- main
+
+%% load submodule
+\providecommand*\bxRequireDefinition[1]{%
+ \def\bxbz@ext{def}\@onefilewithoptions{#1}[][]\bxbz@ext}
+\bxRequireDefinition{bxbase}
+
+%% enable begin-document hooks
+\bxBDHookBabel
+\bxBDHookUnicode
+\bxBDHookJisInput
+\bxBDHookSafeCaret
+\bxBDHookUcsFastErrors
+
+%% error messages
+\def\bxbz@pkgname{bxbase}
+\def\bxbz@inf@aecsq#1{%
+ \PackageInfo\bxbz@pkgname
+ {Command \string#1 already exists}}
+
+%--------------------------------------- extra
+
+%%<*> \Ux / \UI / \AJ / \JI / \KI
+% define commands unless their name is already used
+\bxPreamble\def\bxbz@charcmd#1#2{%
+ \ifundef#1{\def#1{#2}}{\bxbz@inf@aecsq#1}}
+\bxbz@charcmd\Ux\bxUx
+\bxbz@charcmd\UI\bxUI
+\bxbz@charcmd\AJ\bxAJ
+\bxbz@charcmd\JI\bxJI
+\bxbz@charcmd\KI\bxKI
+
+%--------------------------------------- all done
+\endinput
+%
+% * bxbase provides:
+% - bx@Uxh@fb (terminal)
+% - bxUx (passed to bx@Ux)
+% - bxUI (passed to bx@UI)
+% - bxUHex (passed to bx@Uxh)
+% * bxutf8 provides:
+% - conversion from UTF8 string to bxUHex
+% * bxucs provides:
+% - bx@Ux@ucs (fallback to bx@UI)
+% - bx@Uxh@ucs (fallback to bx@UIh)
+% * utf/otf provides:
+% - bx@UIh@p (terminal)
+%
+% [default]
+% bx@Ux bx@Uxh
+% v v
+% bx@UI > bx@UIh = bx@UIh@fb or bx@UIh@p
+%
+% [with bxucs]
+% bx@Ux = bx@Ux@ucs bx@Uxh = bx@Uxh@ucs
+% v v
+% bx@UI > bx@UIh = bx@Uxh@fb or bx@UIh@p
+%
+%% EOF
diff --git a/language/japanese/BX/bxbase/bxtoolbox-ext.def b/language/japanese/BX/bxbase/bxtoolbox-ext.def
new file mode 100644
index 0000000000..63b7927f5c
--- /dev/null
+++ b/language/japanese/BX/bxbase/bxtoolbox-ext.def
@@ -0,0 +1,563 @@
+%%
+%% This is file 'bxtoolbox-ext.def'.
+%%
+
+%% file declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{bxtoolbox-ext.def}[2017/05/29 v1.1]
+
+%% check intergrity
+\edef\bxtb@tmpa{\@currname.\@currext}\def\bxtb@tmpb{bxtoolbox-ext.def}
+\ifx\bxtb@tmpa\bxtb@tmpb\else
+ \PackageError\bxtb@pkgname{Illegal load sequence}\@eha
+\expandafter\endinput\fi\relax
+
+%% load submodule
+\providecommand*\bxRequireDefinition[1]{%
+ \def\bx@@def{def}\@onefilewithoptions{#1}[][]\bx@@def}
+\bxRequireDefinition{bxtoolbox}
+
+%% code guards
+\edef\bxtb@x@restore@codes{%
+ \catcode33=\the\catcode33%
+ \catcode34=\the\catcode34%
+ \catcode39=\the\catcode39%
+ \catcode45=\the\catcode45%
+ \catcode46=\the\catcode46%
+ \catcode47=\the\catcode47%
+ \catcode58=\the\catcode58%
+ \catcode59=\the\catcode59%
+ \catcode60=\the\catcode60%
+ \catcode62=\the\catcode62%
+ \catcode96=\the\catcode96%
+\relax}
+\catcode33=12 % <!>
+\catcode34=12 % <">
+\catcode39=12 % <'>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode59=12 % <;>
+\catcode60=12 % <<>
+\catcode62=12 % <>>
+\catcode96=12 % <`>
+\AtEndOfPackage{%
+ \bxtb@x@restore@codes
+ \undef\bxtb@x@restore@codes}
+
+%--------------------------------------- general
+
+%% variables
+\bxIfcsundefX{ifbxOk}{\newbool{bxOk}}{} % all-purpsoe switch
+\bxIfcsundefX{bxResDim}{\newdimen\bxResDim}{}
+\let\bxHex\relax % result of \bxToHex...
+\let\bxRes\relax % result of \bxToLower
+
+%% error messages
+\def\bxtb@err@oorng{\bxtb@error{Number out of range}\@eha}
+
+%--------------------------------------- programming tools
+
+%%<+> \bxDebug{<text>}
+% Prints a debug message. By default, it is no-op.
+\providecommand*\bxDebug{\@gobble}
+
+%%<+> \bxShowbool{<name>}
+\newcommand*{\bxShowbool}[1]{\ifbool{#1}{true}{false}}
+
+%%<+> \bxShowtoggle{<name>}
+\newcommand*{\bxShowtoggle}[1]{\iftoggle{#1}{true}{false}}
+
+%%<+> \bxRequireDefinition
+% Same as \RequirePackage except that it loads '.def' files.
+% [Definition appears near the top of this file]
+%%<+D> \bxInputDefFile
+% Old name for \bxRequireDefinition
+\bxPreamble\newcommand*{\bxInputDefFile}{\bxRequireDefinition}
+
+%%<+> \bxNullify\CS
+% Make \CS void and unoverridable by \providecommand.
+\def\bxNullify#1{\global\let#1\bx@nullified}
+\def\bx@nullified{\@gobble\bx@@nullified}
+
+%%<+> \bxForEachIn<arg>,...\do{<repl_text>}
+%%<+> \bxForEachTokenIn<arg>,...\do{<repl_text>}
+\newcommand*\bxForEachIn{\bxtb@forei@a\@for}
+\newcommand*\bxForEachTokenIn{\bxtb@forei@a\@tfor}
+\def\bxtb@forei@a#1#2\do#{%
+ \def\bxtb@forei@b{#1\bxtb@forei@x:=#2\do
+ {\expandafter\bxtb@forei@do\expandafter{\bxtb@forei@x}}}%
+ \afterassignment\bxtb@forei@b \def\bxtb@forei@do##1}
+
+%%<+> \bxWithArgExpd{<arg1>}\do{<repl-text>}
+%%<+> \bxWithArgFullExpd{<arg1>}\do{<repl-text>}
+\newcommand*\bxWithArgExpd{}
+\def\bxWithArgExpd#1\do#{%
+ \expandafter\bxtb@with@arg@expd@a#1\@nil}
+\def\bxtb@with@arg@expd@a#1\@nil{%
+ \def\bxtb@with@args@expd@do{\bxtb@do{#1}}%
+ \afterassignment\bxtb@with@args@expd@do
+ \def\bxtb@do##1}
+\newcommand*\bxWithArgFullExpd{}
+\def\bxWithArgFullExpd#1\do#{%
+ \edef\bxtb@args{{#1}}%
+ \def\bxtb@with@args@expd@do{\expandafter\bxtb@do\bxtb@args}%
+ \afterassignment\bxtb@with@args@expd@do
+ \def\bxtb@do##1}
+
+%%<+> \bxWithArgsExpd{<arg1>}...\do{<repl-text>}
+%%<+> \bxWithArgsFullExpd{<arg1>}...\do{<repl-text>}
+\newcommand*\bxWithArgsExpd{%
+ \begingroup
+ \count@=\z@ \let\do\bxtb@uniq
+ \let\bxtb@l@tmpa\@empty
+ \bxtb@with@args@expd@gth@a}
+\def\bxtb@with@args@expd@gth@a{%
+ \futurelet\bxtb@tok\bxtb@with@args@expd@gth@b}
+\def\bxtb@with@args@expd@gth@b{%
+ \bxIfx{\bxtb@tok\bxtb@uniq}%
+ {\bxtb@with@args@expd@pst@a}%
+ {\bxtb@with@args@expd@gth@c}}
+\def\bxtb@with@args@expd@gth@c#1{%
+ \expandafter\bxtb@with@args@expd@gth@d#1\@nil}
+\def\bxtb@with@args@expd@gth@d#1\@nil{%
+ \ifnum\count@<9
+ \appto\bxtb@l@tmpa{{#1}}%
+ \advance\count@\@ne
+ \fi
+ \bxtb@with@args@expd@gth@a}
+\def\bxtb@with@args@expd@pst@a#1{%
+ \@whilenum\count@<9 \do{%
+ \appto\bxtb@l@tmpa{{}}\advance\count@\@ne}%
+ \expandafter\def\expandafter\bxtb@l@tmpa\expandafter{%
+ \expandafter{\bxtb@l@tmpa}}%
+ \xpreto\bxtb@l@tmpa{\noexpand\bxtb@with@args@expd@ppst@a}%
+ \expandafter\endgroup\bxtb@l@tmpa}
+\newcommand*\bxWithArgsFullExpd{%
+ \bxtb@with@args@fexpd@a\@nil}
+\def\bxtb@with@args@fexpd@a\@nil#1\do{%
+ \bxtb@with@args@fexpd@b#1{}{}{}{}{}{}{}{}{}\do}
+\def\bxtb@with@args@fexpd@b#1#2#3#4#5#6#7#8#9{%
+ \edef\bxtb@with@args@fexpd@d{%
+ \noexpand\bxtb@with@args@expd@ppst@a
+ {{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}}%
+ \bxtb@with@args@fexpd@c}
+\def\bxtb@with@args@fexpd@c#1\do#{%
+ \bxtb@with@args@fexpd@d}
+\def\bxtb@with@args@expd@ppst@a#1{%
+ \def\bxtb@with@args@expd@do{\bxtb@do#1}%
+ \afterassignment\bxtb@with@args@expd@do
+ \def\bxtb@do##1##2##3##4##5##6##7##8##9}
+
+%%<+> \bxAssign <assignment>\relax
+% Do an assignment and checks if the assignment statement is
+% free of garbage and returns the result to \ifbxOk.
+\newcommand*\bxAssign{%
+ \bxOkfalse\afterassignment\bx@b@assign@a}
+\def\bx@b@assign@a#1\relax{%
+ \def\bx@tmpa{#1}\ifx\bx@tmpa\@empty\bxOktrue\fi}
+
+%%<+> \bxChompComma\CS
+\newcommand*\bxChompComma[1]{%
+ \expandafter\bxtb@chomp@comma@a#1\bxtb@chomp@comma@end#1}
+\def\bxtb@chomp@comma@a{%
+ \futurelet\bxtb@tmpa\bxtb@chomp@comma@b}
+\def\bxtb@chomp@comma@b{%
+ \bxIfx{,\bxtb@tmpa}{\bxtb@chomp@comma@c}%
+ {\bxtb@chomp@comma@skip}}
+\def\bxtb@chomp@comma@c#1\bxtb@chomp@comma@end#2{%
+ \expandafter\def\expandafter#2\expandafter{\@gobble#1}}
+\def\bxtb@chomp@comma@skip#1\bxtb@chomp@comma@end#2{}
+
+%% \bxProcessOptions[*]
+\newcommand*\bxProcessOptions{%
+ \@ifstar{\@tempswatrue\bxtb@process@options}%
+ {\@tempswafalse\bxtb@process@options}}
+\def\bxtb@process@options{%
+ \let\bxtb@org@@removeelement\@removeelement
+ \let\@removeelement\bxtb@@removeelement
+ \if@tempswa \ProcessOptions*%
+ \else \ProcessOptions\relax \fi
+ \let\@removeelement\bxtb@org@@removeelement}
+\def\bxtb@@removeelement#1#2#3{%
+ \bxtb@rem@elt@check#1\relax{}\bxtb@rem@elt@end
+ \if@tempswa \bxtb@org@@removeelement{#1}{#2}#3\fi}
+\def\bxtb@rem@elt@check#1#{\bxtb@rem@elt@check@a}
+\def\bxtb@rem@elt@check@a#1#2\bxtb@rem@elt@end{%
+ \ifstrempty{#2}{\@tempswatrue}{\@tempswafalse}}
+
+%--------------------------------------- character tokens
+
+%%<+> \ifbxHasUcsChar
+\newbool{bxHasUcsChar}
+\ifbxinOmega \bxHasUcsChartrue \fi
+\ifbxinXeTeX \bxHasUcsChartrue \fi
+\ifbxinLuaTeX \bxHasUcsChartrue \fi
+\ifbxinupTeX \bxHasUcsChartrue \fi
+\csletcs{ifbx@hx@bigchar}{ifbxHasUcsChar}
+
+%%<+> \ifbxHasAlUcsChar
+\newbool{bxHasAlUcsChar}
+\ifbxinOmega \bxHasAlUcsChartrue \fi
+\ifbxinXeTeX \bxHasAlUcsChartrue \fi
+\ifbxinLuaTeX \bxHasAlUcsChartrue \fi
+
+%%<+> \bxToChar{<num>}
+% Makes \bxRes expand to a single character token with character
+% code <num>. Note that in (u)pTeX this is valid only for 'alphabet'
+% characters.
+\newcommand*\bxToChar[1]{%
+ \bgroup \lccode`!=#1\relax
+ \lowercase{\xdef\bx@tch@g@temp{!}}%
+ \egroup \let\bxRes\bx@tch@g@temp}
+
+%%<+> \bxToJaChar{<num>}
+% Makes \bxRes expand to a single CJK character token with
+% character code <num> (in internal CJK encoding).
+\ifbxinpTeX
+ \newcommand*\bxToJaChar[1]{%
+ \bgroup \bxtb@forcecjktoken
+ \kansujichar\@ne=#1\relax
+ \xdef\bx@tch@g@temp{\kansuji\@ne}%
+ \egroup \let\bxRes\bx@tch@g@temp}
+ \ifdef{\forcecjktoken}%
+ {\let\bxtb@forcecjktoken\forcecjktoken}%
+ {\let\bxtb@forcecjktoken\relax}%
+\fi
+
+%%<+> \bxToUcsChar{<num>}
+% Makes \bxRes expand to a single character token with
+% character code <num> (in Unicode); valid for Unicode-aware
+% engines plus upTeX.
+\ifbxinupTeX
+\let\bxToUcsChar\bxToJaChar
+\else\ifbxHasAlUcsChar
+\let\bxToUcsChar\bxToChar
+\fi\fi
+
+%%<+> \bxToUcsCharDual{<jis>}{<ucs>}
+% Makes \bxRes expand to a single character token with the following
+% character code: (1) on pTeX, <jis> in internal CJK encoding; and
+% (2) on Unicode-aware engines, <ucs> in Unicode.
+\ifdef{\bxToUcsChar}
+ {\newcommand*\bxToUcsCharDual[2]{\bxToUcsChar{#2}}}%
+ {\newcommand*\bxToUcsCharDual[2]{\bxToJaChar{\jis#1}}}
+
+%%<+> \bxToUcsCharSeq{<jis>:<ucs>,...}
+\newcommand*\bxToUcsCharSeq[1]{%
+ \let\bx@tch@temp\@empty
+ \bxForEachIn#1\do{\bxtb@toucs@charseq@a##1\bxtb@end}%
+ \let\bxRes\bx@tch@temp}
+\def\bxtb@toucs@charseq@a#1:#2\bxtb@end{%
+ \bxToUcsCharDual{"#1}{"#2}%
+ \eappto\bx@tch@temp{\bxRes}}
+
+%--------------------------------------- number to hex-string
+% All public commands put their result in \bxHex.
+
+%%<+> \bxToHexTiny
+% For one-to-two-digit hex strings.
+\newcommand*\bxToHexTiny[1]{%
+ \chardef\bxHex=#1\relax
+ \expandafter\bx@hx@tohextiny@a\meaning\bxHex\@nil}
+\def\bx@hx@tohextiny@a#1"#2\@nil{\def\bxHex{#2}}
+
+%%<+> \bxToHexSmall
+% For one-to-three-digit hex strings.
+\newcommand*\bxToHexSmall[1]{%
+ \mathchardef\bxHex=#1\relax
+ \expandafter\bx@hx@tohexsmall@a\meaning\bxHex\@nil}
+\def\bx@hx@tohexsmall@a#1"#2\@nil{\def\bxHex{#2}}
+
+%%<+> \bxToHexTwo
+% For zero-padded two-digit hex strings.
+\newcommand*\bxToHexTwo[1]{%
+ \chardef\bxHex=#1\relax
+ \expandafter\bx@hx@tohextwo@a\meaning\bxHex"0\@nil}
+\def\bx@hx@tohextwo@a#1"#2#3#4#5\@nil{\bx@hx@tohextwo@b#2#3#4\@nil}
+\def\bx@hx@tohextwo@b#1"#2\@nil{\def\bxHex{#2#1}}
+
+%%<+> \bxToHexThree
+% For zero-padded three-digit hex strings.
+\newcommand*\bxToHexThree[1]{%
+ \mathchardef\bxHex=#1\relax
+ \expandafter\bx@hx@tohexthree@a\meaning\bxHex"00\@nil}
+\def\bx@hx@tohexthree@a#1"#2#3#4#5#6\@nil{\bx@hx@tohexthree@b#2#3#4#5\@nil}
+\def\bx@hx@tohexthree@b#1"#2\@nil{\def\bxHex{#2#1}}
+
+%%<+> \bxToHexFour
+% For zero-padded four-digit hex strings.
+\ifbx@hx@bigchar %----<*bigchar>
+\newcommand*\bxToHexFour[1]{%
+ \chardef\bxHex=#1\relax
+ \expandafter\bx@hx@tohexfour@a\meaning\bxHex"000\@nil}
+\def\bx@hx@tohexfour@a#1"#2#3#4#5#6#7\@nil{\bx@hx@tohexfour@b#2#3#4#5#6\@nil}
+\def\bx@hx@tohexfour@b#1"#2\@nil{\def\bxHex{#2#1}}
+\else %----<*!bigchar>
+\mathchardef\bx@hx@fzzz="4000
+\newcommand*\bxToHexFour[1]{\bgroup
+ \@tempcnta=#1\relax\@tempcntb\@tempcnta\divide\@tempcntb\bx@hx@fzzz
+ \ifcase\@tempcntb \advance\@tempcnta\bx@hx@fzzz \or \or
+ \advance\@tempcnta-\bx@hx@fzzz \or \advance\@tempcnta-"8000 \or
+ \@tempcnta\z@ \fi
+ \mathchardef\bx@hx@tmp\@tempcnta
+ \expandafter\bx@hx@tohexfour@a\meaning\bx@hx@tmp\@nil
+ \egroup \let\bxHex\bx@hx@gtmp}
+\def\bx@hx@tohexfour@a#1"#2#3\@nil{%
+ \expandafter\let\expandafter\bx@hx@tmp
+ \csname bxhx@X/\the\@tempcntb#2\endcsname
+ \ifx\bx@hx@tmp\relax \bxtb@err@oorng \global\let\bx@hx@gtmp\@empty
+ \else \xdef\bx@hx@gtmp{\bx@hx@tmp#3}\fi}
+\def\bx@hx@nxt#1#2#3{\bgroup\catcode`#3=12
+ \global\expandafter\def\csname bxhx@X/#1#2\endcsname{#3}\egroup}
+\@for\bx@hx@tmp:={040,051,062,073,144,155,166,177,248,259,26A,27B,%
+ 34C,35D,36E,37F}\do{\expandafter\bx@hx@nxt\bx@hx@tmp}
+\fi %----</bigchar>
+
+%%<+> \bxToHexFive
+%%<+> \bxToHexFiveX
+% For zero-padded five-digit hex strings.
+\newcommand*\bxToHexFive{\bx@tohexfive@aa\relax}
+\newcommand*\bxToHexFiveX{\bx@tohexfive@aa
+ {\ifnum\@tempcnta>\bx@hx@vdmax \@tempcnta=\bx@hx@vdmax\fi}}
+\ifbx@hx@bigchar %----<*bigchar>
+\chardef\bx@hx@vdmax="FFFFF
+\def\bx@tohexfive@aa#1#2{%
+ {\@tempcnta=#2\relax#1\global\chardef\bx@hx@gtmp=\@tempcnta}%
+ \expandafter\bx@hx@tohexfivex@a\meaning\bx@hx@gtmp"0000\@nil}
+\def\bx@hx@tohexfivex@a#1"#2#3#4#5#6#7#8\@nil{%
+ \bx@hx@tohexfivex@b#2#3#4#5#6#7\@nil}
+\def\bx@hx@tohexfivex@b#1"#2\@nil{\edef\bxHex{#2#1}}
+\else %----<*!bigchar>
+\edef\bx@hx@vdmax{"FFFFF\space}
+\def\bx@tohexfive@aa#1#2{%
+ \bgroup \@tempcnta=#2\relax#1%
+ \@tempcntb=\@tempcnta \divide\@tempcnta\bx@hx@m\relax
+ \bxToHexTwo\@tempcnta \let\bx@hx@tmp\bxHex
+ \multiply\@tempcnta-\bx@hx@m\advance\@tempcnta\@tempcntb\relax
+ \bxToHexThree\@tempcnta \xdef\bx@hx@gtmp{\bx@hx@tmp\bxHex}%
+ \egroup \let\bxHex\bx@hx@gtmp}
+\fi %----</bigchar>
+
+%%<+> \bxToHexEight
+% For zero-padded eight-digit hex strings.
+\newcommand*\bxToHexEight[1]{%
+ \bgroup \@tempcnta=#1\relax
+ \@tempcntb=\@tempcnta\divide\@tempcnta\p@\relax
+ \bxToHexFour\@tempcnta \let\bx@hx@tmp\bxHex
+ \multiply\@tempcnta-\p@\advance\@tempcnta\@tempcntb\relax
+ \bxToHexFour\@tempcnta \xdef\bx@hx@gtmp{\bx@hx@tmp\bxHex}%
+ \egroup \let\bxHex\bx@hx@gtmp}
+
+%%<+> \bxToHexUC
+% For zero-padded four-to-six-digit hex strings.
+\ifbx@hx@bigchar %----<*bigchar>
+\newcommand*\bxToHexUC[1]{%
+ \chardef\bxHex=#1\relax
+ \expandafter\bx@hx@tohexuc@a\meaning\bxHex"\@empty\@empty000\@nil}
+\def\bx@hx@tohexuc@a#1"#2#3#4#5#6#7#8#9\@nil{%
+ \bx@hx@tohexuc@b#2#3#4#5#6#7#8\@nil}
+\def\bx@hx@tohexuc@b#1"#2\@nil{\edef\bxHex{#2#1}}
+\else %----<*!bigchar>
+\mathchardef\bx@hx@m="1000
+\newcommand*\bxToHexUC[1]{%
+ \bgroup \@tempcnta=#1\relax
+ \@tempcntb=\@tempcnta \divide\@tempcnta\bx@hx@m\relax
+ \bxToHexSmall\@tempcnta \let\bx@hx@tmp\bxHex
+ \multiply\@tempcnta-\bx@hx@m\advance\@tempcnta\@tempcntb\relax
+ \bxToHexThree\@tempcnta \xdef\bx@hx@gtmp{\bx@hx@tmp\bxHex}%
+ \egroup \let\bxHex\bx@hx@gtmp}
+\fi %----</bigchar>
+
+%%<+> \bxToDecFour
+\newcommand*\bxToDecFour[1]{%
+ \expandafter\bx@hx@todecfour@a\number#1"000\@nil}
+\def\bx@hx@todecfour@a#1#2#3#4#5#6\@nil{\bx@hx@todecfour@b#1#2#3#4#5\@nil}
+\def\bx@hx@todecfour@b#1"#2\@nil{\def\bxHex{#2#1}}
+
+%%<+> \bxToDecFive
+\newcommand*\bxToDecFive[1]{%
+ \expandafter\bx@hx@todecfive@a\number#1"0000\@nil}
+\def\bx@hx@todecfive@a#1#2#3#4#5#6#7\@nil{\bx@hx@todecfive@b#1#2#3#4#5#6\@nil}
+\def\bx@hx@todecfive@b#1"#2\@nil{\def\bxHex{#2#1}}
+
+%--------------------------------------- case conversion
+
+%%<+> \bxToLower{<string>}
+% Sets to \bxRes <string> converted to lowercase.
+\newcommand*\bxToLower[1]{%
+ \edef\bxRes{\lowercase{\def\noexpand\bxRes{#1}}}\bxRes}
+
+%%<+> \bxToUpper{<string>}
+\newcommand*\bxToUpper[1]{%
+ \edef\bxRes{\uppercase{\def\noexpand\bxRes{#1}}}\bxRes}
+
+%--------------------------------------- document-level specials
+% Such specials must come before any typeset commands in DVI.
+
+%%<+> \bxDocumentSpecial{<text>}
+% Appends \special{<text>} to the list of 'document-level specials'.
+% A simple use of \AtBeginDvi will do in this case.
+\bxPreamble\newcommand*\bxDocumentSpecial[1]{%
+ \bxAtBeginDviX{\special{#1}}}
+
+%%%% \bxDocumentSpecialUrgent{<text>}
+% Similar to the above, but it demands that the given special be
+% placed as early as possible.
+\bxPreamble\newcommand*\bxDocumentSpecialUrgent[1]{%
+ \bx@docspec@urgent@init
+ \bx@prepend@box\bx@dsu@box{\special{#1}}}
+\def\bx@prepend@box#1#2{%
+ \global\setbox#1\vbox{\bxToYokoDir#2\unvbox#1}}
+\bxPreamble\def\bx@docspec@urgent@init{%
+ \newbox\bx@dsu@box
+ \AtBeginDocument{%
+ \ifx\AtBeginShipoutFirst\@undefined
+ \bx@prepend@box\@begindvibox{\unvbox\bx@dsu@box}%
+ \else % 'atbegshi' package is in use
+ {\toks@{\unvbox\bx@dsu@box}%
+ \toks\tw@\expandafter{\AtBegShi@HookFirst}%
+ \xdef\AtBegShi@HookFirst{\the\toks@\the\toks\tw@}}
+ \fi}%
+ \bxNullify\bx@docspec@urgent@init}
+
+%--------------------------------------- "shadow map" module
+
+%%<+> \bxUseShadowMap\CS{<map_tfm>}
+\bxPreamble\newcommand*\bxUseShadowMap[2]{%
+ \global\font#1=#2\relax}
+
+%%<+> \bxMap\CS
+\mathchardef\bx@m@cc=256
+\bxPreamble\newcommand*\bxMap[1]{%
+ \begingroup\count@\bxUcv\divide\count@\bx@m@cc
+ \chardef\bx@m@hb\count@ \multiply\count@\bx@m@cc
+ \advance\bxUcv-\count@ \setbox\z@\hbox{#1\bx@m@hb\char\bxUcv}%
+ \global\bxUcv\wd\z@ \endgroup}
+
+%--------------------------------------- module name
+
+%%<+> \bxSetModuleName{<name>}
+\newcommand*\bxSetModuleName[1]{%
+ \csxdef{bx@modname/\@currname.\@currext}{#1}}
+\let\bxtb@modname@default\bx@pkgname % name of this bundle
+
+%%<+> \bxModuleName
+\@ifpackageloaded{ifptex}{\undef\bxModuleName}{}
+\newcommand*\bxModuleName{%
+ \bxIfcsundefX{bx@modname/\@currname.\@currext}%
+ {\bxIfx{\@currname\@empty}{\bxtb@modname@default}%
+ {\@currname}}%
+ {\@nameuse{bx@modname/\@currname.\@currext}}}
+
+%%<+> \bxCurrentError / \bxCurrentWarning
+%%<+> \bxCurrentWarningNoLine / \bxCurrentInfo
+\newcommand*\bxCurrentError{\PackageError\bxModuleName}
+\newcommand*\bxCurrentWarning{\PackageWarning\bxModuleName}
+\newcommand*\bxCurrentWarningNoLine{%
+ \PackageWarningNoLine\bxModuleName}
+\newcommand*\bxCurrentInfo{\PackageInfo\bxModuleName}
+
+%--------------------------------------- keyval extension
+
+%%<+> \bxPrepareSetKeysSafe
+\bxPreamble\newcommand*\bxPrepareSetKeysSafe{%
+ \IfFileExists{xkeyval.sty}{\@tempswatrue}{\@tempswafalse}%
+ \if@tempswa
+ \RequirePackage{xkeyval}%
+ \def\bxtb@setkeys@safe##1##2{%
+ \setkeys*{##1}{##2}%
+% \bxDebug{\XKV@rm}%
+ \bxForEachIn\XKV@rm\do{\bxtb@setkeys@safe@a####1=\@nil}}%
+ \def\bxtb@setkeys@safe@a##1=##2\@nil{%
+ \bxtb@setkeys@safe@b{##1}}%
+ \else
+ \RequirePackage{keyval}%
+ \def\bxtb@setkeys@safe##1##2{%
+ \let\bxtb@KV@errx\KV@errx
+ \let\KV@errx\bxtb@setkeys@safe@a
+ \setkeys{##1}{##2}%
+ \let\KV@errx\bxtb@KV@errx}%
+ \def\bxtb@setkeys@safe@a##1{%
+ \expandafter\bxtb@setkeys@safe@b\expandafter{\@tempa}}%
+ \fi
+ \let\bxPrepareSetKeysSafe\relax}
+
+%%<+> \bxSetKeysSafe
+\newcommand*\bxSetKeysSafe[2]{%
+ \let\bxRestKeys\@empty
+ \bxtb@setkeys@safe{#1}{#2}%
+ \edef\bxRestKeys{\expandafter\@gobble\bxRestKeys\@empty}}
+\def\bxtb@setkeys@safe@b#1{%
+ \edef\bxRestKeys{\bxRestKeys,#1}}
+\def\bxtb@setkeys@safe#1#2{\bxCurrentError
+ {\string\bxSetKeysSafe\space not enabled}\@ehc}
+
+%--------------------------------------- driver handling
+
+%%<+> \bxDriverList
+\providecommand*\bxDriverList{dvips,dvipdfmx,dviout}
+
+%%<+> \bxDriverInherent
+\newcommand*\bxDriverInherent{}
+\bxIfinXeTeX{\def\bxDriverInherent{xetex}}{}
+\bxIfPdfOutput{\def\bxDriverInherent{pdftex}}{}
+
+%%<+> \bxDriver
+\newcommand*\bxDriver{%
+ \bxIfx{\bxDriverInherent\@empty}%
+ {\bxIfcsundefX{bx@driver/\@currname.\@currext}{default}%
+ {\@nameuse{bx@driver/\@currname.\@currext}}}%
+ {\bxDriverInherent}}
+
+%%<+> \bxSetDriver[<file>]{<driver>}
+\newcommand*\bxSetDriver{%
+ \@ifnextchar[%
+ {\bxtb@set@driver@a}{\bxtb@set@driver@a[\@currname.\@currext]}}
+\def\bxtb@set@driver@a[#1]#2{%
+ \bxIfx{\bxDriverInherent\@empty}{}{\bx@warn@ivdrv{#2}}%
+% \bxDebug{set driver for #1 to #2}%
+ \csxdef{bx@driver/#1}{#2}}
+\def\bx@warn@ivdrv#1{\bxCurrentWarningNoLine
+ {Driver specification '#1' ignored;\MessageBreak
+ driver is inherently set to '\bxDriverInherent'}}
+
+%%<+> \bxDriverSpecifiedFor{<file>}
+\newcommand*\bxDriverSpecifiedFor[1]{%
+ \bxCsuseX{bx@driver/#1}}
+
+%%<+> \bxDefineDDProcess{<name>}{<driver>}{<text>}
+%%<+> \bxDefineDDProcessDefault{<name>}{<text>}
+\newcommand*\bxDefineDDProcess[2]{%
+ \csdef{#1@@#2}}
+\newcommand*\bxDefineDDProcessDefault[1]{%
+ \csdef{#1@@default}}
+
+%%<+> \bxDoDDProcess{<name>}
+\bxNewrobustcmd*\bxDoDDProcess[1]{%
+ \edef\bxtb@drv{\bxDriver}%
+ \def\bxtb@do@ddproc@try{\bxtb@do@ddproc@try@a{#1}}%
+ \bxtb@do@ddproc@try\bxtb@drv
+ \bxCsuse{bxtb@do@ddproc@fb@@\bxtb@drv}%
+ \bxtb@do@ddproc@try{default}%
+ \bxtb@do@ddproc@try@end}
+\def\bxtb@do@ddproc@try@a#1#2{%
+% \bxDebug{try #1@@#2}%
+ \bxIfcsundefX{#1@@#2}{}%
+ {\csname#1@@#2\endcsname
+ \bxtb@do@ddproc@skip}}
+\def\bxtb@do@ddproc@skip#1\bxtb@do@ddproc@try@end{}
+\let\bxtb@do@ddproc@try@end\@empty
+\def\do{\noexpand\bxtb@do@ddproc@try}
+% fallback setup
+\edef\bxtb@do@ddproc@fb@@xetex{\do{dvipdfmx}}
+
+%%<+> \bxDeclareDriverOptions
+\newcommand*\bxDeclareDriverOptions{%
+ \bxForEachIn\bxDriverList\do{%
+ \DeclareOption{##1}{\bxSetDriver{##1}}}}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxbase/bxtoolbox-ja.def b/language/japanese/BX/bxbase/bxtoolbox-ja.def
new file mode 100644
index 0000000000..a522d6e29a
--- /dev/null
+++ b/language/japanese/BX/bxbase/bxtoolbox-ja.def
@@ -0,0 +1,186 @@
+%%
+%% This is file 'bxtoolbox-ja.def'.
+%%
+
+%% file declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{bxtoolbox-ja.def}[2017/05/29 v1.1]
+
+%% check intergrity
+\edef\bxtb@tmpa{\@currname.\@currext}\def\bxtb@tmpb{bxtoolbox-ja.def}
+\ifx\bxtb@tmpa\bxtb@tmpb\else
+ \PackageError\bxtb@pkgname{Illegal load sequence}\@eha
+\expandafter\endinput\fi\relax
+
+%% load submodule
+\providecommand*\bxRequireDefinition[1]{%
+ \def\bx@@def{def}\@onefilewithoptions{#1}[][]\bx@@def}
+\bxRequireDefinition{bxtoolbox-ext}
+
+%% code guards
+\edef\bxtb@j@restore@codes{%
+ \catcode34=\the\catcode34%
+ \catcode45=\the\catcode45%
+ \catcode46=\the\catcode46%
+ \catcode47=\the\catcode47%
+ \catcode58=\the\catcode58%
+ \catcode59=\the\catcode59%
+ \catcode63=\the\catcode63%
+ \catcode96=\the\catcode96%
+\relax}
+\catcode34=12 % <">
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode59=12 % <;>
+\catcode63=12 % <?>
+\catcode96=12 % <`>
+\AtEndOfPackage{%
+ \bxtb@j@restore@codes
+ \undef\bxtb@j@restore@codes}
+
+%--------------------------------------- pTeX something
+
+%% switch 'bxtb@pxbase@ok'
+\newbool{bxtb@pxbase@ok}
+\ifbxinpTeX
+ \IfFileExists{pxbase.sty}{%
+ \bxtb@pxbase@oktrue
+ }{}
+\fi
+
+%%<+> \bxToYokoDir
+% Switches to horizontal(yoko) writing direction
+% when using pTeX.
+\ifbxinpTeX %----<*pTeX>
+\newcommand*\bxToYokoDir{%
+ \bxIfydir{}{\yoko}}
+\else %----<*!pTeX>
+\newcommand*\bxToYokoDir{}
+\fi %----</pTeX>
+
+%%<+> \bxAtBeginDviX
+% \AtBeginDvi that is safe to use in pTeX.
+\newcommand\bxAtBeginDviX[1]{%
+ \global\setbox\@begindvibox\vbox{%
+ \bxToYokoDir\unvbox\@begindvibox#1}}
+
+%--------------------------------------- Japanese something
+
+%%<+> \bxGetZenkakuWidth
+% Assigns 1zw to \bxResDim
+\ifbxinpTeX
+ \bxNewrobustcmd*\bxGetZenkakuWidth{%
+ \bxResDim=1zw\relax}
+\else\ifbxHasAlUcsChar
+ \bxToUcsChar{"4E00}\let\bx@jan@onekanji\bxRes
+ \bxNewrobustcmd*\bxGetZenkakuWidth{%
+ \begingroup \setbox\z@\hbox{\bx@jan@onekanji}%
+ \xdef\bx@jan@g@next{\bxResDim=\the\wd\z@\relax}%
+ \endgroup \bx@jan@g@next}
+ \AtBeginDocument{%
+ \ifdef\jsZw{%
+ \bxRenewrobustcmd*\bxGetZenkakuWidth{%
+ \bxResDim=1\jsZw}}{}%
+ \ifdef\zw{%
+ \bxRenewrobustcmd*\bxGetZenkakuWidth{%
+ \bxResDim=1\zw}}{}%
+ }
+\fi\fi
+
+%%<+> \bxIfCharToken{<token>}{<yes>}{<no>}
+% Tests if the token is a character token with catcode 11 or 12.
+\newcommand*\bxIfCharToken[1]{%
+ \bxIfcat{\relax\noexpand#1}{\@secondoftwo}%
+ {\expandafter\bxtb@ifchartok@a\meaning#1\bxtb@end}}
+\def\bxtb@ifchartok@a#1{%
+ \bxIfcsundefX{bxtb@ICTF/#1}{\bxtb@ifchartok@false}%
+ {\bxtb@ifchartok@b#1}}
+\def\bxtb@ifchartok@b#1#2#3#4#5#6{%
+ \bxIfcsundefX{bxtb@ICT/#1#2#3#4#5#6}{\bxtb@ifchartok@false}%
+ {\bxtb@ifchartok@true}}
+\def\bxtb@ifchartok@true#1\bxtb@end#2#3{#2}
+\def\bxtb@ifchartok@false#1\bxtb@end#2#3{#3}
+\def\do#1#2:{\cslet{bxtb@ICTF/#1}{t}\cslet{bxtb@ICT/#1#2}{t}}
+\do thelet:% 11
+\do thecha:% 12
+\do kanjic:% 16-19(upTeX)
+
+%--------------------------------------- kanji-encoding something
+
+%%<+> \bxInternalJaEncoding
+\let\bxInternalJaEncoding=?
+\ifbxHasAlUcsChar
+ \let\bxInternalJaEncoding=u
+\else\ifbxinpdfTeX
+ \let\bxInternalJaEncoding=b
+\else\ifbxinpTeX
+ \ifnum\jis"2121="8140 \let\bxInternalJaEncoding=s\else
+ \ifnum\jis"2121="A1A1 \let\bxInternalJaEncoding=e\else
+ \ifnum\jis"2121="3000 \let\bxInternalJaEncoding=u\fi\fi\fi
+\fi\fi\fi
+
+%%<+> \bxInputJaEncoding
+\let\bxInputJaEncoding=?
+\ifbxHasAlUcsChar
+ \let\bxInputJaEncoding=u
+\else\ifbxinpdfTeX
+ \let\bxInputJaEncoding=b
+\else\ifbxtb@pxbase@ok
+ \@@input pxbsjc.def\relax
+ \def\bxtb@tmpb#1#2\@nil{%
+ \ifnum `#1=\jis"723F \let\bxInputJaEncoding=s\else
+ \ifnum `#1=\jis"693D \let\bxInputJaEncoding=e\else
+ \ifnum `#1=\jis"7379 \let\bxInputJaEncoding=u\fi\fi\fi}
+ \expandafter\bxtb@tmpb\bxtb@tmpa\@nil
+ \ifx e\bxInputJaEncoding
+ \@@input pxbsjc1.def\relax
+ \def\bxtb@tmpb#1#2\@nil{%
+ \ifnum `#1=\jis"723F \let\bxInputJaEncoding=a\fi}
+ \expandafter\bxtb@tmpb\bxtb@tmpa\@nil
+ \fi
+\fi\fi\fi
+
+%%<+> \bxOutputJaEncoding
+\let\bxOutputJaEncoding=?
+% if input is 'auto', output should not be equal to it,
+% but I don't know what to do then.
+\let\bxOutputJaEncoding=\bxInputJaEncoding
+
+%% \bxtb@jaencname
+\def\bxtb@jaencname#1#2{%
+ \ifx u#1#2\else
+ \ifx s#1sjis\else
+ \ifx e#1euc\else
+ \ifx a#1auto\else
+ \ifx b#1byte\else
+ (unknown)\fi\fi\fi\fi\fi}
+
+%%<*> \internaljaencodingname
+\newcommand*\internaljaencodingname{}
+\edef\internaljaencodingname{%
+ \bxtb@jaencname\bxInternalJaEncoding{unicode}}
+
+%%<*> \inputjaencodingname
+\newcommand*\inputjaencodingname{}
+\edef\inputjaencodingname{%
+ \bxtb@jaencname\bxInputJaEncoding{utf8}}
+
+%%<*> \outputjaencodingname
+\newcommand*\outputjaencodingname{}
+\edef\outputjaencodingname{%
+ \bxtb@jaencname\bxOutputJaEncoding{utf8}}
+
+%%<*> \infojenc
+\newcommand*\infojenc{%
+ \typeout{%
+ Kanji encoding:
+ input=\inputjaencodingname;
+ output=\outputjaencodingname;
+ internal=\internaljaencodingname}%
+}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxbase/bxtoolbox.def b/language/japanese/BX/bxbase/bxtoolbox.def
new file mode 100644
index 0000000000..07dae477f1
--- /dev/null
+++ b/language/japanese/BX/bxbase/bxtoolbox.def
@@ -0,0 +1,1078 @@
+%%
+%% This is file 'bxtoolbox.def'.
+%%
+
+%% file declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{bxtoolbox.def}[2017/05/29 v1.1]
+\providecommand*\bxtb@pkgname{BXtoolbox}% bundle name
+
+%% check intergrity
+\edef\bxtb@tmpa{\@currname.\@currext}\def\bxtb@tmpb{bxtoolbox.def}
+\ifx\bxtb@tmpa\bxtb@tmpb\else
+ \PackageError\bxtb@pkgname{Illegal load sequence}\@eha
+\expandafter\endinput\fi\relax
+
+%% code guards
+\edef\bxtb@restore@codes{%
+ \catcode33=\the\catcode33%
+ \catcode34=\the\catcode34%
+ \catcode39=\the\catcode39%
+ \catcode45=\the\catcode45%
+ \catcode46=\the\catcode46%
+ \catcode47=\the\catcode47%
+ \catcode58=\the\catcode58%
+ \catcode60=\the\catcode60%
+ \catcode62=\the\catcode62%
+ \catcode63=\the\catcode63%
+ \catcode96=\the\catcode96%
+\relax}
+\catcode33=12 % <!>
+\catcode34=12 % <">
+\catcode39=12 % <'>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode60=12 % <<>
+\catcode62=12 % <>>
+\catcode63=12 % <?>
+\catcode96=12 % <`>
+\AtEndOfPackage{%
+ \bxtb@restore@codes
+ \let\bxtb@restore@codes\@undefined}
+
+%--------------------------------------- 0. Prologue
+
+%% variables
+\newif\ifbxOk % general-purpose switch
+\let\bxRes\relax % result container
+
+%% unique tokens
+\def\bxtb@uniq{\bxtb@uniq@}
+
+%% error messages
+\def\bxtb@error{\PackageError\bxtb@pkgname}
+\def\bxtb@warn{\PackageWarningNoLine\bxtb@pkgname}
+
+%--------------------------------------- 1. Engine-independent stuffs
+
+%% \bxtb@@bs
+\let\bxtb@@bs\@backslashchar
+
+%%<+> \bxIfcsundefX{<csname>}{<T>}{<F>}
+\newcommand*\bxIfcsundefX{}
+\let\bxIfcsundefX\@ifundefined
+
+%%<+> \bxCsuseX{<csname>}
+\newcommand*\bxCsuseX[1]{%
+ \@ifundefined{#1}{}{\csname#1\endcsname}}
+
+%% \bxtb@listmake@do
+\def\bxtb@listmake@do{\let\do\bxtb@lm@do}
+\def\bxtb@lm@do{\noexpand\do\noexpand}
+\def\bxtb@csdo#1{\expandafter\do\csname#1\endcsname}
+
+%% \bxtb@letcs\CSA{<csnameB>}
+%% \bxtb@cslet{<csnameA>}\CSB
+%% \bxtb@csletcs{<csnameA>}{<csnameB>}
+% Same as \letcs, \cslet, \csletcs in etoolbox.
+% They are defined here since subsequent stuffs use them.
+\def\bxtb@letcs#1#2{%
+ \expandafter\let\expandafter#1\csname #2\endcsname}
+\def\bxtb@cslet#1#2{%
+ \expandafter\let\csname #1\endcsname#2}
+\def\bxtb@csletcs#1#2{%
+ \expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname}
+
+%% \bxtb@ifprimitive\CS{<T>}{<F>}
+% Core of \bxIfPrimitive.
+\def\bxtb@ifprimitive#1{%
+ \edef\bxtb@tmpa{\string#1}\edef\bxtb@tmpb{\meaning#1}%
+ \ifx\bxtb@tmpa\bxtb@tmpb \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo \fi}
+
+%% \bxtb@ifstrempty{<str>}{<T>}{<F>}
+% Core of \ifstrempty.
+\def\bxtb@ifstrempty#1{%
+ \ifx\bxtb@empty@uniq#1\bxtb@empty@uniq
+ \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo \fi}
+\def\bxtb@empty@uniq{\bxtb@empty@uniq@}
+
+%%<+> \ifbxineTeX (if-token)
+%%<+> \bxIfineTeX{<T>}{<F>}
+%%<+> \ifbxinpdfTeX / \ifbxinLuaTeX / \ifbxinOmega / \ifbxinAleph
+%%<+> \ifbxinXeTeX / \ifbxinpTeX / \ifbxinupTeX / \ifbxinjTeX
+%%<+> \bxIfinpdfTeX / \bxIfinLuaTeX / \bxIfinOmega / \bxIfinAleph
+%%<+> \bxIfinXeTeX / \bxIfinpTeX / \bxIfinupTeX / \bxIfinjTeX
+%% Engine check.
+\def\bxtb@do#1#2{%
+ \bxtb@ifprimitive#2%
+ {\let\bxtb@tmpa\@firstoftwo}{\let\bxtb@tmpa\@secondoftwo}%
+ \bxtb@cslet{bxIfin#1}\bxtb@tmpa
+ \bxtb@csletcs{ifbxin#1}{if\bxtb@tmpa{true}{false}}}
+\bxtb@do{eTeX}{\eTeXversion}
+\bxtb@do{pdfTeX}{\pdftexversion}
+\bxtb@do{LuaTeX}{\luatexversion}
+\bxtb@do{Omega}{\OmegaVersion}
+\bxtb@do{Aleph}{\AlephVersion}
+\bxtb@do{XeTeX}{\XeTeXversion}
+\bxtb@do{pTeX}{\kanjiskip}
+\bxtb@do{upTeX}{\enablecjktoken}
+\bxtb@do{jTeX}{\jintercharskip}
+
+%%<+> \bxPreamble\CSX[*]\CSY
+% Prefix used for preamble-only commands.
+% \CSX can be \def, \newcommand, \DeclareRobustCommand, etc.
+\@onlypreamble\bxPreamble
+\newcommand*\bxPreamble[2]{%
+ \ifx *#2\def\bxtb@args{{#1*}}%
+ \else \def\bxtb@args{#1#2}%
+ \fi \expandafter\bxtb@preamble@a\bxtb@args}
+\@onlypreamble\bxtb@preamble@a
+\def\bxtb@preamble@a#1#2{%
+ \@onlypreamble#2#1#2}
+
+%%<+> \bxConstBool
+\newcommand*\bxConstIfToken[2]{%
+ \bxtb@cslet{if#1}{if#2}}
+
+%% \bxtb@skip@new@cmd...{<text>}
+% Gobbles a following whole macro definition sentence.
+\def\bxtb@skip@new@cmd#1#{\@gobble}
+
+%% \bxtb@name@cs\CS
+\def\bxtb@name@cs{%
+ \expandafter\bxtb@name@cs@a\string\$\@gobble\@empty\@nil}
+\def\bxtb@name@cs@a#1#2#3#4\@nil#5{%
+ \expandafter#3\string#5}
+
+%% \bxtb@let@name\CSX\CSY
+\def\bxtb@let@name#1#2{%
+ \edef#1{\bxtb@name@cs#2}}
+
+%%<+> \bxIf{<test>}{<T>}{<F>}
+%%<+> \bxIfcat{<test>}{<T>}{<F>}
+%%<+> \bxIfx{<test>}{<T>}{<F>}
+%%<+> \bxIfdim{<test>}{<T>}{<F>}
+%%<+> \bxIfnum{<test>}{<T>}{<F>}
+% Primitive if-tests rendered in LaTeX format.
+\let\bxtb@bumper\noindent % primitive other than \relax
+\bxPreamble\def\bxtb@defifmacro@noarg#1#2#3{%
+ \@gobble{\if}% if-match hack
+ \def#1{#2\expandafter\@firstoftwo
+ \else\expandafter\@secondoftwo\fi}}
+\bxPreamble\def\bxtb@defifmacro#1#2#3{%
+ \@gobble{\if}% if-match hack
+ \def#1##1{#2##1\expandafter\@firstoftwo
+ \else\expandafter\@secondoftwo\fi}}
+\bxPreamble\def\bxtb@defifmacro@val#1#2#3{%
+ \@gobble{\if}% if-match hack
+ \def#1##1{\expandafter\@gobble
+ #2##1\bxtb@bumper\expandafter\@firstoftwo
+ \else \bxtb@bumper\expandafter\@secondoftwo \fi}}
+\bxtb@defifmacro\bxIf\if\fi
+\bxtb@defifmacro\bxIfcat\ifcat\fi
+\bxtb@defifmacro\bxIfx\ifx\fi
+\bxtb@defifmacro@val\bxIfdim\ifdim\fi
+\bxtb@defifmacro@val\bxIfnum\ifnum\fi
+
+%%<+> \bxIfInMovingArg{<T>}{<F>}
+% Moving argument check. Note that it actually expands to <T> or
+% <F> prepended with some unexpandable garbles with no effect.
+% For that reason, this macro is not suitable for switching
+% implementation. Instead it is intended for error check for
+% use in moving arguments.
+\long\def\bxIfInMovingArg#1#2{%
+ \let\bxtb@ifinmovarg@a\bxtb@ifinmovarg@a\bxtb@ifinmovarg@c{#1}%
+ #2\bxtb@ifinmovarg@end}
+\def\bxtb@ifinmovarg@a#1{%
+ \bxtb@ifinmovarg@dummy\relax \bxtb@ifinmovarg@b}
+\def\bxtb@ifinmovarg@b#1#2#3\bxtb@ifinmovarg@end{#2}
+\def\bxtb@ifinmovarg@c#1#2\bxtb@ifinmovarg@end{#2}
+\let\bxtb@ifinmovarg@end\@empty
+\let\bxtb@ifinmovarg@dummy\relax
+
+%%<+> \bxMessageToken{<str>}{<text>}
+% Executes <text> where #1 is replaced by control sequence \<str>.
+% The meaning of \<str> is unchanged.
+% (In <text> # must be doubled.)
+\def\bxMessageToken#1{%
+ \begingroup
+ \xdef\bxtb@g@tmpa{\noexpand\bxtb@tmpa
+ \expandafter\noexpand\csname #1\endcsname}%
+ \endgroup
+ \afterassignment\bxtb@g@tmpa \long\def\bxtb@tmpa##1}
+
+%%<+> \bxCheckForMovingArg{<text>}
+% When in moving arguments, it raises an error in the form of
+% undefined conrol sequence; otherwise expands to <text>.
+%%<+> \bxCheckForMovingArgForTest{\SOMETEST{<arg>}}{<T>}{<F>}
+% When in moving arguments, it raises an error in the form of
+% undefined conrol sequence and expands to <F>; otherwise
+% it expands to \SOMETEST{<arg>}{<T>}{<F>}.
+\bxMessageToken{ ERROR: Use in wrong place!}{%
+ \def\bxCheckForMovingArg{\bxIfInMovingArg{#1}}%
+ \def\bxCheckForMovingArgForTest{%
+ \bxIfInMovingArg{#1\@secondoftwo}}%
+}
+
+%% \bxtb@ifnewdefok\CS{<T>}{<F>}
+%% \bxtb@ifrenewdefok\CS{<T>}{<F>}
+%% \bxtb@ifprovidedefok\CS{<T>}{<F>}
+\def\bxtb@ifnewdefok#1{%
+ \newcommand#1{\bxtb@uniq}\bxtb@ifnewdefok@a#1}
+\def\bxtb@ifrenewdefok#1{% <F> is never executed
+ \renewcommand#1{\bxtb@uniq}\let#1\@undefined \@firstoftwo}
+\def\bxtb@ifprovidedefok#1{%
+ \providecommand#1{\bxtb@uniq}\bxtb@ifnewdefok@a#1}
+\def\bxtb@ifnewdefok@a#1{%
+ \ifx#1\bxtb@ifdefok@probe
+ \let#1\@undefined \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi}
+\long\def\bxtb@ifdefok@probe{\bxtb@uniq}
+
+%% \bxtb@detokenize{<text>}
+% Resource consuming version of \detokenize ;)
+%% \bxtb@stringify{<text>}
+% Expands <text> and then detokenizes the result.
+\def\bxtb@detokenize{%
+ \romannumeral-`a\bxtb@detok@pre@a\bxtb@detok@lop@a}
+\def\bxtb@stringify{%
+ \romannumeral-`a\bxtb@detok@pre@a\bxtb@edetok@lop@a}
+\def\bxtb@detok@pre@a#1#2{%
+ \expandafter\bxtb@detok@ppst@a
+ \csname\bxtb@nonce@pfx"#1#2\bxtb@detok@enda
+ {} \bxtb@detok@endb\endcsname}
+\def\bxtb@detok@enda{\bxtb@detok@enda@}
+\def\bxtb@detok@endb{\bxtb@detok@endb@}
+\begingroup
+ \catcode`\(=12 \lccode`\(=`\{ \catcode`\)=12 \lccode`\)=`\}
+ \lowercase{\gdef\bxtb@detok@brc@a#1#2{(#1#2)}}
+\endgroup
+\def\bxtb@detok@lop@a#1 #2\bxtb@detok@endb{%
+ \bxtb@ifstrempty{#1}%
+ { \bxtb@detok@lop@a}{\bxtb@detok@lop@b#1 }%
+ #2\bxtb@detok@endb}
+\def\bxtb@detok@lop@b#1#{%
+ \bxtb@ifstrempty{#1}%
+ {\bxtb@detok@brc@a\bxtb@detok@lop@a}{\bxtb@detok@lop@c#1}}
+\def\bxtb@detok@lop@c#1{%
+ \bxIfx{#1\bxtb@detok@enda}{\bxtb@detok@pst@a}{%
+ \bxIfcat{\noexpand#1\relax}{\bxtb@format@cs#1}{\string#1}%
+ \bxtb@detok@lop@a}}
+\def\bxtb@edetok@lop@a#1 #2\bxtb@detok@endb{%
+ \bxtb@ifstrempty{#1}%
+ { \bxtb@edetok@lop@a}{\bxtb@edetok@lop@b#1 }%
+ #2\bxtb@detok@endb}
+\def\bxtb@edetok@lop@b#1#{%
+ \bxtb@ifstrempty{#1}%
+ {\bxtb@detok@brc@a\bxtb@edetok@lop@a}{\bxtb@edetok@lop@c#1}}
+\def\bxtb@edetok@lop@c#1{%
+ \bxIfx{#1\bxtb@detok@enda}{\bxtb@detok@pst@a}%
+ {\bxtb@edetok@lop@d#1}}
+\def\bxtb@edetok@lop@d#1{%
+ \bxtb@ifdefmacro#1{\expandafter\bxtb@edetok@lop@a#1}%
+ {\expandafter\bxtb@edetok@lop@e\romannumeral-`\a#1}}
+\def\bxtb@edetok@lop@e#1{%
+ \bxIfcat{\noexpand#1\relax}{\bxtb@format@cs#1}{\string#1}%
+ \bxtb@edetok@lop@a}
+\def\bxtb@detok@pst@a#1\bxtb@detok@endb{}
+\def\bxtb@detok@ppst@a#1{%
+ \expandafter\bxtb@detok@ppst@b\string#1\@nil}
+\def\bxtb@detok@ppst@b#1#2"#3\@nil{\space#3}
+
+%% \bxtb@format@cs\CS
+% Detokenizes control sequence \CS with an optional space
+% appended just in \write.
+\def\bxtb@format@cs{%
+ \expandafter\bxtb@format@cs@a\string\$%
+ \bxtb@format@cs@c\bxtb@format@cs@b\@nil}
+\def\bxtb@format@cs@a#1#2#3#4\@nil#5{%
+ \expandafter#3\string#5\@nil}
+\def\bxtb@format@cs@b{\bxtb@format@cs@c\@empty}
+\def\bxtb@format@cs@c#1#2#3\@nil{%
+ #1#2#3\ifcat_#3_\ifnum\catcode`#2=11 \space \fi\else\space\fi}
+
+%% \bxtb@return@true
+\def\bxtb@return@true#1\bxtb@esac{%
+ \fi\@firstoftwo}
+\def\bxtb@return@false#1\bxtb@esac{%
+ \fi\@secondoftwo}
+
+
+%--------------------------------------- 2. Dummy if-token definitions.
+
+%% \bxtb@make@dummy@if@setter
+\bxPreamble\def\bxtb@make@dummy@if@setter#1#2{%
+ \begingroup
+ \def\bxtb@bval{#1}%
+ \@for\bxtb@bname:=#2\do{\bxtb@make@dummy@if@setter@a}%
+ \endgroup}
+\bxPreamble\def\bxtb@make@dummy@if@setter@a{%
+ \expandafter\ifx\csname if\bxtb@bname\endcsname\relax
+ \bxtb@make@dummy@if@setter@appto\bxtb@set@dummy@ifs{%
+ \let \expandafter\noexpand\csname if\bxtb@bname\endcsname
+ \expandafter\noexpand\csname if\bxtb@bval\endcsname}%
+ \bxtb@make@dummy@if@setter@appto\bxtb@unset@dummy@ifs{%
+ \let \expandafter\noexpand\csname if\bxtb@bname\endcsname
+ \noexpand\@undefined}%
+ \fi}
+\bxPreamble\def\bxtb@make@dummy@if@setter@appto#1#2{%
+ \edef\bxtb@tmpx{#2}%
+ \expandafter\g@addto@macro\expandafter#1%
+ \expandafter{\bxtb@tmpx}}
+\let\bxtb@set@dummy@ifs\@empty
+\let\bxtb@unset@dummy@ifs\@empty
+\bxtb@make@dummy@if@setter{false}{%
+ % e-TeX if-tokens
+ fontchar,defined,csname,incsname,%
+ % pdfTeX if-tokens
+ pdfprimitive,pdfabsdim,pdfabsnum,%
+ % LuaTeX if-tokens
+ absdim,absnum,primitive,%
+ % pTeX if-tokens
+ tdir}
+\bxtb@make@dummy@if@setter{true}{%
+ % pTeX if-tokens
+ ydir}
+
+%%<+> \bxSetDummyIfs
+%%<+> \bxUnsetDummyIfs
+\newcommand*\bxSetDummyIfs{}
+\let\bxSetDummyIfs\bxtb@set@dummy@ifs
+\newcommand*\bxUnsetDummyIfs{}
+\let\bxUnsetDummyIfs\bxtb@unset@dummy@ifs
+
+%% dummy-ifs are enabled in this file
+\bxSetDummyIfs
+
+\bxPreamble\def\bxtb@defifmacro@engdep#1{%
+ \expandafter\bxtb@defifmacro@engdep@a
+ \csname bxIf#1\expandafter\endcsname
+ \csname if#1\expandafter\endcsname
+ \csname iftrue\expandafter\endcsname\csname iffalse\endcsname}
+\bxPreamble\def\bxtb@defifmacro@engdep@a#1#2#3#4{%
+ % be careful that #2,#3,#4 are \if-tokens
+ \bxtb@defifmacro@noarg#1#2\relax \chardef\bxtb@tmpa\z@
+ \ifx#2#3\chardef\bxtb@tmpa\@ne \fi
+ \ifx#2#4\chardef\bxtb@tmpa\tw@ \fi
+ \ifcase\bxtb@tmpa\relax
+ \or \let#1\@firstoftwo
+ \or \let#1\@secondoftwo
+ \fi}
+\bxPreamble\def\bxtb@make@engdep@test#1{%
+ \@for\bxtb@bname:=#1\do{%
+ \bxtb@defifmacro@engdep\bxtb@bname}}
+% this must be done in \bxSetDummyIfs effective
+\bxtb@make@engdep@test{%
+ ydir,tdir%
+}
+
+%--------------------------------------- 3. Macrodef prefix operations
+
+%% \bxtb@all@prefix
+\def\bxtb@all@prefix{\do{protected}\do{long}\do{outer}}
+
+%% \bxtb@set@prefix{<name>}
+%% \bxtb@unset@prefix{<name>}
+%% \bxtb@unset@all@prefix{<name>}
+\def\bxtb@set@prefix#1{\bxtb@cslet{bxtb@PFX/#1}{T}}
+\def\bxtb@unset@prefix#1{\bxtb@cslet{bxtb@PFX/#1}{F}}
+\def\do{\noexpand\bxtb@unset@prefix}
+\edef\bxtb@unset@all@prefix{\bxtb@all@prefix}
+
+%% \bxtb@clear@prefix
+\def\bxtb@clear@prefix{%
+ \def\bxtb@savepfx@dummy{}\let\bxtb@savepfx@dummy\relax}
+
+%% \bxtb@render@prefix
+\def\do{\noexpand\bxtb@render@prefix@a}
+\edef\bxtb@render@prefix{\bxtb@all@prefix}
+\def\bxtb@render@prefix@a#1{%
+ \bxIf{\csname bxtb@PFX/#1\endcsname T}{\csname #1\endcsname}{}}
+
+%% \bxtb@save@prefix
+\def\bxtb@save@prefix{%
+ \def\bxtb@savepfx@dummy{}% prefixes applied to this definition
+ \bxtb@unset@all@prefix
+ \begingroup \escapechar`\\
+ \expandafter\bxtb@savepfx@prs@a\meaning\bxtb@savepfx@dummy\@nil
+ %\endgroup already done
+}
+
+%% some internal stuffs
+\begingroup \escapechar\m@ne
+\xdef\bxtb@g@args{{\string\macro:}{\space}{\string\\}}
+\endgroup
+\def\bxtb@do#1#2#3{%
+ \def\bxtb@savepfx@prs@a##1#1##2\@nil{%
+ \endgroup
+ \let\bxtb@savepfx@dummy\relax
+ \bxIfcat{_##1_}{}{\bxtb@savepfx@prs@b##1\@nil}}
+ \def\bxtb@savepfx@prs@b##1##2#2##3\@nil{%
+ \bxtb@savepfx@prs@c##2#3#3}
+ \def\bxtb@savepfx@prs@c##1#3{%
+ \bxIfcat{_##1_}{}%
+ {\bxtb@set@prefix{##1}\bxtb@savepfx@prs@c}}
+ \def\bxtb@ifdefmacro##1{%
+ \expandafter\bxtb@ifdefmacro@a\meaning##1#1\@nil}
+ \def\bxtb@ifdefmacro@a##1#1##2\@nil##3##4{%
+ \bxIfcat{_##2_}{##4}{##3}}
+}
+\expandafter\bxtb@do\bxtb@g@args
+
+%--------------------------------------- 4. pdfTeX primitives
+
+%%<+> \ifbxPrimitive
+% The primitive equivalent to pdfTeX's \ifpdfprimitive; if the
+% primitive is not available, this is \let'd to \iffalse.
+%%<+> \bxIfHasIfPrimitive{<T>}{<F>}
+% Whether \ifbxPrimitive has a valid definition.
+\bxtb@cslet{ifbxPrimitive}\@undefined
+\expandafter\bxtb@ifprimitive\csname ifpdfprimitive\endcsname{%then
+ \let\bxIfHasIfPrimitive\@firstoftwo
+ \bxtb@csletcs{ifbxPrimitive}{ifpdfprimitive}%
+}{%else
+ \expandafter\bxtb@ifprimitive\csname ifprimitive\endcsname{%then
+ \let\bxIfHasIfPrimitive\@firstoftwo
+ \bxtb@csletcs{ifbxPrimitive}{ifprimitive}%
+ }{%else
+ \let\bxIfHasIfPrimitive\@secondoftwo
+ \bxtb@csletcs{ifbxPrimitive}{iffalse}%
+}}
+
+%%<+> \bxPrimitive
+% The primitive equivalent to pdfTeX's \pdfprimitive; if the
+% primitive is not available, this is defined to be empty.
+\bxtb@ifprimitive\pdfprimitive{%then
+ \let\bxPrimitive\pdfprimitive
+}{%else
+ \bxtb@ifprimitive\primitive{%then
+ \let\bxPrimitive\primitive
+ }{%else
+ \let\bxPrimitive\@empty
+}}
+
+%%<+> \bxStrcmp
+% The primitive equivalent to pdfTeX's \pdfstrcmp; if the
+% primitive is not available, this is left undefined.
+\let\bxStrcmp\@undefined
+\bxtb@ifprimitive\pdfstrcmp{%then
+ \let\bxStrcmp\pdfstrcmp
+}{%else
+ \bxtb@ifprimitive\strcmp{%then
+ \let\bxStrcmp\strcmp
+ }{%else
+}}
+\ifbxinLuaTeX %----<*LuaTeX>
+ \ifdefined\luatexluaescapestring
+ \unless\ifdefined\bxStrcmp
+ \directlua0{%
+ function bxtoolbox_strcmp(A, B)
+ if A == B then tex.write("0")
+ elseif A < B then tex.write("-1")
+ else tex.write("1")
+ end
+ end
+ }
+ \long\def\bxStrcmp#1#2{\directlua0{%
+ bxtoolbox_strcmp("\luatexluaescapestring{#1}",
+ "\luatexluaescapestring{#2}")
+ }}
+ \fi
+ \fi
+\fi %----</LuaTeX>
+
+%--------------------------------------- 5. non etoolbox stuffs
+
+%%<+> \bxRobustdef\CS
+%%<+> \bxRobustgdef\CS
+%%<+> \bxRobustedef\CS
+%%<+> \bxRobustxdef\CS
+\ifbxineTeX %<*etex>
+\def\bxRobustdef{\protected\def}
+\def\bxRobustgdef{\protected\gdef}
+\def\bxRobustedef{\protected\edef}
+\def\bxRobustxdef{\protected\xdef}
+\else %<*!etex>
+\def\bxRobustdef{\bxtb@robustdef\def}
+\def\bxRobustgdef{\bxtb@robustdef\gdef}
+\def\bxRobustedef{\bxtb@robustdef\edef}
+\def\bxRobustxdef{\bxtb@robustdef\xdef}
+\def\bxtb@robustdef#1#2{%
+ \bxtb@save@prefix
+ \let#2\@undefined \DeclareRobustCommand*#2{}%
+ \bxtb@let@name\bxtb@tmpb#2%
+ \bxtb@render@prefix
+ \expandafter#1\csname \bxtb@tmpb\space \endcsname}
+\fi %</etex>
+
+%% \bxtb@robustlet\CSA\CSB
+\ifbxineTeX %<*etex>
+\def\bxtb@robustlet#1#2{%
+ \protected\def#1{#2}}
+\else %<*!etex>
+\def\bxtb@robustlet#1{%
+ \expandafter\bxtb@robustlet@a
+ \csname\bxtb@name@cs#1\space\endcsname#1}
+\def\bxtb@robustlet@a#1#2#3{%
+ \DeclareRobustCommand*#2{}\let#1#3}
+\fi
+
+%%<+> \bxIfPdfOutput{<T>}{<F>}
+%%<+> \bxIfPdfOutputNow{<T>}{<F>}
+\newcommand*\bxIfPdfOutputNow{%
+ \ifx\pdfoutput\@undefined \bxtb@return@false \fi
+ \ifx\pdfoutput\relax \bxtb@return@false \fi
+ \ifnum\pdfoutput>\z@ \bxtb@return@true
+ \else \bxtb@return@false \fi
+ \bxtb@esac}
+\newcommand*\bxIfPdfOutput{}
+\bxIfPdfOutputNow
+{\let\bxIfPdfOutput\@firstoftwo
+ \bxtb@letcs\ifbxPdfOutput{iftrue}}%
+{\let\bxIfPdfOutput\@secondoftwo
+ \bxtb@letcs\ifbxPdfOutput{iffalse}}%
+
+%%<+> \bxIfPrimitive\CS
+%%<+> \bxCSIfPrimitive{<csname>}
+\newcommand*\bxIfPrimitive{}
+\bxtb@robustlet\bxIfPrimitive\bxtb@ifprimitive
+\def\bxtb@ifcsprimitive@a#1{%
+ \expandafter\bxIfPrimitive\csname #1\endcsname}
+\ifbxineTeX %<*etex>
+\def\bxIfCsPrimitive#1{%
+ \unless\ifcsname#1\endcsname \let\bxtb@tmpx\@secondoftwo
+ \else \def\bxtb@tmpx{\bxtb@ifcsprimitive@a{#1}}%
+ \fi \bxtb@tmpx}
+\else %<*!etex>
+\def\bxIfCsPrimitive#1{%
+ \begingroup\expandafter\endgroup
+ \expandafter\ifx\csname #1\endcsname\@undefined
+ \let\bxtb@tmpx\@secondoftwo
+ \else \def\bxtb@tmpx{\bxtb@ifcsprimitive@a{#1}}%
+ \fi \bxtb@tmpx}
+\fi %</etex>
+% use \ifbxPrimitive if available
+\bxIfHasIfPrimitive{%
+\bxtb@defifmacro\bxIfPrimitive\ifbxPrimitive\fi
+}{}
+
+%%<+> \bxIfPrimitiveX\CS
+%% TODO: for e-TeX, TeX
+% use \ifpdfprimitive if available
+\bxIfHasIfPrimitive\@tempswatrue\@tempswafalse
+\if@tempswa %----
+\let\bxIfPrimitiveX\bxIfPrimitive
+\else %----
+\def\bxIfPrimitiveX#1{%
+ \bxIfcat{\noexpand#1\relax}%
+ {\bxtb@ifdefmacro#1{\@secondoftwo}{\bxtb@ifprimitive@x@a#1}}%
+ {\@secondoftwo}}
+\def\bxtb@ifprimitive@x@a#1{%
+ \expandafter\bxtb@ifprimitive@x@b\meaning#1\bxtb@cmp@endb#1}
+\def\bxtb@ifprimitive@x@b#1\bxtb@cmp@endb#2{%
+ \expandafter\bxtb@ifprimitive@x@c\string#1\@bxtb@cmp@enda
+ #2\bxtb@cmp@endb}
+\def\bxtb@do#1{%
+ \def\bxtb@ifprimitive@x@b##1\bxtb@cmp@endb##2{%
+ \expandafter\bxtb@ifprimitive@x@c\string##1\@bxtb@cmp@enda
+ ##2\bxtb@cmp@endb#1\@nil}}
+\def\bxtb@ifprimitive@x@c#1 #2\@nil{%
+ \bxtb@ifstrempty{#2}{\bxtb@ifeq@pstr#1}%
+ {\@secondoftwo}}
+\fi %----
+
+%%<+> \bxIfExpToEqual{<text1>}{<text2>}{<T>}{<F>}
+\newcommand*\bxIfExpToEqual{}
+\bxRobustdef\bxIfExpToEqual#1#2{%
+ \bxCheckForMovingArgForTest{%
+ \bxtb@edef@detokenized\bxtb@tmpx{#1}%
+ \bxtb@edef@detokenized\bxtb@tmpy{#2}%
+ \bxIfx{\bxtb@tmpx\bxtb@tmpy}}}
+% use \bxStrcmp if available
+\ifx\bxStrcmp\@undefined\else
+\def\bxIfExpToEqual#1#2{%
+ \bxIfnum{\bxStrcmp{#1}{#2}=\z@}}
+\fi
+
+%%<+> \bxIfExpToEqualX{<text1>}{<text2>}{<T>}{<F>}
+\def\bxIfExpToEqualX#1#2{%
+ \bxtb@ifeq@text#1\bxtb@cmp@enda#2\bxtb@cmp@endb}
+% use \bxStrcmp if available
+\ifx\bxStrcmp\@undefined\else
+\let\bxIfExpToEqualX\bxIfExpToEqual
+\fi
+
+%% \bxtb@ifstrequal@pdftex{<str1>}{<str2>}{<T>}{<F>}
+% a version of \ifstrequal using \bxStrcmp
+\ifx\bxStrcmp\@undefined\else
+\def\bxtb@ifstrequal@pdftex#1#2{%
+ \bxIfnum{\bxStrcmp{\detokenize{#1}}{\detokenize{#2}}=\z@}}
+\AtEndOfPackage{% override the definition in etoolbox
+ \let\bxIfstrequal\bxtb@ifstrequal@pdftex}
+\fi
+
+%% \bxIfstrequalX{<str1>}{<str2>}{<T>}{<F>}
+\newcommand*\bxIfstrequalX{}
+\def\bxIfstrequalX#1#2{%
+ \bxtb@ifeq@str#1\bxtb@cmp@enda#2\bxtb@cmp@endb}
+% use \bxStrcmp if available
+\ifx\bxStrcmp\@undefined\else
+\let\bxIfstrequalX\bxtb@ifstrequal@pdftex
+\fi
+
+%% \bxtb@nonce@pfx
+\def\bxtb@nonce@pfx{bxtb@?@\string\$}
+
+%%<+> \bxDetokenize{<text>}
+\bxIfineTeX
+{\let\bxDetokenize\detokenize}
+{\let\bxDetokenize\bxtb@detokenize}
+%%<+> \bxStringify{<text>}
+\let\bxStringify\bxtb@stringify
+
+%% \bxtb@def@detokenized\CS{<text>}
+%% \bxtb@edef@detokenized\CS{<text>}
+\ifbxineTeX %<*etex>
+\def\bxtb@def@detokenized#1#2{%
+ \edef#1{\detokenize{#2}}}
+\def\bxtb@edef@detokenized#1#2{%
+ \edef\bxtb@args{\noexpand#1{#2}}%
+ \expandafter\bxtb@def@detokenized\bxtb@args}
+\else %<*!etex>
+\def\bxtb@def@detokenized{\bxtb@defdetok@a\def}
+\def\bxtb@edef@detokenized{\bxtb@defdetok@a\edef}
+\def\bxtb@defdetok@a#1#2#3{%
+ #1\bxtb@tmpa{#3}%
+ \expandafter\bxtb@defdetok@b\meaning\bxtb@tmpa\@nil#2}
+\def\bxtb@defdetok@b#1>#2\@nil#3{\def#3{#2}}
+\fi %</etex>
+
+%% \bxtb@ifeq@text
+\def\bxtb@ifeq@text#1\bxtb@cmp@enda#2\bxtb@cmp@endb{%
+ \expandafter\expandafter\expandafter\bxtb@ifeqtx@a
+ \bxtb@stringify@ss{#2}\bxtb@cmp@endb#1\bxtb@cmp@enda}
+\def\bxtb@ifeqtx@a#1\bxtb@cmp@endb#2\bxtb@cmp@enda{%
+ \expandafter\expandafter\expandafter\bxtb@ifeq@pstr
+ \bxtb@stringify@ss{#2}\bxtb@cmp@enda#1\bxtb@cmp@endb}
+
+%% \bxtb@ifeq@str#1#2
+\def\bxtb@ifeq@str#1\bxtb@cmp@enda#2\bxtb@cmp@endb{%
+ \expandafter\expandafter\expandafter\bxtb@ifeqstr@a
+ \bxtb@detokenize@ss{#2}\bxtb@cmp@endb#1\bxtb@cmp@enda}
+\def\bxtb@ifeqstr@a#1\bxtb@cmp@endb#2\bxtb@cmp@enda{%
+ \expandafter\expandafter\expandafter\bxtb@ifeq@pstr
+ \bxtb@detokenize@ss{#2}\bxtb@cmp@enda#1\bxtb@cmp@endb}
+
+%% \bxtb@ifeq@pstr
+\def\bxtb@ifeq@pstr#1\bxtb@cmp@enda#2\bxtb@cmp@endb{%
+ \bxtb@ifstrempty{#1}%
+ {\bxtb@ifstrempty{#2}}%
+ {\bxtb@ifstrempty{#2}{\@secondoftwo}%
+ {\bxtb@ifeqps@a#1\bxtb@cmp@enda#2\bxtb@cmp@endb}}}
+\def\bxtb@ifeqps@a#1#2\bxtb@cmp@enda#3#4\bxtb@cmp@endb{%
+ \bxIfx{#1#3}%
+ {\bxtb@ifeq@pstr#2\bxtb@cmp@enda#4\bxtb@cmp@endb}%
+ {\@secondoftwo}}
+\def\bxtb@cmp@enda{\bxtb@cmp@enda@}
+\def\bxtb@cmp@endb{\bxtb@cmp@endb@}
+
+%% \bxtb@space@subst
+\def\bxtb@space@subst#1 #2\bxtb@ss@endb{%
+ \bxtb@ifstrempty{#2}{\bxtb@spcsub@a#1\bxtb@ss@endb}%
+ {\bxtb@space@subst#1\space#2\bxtb@ss@endb}}
+\def\bxtb@spcsub@a#1\bxtb@ss@enda#2\bxtb@ss@endb{\space#1}
+\def\bxtb@ss@enda{\bxtb@ss@enda@}
+\def\bxtb@ss@endb{\bxtb@ss@endb@}
+
+%% \bxtb@combine@ss
+\def\bxtb@combine@ss#1#2{%
+ \expandafter\expandafter\expandafter\bxtb@space@subst
+ #1{#2}\bxtb@ss@enda{} \bxtb@ss@endb}
+\def\bxtb@detokenize@ss{%
+ \romannumeral-`\a\bxtb@combine@ss\bxDetokenize}
+\def\bxtb@stringify@ss{%
+ \romannumeral-`\a\bxtb@combine@ss\bxStringify}
+
+%%<+> \bxCsNoexpand{<csname>}
+\newcommand*\bxCsNoexpand[1]{%
+ \expandafter\noexpand\csname#1\endcsname}
+
+%--------------------------------------- 6. Import from etoolbox
+
+%% \bxtb@import{\CSA \CSB ...}
+% [e-TeX] Aliases each of macros to a new name with 'bx' prefixed.
+% [non-e-TeX] Adds the prefixed name to the function check list.
+\bxPreamble\def\bxtb@import#1{%
+ \bxtb@listmake@do
+ \@tfor\bxtb@tmpa:=#1\do{\expandafter\bxtb@importcmd\bxtb@tmpa}}
+\bxPreamble\def\bxtb@importcmd#1{%
+ \begingroup
+ \expandafter\bxtb@importcmd@a\string#1\@nil
+ \endgroup}
+\bxPreamble\def\bxtb@importcmd@a#1#2#3\@nil{%
+ \@tempcnta`#2 \@tempcntb\@tempcnta
+ \ifnum 96<\@tempcntb \ifnum 123>\@tempcntb
+ \advance\@tempcntb-32 \fi\fi
+ \uccode\@tempcnta\@tempcntb
+ \uppercase{\edef\bxtb@tmpa{#2}}%
+ \expandafter\bxtb@importcmd@b\csname bx\bxtb@tmpa#3%
+ \expandafter\endcsname\csname #2#3\endcsname}
+
+%% \bxtb@provide{\CSA \CSB ...}
+% [e-TeX] Does nothing.
+% [non-e-TeX] Adds the name to the function check list.
+\bxPreamble\def\bxtb@provide#1{%
+ \bxtb@listmake@do
+ \@tfor\bxtb@tmpa:=#1\do{\expandafter\bxtb@providecmd\bxtb@tmpa}}
+
+\ifbxineTeX %<*etex>
+%% Load etoolbox.
+\RequirePackage{etoolbox}\relax
+%%
+\bxPreamble\def\bxtb@importcmd@b#1#2{\global\let#1#2}
+\bxPreamble\def\bxtb@providecmd#1{}
+
+\else %<*!etex>
+%%
+\bxPreamble\let\bxtb@provided\@empty
+\bxPreamble\def\bxtb@importcmd@b#1#2{%
+ \xdef\bxtb@provided{\bxtb@provided\do#1}}
+\bxPreamble\def\bxtb@providecmd#1{%
+ \xdef\bxtb@provided{\bxtb@provided\do#1}}
+
+\fi %</etex>
+
+\bxtb@import{%
+%%==== Here is a list of commands imported to bx* namespace.
+%% For such commands, bxtoolbox provides compatible but not equivalent
+%% commands when e-TeX extension is not available, under the same
+%% 'bx'-prefixed name.
+ \newrobustcmd \renewrobustcmd \providerobustcmd %2.1
+ \robustify %2.2
+ \csuse \csshow %3.1.1
+ \ifcsdef \ifcsundef %3.6.1
+}
+\bxtb@provide{%
+%% For the following commands, bxtoolbox provides equivalent commands
+%% for non-e-TeX environment under the same name as in etoolbox.
+ \AfterPreamble \AtEndPreamble \AfterEndPreamble %2.5
+ \AfterEndDocument
+ \csdef \csgdef \csedef \csxdef %3.1.1
+ \cslet \letcs \csletcs \undef \csundef
+ \appto \gappto \eappto \xappto %3.3.1
+ \csappto \csgappto \cseappto \csxappto
+ \preto \gpreto \epreto \xpreto %3.3.2
+ \cspreto \csgpreto \csepreto \csxpreto
+ \newbool \providebool \booltrue \boolfalse %3.5.1
+ \setbool \ifbool \notbool
+ \newtoggle \providetoggle \toggletrue \togglefalse %3.5.2
+ \settoggle \iftoggle \nottoggle
+ \ifdef \ifundef %3.6.1
+ \ifstrequal \ifstrempty %3.6.2
+}
+
+\ifbxineTeX %<*etex>
+%% When the engine is eTeX, stop reading here.
+\bxUnsetDummyIfs
+\expandafter\endinput
+\fi %</etex>
+%--------------------------------------- 7. etoolbox compatible functions
+
+%% error messages
+\def\bxtb@err@ukbool#1{\bxtb@error
+ {\bxtb@@bs if#1 undefined}\@eha}
+\def\bxtb@err@ukbval#1{\bxtb@error
+ {Invalid boolean value '#1'}\@eha}
+\def\bxtb@err@aetgl#1{\bxtb@error
+ {Toggle '#1' already defined}\@eha}
+\def\bxtb@err@uktgl#1{\bxtb@error
+ {Toggle '#1' undefined}\@eha}
+\def\bxtb@err@nomcr#1{\bxtb@error
+ {\string#1 is not a macro}\@eha}
+
+%%<+> \cslet
+%%<+> \letcs
+%%<+> \csletcs
+\bxtb@robustlet\cslet\bxtb@cslet
+\bxtb@robustlet\letcs\bxtb@letcs
+\bxtb@robustlet\csletcs\bxtb@csletcs
+
+%%<+> \bxNewrobustcmd
+%%<+> \bxRenewrobustcmd
+%%<+> \bxProviderobustcmd
+\newcommand\bxNewrobustcmd{}
+\DeclareRobustCommand*\bxNewrobustcmd{%
+ \bxtb@dclrobustcmd@a\bxtb@ifnewdefok}
+\def\bxtb@dclrobustcmd@a#1{%
+ \@ifstar{\bxtb@dclrobustcmd@b#1{*}}{\bxtb@dclrobustcmd@b#1{}}}
+\def\bxtb@dclrobustcmd@b#1#2#3{%
+ #1#3{\DeclareRobustCommand#2#3}{\bxtb@skip@new@cmd}}
+\bxNewrobustcmd*\bxRenewrobustcmd{%
+ \bxtb@dclrobustcmd@a\bxtb@ifrenewdefok}
+\bxNewrobustcmd*\bxProviderobustcmd{%
+ \bxtb@dclrobustcmd@a\bxtb@ifprovidedefok}
+
+%%<+> \bxRobustify
+\bxNewrobustcmd*\bxRobustify[1]{%
+ \ifundef{#1}{\bxtb@err@nomcr#1}
+ {\bxtb@ifdefmacro{#1}%
+ {\begingroup
+ \expandafter\bxtb@robustify@a
+ \csname\bxtb@name@cs#1\space\endcsname#1}%
+ {\bxtb@err@nomcr#1}}}
+\def\bxtb@robustify@a#1#2{%
+ \global\let\bxtb@rbf@do\@empty
+ \let\bxtb@tmpa#2\let#2\@undefined
+ \let\bxtb@tmpb#1\let#1\@undefined
+ \DeclareRobustCommand*#2{}%
+ \ifx#2\bxtb@tmpa
+ \bxtb@warn{\string#2 is already robust}%
+ \else\ifx\bxtb@tmpb\relax
+ \global\let\bxtb@rbf@tmpa#2%
+ \gdef\bxtb@rbf@do{\let#1#2\let#2\bxtb@rbf@tmpa}%
+ \else \bxtb@error{Failed to robustify \string#1}\@ehc
+ \fi\fi
+ \endgroup \bxtb@rbf@do}
+
+%%<+> \csdef
+%%<+> \csedef
+%%<+> \csgdef
+%%<+> \csxdef
+\bxNewrobustcmd*\csdef[1]{\expandafter\def\csname #1\endcsname}
+\bxNewrobustcmd*\csedef[1]{\expandafter\edef\csname #1\endcsname}
+\bxNewrobustcmd*\csgdef[1]{\expandafter\gdef\csname #1\endcsname}
+\bxNewrobustcmd*\csxdef[1]{\expandafter\xdef\csname #1\endcsname}
+
+%%<+> \undef
+%%<+> \csundef
+\bxNewrobustcmd*\undef[1]{\let#1\@undefined}
+\bxNewrobustcmd*\csundef[1]{%
+ \expandafter\let\csname #1\endcsname\@undefined}
+
+%%<+> \ifdef\CS{<T>}{<F>}
+%%<+> \ifundef\CS{<T>}{<F>}
+%%<+> \bxIfcsdef{<csname>}{<T>}{<F>}
+%%<+> \bxIfcsundef{<csname>}{<T>}{<F>}
+\newcommand*\ifdef[1]{%
+ \ifx#1\@undefined \expandafter\@secondoftwo
+ \else \expandafter\@firstoftwo
+ \fi}
+\newcommand*\ifundef[1]{%
+ \ifx#1\@undefined \expandafter\@firstoftwo
+ \else \expandafter\bxtb@ifundef@a\expandafter#1%
+ \fi}
+\def\bxtb@ifundef@a#1{%
+ \ifx#1\relax \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi}
+\newcommand*\bxIfcsdef[1]{%
+ \bxCheckForMovingArgForTest{%
+ \begingroup\expandafter\endgroup
+ \expandafter\ifx\csname #1\endcsname\@undefined
+ \expandafter\@secondoftwo
+ \else \expandafter\@firstoftwo
+ \fi}}
+\newcommand*\bxIfcsundef[1]{%
+ \bxCheckForMovingArgForTest{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname #1\endcsname\relax
+ \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi}}
+
+%%<+> \bxCsuse
+\bxNewrobustcmd*\bxCsuse[1]{%
+ \bxIfcsdef{#1}{\csname #1\endcsname}{}}
+
+%%<+> \bxCsshow
+\bxNewrobustcmd*\bxCsshow[1]{%
+ \bxIfcsdef{#1}{\expandafter\show\csname #1\endcsname}{}}
+
+%%<+> \appto
+%%<+> \gappto
+%%<+> \eappto
+%%<+> \xappto
+\bxNewrobustcmd*\appto{\bxtb@appto\@empty}
+\bxNewrobustcmd*\gappto{\bxtb@appto\global}
+\bxNewrobustcmd*\eappto{\bxtb@eappto\@empty}
+\bxNewrobustcmd*\xappto{\bxtb@eappto\global}
+\bxNewrobustcmd*\csappto[1]{\expandafter\appto\csname#1\endcsname}
+\bxNewrobustcmd*\csgappto[1]{\expandafter\gappto\csname#1\endcsname}
+\bxNewrobustcmd*\cseappto[1]{\expandafter\eappto\csname#1\endcsname}
+\bxNewrobustcmd*\csxappto[1]{\expandafter\xappto\csname#1\endcsname}
+\def\bxtb@eappto#1#2#3{%
+ \edef\bxtb@args{\noexpand#1\noexpand#2{#3}}%
+ \expandafter\bxtb@appto\bxtb@args}
+\def\bxtb@appto#1#2#3{%
+ \begingroup
+ \ifx#2\@undefined \let#2\@empty \fi
+ \toks@\expandafter{#2#3}\xdef\bxtb@g@tmpa{\the\toks@}%
+ \endgroup #1\let#2\bxtb@g@tmpa}
+
+%%<+> \preto
+%%<+> \gpreto
+%%<+> \epreto
+%%<+> \xpreto
+\bxNewrobustcmd*\preto{\bxtb@preto\@empty}
+\bxNewrobustcmd*\gpreto{\bxtb@preto\global}
+\bxNewrobustcmd*\epreto{\bxtb@epreto\@empty}
+\bxNewrobustcmd*\xpreto{\bxtb@epreto\global}
+\bxNewrobustcmd*\cspreto[1]{\expandafter\preto\csname#1\endcsname}
+\bxNewrobustcmd*\csgpreto[1]{\expandafter\gpreto\csname#1\endcsname}
+\bxNewrobustcmd*\csepreto[1]{\expandafter\epreto\csname#1\endcsname}
+\bxNewrobustcmd*\csxpreto[1]{\expandafter\xpreto\csname#1\endcsname}
+\toksdef\bxtb@toksa=2
+\def\bxtb@epreto#1#2#3{%
+ \edef\bxtb@args{\noexpand#1\noexpand#2{#3}}%
+ \expandafter\bxtb@preto\bxtb@args}
+\def\bxtb@preto#1#2#3{%
+ \begingroup
+ \ifx#2\@undefined \let#2\@empty \fi
+ \toks@\expandafter{#2}\bxtb@toksa{#3}%
+ \xdef\bxtb@g@tmpa{\the\bxtb@toksa\the\toks@}%
+ \endgroup #1\let#2\bxtb@g@tmpa}
+
+%%<+> \newbool
+%%<+> \providebool
+\bxNewrobustcmd*\newbool[1]{%
+ \expandafter\bxtb@newbool@a\csname if#1\endcsname}
+\def\bxtb@newbool@a#1{\@ifdefinable#1{\newif#1}}
+\bxNewrobustcmd*\providebool[1]{%
+ \@ifundefined{if#1}%
+ {\expandafter\newif\csname if#1\endcsname}{}}
+
+%%<+> \booltrue
+%%<+> \boolfalse
+%%<+> \setbool
+% NB: Here \bxIfcsundef cannot be used because otherwise the use
+% with \global would fail.
+\bxNewrobustcmd*\booltrue[1]{%
+ \bxIfcsundefX{if#1}{\bxtb@clear@prefix\bxtb@err@ukbool{#1}}%
+ {\csname #1true\endcsname}}
+\bxNewrobustcmd*\boolfalse[1]{%
+ \bxIfcsundefX{if#1}{\bxtb@clear@prefix\bxtb@err@ukbool{#1}}%
+ {\csname #1false\endcsname}}
+\bxNewrobustcmd*\setbool[2]{%
+ \bxIfcsundefX{if#1}{\bxtb@clear@prefix\bxtb@err@ukbool{#1}}%
+ {\bxIfcsundefX{#1#2}{\bxtb@clear@prefix\bxtb@err@ukbval{#2}}%
+ {\csname #1#2\endcsname}}}
+
+%%<+> \ifbool
+%%<+> \notbool
+\@gobble{\if\if}% if-match hack
+\newcommand*\ifbool[1]{%
+ \bxIfcsundefX{if#1}{\bxtb@err@ukbool{#1}\@gobbletwo}%
+ {\csname if#1\endcsname\expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi}}
+\newcommand*\notbool[1]{%
+ \bxIfcsundefX{if#1}{\bxtb@err@ukbool{#1}\@gobbletwo}%
+ {\csname if#1\endcsname\expandafter\@secondoftwo
+ \else \expandafter\@firstoftwo
+ \fi}}
+
+%%<+> \newtoggle
+%%<+> \providetoggle
+\bxNewrobustcmd*\newtoggle[1]{%
+ \bxIfcsdef{bxtb@TG/#1}{\bxtb@err@aetgl{#1}}%
+ {\cslet{bxtb@TG/#1}\bxtb@tgl@@false}}
+\bxNewrobustcmd*\providetoggle[1]{%
+ \bxIfcsdef{bxtb@TG/#1}{}{\cslet{bxtb@TG/#1}\bxtb@tgl@@false}}
+\let\bxtb@tgl@@true\@firstoftwo
+\let\bxtb@tgl@@false\@secondoftwo
+
+%%<+> \toggletrue
+%%<+> \togglefalse
+%%<+> \settoggle
+% NB: Here \bxIfcsdef cannot be used because otherwise the use
+% with \global would fail.
+\bxNewrobustcmd*\toggletrue[1]{%
+ \bxIfcsundefX{bxtb@TG/#1}{\bxtb@clear@prefix\bxtb@err@uktgl{#1}}%
+ {\cslet{bxtb@TG/#1}\bxtb@tgl@@true}}
+\bxNewrobustcmd*\togglefalse[1]{%
+ \bxIfcsundefX{bxtb@TG/#1}{\bxtb@clear@prefix\bxtb@err@uktgl{#1}}%
+ {\cslet{bxtb@TG/#1}\bxtb@tgl@@false}}
+\bxNewrobustcmd*\settoggle[2]{%
+ \bxIfcsundefX{bxtb@TG/#1}{\bxtb@clear@prefix\bxtb@err@uktgl{#1}}%
+ {\bxIfcsundefX{bxtb@tgl@@#2}{\bxtb@clear@prefix\bxtb@err@ukbval{#2}}%
+ {\csletcs{bxtb@TG/#1}{bxtb@tgl@@#2}}}}
+
+%%<+> \iftoggle
+%%<+> \nottoggle
+\newcommand*\iftoggle[1]{%
+ \bxIfcsundefX{bxtb@TG/#1}{\bxtb@err@uktgl{#1}\@gobbletwo}%
+ {\csname bxtb@TG/#1\endcsname}}
+\newcommand*\nottoggle[1]{%
+ \bxIfcsundefX{bxtb@TG/#1}{\bxtb@err@uktgl{#1}\@gobbletwo}%
+ {\csname bxtb@TG/#1\endcsname\@secondoftwo\@firstoftwo}}
+
+%%<+> \ifstrequal{<str1>}{<str2>}{<T>}{<F>}
+\newcommand*\ifstrequal{}
+\bxRobustdef\ifstrequal#1#2{%
+ \bxCheckForMovingArgForTest{%
+ \bxtb@def@detokenized\bxtb@tmpx{#1}%
+ \bxtb@def@detokenized\bxtb@tmpy{#2}%
+ \bxIfx{\bxtb@tmpx\bxtb@tmpy}}}
+
+%%<+> \ifstrempty{<str>}{<T>}{<F>}
+\newcommand*\ifstrempty{}
+\let\ifstrempty\bxtb@ifstrempty
+
+%% internal stuffs needed for hook commands
+\bxPreamble\def\bxtb@prepare@bdhook#1#2{%
+ \bxNewrobustcmd*#1{\gappto#2}%
+ \newcommand*#2{}}
+\def\bxtb@dispatch@bdhook#1#2{%
+ \let#1\@firstofone #2%
+ \bxRobustdef#1{\@notprerr\@gobble}\undef#2}
+
+%%<+> \AtEndPreamble
+%%<+> \AfterPreamble
+%%<+> \AfterEndPreamble
+%%<+> \AfterEndDocument
+\bxtb@prepare@bdhook\AtEndPreamble\@endpreamblehook
+\bxtb@prepare@bdhook\AfterEndPreamble\@afterendpreamblehook
+\bxtb@prepare@bdhook\AfterEndDocument\@afterenddocumenthook
+\bxNewrobustcmd*\AfterPreamble{\AtBeginDocument}
+\AtEndPreamble{\let\AfterPreamble\@firstofone}
+\AfterEndPreamble{\undef\bxtb@dispatch@bdhook}
+%
+\preto\document{\endgroup
+ \bxtb@dispatch@bdhook\AtEndPreamble\@endpreamblehook
+ \begingroup}
+\appto\document{%
+ \bxtb@dispatch@bdhook\AfterEndPreamble\@afterendpreamblehook
+ \ignorespaces}
+% patch to \enddocument
+\bxPreamble\def\bxtb@patch@enddocument{%
+ \expandafter\bxtb@patch@ed@a\enddocument\deadcycles\bxtb@end}
+\bxPreamble\def\bxtb@patch@ed@a#1\deadcycles#2\bxtb@end{%
+ \bxtb@ifstrempty{#2}{\bxtb@patch@ed@fail}%
+ {\def\bxtb@tmpa{#1}\bxtb@patch@ed@b#2\bxtb@end}}
+\bxPreamble\def\bxtb@patch@ed@b#1\deadcycles#2\bxtb@end{%
+ \bxtb@ifstrempty{#2}{\bxtb@patch@ed@c{#1}}%
+ {\bxtb@patch@ed@fail}}
+\bxPreamble\def\bxtb@patch@ed@c#1{%
+ \appto\bxtb@tmpa{\let\AfterEndDocument\@firstofone
+ \@afterenddocumenthook
+ \deadcycles#1}%
+ \let\bxtb@org@enddocument\enddocument
+ \let\enddocument\bxtb@tmpa}
+\bxPreamble\def\bxtb@patch@ed@fail{%
+ \bxtb@warn{\string\AfterEndDocument\space is set disabled}%
+ \bxRobustdef\AfterEndDocument##1{\bxtb@error
+ {\string\AfterEndDocument\space is now disabled}\@eha}}
+\bxtb@patch@enddocument
+
+%--------------------------------------- 8. Epilogue
+\def\do#1{%
+ \ifx#1\@undefined \bxtb@warn{\string#1 not yet implemented}\fi}
+\bxtb@provided
+\bxUnsetDummyIfs
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxbase/bxtoolbox.sty b/language/japanese/BX/bxbase/bxtoolbox.sty
new file mode 100644
index 0000000000..4f1ee3b831
--- /dev/null
+++ b/language/japanese/BX/bxbase/bxtoolbox.sty
@@ -0,0 +1,27 @@
+%%
+%% This is file 'bxtoolbox.sty'.
+%%
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% file declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxtoolbox}[2017/05/29 v1.1 BX developers' toolbox]
+\def\bxtb@pkgname{bxtoolbox}
+
+%--------------------------------------- main
+
+%% load submodules
+\providecommand*\bxRequireDefinition[1]{%
+ \def\bx@@def{def}\@onefilewithoptions{#1}[][]\bx@@def}
+\bxRequireDefinition{bxtoolbox}
+\bxRequireDefinition{bxtoolbox-ext}
+\bxRequireDefinition{bxtoolbox-ja}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxbase/bxutf8.def b/language/japanese/BX/bxbase/bxutf8.def
new file mode 100644
index 0000000000..9fd2168425
--- /dev/null
+++ b/language/japanese/BX/bxbase/bxutf8.def
@@ -0,0 +1,182 @@
+%%
+%% This is file 'bxutf8.def'.
+%%
+%
+%% file declaration
+\ProvidesFile{bxutf8.def}[2017/05/29 v1.1 BX UTF-8 input encoding]
+%
+% Note: All definitions in this file should be local.
+% This file should not spill any spaces or \par.
+%
+%% code guards
+% Here spaces are set back to effective. So great care must be taken
+% so spaces should not be spilt out (in horizontal mode).
+\catcode32=10\relax
+\edef\bxus@i@restore@codes{%
+ \catcode33=\the\catcode33%
+ \catcode34=\the\catcode34%
+ \catcode39=\the\catcode39%
+ \catcode45=\the\catcode45%
+ \catcode46=\the\catcode46%
+ \catcode47=\the\catcode47%
+ \catcode58=\the\catcode58%
+ \catcode63=\the\catcode63%
+ \catcode96=\the\catcode96%
+\relax}
+\catcode33=12 % <!>
+\catcode34=12 % <">
+\catcode39=12 % <'>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode63=12 % <?>
+\catcode96=12 % <`>
+\g@addto@macro\bxus@i@restore@codes{%
+ \let\bxus@i@restore@codes\@undefined}%
+%
+%--------------------------------------- dynamic part
+%
+% abort when this is first loaded after \begin{document}
+\def\bxus@i@error{\PackageError{inputenc}}%
+\ifx\@nodocument\relax
+ \ifx\bxus@bxutf@loaded\@undefined
+ \bxus@i@error
+ {cannot load `bxutf8' after \string\begin{document}}\@eha
+ \bxus@i@restore@codes\endinput\fi\fi
+%
+%% load 'utf8' encoding
+\InputIfFileExists{utf8.def}{}%
+ {\bxus@i@error{input encoding `utf8' unavailable}\@eha
+ \bxus@i@restore@codes\endinput}%
+\makeatletter % is this needed??
+%\@inpenc@test % This is done in utf8.def
+%
+%% attach the hook
+\def\UTFviii@two@octets#1#2{\expandafter\bxus@choice
+ \csname u8:#1\string#2\endcsname#1#2.@}%
+\def\UTFviii@three@octets#1#2#3{\expandafter\bxus@choice
+ \csname u8:#1\string#2\string#3\endcsname#1#2#3@}%
+\def\UTFviii@four@octets#1#2#3#4{\expandafter\bxus@choice@four
+ \csname u8:#1\string#2\string#3\string#4\endcsname#1#2#3#4@}%
+%
+% When this file is reloaded, the 'static' part will be skipped.
+\ifx\bxus@bxutf@loaded\@undefined\else
+ \bxus@i@restore@codes\endinput \fi
+\let\bxus@bxutf@loaded=t%
+%
+%--------------------------------------- static part
+%
+%% error messages
+\def\bxus@err@uknbc{\bxus@i@error
+ {Unknown non-BMP character found}%
+ {bxutf8 cannot handle non-BMP characters.}}%
+\def\bxus@err@nodrv{\bxus@i@error
+ {Unicode driver not found}\@ehb}%
+%
+%% make tables for 'nybble conversion'
+\def\bxus@fornbl{%
+ \bxus@fornbl@a00001102203310411512613720821922A23B30C31D32E33FXXX}%
+\def\bxus@fornbl@a#1#2#3{%
+ \if X#1\else
+ \@namedef{bxus@*#1#2}{#3}%
+ \bxus@defchr{F#3}{0#1#2}\bxus@defchr{E#3}{#1#2}%
+ \bxus@defchr{C#3}{000#1#2}\bxus@defchr{D#3}{001#1#2}%
+ \bxus@defchr{8#3}{0#1#2}\bxus@defchr{9#3}{1#1#2}%
+ \bxus@defchr{A#3}{2#1#2}\bxus@defchr{B#3}{3#1#2}%
+ \expandafter\bxus@fornbl@a\fi}%
+\def\bxus@defchr#1#2{%
+ {\lccode`\!="#1%
+ \lowercase{\expandafter\gdef\csname bxus@@!\endcsname{#2}}}}%
+\bxus@fornbl \@namedef{bxus@@.}{}%
+%
+%% \bxcs@choice
+% Called in the form
+% \bxus@choice[\u8:??]??.@ (2-byte) or
+% \bxus@choice[\u8:???]???@ (3-byte)
+% where ?? is a (TF-8 byte string and [\u8:...] denotes a single
+% control word. This macro expands to the control word if it is
+% defined; otherwise expands to \bxus@proc.
+\def\bxus@choice#1#2@{%
+ \ifx#1\relax \bxus@proc#2%
+ \else\expandafter#1\fi}%
+%
+%% \bxus@choice@four
+\def\bxus@choice@four#1#2@{%
+ \ifx#1\relax \bxus@prociv#2%
+ \else\expandafter#1\fi}%
+%
+%% \bxus@proc
+% When ??? is the UTF-8 string of U+XXXX (padded to length 3 with
+% a dot), then \bxus@proc@a??? fully expands to \bxUHex{XXXX}.
+% (\bxUHex should be robust.)
+\def\bxus@proc#1#2#3{%
+ \expandafter\bxus@proc@b\csname bxus@@\string#1\expandafter\endcsname
+ \csname bxus@@\string#2\expandafter\endcsname
+ \csname bxus@@\string#3\endcsname}%
+\def\bxus@proc@b#1#2#3{%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\bxus@proc@c
+ \expandafter\expandafter\expandafter#1%
+ \expandafter#2#3}%
+\def\bxus@proc@c#1#2#3#4#5#6#7#8{%
+ \expandafter\bxus@proc@d\csname bxus@*#1#2\expandafter\endcsname
+ \csname bxus@*#3#4\expandafter\endcsname
+ \csname bxus@*#5#6\expandafter\endcsname
+ \csname bxus@*#7#8\endcsname}%
+\def\bxus@proc@d#1#2{%
+ \expandafter\expandafter\expandafter\bxus@proc@e
+ \expandafter#1#2\@nil}%
+\def\bxus@proc@e#1\@nil#2#3{%
+ \bxus@proc@f#2#3#1\@nil}%
+\def\bxus@proc@f#1#2{%
+ \expandafter\expandafter\expandafter\bxus@proc@g
+ \expandafter#1#2\@nil}%
+\def\bxus@proc@g#1\@nil#2\@nil{%
+ \bxUHex{#2#1}}%
+%
+%% \bxus@prociv
+% The variant of \bxus@proc that is adapted to 4-octet sequences.
+\def\bxus@prociv#1#2#3#4{%
+ \expandafter\bxus@prociv@a\csname bxus@@\string#1\expandafter\endcsname
+ \csname bxus@@\string#2\expandafter\endcsname
+ \csname bxus@@\string#3\expandafter\endcsname
+ \csname bxus@@\string#4\endcsname}%
+\def\bxus@prociv@a#1#2#3#4{%
+ \expandafter\expandafter\expandafter\bxus@prociv@b
+ \expandafter#3#4@#1#2}%
+\def\bxus@prociv@b#1@#2#3{%
+ \expandafter\expandafter\expandafter\bxus@prociv@c
+ \expandafter#2#3#1@@}%
+\def\bxus@prociv@c#1#2#3#4{%
+ \expandafter\bxus@prociv@d\csname bxus@*#1#2\expandafter\endcsname
+ \csname bxus@*#3#4\endcsname}%
+\def\bxus@prociv@d#1#2{%
+ \expandafter\expandafter\expandafter\bxus@prociv@e
+ \expandafter#1#2}%
+\def\bxus@prociv@e#1#2#3@#4@{\bxus@prociv@f#3@#4#1#2@}%
+\def\bxus@prociv@f#1#2#3#4{%
+ \expandafter\bxus@prociv@g\csname bxus@*#1#2\expandafter\endcsname
+ \csname bxus@*#3#4\endcsname}%
+\def\bxus@prociv@g#1#2{%
+ \expandafter\expandafter\expandafter\bxus@prociv@h
+ \expandafter#1#2}%
+\def\bxus@prociv@h#1#2#3@#4@{\bxus@prociv@i#3@#4#1#2@}%
+\def\bxus@prociv@i#1#2#3#4{%
+ \expandafter\bxus@prociv@j\csname bxus@*#1#2\expandafter\endcsname
+ \csname bxus@*#3#4\endcsname}%
+\def\bxus@prociv@j#1#2{%
+ \expandafter\expandafter\expandafter\bxus@prociv@k
+ \expandafter#1#2}%
+\def\bxus@prociv@k#1#2@#3@{\bxUHex{#3#1#2}}%
+%
+%
+%% default (useless) Unicode driver
+% Note: this \bxUHex definition is used for check.
+\providecommand*\bxUHex{\bxUHexDummyBxutf}%
+\newcommand*\bxUHexDummyBxutf[1]{?\protect\bxus@err@nodrv}%
+%
+%--------------------------------------- all done
+\bxus@i@restore@codes
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxbase/bxutf8x.def b/language/japanese/BX/bxbase/bxutf8x.def
new file mode 100644
index 0000000000..972f392fd9
--- /dev/null
+++ b/language/japanese/BX/bxbase/bxutf8x.def
@@ -0,0 +1,96 @@
+%%
+%% This is file 'bxutf8x.def'.
+%%
+%
+%% file declaration
+\ProvidesFile{bxutf8x.def}[2017/05/29 v1.1 BX extended utf8x input]
+%
+% Note: All definitions in this file should be local.
+% This file should not spill any spaces or \par.
+%
+%% code guards
+\catcode32=10\relax
+\expandafter\edef\csname bxus@i@restore@codes\endcsname{%
+ \catcode34=\the\catcode34% <">
+ \catcode46=\the\catcode46% <.>
+ \catcode58=\the\catcode58% <:>
+ \catcode64=\the\catcode64% <@>
+\relax}%
+\catcode34=12 %
+\catcode46=12 %
+\catcode58=12 %
+\catcode64=11 %
+\g@addto@macro\bxus@i@restore@codes{%
+ \let\bxus@i@restore@codes\@undefined}%
+%
+%--------------------------------------- dynamic part
+%
+\def\bxus@i@error{\PackageError{inputenc}}%
+\ifx\@nodocument\relax
+ \ifx\bxus@bxutfx@loaded\@undefined
+ \bxus@i@error
+ {cannot load `bxutf8x' after \string\begin{document}}\@eha
+ \bxus@i@restore@codes\endinput\fi\fi
+%
+%% load 'utf8x' encoding
+\InputIfFileExists{utf8x.def}{}%
+ {\PackageError{inputenc}{input encoding `utf8x' unavailable}%
+ {You must install `unicode' package to use it.}%
+ \bxus@i@restore@codes\endinput}%
+%\@inpenc@test % This is done in utf8.def
+%
+% When this file is reloaded, the 'static' part will be skipped.
+\ifx\bxus@bxutfx@loaded\@undefined\else
+ \bxus@i@restore@codes \endinput \fi
+\let\bxus@bxutfx@loaded=t%
+%
+%--------------------------------------- Static part
+%
+%% error messages
+\def\bxus@err@nodrv{\bxus@i@error
+ {Unicode driver not found}\@ehb}%
+%
+%%%% \bxus@uc@char@notloaded
+% Hooked version of \uc@char@notloaded
+\def\bxus@uc@char@notloaded#1{%
+ \count@=#1\divide\count@256%
+ \edef\uc@temp@a{uni-\number\count@.def}%
+ \expandafter\ifx\csname\uc@temp@a\endcsname\relax\else
+ \uc@secondtry#1\relax\fi
+ \ifnum\uc@secondtry=#1\relax % all trial of utf8x failed
+ \bxUInt{#1}%
+ \else
+ \begingroup
+ \ifUnicodeOptionsavemem\else
+ \global\expandafter\let\csname\uc@temp@a\endcsname\@ne \fi
+ \def\uc@got{#1}\uni@resetcatcodes
+ \expandafter\InputIfFileExists\expandafter{\uc@temp@a}{%
+ \global\let\uni@dataloaded1}{}%
+ \endgroup
+ \uc@secondtry#1\relax\uni@char{#1}%
+ \fi}%
+\def\bxus@uc@notloaderr#1#2#3{%
+ \bxUInt{#1}}% \bxUInt should be robust
+%
+%% attach the hook
+% Note that ucs.sty could be loaded after utf8x.def.
+\AtBeginDocument{%
+ \let\uc@notloaderr\bxus@uc@notloaderr
+ \let\uc@char@notloaded\bxus@uc@char@notloaded}%
+%
+%% force ucs 'fasterrors' option switched on
+% Heavy 'uninames' decoding process is of no use in presence of the hook,
+% and it causes unexpected result in use of pTeX.
+\AtBeginDocument{%
+ \let\UnicodeOptionfasterrorsfalse\UnicodeOptionfasterrorstrue
+ \UnicodeOptionfasterrorstrue}%
+%
+%% default (useless) Unicode driver
+% Note: this \bxUHex definition is used for check.
+\providecommand*\bxUInt{\bxUIntDummyBxutfx}%
+\newcommand*\bxUIntDummyBxutfx[1]{?\protect\bxus@err@nodrv}%
+%
+%--------------------------------------- all done
+\bxus@i@restore@codes
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxbase/zxbase.sty b/language/japanese/BX/bxbase/zxbase.sty
new file mode 100644
index 0000000000..4d5b2baef3
--- /dev/null
+++ b/language/japanese/BX/bxbase/zxbase.sty
@@ -0,0 +1,149 @@
+%%
+%% This is file 'zxbase.sty'.
+%%
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zxbase}[2017/05/29 v1.1]
+\RequirePackage{ifxetex}
+\RequireXeTeX
+
+%% preparations
+\RequirePackage{bxbase}
+\def\zx@pkgname{zxbase}
+
+%--------------------------------------- generic family detection
+
+%%<+> \zxSpecFamily / \zxRMFamily / \zxSFFamily / \zxTTFamily
+% The constants signifying each generic family.
+% These values can be considered as fixed, so you can say i.e.
+% "\ifnum\zxGFFlag<\zxSFFamily <non-sans> \else <sans> \fi"
+\chardef\zxSpecFamily=0
+\chardef\zxRMFamily=1
+\chardef\zxSFFamily=2
+\chardef\zxTTFamily=3
+
+%% \zx@set@genfamflag
+% A patch to be inserted to \selectfont. This makes \selectfont
+% set a right \zx..Family constant to \zxGFFlag.
+\def\zx@set@genfamflag{%
+ \zx@set@gff@get\zx@curfam\f@family
+ \let\zxGFFlag\zxSpecFamily
+ \zx@set@gff@match\ttdefault\zxTTFamily
+ \zx@set@gff@match\sfdefault\zxSFFamily
+ \zx@set@gff@match\rmdefault\zxRMFamily}
+\def\zx@set@gff@get#1#2{%
+ \expandafter\let\expandafter#1\csname
+ zf@family@fontname#2\endcsname
+ \ifx#1\relax \edef#1{#2}\fi}
+\def\zx@set@gff@match#1#2{%
+ \zx@set@gff@get\zx@genfam#1%
+ \ifx\zx@genfam\zx@curfam \let\zxGFFlag#2\fi}
+
+%%<+> \zxBDHookGenFamFlag
+\def\zxBDHookGenFamFlag{\zx@bdhook@genfamflag@do}
+\@onlypreamble\zx@bdhook@genfamflag@do
+\def\zx@bdhook@genfamflag@do{%
+ \expandafter\zx@bdhook@genfamflag@a\csname selectfont \endcsname
+ \let\zx@bdhook@genfamflag@do\relax}
+\@onlypreamble\zx@bdhook@genfamflag@a
+\def\zx@bdhook@genfamflag@a#1{%
+ \expandafter\def\expandafter#1\expandafter{%
+ \expandafter\zx@set@genfamflag#1}}
+
+%--------------------------------------- forge pTeX primitives
+% It is not totally safe, but is required so as to make
+% the 'ajmacros' package work.
+
+%%<+> \zxBDHookForgepTeXDir
+\def\zxBDHookForgepTeXDir{\zx@bdhook@forgeptexdir@do}
+\@onlypreamble\zx@bdhook@forgeptexdir@do
+\def\zx@bdhook@forgeptexdir@do{%
+ \zx@letconstif{ydir}{true}\zx@letconstif{tdir}{false}%
+ \ifx\yoko\@undefined \let\yoko\relax \fi
+ \ifx\tate\@undefined \let\tate\relax \fi
+}
+\def\zx@letconstif#1#2{%
+ \ifcsname if#1\endcsname\else
+ \expandafter\let\csname if#1\expandafter\endcsname
+ \csname if#2\endcsname \fi}
+
+%--------------------------------------- load pLaTeX packages
+
+%%<+> switch 'zxPPInUTFEight'
+\newif\ifzxPPInUTFEight
+
+%% variables
+\newif\ifzx@jisenc
+
+%% errors
+\def\zx@err@ukenc#1{\PackageError\zx@pkgname
+ {File '#1' is in unknown encoding}%
+ {The file must be encoded in ISO-2022-JP or UTF-8.}}
+
+%%<+> \zxRequirepLaTeXPackage{<package>}
+\@onlypreamble\zxRequirepLaTeXPackage
+\def\zxRequirepLaTeXPackage#1{%
+ \ifzxPPInUTFEight \zx@jisencfalse
+ \else \zx@checkjisorutfeight{#1.\@pkgextension}%
+ \ifcase\zx@joru \zx@err@ukenc{#1.\@pkgextension}\or
+ \zx@jisenctrue \else \zx@jisencfalse \fi
+ \fi
+ \let\NeedsTeXFormat\zx@mute@NeedsTeXFormat
+ \ifzx@jisenc \XeTeXdefaultencoding ISO-2022-JP\relax \fi
+ \RequirePackage{#1}\relax
+ \ifzx@jisenc \XeTeXdefaultencoding auto\relax \fi
+ \let\NeedsTeXFormat\zx@org@NeedsTeXFormat
+}
+
+%% \zx@mute@NeedsTeXFormat
+\def\zx@mute@NeedsTeXFormat#1{\@ifnextchar[{\zx@mute@ntf@a}{\relax}}
+\def\zx@mute@ntf@a[#1]{\relax}
+\let\zx@org@NeedsTeXFormat\NeedsTeXFormat
+
+%% \zx@checkjisorutfeight{<file>}
+% Decides whether <file> is encoded in JIS or UTF-8 and sets to \zx@joru.
+% 0:binary; 1:JIS; 2:UTF-8; 3:US-ASCII
+\def\zx@checkjisorutfeight#1{%
+ \begingroup
+ \XeTeXdefaultencoding bytes\relax
+ \let\zx@c@ctl=f\def\zx@found@ctl{\let\zx@c@ctl=t}%
+ \let\zx@c@esc=f\def\zx@found@esc{\let\zx@c@esc=t}%
+ \let\zx@c@high=f\def\zx@found@high{\let\zx@c@high=t}%
+ \zx@make@activelet{0}{32}\zx@found@ctl
+ \zx@make@ignorable{32}{127}%
+ \zx@make@activelet{127}{128}\zx@found@ctl
+ \zx@make@activelet{128}{256}\zx@found@high
+ \zx@make@activelet{27}{28}\zx@found@esc
+ \catcode13=5 \catcode32=10 \catcode9=10 \catcode`\~=9
+ \@@input"#1"\relax
+ \if t\zx@c@ctl \global\chardef\zx@g@joru0
+ \else\if t\zx@c@esc \global\chardef\zx@g@joru1
+ \else\if t\zx@c@high \global\chardef\zx@g@joru2
+ \else \global\chardef\zx@g@joru3 \fi\fi\fi
+ \XeTeXdefaultencoding auto\relax
+ \endgroup
+ \let\zx@joru\zx@g@joru}
+\def\zx@make@activelet#1#2#3{%
+ \catcode`\~=\active \let\zx@tmpx=#3\relax
+ \@tempcnta#1\relax\loop
+ \catcode\@tempcnta\active \lccode`\~=\@tempcnta
+ \lowercase{\let~\zx@tmpx}%
+ \advance\@tempcnta\@ne \ifnum\@tempcnta<#2 \repeat}
+\def\zx@make@ignorable#1#2{%
+ \@tempcnta#1\relax\loop \catcode\@tempcnta9
+ \advance\@tempcnta\@ne \ifnum\@tempcnta<#2 \repeat}
+
+%%<*> \platexpackagesinunicode
+\@onlypreamble\platexpackagesinunicode
+\newcommand*\platexpackagesinunicode{\zxPPInUTFEighttrue}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxjaholiday/LICENSE b/language/japanese/BX/bxjaholiday/LICENSE
new file mode 100644
index 0000000000..488617373d
--- /dev/null
+++ b/language/japanese/BX/bxjaholiday/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright 2018 Takuto ASAKURA (wtsnjp)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/language/japanese/BX/bxjaholiday/README.md b/language/japanese/BX/bxjaholiday/README.md
new file mode 100644
index 0000000000..86ee29a75e
--- /dev/null
+++ b/language/japanese/BX/bxjaholiday/README.md
@@ -0,0 +1,62 @@
+# BXjaholiday Package
+
+LaTeX: Support for Japanese holidays
+
+## System requirements
+
+* TeX format: LaTeX
+* TeX engine: pdfTeX, XeTeX, LuaTeX, pTeX, and upTeX (The e-TeX extension is **required**)
+
+## Usage
+
+This package provides following LaTeX2e commands:
+
+```tex
+\jaholidayname{<year>}{<month>}{<day>}
+\jadayofweek{<year>}{<month>}{<day>}
+\IfJaHoliday(TF){<year>}{<month>}{<day>}{<true code>}{<false code>}
+```
+
+Further functions are provided for expl3. See the manual (`bxjaholiday.pdf`) for the details.
+
+## Building
+
+You can easily build this package with [l3build](https://github.com/latex3/l3build).
+
+* Installing the package to TEXMFHOME
+
+```
+$ ./build.lua install --full
+```
+
+* Typesetting documentation
+
+```
+$ ./build.lua doc
+```
+
+* Running tests
+
+```
+$ ./build.lua check
+```
+
+## License
+
+This package is distributed under [the MIT license](./LICENSE).
+
+## Revision History
+
+* Version 1.0.0 ‹2019/02/03›
+ * Add documentation
+ * Rename `\g_bxjh_sport_tl` -> `\g_bxjh_sports_tl`
+* Version 0.2.0 ‹2019/01/27›
+ * Support special holidays in 2019
+ * Add new expl3 interface `\bxjh_apply_(next|prev)_day:Nnnn`
+ * Fix a potential bug
+* Version 0.1.0 ‹2018/12/03›
+ * The first public version
+
+---
+
+Takuto ASAKURA ([wtsnjp](https://twitter.com/wtsnjp))
diff --git a/language/japanese/BX/bxjaholiday/bxjaholiday.pdf b/language/japanese/BX/bxjaholiday/bxjaholiday.pdf
new file mode 100644
index 0000000000..a67a5cdb65
--- /dev/null
+++ b/language/japanese/BX/bxjaholiday/bxjaholiday.pdf
Binary files differ
diff --git a/language/japanese/BX/bxjaholiday/bxjaholiday.sty b/language/japanese/BX/bxjaholiday/bxjaholiday.sty
new file mode 100644
index 0000000000..ce47457367
--- /dev/null
+++ b/language/japanese/BX/bxjaholiday/bxjaholiday.sty
@@ -0,0 +1,926 @@
+%%
+%% This is file 'bxjaholiday.sty'.
+%%
+%% Copyright 2018 Takuto ASAKURA (wtsnjp)
+%% GitHub: https://github.com/wtsnjp
+%% Twitter: @wtsnjp
+%%
+%% This package is distributed under the MIT License.
+%%
+
+% Note: This file is encoded entirely in us-ascii.
+
+% -------------------------------------------------- declarations
+
+\RequirePackage{expl3}
+\ProvidesExplPackage {bxjaholiday} {2019/02/03} {1.0.0}
+ {Support for Japanese holidays}
+
+% -------------------------------------------------- utilities
+
+% LaTeX2e stuff
+%% \__bxjh_only_preamble:N \CS
+\cs_new_eq:Nc \__bxjh_only_preamble:N { @onlypreamble }
+
+% short hands
+%% \__bxjh_int_compare_and:nn(TF) { <intexpr1> } { <intexpr2> }
+%% ( { <true code> } ) ( { <false code> } )
+\prg_new_conditional:Npnn \__bxjh_int_compare_and:nn #1#2 { T, TF }
+ {
+ \bool_lazy_and:nnTF
+ { \int_compare_p:n { #1 } }
+ { \int_compare_p:n { #2 } }
+ { \prg_return_true: } { \prg_return_false: }
+ }
+
+%% \__bxjh_date_compare(_p):nn(TF)
+%% { <year1> } { <month1> } { <day1> } <rel> { <year2> } { <month2> } { <day2> }
+%% ( { <true code> } ) ( { <false code> } )
+\prg_new_conditional:Npnn \__bxjh_date_compare:nnnNnnn #1#2#3#4#5#6#7 { p, T, TF }
+ {
+ \int_compare:nNnTF
+ { ( #1 ) * 10000 + ( #2 ) * 100 + ( #3 ) }
+ #4 % relation
+ { ( #5 ) * 10000 + ( #6 ) * 100 + ( #7 ) }
+ { \prg_return_true: } { \prg_return_false: }
+ }
+
+% -------------------------------------------------- messages
+
+\msg_new:nnn { bxjaholiday } { unknown-engine }
+ {
+ Unknown~TeX~engine; \\
+ loading~bxjaholiday~will~abort!
+ }
+
+% -------------------------------------------------- constants
+
+\int_const:Nn \c_bxjh_monday_int { 0 }
+\int_const:Nn \c_bxjh_tuesday_int { 1 }
+\int_const:Nn \c_bxjh_wednesday_int { 2 }
+\int_const:Nn \c_bxjh_thursday_int { 3 }
+\int_const:Nn \c_bxjh_friday_int { 4 }
+\int_const:Nn \c_bxjh_saturday_int { 5 }
+\int_const:Nn \c_bxjh_sunday_int { 6 }
+
+% -------------------------------------------------- Japanese string maker
+
+%% \__bxjh_next:n { <char> }
+\cs_new:Npn \__bxjh_next:n #1 {}
+
+%% \__bxjh_add_jchar:Nnnn <tl-var> { <hex-dump-of-utf8-bytes> }
+%% { <hex-dump-of-unicode-point> } { <hex-dump-of-JIS-bytes> }
+\__bxjh_only_preamble:N \__bxjh_add_jchar:Nnnn
+\__bxjh_only_preamble:N \__bxjh_add_jchar_dec:nnn
+\__bxjh_only_preamble:N \__bxjh_add_jchar_dec_helper:n
+
+\cs_new:Npn \__bxjh_add_jchar:Nnnn #1#2#3#4
+ {
+ \group_begin:
+ \cs_set:Npn \__bxjh_next:n ##1
+ {
+ \tl_gset:Nx #1 { \exp_not:o { #1 } ##1 }
+ }
+ \__bxjh_add_jchar_dec:nnn { #2 } { #3 } { #4 }
+ \group_end:
+ }
+
+% engine-dependent parts
+\str_case_e:nnF { \c_sys_engine_str }
+ {
+ { pdftex }
+ {
+ \cs_new:Npn \__bxjh_add_jchar_dec:nnn #1#2#3
+ {
+ \__bxjh_add_jchar_dec_helper:n { #1 }
+ }
+ \cs_new:Npn \__bxjh_add_jchar_dec_helper:n #1
+ {
+ % #1 should have three tl items
+ \tl_map_inline:nn { #1 }
+ {
+ \tl_set_rescan:Nnx \l_tmpa_tl
+ { \char_set_catcode_active:n { "##1 } }
+ { \char_generate:nn { "##1 } { 12 } }
+ \__bxjh_next:n { \exp_not:o { \l_tmpa_tl } }
+ }
+ }
+ }
+
+ { ptex }
+ {
+ \cs_new:Npn \__bxjh_add_jchar_dec:nnn #1#2#3
+ {
+ \ptex_kansujichar:D \c_one_int = \ptex_jis:D "#3 \scan_stop:
+ \__bxjh_next:n { \ptex_kansuji:D \c_one_int }
+ }
+ }
+
+ { uptex }
+ {
+ \cs_new:Npn \__bxjh_add_jchar_dec:nnn #1#2#3
+ {
+ \ptex_kansujichar:D \c_one_int = \ptex_jis:D "#3 \scan_stop:
+ \__bxjh_next:n { \ptex_kansuji:D \c_one_int }
+ }
+ }
+
+ { xetex }
+ {
+ \cs_new:Npn \__bxjh_add_jchar_dec:nnn #1#2#3
+ {
+ \__bxjh_next:n { \char_generate:nn { "#2 } { 11 } }
+ }
+ }
+
+ { luatex }
+ {
+ \cs_new:Npn \__bxjh_add_jchar_dec:nnn #1#2#3
+ {
+ \__bxjh_next:n { \char_generate:nn { "#2 } { 11 } }
+ }
+ }
+ }
+ {
+ % engines which expl3 does not support
+ \msg_warning:nn { bxjaholiday } { unknown-engine }
+ \file_input_stop:
+ }
+
+% -------------------------------------------------- Japanese words
+
+% youbi
+\tl_new:N \g_bxjh_getsu_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_getsu_tl { {E6}{9C}{88} } { 6708 } { 376E }
+
+\tl_new:N \g_bxjh_ka_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_ka_tl { {E7}{81}{AB} } { 706B } { 3250 }
+
+\tl_new:N \g_bxjh_sui_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_sui_tl { {E6}{B0}{B4} } { 6C34 } { 3F65 }
+
+\tl_new:N \g_bxjh_moku_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_moku_tl { {E6}{9C}{A8} } { 6728 } { 4C5A }
+
+\tl_new:N \g_bxjh_kin_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_kin_tl { {E9}{87}{91} } { 91D1 } { 3662 }
+
+\tl_new:N \g_bxjh_do_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_do_tl { {E5}{9C}{9F} } { 571F } { 455A }
+
+\tl_new:N \g_bxjh_nichi_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_nichi_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+% common holidays
+\tl_new:N \g_bxjh_ganjitsu_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_ganjitsu_tl { {E5}{85}{83} } { 5143 } { 3835 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_ganjitsu_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_seijin_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_seijin_tl { {E6}{88}{90} } { 6210 } { 402E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_seijin_tl { {E4}{BA}{BA} } { 4EBA } { 3F4D }
+\__bxjh_add_jchar:Nnnn \g_bxjh_seijin_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_seijin_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_kenkoku_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenkoku_tl { {E5}{BB}{BA} } { 5EFA } { 377A }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenkoku_tl { {E5}{9B}{BD} } { 56FD } { 3971 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenkoku_tl { {E8}{A8}{98} } { 8A18 } { 352D }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenkoku_tl { {E5}{BF}{B5} } { 5FF5 } { 4730 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenkoku_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenkoku_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_tennou_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_tennou_tl { {E5}{A4}{A9} } { 5929 } { 4537 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_tennou_tl { {E7}{9A}{87} } { 7687 } { 3944 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_tennou_tl { {E8}{AA}{95} } { 8A95 } { 4342 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_tennou_tl { {E7}{94}{9F} } { 751F } { 4038 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_tennou_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_shunbun_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_shunbun_tl { {E6}{98}{A5} } { 6625 } { 3D55 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_shunbun_tl { {E5}{88}{86} } { 5206 } { 4A2C }
+\__bxjh_add_jchar:Nnnn \g_bxjh_shunbun_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_shunbun_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_showa_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_tl { {E6}{98}{AD} } { 662D } { 3E3C }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_tl { {E5}{92}{8C} } { 548C } { 4F42 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_midori_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_midori_tl { {E3}{81}{BF} } { 307F } { 245F }
+\__bxjh_add_jchar:Nnnn \g_bxjh_midori_tl { {E3}{81}{A9} } { 3069 } { 2449 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_midori_tl { {E3}{82}{8A} } { 308A } { 246A }
+\__bxjh_add_jchar:Nnnn \g_bxjh_midori_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_midori_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_kenpou_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenpou_tl { {E6}{86}{B2} } { 61B2 } { 377B }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenpou_tl { {E6}{B3}{95} } { 6CD5 } { 4B21 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenpou_tl { {E8}{A8}{98} } { 8A18 } { 352D }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenpou_tl { {E5}{BF}{B5} } { 5FF5 } { 4730 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kenpou_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_kokumin_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_kokumin_tl { {E5}{9B}{BD} } { 56FD } { 3971 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kokumin_tl { {E6}{B0}{91} } { 6C11 } { 4C31 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kokumin_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kokumin_tl { {E4}{BC}{91} } { 4F11 } { 3559 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kokumin_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_kodomo_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_kodomo_tl { {E3}{81}{93} } { 3053 } { 2433 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kodomo_tl { {E3}{81}{A9} } { 3069 } { 2449 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kodomo_tl { {E3}{82}{82} } { 3082 } { 2462 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kodomo_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kodomo_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_furikae_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_furikae_tl { {E6}{8C}{AF} } { 632F } { 3F36 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_furikae_tl { {E6}{9B}{BF} } { 66FF } { 4258 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_furikae_tl { {E4}{BC}{91} } { 4F11 } { 3559 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_furikae_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_umi_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_umi_tl { {E6}{B5}{B7} } { 6D77 } { 3324 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_umi_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_umi_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_yama_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_yama_tl { {E5}{B1}{B1} } { 5C71 } { 3B33 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_yama_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_yama_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_shubun_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_shubun_tl { {E7}{A7}{8B} } { 79CB } { 3D29 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_shubun_tl { {E5}{88}{86} } { 5206 } { 4A2C }
+\__bxjh_add_jchar:Nnnn \g_bxjh_shubun_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_shubun_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_keirou_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_keirou_tl { {E6}{95}{AC} } { 656C } { 3749 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_keirou_tl { {E8}{80}{81} } { 8001 } { 4F37 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_keirou_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_keirou_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_sports_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_sports_tl { {E3}{82}{B9} } { 30B9 } { 2539 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sports_tl { {E3}{83}{9D} } { 30DD } { 255D }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sports_tl { {E3}{83}{BC} } { 30FC } { 213C }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sports_tl { {E3}{83}{84} } { 30C4 } { 2544 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sports_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sports_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_taiiku_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_taiiku_tl { {E4}{BD}{93} } { 4F53 } { 424E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_taiiku_tl { {E8}{82}{B2} } { 80B2 } { 3069 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_taiiku_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_taiiku_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_bunka_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_bunka_tl { {E6}{96}{87} } { 6587 } { 4A38 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_bunka_tl { {E5}{8C}{96} } { 5316 } { 323D }
+\__bxjh_add_jchar:Nnnn \g_bxjh_bunka_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_bunka_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+\tl_new:N \g_bxjh_kinrou_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_kinrou_tl { {E5}{8B}{A4} } { 52E4 } { 3650 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kinrou_tl { {E5}{8A}{B4} } { 52B4 } { 4F2B }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kinrou_tl { {E6}{84}{9F} } { 611F } { 3436 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kinrou_tl { {E8}{AC}{9D} } { 8B1D } { 3C55 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kinrou_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_kinrou_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+% special holidays (mainly Emperor related)
+\tl_new:N \g_bxjh_showa_taisou_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_taisou_tl { {E6}{98}{AD} } { 662D } { 3E3C }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_taisou_tl { {E5}{92}{8C} } { 548C } { 4F42 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_taisou_tl { {E5}{A4}{A9} } { 5929 } { 4537 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_taisou_tl { {E7}{9A}{87} } { 7687 } { 3944 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_taisou_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_taisou_tl { {E5}{A4}{A7} } { 5927 } { 4267 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_taisou_tl { {E5}{96}{AA} } { 55AA } { 4153 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_taisou_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_showa_taisou_tl { {E7}{A4}{BC} } { 793C } { 4E69 }
+
+\tl_new:N \g_bxjh_akihito_kekkon_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E7}{9A}{87} } { 7687 } { 3944 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E5}{A4}{AA} } { 592A } { 4240 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E5}{AD}{90} } { 5B50 } { 3B52 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E6}{98}{8E} } { 660E } { 4C40 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E4}{BB}{81} } { 4EC1 } { 3F4E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E8}{A6}{AA} } { 89AA } { 3F46 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E7}{8E}{8B} } { 738B } { 3226 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E7}{B5}{90} } { 7D50 } { 376B }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E5}{A9}{9A} } { 5A5A } { 3A27 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_akihito_kekkon_tl { {E5}{84}{80} } { 5100 } { 3537 }
+
+\tl_new:N \g_bxjh_naruhito_kekkon_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E7}{9A}{87} } { 7687 } { 3944 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E5}{A4}{AA} } { 592A } { 4240 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E5}{AD}{90} } { 5B50 } { 3B52 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E5}{BE}{B3} } { 5FB3 } { 4641 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E4}{BB}{81} } { 4EC1 } { 3F4E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E8}{A6}{AA} } { 89AA } { 3F46 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E7}{8E}{8B} } { 738B } { 3226 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E7}{B5}{90} } { 7D50 } { 376B }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E5}{A9}{9A} } { 5A5A } { 3A27 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_naruhito_kekkon_tl { {E5}{84}{80} } { 5100 } { 3537 }
+
+\tl_new:N \g_bxjh_sokuirei_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokuirei_tl { {E5}{8D}{B3} } { 5373 } { 4228 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokuirei_tl { {E4}{BD}{8D} } { 4F4D } { 304C }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokuirei_tl { {E7}{A4}{BC} } { 793C } { 4E69 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokuirei_tl { {E6}{AD}{A3} } { 6B63 } { 4035 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokuirei_tl { {E6}{AE}{BF} } { 6BBF } { 4542 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokuirei_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokuirei_tl { {E5}{84}{80} } { 5100 } { 3537 }
+
+\tl_new:N \g_bxjh_sokui_tl
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokui_tl { {E5}{8D}{B3} } { 5373 } { 4228 }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokui_tl { {E4}{BD}{8D} } { 4F4D } { 304C }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokui_tl { {E3}{81}{AE} } { 306E } { 244E }
+\__bxjh_add_jchar:Nnnn \g_bxjh_sokui_tl { {E6}{97}{A5} } { 65E5 } { 467C }
+
+% -------------------------------------------------- day of week
+
+%% \bxjh_day_of_week_name:nnn { <year> } { <month> } { <day> }
+%% \bxjh_day_of_week:nnn { <year> } { <month> } { <day> }
+% The calculation is based on Zeller's congruence:
+%
+% W = y + floor ( y / 4 ) + floor ( h / 4 ) + ( 5 * h )
+% + floor ( ( 13 * ( m + 1 ) ) / 5 ) + d
+%
+% where
+%
+% h = \int_div_truncate:nn { #1 } { 100 } ,
+% y = \int_mod:nn { #1 } { 100 } ,
+% m = #2 ,
+% d = #3 .
+%
+% Note that January and February needs to be treated as 13th and 14th
+% month of the former year respectively.
+\cs_new:Npn \bxjh_day_of_week_name:nnn #1#2#3
+ {
+ \int_case:nn { \bxjh_day_of_week:nnn { #1 } { #2 } { #3 } }
+ {
+ { \c_bxjh_monday_int } { \g_bxjh_getsu_tl }
+ { \c_bxjh_tuesday_int } { \g_bxjh_ka_tl }
+ { \c_bxjh_wednesday_int } { \g_bxjh_sui_tl }
+ { \c_bxjh_thursday_int } { \g_bxjh_moku_tl }
+ { \c_bxjh_friday_int } { \g_bxjh_kin_tl }
+ { \c_bxjh_saturday_int } { \g_bxjh_do_tl }
+ { \c_bxjh_sunday_int } { \g_bxjh_nichi_tl }
+ }
+ }
+
+\cs_new:Npn \bxjh_day_of_week:nnn #1#2#3
+ {
+ \int_compare:nNnTF { #2 } < { 3 }
+ {
+ \__bxjh_zeller:nnn { #1 - 1 } { #2 + 12 } { #3 }
+ }
+ {
+ \__bxjh_zeller:nnn { #1 } { #2 } { #3 }
+ }
+ }
+
+\cs_new:Npn \__bxjh_zeller:nnn #1#2#3
+ {
+ \int_mod:nn
+ {
+ \int_mod:nn { #1 } { 100 }
+ + \int_div_truncate:nn { \int_mod:nn { #1 } { 100 } } { 4 }
+ + \int_div_truncate:nn { \int_div_truncate:nn { #1 } { 100 } } { 4 }
+ + ( 5 * \int_div_truncate:nn { #1 } { 100 } )
+ + \int_div_truncate:nn { ( 13 * ( #2 + 1 ) ) } { 5 }
+ + #3 + 5
+ }
+ { 7 }
+ }
+
+% -------------------------------------------------- next/prev day
+
+%% \__bxjh_number_of_days_in_month:nn { <year> } { <month> }
+\cs_new:Npn \__bxjh_number_of_days_in_month:nn #1#2
+ {
+ \int_case:nn { #2 }
+ {
+ { 1 } { 31 } % January
+ { 2 } % February
+ {
+ \int_compare:nNnTF { \int_mod:nn { #1 } { 4 } } = { 0 }
+ {
+ \__bxjh_int_compare_and:nnTF
+ { \int_mod:nn { #1 } { 100 } = 0 }
+ { \int_mod:nn { #1 } { 400 } > 0 }
+ { 28 }
+ { 29 } % leap year
+ }
+ { 28 }
+ }
+ { 3 } { 31 } % March
+ { 4 } { 30 } % April
+ { 5 } { 31 } % May
+ { 6 } { 30 } % June
+ { 7 } { 31 } % July
+ { 8 } { 31 } % August
+ { 9 } { 30 } % September
+ { 10 } { 31 } % October
+ { 11 } { 30 } % November
+ { 12 } { 31 } % December
+ }
+ }
+
+%% \__bxjh_apply_after_int_eval:Nnnn \CS { <intexpr1> } { <intexpr2> } { <intexpr3> }
+% this is for calculation efficiency
+\cs_new:Npn \__bxjh_apply_after_int_eval:Nnnn #1#2#3#4
+ {
+ \exp_args:Nfff #1
+ { \int_eval:n { #2 } } { \int_eval:n { #3 } } { \int_eval:n { #4 } }
+ }
+
+% get \exp_args:Nfff
+\exp_args_generate:n { fff }
+
+%% \bxjh_apply_next_day:Nnnn \CS { <year> } { <month> } { <day> }
+\cs_new:Npn \bxjh_apply_next_day:Nnnn #1#2#3#4
+ {
+ \int_compare:nNnTF
+ { #4 } < { \__bxjh_number_of_days_in_month:nn { #2 } { #3 } }
+ {
+ % just next day in the month
+ \__bxjh_apply_after_int_eval:Nnnn #1 { #2 } { #3 } { #4 + 1 }
+ }
+ {
+ \int_compare:nNnTF { #3 } < { 12 }
+ {
+ % the first day of next month
+ \__bxjh_apply_after_int_eval:Nnnn #1 { #2 } { #3 + 1 } { 1 }
+ }
+ {
+ % the first day of next year
+ \__bxjh_apply_after_int_eval:Nnnn #1 { #2 + 1 } { 1 } { 1 }
+ }
+ }
+ }
+
+%% \bxjh_apply_prev_day:Nnnn \CS { <year> } { <month> } { <day> }
+\cs_new:Npn \bxjh_apply_prev_day:Nnnn #1#2#3#4
+ {
+ \int_compare:nNnTF { #4 } > { 1 }
+ {
+ % just prev day in the month
+ \__bxjh_apply_after_int_eval:Nnnn #1 { #2 } { #3 } { #4 - 1 }
+ }
+ {
+ \int_compare:nNnTF { #3 } > { 1 }
+ {
+ % the last day of prev month
+ \__bxjh_apply_after_int_eval:Nnnn #1 { #2 } { #3 - 1 }
+ { \__bxjh_number_of_days_in_month:nn { #2 } { #3 - 1 } }
+ }
+ {
+ % the last day of prev year
+ \__bxjh_apply_after_int_eval:Nnnn #1 { #2 - 1 } { 12 } { 31 }
+ }
+ }
+ }
+
+% -------------------------------------------------- holidays
+
+%% \__bxjh_vernal_equinox:n { <year> }
+\cs_new:Npn \__bxjh_vernal_equinox:n #1
+ {
+ \int_compare:nNnTF { #1 } < { 1948 }
+ {
+ 99 % before the Act on National Holidays
+ }
+ {
+ \int_compare:nNnTF { #1 } < { 1980 }
+ {
+ \__bxjh_va_formula:nn { 20.8357 } { #1 }
+ }
+ {
+ \int_compare:nNnTF { #1 } < { 2100 }
+ {
+ \__bxjh_va_formula:nn { 20.8431 } { #1 }
+ }
+ {
+ \int_compare:nNnTF { #1 } < { 2151 }
+ {
+ \__bxjh_va_formula:nn { 20.8510 } { #1 }
+ }
+ {
+ 99 % unknown because no calculation formula
+ }
+ }
+ }
+ }
+ }
+
+%% \__bxjh_autumn_equinox:n { <year> }
+\cs_new:Npn \__bxjh_autumn_equinox:n #1
+ {
+ \int_compare:nNnTF { #1 } < { 1948 }
+ {
+ 99 % before the Act on National Holidays
+ }
+ {
+ \int_compare:nNnTF { #1 } < { 1980 }
+ {
+ \__bxjh_va_formula:nn { 23.2588 } { #1 }
+ }
+ {
+ \int_compare:nNnTF { #1 } < { 2100 }
+ {
+ \__bxjh_va_formula:nn { 23.2488 } { #1 }
+ }
+ {
+ \int_compare:nNnTF { #1 } < { 2151 }
+ {
+ \__bxjh_va_formula:nn { 24.2488 } { #1 }
+ }
+ {
+ 99 % unknown because no calculation formula
+ }
+ }
+ }
+ }
+ }
+
+%% \__bxjh_va_formula:nn { <magic> } { <year> }
+\cs_new:Npn \__bxjh_va_formula:nn #1#2
+ {
+ \fp_eval:n {
+ floor (
+ #1 + 0.242194 * ( #2 - 1980 ) - \int_div_truncate:nn { #2 - 1980 } { 4 }
+ )
+ }
+ }
+
+%% \bxjh_holiday_name:nnn { <year> } { <month> } { <day> }
+\cs_new:Npn \bxjh_holiday_name:nnn #1#2#3
+ {
+ \exp_args:Nf \__bxjh_holiday_name_wrapper:nnnn
+ { \__bxjh_holiday_name_naive:nnn { #1 } { #2 } { #3 } }
+ { #1 } { #2 } { #3 }
+ }
+
+%% \__bxjh_holiday_name_wrapper:nnnn { <naive holiday name> }
+%% { <year> } { <month> } { <day> }
+\cs_set:Npn \__bxjh_holiday_name_wrapper:nnnn #1#2#3#4
+ {
+ \tl_if_empty:nTF { #1 }
+ {
+ \bool_lazy_and:nnT
+ {
+ \__bxjh_date_compare_p:nnnNnnn
+ { #2 } { #3 } { #4 } > { 1973 } { 4 } { 11 }
+ }
+ {
+ \int_compare_p:n
+ {
+ \bxjh_day_of_week:nnn { #2 } { #3 } { #4 } = \c_bxjh_monday_int
+ }
+ }
+ {
+ \bxjh_apply_prev_day:Nnnn \bxjh_if_holiday:nnnT
+ { #2 } { #3 } { #4 } { \g_bxjh_furikae_tl }
+ }
+ }
+ { #1 }
+ }
+
+%% \__bxjh_holiday_name_naive:nnn { <year> } { <month> } { <day> }
+\cs_new:Npn \__bxjh_holiday_name_naive:nnn #1#2#3
+ {
+ \__bxjh_date_compare:nnnNnnnTF { #1 } { #2 } { #3 } < { 1948 } { 7 } { 20 }
+ {
+ % empty because before the Act on National Holidays
+ }
+ {
+ \int_case:nn { #2 }
+ {
+ { 1 } % January
+ {
+ \int_compare:nNnTF { #3 } = { 1 }
+ { \g_bxjh_ganjitsu_tl }
+ {
+ \int_compare:nNnTF { #1 } > { 1999 }
+ {
+ \__bxjh_int_compare_and:nnT % second Monday
+ { \int_div_truncate:nn { #3 - 1 } { 7 } = 1 }
+ {
+ \bxjh_day_of_week:nnn { #1 } { #2 } { #3 }
+ = \c_bxjh_monday_int
+ }
+ { \g_bxjh_seijin_tl }
+ }
+ {
+ \int_compare:nNnT { #3 } = { 15 }
+ { \g_bxjh_seijin_tl }
+ }
+ }
+ }
+
+ { 2 } % February
+ {
+ \__bxjh_int_compare_and:nnTF { #3 = 11 } { #1 > 1966 }
+ { \g_bxjh_kenkoku_tl }
+ {
+ \__bxjh_int_compare_and:nnTF { #3 = 23 } { #1 > 2019 }
+ { \g_bxjh_tennou_tl } % the "next" era (2020-)
+ {
+ \__bxjh_date_compare:nnnNnnnT
+ { #1 } { #2 } { #3 } = { 1989 } { 2 } { 24 }
+ { \g_bxjh_showa_taisou_tl }
+ }
+ }
+ }
+
+ { 3 } % March
+ {
+ \int_compare:nNnT { #3 } = { \__bxjh_vernal_equinox:n { #1 } }
+ { \g_bxjh_shunbun_tl }
+ }
+
+ { 4 } % April
+ {
+ \int_compare:nNnTF { #3 } = { 29 }
+ {
+ \int_compare:nNnTF { #1 } > { 2006 }
+ { \g_bxjh_showa_tl }
+ {
+ \int_compare:nNnTF { #1 } > { 1988 }
+ { \g_bxjh_midori_tl }
+ { \g_bxjh_tennou_tl } % the Showa period
+ }
+ }
+ {
+ \__bxjh_date_compare:nnnNnnnTF
+ { #1 } { #2 } { #3 } = { 2019 } { 4 } { 30 }
+ { \g_bxjh_kokumin_tl } % the abdication of the Heisei Emperor
+ {
+ \__bxjh_date_compare:nnnNnnnT
+ { #1 } { #2 } { #3 } = { 1959 } { 4 } { 10 }
+ { \g_bxjh_akihito_kekkon_tl }
+ }
+ }
+ }
+
+ { 5 } % May
+ {
+ \int_compare:nNnTF { #3 } = { 3 }
+ { \g_bxjh_kenpou_tl }
+ {
+ \int_compare:nNnTF { #3 } = { 4 }
+ {
+ \int_compare:nNnTF { #1 } > { 2006 }
+ { \g_bxjh_midori_tl }
+ {
+ \int_compare:nNnT { #1 } > { 1985 }
+ {
+ \int_case:nnF % if later than Tuesday (Tue. - Sat.)
+ { \bxjh_day_of_week:nnn { #1 } { #2 } { #3 } }
+ {
+ { \c_bxjh_monday_int } {} % substitute for Constitution Day
+ { \c_bxjh_sunday_int } {} % just a "normal" Sunday
+ }
+ { \g_bxjh_kokumin_tl }
+ }
+ }
+ }
+ {
+ \int_compare:nNnTF { #3 } = { 5 }
+ { \g_bxjh_kodomo_tl }
+ {
+ \int_compare:nNnTF { #3 } = { 6 }
+ {
+ \int_compare:nNnT { #1 } > { 2006 }
+ {
+ \int_case:nn
+ { \bxjh_day_of_week:nnn { #1 } { #2 } { #3 } }
+ {
+ { \c_bxjh_tuesday_int } { \g_bxjh_furikae_tl }
+ { \c_bxjh_wednesday_int } { \g_bxjh_furikae_tl }
+ }
+ }
+ }
+ {
+ \__bxjh_date_compare:nnnNnnnTF
+ { #1 } { #2 } { #3 } = { 2019 } { 5 } { 1 }
+ { \g_bxjh_sokui_tl } % Naruhito
+ {
+ \__bxjh_date_compare:nnnNnnnT
+ { #1 } { #2 } { #3 } = { 2019 } { 5 } { 2 }
+ { \g_bxjh_kokumin_tl }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ { 6 } % June
+ {
+ \__bxjh_date_compare:nnnNnnnT { #1 } { #2 } { #3 } = { 1993 } { 6 } { 9 }
+ { \g_bxjh_naruhito_kekkon_tl }
+ }
+
+ { 7 } % July
+ {
+ \int_compare:nNnTF { #1 } > { 2020 }
+ {
+ \__bxjh_int_compare_and:nnT % third Monday
+ { \int_div_truncate:nn { #3 - 1 } { 7 } = 2 }
+ {
+ \bxjh_day_of_week:nnn { #1 } { #2 } { #3 }
+ = \c_bxjh_monday_int
+ }
+ { \g_bxjh_umi_tl }
+ }
+ {
+ \int_compare:nNnTF { #1 } = { 2020 }
+ {
+ % 2020 Tokyo Olympic year: special case
+ \int_compare:nNnTF { #3 } = { 23 }
+ { \g_bxjh_umi_tl }
+ {
+ \int_compare:nNnT { #3 } = { 24 }
+ { \g_bxjh_sports_tl }
+ }
+ }
+ {
+ \int_compare:nNnTF { #1 } > { 2002 }
+ {
+ \__bxjh_int_compare_and:nnT % third Monday
+ { \int_div_truncate:nn { #3 - 1 } { 7 } = 2 }
+ {
+ \bxjh_day_of_week:nnn { #1 } { #2 } { #3 }
+ = \c_bxjh_monday_int
+ }
+ { \g_bxjh_umi_tl }
+ }
+ {
+ \__bxjh_int_compare_and:nnT { #1 > 1995 } { #3 = 20 }
+ { \g_bxjh_umi_tl }
+ }
+ }
+ }
+ }
+
+ { 8 } % August
+ {
+ \int_compare:nNnTF { #1 } > { 2020 }
+ {
+ \int_compare:nNnT { #3 } = { 11 }
+ { \g_bxjh_yama_tl }
+ }
+ {
+ \int_compare:nNnTF { #1 } = { 2020 }
+ {
+ % 2020 Tokyo Olympic year: special case
+ \int_compare:nNnT { #3 } = { 10 }
+ { \g_bxjh_yama_tl }
+ }
+ {
+ \__bxjh_int_compare_and:nnT { #1 > 2015 } { #3 = 11 }
+ { \g_bxjh_yama_tl }
+ }
+ }
+ }
+
+ { 9 } % September
+ {
+ \int_compare:nNnTF { #3 } = { \__bxjh_autumn_equinox:n { #1 } }
+ { \g_bxjh_shubun_tl }
+ {
+ \int_compare:nNnTF { #1 } > { 2002 }
+ {
+ \__bxjh_int_compare_and:nnTF % third Monday
+ { \int_div_truncate:nn { #3 - 1 } { 7 } = 2 }
+ {
+ \bxjh_day_of_week:nnn { #1 } { #2 } { #3 }
+ = \c_bxjh_monday_int
+ }
+ { \g_bxjh_keirou_tl }
+ {
+ \__bxjh_int_compare_and:nnT
+ {
+ \bxjh_day_of_week:nnn { #1 } { #2 } { #3 }
+ = \c_bxjh_tuesday_int
+ }
+ { #3 = \__bxjh_autumn_equinox:n { #1 } - 1 }
+ { \g_bxjh_kokumin_tl }
+ }
+ }
+ {
+ \__bxjh_int_compare_and:nnT { #1 > 1965 } { #3 = 15 }
+ { \g_bxjh_keirou_tl }
+ }
+ }
+ }
+
+ { 10 } % October
+ {
+ \int_compare:nNnTF { #1 } > { 2020 }
+ {
+ \__bxjh_int_compare_and:nnT % second Monday
+ { \int_div_truncate:nn { #3 - 1 } { 7 } = 1 }
+ {
+ \bxjh_day_of_week:nnn { #1 } { #2 } { #3 }
+ = \c_bxjh_monday_int
+ }
+ { \g_bxjh_sports_tl }
+ }
+ {
+ \int_compare:nNnTF { #1 } = { 2020 }
+ {
+ % pass because of 2020 Tokyo Olympic
+ }
+ {
+ \int_compare:nNnTF { #1 } > { 1999 }
+ {
+ \__bxjh_int_compare_and:nnTF % second Monday
+ { \int_div_truncate:nn { #3 - 1 } { 7 } = 1 }
+ {
+ \bxjh_day_of_week:nnn { #1 } { #2 } { #3 }
+ = \c_bxjh_monday_int
+ }
+ { \g_bxjh_taiiku_tl }
+ {
+ \__bxjh_date_compare:nnnNnnnT
+ { #1 } { #2 } { #3 } = { 2019 } { 10 } { 22 }
+ { \g_bxjh_sokuirei_tl } % Naruhito
+ }
+ }
+ {
+ \__bxjh_int_compare_and:nnT
+ { #1 > 1965 } { #3 = 10 }
+ { \g_bxjh_taiiku_tl }
+ }
+ }
+ }
+ }
+
+ { 11 } % November
+ {
+ \int_compare:nNnTF { #3 } = { 3 }
+ { \g_bxjh_bunka_tl }
+ {
+ \int_compare:nNnTF { #3 } = { 23 }
+ { \g_bxjh_kinrou_tl }
+ {
+ \__bxjh_date_compare:nnnNnnnT
+ { #1 } { #2 } { #3 } = { 1990 } { 11 } { 12 }
+ { \g_bxjh_sokuirei_tl }
+ }
+ }
+ }
+
+ { 12 } % December
+ {
+ \int_compare:nNnT { #3 } = { 23 }
+ {
+ \__bxjh_int_compare_and:nnT
+ { #1 > 1988 } { #1 < 2019 }
+ { \g_bxjh_tennou_tl } % the Heisei period
+ }
+ }
+ }
+ }
+ }
+
+%% \bxjh_if_holiday:nnn(TF) { <year> } { <month> } { <day> }
+%% ( { <true code> } ) ( { <false code> } )
+\prg_new_conditional:Npnn \bxjh_if_holiday:nnn #1#2#3 { T, F, TF }
+ {
+ \exp_args:Nf \tl_if_empty:nTF
+ { \bxjh_holiday_name:nnn { #1 } { #2 } { #3 } }
+ { \prg_return_false: }
+ { \prg_return_true: }
+ }
+
+% -------------------------------------------------- LaTeX2e interface
+
+%% \jaholidayname { <year> } { <month> } { <day> }
+\cs_new_eq:NN \jaholidayname \bxjh_holiday_name:nnn
+
+%% \jadayofweek { <year> } { <month> } { <day> }
+\cs_new_eq:NN \jadayofweek \bxjh_day_of_week_name:nnn
+
+%% \IfJaHoliday(TF) { <year> } { <month> } { <day> }
+%% ( { <true code> } ) ( { <false code> } )
+\cs_new_eq:NN \IfJaHolidayF \bxjh_if_holiday:nnnF
+\cs_new_eq:NN \IfJaHolidayT \bxjh_if_holiday:nnnT
+\cs_new_eq:NN \IfJaHolidayTF \bxjh_if_holiday:nnnTF
+
+% vim: ft=expl3 nospell:
+%% EOF
diff --git a/language/japanese/BX/bxjaholiday/bxjaholiday.tex b/language/japanese/BX/bxjaholiday/bxjaholiday.tex
new file mode 100644
index 0000000000..7980e7a8d1
--- /dev/null
+++ b/language/japanese/BX/bxjaholiday/bxjaholiday.tex
@@ -0,0 +1,279 @@
+%#!xelatex
+\RequirePackage{fontspec}
+\documentclass{l3doc}
+
+% packages
+\usepackage{bxjaholiday}
+\usepackage{caption}
+
+% fonts
+\newfontfamily{\fIpaex}{IPAexMincho}[Scale=0.95]
+\newcommand*{\Ja}[1]{{\fIpaex#1}}
+
+% logos
+\usepackage{bxtexlogo}
+\bxtexlogoimport{*}
+
+% syntax
+\newenvironment{code}{\quote\small}{\endquote}
+
+% cross-refs
+\usepackage{wtref}
+\newref{tab,sec}
+
+% macros
+\newcommand{\PkgName}{\pkg{bxjaholiday}}
+\newcommand{\Ie}{i.\,e.}
+\newcommand{\Eg}{e.\,g.}
+
+\ExplSyntaxOn
+\cs_set_eq:NN \_ \c_underscore_str
+\cs_new:Npn \__bxjh_doc_holiday_line:nn #1#2
+ {
+ % first column: holiday
+ #1 &
+ % second column: variable
+ \cs { g_bxjh_#2_tl } &
+ % third column: Name in Japanese
+ \Ja { \tl_use:c { g_bxjh_#2_tl } } \\
+ }
+\cs_new:Npn \__bxjh_doc_week_of_day:nn #1#2
+ {
+ % first column: holiday
+ #1 &
+ % second column: int variable
+ \cs { c_bxjh_ \tl_lower_case:n{ #1 } _int } &
+ % third column: int value
+ \int_use:c { c_bxjh_ \tl_lower_case:n{ #1 } _int } &
+ % fourth column: tl variable
+ \cs { g_bxjh_#2_tl } &
+ % fifth column: tl value
+ \Ja { \tl_use:c { g_bxjh_#2_tl } } \\
+ }
+\cs_new_eq:NN \HolidayLine \__bxjh_doc_holiday_line:nn
+\cs_new_eq:NN \WeekofdayLine \__bxjh_doc_week_of_day:nn
+\ExplSyntaxOff
+
+% metadata
+\GetFileInfo{\jobname.sty}
+\title{The {\PkgName} package}
+\author{Takuto ASAKURA (wtsnjp)}
+\date{\fileversion \quad [\filedate]}
+
+\begin{document}
+
+\maketitle
+
+\begin{abstract}
+This package provides a command to convert dates to names of Japanese holidays
+(\emph{shukujitsu}; \Ja{祝日}). For internal use, I need to implement a
+function to judge the day of week (\emph{youbi}; \Ja{曜日}), so a command
+converting dates to \emph{youbi} in the same manner is also available as a free
+gift. The equivalent functions and further (lower-level) APIs are provided for
+expl3.
+%All {\LaTeXe} and expl3 interfaces are (first-)fully expandable, so
+%those could be used almost anywhere in your documents.
+\end{abstract}
+
+%\tableofcontents
+
+\begin{documentation}
+
+%\section{Introduction}
+
+\section{System requirements}
+
+As one of the BX series\footnote{BX series is a collection of {\LaTeX} packages
+mainly developed by Takayuki YATO (a.k.a.~ZR.) ``BX'' stands for
+``\underline{b}abel e\underline{x}tensions'' and packages in this series are
+normally support various {\TeX} engines not only Japanese-specific ones
+({\pTeX}, {\upTeX}, and so on.)} packages, {\PkgName} supports all {\TeX}
+engines which supported by expl3 (\Ie, the {\eTeX} extension is required.)
+Specifically, following {\TeX} systems are supported:
+%
+\begin{itemize}
+\item {\TeX} format: {\LaTeXe}.
+\item {\TeX} engine: {\pdfTeX}, {\XeTeX}, {\LuaTeX},\footnote{Note that if you
+want to print Japanese characters with {\TeX} engines which is not specifically
+designed for Japanese, you need to setup proper fonts and other things.}
+{\pTeX}, and {\upTeX}.
+\end{itemize}
+
+\section{Loading the package}
+
+The package should be loaded in the usual {\LaTeXe} way. No package option is
+available.
+%
+\begin{code}
+|\usepackage{bxjaholiday}|
+\end{code}
+
+\section{{\LaTeXe} interfaces}
+
+\begin{function}[EXP]{\jaholidayname}
+\begin{syntax}
+|\jaholidayname|\marg{year}\marg{month}\marg{day}
+\end{syntax}
+%
+This command is expanded to the name of Japanese holiday corresponding to the
+specified date, if it is a holiday. For a date which is not a holiday, it will
+be expanded to nothing (an empty token.) See Table~\tabref{holidays} for all
+possible results.
+
+For \meta{year}, \meta{month}, and \meta{day}, you can explicitly write
+numbers, or use counters, \Eg, |\year|, |\month|, and |\day|. To be exact,
+those could be any \meta{integer expression}.
+\end{function}
+
+\begin{function}[EXP]{\jadayofweek}
+\begin{syntax}
+|\jadayofweek|\marg{year}\marg{month}\marg{day}
+\end{syntax}
+%
+This command converts from a date to the name of week, \Ie, one of \Ja{月, 火,
+水, 木, 金, 土, 日}. You can specify the arguments in exactly the same way as
+|\jaholidayname|.
+\end{function}
+
+\begin{function}[EXP]{\IfJaHolidayTF,\IfJaHolidayT,\IfJaHolidayF}
+\begin{syntax}
+|\IfJaHolidayTF|\marg{year}\marg{month}\marg{day}\marg{true code}\marg{false code}
+|\IfJaHolidayT|\marg{year}\marg{month}\marg{day}\marg{true code}
+|\IfJaHolidayF|\marg{year}\marg{month}\marg{day}\marg{false code}
+\end{syntax}
+%
+The |\IfJaHoliday(TF)| tests are used to check if a date is a Japanese holiday
+or not. Note that substitute holidays (\Ja{振替休日}) are also judged as a
+holiday in this test.
+\end{function}
+
+\section{expl3 interfaces}
+
+All expl3 interfaces provided by {\PkgName} belong to the \texttt{bxjh} module.
+
+\subsection{Functions}
+
+\begin{function}[EXP]{\bxjh_holiday_name:nnn}
+\begin{syntax}
+|\bxjh_holiday_name:nnn| \marg{year} \marg{month} \marg{day}
+\end{syntax}
+%
+This is expl3 version of |\jaholidayname|. It converts dates into Japanese
+holiday names.
+\end{function}
+
+\begin{function}[EXP]{\bxjh_day_of_week_name:nnn,\bxjh_day_of_week:nnn}
+\begin{syntax}
+|\bxjh_day_of_week_name:nnn| \marg{year} \marg{month} \marg{day}
+|\bxjh_day_of_week:nnn| \marg{year} \marg{month} \marg{day}
+\end{syntax}
+%
+|\bxjh_day_of_week_name:nnn| is an expl3 version of |\jadayofweek|. It converts
+a date into day of week in Japanese. To use that information in expl3, \Eg, for
+branching, |\bxjh_day_of_week:nnn| is more suitable. It returns an internal
+\texttt{int} value, so you can compare those results with the constants provided
+by this package. See Section~\secref{variables}.
+\end{function}
+
+\begin{function}[EXP,TF]{\bxjh_if_holiday:nnn}
+\begin{syntax}
+|\bxjh_if_holiday:nnnTF| \marg{year} \marg{month} \marg{day} \marg{true code} \marg{false code}
+\end{syntax}
+%
+This test is expl3 version of |\IfJaHoliday(TF)|.
+\end{function}
+
+\begin{function}[EXP]{\bxjh_apply_prev_day:Nnnn,\bxjh_apply_next_day:Nnnn}
+\begin{syntax}
+|\bxjh_apply_prev_day:Nnnn| \meta{function} \marg{year} \marg{month} \marg{day}
+|\bxjh_apply_next_day:Nnnn| \meta{function} \marg{year} \marg{month} \marg{day}
+\end{syntax}
+%
+These functions get previous/next day of the specified date, and apply it to
+the specified \meta{function}. The \meta{function} must take three arguments in
+the order. For example,
+%
+\begin{code}
+|\bxjh_apply_next_day:Nnnn \bxjh_holiday_name:nnn { 2019 } { 12 } { 31 }|
+\end{code}
+%
+produces the result of:
+%
+\begin{code}
+|\bxjh_holiday_name:nnn { 2020 } { 1 } { 1 }|
+\end{code}
+\end{function}
+
+\subsection{Variables and constants}\seclabel{variables}
+
+\paragraph{Names of Japanese holidays}
+
+All of them are provided as global \texttt{tl} variables. See
+Table~\tabref{holidays}.
+%
+\begin{table}[p]
+\centering\small
+\caption{Japanese holidays}
+\tablabel{holidays}
+\begin{tabular}{lll}
+\hline
+Holiday & Variable & Name in Japanese \\ \hline
+\HolidayLine{New Year's Day}{ganjitsu}
+\HolidayLine{Coming of Age Day}{seijin}
+\HolidayLine{National Foundation Day}{kenkoku}
+\HolidayLine{The Emperor's Birthday}{tennou}
+\HolidayLine{Vernal Equinox Day}{shunbun}
+\HolidayLine{Showa Day}{showa}
+\HolidayLine{Greenery Day}{midori}
+\HolidayLine{Constitution Memorial Day}{kenpou}
+\HolidayLine{National Holiday}{kokumin}
+\HolidayLine{Children's Day}{kodomo}
+\HolidayLine{(substitute holiday)}{furikae}
+\HolidayLine{Marine Day}{umi}
+\HolidayLine{Mountain Day}{yama}
+\HolidayLine{Autumnal Equinox Day}{shunbun}
+\HolidayLine{Respect for the Aged Day}{keirou}
+\HolidayLine{Sports Day}{sports}
+\HolidayLine{Health and Sports Day}{taiiku}
+\HolidayLine{Culture Day}{bunka}
+\HolidayLine{Labor Thanksgiving Day}{kinrou}
+\HolidayLine{National Mourning of Showa}{showa\_taisou}
+\HolidayLine{National Wedding of Akihito}{akihito\_kekkon}
+\HolidayLine{National Wedding of Naruhito}{naruhito\_kekkon}
+\HolidayLine{Core Enthronement Ceremony}{sokuirei}
+\HolidayLine{Coronation Day}{sokui}
+\hline
+\end{tabular}
+\end{table}
+
+\paragraph{Day of week}
+
+Internally, {\PkgName} uses integers to represent day of week, and corresponding
+\texttt{int} constants are defined. In addition to that, Japanese names of those
+are also provided as global \texttt{tl} variables. See
+Table~\tabref{dayofweek}.
+%
+\begin{table}[p]
+\centering\small
+\caption{Day of week}
+\tablabel{dayofweek}
+\begin{tabular}{l|lr|ll}
+\hline
+Day of week & Constant (\texttt{int}) & & Variable (\texttt{tl}) & \\ \hline
+\WeekofdayLine{Monday}{getsu}
+\WeekofdayLine{Tuesday}{ka}
+\WeekofdayLine{Wednesday}{sui}
+\WeekofdayLine{Thursday}{moku}
+\WeekofdayLine{Friday}{kin}
+\WeekofdayLine{Saturday}{do}
+\WeekofdayLine{Sunday}{nichi}
+\hline
+\end{tabular}
+\end{table}
+
+\end{documentation}
+
+%\PrintChanges
+
+\end{document}
+% vim: spell:
diff --git a/language/japanese/BX/bxjalipsum/LICENSE b/language/japanese/BX/bxjalipsum/LICENSE
new file mode 100644
index 0000000000..8ada757fbc
--- /dev/null
+++ b/language/japanese/BX/bxjalipsum/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/BX/bxjalipsum/README.md b/language/japanese/BX/bxjalipsum/README.md
new file mode 100644
index 0000000000..da80c5dd56
--- /dev/null
+++ b/language/japanese/BX/bxjalipsum/README.md
@@ -0,0 +1,91 @@
+BXjalipsum Package
+==================
+
+LaTeX: Dummy text in Japanese
+
+This package enables users to print some Japanese text that can be used
+as dummy text. It is a Japanese counterpart of the lipsum package.
+
+Since there is no well-known nonsense text like Lipsum in the Japanese
+language, the package uses some real text in public domain.
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: pdfTeX / pTeX / upTeX / XeTeX / LuaTeX.
+ * Dependent packages:
+ - intcalc (when using non-e-TeX engines)
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/latex/BXjalipsum
+
+### License
+
+This package is distributed under the MIT License.
+
+The bxjalipsum Package
+----------------------
+
+### Package Loading
+
+ \usepackage{bxjalipsum}
+
+No options are available.
+
+### Usage
+
+ * `\jalipsum[<range>,...]{<key>}`: Prints some paragraphs from the
+ text specified by the key.
+
+ - `iroha` (1 paragraph): The iroha sequence (いろはにほへと…).
+ - `jugemu` (1 paragraph): The "jugemu" name (寿限無寿限無五劫の…).
+ - `jugemuP` (1 paragraph): The "jugemu" name, with some punctuation
+ added in ad hoc manner (寿限無・寿限無、五劫の…).
+ - `wagahai` (33 paragraphs): The first chapter from the novel
+ "吾輩は猫である" (I Am A Cat) written by Natsume Soseki.
+ - `preamble` (4 paragraphs): The preamble of the Constitution of
+ Japan.
+ - `hatsukoi` (4 paragraphs): The whole text of the poem "初恋"
+ (First Love) written by Shimazaki Toson.
+ - `kusamakura` (13 paragraphs): The opening passage from the novel
+ "草枕" (Kusamakura) written by Natsume Soseki.
+
+ Ranges are specified in the form `[-3,7-10,5,12-]`. If ranges are not
+ given, then `[-]` (all paragraphs) will be assumed.
+
+ * `\jalipsumiroha`: The shorthand for `\jalipsum{iroha}`.
+ * `\jalipsumjugemu`: The shorthand for `\jalipsum{jugemu}`.
+ * `\jalipsumjugemuP`: The shorthand for `\jalipsum{jugemuP}`.
+
+### Notices on use with pdfTeX
+
+ * In using with pdfTeX, Japanese (non-ASCII) characters are represented
+ as UTF-8 byte sequences. Thus there must be some mechanism (such as
+ the CJKutf8 package) that will decode such sequences and display the
+ Japanese characters properly.
+
+### Notices for the TeX-programmers
+
+ * All the commands are fully expandable.
+ * The `\jalipsum` command is expanded to the actual text in two steps.
+ * The shorthand commands such as `\jalipsumiroha` are expanded to the
+ actual text in one step.
+ * Each of the paragraph texts consists only of character tokens and
+ optional `\\` (line-break) tokens.
+ * When `\jalipsum` with multiple paragraphs is expanded, each paragraph
+ is joined with `\par` tokens.
+
+Revision History
+----------------
+
+ * Version 0.3a ‹2017/03/01›
+ - Added text “kusamakura”.
+ * Version 0.3 ‹2016/11/06›
+ - Added the support for pdfTeX.
+ * Version 0.2 ‹2016/08/15›
+ - The first public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/BX/bxjalipsum/bxjalipsum.sty b/language/japanese/BX/bxjalipsum/bxjalipsum.sty
new file mode 100644
index 0000000000..83357ff7a7
--- /dev/null
+++ b/language/japanese/BX/bxjalipsum/bxjalipsum.sty
@@ -0,0 +1,1785 @@
+%%
+%% This is file 'bxjalipsum.sty'.
+%%
+%% Copyright (c) 2016 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxjalipsum}[2017/03/01 v0.3a]
+\def\bxjl@pkgname{bxjalipsum}
+
+%% preparation
+\newif\ifbxjl@ok
+\newif\ifbxjl@etex
+\newif\ifbxjl@CJKtilde
+\providecommand\bxDebug[1]{}
+
+%% code guards
+\edef\bxjl@restore@codes{%
+ \catcode33=\the\catcode33%
+ \catcode34=\the\catcode34%
+ \catcode43=\the\catcode43%
+ \catcode45=\the\catcode45%
+ \catcode46=\the\catcode46%
+ \catcode47=\the\catcode47%
+ \catcode58=\the\catcode58%
+ \catcode60=\the\catcode60%
+ \catcode62=\the\catcode62%
+ \catcode96=\the\catcode96%
+ \catcode126=\the\catcode126%
+\relax}
+\catcode33=12 % <!>
+\catcode34=12 % <">
+\catcode43=12 % <+>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode60=12 % <<>
+\catcode62=12 % <>>
+\catcode96=12 % <`>
+\catcode126=13 % <~>
+\AtEndOfPackage{%
+ \bxjl@restore@codes \let\bxjl@restore@codes\relax}
+
+%--------------------------------------- package options
+
+% 'noCJKtilde'/'CJKtilde'
+\DeclareOption{noCJKtilde}{%
+ \bxjl@CJKtildefalse
+}
+\DeclareOption{CJKtilde}{%
+ \bxjl@CJKtildetrue
+}
+% process
+\ExecuteOptions{CJKtilde}
+\ProcessOptions\relax
+
+%--------------------------------------- helpers
+
+%% unique tokens
+\def\bxjl@end{\bxjl@end@}
+\def\bxjl@mt{\bxjl@mt@}
+\let\bxjl@mk\noindent
+
+%% variables
+\newcount\bxjl@cc
+
+%% \bxjl@preamble\CSa\CSb
+\@onlypreamble\bxjl@preamble
+\def\bxjl@preamble#1#2{%
+ \@onlypreamble#2#1#2%
+}
+
+%% \bxjl@burst-`>...
+\let\bxjl@burst\romannumeral
+
+%% \bxjl@burst@stop
+\let\bxjl@burst@stop\space
+
+%% \bxjl@csletcs{<csA>}{<csB>}
+\def\bxjl@csletcs#1#2{%
+ \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname
+}
+
+%% \bxjl@cond\ifXXX...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\bxjl@cond#1\fi{%
+ #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+
+%% \bxjl@ifblank{<text>}{<true>}{<false>}
+\long\def\bxjl@ifblank#1{%
+ \bxjl@ifblank@a#1\bxjl@mt\bxjl@mt\@secondoftwo\@firstoftwo\bxjl@end
+}
+\long\def\bxjl@ifblank@a#1#2\bxjl@mt#3#4#5\bxjl@end{#4}
+
+%--------------------------------------- environment check
+
+%% engine check
+\def\bxjl@next#1{%
+ \edef\bxjl@tmpa{\string#1}\edef\bxjl@tmpb{\meaning#1}%
+ \ifx\bxjl@tmpa\bxjl@tmpb \expandafter\@firstofone
+ \else \expandafter\@gobble
+ \fi
+}
+
+%% \bxjl@engine
+\let\bxjl@engine=b
+\bxjl@next\kanjiskip{\let\bxjl@engine=p}
+\bxjl@next\enablecjktoken{\let\bxjl@engine=u}
+\bxjl@next\luatexversion{\let\bxjl@engine=l}
+\bxjl@next\XeTeXversion{\let\bxjl@engine=l}
+
+%% switchh bxjl@etex
+\bxjl@etexfalse
+\bxjl@next\eTeXversion{\bxjl@etextrue}
+
+%% adjustment
+\ifx b\bxjl@engine\else
+ \bxjl@CJKtildefalse
+\fi
+
+%--------------------------------------- error message
+\ifbxjl@etex %---<*eTeX>
+
+\bxjl@preamble\def\bxjl@decl@error#1#2{%
+ \protected\def#1{%
+ \PackageError\bxjl@pkgname{#2}\@ehc
+ }%
+}
+
+\else %---<*!eTeX>
+
+\newcount\bxjl@err@id
+\bxjl@preamble\def\bxjl@decl@error#1#2{%
+ \advance\bxjl@err@id\@ne
+ \expandafter\bxjl@decl@error@a
+ \csname \bxjl@pkgname[E\the\bxjl@err@id]\expandafter\endcsname
+ \csname ! #2.\endcsname#1%
+}
+\bxjl@preamble\def\bxjl@decl@error@a#1#2#3{%
+ \def#3{#1}\def#1{#2}\let#2\@undefined
+}
+
+\fi %---</eTeX>
+
+%%
+\bxjl@decl@error\bxjl@err@ivrsp{%
+ Invalid range specification%
+}
+\bxjl@decl@error\bxjl@err@ukkey{%
+ Unknown key is given%
+}
+
+%--------------------------------------- arithmetic
+\ifbxjl@etex %---<*eTeX>
+
+%% \bxjl@add@num{<x>}{<y>}
+\def\bxjl@add@num#1#2{%
+ \the\numexpr#1+(#2)\relax
+}
+%% \bxjl@sub@num{<x>}{<y>}
+\def\bxjl@sub@num#1#2{%
+ \the\numexpr#1-(#2)\relax
+}
+
+\else %---<*!eTeX>
+
+%% package
+\RequirePackage{intcalc}
+%% \bxjl@add@num{<x>}{<y>}
+\let\bxjl@add@num\intcalcadd@num
+%% \bxjl@sub@num{<x>}{<y>}
+\let\bxjl@sub@num\intcalcsub@num
+
+\fi %---</eTeX>
+%--------------------------------------- range list parser
+\catcode`\:=4 \catcode`\!=4 % really unique character tokens
+
+%% \bxjl@rx@ifnum{<text>}{<true>}{<false>}
+\def\bxjl@rx@ifnum#1{%
+ \expandafter\bxjl@rx@ifnum@a\bxjl@burst-#1:%
+}
+\def\bxjl@rx@ifnum@a#1:{%
+ \bxjl@ifblank{#1}%
+}
+
+%% \bxjl@rx@split{<text>}\CStrue\CSfalse
+\def\bxjl@rx@split#1{%
+ \bxjl@rx@split@a#1-:%
+}
+\def\bxjl@rx@split@a#1-#2:{%
+ \bxjl@cond\ifx!#2!\fi{%
+ \bxjl@rx@split@c#1:%
+ }{%else
+ \bxjl@rx@split@b#1:#2:%
+ }%
+}
+\def\bxjl@rx@split@b#1:#2-:#3#4{%
+ #3{#1}{#2}%
+}
+\def\bxjl@rx@split@c#1:#2#3{%
+ #3{#1}%
+}
+
+%% \bxjl@rx@splitbrk{<text>}\CStrue\CSfalse
+\def\bxjl@rx@splitbrk#1{%
+ \bxjl@rx@splitbrk@a#1[]:%
+}
+\def\bxjl@rx@splitbrk@a#1[#2]#3:{%
+ \bxjl@cond\ifx!#3!\fi{%
+ \@secondoftwo
+ }{\bxjl@ifblank{#1}{%
+ \bxjl@rx@splitbrk@b#3:{#2}%
+ }{%else
+ \@secondoftwo
+ }}%
+}
+\def\bxjl@rx@splitbrk@b#1[]:#2#3#4{%
+ \bxjl@ifblank{#1}{%
+ #3{#2}%
+ }{%else
+ #4%
+ }%
+}
+
+%% \bxjl@rx@clean@num{<text>}\CScont
+\def\bxjl@next#1{%
+ \def\bxjl@rx@clean@num##1{%
+ \expandafter\bxjl@rx@clean@num@a\number##1#1#1:%
+ }
+ \def\bxjl@rx@clean@num@a##1#1##2:##3{%
+ ##3{##1}%
+ }
+}\bxjl@next{ }
+
+%% \bxjl@rx@seq{<num1>}{<num2>}\CScont
+\def\bxjl@rx@seq#1{%
+ \bxjl@rx@clean@num{#1}\bxjl@rx@seq@a
+}
+\def\bxjl@rx@seq@a#1#2#3{%
+ \bxjl@rx@seq@b#1:#2:!:#3%
+}
+\def\bxjl@rx@seq@b#1:#2:#3:{%
+ \bxjl@cond\ifnum#2<#1 \fi{%
+ \bxjl@rx@seq@c#3:%
+ }{%else
+ \expandafter\bxjl@rx@seq@b\bxjl@burst-`>\bxjl@add@num{#1}{1}:%
+ #2:#3{#1}:%
+ }%
+}
+\def\bxjl@rx@seq@c#1:#2{%
+ \expandafter#2\expandafter{\@gobble#1}%
+}
+
+%% \bxjl@rx@parse{<text>}{<u-limit>}\CStrue\CSfalse
+\def\bxjl@rx@parse#1#2{%
+ \expandafter\bxjl@rx@parse@a\bxjl@burst-`>#1,!,:#2:!:%
+}
+\def\bxjl@rx@parse@a#1,{%
+ \bxjl@cond\ifx!#1\fi{%
+ \bxjl@rx@parse@b
+ }{%else
+ \bxjl@rx@split{#1}\bxjl@rx@parse@c\bxjl@rx@parse@d
+ }%
+}
+\def\bxjl@rx@parse@b#1:#2:#3:#4#5{%
+ \expandafter#4\expandafter{\@gobble#3}%
+}
+\def\bxjl@rx@parse@c#1{%
+ \bxjl@ifblank{#1}{%
+ \bxjl@rx@parse@e{1}%
+ }{\bxjl@rx@ifnum{#1}{%
+ \bxjl@rx@parse@e{#1}%
+ }{%else
+ \bxjl@rx@parse@fail
+ }}%
+}
+\def\bxjl@rx@parse@d#1{%
+ \bxjl@ifblank{#1}{%
+ \bxjl@rx@parse@f{1}{0}%
+ }{\bxjl@rx@ifnum{#1}{%
+ \bxjl@rx@parse@f{#1}{#1}%
+ }{%else
+ \bxjl@rx@parse@fail
+ }}%
+}
+\def\bxjl@rx@parse@e#1#2{%
+ \bxjl@ifblank{#2}{%
+ \bxjl@rx@parse@f{#1}{\maxdimen}%
+ }{\bxjl@rx@ifnum{#2}{%
+ \bxjl@rx@parse@f{#1}{#2}%
+ }{%else
+ \bxjl@rx@parse@fail
+ }}%
+}
+\def\bxjl@rx@parse@f#1{%
+ \bxjl@cond\ifnum#1<1 \fi{%
+ \bxjl@rx@parse@g{1}%
+ }{%else
+ \bxjl@rx@parse@g{#1}%
+ }%
+}
+\def\bxjl@rx@parse@g#1#2#3:#4:{%
+ \bxjl@cond\ifnum#2>#4 \fi{%
+ \bxjl@rx@seq{#1}{#4}\bxjl@rx@parse@h#3:#4:%
+ }{%else
+ \bxjl@rx@seq{#1}{#2}\bxjl@rx@parse@h#3:#4:%
+ }%
+}
+\def\bxjl@rx@parse@h#1#2:#3:#4:{%
+ \expandafter\bxjl@rx@parse@a\bxjl@burst-`>#2:#3:#4#1:%
+}
+
+\catcode`\:=12 \catcode`\!=12
+%--------------------------------------- lipsum public commands
+
+%%<*> \jalipsumiroha
+\@ifdefinable\jalipsumiroha{%
+ \AtEndOfPackage{%
+ \bxjl@csletcs{jalipsumiroha}{bxjl@tx@@iroha/1}%
+ }
+}
+
+%%<*> \jalipsumjugemu
+\@ifdefinable\jalipsumjugemu{%
+ \AtEndOfPackage{%
+ \bxjl@csletcs{jalipsumjugemu}{bxjl@tx@@jugemu/1}%
+ }
+}
+
+%%<*> \jalipsumjugemuP
+\@ifdefinable\jalipsumjugemuP{%
+ \AtEndOfPackage{%
+ \bxjl@csletcs{jalipsumjugemuP}{bxjl@tx@@jugemuP/1}%
+ }
+}
+
+%%<*> \jalipsum[<range>]{<key>}
+\newcommand*{\jalipsum}{%
+ \bxjl@burst-`>\bxjl@jalipsum@a
+}
+\def\bxjl@jalipsum@a#1#{%
+ \bxjl@ifblank{#1}{%
+ \bxjl@jalipsum@c{-}% whole
+ }{%else
+ \bxjl@rx@splitbrk{#1}\bxjl@jalipsum@c\bxjl@jalipsum@b
+ }%
+}
+\def\bxjl@jalipsum@b#1{%
+ \bxjl@err@ivrsp
+}
+\def\bxjl@jalipsum@c#1#2{%
+ \expandafter\bxjl@jalipsum@d\bxjl@burst-`>%
+ \csname bxjl@tc@@#2\endcsname\bxjl@mk{#1}{#2}%
+}
+\def\bxjl@jalipsum@d#1\bxjl@mk#2#3{%
+ \bxjl@cond\ifx\relax#1\fi{%
+ \bxjl@err@ukkey
+ }{%else
+ \bxjl@rx@parse{#2}{#1}\bxjl@jalipsum@e\bxjl@jalipsum@b{#3}%
+ }%
+}
+\def\bxjl@jalipsum@e#1#2{%
+ \bxjl@ifblank{#1}{%
+ \bxjl@burst@stop
+ }{%else
+ \bxjl@jalipsum@f{#2}{}#1\bxjl@end
+ }%
+}
+\long\def\bxjl@jalipsum@f#1#2#3{%
+ \bxjl@cond\ifx\bxjl@end#3\fi{%
+ \bxjl@jalipsum@h#2\bxjl@end
+ }{%else
+ \expandafter\expandafter\expandafter
+ \bxjl@jalipsum@g\csname bxjl@tx@@#1/#3\endcsname
+ \bxjl@mk{#1}{#2}%
+ }%
+}
+\long\def\bxjl@jalipsum@g#1\bxjl@mk#2#3{%
+ \bxjl@jalipsum@f{#2}{#3\par#1}%
+}
+\long\def\bxjl@jalipsum@h#1#2\bxjl@end{%
+ \bxjl@burst@stop#2%
+}
+
+%--------------------------------------- paipo decoder
+
+%% variables
+\let\bxjl@chr\relax
+\let\bxjl@@cr\relax
+\let\bxjl@@iai\relax
+\let\bxjl@tbuf\relax
+\let\bxjl@let@res\relax
+
+%% \bxjl@pdecode\CS{<p-code>}
+\chardef\bxjl@cst@x=10
+\chardef\bxjl@cst@xi=11
+\chardef\bxjl@cst@cxxviii=128
+\chardef\bxjl@cst@clx=160
+\bxjl@preamble\def\bxjl@pdecode#1#2{%
+ \def\bxjl@let@res{\let#1}%
+ \begingroup
+ \bxjl@set@activechar
+ \let\bxjl@@iai\relax\let\bxjl@@cr\relax
+ \let\bxjl@tbuf\@empty\edef\bxjl@next{#2}%
+ \expandafter\bxjl@pdecode@a\bxjl@next00%
+}
+\bxjl@preamble\def\bxjl@pdecode@a#1#2{%
+ \bxjl@cc"#1#2\relax
+ \ifnum\bxjl@cc=\z@
+ \let\bxjl@pdecode@nxt\bxjl@pdecode@e
+ \else\ifnum\bxjl@cc=\bxjl@cst@x
+ \bxjl@pdecode@add\bxjl@@cr
+ \let\bxjl@pdecode@nxt\bxjl@pdecode@a
+ \else\ifnum\bxjl@cc=\bxjl@cst@clx
+ \bxjl@pdecode@add\bxjl@@iai
+ \let\bxjl@pdecode@nxt\bxjl@pdecode@a
+ \else\ifnum\bxjl@cc<\bxjl@cst@cxxviii
+ \let\bxjl@pdecode@nxt\bxjl@pdecode@b
+ \else
+ \expandafter\let\expandafter\bxjl@next
+ \csname bxjl@pc/\number"#1#2\endcsname
+ \ifx\bxjl@next\relax
+ \def\bxjl@pdecode@nxt{\bxjl@pdecode@c#1#2}%
+ \else
+ \let\bxjl@pdecode@nxt\bxjl@pdecode@d
+ \fi
+ \fi\fi\fi\fi
+ \bxjl@pdecode@nxt
+}
+\bxjl@preamble\def\bxjl@pdecode@b{%
+ \bxjl@pdecode@alchr
+ \bxjl@pdecode@a
+}
+\bxjl@preamble\def\bxjl@pdecode@c{%
+ \let\bxjl@pdecode@nxt\bxjl@pdecode@a
+ \bxjl@pdecode@jacod
+}
+\bxjl@preamble\def\bxjl@pdecode@d{%
+ \let\bxjl@pdecode@nxt\bxjl@pdecode@a
+ \expandafter\bxjl@pdecode@jacod\bxjl@next
+}
+\bxjl@preamble\def\bxjl@pdecode@e{%
+ \def\bxjl@@cr{\noexpand\\}%
+ \def\bxjl@@iai{\noexpand~}%
+ \ifbxjl@CJKtilde\else
+ \let\bxjl@@iai\@empty
+ \fi
+ \xdef\bxjl@g@tmpa{\bxjl@tbuf}%
+ \endgroup
+ \bxjl@let@res\bxjl@g@tmpa
+ \let\bxjl@g@tmpa\@empty
+}
+%
+\bxjl@preamble\def\bxjl@pdecode@add#1{%
+ \edef\bxjl@tbuf{\bxjl@tbuf#1}%
+}
+\bxjl@preamble\def\bxjl@pdecode@alchr{%
+ \ifnum\catcode\bxjl@cc=\bxjl@cst@xi
+ \bxjl@get@alchr\bxjl@cc a%
+ \else
+ \bxjl@get@alchr\bxjl@cc 0%
+ \fi
+ \bxjl@pdecode@add\bxjl@chr
+}
+\bxjl@preamble\def\bxjl@pdecode@jachr{%
+ \bxjl@get@jachr\bxjl@cc
+ \bxjl@pdecode@add\bxjl@chr
+}
+%
+\ifx l\bxjl@engine
+ \bxjl@preamble\def\bxjl@pdecode@jacod#1#2#3#4#5#6#7#8{%
+ \bxjl@cc="#5#6#7#8\relax
+ \bxjl@pdecode@alchr
+ \bxjl@pdecode@nxt
+ }
+\else\ifx u\bxjl@engine
+ \bxjl@preamble\def\bxjl@pdecode@jacod#1#2#3#4#5#6#7#8{%
+ \bxjl@cc="#5#6#7#8\relax
+ \bxjl@pdecode@jachr
+ \bxjl@pdecode@nxt
+ }
+\else\ifx p\bxjl@engine
+ \bxjl@preamble\def\bxjl@pdecode@jacod#1#2#3#4#5#6#7#8{%
+ \bxjl@cc=\sjis"#1#2#3#4\relax
+ \bxjl@pdecode@jachr
+ \bxjl@pdecode@nxt
+ }
+\else
+ \chardef\bxjl@UERDX="40
+ \chardef\bxjl@UELDC="E0
+ \chardef\bxjl@UELDB="C0
+ \chardef\bxjl@UELDA="80
+ \mathchardef\bxjl@UEMDB="7FF
+ \bxjl@preamble\def\bxjl@pdecode@jacod#1#2#3#4#5#6#7#8{%
+ \bxjl@cc="#5#6#7#8\relax
+ \bxjl@get@utfchr
+ \bxjl@pdecode@add\bxjl@chr
+ \bxjl@pdecode@nxt
+ }
+ \bxjl@preamble\def\bxjl@get@utfchr{%
+ \let\bxjl@chr\@empty
+ \ifnum\bxjl@cc>\bxjl@UEMDB % 3-byte
+ \bxjl@get@utfchr@a
+ \bxjl@get@utfchr@a
+ \advance\bxjl@cc\bxjl@UELDC
+ \uccode`\~\bxjl@cc \uppercase{\edef\bxjl@chr{~\bxjl@chr}}%
+ \else % 2-byte
+ \bxjl@get@utfchr@a
+ \advance\bxjl@cc\bxjl@UELDB
+ \uccode`\~\bxjl@cc \uppercase{\edef\bxjl@chr{~\bxjl@chr}}%
+ \fi
+ }
+ \bxjl@preamble\def\bxjl@get@utfchr@a{%
+ \@tempcnta\bxjl@cc
+ \divide\bxjl@cc\bxjl@UERDX
+ \@tempcntb-\bxjl@cc \multiply\@tempcntb\bxjl@UERDX
+ \advance\@tempcnta\@tempcntb \advance\@tempcnta\bxjl@UELDA
+ \uccode`\~\@tempcnta \uppercase{\edef\bxjl@chr{~\bxjl@chr}}%
+ }
+\fi\fi\fi
+
+%% \bxjl@get@alchr
+\bxjl@preamble\def\bxjl@get@alchr#1#2{%
+ \uccode`#2=#1\relax
+ \uppercase{\def\bxjl@chr{#2}}%
+}
+
+%% \bxjl@get@jachr
+\bxjl@preamble\def\bxjl@get@jachr#1{%
+ \kansujichar\@ne=#1\relax
+ \edef\bxjl@chr{\kansuji\@ne}%
+}
+
+%% \bxjl@set@activechar
+\ifx b\bxjl@engine
+ \bxjl@preamble\def\bxjl@set@activechar{%
+ \@tempcnta\bxjl@cst@cxxviii
+ \@whilenum{\@tempcnta<\@cclvi}\do{%
+ \catcode\@tempcnta\active
+ \uccode`\~\@tempcnta \uppercase{\let~\relax}% freeze
+ \advance\@tempcnta\@ne}%
+ }
+\else
+ \bxjl@preamble\def\bxjl@set@activechar{}
+\fi
+
+%% \bxjl@pc/<num>
+\def\do#1#2{\@namedef{bxjl@pc/\number"#1}{#2}}
+\do{A1}{81423002}
+\do{A2}{8175300C}
+\do{A3}{8176300D}
+\do{A4}{81413001}
+\do{A5}{814530FB}
+\do{A6}{82F03092}
+\do{A7}{829F3041}
+\do{A8}{82A13043}
+\do{A9}{82A33045}
+\do{AA}{82A53047}
+\do{AB}{82A73049}
+\do{AC}{82E13083}
+\do{AD}{82E33085}
+\do{AE}{82E53087}
+\do{AF}{82C13063}
+\do{B0}{815B30FC}
+\do{B1}{82A03042}
+\do{B2}{82A23044}
+\do{B3}{82A43046}
+\do{B4}{82A63048}
+\do{B5}{82A8304A}
+\do{B6}{82A9304B}
+\do{B7}{82AB304D}
+\do{B8}{82AD304F}
+\do{B9}{82AF3051}
+\do{BA}{82B13053}
+\do{BB}{82B33055}
+\do{BC}{82B53057}
+\do{BD}{82B73059}
+\do{BE}{82B9305B}
+\do{BF}{82BB305D}
+\do{C0}{82BD305F}
+\do{C1}{82BF3061}
+\do{C2}{82C23064}
+\do{C3}{82C43066}
+\do{C4}{82C63068}
+\do{C5}{82C8306A}
+\do{C6}{82C9306B}
+\do{C7}{82CA306C}
+\do{C8}{82CB306D}
+\do{C9}{82CC306E}
+\do{CA}{82CD306F}
+\do{CB}{82D03072}
+\do{CC}{82D33075}
+\do{CD}{82D63078}
+\do{CE}{82D9307B}
+\do{CF}{82DC307E}
+\do{D0}{82DD307F}
+\do{D1}{82DE3080}
+\do{D2}{82DF3081}
+\do{D3}{82E03082}
+\do{D4}{82E23084}
+\do{D5}{82E43086}
+\do{D6}{82E63088}
+\do{D7}{82E73089}
+\do{D8}{82E8308A}
+\do{D9}{82E9308B}
+\do{DA}{82EA308C}
+\do{DB}{82EB308D}
+\do{DC}{82ED308F}
+\do{DD}{82F13093}
+\do{DE}{814A309B}
+\do{DF}{814B309C}
+
+%--------------------------------------- text data
+% Very unfortunately, no single encoding can serve all probable uses of
+% all TeX engines. So I have to give the Japanese text in hex dump....
+% (Non-ASCII in comments is safe, as long as it is in UTF-8.)
+
+%% \bxjl@text{<key>}{<number>}{<p-code>}
+\bxjl@preamble\def\bxjl@text#1#2{%
+ \@tempcnta=#2\relax
+ \expandafter\bxjl@text@a
+ \csname bxjl@tc@@#1\expandafter\endcsname
+ \csname bxjl@tx@@#1/\the\@tempcnta\endcsname
+}
+\bxjl@preamble\def\bxjl@text@a#1#2#3{%
+ \ifnum\ifx#1\relax\z@\else#1\fi<\@tempcnta
+ \edef#1{\the\@tempcnta}%
+ \fi
+ \bxjl@pdecode#2{#3}%
+}
+
+
+%===============================
+%% text 'iroha'
+% The 'Iroha' poem
+\bxjl@text{iroha}{1}{%
+% いろはにほへとちりぬ…
+B2DBCAC6CECDC4C1D8C7D9A6DCB6D6C0DABFC2C8C5D7D1B382EE3090C9B5B8D4CFB9CCBA%
+B4C3B1BBB7D5D2D0BC82EF3091CBD3BEBD%
+}
+
+%===============================
+%% text 'jugemu'
+% The person name from the rakugo tale Jugemu
+\bxjl@text{jugemu}{1}{%
+% 寿限無寿限無五劫の擦…
+8EF55BFF8CC0965096B371218EF55BFF8CC0965096B371218CDC4E948D8552ABC98E4364%
+E6D890D85207DA8A436D778DBB78029798522990856C348B9B9B5AC990856C348D73884C%
+9696672B895F96F2978867659696672B959798A8978867659696672B904898DFB390515B%
+DDD98F8851E6C68F5A4F4FD18F8851E6E54D85EAD78AB967D18E715B50C9E54D85EA8AB9%
+67D18E715B50837030D1834330A4837C30DD837030D1834330A4837C30DD837030D18343%
+30A4837C30DDC9835630B7838530E5B0838A30EA839330F3834B30AC839330F3835630B7%
+838530E5B0838A30EA839330F3834B30AC839330F3C9834F30B0B0838A30EA839330F383%
+5F30C0834330A4834F30B0B0838A30EA839330F3835F30C0834330A4C9837C30DD839330%
+F3837C30DD835230B3837330D4B0C9837C30DD839330F3837C30DD835230B3836930CAB0%
+C992B795778B764E4596BD547DC992B795778F9552A9%
+}
+\bxjl@text{jugemuP}{1}{% with ad hoc punctuations
+% 寿限無・寿限無、五劫…
+8EF55BFF8CC0965096B37121A58EF55BFF8CC0965096B37121A48CDC4E948D8552ABC98E%
+4364E6D890D85207DAA48A436D778DBB78029798522990856C348B9B9B5AC990856C348D%
+73884C9696672BA5895F96F2978867659696672BA5959798A8978867659696672BA49048%
+98DFB390515BDDD98F8851E6C68F5A4F4FD18F8851E6A4E54D85EAD78AB967D18E715B50%
+C9E54D85EA8AB967D18E715B50A4837030D1834330A4837C30DDA5837030D1834330A483%
+7C30DDA4837030D1834330A4837C30DDC9835630B7838530E5B0838A30EA839330F3834B%
+30AC839330F3A4835630B7838530E5B0838A30EA839330F3834B30AC839330F3C9834F30%
+B0B0838A30EA839330F3835F30C0834330A4A4834F30B0B0838A30EA839330F3835F30C0%
+834330A4C9837C30DD839330F3837C30DD835230B3837330D4B0C9837C30DD839330F383%
+7C30DD835230B3836930CAB0C992B795778B764E4596BD547DC992B795778F9552A9A1%
+}
+
+%===============================
+%% text 'wagahai'
+% The first chapter from "吾輩は猫である" (I Am A Cat)
+% Written by Natsume Sōseki (夏目漱石;1867-1916)
+% Text data from Aozora Bunko:
+% http://www.aozora.gr.jp/cards/000148/files/789_14547.html
+\bxjl@text{wagahai}{1}{%
+% 吾輩は猫である。名前…
+8CE1543E94798F29CA944C732B82C53067B1D9A196BC540D914F524DCACF82BE306096B3%
+7121B2A1%
+}
+\bxjl@text{wagahai}{2}{%
+% どこで生れたかとんと…
+82C73069BA82C5306790B6751FDAC0B6C4DDC48CA9898B93965F5382AA304CC2B6C7A189%
+BD4F5582C53067D39496858488C36697B282B63058D282B63058D2BCC08F8A624082C530%
+67836A30CB838330E3B0836A30CB838330E3B08B836CE3B2C3B2C08E964E8B82BE3060B9%
+CA8B4C8A1889AF61B6BCC3B2D9A18CE1543E94798F29CABABA82C530678E6E59CBD2C390%
+6C4EBA8AD49593C4B2B3D3C9A68CA9898BC0A1BCB6D3B1C482C5306795B7805EB8C4BFDA%
+CA8F9166F890B6751FC4B2B3906C4EBA8AD4959392864E2D82C5306788EA4E0094D4756A%
+E0D6737088AB60AAC58EED7A2E91B065CF82C53067B1AFC0BFB382BE3060A1BAC98F9166%
+F890B6751FC4B2B3C9CA8E9E66428158300589E4621181583005A695DF6355B4C38ECF71%
+6EC3904898DFB3C4B2B398628A7182C53067B1D9A1BCB6BCBFC993965F538E9E6642CA89%
+BD4F55C4B2B38D6C8003D3C5B6AFC0B6D795CA522592696BB58BB06050BCB2C4D38E7660%
+1DDCC5B6AFC0A1C082BE306094DE5F7CC98FB6638CC68DDA8F09BED7DAC3835830B9B0C4%
+8E9D6301C18FE34E0A82B03052D7DAC08E9E664289BD4F5582BE3060B6837430D5838F30%
+EF837430D5838F30EFBCC08AB4611F82B6305882AA304CB1AFC082CE3070B6D882C53067%
+B1D9A18FB6638CC98FE34E0A82C530678FAD5C11BC978E843DC1C2B2C38F9166F890B675%
+1FC98AE79854A68CA9898BC0C982AA304CB2DCD5D9906C4EBA8AD49593C4B2B3D3C9C98C%
+A9898B8E6E59CB82C53067B1DBB3A1BAC98E9E664296AD5999C5D3C982BE3060C48E7660%
+1DAFC08AB4611F82B6305882AA304C8DA14ECA82C53067D38E636B8BAFC3B2D9A191E67B%
+2C88EA4E0096D16BDBA6D3AFC3919588C58FFC98FEBBDA82D73079B7CA82B8305AC98AE7%
+985482AA304CC2D9C2D9BCC3CFD982C5306796F285AC8ACA7F3682BE3060A1BFC98CE35F%
+8C944C732BC6D382BE3060B282D4307688A79022AFC082AA304CBADDC595D0724797D68F%
+2AC6CA88EA4E0093785EA6D38F6F51FA89EF4F1ADCBCC08E964E8B82AA304CC5B2A1C9D0%
+C5D782B8305A8AE79854C9905E771F92864E2D82AA304CB1CFD8C693CB7A818B4E8D77BC%
+C3B2D9A1BFB3BCC3BFC98C8A7A74C992864E2DB6D78E9E66428158300582D53077B382D5%
+3077B3C4898C7159A690815439B8A182C73069B3D388F454BDBE82DB307DB8C38EC05B9F%
+C68EE35F31AFC0A1BADA82AA304C906C4EBA8AD49593C988F998F2D1898C715991908349%
+C4B2B3D3C982C53067B1D98E964E8BCAD6B3D4B8BAC98DA09803926D77E5AFC0A1%
+}
+\bxjl@text{wagahai}{3}{%
+% この書生の掌の裏でし…
+BAC98F9166F890B6751FC98FB6638CC997A088CF82C53067BC82CE3070D7B8CAD6B29053%
+5FC38E9D6301C68DBF5750AFC3B5AFC082AA304CA4BC82CE3070D7B8BDD9C494F1975E8F%
+ED5E38C591AC901F97CD529B82C53067895E904B935D8EE2BC8E6E59CBD2C0A18F9166F8%
+90B6751F82AA304C93AE52D5B8C9B68EA981EA95AA520682BE3060B982AA304C93AE52D5%
+B8C9B695AA5206D7C5B282AA304C96B3712188C36697C68AE1773C82AA304C89F45EFBD9%
+A18BB980F882AA304C88AB60AAB8C5D9A1939E523092EA5E958F9552A9B6D7C5B2C48E76%
+601DAFC3B2D9C4A482C73069BBD8C489B997F382AA304CBCC38AE1773CB6D789CE706B82%
+AA304C8F6F51FAC0A1BFDACF82C53067CA8B4C8A1889AF61B6BCC3B2D982AA304CB1C4CA%
+89BD4F55C98E964E8BD4D7B2B8D78D6C8003B48F6F51FABFB3C4BCC3D395AA5206D7C5B2%
+A1%
+}
+\bxjl@text{wagahai}{4}{%
+% ふと気が付いて見ると…
+CCC48B436C1782AA304C95744ED8B2C38CA9898BD9C48F9166F890B6751FCAB2C5B2A1C0%
+B8BBDDB5AFC08C5A514492ED5F1F82AA304C88EA4E009544758BD38CA9898BB4C7A18ACC%
+809D90535FC3C995EA6BCD906589AABBB48E7059FFA6894296A0BCC3BCCFAFC0A1BFC98F%
+E34E0A8DA14ECACF82C53067C98F8A6240C4CA88E19055AFC396B3712188C36697C696BE%
+660ED9B2A18AE1773CA696BE660EB2C3B2D7DAC7B8D7B282BE3060A1CAC3C589BD4F5582%
+C53067D397655BB98E715B5082AA304CB5B6BCB2C4A4C9BFC9BF94879019B28F6F51FABC%
+C38CA9898BD9C494F1975E8FED5E38C692C975DBB2A18CE1543E94798F29CA986D85C1C9%
+8FE34E0AB6D78B7D6025C68DF97B398CB4539FC992864E2DCD8AFC68C4C3D7DAC0C982C5%
+3067B1D9A1%
+}
+\bxjl@text{wagahai}{5}{%
+% ようやくの思いで笹原…
+D6B3D4B8C98E76601DB282C530678DF97B398CB4539FA694879019B28F6F51FABDC48CFC%
+5411B3C691E55927B7C592726C6082AA304CB1D9A18CE1543E94798F29CA92726C60C991%
+4F524DC68DBF5750AFC382C73069B3BCC0D7D6B6DBB3C48D6C8003B4C38CA9898BC0A195%
+CA5225C6BADAC4B2B395AA520695CA5225D38F6F51FAC5B2A1BC82CE3070D7B8BCC38B83%
+6CE3B2C0D78F9166F890B6751F82AA304CCFC08C7D8FCEC697886765C3B8DAD9B6C48D6C%
+8003B495744ED8B2C0A1836A30CB838330E3B0A4836A30CB838330E3B0C48E8E8A66D0C6%
+D4AFC38CA9898BC082AA304C924E8AB0D397886765C5B2A1BFC9B3C192726C60C98FE34E%
+0AA6BBD7BBD7C4959798A882AA304C936E6E21AFC393FA65E582AA304C95E966AEDAB6B6%
+D9A195A0817982AA304C94F1975E8FED5E38C68CB86E1BAFC397886765C0A18B836CE3B7%
+C0B8C3D390BA58F082AA304C8F6F51FAC5B2A18E644ED595FB65B982AA304CC5B2A489BD%
+4F5582C53067D3D6B2B6D7904898DF95A87269C9B1D98F8A6240CF82C53067B1D9BAB3C4%
+8C886C7A90535FC3A6BCC3BFDBD8BFDBD8C492726C60A68DB65DE6D8C689F45EFBD88E6E%
+59CBD2C0A182C73069B3D394F1975E8FED5E38C68BEA82E6BCB2A1BFBAA689E46211969D%
+6162BCC396B37121979D7406D4D8C694879019AFC38D73884CB8C4D6B3D4B8C98E964E8B%
+82C5306789BD4F55C4C5B8906C4EBA8AD495938F4C81EDB28F8A6240CD8F6F51FAC0A1BA%
+BACD9487901993FC5165AFC0D7A482C73069B3C6B6C5D9C48E76601DAFC3927C7AF98A5F%
+57A3C995F65D29DAC08C8A7A74B6D7A4C4B1D9934090B893E05185C6D382AE3050D88D9E%
+8FBCDD82BE3060A1898F7E01CA95734E0D8E76601D8B638B70C5D3C982C53067A4D3BCBA%
+C9927C7AF98A5F57A382AA304C946A7834DAC3B2C5B6AFC0C5D7A48CE1543E94798F29CA%
+C2B2C698488DEF9654508DC689EC99138E806B7BBCC0B6D3926D77E5DADDC982C53067B1%
+D9A188EA4E008EF76A39C988FC852DC4CAD6B8895D4E91AFC0D3C982BE3060A1BAC98A5F%
+57A38DAA6839C98C8A7A74CA8DA14ECA93FA65E5C68E8A81F3D9CF82C530678CE1543E94%
+798F2982AA304C97D796A389C65BB6C98E4F4E0996D16BDBA6964B8A2A96E2554FBDD98E%
+9E6642C992CA901A98488DEFC6C5AFC3B2D9A1BBC3934090B8CDCA94455FCD82D130738D%
+9E8FBCDD82BE3060D3C9C9BADAB6D790E6514882C73069B3BCC391505584B2B695AA5206%
+D7C5B2A1BFC9B3C1C688C36697B8C5D9A495A08179CA8CB86E1BD9A48AA65BD2BBCA8AA6%
+5BD2BCA4894A96E882AA304C8D7E964DAFC397886765D9C4B2B38E6E59CB9696672B82C5%
+3067D3B388EA4E008D8F523BC997507336975C4E8882AA304C8F6F51FA97886765C5B8C5%
+AFC0A18E644ED595FB65B982AA304CC5B2B6D7C4C6B6B896BE660ED9B8C392676696B6BF%
+B3C595FB65B9CD95FB65B9CDC4B1D9B2C38D73884CB8A18DA14ECAB6D78D6C8003B4D9C4%
+BFC98E9E6642CABD82C53067C689C65BB6C993E05185C69487901993FC5165AFC3B5AFC0%
+C982BE3060A1BABA82C530678CE1543E94798F29CA94DE5F7CC98F9166F890B6751F88C8%
+4EE58A4F5916C9906C4EBA8AD49593A68DC4518D82D130738CA9898BD982D73079B78B40%
+6A5F89EF4F1AC69198906D8BF69047BCC0C982C53067B1D9A191E67B2C88EA4E00C688A7%
+9022AFC0C982AA304CB5BBDD82C53067B1D9A1BADACA914F524DC98F9166F890B6751FD6%
+D888EA4E0091775C6497904E71965C66B4C595FB65B982C530678CE1543E94798F29A68C%
+A9898BD9D494DB5426D4B2B7C5D8E8F298388BD87B4BA6C2B6DD82C53067955C8868CD9D%
+65629BD88F6F51FABCC0A1B2D4BADACA91CA99C496DA76EE82BE3060C48E76601DAFC0B6%
+D78AE1773CA6C882D43076AFC3895E904BA693565929C694434EFBBEC3B2C0A1BCB6BCCB%
+D382B63058B2C9C48AA65BD2B2C9C6CA82C73069B3BCC3D389E46211969D616282AA304C%
+8F6F51FA97886765DDA18CE1543E94798F29CA8DC4518D82D13073B5BBDDC98C849699A6%
+8CA9898BC391E453F08F8A6240CD94879019B28FE34E0AAFC0A1BDD9C48AD49593D3C5B8%
+CFC0938A629582B030528F6F51FABBDAC0A18CE1543E94798F29CA938A629582B030528F%
+6F51FABBDAC3CA94879019B28FE34E0AD8A494879019B28FE34E0AAFC3CA938A629582B0%
+30528F6F51FABBDAA489BD4F5582C53067D393AF540C82B630588E964E8BA68E6C56DB8C%
+DC4E9495D5904D8C4A7E70D895D48FD4BCC0C9A68B4C8A1889AF61B6BCC3B2D9A1BFC98E%
+9E6642C6B5BBDDC4895D4E91B38ED28005CAC2B882C33065B8B2D4C6C5AFC0A1BAC98AD4%
+9593B5BBDDC98E4F4E09946E99ACA698F75078DD82C53067BAC995D48FD495F15831A6BC%
+C3D4AFC3B6D7A4D4AFC48BB980F8C9E17C75DE82AA304C89BA4E0BD8C0A18CE1543E9479%
+8F2982AA304C8DC567008CE35F8CC6C2CFD08F6F51FABBDAD6B3C4BCC0C4B7C6A4BAC989%
+C65BB6C98EE54E3B906C4EBA82AA304C919B9A1281583005BCB289BD4F5582BE3060C4B2%
+B2C582AA304CD78F6F51FAC397886765C0A189BA4E0B8F975973CA8CE1543E94798F29A6%
+82D43076D789BA4E0B82B03052C38EE54E3B906C4EBAC995FB65B9CD8CFC5411B9C3BAC9%
+8F685BBFC5BCC98FAC5C0F944C732B82AA304CB2B8D78F6F51FABCC3D38F6F51FABCC3D3%
+8CE45FA191E453F08F8A6240CD8FE34E0AAFC397886765C38DA256F0D8CFBDC4B2B3A18E%
+E54E3B906C4EBACA95409F3BC989BA4E0BC98D959ED2B296D16BDBA69451649AD8C582AA%
+304CD78CE1543E94798F29C98AE79854A6BC82CE3070D7B892AD773AD2C3B5AFC082AA30%
+4CA4D482AA304CC3BFDDC5D793E05185CD92757F6EB2C3D4DAC4B2AFC0CFCF899C5965CD%
+9487901993FC5165AFC3BCCFAFC0A18EE54E3B906C4EBACAB1CFD88CFB53E3A695B7805E%
+B6C7906C4EBAC48CA9898BB4C0A189BA4E0B8F975973CA8CFB53E390C960DCBCBFB3C68C%
+E1543E94798F29A691E453F08F8A6240CD9D65629BD88F6F51FABCC0A1B6B8BCC38CE154%
+3E94798F29CAC2B2C6BAC989C65BB6A68EA981EA95AA5206C98F5A4F4F89C65BB6C48BC9%
+6975D2D98E964E8BC6BCC0C982C53067B1D9A1%
+}
+\bxjl@text{wagahai}{6}{%
+% 吾輩の主人は滅多に吾…
+8CE1543E94798F29C98EE54E3B906C4EBACA96C56EC591BD591AC68CE1543E94798F29C4%
+8AE79854A68D875408BED98E964E8B82AA304CC5B2A1904580778BC6696DCA8BB365598E%
+745E2B82BE3060BFB382BE3060A18A775B668D5A6821B6D78B415E30D9C48F497D4293FA%
+65E58F9166F88DD6658EC69487901993FC5165AFC082AC304ED8CEC4DD82C730698F6F51%
+FAC397886765D98E964E8B82AA304CC5B2A189C65BB6C9D3C9CA91E5592795CF5909C595%
+D752C98BAD5F3789C65BB682BE3060C48E76601DAFC3B2D9A193965F53906C4EBAD395D7%
+52C98BAD5F3789C65BB682C53067B1D9B6C982B23054C4B88CA9898BBEC3B2D9A1BCB6BC%
+8EC05B9F8DDB969BCAB3C1C9D3C982AA304CB2B3D6B3C58BCE52E495D752C989C65BB682%
+C53067CAC5B2A18CE1543E94798F29CA8E9E66428158300594455FCD82D1307391AB8DB3%
+C694DE5F7CC98F9166F88DD6658EA694608997B2C38CA9898BD982AA304CA494DE5F7CCA%
+D6B8928B663C90515BDDA6BCC3B2D98E964E8B82AA304CB1D9A18E9E66428158300593C7%
+8AADD0B6B9C3B1D9967B672CC98FE34E0AC69FB56D8EA6C0D7BCC3B2D9A194DE5F7CCA88%
+DD80C38EE35F3182C5306794E776AE9586819AC99046827282AA304C92576DE189A99EC4%
+90468272A691D15E2F82D13073C392655F3E97CD529BC9C5B295734E0D8A886D3B94AC6E%
+8CC592A55FB48CF35019A6B1D7DCBCC3B2D9A1BFC995C87656C691E5592794D198EFA690%
+4898DFB3A191E5592794D198EFA6904898DFAFC08CE35F8C82C53067835E30BF834A30AB%
+835730B8838430E4835830B9835E30BFB0835B30BCA688F998F2D1A188F998F2DD82BE30%
+608CE35F8C82C530678F9166F895A87269A6CBDB82B03052D9A193F14E8C8E4F4E098379%
+30DAB0835730B893C78AADD1C496B07720B8C5D9A19FB56D8EA6967B672CC98FE34E0ACD%
+90825782D7BDA1BADA82AA304C94DE5F7CC996886BCE96E9591C8C4A7E70D895D48FD4BD%
+93FA65E589DB8AB282C53067B1D9A18CE1543E94798F29CA944C732BC582AA304CD78E9E%
+6642815830058D6C8003B4D98E964E8B82AA304CB1D9A18BB365598E745E2BC4B2B3D3C9%
+CA8EC05B9FC68A79697DC5D3C982BE3060A1906C4EBA8AD49593C490B6751FDAC0D78BB3%
+65598E745E2BC4C5D9C68CC09650D9A1BADDC5C690515BDDC3B2C38BCE52E4CFD9D3C9C5%
+D7944C732BC682C53067D38F6F51FA97886765C78E964E8BCAC5B2C4A1BFDA82C53067D3%
+8EE54E3B906C4EBAC6895D4E91DCBED9C48BB365598E745E2BCE82C73069C2D7B2D3C9CA%
+C5B2BFB382C5306794DE5F7CCA974653CB9242905482AA304C97886765D993785EA6C689%
+BD4F55C4B6B6DDC4B695734E0D95BD5E73A696C29CF4D7BCC3B2D9A1%
+}
+\bxjl@text{wagahai}{7}{%
+% 吾輩がこの家へ住み込…
+8CE1543E94798F2982AA304CBAC989C65BB6CD8F5A4F4FD08D9E8FBCDD82BE306093965F%
+538E9E6642CAA48EE54E3B906C4EBA88C84EE58A4F5916C9D3C9C6CACAC5CA82BE306095%
+734E0D906C4EBA965D671B82C53067B1AFC0A182C73069BACD8D73884CAFC3D392B58DF3%
+C895744ED8B9D7DAC3918A76F88EE8624BC6BCC3B8DA8EE8624B82AA304CC5B6AFC0A1B2%
+B6C692BF73CD8F6491CDBBDAC5B6AFC0B6CAA48DA14ECA93FA65E5C68E8A81F3D9CF82C5%
+306796BC540D914F524DBBB4C2B9C3B8DAC5B2C982C53067D395AA5206D9A18CE1543E94%
+798F29CA8E644ED595FB65B982AA304CC5B2B6D7A48F6F51FA9788676593BE5F97D98CC0%
+9650D88CE1543E94798F29A693FC5165DAC3B8DAC08EE54E3B906C4EBAC99654508DC6B2%
+D98E964E8BA6C2C4D2C0A192A9671D8EE54E3B906C4EBA82AA304C905665B095B7805EA6%
+93C78AADD1C4B7CA954B5FC582B8305A94DE5F7CC99547819DC98FE34E0AC68FE64E57D9%
+A194DE5F7C82AA304C928B663C90515BDDA6BDD9C4B7CA954B5FC582B8305ABFC9947780%
+CC92864E2DC68FE64E57D9A1BADACAB1C582AA304CC18EE54E3B906C4EBA82AA304C8D44%
+597DB7C4B2B396F38A3382C53067CAC5B282AA304C95CA5225C68D5C69CBB28EE8624B82%
+AA304CC5B6AFC0B6D7D4D1A693BE5F97DDC982C53067B1D9A1BFC98CE35F8CB2DBB2DB8C%
+6F7D4C8CB19A13C98FE34E0AA492A9671DCA94D198EF9F436AC3C98FE34E0AA496E9591C%
+CAE07870ACE09D71F5C98FE34E0AA4935659298B436C17C9D6B2928B663CCA9EBB693D91%
+A45074CD90515BDDD98E964E8BC4BCC0A1BCB6BC88EA4E0094D4756A90535FC38E9D6301%
+C98D44597DB2C9CA96E9591CC693FC5165AFC3BABAC9B3C1C98FAC5C0F8B9F4F9BC99051%
+5BDD8FB05E8ACDD382AE3050D88D9E8FBCDD82C53067B2AFBCAEC6C8D98E964E8B82C530%
+67B1D9A1BAC98FAC5C0F8B9F4F9BC4B2B3C9CA8CDC4E94C2C48E4F4E09C282C5306796E9%
+591CC6C5D9C493F14E8C906C4EBA82AA304C88EA4E00C28FB05E8ACD93FC5165AFC388EA%
+4E008AD49593CD90515BDDD9A18CE1543E94798F29CAB2C282C53067D394DE5F7C93997B%
+49C992864E2D8AD49593C68CC85DF1DAA697655BB9D982D73079B7975D4F59926E5730A6%
+8CA9898B8F6F51FABCC382C73069B3C6B6A4BAB3C6B68A845272D88D9E8FBCD1C982C530%
+67B1D982AA304CA4895E904B88AB60AAB88FAC5C0F8B9F4F9BC988EA4E00906C4EBA82AA%
+304C8AE1773CA690C19192CFBD82AA304C8DC567008CE35F8C91E5592795CF5909C58E96%
+4E8BC6C5D9A18FAC5C0F8B9F4F9BCA815C2015815C2015BAC4C68FAC5C0FBBB295FB65B9%
+82AA304C8EBF8CEA82AA304CDCD9B2815C2015815C2015944C732B82AA304C97886765C0%
+944C732B82AA304C97886765C0C4B2AFC396E9591C92864E2D82C53067D389BD4F5582C5%
+3067D391E55927B7C590BA58F082C530678B836CE3B78F6F51FABDC982C53067B1D9A1BD%
+D9C497E14F8BC9905F795E8C6F7D4C88DD80C38EE35F3190AB6027C98EE54E3B906C4EBA%
+CA954B5FC582B8305A8AE1773CA6BBCFBCC38E9F6B21C9959490E889AE5C4BB6D794F298%
+DB82D130738F6F51FABCC3B8D9A18CBB73FEC6BEDD82BE3060AFC3C582C73069CA95A872%
+698E77630782C53067904B5C3B82D8307AC0A6CB82C73069B8924053E9B6DAC0A1%
+}
+\bxjl@text{wagahai}{8}{%
+% 吾輩は人間と同居して…
+8CE1543E94798F29CA906C4EBA8AD49593C493AF540C8B8F5C45BCC394DE5F7C93997B49%
+A68ACF89B38E405BDFBDDA82CE3070BDD9CE82C73069A494DE5F7C93997B49CA89E46211%
+98D45118C5D3C982BE3060C4926665AD8CBE8A00BE82B43056D9A693BE5F97C5B2D6B3C6%
+C5AFC0A1BAC4C68CE1543E94798F2982AA304C8E9E66428158300593AF540CE5CE887EBD%
+D98FAC5C0F8B9F4F9BC982B23054C4B7C68E8A81F3AFC3CA8CBE8A008CEA8A9E93AF540C%
+926665AD82C53067B1D9A18EA981EA95AA5206C98F9F52DD8EE8624BC58E9E6642CA906C%
+4EBAA68B749006BBC6BCC0D8A493AA982DCD91DC888BA6B682D43076BEC0D8A49D65629B%
+D88F6F51FABCC0D8A4CDAFC2B2C992864E2DCD899F62BCBC8D9E8FBCDD82BE3060D8BDD9%
+A1BCB6D38CE1543E94798F29C995FB65B982C530678FAD5C11BC82C53067D38EE8624B8F%
+6F51FABCA6BCD6B3D3C9C5D789C65BB693E05185918D7DCF82AA304CB6D882C5306792C7%
+8FFDB289F45EFBBCC394978FEB8A515BB3A689C152A0B4D9A1BAC98AD49593D3C1AEAFC4%
+8FF4757382C5306792DC722AA6968178E8B282BE3060D78DD77D308C4E541B82AA304C94%
+F1975E8FED5E38C6937B6012AFC3BFDAB6D797655BB988D56613C68DC05EA7957E6577CD%
+93FC5165DAC5B2A191E453F08F8A6240C994C2677FC98AD4959382C5306791BC4ED682AA%
+304CE8FA986BB4C3B2C3D388EA4E008CFC541195BD5E738B436C17C5D3C982C53067B1D9%
+A18CE1543E94798F29C991B85C0A8C68656CBDD98BD87B4B8CFC5411C99492767D8C4E54%
+1BC582C73069CA88A79022B393785EA696886BCEC6906C4EBA8AD49593CE82C730699573%
+4E0D906C4EBA8FEE60C5C5D3C9CAC5B2C48CBE8A00AFC3B5D7D9D9A19492767D8C4E541B%
+CA90E6514893FA65E58BCA7389C9D6B3C58E715B50944C732BA68E6C56DB9544758B8E59%
+7523CFDAC0C982C53067B1D9A1C4BADB82AA304CBFBAC989C65BB6C98F9166F890B6751F%
+82AA304C8E4F4E0993FA65E596DA76EEC6BFB2C2A697A088CFC992726C60CD8E9D6301AF%
+C38D73884CAFC38E6C56DB9544758BC582AA304CD78AFC68C4C3C397886765C0BFB382BE%
+3060A19492767D8C4E541BCA97DC6D99A697AC6D41BCC3BFC988EA4E00959490E88E6E59%
+CB8F497D42A698628A71BCC08FE34E0AA482C73069B3BCC3D389E4621193997B49944C73%
+2B91B065CF82AA304C906589AA8E715B50C988A4611BA68AAE5B8CB8BCC394FC7F8EBCB2%
+89C65BB691B065CF9349768490B6751F8A886D3BA6BDD9C6CA906C4EBA8AD49593C490ED%
+6226AFC3BADAA69996527F96C56EC5BEC882CE3070C5D7C7C4B2DCDAC0A188EA4E008158%
+3005D3AFC4D3C98B638B70985F8AD6C48E76601DB3A1CFC097D796A3D8C98E4F4E0996D1%
+6BDB8C4E541BC582C73069CA906C4EBA8AD4959382AA304C8F8A6240974C67098CA06A29%
+C4B2B38E964E8BA689F089E3BCC3B2C5B2C4B2AFC391E55927C695AE61A48A536168BCC3%
+B2D9A18CB351439788676589E462118158300593AF540C91B065CF8AD4959382C53067CA%
+96DA76EE8E68523AC993AA982D82C53067D3E9DD9C21C9E46081CD82C53067D388EA4E00%
+94D4756A90E65148C68CA9898B95744ED8B9C0D3C982AA304CBADAA6904898DFB38CA06A%
+299798522982AA304CB1D9D3C9C4C5AFC3B2D9A1D3BC918A76F88EE8624B82AA304CBAC9%
+8B4B898F96F17D04A68EE75B88D7C5B9DA82CE30709872815597CD529BC691698A34B4C3%
+91505584B2B8D7B2C9D3C982BE3060A1BCB6D9C694DE5F7C93997B49906C4EBA8AD49593%
+CA9F7C6BEBD3BAC98ACF89B3944F5FF582AA304CC5B2C48CA9898BB4C389E4621193997B%
+4982AA304C8CA9898B95744ED8B9C08CE45FA1927999B391968D70CA954B5FC582B8305A%
+94DE5F7C93997B49C9C0D2C697A963A09244596ABED7D9D9C982C53067B1D9A194DE5F7C%
+93997B49CABFC98BAD5F3797CD529BA6978A983CDD82C5306790B36B6393965F53C68CE1%
+543E906C4EBA82AA304C904898DFB293BE5F9782D73079B7D3C9A69244596AAFC3BDCFBC%
+C3B2D9A19492767D8C4E541BCA8C528ECD906C4EBAC989C65BB6C6B5D88E4F4E0996D16B%
+DB8C4E541BCA91E34EE38CBE8A00C98EE54E3B906C4EBAA68E9D6301AFC3B2D9A18CE154%
+3E94798F29CA8BB365598E745E2BC989C65BB6C68F5A4F4FDD82C53067B2D982BE3060B9%
+A4BADDC58E964E8BC68AD695A2BDD9C497BC4E218C4E541BD6D8D3D1BCDB8A79697D9356%
+592982C53067B1D9A1C082BE3060BFC993FA65E5BFC993FA65E582AA304C82C73069B3C6%
+B6BAB3C6B691979001D7DADA82CE3070D6B2A1B2B8D7906C4EBA8AD4959382BE3060AFC3%
+A4BFB3B2C2CF82C53067D389686804B4D98E964E8BD3B1D9CFB2A1CFB18B436C17A68969%
+6C38B8944C732BC98E9E664290DF7BC0A691D25F85C282AA304CD6B6DBB3A1%
+}
+\bxjl@text{wagahai}{9}{%
+% 我儘で思い出したから…
+89E4621198D4511882C530678E76601DB28F6F51FABCC0B6D7C1AEAFC48CE1543E94798F%
+29C989C65BB6C98EE54E3B906C4EBA82AA304CBAC989E4621198D4511882C530678EB859%
+3194736557BCC098628A71A6BCD6B3A18CB3514397886765BAC98EE54E3B906C4EBACA89%
+BD4F55C4B2AFC3906C4EBAC68F9F52DDDAC38F6F51FA97886765D98E964E8BD3C5B282AA%
+304CA489BD4F55C682C53067D3D6B88EE8624BA68F6F51FABCC082AA304CD9A1946F4FF3%
+8BE553E5A6D4AFC3CEC4C482AC304EBDCD938A62958F9166F8A6BCC0D8A4905665B091CC%
+4F538E8D8A69A696BE660E90AF661FCD8F6F51FABCC0D8A48AD4959388E19055B282BE30%
+60D7B9C9897082F195B66587A6B6B2C0D8A48E9E6642C6D6D9C48B7C5F13C68BC351DDAF%
+C0D8A497778B21A68F4B7FD2AFC0D8A4CFC0B1D9C4B7CA839430F4834030A1834330A483%
+4930AA838A30EA839330F3C582C73069A6837530D6B0837530D6B096C29CF4D7BCC0D8BD%
+D982AA304CA48B436C17C993C56BD2C58E964E8BC6CAA482C73069DAD3BADAD395A87269%
+C6C5AFC3B5D7DDA1BFC995C87656D4D88F6F51FABDC488DD80C38EE35F31C995C87656C6%
+B2D4C6944D71B190535FC382BE3060A18CE35F8C89CB67B6C992864E2D82C5306797778B%
+21A6B3C0AFC3A48BDF8FD18F8A624082C530678CE35F8C89CB67B690E6514890B6751FC4%
+9FD36E3E96BC540DA6C2B9D7DAC3B2D9C6D38AD695A2BE82B8305A88EA4E008CFC541195%
+BD5E738B436C17C5D3C982C53067A4D4CAD8BADACA95BD5E73C98F405B9790B776DBC6C3%
+8CF35019A68C4A7E7095D48FD4BCC3B2D9A1D0DDC582AA304CBFD78F405B9790B776DB82%
+BE3060C490815439B78F6F51FABDB8D7B282C53067B1D9A1BAC98EE54E3B906C4EBA82AA%
+304C82C73069B3B2B38D6C8003C6C5AFC0D3C9B68CE1543E94798F29C98F5A4F4FD08D9E%
+8FBCDD82C53067B6D788EA4E008C8E670882CE3070B6D88CE35F8CC9B1D98C8E6708C98C%
+8E67088B8B7D6693FA65E5C6A491E55927B7C595EF5305D0A692F163D082B03052C3B1DC%
+C082BE3060BCB88B415E30AFC397886765C0A189BD4F55A694838CB7AFC397886765C0C9%
+B6C48E76601DB3C490856C348DCA5F698A477D758BEF5177C496D16BDB954D7B46C4838F%
+30EF836230C3836730C8837D30DE839330F3C4B2B38E867D1982C530678DA14ECA93FA65%
+E5B6D797778B21D4946F4FF38BE553E5A6D4D2C38A477D75A6B6B88C886C7A90535FC3C4%
+8CA9898BB4C0A189CA679CBCC397827FCC93FA65E5B6D793965F5395AA5206C98AD49593%
+C4B2B3D3C9CA96886BCE93FA65E596886BCE93FA65E58F9166F88DD6658E82C53067928B%
+663C90515BDDD3BCC5B282C530678A477D7582CE3070B6D8B6B2C3B2D9A1BCB6BCBFC9B6%
+B78FE34E0A82B03052C0D3C9A68CA9898BD9C489BD4F55A6B6B2C0D3C9D4D7924E8AB0C6%
+D38AD3945192E85B9A82AA304CC2B6C5B2A193965F53906C4EBAD3B1CFD88AC37518B8C5%
+B2C48E76601DAFC0D3C9B6A4B1D993FA65E5BFC9974653CB906C4EBA82C5306794FC7F8E%
+8A775B66C4B6A6D4AFC3B2D9906C4EBA82AA304C97886765C08E9E6642C689BA4E0BC9D6%
+B3C598628A71A6BCC3B2D9C9A695B7805EB2C0A1%
+}
+\bxjl@text{wagahai}{10}{%
+% 「どうも甘くかけない…
+A282C73069B3D38AC37518B8B6B9C5B2D3C982BE3060C8A1906C4EBAC9A68CA9898BD9C4%
+89BD4F5582C53067D3C5B2D6B382BE306082AA304C8EA981EAD7954D7B46A6C4AFC38CA9%
+898BD9C48DA14ECA8D5866F4C9D6B3C6D182B8305AB6BCB88AB4611F82B8305AD9A3BADA%
+CA8EE54E3B906C4EBAC98F718FF089F961D082C53067B1D9A1C5D9CE82C730698DBC8A50%
+D8C9C5B28F8851E682BE3060A194DE5F7CC9974653CBCA8BE091D1898F7E01C98AE1773C%
+8BBE93E1897A8D8AC68EE54E3B906C4EBAC98AE79854A68CA9898BC582AA304CD7A4A2BF%
+B38F89521DD2B6D78FE34E0A8EE8624BC6CAB6B9C5B2BBA491E67B2C88EA4E008EBA5BA4%
+93E05185C9917A60F3919C50CF82CE3070B6D882C5306789E6753B82AA304CB6B9D996F3%
+8A33C9D3C982C53067CAC5B2A190CC6614BC88C84EE591BE592A97985229C991E5592789%
+C65BB6834130A2839330F3836830C9838C30EC834130A2A5836630C7838B30EBA5835430%
+B5838B30EB836730C882AA304C8CBE8A00AFC08E964E8B82AA304CB1D9A189E6753BA6B6%
+B8C5D789BD4F5582C53067D38EA981EA91527136BFC995A87269A68ECA5199BEA1935659%
+29C690AF661F92438FB0B1D8A1926E5730C69849973289D883EFB1D8A194F298DB82D430%
+76C68BD779BDB1D8A191968D70D9C68F627363B1D8A192726C60C68BE091D18B9B9B5AB1%
+D8A18CCD67AF96D86728C68AA65BD2E9EB9D09B1D8A18EA981EA91527136CABADA88EA4E%
+00959D5E45C991E559278A886D3B89E6753BC5D8C4A182C73069B382BE30608C4E541BD3%
+89E6753BD7BCB289E6753BA6B6BAB3C48E76601DB3C5D7C1C48ECA519990B6751FA6BCC0%
+D7A3%
+}
+\bxjl@text{wagahai}{11}{%
+% 「へえアンドレア・デ…
+A2CDB4834130A2839330F3836830C9838C30EC834130A2A5836630C7838B30EBA5835430%
+B5838B30EB836730C882AA304CBFDDC58E964E8BA6B2AFC08E964E8B82AA304CB1D9B6B2%
+A1C1AFC4D3926D77E5D7C5B6AFC0A1C5D9CE82C73069BAD8ACD3AFC4D382BE3060A18EC0%
+5B9FC6BFC992CA901AD882BE3060A3C48EE54E3B906C4EBACA96B3712188C36697C68AB4%
+611F90535FC3BCC3B2D9A18BE091D1898F7E01C997A088CFC6CA9A7D5632B9D9D6B3C58F%
+CE7B1182AA304C8CA9898BB4C0A1%
+}
+\bxjl@text{wagahai}{12}{%
+% その翌日吾輩は例のご…
+BFC997827FCC93FA65E58CE1543E94798F29CA97E14F8BC982B23054C4B89EBB693D91A4%
+5074C68F6F51FAC390535FC38E9D630191505584B8928B663C90515BDDA6BCC3B2C0D7A4%
+8EE54E3B906C4EBA82AA304C97E14F8BC6C5B88F9166F88DD6658EB6D78F6F51FAC39788%
+6765C38CE1543E94798F29C98CE35F8CDB82C5306789BD4F55B6BCB7D8C6D4AFC3B2D9A1%
+CCC48AE1773C82AA304C8A6F899AD2C389BD4F55A6BCC3B2D9B6C488EA4E0095AA520682%
+CE3070B6D88DD77D3096DA76EEC68AE1773CA6B1B9C38CA9898BD9C4A494DE5F7CCA975D%
+4F59944F5FF5D3C5B8834130A2839330F3836830C9838C30EC834130A2A5836630C7838B%
+30EBA5835430B5838B30EB836730C8A68BC96975D28D9E8FBCDD82C53067B2D9A18CE154%
+3E94798F29CABAC9974C6709976C69D8A68CA9898BC38A6F899AB482B8305A8EB859318F%
+CE7B11BDD9C9A68BD6798182B6305893BE5F97C5B6AFC0A194DE5F7CCA94DE5F7CC99746%
+53CBC69D8863F69D8963C4BED7DAC0D98C8B7D5089CA679CC4BCC3CF82B8305A8EE8624B%
+8F89521DD2C68CE1543E94798F29A68ECA519990B6751FBCC2C2B1D9C982C53067B1D9A1%
+8CE1543E94798F29CABD82C53067C68F5C534195AA520690515BDDC0A18C876B20904C4F%
+3882AA304CBCC0B8C3C0CFD7C5B2A1BCB6BCBEAFB6B88EE54E3B906C4EBA82AA304C944D%
+71B190535FC3C6954D7B46A68EB757F7AFC3B2D9C9A693AE52D5B2C3CA8B436C17C993C5%
+6BD282BE3060C48E76601DAFC3A482B63058AFC490688F9B965F68D2BCC3B5AFC0A194DE%
+5F7CCA8DA14ECA8CE1543E94798F29C997D68F2A8A665ED3A6B6B78FE34E0A82B03052C3%
+8AE79854C9B1C0D8A6904682728DCA5F69AFC3B2D9A18CE1543E94798F29CA8EA981EA94%
+92767DBDD9A18CE1543E94798F29CA944C732BC4BCC38C886C7ABCC38FE34E0A8FE64E57%
+C98F6F51FA9788676582C53067CAC5B2A1947780CCC4B2B296D16BDB95C04E26C4B2B28A%
+E79854C991A290208DEC4F5CC4B2B2B1B4C391BC4ED6C9944C732BC68F9F52DDD9C4CA8C%
+886C7ABCC38E76601DAFC3B5D7DDA1BCB6BCB2B8D795734E0D8AED566897CA91CFC98CE1%
+543E94798F2982C53067D3A48DA14ECA8CE1543E94798F29C98EE54E3B906C4EBAC69560%
+63CFB78F6F51FABBDAC2C2B1D9D6B3C596AD5999C58E7059FFC4CAA482C73069B3BCC3D3%
+8E76601DDCDAC5B2A191E67B2C88EA4E009046827282AA304C88E19055B3A18CE1543E94%
+798F29CA94676CE28E7A65AF8E597523C9944C732BC982B23054C4B889A99EC4A68ADC54%
+2BD2D992576DE18A44707090468272C68EBD6F06C982B23054C4B794C1659193FC5165D8%
+C994E776AE9586819AA6974C6709BCC3B2D9A1BADA82BE3060B9CA924E8AB082AA304C8C%
+A9898BC3D38B5E7591B382D73079B6D782B43056D98E964E8B8EC05B9FC48E76601DB3A1%
+BCB6D9C68DA14ECA8EE54E3B906C4EBAC98DCA5F6990468272A68CA9898BD9C4A489A99E%
+C482C53067D3C5B9DA82CE30708D959ED282C53067D3C5B2A48A4470709046827282C530%
+67D3C5B9DA82CE30708A8C89109046827282C53067D3C5B2A4BBDA82CE3070C4C3BADAD7%
+A68CF04EA482BA305CC09046827282C53067D3C5B2A1C082BE306088EA4E008EED7A2EC9%
+9046827282C53067B1D9C4B2B3D6D8CEB6C6955D8A55BC95FB65B9C9C5B29046827282C5%
+3067B1D9A1BFC98FE34E0A95734E0D8E76601D8B638B70C58E964E8BCA8AE1773C82AA30%
+4CC5B2A1D3AFC4D3BADACA90515BDDC3B2D9C4BADBA68ECA519990B6751FBCC0C982BE30%
+60B6D796B37121979D7406D3C5B282AA304C8AE1773CD7BCB28F8A6240BBB48CA9898BB4%
+C5B2B6D796D376F2944C732B82BE3060B690515BDDC3B2D9944C732B82BE3060B694BB52%
+2491527136BCC5B2C982C53067B1D9A18CE1543E94798F29CA90535FC392864E2DCBBFB6%
+C6B2B8D7834130A2839330F3836830C9838C30EC834130A2A5836630C7838B30EBA58354%
+30B5838B30EB836730C882C53067D3BADA82C53067CABCD6B382AA304CC5B2C48E76601D%
+AFC0A1BCB6BCBFC9944D71B190535FC3C6CA8AB4611F959E670DBE82B43056D9A693BE5F%
+97C5B2A1C5D982D73079B8C5D793AE52D5B682B8305AC6B5AFC3D4D8C0B2C48E76601DAF%
+C082AA304CA4BBAFB7B6D78FAC5C0F95D64FBF82AA304C8DC350ACB3BCC3B2D9A190678E%
+AB93E05185C98BD87B4B93F78089CAD182B8305AD182B8305ABDD9A18DC56700918165E9%
+88EA4E0095AA5206D397507336975C4E8882AA304C8F6F51FA97886765C78E644ED58B56%
+5100C4C5AFC0B6D7A4D4D1A6B482B8305A8EB859318C68656CBCC397BC4E2191AB8DB3A6%
+914F524DCD91B65B5895AA5206C9BCC3A48EF19996A692E14F4EB8899F62BCBC8F6F51FA%
+BCC3B1B0B1C491E55927C5D98C876B20904C4F38A6BCC0A1BBC3BAB3C5AFC38CA9898BD9%
+C4A4D3B3B5C4C5BCB8BCC3B2C3D38E644ED595FB65B982AA304CC5B2A182C73069B3BE8E%
+E54E3B906C4EBAC9975C4E8892E85B9ACA91C56253C189F358CADCBCC0C982BE3060B6D7%
+A4C2B282C53067C697A088CFCD8D73884CAFC397707528A691AB8DB3BFB3C48E76601DAF%
+C3C9BFC9BF94879019B28F6F51FABCC0A1BDD9C48EE54E3B906C4EBACA8EB85931965D67%
+1BC4937B6012D8A6917E63BBB78CF04EA482BA305CC0D6B3C590BA58F0A6BCC3A48DC05E%
+A7957E6577C992864E2DB6D7A2BAC9946E99AC8EAD9E7F96EC91CE985990CEA3C4937B60%
+1296C29CF4AFC0A1BAC98EE54E3B906C4EBACA906C4EBAA6946C7F75D9C4B7CA954B5FC5%
+82B8305A946E99AC8EAD9E7F96EC91CE985990CEC4B2B3C982AA304C95C8765682C53067%
+B1D9A1CEB6C688AB60AA8CFB53E3C98CBE8A00B2D6B3A6926D77E5D7C5B2C982BE3060B6%
+D78E644ED595FB65B982AA304CC5B282AA304CA48DA14ECACF82C5306790688F9B965F68%
+D2BCC0906C4EBAC98B436C17D3926D77E5D7C5B282C53067A496B3712188C36697C6946E%
+99AC8EAD9E7F96EC91CE985990CE8CC4547CDCD8CA8EB859318C68656C82BE3060C48E76%
+601DB3A1BFDAD395BD5E7390B6751F8CE1543E94798F2982AA304C94DE5F7CC9947780CC%
+92864E2DCD8FE64E57D98E9E6642C68FAD5C11BCCA8D44597DB28AE7985482C53067D3BD%
+D9C5D7BAC9969F6F2B946C7F75D38AC37518DD82B63058C38EF353D7B9D982AA304CA4BA%
+AFC1C995D64FBF97985229C6C5D98E964E8BCA89BD4F5588EA4E00C289F55FEBB8BCC3B8%
+DAC08E964E8BD3C5B2C9C6A48FAC5C0F95D64FBFC697A77ACBAFC0C9A6946E99AC8EAD9E%
+7F96EC91CE985990CEC4CA8D939177B2A18CB3514397886765906C4EBA8AD49593C4B2B3%
+D3C9CA8EA981EA8CC85DF1C997CD529B97CA91CFC6969D616282B63058C3D0DDC5919D58%
+9792B79577BCC3B2D9A18FAD5C11BC906C4EBA8AD49593D6D88BAD5F37B2D3C982AA304C%
+8F6F51FAC397886765C3E27A7A98D2C3D4D7C5B8C3CABAC990E6514882C73069BACF82C5%
+3067919D589792B79577BDD9B695AA5206D7C5B2A1%
+}
+\bxjl@text{wagahai}{13}{%
+% 我儘もこのくらいなら…
+89E4621198D45118D3BAC9B8D7B2C5D789E46211969D6162BDD982AA304C8CE1543E9479%
+8F29CA906C4EBA8AD49593C995734E0D93BF5FB3C6C2B2C3BADAD6D8D390946570947B50%
+0D94DF60B2BCD182D73079B795F1583193B99053A68EA88033C6BCC08E964E8B82AA304C%
+B1D9A1%
+}
+\bxjl@text{wagahai}{14}{%
+% 吾輩の家の裏に十坪ば…
+8CE1543E94798F29C989C65BB6C997A088CFC68F5C534192D8576A82CE3070B6D8C99283%
+83368980571282AA304CB1D9A18D4C5E83B8CAC5B282AA304CE06E701F9FAD6D12C4BCC0%
+90535FC38E9D6301C18D44597DB893FA65E5C993965F53D98F8A624082BE3060A1B3C1C9%
+8FAC5C0F8B9F4F9B82AA304CB1CFD8919B9A12B282C530678A79697D81583005928B663C%
+90515BDDC98F6F51FA97886765C5B28E9E6642D4A4B1CFD891DE90008BFC5C4882C53067%
+95A0817989C152A08CB86E1BC9D6B8C5B290DC6298C582C73069CAA48CE1543E94798F29%
+CAB2C282C53067D3BABACD8F6F51FAC38D5F6D6991527136C98B436C17A6977B990AB3C9%
+82AA304C97E14F8B82C53067B1D9A1B1D98FAC5C0F8F746625C989B87A4FB6C593FA65E5%
+C993F14E8C8E9E66428DA0980382C53067B1AFC082AA304CA48CE1543E94798F29CA928B%
+663C94D198EF8CE35F8C89F55FEBD6B888EA4E0090877761BCC08CE35F8CA4895E904B93%
+AE52D5B6C082AA304CC0BAC99283833689805712CDC495E06B69A6895E904B82CE3070BC%
+C0A192838336C996D86728C98DAA6839A688EA4E00967B672C88EA4E00967B672C9A6B55%
+C582AC304EC582AA304CD7A490BC897F91A45074C9909967498A5F57A3C9BF82CE3070CF%
+82C53067B8D9C4A48CCD67AF8B6583CAA6899F62BCBC937C5012BCC3BFC98FE34E0AC691%
+E55927B7C5944C732B82AA304C914F524D8CE35F8C95734E0D8A6F899AC690515BDDC3B2%
+D9A194DE5F7CCA8CE1543E94798F29C98BDF8FD182C33065B8C9D388EA4E008CFC541190%
+535FC395744ED8B682B43056D982B23054C4B8A4CFC090535FC395744ED8B8D396B37121%
+93DA981392857740C5D982B23054C4B8A491E55927B7C5EA8D9F3EA6BCC392B795778158%
+3005C491CC4F53A689A16A2AB4C396B07720AFC3B2D9A191BC4ED6C992EB5EAD93E05185%
+C694455FCD82D1307393FC5165D8C0D9D3C982AA304CB6B8CF82C5306795BD5E738B436C%
+17C690877761D7DAD9D3C9B6C4A48CE1543E94798F29CA90DE7A83B6C6BFC991E5592792%
+5F80C6C5D993785EA68BB980F8C68BC19A5AB682B43056D9A693BE5F97C5B6AFC0A194DE%
+5F7CCA8F837D1490887C8BC98D959ED2944C732B82C53067B1D9A1DC82B8305AB6C68CDF%
+5348A689DF904E82AC304EC0D991BE592A977A967DCAA493A7900F96BE660EC5D98CF551%
+4990FC7DDAA694DE5F7CC994E776AE9586819AC98FE34E0AC69D65629B82B03052B6B9C3%
+A4B7D7B7D7BDD98F5F67D496D16BDBC98AD49593D6D88AE1773CC68CA9898BB4C7898A70%
+8E82C53067D3945271C3B48F6F51FA82B8305AD9D6B3C68E76601DDCDAC0A194DE5F7CCA%
+944C732B92864E2DC991E5592789A4738BC4D3895D4E91B382D73079B7CE82C73069C988%
+CC504991E55927C5D991CC4F538A69683CA6974C6709BCC3B2D9A18CE1543E94798F29C9%
+947B500DCAC0BCB6C6B1D9A18CE1543E94798F29CA925156068FDC8CDEC9944F5FF5C4A4%
+8D44597D8AEF5947C990535FC3C6914F524D8CE35F8CA696595FD8DAC394DE5F7CC9914F%
+524DC698C84F4797A77ACBBCC3975D4F59944F5FF5D3C5B892AD773AD2C3B2D9C4A490C3%
+9759B6C5D98FAC5C0F8F746625C9959798A882AA304CA4909967498A5F57A3C98FE34E0A%
+B6D78F6F51FAC0D98CE668A78BCB6850C98E7D679DA68C798EFDB897558A98AFC382CE30%
+70D782CE3070D7C493F14E8C8E4F4E099687679AC99774844982AA304C8CCD67AF8B6583%
+CAC996CE8302D0C6978E843DC1C0A191E5592789A4738BCAB6AFC4BFC9905E771F8ADB4E%
+38C98AE1773CA68A4A958BB2C0A18DA14ECA82C53067D38B4C8A1889AF61B6BCC3B2D9A1%
+BFC98AE1773CCA906C4EBA8AD49593C992BF73CD8F6491CDBDD9E0E67425E0DF73C0C4B2%
+B3D3C9D6D8D397799065B6C694FC7F8EBCB88B508F1DB2C3B2C0A194DE5F7CCA90678EAB%
+93AE52D5B7D3BCC5B2A1916F53CCE1C67738C9899C5965B6D78ECB5C04D982B23054C4B7%
+8CF55149A68CE1543E94798F29C9E1E277EE8FAC5C0FC5D98A7A984DC98FE34E0AC6B1C2%
+D2C3A48CE45FA1D2B4CA88EA4E0091CC4F5389BD4F5582BE3060C4895D4E91AFC0A191E5%
+592789A4738BC6BCC3CA8FAD5C11815830058CBE8A009774844982AA304C94DA5351BCB2%
+C48E76601DAFC082AA304C89BD4F55BCDBBFC990BA58F0C992EA5E95C68CA272ACA6D38D%
+C1632BBC82AE305082D73079B797CD529B82AA304CE2C47C60AFC3B2D9C982C530678CE1%
+543E94798F29CA8FAD5C11C5B6D782B8305A8BB06050DAA695F862B1B2C0A1BCB6BC88A5%
+63288E4162F6A6BCC5B2C48CAF967A93DB545182BE3060C48E76601DAFC0B6D7A28CE154%
+3E94798F29CA944C732B82C53067B1D9A196BC540D914F524DCACF82BE3060C5B2A3C4C5%
+D982D73079B895BD5E738B436C17A6919588C5AFC397E251B791527136C4939A7B54B4C0%
+A1BCB6BCBAC98E9E66428CE1543E94798F29C990535FC3919F81D3CAC0BCB6C695BD5E73%
+8E9E6642D6D8D397F370C8BCB88CDB9F1393AE52D5BCC3B5AFC0A194DE5F7CCA91E55927%
+C68C798EFD95CC8511BED992B28ABF8E715B5082C53067A289BD4F55A4944C732B82BE30%
+608148FF1F81403000944C732B82AA304C95B7805EB2C3B1B7DAD7B1A191535168C3B482%
+C73069BAC68F5A4F4FDD82C53067D9DD82BE3060A3908F968F95AA52069654508D8EE182%
+E596B37121906C4EBA82C53067B1D9A1A28CE1543E94798F29CABABAC98BB365598E745E%
+2BC989C65BB6C6B2D9C982BE3060A3A282C73069B3BEBFDDC58E964E8B82BE3060DBB3C4%
+8E76601DAFC0A1B2D4C6E18B7620BEC3D982B63058ACC8B4B6A3C491E5592789A4738B82%
+BE3060B9C68B436C17898B7114A690815439B7B6B9D9A18CBE8A009774844995744ED8B6%
+D78E405BDFBDD9C482C73069B3D397C7826F89C65BB6C9944C732BC4D38E76601DDCDAC5%
+B2A1BCB6BCBFC98D70818F90D85207AFC394EC80A5969E6E80BCC3B2D9C4BADBA68CA989%
+8BD9C48CE45FA1927999B391968D70A6904898DFAFC3D9D7BCB2A4964C8C4AB6C695E966%
+AEBCC3B2D9D7BCB2A18CE1543E94798F29CAA2BFB3895D4E91B38C4E541BCA88EA4E0091%
+CC4F53924E8AB082BE3060B2A3C495B7805EB682B43056D9A693BE5F97C5B6AFC0A1A28C%
+C85DF1DAB18ED48ECA89AE5C4BC98D959ED2D6A38D56660291527136C0D9D3C982BE3060%
+A18ED48ECA89AE5C4BC98D959ED2CABAC98BDF8FD195D38FBA82C53067926D77E5D7C78E%
+D28005C5B797904E71965C66B4944C732B82C53067B1D9A1BCB6BC8ED48ECA89AE5C4B82%
+BE3060B9C68BAD5F37B282CE3070B6D882C53067C1AFC4D38BB3655988E780B282AA304C%
+C5B2B6D7B1CFD8924E8AB0D38CF04EA48DDB969BBCC5B2A193AF540C96BF76DF8C68656C%
+899390608EE54E3B8B607FA9C993497684C6C5AFC3B2D9937A597482BE3060A18CE1543E%
+94798F29CA94DE5F7CC996BC540DA695B7805EB2C38FAD5C1181583005904B5C3BBABF82%
+CE3070D5B78AB4611F82B63058A68B4E8D77BDC493AF540C8E9E6642C6A488EA4E0095FB%
+65B982C53067CA8FAD5C11815830058C798EFD958E4FAEC9944F5FF5D390B6751F82B630%
+58C0C982C53067B1D9A18CE1543E94798F29CACF82B8305A94DE5F7C82AA304C82C73069%
+C9B8D7B296B371218A775B6682C53067B1D9B6A68E8E8A66BCC3D0D6B3C48E76601DAFC3%
+8DB65DE6C996E2554F939A7B54A6BCC38CA9898BC0A1%
+}
+\bxjl@text{wagahai}{15}{%
+% 「一体車屋と教師とは…
+A288EA4E0091CC4F538ED48ECA89AE5C4BC48BB365598E745E2BC4CA82C73069AFC182AA%
+304CB4D7B282BE3060DBB3A3%
+}
+\bxjl@text{wagahai}{16}{%
+% 「車屋の方が強いに極…
+A28ED48ECA89AE5C4BC995FB65B982AA304C8BAD5F37B2C68BC96975AFC3B2D7B1C5A18C%
+E45FA1D2B4C9B3C1C98EE54E3B906C4EBAA68CA9898BC8B4A4CFD982C530678D9C9AA8C4%
+94E776AE82CE3070B6D882BE306082BA305CA3%
+}
+\bxjl@text{wagahai}{17}{%
+% 「君も車屋の猫だけに…
+A28C4E541BD38ED48ECA89AE5C4BC9944C732B82BE3060B9C691E5592795AA52068BAD5F%
+37BFB382BE3060A18ED48ECA89AE5C4BC6B2D9C48CE45FA1927999B391968D7082AA304C%
+904898DFB4D9C48CA9898BB4D9C8A3%
+}
+\bxjl@text{wagahai}{18}{%
+% 「何におれなんざ、ど…
+A289BD4F55C6B5DAC5DD82B43056A482C73069BAC98D9156FDCD8D73884CAFC0AFC39048%
+98DFB295A87269C695734E0D8EA981EA97527531CABCC8B4C2D3D882BE3060A18CE45FA1%
+D2B4C5DDB6D39283833694A9756082CE3070B6D882AE3050D982AE3050D989F45EFBAFC3%
+B2C8B482C53067A4C1AFC48CC85DF1C98CE35F8CCDB8AF95744ED8B2C397886765C38CA9%
+898BC8B4A188EA4E00C48C8E6708C4C0C0C8B4B3C1C68CA9898B88E19055B4D9D6B3C691%
+BE592ADAD982BA305CA3%
+}
+\bxjl@text{wagahai}{19}{%
+% 「追ってそう願う事に…
+A292C78FFDAFC3BFB38AE89858B38E964E8BC6BCD6B3A1BCB6BC89C65BB6CA8BB365598E%
+745E2BC995FB65B982AA304C8ED48ECA89AE5C4BD6D891E55927B7B2C9C68F5A4F4FDD82%
+C53067B2D9D6B3C68E76601DDCDAD9A3%
+}
+\bxjl@text{wagahai}{20}{%
+% 「箆棒め、うちなんか…
+A295CD7B86965F68D2D2A4B3C1C5DDB6B2B8D791E55927B7B8C0AFC395A08179C991AB8D%
+B3BCC6C5D9D3DDB6A3%
+}
+\bxjl@text{wagahai}{21}{%
+% 彼は大に肝癪に障った…
+94DE5F7CCA91E55927C68ACC809DE19B766AC68FE1969CAFC0976C69D88E715B5082C530%
+67A48AA65BD2927C7AF9A6BFB282BE3060D6B3C58EA88033A6BCB7D8C482D23074B89574%
+4ED8B6BEC3B1D7D7B6C697A77ACBC18B8E53BBAFC0A18CE1543E94798F2982AA304C8ED4%
+8ECA89AE5C4BC98D959ED2C4926D77E58CC85DF1C6C5AFC0C9CABADAB6D782C53067B1D9%
+A1%
+}
+\bxjl@text{wagahai}{22}{%
+% その後吾輩は度々黒と…
+BFC98CE35F8C8CE1543E94798F29CA93785EA6815830058D959ED2C4E7AE9082E7909005%
+BDD9A1E7AE9082E7909005BDD996886BCEC694DE5F7CCA8ED48ECA89AE5C4B918A76F893%
+965F53C98B436C17898B7114A693665410B8A190E65148C68CE1543E94798F2982AA304C%
+8EA88033C6BCC0C4B2B395734E0D93BF5FB38E964E8B8C8F4EF6D38EC05B9FCA8D959ED2%
+B6D795B7805EB2C0C982C53067B1D9A1%
+}
+\bxjl@text{wagahai}{23}{%
+% 或る日例のごとく吾輩…
+88BD6216D993FA65E597E14F8BC982B23054C4B88CE1543E94798F29C48D959ED2CA9267%
+6696B6B29283833694A97560C992864E2D82C5306790515BDD935D8EE282D13073C582AA%
+304CD7B2DBB2DB8E4796D1926B8AC7A6BCC3B2D9C4A494DE5F7CCAB2C2D3C98EA981EA96%
+9D616298628A71BCA6BBD3905665B0BCBFB3C68C4A7E70D895D48FD4BCC0B1C482C53067%
+A48CE1543E94798F29C68CFC5411AFC389BA4E0BC982B23054C4B88EBF8CEA96E2554FBC%
+C0A1A28CE45FA1D2B4CA8DA14ECACF82C53067C6916C9F20A689BD4F5595435339C4AFC0%
+8E964E8B82AA304CB1D9A39271667A8EAF8B58CA8D959ED2D6D8D3975D4F5992F67A0B94%
+AD767A92429054BCC3B2D9C2D3D882BE306082AA304C9872815597CD529BC4974552C78B%
+436C17C4C68E8A81F3AFC3CA939E523092EA5E958D959ED2C994E46BD48A728F03C6CAC5%
+D7C5B2C48A6F899A8CE5609FCABCC3B2C0D3C9C9A4BAC996E2554FC690DA63A5BCC0D98E%
+9E6642CAA4BBBD82AA304CC68BC96975D882AA304C91505584B8CAC5B6AFC0A1B9DA82C7%
+3069D38E964E8B8EC05B9FCA8E964E8B8EC05B9F82C530678DBC8A50D996F38A33C6CA8D%
+73884CB6C5B2B6D7A48CE1543E94798F29CAA28EC05B9FCAC4DBB3C4DBB3C48E76601DAF%
+C3CF82BE306095DF6355D7C5B2A3C4939A7B54B4C0A18D959ED2CA94DE5F7CC995409F3B%
+C990E65148B6D782D23074DDC493CB7A8192A35F35AFC3B2D992B79577B295459AEDA682%
+D13073D882D13073D8C4906B9707DCBEC394F1975E8FED5E38C68FCE7B11AFC0A18CB351%
+43978867658D959ED2CA8EA981EA969D6162A6BDD98FE44E08C682C73069BAB691AB8DB3%
+D8C5B2C4BADB82AA304CB1AFC3A494DE5F7CC98B436C17898B7114A68AB4611F90535FC3%
+BCC0D6B3C688F454BD8D415589A6BADBBADB96C29CF4D7BCC38BDE8B3992AE8074BCC3B2%
+DA82CE3070CAC5CA82BE30608CE45FA1BCD4BDB2944C732B82C53067B1D9A18CE1543E94%
+798F29CA94DE5F7CC48BDF8FD195744ED8C6C5AFC3B6D792BC76F4C6BAC98CC4547C8B7A%
+5438A688F998F2D08D9E8FBCDD82BE3060B6D7BAC98FEA58348D875408C6D3C5CF82B630%
+58B28CC85DF1DAA695D95F018CEC8B77BCC3CFBDCFBD8C605F6290A852E2A6DCD9B8BDD9%
+C9D38BF0611A82C53067B1D9A4B2AFBFC98E964E8B94DE5F7CC68EA981EA95AA5206C98E%
+E8624B95BF67C498628A71A6BCAC82D73079D7BCC38CE45FA192838336A691F76FC1BDC6%
+8EE182E5B8CAC5B2C48E76601D88C46848A692E85B9AD2C0A1BFBA82C53067B5C4C5BCB8%
+A28C4E541BC582C73069CA944E5E7482AA304C944E5E7482C53067B1D9B6D791E5592795%
+AA5206C4AFC0DBB3A3C4BFBFC9B6BCC38CA9898BC0A189CA679C9152713694DE5F7CCA9A%
+D458BB95C758C1C98C876B208F8A6240C699E354369A5E558ABCC397886765C0A1A2C0DD%
+C482C53067D3C8B482AA304C8E4F4E098E6C56DB8F5C5341CAC4AFC0DBB3A3C4CA93BE5F%
+9788D3610F8B436C17C5D994DE5F7CC9939A7B5482C53067B1AFC0A194DE5F7CCAC5B58C%
+EA8A9EA6C282C33065B9C3A2916C9F20C99553767ED493F14E8C9553767ECA88EA4E0090%
+6C4EBA82C53067B2C282C53067D388F85F15B78EF353D7B9D982AA304CB2C0C1AFC3B493%
+7A5974CA8EE8624BC68D875408DCC8B4A188EA4E0093785EA6B2C0C1C68CFC5411AFC38D%
+939177B296DA76EEC688A79022AFC0A3A2CDB4C5D9CE82C73069A3C4918A76F892C669CC%
+A691C56253C2A18D959ED2CA91E55927B7C58AE1773CA682CF3071C1C2B6BEC3895D4E91%
+B3A1A28B8E53BB944E5E74C991E55927917C63838F9C9664C98E9E664282BE3060A1B3C1%
+C992E04EAD8EE54E3B82AA304C90CE77F38A447070C991DC888BA68E9D6301AFC39EBB69%
+3DC989BA4E0BCD94879019B28D9E8FBCDD82BE3060D78CE45FA1D2B491E55927B7C5B2C0%
+C1C996EC91CE985990CE82AA304C96CA97628BF255B0AFC394F298DB82D130738F6F51FA%
+BCC0C48E76601DB2C8B4A3A2CCDDA3C48AB4611F90535FC3BCC38CA9898BBED9A1A2B2C0%
+C1AFC3B982C73069D389BD4F55916C9F20C98FAD5C11BC91E55927B7B282AE3050DAB4C9%
+D3C982BE3060A1BADD927B755C90B6751FAFC38B436C1782C5306792C78FFDAFB6B9C3C4%
+B3C4B393446CE58D616E9DC992864E2DCD92C78FFDB28D9E8FBCDD82BE3060C48E76601D%
+B2C8B4A3A2B3CFB8D4AFC0C8A3C48A85559D8DD191C7BCC3D4D9A1A2C4BADB82AA304C8C%
+E45FA1D2B4B282B43056AFC3B492696BB5C6C5D9C4937A5974D28DC567008CE35F8CAF9B%
+9B5C41A6BAB7AC82AA304CAFC0A18F4C81EDB4C98F4C81EDB8C8B4C9AFC3BFDAB6D7AFC3%
+B4D3C9CAB2C0C1A68CA9898BD9C48BB980F882AA304C88AB60AAB8C5D7B1A394DE5F7CCA%
+BABAC68E8A81F3AFC3B1C0B6D38B8E53BB944E5E74C98F4C81ED8B436C17A68DA14ECAC5%
+B58AB4611F82B8305AD982B23054C4B8914F524D91AB8DB3A6976763DA82B03052C39540%
+9F3BC993AA982DA693F14E8C8E4F4E0995D5904DC582C5306789F45EFBDCBCC0A18CE154%
+3E94798F29D38FAD5C11815830058B436C17C993C56BD2C58AB4611F82B6305882AA304C%
+BDD9A1C1AFC48C69666F8B436C17A695744ED8B9C3D4DBB3C48E76601DAFC3A2BCB6BC91%
+6C9F20C5D78C4E541BC6E1C97768CFDAC3CA9553767E944E5E7496DA76EE82BE3060DBB3%
+A18C4E541BCAB1CFD8916C9F20A695DF6355D9C982AA304C96BC540D906C4EBA82C53067%
+916C9F2082CE3070B6D8904898DFB3D3C982BE3060B6D7BFDDC5C694EC80A5AFC3904682%
+72C2D482AA304C91505584B2C982BE3060DBB3A38D959ED2C98CE45FA18B406A5F8C995A%
+CCA6C4D9C0D2C9BAC98EBF8CEA96E2554FCA95734E0D8E76601D8B638B70C6D394BD53CD%
+91CE5BFEC98C8B7D5089CA679CA692E654488F6F51FABCC0A194DE5F7CCA9A5F559F9152%
+7136C4BCC391E5592791A7606FBCC3B2B3A1A28D6C800382B03052B4D9C4C2CFD7C8B4A1%
+B2B8D789D27A3CB282C53067916C9F20A6C4AFC0AFC3815C2015815C201588EA4E00C3B4%
+906C4EBA8AD49593CE82C73069CCC3B4937A5974CA90A24E16C992864E2DC6B2C8B482BA%
+305CA1906C4EBAC9C4AFC0916C9F20A6D0DDC58EE653D6D88FE34E0A82B03052D482AA30%
+4CAFC38CF04EA494D4756ACD8E9D6301AFC38D73884CB7ACB182AA304CD9A18CF04EA494%
+D4756A82B63058AC924E8AB082AA304C95DF6355AFC0B695AA5206D7C8B4B6D7BFC9C0DD%
+82D13073C68CDC4E94914B92AD82B8305AC2B8DAD982B63058ACC8B4B6A1B3C1C992E04E%
+AD8EE54E3BC5DDB68CC85DF1C98CE45FA188FC852D82C53067D3B388EB58F1897E51868C%
+DC4E948F5C5341914B92ADB8D7B296D75132B9C3B2D482AA304CD995C87656C6A4E1EF78%
+8CC5D3C9A6904898DFDCBEC08E964E8BD3B1D8ACBCC8B4A1B5B2906C4EBA8AD49593C3D3%
+C9B191CC4F53C991505584B293446CE5965F68D282BE306082BA305CA3BBBD82AA304C96%
+B371218A775B66C98D959ED2D3BAC9B8D7B2C9979D74068C417A9FCADCB6D9C48CA9898B%
+B4C3BDBA82D43076D9937B6012AFC097655BB98E715B5082C53067947780CC92864E2DC9%
+96D16BDBA68B74900697A77ACBC3C3B2D9A18CE1543E94798F29CA8FAD5C11815830058B%
+436C1796A1547382AA304C88AB60AAB8C5AFC0B6D791505584B289C152A08CB86E1BC6BF%
+C98FEA5834A68CD380E196829B5489BB5316BCC389C65BB6CD8B415E30AFC0A1BAC98E9E%
+6642B6D78CE1543E94798F29CA8C886C7ABCC3916C9F20A6C4D9CFB2C48C886C7A90535F%
+C3BCC0A1BCB6BC8D959ED2C98E715B5095AA5206C6C5AFC3916C9F2088C84EE58A4F5916%
+C98CE45FA1927999B391968D70A697C2731FAFC3B1D9B88E964E8BD3BCC5B6AFC0A18CE4%
+5FA1927999B391968D70A6904898DFB3D6D8D390515BDDC3B2C095FB65B982AA304C8B43%
+6C178A79697D82C53067B2B2A18BB365598E745E2BC989C65BB6C6B2D9C4944C732BD38B%
+B365598E745E2BC9D6B3C590AB60278EBF8CEAC6C5D9C48CA9898BB4D9A1977689819053%
+5FC3BCC5B2C48DA14ECAC688DD80C38EE35F31C6C5D9B6D3926D77E5DAC5B2A1%
+}
+\bxjl@text{wagahai}{24}{%
+% 教師といえば吾輩の主…
+8BB365598E745E2BC4B2B482CE30708CE1543E94798F29C98EE54E3B906C4EBAD38BDF8F%
+D18DA09803C68E8A81F3AFC3CA939E523092EA5E9590856C348DCA5F6989E6753BC6B5B2%
+C3965D671BC9C5B28E964E8BA68CE5609FAFC0D3C9C48CA9898BB4C38F5C534193F14E8C%
+8C8E670888EA4E0093FA65E5C993FA65E58B4C8A18C6BADDC58E964E8BA6B6B7C2B9C0A1%
+}
+\bxjl@text{wagahai}{25}{%
+% ○○と云う人に今日の…
+819B25CB819B25CBC4895D4E91B3906C4EBAC68DA14ECA93FA65E5C989EF4F1A82C53067%
+8E6E59CBD2C38F6F51FA88A79022AFC0A1B1C9906C4EBACA91E5592795AA520695FA653E%
+93A08569A6BCC0906C4EBA82BE3060C4895D4E91B382AA304CC5D9CE82C7306992CA901A%
+906C4EBAD7BCB2959798A88DD191C7A6BCC3B2D9A1BAB3895D4E91B38EBF8CEAC9906C4E%
+BACA8F975973C68D44597DB6DAD9D3C982BE3060B6D7819B25CB819B25CB82AA304C95FA%
+653E93A08569A6BCC0C4895D4E91B3D6D8D395FA653E93A08569A6BDD982D73079B8975D%
+4F598B565100C5B8BED7DAC0C4895D4E91B3C982AA304C934B906993965F5382C53067B1%
+DBB3A1B1C9906C4EBAC98DC859BB8C4E541BCA8C7C82B88ED2800582BE3060BFB382BE30%
+60A491417FA8CFBCB28E964E8B82C53067B1D9A18CB351439788676595FA653E93A08569%
+89C65BB6A688AB60AAB8B2B3906C4EBAC991E55927959490E895AA5206CA95FA653E93A0%
+8569A6BDD98E918CC78A69683CC9C5B2D3C982AA304C91BD591AB2A1CFC095FA653E93A0%
+856989C65BB6A6D3AFC38EA981EA94434EFBBDD99841902392864E2DC9B3C1C6D3A495FA%
+653E93A08569BDD98E918CC78A69683CC9C5B2D3C982AA304C91BD591AB2A1BADAD7CA97%
+5D4F598B565100C5B8BBDAC5B2C9C696B37121979D7406C690699032DD82C53067D4D9C9%
+82C53067B1D9A1B1C0B6D38CE1543E94798F29C990856C348DCA5F6989E6753BC6899765%
+BCB9D982AA304C82B23054C4B7D3C982C53067939E523092EA5E9591B253528BC6696DBD%
+D98B436C1782C33065B6B2CAC5B2A1BCB6D9C6D38AD695A2BE82B8305AA48EA981EA95AA%
+520682BE3060B9CA92CA901A906C4EBA82BE3060C48E76601DAFC38DCF6E08BCC3B2D9A1%
+97BF6599979D740689AE5C4BC98EF09152A688F998F2DD82BE3060D891D25F858D875408%
+CD9487901993FC5165D9B6D792CA901A906C4EBAC4C5D893BE5F97D9C4B2B3985F8AD682%
+AA304C97A77ACBC2C5D7A48CE1543E94798F29D388EA4E0097F55EC9C990856C348DCA5F%
+6989E6753B89C65BB6C6C5D893BE5F97D9979D74068C417A9F82BE3060A18CE1543E9479%
+8F29C990856C348DCA5F6989E6753BC982B23054C4B7CAB6B6C5B295FB65B982AA304CCF%
+BC82C53067B1D9C493AF540C82B63058D6B3C6A48BF0611A96866627C5D992CA901A906C%
+4EBAD6D8D38E525C718F6F51FABCC991E5592796EC91CE95E966AEC995FB65B982AA304C%
+97799065B6C68FE34E0A93997B4982BE3060A1%
+}
+\bxjl@text{wagahai}{26}{%
+% 通人論はちょっと首肯…
+92CA901A906C4EBA985F8AD6CAC1AEAFC48EF199968D6D80AFBCB6C8D9A1CFC08C7C82B8%
+8ED28005C98DC859BB8C4E541BA691417FA8BCB2C582C73069C4B2B3C4BADBCA8BB36559%
+8E745E2BC4BCC3CA8CFB53E3C6BD82D73079B6D782B43056D98BF0611A97F252A3C98D6C%
+800382C53067B1D982AA304CA48EA981EA8CC85DF1C990856C348DCA5F6989E6753BC6B5%
+B9D994E16279955D8A558AE1773C82BE3060B9CAC0BCB6C5D3C982BE3060A18EE54E3B90%
+6C4EBACAB6B8C982B23054C4B88EA981EA926D77E5C996BE660EB1D9C6D38AD695A2BE82%
+B8305ABFC98EA981EA8D9B60DA90535FC3CAC5B6C5B694B2629CB9C5B2A192864E2D93F1%
+4E8C93FA65E592757F6EB2C38F5C534193F14E8C8C8E67088E6C56DB93FA65E5C993FA65%
+E58B4C8A18C6BADDC58E964E8BA68F9166F8B2C3B2D9A1%
+}
+\bxjl@text{wagahai}{27}{%
+% 昨夜は僕が水彩画をか…
+8DF0662896E9591CCA966C50D582AA304C90856C348DCA5F6989E6753BA6B6B2C3939E52%
+3092EA5E9595A87269C6C5D7DDC48E76601DAFC3A4BFBAD7C69D65629BAFC392757F6EB2%
+C0C9A6924E8AB0B682AA304C97A77ACB94686D3EC58A7A984DC6BCC397936B048AD49593%
+C68C9C61F8B9C3B8DAC096B25922A68CA9898BC0A1BBC38A7A984DC6C5AFC0C4BADBA68C%
+A9898BD9C489E46211C582AA304CD78B7D6025C68FE34E0A8EE8624BC6C5AFC0A194F197%
+5E8FED5E38C68AF05B09BCB2A1BADAC5D797A77ACB94686D3EC5D3C982BE3060C493C672%
+ECD882C5306792AD773AD295E966AED7BCC3B2D9C4A496E9591C82AA304C96BE660EB9C3%
+8AE1773C82AA304C8A6F899AD2C3D4CAD88CB35143C992CA901AD889BA4E0B8EE8624B82%
+C53067B1D98E964E8B82AA304C92A9671D93FA65E5C48BA45171C696BE660E97C477ADC6%
+C5AFC3BCCFAFC0A1%
+}
+\bxjl@text{wagahai}{28}{%
+% 主人は夢の裡まで水彩…
+8EE54E3B906C4EBACA96B25922C997A188E1CF82C5306790856C348DCA5F6989E6753BC9%
+96A2672A97FB7DF4A6947780CC95898CA0AFC3B1D9B2C3B2D9C48CA9898BB4D9A1BADA82%
+C53067CA90856C348DCA5F6989E6753B89C65BB6CA96B37121985F8AD69576592B8E715B%
+50C98F8A624088E08B0292CA901A906C4EBAC6D3C5DAC5B28EBF8CEA82BE3060A1%
+}
+\bxjl@text{wagahai}{29}{%
+% 主人が水彩画を夢に見…
+8EE54E3B906C4EBA82AA304C90856C348DCA5F6989E6753BA696B25922C68CA9898BC097%
+827FCC93FA65E597E14F8BC98BE091D1898F7E018AE1773C8BBE93E1C994FC7F8E8A775B%
+668ED2800582AA304C8B764E45BC9055632FD882C530678EE54E3B906C4EBAA6964B8A2A%
+96E2554FBCC0A194DE5F7CCA8DC05EA7C6C2B8C4999C528893AA982D91E67B2C88EA4E00%
+C6A289E6753BCA82C73069B3B6C8A3C48CFB53E3A690D85207AFC0A18EE54E3B906C4EBA%
+CA95BD5E738B436C17C58AE79854A6BCC3A28C4E541BC992895FE08D90544AC68F5D5F93%
+AFC38ECA519990B6751FA697CD529BD2C3B2D982AA304CA4C5D9CE82C730698ECA519990%
+B6751FA6BDD9C48DA14ECACF82C530678B436C17C9C2B6C5B6AFC095A87269C98C605F62%
+D4A490468272C990B87CBE8DD77D30C595CF590989BB5316C582C7306982AA304CD6B895%
+AA5206D9D6B382BE3060A190BC897F976D6D0B82C53067CA90CC6614BCB6D78ECA519990%
+B6751FA68EE54E3B92A35F35BCC08C8B7D5089CA679C8DA14ECA93FA65E5C9D6B3C694AD%
+767A92429054BCC0D3C9C48E76601DDCDAD9A1BBBD82AA304C834130A2839330F3836830%
+C9838C30EC834130A2A5836630C7838B30EBA5835430B5838B30EB836730C882BE3060A3%
+C493FA65E58B4C8A18C98E964E8BCAB5B882D13073C6D38F6F51FABBC5B282C53067A4CF%
+C0834130A2839330F3836830C9838C30EC834130A2A5836630C7838B30EBA5835430B583%
+8B30EB836730C8C68AB4611F90535FC3BDD9A194FC7F8E8A775B668ED28005CA8FCE7B11%
+B2C582AA304CD7A28EC05B9FCA8C4E541BA4B1DACA8F6F51FA924C9C4896DA76EE82BE30%
+60D6A3C493AA982DA6917E63BBB8A1A289BD4F5582AA304CA3C48EE54E3B906C4EBACACF%
+82BE306081AC8B43DCD7DAC08E964E8BC68B436C1782AA304CC2B6C5B2A1A289BD4F5582%
+AA304CAFC38C4E541BC9BCB7D8C68AB4611F959E670DBCC3B2D9834130A2839330F38368%
+30C9838C30EC834130A2A5836630C7838B30EBA5835430B5838B30EB836730C8BBA1B1DA%
+CA966C50D5C9C1AEAFC49D73634F91A29020BCC098628A7182BE3060A18C4E541B82AA30%
+4CBFDDC5C6905E771F96CA976296DA76EEC6904D4FE182B63058D6B3C4CA8E76601DDCC5%
+B6AFC0836E30CF836E30CF836E30CF836E30CFA3C491E559278AEC559C897860A6C991CC%
+4F5382C53067B1D9A18CE1543E94798F29CA9EBB693D91A4507482C53067BAC991CE5BFE%
+98628A71A695B7805EB2C394DE5F7CC98DA14ECA93FA65E5C993FA65E58B4C8A18C6CAB2%
+B6C5D98E964E8B82AA304C8B4C8A18BBD9D982C53067B1DBB3B6C4975C4E88D2917A60F3%
+919C50CFBE82B43056D9A693BE5F97C5B6AFC0A1BAC994FC7F8E8A775B668ED28005CABA%
+DDC58D44597D89C152A08CB86E1BC58E964E8BA690815439B78E556563D7BCC3906C4EBA%
+A6925362C582AE3050C9A69742552F88EA4E00C98A79697DC6BCC3B2D9926A753782C530%
+67B1D9A194DE5F7CCA834130A2839330F3836830C9838C30EC834130A2A5836630C7838B%
+30EBA5835430B5838B30EB836730C88E964E8B8C8F4EF682AA304C8EE54E3B906C4EBAC9%
+8FEE60C590FC7DDAC6B2B6C5D98BBF97FFA693604F1DB4C0B6A69F7C6BEBD38CDA986797%
+B6616EBE82B43056D9D3C9C982B23054C4B893BE5F9788D3610FC6C5AFC389BA4E0BC9D6%
+B3C58E964E8BA6E960995290E3820CAFC0A1A2B2D48E9E6642815830058FE75197926B8A%
+C7A68CBE8A00B3C4906C4EBA82AA304C905E771FC68EF353D7B9D9C982C5306791E55927%
+C68A8A6ED18C6D7A3D9349768494FC7F8E8AB4611FA692A763119D9B64A5BDD9C9CA96CA%
+97629492767DB2A1BEDD82BE3060AFC3B1D98A775B6690B6751FC6836A30CB835230B383%
+8930E9835830B9A5836A30CB836230C3834E30AF838B30EB837830D9B082AA304C834D30%
+AE837B30DC839330F3C692895FE08D90544ABCC394DE5F7CC988EA4E0090A24E16C991E5%
+5927929884578F718FF0C5D995A74ECF8D9156FD8A76976996BD547D8E6A53F2A695A74E%
+CF8CEA8A9E82C530678F9166F8B8C9A6D4D2C6BCC3897082F195B6658782C530678F6F51%
+FA94C57248BBBEC0C48CBE8A00AFC0D7A4BFC98A775B6690B6751F82AA304CCFC0946E99%
+AC8EAD9E7FC68B4C8A1889AF61B6C991505584B2926A753782C53067A493FA65E5967B67%
+2C95B665878A775B6689EF4F1AC989896F1490E08AAC89EF4F1A82C53067905E771F96CA%
+976296DA76EEC6966C50D5C998628A71BCC092CA901AD8A68C4A7E70D895D48FD4BCC0C9%
+CA8A8A6ED18C6D7A3D82C53067B1AFC0A1C4BADB82AA304CBFC98E9E6642C99654508D92%
+AE80748ED28005CA96F17D049553767E96BC540D82CE3070B6D882C53067B1AFC082AA30%
+4CA48A467686944D71B190535FC3C6BFDAA68C5850BE92AE8074BCC3B5AFC0A1BFDAB6D7%
+CF82BE306096CA97629492767DB298628A7182AA304CB1D9A1BEDD82BE3060AFC388BD62%
+16D995B665878A775B668ED28005C9B2D990C85E2D82C53067836E30CF838A30EA835C30%
+BD839330F3C997F06B748E6A53F28FAC5C0F90E08AAC835A30BB834930AA837430D58340%
+30A1B0836D30CEC998628A71BC82AA304C8F6F51FAC0B6D7966C50D5CAB1DACA97F06B74%
+8E6A53F28FAC5C0F90E08AACC992864E2D82C530679492767D94FB770982C53067B1D9A1%
+BAC4C68F9759738EE54E3B906C4EBA8CF6516C82AA304C8E806B7BC7C4BADBCA8B539B3C%
+8B436C17906C4EBAA68F508972B3D6B382BE3060C4955D8A55BCC0D7A4966C50D5C98CFC%
+5411B3C68DBF5750AFC3B2D9926D77E5D7DDC4895D4E91AFC08E964E8BC9C5B290E65148%
+90B6751F82AA304CA4BFB3BFB3B1BDBACA8EC05B9FC696BC540D95B6658782BE3060C4B2%
+AFC0A1BFDA82C53067966C50D5CABAC9926A7537D3D4CAD8966C50D593AF540C976C69D8%
+BAC98FAC5C0F90E08AACA693C78AADDD82C53067B5D7C5B2C4B2B38E964E8BA6926D77E5%
+AFC0A3905F795E8C6F7D4C88DD80C38EE35F3190AB6027C98EE54E3B906C4EBACA8AE177%
+3CA68ADB4E38B8BCC396E2554FB2B6B9C0A1A2BFDDC58F6F51FA924C9C4896DA76EEA6B2%
+AFC3D3BC918A76F88EE8624B82AA304C93C78AADDD82C53067B2C0D782C73069B3BDD9C2%
+D3D882BE3060A3B1C0B6D3906C4EBAA68B5C6B3AB8C9CA8DB75DEE8E78652FC5B2A4C082%
+BE306089BB5316C994E776AE82AA304CB1D7DCDAC08E9E6642CA8DA256F0D982B63058AC%
+C5B2B6C48AB4611F82B63058C0D3C9C982B23054C4B882C53067B1D9A194FC7F8E8A775B%
+668ED28005CA8FAD5C11BCD393AE52D582B63058C5B2A1A2C5C6BFC98E9E6642AC95CA52%
+25C9967B672CC48AD4959388E19055B4C0C4B689BD4F55C4B6895D4E91B382CE3070B6D8%
+BBA3C4895D4E91AFC3B9D7B9D78FCE7B11AFC3B2D9A1BAC994FC7F8E8A775B668ED28005%
+CA8BE091D1898F7E01C98AE1773C8BBE93E1CA8A7C639BB9C3B2D982AA304CBFC990AB60%
+278EBF8CEA82AA304C8ED48ECA89AE5C4BC98D959ED2C68E974F3CC0C4BADB82AA304CB1%
+D9A18EE54E3B906C4EBACA96D99ED9AFC393FA65E5C98F6F51FAA697D68F2AC690815439%
+B2C38CE1543E94798F29C6CABFDDC5974552C78B436C17CAC5B2C4895D4E91DCDD82CE30%
+70B6D8C98AE79854A6BCC3B2D9A194FC7F8E8A775B668ED28005CABFDA82BE3060B6D789%
+E6753BA6B6B2C3D391CA99C496DA76EE82BE3060C4B2B396DA76EE95744ED882C53067A2%
+BCB6BC8FE75197926B8AC7CA8FE75197926B8AC782BE306082AA304C89E6753BC4B2B3D3%
+C9CA8EC05B9F8DDB969BD182B8305AB6BCB2D3C982BE3060D6A4838C30EC834930AA8369%
+30CA838B30EB836830C9A5835F30C0A5839430F4834230A3839330F3836030C1CA96E595%
+8089BA4E0B90B6751FC68E9B5BFA89409662C995C758C1C9BCD0A68ECA5199BEC48BB365%
+59B4C08E964E8B82AA304CB1D9BFB382BE3060A1C5D9CE82C7306990E196EA894296A0C5%
+82C73069C69487901993FC5165AFC3894A96E8C998526F0FD995C758C1A6975D4F59944F%
+5FF5C5B892AD773AD2C3B2D9C4A4C5B6C5B6B3CFB296CD6A21976C69D889E6753B82AA30%
+4C8EA981EA91527136C68F6F51FA97886765C3B2D982BA305CA18C4E541B928D6CE888D3%
+610FBCC38ECA519990B6751FBCC38CA9898B8B8B7D66B4B7AFC496CA97629492767DB2D3%
+C982AA304C8F6F51FA97886765D9B6D7A3A2CFC08B5C6B3ABDC982BE3060DBB3A3A2B2B4%
+BADA82BE3060B9CAC0BCB682BE3060D6A18EC05B9F8DDB969B8AEF59478C788B66C58CEA%
+8A9E82B63058ACC5B2B6A4835F30C0A5839430F4834230A3839330F3836030C182C53067%
+D3B2B2BFB3C58E964E8B82BE3060B1C8A3A2C5D9CE82C730698AEF59478C788B66C6CA91%
+8A76F888E19055C5B2C5A3C48EE54E3B906C4EBACA94BC534A95AA52068D7E964D8E5153%
+C2A6BCC0A1BCB6BC94DE5F7CCACF82BE306090E196EA894296A082C530678ECA519990B6%
+751FCABEC7D6B382BE3060A1%
+}
+\bxjl@text{wagahai}{30}{%
+% 車屋の黒はその後跛に…
+8ED48ECA89AE5C4BC98D959ED2CABFC98CE35F8CE6EA8DDBC6C5AFC0A194DE5F7CC98CF5%
+514991F26CA2B1D996D16BDBCA91516F38815830059046827282AA304CE5F2892AD2C394%
+B2629CB9C397886765D9A18CE1543E94798F2982AA304CE0E67425E0DF73C0D6D8D394FC%
+7F8EBCB2C4955D8A55BCC094DE5F7CC98AE1773CC6CA8AE1773C8E89810282AA304C88EA%
+4E009474676FC0CFAFC3B2D9A1BAC4C692988457D9BCB88CE1543E94798F29C9928D6CE8%
+88D3610FA68EE460F9B2C0C9CA94DE5F7CC98CB351438B436C17C98FC16D8892BE6C88C4%
+BFC991CC4F538A69683CC988AB60AAB8C5AFC08E964E8B82C53067B1D9A18CE1543E9479%
+8F2982AA304C97E14F8BC9928383368980571282C5306794DE5F7CC688A79022AFC08DC5%
+67008CE35F8CC993FA65E5A482C73069B382BE3060C4895D4E91AFC390715C0BC8C0D7A2%
+B2C0C1C98DC567008CE35F8C9B9B5C41C48DE680B489AE5C4BC993565929948979E4965F%
+68D2C6CA92A661F28158300582BE3060A3C4B2AFC0A1%
+}
+\bxjl@text{wagahai}{31}{%
+% 赤松の間に二三段の紅…
+90D48D648FBC677EC98AD49593C693F14E8C8E4F4E0992696BB5C98D677D05A692D47DB4%
+AFC08D677D0597748449CA90CC6614BCC996B25922C982B23054C4B88E556563AFC3C2B8%
+82CE3070B2C68BDF8FD1B891E34EE3D991E34EE3D989D482B195D95F01A6BA82DA307CBC%
+C08D677D059492767DC98E525C719283833689D482B1D38E636B8BD8C5B8978E843DC190%
+735C3DBCC0A18E4F4E098AD4959394BC534AC993EC53578CFC5411C99EBB693D91A45074%
+C6937E51ACC993FA65E58B72811A82AA304C918165E9B88C5850BEB2C396D867288CCD67%
+AFC990815439B6C5B293FA65E5CACEC4DD82C730698B487A00C6C5AFC3B6D78CE1543E94%
+798F29C9928B663C90515BDDC98E9E66428AD49593D38BB772EDD2D7DAC0D6B3C58B436C%
+1782AA304CBDD9A1%
+}
+\bxjl@text{wagahai}{32}{%
+% 主人は毎日学校へ行く…
+8EE54E3B906C4EBACA96886BCE93FA65E58A775B668D5A6821CD8D73884CB8A18B415E30%
+D9C48F9166F88DD6658ECD97A77ACBC3E2C47C60D9A1906C4EBA82AA304C97886765D9C4%
+A48BB365598E745E2B82AA304C897D53AD82BE3060897D53AD82BE3060C4B2B3A190856C%
+348DCA5F6989E6753BD396C56EC591BD591AC6B6B6C5B2A1835E30BF834A30AB835730B8%
+838430E4835830B9835E30BFB0835B30BCD38CF7529F945C80FD82AA304CC5B2C4B2AFC3%
+D4D2C3BCCFAFC0A18FAC5C0F8B9F4F9BCA8AB4611F90535FC3C68B784F11CFC5B282C530%
+6797635E7C92747A1A89805712CDB6D6B3A18B415E30D9C48FA5553189CC6B4CA689CC6B%
+4CAFC3A49F7B6BECA6C2B2C3A48E9E6642815830058CE1543E94798F29A6904B5C3B94F6%
+5C3E82C5306782D43076D789BA4E0B82B03052D9A1%
+}
+\bxjl@text{wagahai}{33}{%
+% 吾輩は御馳走も食わな…
+8CE1543E94798F29CA8CE45FA1927999B391968D70D3904898DFDCC5B2B6D795CA522592%
+696BB594EC80A5D8D3BCC5B282AA304CA4CF82B8305ACF82B8305A8C9250658D4E5EB782%
+C53067E6EA8DDBC6D3C5D782B8305AC6BFC993FA65E5BFC993FA65E5A695E966AEBCC3B2%
+D9A1916C9F20CA8C886C7ABCC38EE653D6D7C5B2A1B5BBDDCA96A2672A82BE3060C68C99%
+5ACCB282C53067B1D9A196BC540D914F524DCACF82BE3060C2B9C3B8DAC5B282AA304CA4%
+977E6B32A6B2AFC3D38DDB969B8CC0965082AA304CC5B2B6D790B6751F8A556DAFBAC98B%
+B365598E745E2BC989C65BB682C5306796B3712196BC540DC9944C732B82C530678F497D%
+42D9C2D3D882BE3060A1%
+}
+
+%===============================
+%% text 'preamble'
+% The Preamble of the Constitution of Japan
+% Text data from e-Gov:
+% http://law.e-gov.go.jp/htmldata/S21/S21KE000.htm l
+\bxjl@text{preamble}{1}{%
+% 日本国民は、正当に選…
+93FA65E5967B672C8D9156FD96AF6C11CAA490B36B6393965F53C6914990788B936319BB%
+DAC08D9156FD89EF4F1AC6B5B9D991E34EE3955C88688ED28005A692CA901A82B63058C3%
+8D73884C93AE52D5BCA4DCDAD7C4DCDAD7C98E715B5091B75B6BC9C0D2C6A48F948AF88D%
+9156FD96AF6C11C4C98BA653549861548CC6D6D990AC621089CA679CC4A4DC82AA304C8D%
+9156FD915351689379571FC6DCC0C2C38EA981EA97527531C9D3C0D7BD8C62607591F26C%
+A2A68A6D78BA95DB4FDDBCA490AD653F957B5E9CC98D73884C88D770BAC6D6C2C38DC451%
+8D82D1307390ED622691884E89C98E5360E889D0798D82AA304C8B4E8D77D9BAC4C9C5B2%
+D4B3C6BDD9BAC4A68C886C7A88D3610FBCA4BABAC68EE54E3B8CA06A2982AA304C8D9156%
+FD96AF6C11C691B65B58BDD9BAC4A690E95BA38CBE8A00BCA4BAC98C9B61B296406CD5A6%
+8A6D78BA92E85B9ABDD9A1BFD3BFD38D9156FD90AD653FCAA48D9156FD96AF6C11C98CB5%
+53B38F6C7C9BC5904D4FE191F58A17C6D6D9D3C982C53067B1C2C3A4BFC98CA06A2988D0%
+5A01CA8D9156FD96AF6C11C69752753197886765BCA4BFC98CA06A2997CD529BCA8D9156%
+FD96AF6C11C991E34EE3955C88688ED2800582AA304CBADAA68D73884C8E674F7FBCA4BF%
+C9959F798F97985229CA8D9156FD96AF6C1182AA304CBADAA68B9D4EAB8EF353D7BDD9A1%
+BADACA906C4EBA97DE985E9581666E95D5904DC98CB4539F979D740682C53067B1D8A4BA%
+C98C9B61B296406CD5CAA4B6B6D98CB4539F979D7406C68AEE57FAB8D3C982C53067B1D9%
+A1DCDAD7CAA4BADAC694BD53CDBDD988EA4E0090D85207C98C9B61B296406CD5A496406C%
+D597DF4EE48B7953CA82D130738FD98A5492BA52C5A6947263928F9C9664BDD9A1%
+}
+\bxjl@text{preamble}{2}{%
+% 日本国民は、恒久の平…
+93FA65E5967B672C8D9156FD96AF6C11CAA48D5060528B764E45C995BD5E739861548CA6%
+944F5FF58AE89858BCA4906C4EBA8AD49593918A76F88CDD4E92C98AD695A28C574FC2A6%
+8E78652F947A914DBDD990925D078D829AD8C5979D7406917A60F3A6905B6DF1B88EA981%
+EA8A6F899ABDD9C982C53067B1C2C3A495BD5E739861548CA688A4611BBDD98F948AF88D%
+9156FD96AF6C11C98CF6516C90B36B63C4904D4FE18B607FA9C6904D4FE1978A983CBCC3%
+A4DCDAD7C988C05B8991535168C490B6751F91B65B58A695DB4FDD8E9D6301BCD6B3C48C%
+886C7A88D3610FBCC0A1DCDAD7CAA495BD5E739861548CA688DB7DAD8E9D6301BCA490EA%
+5C0290A75236C497EA96B78F5D5F93A488B3572794978FEBC495CE504F8BB772EDA6926E%
+57308FE34E0AB6D789696C3889939060C68F9C96648B8E53BBBCD6B3C4937752AAD2C382%
+EE3090D98D9156FD8DDB969B8ED0793E89EF4F1AC6B5B2C3A496BC540D975F8A89B1D992%
+6E573088CA4F4DA690E85360D2C0B2C48E76601DCCA1DCDAD7CAA49153516890A24E168A%
+45754CC98D9156FD96AF6C1182AA304CA4CBC4BCB88BB06050957C6016C48C876B209652%
+4E4FB6D796C6514DB6DAA495BD5E739861548CC9B3C1C690B6751F91B65B58BDD98CA06A%
+2997985229A6974C6709BDD9BAC4A68A6D78BA94468A8DBDD9A1%
+}
+\bxjl@text{preamble}{3}{%
+% われらは、いづれの国…
+DCDAD7CAA4B282C33065DAC98D9156FD89C65BB6D3A48EA981EA8D9156FDC9BAC4C9D0C6%
+90EA5C02944F5FF5BCC391BC4ED68D9156FDA696B371218E8B8996BCC3CAC5D7C5B2C982%
+C53067B1C2C3A490AD653F8EA16CBB93B9905393BF5FB3C996406CD591A55247CAA49581%
+666E95D5904D93497684C5D3C982C53067B1D8A4BAC996406CD591A55247C68F5D5F93CC%
+BAC4CAA48EA981EA8D9156FDC98EE54E3B8CA06A29A688DB7DAD8E9D6301BCA491BC4ED6%
+8D9156FDC491CE5BFE93997B498AD695A28C574FC2C697A77ACBC0B3C4BDD98A6554048D%
+9156FDC990D38CAC96B152D982C53067B1D9C4904D4FE182B8305AD9A1%
+}
+\bxjl@text{preamble}{4}{%
+% 日本国民は、国家の名…
+93FA65E5967B672C8D9156FD96AF6C11CAA48D9156FD89C65BB6C996BC540D975F8A89C6%
+B6B9A49153516897CD529BA6B182B03052C3BAC990925D078D829AD8C5979D7406917A60%
+F3C496DA76EE93497684A69242905490AC6210BDD9BAC4A690BE8A93CCA1%
+}
+
+%===============================
+%% text 'hatsukoi'
+% "初恋" (First Love)
+% Written by Shimazaki Tōson (島崎藤村;1872-1943)
+% Text data from Aozora Bunko:
+% http://www.aozora.gr.jp/cards/000158/files/1508_18509.html
+\bxjl@text{hatsukoi}{1}{%
+% まだあげ初めし前髪の…
+CF82BE3060B182B030528F89521DD2BC914F524D94AF9AEAC90A97D167978CE76A8EC9D3%
+C4C68CA9898BB4BCC4B70A914F524DC6BBBCC0D989D482B18BF96ADBC90A89D482B1B1D9%
+8C4E541BC48E76601DCBB9D8%
+}
+\bxjl@text{hatsukoi}{2}{%
+% やさしく白き手をのべ…
+D4BBBCB89492767DB78EE8624BA6C982D73079C30A97D167978CE76A8EA6DCDAC6B1C0CD%
+BCCA0A949685848D677D05C98F4879CBC98EC05B9FC60A906C4EBABACB8F89521DD2BCCA%
+82B63058D2C5D8%
+}
+\bxjl@text{hatsukoi}{3}{%
+% わがこゝろなきためい…
+DC82AA304CBA8154309DDBC5B7C0D2B2B7C90ABFC994AF9AEAC996D16BDBC6B68154309D%
+D9C4B70AC0C9BCB797F6604BC9947576C3A60A8C4E541B82AA304C8FEE60C5C68EDE914C%
+D0BCB6C5%
+}
+\bxjl@text{hatsukoi}{4}{%
+% 林檎畑の樹の下におの…
+97D167978CE76A8E94A87551C98EF76A39C989BA4E0BC60AB5C982C33065B6D7C5D98DD7%
+7D3093B99053CA0A924E8AB082AA304C93A58E0FD0BFD2BCB6C0D082BC305EC40A96E255%
+4FCBC0CFCCBABFBACBBCB9DA%
+}
+
+%===============================
+%% text 'kusamakura'
+% The opening passage from "草枕" (Kusamakura; lit. "Grass Pillow")
+% Written by Natsume Sōseki (夏目漱石;1867-1916)
+% Text data from Aozora Bunko:
+% http://www.aozora.gr.jp/cards/000148/files/776_14941.html
+\bxjl@text{kusamakura}{1}{%
+% 山路を登りながら、こ…
+8E525C7198488DEFA6936F767BD8C582AA304CD7A4BAB38D6C8003B4C0A1%
+}
+\bxjl@text{kusamakura}{2}{%
+% 智に働けば角が立つ。…
+9271667AC693AD50CDB982CE30708A7089D282AA304C97A77ACBC2A18FEE60C5C69EA868%
+F9BBBE82CE307097AC6D41BBDAD9A188D3610F926E5730A692CA901ABE82CE30708B877A%
+AE8BFC5C4882BE3060A1C4B6B8C6906C4EBAC990A24E16CA8F5A4F4FD0C6B8B2A1%
+}
+\bxjl@text{kusamakura}{3}{%
+% 住みにくさが高じると…
+8F5A4F4FD0C6B8BB82AA304C8D829AD882B63058D9C4A488C05B89B28F8A6240CD88F85F%
+15B7897A8D8ABCC0B8C5D9A182C73069BACD897A8D8ABCC3D38F5A4F4FD0C6B8B2C48CE5%
+609FAFC08E9E6642A48E8D8A6982AA304C90B6751FDAC3A489E6753B82AA304C8F6F51FA%
+97886765D9A1%
+}
+\bxjl@text{kusamakura}{4}{%
+% 人の世を作ったものは…
+906C4EBAC990A24E16A68DEC4F5CAFC0D3C9CA905F795E82C53067D3C5B9DA82CE30708B%
+539B3C82C53067D3C5B2A1D4CAD88CFC5411B38E4F4E098CAC8ED297BC4E2197D796A3D8%
+C6C1D7C1D7BDD9C082BE3060C9906C4EBA82C53067B1D9A1C082BE3060C9906C4EBA82AA%
+304C8DEC4F5CAFC0906C4EBAC990A24E1682AA304C8F5A4F4FD0C6B8B2B6D7C4C3A4897A%
+8D8ABD8D9156FDCAB1D9CFB2A1B1DA82CE3070906C4EBA82C53067C5BCC98D9156FDCD8D%
+73884CB882CE3070B6D882BE3060A1906C4EBA82C53067C5BCC98D9156FDCA906C4EBAC9%
+90A24E16D6D8D3C5B58F5A4F4FD0C6B8B6DBB3A1%
+}
+\bxjl@text{kusamakura}{5}{%
+% 越す事のならぬ世が住…
+897A8D8ABD8E964E8BC9C5D7C790A24E1682AA304C8F5A4F4FD0C6B8B9DA82CE3070A48F%
+5A4F4FD0C6B8B28F8A6240A682C73069DACE82C73069B6A48AB05BDB97655BB9C3A491A9%
+675FC98AD49593C996BD547DA6A491A9675FC98AD4959382C53067D38F5A4F4FD0D6B8BE%
+C882CE3070C5D7C7A1BABAC68E8D8A69906C4EBAC4B2B3935659299045807782AA304C8F%
+6F51FA97886765C3A4BABAC689E6753B89C65BB6C4B2B38E674F7F96BD547D82AA304C8D%
+7E964DD9A1B1D7D5D98C7C82B88F708853C98E6D58EBCA906C4EBAC990A24E16A692B795%
+778AD59591C6BCA4906C4EBAC990535FC3A6964C8C4AB6C6BDD982AA304C8CCC6545C691%
+B85C0AC4B2A1%
+}
+\bxjl@text{kusamakura}{6}{%
+% 住みにくき世から、住…
+8F5A4F4FD0C6B8B790A24E16B6D7A48F5A4F4FD0C6B8B794CF7169B2A688F85F15B794B2%
+629CB2C3A4B1D882AA304CC0B290A24E168A45754CA6CFC9B1C0D8C68ECA5199BDC982AA%
+304C8E8D8A6982C53067B1D9A489E6753B82C53067B1D9A1B1D9CA89B997F38A79697DC4%
+92A45F6B8D8F523B82C53067B1D9A1BACFB6C6895D4E91B482CE30708ECA5199BBC5B282%
+C53067D3D6B2A1C082BE3060CFC9B1C0D8C68CA9898BDA82CE3070A4BFBAC68E8D8A69D3%
+90B6751FB7A489CC6B4CD3974E6E67B8A192857740917A60F3A68E867D19C6978E843DBB%
+C7C4D381AC7486E85593D8C989B997F3CA8BB980F897A088CFC68B4E8D77D9A1924F4E39%
+90C29752CA89E6753B89CB67B6C68CFC5411AFC393685857969562B9BEDD82C53067D38C%
+DC4E948DCA5F69C988BA7D62E0A3721BCA8EA981EAB6D790535FC38AE1773CC689666620%
+D9A1C082BE3060B5C982AA304C8F5A4F4FD190A24E16A6A4B6B88ACF89B382B6305893BE%
+5F97C3A497EC970A91E453F095FB65B990A15BF8C9834A30AB838130E1838930E9C6E043%
+6F868B475B639FE56EB791F76FC1C991AD4FD78A45754CA690B46E05B8B3D7D7B6C68EFB%
+53CED293BE5F97DA82CE307091AB8DB3D9A1BAC98CCC6545C696B3712190BA58F0C98E8D%
+8A69906C4EBAC6CA88EA4E008BE553E5C5B8A496B3712190468272C989E6753B89C65BB6%
+C6CA8EDA5C3A81AC7E11C5B7D3A4B6B8906C4EBA90A24E16A68ACF89B382B6305893BE5F%
+97D9C9935F70B9C6B5B2C3A4B6B894CF7169945960A9A689F089E392458131BDD9C9935F%
+70B9C6B5B2C3A4B6B890B46E058FF26D448A45754CC68F6F51FA93FC5165BC93BE5F97D9%
+C9935F70B9C6B5B2C3A4CFC0BAC995734E0D93AF540C95734E0D93F14E8CC98AA34E7E8D%
+A35764A68C9A5EFA97A77ACBBC93BE5F97D9C9935F70B9C6B5B2C3A489E4621197985229%
+8E8479C1977C617EC9E64A898AE34A7D46A6917C638393A08569BDD9C9935F70B9C6B5B2%
+C3A4815C2015815C201590E753438BE091D1C98E715B50D6D8D3A4969C4E078FE64E57C9%
+8C4E541BD6D8D3A4B1D7D5D991AD4FD78A45754CC9929E5BF58E995150D6D8D38D4B5E78%
+959F798F82C53067B1D9A1%
+}
+\bxjl@text{kusamakura}{7}{%
+% 世に住むこと二十年に…
+90A24E16C68F5A4F4FD1BAC493F14E8C8F5C5341944E5E74C6BCC3A48F5A4F4FD1C68D62%
+753294E36590B1D990A24E16C4926D77E5AFC0A193F14E8C8F5C53418CDC4E94944E5E74%
+C6BCC396BE660E88C36697CA955C886897A088CFC982B23054C4B8A493FA65E5C9B1C0D9%
+8F8A6240C6CAB7AFC489655F7182AA304CBBBDC48CE5609FAFC0A18E4F4E098F5C5341C9%
+8DA14ECA93FA65E5CABAB38E76601DB3C3B2D9A1815C2015815C20158AEC559C82D13073%
+C9905B6DF1B7C4B7974A6182B2D6B2D6905B6DF1B8A48A79697DD0C991E55927B2C5D9CE%
+82C730698BEA82E6BCD0D391E55927B7B2A1BADAA690D85207D895FA653EBFB3C4BDD9C4%
+90678EAB82AA304C8E9D6301C3C7A195D0724782C33065B9D6B3C4BDDA82CE307090A24E%
+1682AA304C97A77ACBC0C7A18BE091D1CA91E559278E964E8B82BE3060A491E559278E96%
+4E8BC5D3C982AA304C90426B96B4DA82CE307090515BDDD98AD49593D390535FC3947A91%
+4D82BE3060DBB3A197F6604BCAB3DABCB2A48AF05B09BCB297F6604B82AA304C90CF7A4D%
+D3DA82CE3070A497F6604BA6BEC790CC661482AA304CB6B4AFC397F6604BBCB6DBA18A74%
+95A397BB50DAC98CA880A9CA909465709553767E969C4E07906C4EBAC991AB8DB3A68E78%
+652FB4C3B2D9A1947780CC92864E2DC6CA8F6491CDB29356592989BA4E0B82AA304CB582%
+D43076BBAFC3B2D9A1B3CFB295A87269D3904898DFDCC882CE307090C960DCBCB2A18FAD%
+5C11BC904898DFB482CE3070964F98FDB791AB8DB3D7C7A191B65B5895AA5206904898DF%
+B482CE3070B1C482AA304C95734E0D96F9610989F55FEB82BE3060A18163202681632026%
+}
+\bxjl@text{kusamakura}{8}{%
+% 余の考がここまで漂流…
+975D4F59C98D6C800382AA304CBABACF82C5306795596F0297AC6D41BCC397886765C08E%
+9E6642C6A4975D4F59C9894553F391AB8DB3CA93CB7A81915271368DBF5750D8C9DCD9B2%
+8A7089D290CE77F3C9925B7AEFA693A58E0FD091B9640DB8C5AFC0A195BD5E738D748861%
+A695DB4FDDC2C0D2C6A4BDDCD4C4914F524DC694F298DB82D130738F6F51FABCC08DB65D%
+E691AB8DB382AA304CA48E644ED591B9640D82B63058C9968457CBD28D875408BEA6BDD9%
+C48BA45171C6A4975D4F59C98D988170CA8BEF51778D875408D6B895FB65B98E4F4E098E%
+DA5C3ACE82C73069C58AE25CA9C98FE34E0AC689B55378D8C0A18CA880A9C6B6B9C08A47%
+7D75C98BEF517794A07BB182AA304CE3FC814BC989BA4E0BB6D796F48E8DD88F6F51FABC%
+C082BE3060B982C53067A48D4B5E78B2C489BD4F55C98E964E8BD3C5B6AFC0A1%
+}
+\bxjl@text{kusamakura}{9}{%
+% 立ち上がる時に向うを…
+97A77ACBC18FE34E0A82AA304CD98E9E6642C68CFC5411B3A68CA9898BD9C4A498488DEF%
+B6D78DB65DE6C995FB65B9C6836F30D0835030B1836330C4A6959A4F0FBEC0D6B3C595F4%
+5CF082AA304CE3DE8073B4C3B2D9A190996749B69E776A9CB695AA5206B6D7C5B282AA30%
+4C8DAA68398CB35143B6D792B89802B7CF82C53067BAC482B23054C4B8919384BC8D959E%
+D2B292864E2DC6A48E525C718DF7685C82AA304C9496858490D48D64B882BE3060DD82BE%
+3060D7C6924968DA88F85F15B2C3A491B17D9A82AC304E96DA76EE82AA304C8A6D78BAC4%
+8CA9898BB4C7B8D7B2E8C9974482AA304C945A6FC3B2A18FAD5C11BC8EE8624B914F524D%
+C693C379BF8E525C7182AA304C88EA4E00C2A48C517FA4A6C7B7DD82C53067C394FB7709%
+C6954E903CD9A193C379BF82B03052C091A4507496CA9762CA8B905DE8906C4EBAC99580%
+65A782C530678DED524AD88B8E53BBAFC0B6A4897392ED82C73069B795BD5E7396CA9762%
+A6D4B9C6924A8C37C992EA5E95C6968457CBD2C3B2D9A19356592995D38FBAC688EA4E00%
+967B672C8CA9898BB4D9C9CA90D48D648FBC677E82BE3060DBB3A18E7D679DC98AD49593%
+C98BF37A7ABBB494BB522491527136BCC3B2D9A18D73884CB88EE8624BCA93F14E8C929A%
+4E01CE82C7306982C5306790D85207DAC3B2D982AA304CA48D829AD8B28F8A6240B6D790%
+D48D64B296D16BDB957A5E0382AA304C93AE52D5B2C397886765D9C9A68CA9898BD9C4A4%
+936F767BDA82CE3070B1BDBACD8F6F51FAD9C982BE3060DBB3A198488DEFCABDBA82D430%
+76D993EF96E38B607FA982BE3060A1%
+}
+\bxjl@text{kusamakura}{10}{%
+% 土をならすだけならさ…
+9379571FA6C5D7BD82BE3060B9C5D7BBCE82C730698EE8624B8AD49593D393FC5165D9CF%
+B282AA304CA49379571FC992864E2DC6CA91E55927B7C590CE77F382AA304CB1D9A19379%
+571FCA95BD5E73D7C6BCC3D390CE77F3CA95BD5E73D7C6C5D7C7A190CE77F3CA90D85207%
+D88DD37815B2C3D3A48AE25CA9CA8E6E59CB9696672B82AA304CC2B6C7A18C40639895F6%
+5D29BCC09379571FC98FE34E0AC6974960A091527136C49BB35CD9AFC3A48CE1543ED7C9%
+C0D2C693B99053A68FF78B72D98C69666F90468272CAC5B2A18CFC5411B382C5306795B7%
+805EB6C78FE34E0ACA8FE64E57D8897A8D8ABDB6A489F45EFBD7C5B9DA82CE3070C5D7DD%
+A18ADE5DCCC9C5B28F8A624082C53067BBB495E06B69D9B7D6B8CAC5B2A18DB65DE68945%
+53F382AA304C8D829AD8B8AFC3A492864E2D90535FC382AA304C8C457AAADD82C53067A4%
+CFD982C5306788EA4E008AD49593959D5E45A68E4F4E098A7089D2C690FA7A7FAFC3A4BF%
+C992B89802935F70B982AA304C905E771F92864E2DA68AD18CABB2C3B2D9C4955D8A55BC%
+C3D3D6B2A198488DEFA68D73884CB8C4895D4E91DCDDD6D890EC5DDD92EA5E95A68FC26E%
+09D9C4895D4E91B395FB65B982AA304C934B906993965F5382BE3060A18CC556FAD6D88B%
+7D602582AE305097B765C582C53067C5B2B6D7A482D43076D782D43076D7C48EB54E038B%
+C866F2D8CDB6B6D9A1%
+}
+\bxjl@text{kusamakura}{11}{%
+% たちまち足の下で雲雀…
+C0C1CFC191AB8DB3C989BA4E0B82C53067895F96F2909D96C0C990BA58F082AA304CBC8F%
+6F51FABCC0A1924A8C37A68CA9898B89BA4E0BBCC082AA304CA482C73069BA82C5306796%
+C29CF4B2C3D9B689655F71D38C605F62D38CA9898BB4C7A1C082BE306090BA58F082BE30%
+60B982AA304C96BE660ED7B6C695B7805EB4D9A1BEAFBEC4965A5FD9BCB8A490E27D768A%
+D49593C5B896C29CF4B2C3B2D9A195FB65B98AF45E7E97A291CCC98BF37A7A8B436C1782%
+AA304C88EA4E0096CA9762C6946186A4C68E68523ABBDAC3B2C0C0CFDAC5B2D6B3C58B43%
+6C1782AA304CBDD9A1B1C992B99CE5C996C29CF4B889B997F3C6CA8F7577AC8E9E6642C9%
+975D4F59975488D5D3C5B2A1C982C73069B6C58F746625C993FA65E5A696C29CF4B79073%
+5C3DB8BCA496C29CF4B7B1B6BCA4CFC096C29CF4B795E966AED7BBC5B9DA82CE30708B43%
+6C1782AA304C8DCF6E08CFDDC48CA9898BB4D9A1BFC98FE34E0A82C73069BACF82C53067%
+D3936F767BAFC38D73884CB8A4B2C2CF82C53067D3936F767BAFC38D73884CB8A1895F96%
+F2909D96C0CAB7AFC4895F96F2C992864E2D82C530678E806B7BC7C6918A76F888E19055%
+C5B2A1936F767BD88B6C8A70D2C0976763DA8BE553E5CAA497AC6D41DAC3895F96F2C693%
+FC5165AFC3A495596F02B3C3B2D9B3C1C68C605F62CA8FC16D88B4C3C5B8C5AFC3A4C082%
+BE306090BA58F082BE3060B982AA304C8BF37A7AC997A188E1C68E636B8BD9C9B6D3926D%
+77E5DAC5B2A1%
+}
+\bxjl@text{kusamakura}{12}{%
+% 巌角を鋭どく廻って、…
+8ADE5DCC8A7089D2A6897392ED82C73069B889F45EFBAFC3A488C2630996806469C5D790%
+5E771F8B749006976C69D8C6978E843DC2D9C4BADBA6A48DDB969B82C73069B8894553F3%
+CD90D85207DAC3A489A16A2AC68CA9898B89BA4E0BBDC4A48DD883DCC989D482B182AA30%
+4C88EA4E0096CA9762C68CA9898BB4D9A1895F96F2909D96C0CAB1BDBACD978E843DC1D9%
+C9B6C48E76601DAFC0A1B2B2D4A4B1C989A99EC48BE091D1C98CB4539FB6D794F298DB82%
+D130738FE34E0A82AA304CAFC3B8D9C9B6C48E76601DAFC0A18E9F6B21C6CA978E843DC1%
+D9895F96F2909D96C0C4A48FE34E0AD9895F96F2909D96C082AA304C8F5C534195B66587%
+8E9A5B57C6BDDA88E19055B3C9B6C48E76601DAFC0A18DC567008CE35F8CC6A4978E843D%
+C1D98E9E6642D3A48FE34E0AD98E9E6642D3A4CFC08F5C534195B665878E9A5B57C68E43%
+64E6DA88E19055B3C4B7C6D38CB351438B436C17D6B896C29CF4B7C282C33065B9D982BE%
+3060DBB3C48E76601DAFC0A1%
+}
+\bxjl@text{kusamakura}{13}{%
+% 春は眠くなる。猫は鼠…
+8F746625CA96B07720B8C5D9A1944C732BCA916C9F20A695DF6355D98E964E8BA696595F%
+D8DAA4906C4EBA8AD49593CA8ED8501F8BE091D1C9B1D98E964E8BA696595FD8DAD9A18E%
+9E6642C6CA8EA981EA95AA5206C98DB09B42C98B8F5C458F8A6240BBB496595FD8DAC390%
+B36B6391CC4F53C5B8C5D9A1C082BE30608DD883DCC989D482B1A689939060B8965D671B%
+DD82BE3060C4B7C68AE1773C82AA304C90C19192D2D9A1895F96F2909D96C0C990BA58F0%
+A695B7805EB2C0C4B7C68DB09B42C9B1D8B682AA304C94BB522491527136BDD9A1895F96%
+F2909D96C0C996C29CF4B8C9CA8CFB53E382C5306796C29CF4B8C982C53067CAC5B2A48D%
+B09B429153516891CC4F5382AA304C96C29CF4B8C982BE3060A18DB09B42C98A886D3B93%
+AE52D582AA304C90BA58F0C6B1D7DCDAC0D3C9C9B3C182C53067A4B1DACE82C730698CB3%
+51438B436C17C9B1D9D3C9CAC5B2A1B1B196F9610989F55FEB82BE3060A1BAB38E76601D%
+AFC3A4BAB396F9610989F55FEBC6C5D9C982AA304C8E8D8A6982C53067B1D9A1%
+}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxjalipsum/sample-bxjalipsum-1.tex b/language/japanese/BX/bxjalipsum/sample-bxjalipsum-1.tex
new file mode 100644
index 0000000000..d316dfe298
--- /dev/null
+++ b/language/japanese/BX/bxjalipsum/sample-bxjalipsum-1.tex
@@ -0,0 +1,45 @@
+% LuaLaTeX document
+\documentclass[a4paper]{ltjsarticle}
+\usepackage{bxjalipsum}
+\begin{document}
+
+\section{iroha}
+
+% the Iroha sequence
+\jalipsumiroha
+
+\section{jugemu}
+
+\begin{flushright}
+
+% the person name in Jugemu
+\begin{parbox}[t]{12\zw}{%
+\jalipsumjugemu
+}%
+\end{parbox}
+\hspace{2cm}%
+\begin{parbox}[t]{12\zw}{%
+\jalipsumjugemuP
+}%
+\end{parbox}
+
+\end{flushright}
+
+\section{wagahai}
+
+% "Wagahai wa Neko de aru" by Natsume Soseki
+\begin{itemize}
+\item \jalipsum[-2]{wagahai}
+\item \jalipsum[3-4]{wagahai}
+\item \jalipsum[5]{wagahai}
+\end{itemize}
+
+\section{hatsukoi}
+
+% "Hatsukoi" by Shimazaki Toson
+\begin{quote}
+\addtolength{\parskip}{\baselineskip}
+\jalipsum{hatsukoi}
+\end{quote}
+
+\end{document}
diff --git a/language/japanese/BX/bxjalipsum/sample-bxjalipsum-2.tex b/language/japanese/BX/bxjalipsum/sample-bxjalipsum-2.tex
new file mode 100644
index 0000000000..bd6344e6dc
--- /dev/null
+++ b/language/japanese/BX/bxjalipsum/sample-bxjalipsum-2.tex
@@ -0,0 +1,25 @@
+% upLaTeX document
+\documentclass[uplatex,a4paper]{jsarticle}
+\usepackage{bxjalipsum}
+\usepackage{plext}% for '\bou' command
+%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TeX code BEGIN
+% with a bit of TeXnique...
+%% Expand 'em all!!
+\edef\wagahaiOne{\jalipsum[1]{wagahai}}
+\edef\wagahaiTwo{\jalipsum[2-5]{wagahai}}
+%% \argexpd\CMD{<argument>}
+\def\argexpd#1{\expandafter#1\expandafter}
+%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TeX code END
+\begin{document}
+
+% rather nonsensical examples
+% (The \bou command add "bouten" to the given text.)
+
+\argexpd\bou{\jalipsumiroha}
+
+\argexpd\bou{\wagahaiOne}
+
+% NB. The meaning of \wagahaiTwo contains \par, so it is
+% not suitable for \bou.
+
+\end{document}
diff --git a/language/japanese/BX/bxjaprnind/LICENSE b/language/japanese/BX/bxjaprnind/LICENSE
new file mode 100644
index 0000000000..8ada757fbc
--- /dev/null
+++ b/language/japanese/BX/bxjaprnind/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/BX/bxjaprnind/README-ja.md b/language/japanese/BX/bxjaprnind/README-ja.md
new file mode 100644
index 0000000000..8c82f26e7c
--- /dev/null
+++ b/language/japanese/BX/bxjaprnind/README-ja.md
@@ -0,0 +1,47 @@
+BXjaprnind パッケージ
+=====================
+
+LaTeX: 段落頭の開き括弧類の位置の自動調整
+
+段落冒頭および強制改行後の行頭における開き括弧の位置をユーザが予め
+設定した値に自動的に調整する。
+
+### 対応環境
+
+ - TeX フォーマット: LaTeX
+ - TeX エンジン: pTeX/upTeX/LuaTeX(+LuaTeX-ja)
+ - 依存パッケージ: bxtoolbox([BXbase] バンドル)
+
+[BXbase]: https://www.ctan.org/pkg/bxbase
+
+### インストール
+
+TDS 1.1 に準拠するシステムの場合、以下のようにファイルを移動する:
+
+ - *.sty → $TEXMF/tex/latex/BXjaprnind
+
+この後必要に応じて mktexlsr を実行する。
+
+### ライセンス
+
+本パッケージは MIT ライセンスの下で配布される。
+
+bxjaprnind パッケージ ― 本体
+-----------------------------
+
+詳細は解説文書 bxjaprnind.pdf を参照。
+
+更新履歴
+--------
+
+ * Version 0.3b 〈2017/09/12〉
+ - source special 挿入への対策。
+ * Version 0.3a 〈2013/05/05〉
+ - 会話用の特別な鉤括弧の処理を追加した。
+ * Version 0.3 〈2013/04/29〉
+ - everyhook パッケージへの依存を無くした。
+ * Version 0.2 〈2012/05/14〉
+
+----------------------------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/BX/bxjaprnind/README.md b/language/japanese/BX/bxjaprnind/README.md
new file mode 100644
index 0000000000..bbe62aeab0
--- /dev/null
+++ b/language/japanese/BX/bxjaprnind/README.md
@@ -0,0 +1,62 @@
+BXjaprnind Package
+==================
+
+LaTeX: To adjust the position of parentheses at paragraph head
+
+In Japanese typesetting, opening parentheses placed at the beginning
+of paragraphs or lines are treated specially; for example, while the
+paragraph indent before normal kanji characters is 1em, the indent
+before parentheses can be 0.5em, 1em or 1.5em deoending on the local
+rule in effect.
+
+This package allows users to specify the amount of indent just before
+Japanese parentheses placed at paragraph/line head.
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: pTeX / upTeX / LuaTeX (+ LuaTeX-ja).
+ (The support for XeTeX is currently broken.)
+ * Dependent packages:
+ - bxtoolbox (from [BXbase] bundle)
+
+[BXbase]: https://www.ctan.org/pkg/bxbase
+
+### Package content
+
+ * `bxjaprnind.sty`: the package
+ * `bxjaprnind.pdf`: the user manual (in Japanese)
+ * `bxjaprnind.tex`: the source file of `bxjaprnind.pdf`
+ * `sample-bxjaprnind.pdf`: a sample document (in Japanese)
+ * `sample-bxjaprnind.tex`: the source file of `sample-bxjaprnind.pdf`
+
+### Installation
+
+In a system compliant to TDS 1.1, move the files as follows:
+
+ - `*.sty` → $TEXMF/tex/latex/BXjaprnind
+
+And rehash your TEXMF trees if necessary.
+
+### License
+
+This package is distributed under the MIT License.
+
+
+bxjaprnind package ― main
+--------------------------
+
+See the manual bxjaprnind.pdf (in Japanese) for detail.
+
+
+Revision History
+----------------
+
+ * Version 0.3b 〈2017/09/12〉
+ * Version 0.3a 〈2013/05/05〉
+ * Version 0.3 〈2013/04/29〉
+ * Version 0.2 〈2012/05/14〉
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/BX/bxjaprnind/bxjaprnind.pdf b/language/japanese/BX/bxjaprnind/bxjaprnind.pdf
new file mode 100644
index 0000000000..3de18a0b44
--- /dev/null
+++ b/language/japanese/BX/bxjaprnind/bxjaprnind.pdf
Binary files differ
diff --git a/language/japanese/BX/bxjaprnind/bxjaprnind.sty b/language/japanese/BX/bxjaprnind/bxjaprnind.sty
new file mode 100644
index 0000000000..77196e842f
--- /dev/null
+++ b/language/japanese/BX/bxjaprnind/bxjaprnind.sty
@@ -0,0 +1,388 @@
+%
+% bxjaprnind.sty
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxjaprnind}[2017/09/12 v0.3b]
+
+\def\bxpi@pkgname{bxjaprnind}
+\def\bxpi@error{\PackageError\bxpi@pkgname}
+
+%% definitions
+\newdimen\bxpi@dima
+
+%% code guards
+\edef\bxpi@restore@codes{%
+\catcode33=\the\catcode33%<!>
+\catcode34=\the\catcode34%<">
+\catcode62=\the\catcode62%<>>
+\endlinechar=\the\endlinechar%
+\relax}%
+\catcode33=12 %
+\catcode34=12 %
+\catcode62=12 %
+\AtEndOfPackage{%
+\bxpi@restore@codes
+\undef\bxpi@restore@codes}
+
+%------------------- setting the everypar hook
+
+\RequirePackage{bxtoolbox}
+
+%% Checks if everyhook package is available
+\@tempswafalse
+\ifbxineTeX
+ \IfFileExists{everyhook.sty}{%
+ \@tempswatrue
+ }{}
+\fi
+
+\if@tempswa
+ % if everyhook is available...
+ \RequirePackage{everyhook}[2011/02/04]
+
+ % register the hook
+ \PushPostHook{par}{\bxpi@par@hook}
+
+\else
+ % otherwise...
+ % makes a hook to \everypar for myself
+ \let\bxpi@everypar\everypar
+ \newtoks\everypar
+ \everypar\bxpi@everypar
+ \bxpi@everypar{\the\expandafter\everypar\bxpi@par@hook}%
+
+\fi
+\endlinechar=-1 %
+%------------------- setting the newline hook
+
+%% adds hooks to (subcommands of) \\
+\preto\@xnewline{\bxpi@init@param}
+\let\bxpi@org@@newline\@newline
+\def\@newline[#1]{
+ \bxpi@parse@arg{#1}
+ \expandafter\bxpi@org@@newline\expandafter[\bxpi@res]
+}
+\begingroup
+ \toks@\expandafter{\@gnewline{#1}}
+ \edef\bxpi@next{
+ \gdef\noexpand\@gnewline##1{
+ \the\toks@
+ \noexpand\bxpi@paren@indent
+ }
+ }
+ \bxpi@next
+\endgroup
+
+%------------------- helpers
+
+%% \bxpi@inhibitglue
+\ifdef\inhibitglue{
+ \let\bxpi@inhibitglue\inhibitglue
+}{%else
+ \let\bxpi@inhibitglue\relax
+ \bxpi@warn{
+ \string\inhibitglue\space unavailable in current settings;
+ \MessageBreak the package may not work properly
+ }
+}
+
+%------------------- main
+
+%% \def\bxpi@parhead
+\def\bxpi@parhead{0}
+%% \def\bxpi@linehead
+\def\bxpi@linehead{0}
+%% \def\bxpi@dialogue
+\def\bxpi@dialogue{0.5}
+%% \def\bxpi@lineheadforce
+\def\bxpi@lineheadforce{1}
+%% \ifbxpi@d@parprnind
+\newbool{bxpi@d@parprnind}\bxpi@d@parprnindtrue
+%% \ifbxpi@d@lineprnind
+\newbool{bxpi@d@lineprnind}\bxpi@d@lineprnindtrue
+%% \ifbxpi@diaprnind
+\newbool{bxpi@diaprnind}\bxpi@diaprnindfalse
+%% \ifbxpi@prnind
+\newbool{bxpi@prnind}
+%% \ifbxpi@forceind
+\newbool{bxpi@forceind}
+%% \bxpi@choice
+\let\bxpi@choice\relax
+%% \bxpi@special
+\let\bxpi@special\relax
+
+%%<*> \useparheadparenindent
+\bxNewrobustcmd*{\useparheadparenindent}{
+ \bxpi@d@parprnindtrue
+}
+
+%%<*> \nouseparheadparenindent
+\bxNewrobustcmd*{\nouseparheadparenindent}{
+ \bxpi@d@parprnindfalse
+}
+
+%%<*> \uselineheadparenindent
+\bxNewrobustcmd*{\uselineheadparenindent}{
+ \bxpi@d@lineprnindtrue
+}
+
+%%<*> \nouselineheadparenindent
+\bxNewrobustcmd*{\nouselineheadparenindent}{
+ \bxpi@d@lineprnindfalse
+}
+
+%%<*> \usedialogueparenindent
+\bxNewrobustcmd*{\usedialogueparenindent}{
+ \bxpi@diaprnindtrue
+}
+
+%%<*> \nousedialogueparenindent
+\bxNewrobustcmd*{\nousedialogueparenindent}{
+ \bxpi@diaprnindfalse
+}
+
+%%<*> \parheadparenindentamount
+% Sets the value of \bxpi@parhead.
+\bxNewrobustcmd*{\parheadparenindentamount}[1]{
+ \edef\bxpi@parhead{#1}
+}
+
+%<*> \lineheadparenindentamount
+% Sets the value of \bxpi@linehead.
+\bxNewrobustcmd*{\lineheadparenindentamount}[1]{
+ \edef\bxpi@linehead{#1}
+}
+
+%<*> \lineheadforceindentamount
+% Sets the value of \bxpi@lineheadforce.
+\bxNewrobustcmd*{\lineheadforceindentamount}[1]{
+ \edef\bxpi@lineheadforce{#1}
+}
+
+%%<*> \prnind
+%
+\bxNewrobustcmd*{\prnind}{
+ \leavevmode\relax
+ \bxpi@prnindtrue
+ \bxpi@forceindfalse
+ \let\bxpi@choice=m
+ \let\bxpi@special\relax
+ \kernel@ifnextchar[{
+ \bxpi@prnind@a
+ }{%else
+ \let\bxpi@value\bxpi@parhead
+ \bxpi@paren@indent
+ }
+}
+\def\bxpi@prnind@a[#1]{
+ \def\bxpi@value{#1}
+ \bxpi@paren@indent
+}
+
+%% \bxpi@init@param
+% Initializes the parameters.
+% (Invoked at every \\.)
+\def\bxpi@init@param{
+ \bxpi@prnind@linedflt
+ \bxpi@forceindfalse
+ \let\bxpi@choice=l
+ \let\bxpi@value\bxpi@linehead
+ \let\bxpi@special\relax
+}
+
+%% \bxpi@parse@arg{<str>}
+% Parses the option argument of \\. It reads the prefix > and !
+% and sets the switches bxpi@forceind and bxpi@prnind, then
+% sets the remaining string to \bxpi@res, which is passed to
+% the original argument parser (\@newline).
+\def\bxpi@parse@arg#1{%
+ \bxpi@parse@arg@a#1\bxpi@end
+}
+\def\bxpi@parse@arg@a{
+ \futurelet\bxpi@tok\bxpi@parse@arg@b
+}
+\def\bxpi@parse@arg@b{
+ \bxIfx{\bxpi@tok\bgroup}{
+ \bxpi@parse@arg@c
+ }{%else
+ \bxpi@parse@arg@d
+ }
+}
+\def\bxpi@parse@arg@c#1\bxpi@end{
+ \ifstrempty{#1}{
+ \def\bxpi@res{\z@}
+ }{%else
+ \def\bxpi@res{#1}
+ }
+}
+\def\bxpi@parse@arg@d#1{%
+ \bxIfx{,#1}{
+ \bxpi@parse@arg@a
+ }{\bxIfx{!#1}{
+ \ifbxpi@prnind \bxpi@prnindfalse
+ \else \bxpi@prnindtrue
+ \fi
+ \bxpi@parse@arg@a
+ }{\bxIfx{>#1}{
+ \bxpi@forceindtrue
+ \bxpi@parse@arg@a
+ }{
+ \bxpi@parse@arg@c#1
+ }}}
+}
+
+%% \bxpi@par@hook
+\def\bxpi@par@hook{
+ \bxpi@prnind@pardflt
+ \bxpi@forceindfalse
+ \let\bxpi@choice=p
+ \let\bxpi@value\bxpi@parhead
+ \let\bxpi@special\relax
+ \futurelet\bxpi@tok\bxpi@par@hook@a
+}
+\def\bxpi@par@hook@a{
+ \bxIfx{\bxpi@tok\special}{
+ \bxpi@par@hook@b
+ }{%else
+ \bxpi@paren@indent
+ }
+}
+\def\bxpi@par@hook@b#1#2{
+ \def\bxpi@special{#2}
+\bxDebug{special:#2}
+ \bxpi@paren@indent
+}
+
+%% \bxpi@paren@indent
+\def\bxpi@paren@indent{
+ \bxpi@dima=-\maxdimen
+ \ifbxpi@forceind
+ \bxGetZenkakuWidth
+ \bxpi@dima=\bxResDim
+ % empty boxes never warn undefhull
+ \hb@xt@\bxpi@lineheadforce\bxpi@dima{}
+\bxDebug{forceind:\bxpi@lineheadforce}
+ \fi
+ \ifbool{bxpi@prnind}{
+ \futurelet\bxpi@tok\bxpi@prnindent@a
+ }{%else
+ \bxpi@put@special
+ \ignorespaces
+ }
+}
+\expandafter\def\expandafter\bxpi@prnindent@space\space{
+ \futurelet\bxpi@tok\bxpi@prnindent@a
+}
+\def\bxpi@prnindent@a{
+ \bxIf{\@sptoken\bxpi@tok}{
+ \bxpi@prnindent@space
+ }{\bxIfCharToken\bxpi@tok{
+ \bxpi@prnindent@b
+ }{%else
+ \bxpi@put@special
+ \ignorespaces
+ }}
+}
+\def\bxpi@prnindent@b#1{
+ \bxpi@if@open@paren#1{
+ \ifbxpi@diaprnind
+ \if m\bxpi@choice \else
+ \bxpi@if@dia@open@paren#1{
+ \let\bxpi@value\bxpi@dialogue
+ \if p\bxpi@choice
+ {\setbox0=\lastbox}
+\bxDebug{cancel parindent}
+ \fi
+ }
+ \fi
+ \fi
+ \bxpi@prnindent@c
+ }
+ \bxpi@put@special
+ #1
+}
+\def\bxpi@prnindent@c{
+ \ifdim \bxpi@dima<\z@
+ \bxGetZenkakuWidth
+ \bxpi@dima=\bxResDim
+ \fi
+ \kern\bxpi@value\bxpi@dima
+\bxDebug{parind:\bxpi@value}
+ \bxpi@inhibitglue
+}
+
+%% \bxpi@put@special
+\def\bxpi@put@special{
+ \ifx\bxpi@special\relax\else
+\bxDebug{put-special:}
+ \special{\bxpi@special}
+ \let\bxpi@special\relax
+ \fi
+}
+
+%% \bxpi@if@open@paren
+\def\bxpi@if@open@paren#1{
+ \bxIfcsundef{bxpi@P/#1}
+ {\@gobble}
+ {\@firstofone}
+}
+
+%% \bxpi@if@dia@open@paren
+\def\bxpi@if@dia@open@paren#1{
+ \bxIfcsundef{bxpi@DP/#1}
+ {\@gobble}
+ {\@firstofone}
+}
+
+%% \bxpi@prnind@pardflt
+\edef\bxpi@prnind@pardflt{
+ \let\bxCsNoexpand{ifbxpi@prnind}
+ \bxCsNoexpand{ifbxpi@d@parprnind}
+}
+%% \bxpi@prnind@linedflt
+\edef\bxpi@prnind@linedflt{
+ \let\bxCsNoexpand{ifbxpi@prnind}
+ \bxCsNoexpand{ifbxpi@d@lineprnind}
+}
+
+%------------------- character table
+
+%% \bxpi@P/<char>
+\def\do#1#2{%
+ \bxToUcsCharDual{"#1}{"#2}
+ \cslet{bxpi@P/\bxRes}{t}
+}
+\do{2146}{2018}
+\do{2148}{201C}
+\do{214A}{FF08}
+\do{214C}{3014}
+\do{214E}{FF3B}
+\do{2150}{FF5B}
+\do{2152}{3008}
+\do{2154}{300A}
+\do{2156}{300C}
+\do{2158}{300E}
+\do{215A}{3010}
+\ifbxHasUcsChar
+ \def\do#1{
+ \bxToUcsChar{"#1}
+ \cslet{bxpi@P/\bxRes}{t}
+ }
+\do{2985}
+\do{3018}
+\do{3016}
+\do{00AB}
+\do{301D}
+\fi
+
+%% \bxpi@DP/<char>
+\def\do#1#2{%
+ \bxToUcsCharDual{"#1}{"#2}
+ \cslet{bxpi@DP/\bxRes}{t}
+}
+\do{2156}{300C}
+\do{2158}{300E}
+
+%------------------- all done
+\endinput
diff --git a/language/japanese/BX/bxjaprnind/bxjaprnind.tex b/language/japanese/BX/bxjaprnind/bxjaprnind.tex
new file mode 100644
index 0000000000..d9f63c803a
--- /dev/null
+++ b/language/japanese/BX/bxjaprnind/bxjaprnind.tex
@@ -0,0 +1,119 @@
+% 文字コードは UTF-8
+% lualatex で組版する(LuaTeX-ja 使用)
+\documentclass[a4paper]{ltjsarticle}
+\usepackage[ipaex]{luatexja-preset}
+\usepackage{metalogo}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{0.3b}
+\newcommand{\PkgDate}{2017/09/12}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{~:\quad}
+\providecommand{\pTeX}{p\TeX}
+\providecommand{\upTeX}{u\pTeX}
+%-----------------------------------------------------------
+\begin{document}
+\title{\Pkg{bxjaprnind} パッケージ(v\PkgVersion)}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion\quad[\PkgDate]}
+\maketitle
+
+%===========================================================
+\section{概要}
+
+以下の機能を提供する。
+\begin{itemize}
+\item 段落冒頭および強制改行後の行頭における開き括弧の前に
+ (環境により)挿入されるグルーを除去する。
+ このようなグルーが行分割の都合で伸縮すると、
+ ソース上で同じ条件にある括弧の位置が揃わないという
+ 不都合が生じる。
+\item さらに、そのような開き括弧の前の字下げを、
+ 著者が予め設定した量に自動的に調整する。
+\item 強制改行命令(|\\|)のオプションとして
+ 改行後に予め設定した量の字下げを行えるようにする。
+\end{itemize}
+
+\paragraph{対応フォーマット} \LaTeX。
+
+\paragraph{対応エンジン} 次の何れか。
+\begin{itemize}
+\item {\pTeX}またはその拡張。
+\item {\XeTeX}(\Pkg{ZXjatype}パッケージ使用時)
+\item {\LuaTeX}(\Pkg{LuaTeX-ja}パッケージ使用時)
+\end{itemize}
+
+\paragraph{依存パッケージ} 次の通り。
+\begin{itemize}
+\item \Pkg{bxtoolbox} パッケージ(\Pkg{BXbase}バンドルに含まれる)
+\item 0.3版以降は\Pkg{everyhook}パッケージに依存しなくなった。
+しかし、\Pkg{everyhook}パッケージが利用可能である場合はそれを利用する。
+\item \Pkg{everyhook}パッケージは\Pkg{svn-proc} パッケージに依存する。
+\end{itemize}
+
+%===========================================================
+\section{パッケージの読込}
+
+|\usepackage| で読み込む。
+オプションはない。
+\begin{verbatim}
+\usepackage{bxjaprnind}
+\end{verbatim}
+
+%===========================================================
+\section{機能}
+
+以下の命令が提供される。
+
+\begin{itemize}
+\item |\useparheadparenindent|/|\nouseparheadparenindent|\Means
+ 段落頭での開き括弧調整を有効/無効にする。
+\item |\uselineheadparenindent|/|\nouselineheadparenindent|\Means
+ 強制改行後の行頭での開き括弧調整を有効/無効にする。
+ \Note 折り返しの行頭の調整には対応しない
+ (これにはJFMの修正が必須)。
+ 現在(u){\pTeX}で標準的に用いられるJFMの場合、
+ 折り返し行頭の開き括弧の前には空きは入らない。
+\item |\prnind[|\Meta{実数$r$}|]|\Means
+ 段落頭で用いて、当該の箇所での調整を
+ (|\nouseparheadparenindent| の状態でも)有効にする。
+ オプションの引数が存在する場合は、
+ 開き括弧の前の空きを$r$全角幅とする。
+\item |\\[|\Meta{引数}|]|/|\\*[|\Meta{引数}|]|\Means
+ 強制改行命令のオプション引数が次のように拡張される。
+ \begin{itemize}
+ \item |\\[>]|\Means
+ 行頭に |\lineheadforceindentamount| で指定した幅の
+ 字下げを挿入する。
+ \item |\\[!]|\Means
+ 開き括弧調整の有効・無効を逆転する。
+ 元々の引数(改行調整の値)と併用する場合は、
+ |!| や |>| を長さの値の前に記述する
+ (例えば |\\[>!2mm]|)。
+ \end{itemize}
+\item |\parheadparenindentamount{|\Meta{実数$r$}|}|\Means
+ 段落頭での開き括弧の前の追加の空きを$r$全角幅とする。
+ 段落下げの空き(|\parindent|)はこれとは独立に入ることに注意。
+\item |\lineheadparenindentamount{|\Meta{実数$r$}|}|\Means
+ 強制改行後の行頭での開き括弧の前の追加の空きを$r$全角幅とする。
+ (強制字下げ(|\\[>]|)の空きとは独立。)
+\item |\lineheadforceindentamount{|\Meta{実数$r$}|}|\Means
+ 強制字下げ(|\\[>]|)の空きを$r$全角幅とする。
+\item |\usedialogueparenindent|/|\nousedialogueparenindent|\Means
+ 会話用の特別な開き括弧調整を有効/無効にする。
+ 有効にすると鉤括弧「」『』について以下のように調整方法が変わる。
+ \begin{itemize}
+ \item 空きの量を |\dialogueparenindentamount| で指定された値にする。
+ \item 段落頭の場合は段落下げの空き(|\parindent|)を無効にする。
+ \end{itemize}
+ \Note
+ 臨時に鉤括弧の扱いを通常の括弧と同じにしたい場合は、
+ 当該の鉤括弧の前に |\prnind| を置けばよい。
+\item |\dialogueparenindentamount{|\Meta{実数$r$}|}|\Means
+ 段落頭・強制改行行頭での会話用の開き鉤括弧の前の追加の
+ 空きを$r$全角幅とする。
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/BX/bxjaprnind/sample-bxjaprnind.pdf b/language/japanese/BX/bxjaprnind/sample-bxjaprnind.pdf
new file mode 100644
index 0000000000..57bf934eac
--- /dev/null
+++ b/language/japanese/BX/bxjaprnind/sample-bxjaprnind.pdf
Binary files differ
diff --git a/language/japanese/BX/bxjaprnind/sample-bxjaprnind.tex b/language/japanese/BX/bxjaprnind/sample-bxjaprnind.tex
new file mode 100644
index 0000000000..676ea2fd54
--- /dev/null
+++ b/language/japanese/BX/bxjaprnind/sample-bxjaprnind.tex
@@ -0,0 +1,131 @@
+% upLaTeX文書; 文字コードはUTF-8
+\documentclass[a4paper,uplatex]{jsarticle}
+\usepackage{bxjaprnind}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\begin{document}
+\title{\Pkg{bxjaprnind}パッケージサンプル出力}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{2013/04/29}
+\maketitle
+
+%-------------------
+\section{段落頭の括弧類の空き自動補正}
+\newcommand\SampleTextA{%
+「□□□□?」\par
+「□□□□□□□□、□□□□□□□□」\par
+「□□□□□□□□!」\par
+}
+
+\begin{itemize}
+\item 左は自動補正を無効化(\verb|\nouseparheadparenindent|)。
+\item 右は自動補正を有効化(\verb|\useparheadparenindent|)。
+\end{itemize}
+\begin{center}
+% 既定は有効だが敢えて無効にする
+\nouseparheadparenindent % 段落頭での補正を無効に
+\fbox{\begin{minipage}{10zw}
+ \setlength{\parindent}{1zw}
+ \SampleTextA
+\end{minipage}}%
+\hspace{4zw}
+\useparheadparenindent % 段落頭での補正を有効に
+\fbox{\begin{minipage}{10zw}
+ \setlength{\parindent}{1zw}
+ \SampleTextA
+\end{minipage}}%
+\end{center}
+
+%-------------------
+\section{段落頭の括弧類の空きの補正値の変更}
+\newcommand\SampleTextB{%
+「□□□□□□□、□□□□□□□□□□□□□□□」
+}
+
+\begin{itemize}
+\item 左は既定(\verb|\parheadparenindentamount{0}|)。
+\item 右は半角下げに変更(\verb|\parheadparenindentamount{-0.5}|)。
+\item 段落下げ(\verb|\parindent|)が入った位置を基準にしている。
+\item 強制改行後の空白の調整は可能(\verb|\lineheadparenindentamount|)
+だが折り返し行頭の空白の調整は{\pTeX}の仕様上困難である。
+\end{itemize}
+\begin{center}
+\parheadparenindentamount{0} % 全角下げ(既定値)
+\fbox{\begin{minipage}{10zw}
+ \setlength{\parindent}{1zw}
+ \SampleTextB
+\end{minipage}}%
+\hspace{4zw}
+\parheadparenindentamount{-0.5} % 二分下げ
+\fbox{\begin{minipage}{10zw}
+ \setlength{\parindent}{1zw}
+ \SampleTextB
+\end{minipage}}%
+\end{center}
+
+%-------------------
+\section{強制改行後の括弧類の空きの補正値の変更}
+\newcommand\SampleTextC{%
+「□□□□?」\\
+「□□□。□□!」\\
+「□□□□□□。□□□□□□□□□□□□□□」\\
+「□□□□□□□!」
+}
+
+\begin{itemize}
+\item ソースでは各台詞の間に強制改行が入れられている。
+\item 左は既定の設定。
+\item 右は %
+\verb|\parheadparenindentamount{-0.5}\lineheadparenindentamount{0.5}|。
+\item 鉤括弧以外の括弧にも効くのでグローバル設定には不適切であるが、
+この設定にする環境を作る等の方法が考えられる。
+\item やっぱり不便なので次節の機能を作った。
+\end{itemize}
+\begin{center}
+\fbox{\begin{minipage}{10zw}
+ \setlength{\parindent}{1zw}
+ \SampleTextC
+\end{minipage}}%
+\hspace{4zw}
+\parheadparenindentamount{-0.5}\lineheadparenindentamount{0.5}
+\fbox{\begin{minipage}{10zw}
+ \setlength{\parindent}{1zw}
+ \SampleTextC
+\end{minipage}}%
+\end{center}
+
+%-------------------
+\section{会話の鉤括弧のための特別な処理}
+\newcommand\SampleTextD{%
+□□□、□□□□□□□□□。\par
+「□□□□?」\\
+「□□□。□□!」\\
+「□□□□□□。□□□□□□□□□□□□□□」\\
+「□□□□□□□!」\par
+(□□□)□□□□、□□□□□□。\par
+}
+
+\begin{itemize}
+\item ソースでは各台詞の間に強制改行が入れられている。
+(その前後は改段落している。)
+\item 左は既定の設定。
+\item 右は \verb|\usedialogueparenindent|。
+\item 鉤括弧だけ \verb|\dialogueparenindentamount| で指定した字下げ量
+(既定は半角)になり、さらに段落下げが無効になる。
+鉤括弧以外の括弧の処理は通常通り。
+\item 鉤括弧を通常の括弧として扱いたい場合は、直前に \verb|\prnind|
+を置けばよい。
+\end{itemize}
+\begin{center}
+\fbox{\begin{minipage}{10zw}
+ \setlength{\parindent}{1zw}
+ \SampleTextD
+\end{minipage}}%
+\hspace{4zw}
+\usedialogueparenindent
+\fbox{\begin{minipage}{10zw}
+ \setlength{\parindent}{1zw}
+ \SampleTextD
+\end{minipage}}%
+\end{center}
+
+\end{document}
diff --git a/language/japanese/BX/bxjscls/LICENSE b/language/japanese/BX/bxjscls/LICENSE
new file mode 100644
index 0000000000..4e794feb3a
--- /dev/null
+++ b/language/japanese/BX/bxjscls/LICENSE
@@ -0,0 +1,28 @@
+The BSD 2-Clause License
+
+Copyright 1995-1999 ASCII Corporation.
+Copyright 1999-2016 Haruhiko Okumura
+Copyright 2016-2019 Japanese TeX Development Community
+Copyright 2013-2019 Takayuki YATO (aka. "ZR")
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/BX/bxjscls/README-ja.md b/language/japanese/BX/bxjscls/README-ja.md
new file mode 100644
index 0000000000..5dce4a844e
--- /dev/null
+++ b/language/japanese/BX/bxjscls/README-ja.md
@@ -0,0 +1,279 @@
+BXjscls パッケージバンドル
+==========================
+
+LaTeX: 全エンジン対応日本語文書クラス集
+
+奥村晴彦氏作製の [pLaTeX2e 新ドキュメントクラス] の和文文書クラス集を
+拡張したもの。元のクラスは (u)pLaTeX 専用であるが、こちらは pdfLaTeX /
+XeLaTeX / LuaLaTeX の上でも日本語処理パッケージと連携して使用すること
+ができる。
+
+[pLaTeX2e 新ドキュメントクラス]:
+(http://oku.edu.mie-u.ac.jp/~okumura/jsclasses/)
+
+### 前提環境
+
+ * TeX エンジン: pdfTeX / XeTeX / LuaTeX / pTeX / upTeX / pTeX-ng
+ - e-TeX 拡張は必須でない
+ - XeTeX は 0.997 版以降が必要
+ * フォーマット: LaTeX
+ * DVI ウェア: 不問
+ * 必須パッケージ:
+ - keyval
+ - calc
+ - geometry
+ * standard 和文ドライバで連携するパッケージ:
+ - (pdf)LaTeX の場合:
+ CJK / bxcjkjatype(v0.2c以降)
+ - XeLaTeX の場合:
+ xeCJK(v3.0以降) / zxjatype(v0.6以降)
+ - LuaLaTeX の場合:
+ LuaTeX-ja
+ * その他、場合により必須となるパッケージ:
+ - type1cm : `magstyle` が `real`/`xreal` である場合
+ - pxchfon(v0.5以降): pLaTeX で `jafont` を指定した場合
+ - zxjafont(v0.2a以降): XeLaTeX で `jafont` を指定した場合
+ * エンジンが (u)pTeX 以外で、かつ和文ドライバが standard 以外の場合、
+ そのエンジンに対応する日本語処理パッケージが必要となる。
+
+### 構成物
+
+ * `bxjscls-manual.pdf`: ユーザ向け説明書
+ * `bxjscls-manual.tex`: 上項のソースファイル
+ * `bxjscls.dtx`: DocStrip ソースファイル
+ * `bxjscls.ins`: DocStrip インストーラファイル
+ * `bxjscls.pdf`: DocStrip 文書(ソースコード説明書)
+
+※アーカイブ中に DocStrip からの生成ファイル(`*.cls`/`*.def`、一覧は
+次節に後掲)が含まれる場合もある。
+
+### インストール
+
+本パッケージバンドルは DocStrip 形式ファイルの形で提供されている。
+
+アーカイブに文書クラスファイル(`*.cls`/`*.def`)が含まれていない場合
+は、以下のコマンドを実行して生成する。
+
+ luatex bxjscls.ins
+
+このコマンドにより次のファイル群が生成される。
+
+ * `bxjsarticle.cls`: BXJS版 article クラスファイル
+ * `bxjsbook.cls`: BXJS版 book クラスファイル
+ * `bxjsreport.cls`: BXJS版 report クラスファイル
+ * `bxjsslide.cls`: BXJS版 slide クラスファイル
+ * `bxjsja-minimal.def`: minimal 和文ドライバファイル
+ * `bxjsja-standard.def`: standard 和文ドライバファイル
+ * `bxjsja-pandoc.def`: pandoc 和文ドライバファイル
+ * `bxjsja-modern.def`: modern 和文ドライバファイル
+ * `bxjscompat.sty`: bxjscompat パッケージファイル
+ * `bxjscjkcat.sty`: bxjscjkcat パッケージファイル
+ * `bxjspandoc.sty`: bxjspandoc パッケージファイル
+
+その後、各ファイルを次の場所に移動する。
+(TDS 1.1 に従ったシステムの場合。)
+
+ - `*.cls`/`*.def`/`*.sty` → $TEXMF/tex/latex/bxjscls/
+ - `*.dtx`/`*.ins` → $TEXMF/source/latex/bxjscls/
+ - `*.pdf`/`*.tex` → $TEXMF/doc/latex/bxjscls/
+
+その後、(必要に応じて)`mktexlsr` を実行する。
+
+#### (参考)説明書文書のコンパイル
+
+アーカイブに含まれる説明書の PDF 文書は以下のコマンドによって生成
+されたものである。
+
+ * `bxjscls-manual.pdf` ← `lualatex bxjscls-manual.tex`
+ * `bxjscls.pdf` ← `lualatex bxjscls.dtx`
+
+### 使用方法
+
+ユーザ向け説明書 `bxjscls-manual.pdf` を参照されたい。
+
+### ライセンス
+
+修正BSDライセンス(The BSD 2-Clause License)の下で配布される。
+
+更新履歴
+--------
+
+ * Version 1.9h 〈2019/07/27〉
+ - jsclasses の 2019/07/25 と同期。
+ - バグ修正。
+ * Version 1.9g 〈2019/06/23〉
+ - バグ修正。
+ * Version 1.9f 〈2019/03/10〉
+ - Pandoc モードを最新の Pandoc に対応させる。
+ * Version 1.9e 〈2019/01/13〉
+ - XeTeX の場合の既定の IPAex フォントをファイル名指定にする。
+ * Version 1.9d 〈2018/10/03〉
+ - 原則的に和暦の処理を bxwareki パッケージに任せる。
+ - バグ修正。
+ * Version 1.9c 〈2018/09/04〉
+ - pandoc 和文ドライバの Babel 対策を改良。
+ - バグ修正。
+ * Version 1.9b 〈2018/08/20〉
+ - バグ修正。
+ * Version 1.9a 〈2018/07/20〉
+ - jsclasses の 2018/06/23 と同期。
+ + `\jsTocLine` を新設。
+ * Version 1.9 〈2018/04/19〉
+ - 一部のオプションの名前を変更:
+ `use-zw`、`disguise-js`、`precise-text`、`simple-ja-setup`
+ * Version 1.8b 〈2018/04/14〉
+ - bxjscjkcat を新しい upTeX に追随させる。
+ - 新元号に関する何か。
+ * Version 1.8a 〈2018/03/29〉
+ - jsclasses の 2018/03/11 と同期。(仕様変更は無し。)
+ - バグ修正。
+ * Version 1.8 〈2018/03/03〉
+ - `textwidth`、`number-of-lines` オプションを新設。
+ - `\setpagelayout+` 命令をを新設。
+ - jlreq 文書クラスとの互換用のオプション(`fontsize` 等)を追加。
+ - (u)pLaTeX 以外のエンジンでは常に `ja` オプションを明示することを
+ 推奨する。
+ - 二文字フォント命令の使用の警告を少し冗長にした。
+ - バグ修正。
+ * Version 1.7c 〈2018/02/04〉
+ - オプション `label-section` を新設。
+ * Version 1.7b 〈2018/01/28〉
+ - 和文パラメタ `units` を新設。
+ - `jafont` オプションの丸括弧記法。
+ - バグ修正。
+ * Version 1.7a 〈2017/12/09〉
+ - 〈試験的〉新元号対応の準備。`\jayear` 命令を追加。
+ - `\@` の定義を修正。`fix-at-cmd` オプションを追加。
+ * Version 1.7 〈2017/10/21〉
+ - 和文空白命令(`\jaenspace` 等)を追加。
+ - `everyparhook` オプションを新設。
+ * Version 1.6b 〈2017/09/28〉
+ - Pandoc モードでは bxcjkjatype に autotilde を付けない。
+ * Version 1.6a 〈2017/09/24〉
+ - `bxjspandoc` パッケージを新設。
+ - Pandoc モードで起こる細かい不具合に対処した。
+ * Version 1.6 〈2017/09/09〉
+ - bxjsreport の継承元を jsbook + report から jsreport に変更した。
+ - jsclasses の 2017/09/03 版と同期。
+ * Version 1.5d 〈2017/07/07〉
+ - バグ修正。
+ * Version 1.5c 〈2017/06/10〉
+ - `\jafontsize` 命令を追加。
+ - 和文パラメタ `jis2004` を新設。
+ - 和文パラメタ `font` を新設。
+ - `jafont=auto` 設定で updmap.cfg を読む際に `kanjiEmbed` に加えて
+ `jaEmbed` も読み取る。
+ - バグ修正。
+ * Version 1.5b 〈2017/04/01〉
+ - 全エンジンについて、`\>` で和欧文間空白を挿入するようにした。
+ - `xkanjiskip-cmd` オプションを新設。
+ - `nodvidriver` ドライバオプションを新設。
+ - バグ修正。
+ * Version 1.5a 〈2017/03/14〉
+ - バグ修正。
+ * Version 1.5 〈2017/03/11〉
+ - jsreport の `layout=v2` 指定で、従来の jsbook + report に代わって、
+ jsclasses で新設された jsreport のレイアウトを継承する。
+ - pLaTeX-ng のためのエンジンオプション `platex-ng` を新設。
+ - `chapterabstract` 環境を新設。
+ - `hyperref-enc`、`whole-zw-lines` オプションを新設。
+ - jsclasses の 2017/03/05 と同期。
+ + `openleft` オプションを新設。
+ + `\frontmatter`、`\backmatter` の仕様の変更。
+ * Version 1.4 〈2017/02/03〉
+ - `\zwapace` 命令を追加。
+ - 数式中の和文出力をサポートした。
+ - バグ修正。
+ * Version 1.3a 〈2017/01/28〉
+ - jsclasses の 2017/01/13 と同期。
+ * Version 1.3 〈2016/11/01〉
+ - bxjsbook について、水平マージンの量が jsbook と大きく異なると
+ いう不具合を修正した。同時に修正前のレイアウトを継続するための
+ オプション `layout` を新設した。
+ - jsclasses の 2016/10/08 と同期。
+ ※ページレイアウトの修正にはまだ追随てきていない。
+ + `(no)jslogo` オプションを新設。`jslogo` 指定時は(jsclasses
+ の)jslogo パッケージを読みこむ。(既定は `nojslogo`。)
+ + bxjsslide の一部の節見出しのレイアウトを修正。
+ + 和文用の微調整。
+ * Version 1.2a 〈2016/08/17〉
+ - fancyhdr パッケージに対する調整を入れた。
+ - `fancyhdr`、`textwidth-limit`、`paragraph-mark` オプションを新設。
+ - `\ascpt` 命令を新設した。
+ * Version 1.2 〈2016/08/01〉
+ - `geometry` オプションを新設した。
+ - `dvi` オプションを新設した。
+ - `\bf` や `\it` などの“二文字フォント命令”の使用に対して警告を
+ (現状では控えめに)出すようにする。この警告を制御するオプション
+ `(no)oldfontcommands` および `\(dis)allowoldfontcommands` 命令
+ を新設した。
+ - 万一“2.09 互換モード”で BXJS クラスが読み込まれた場合は致命的
+ エラーとする。
+ * Version 1.1f 〈2016/07/16〉
+ - jsclasses の開発体制の変更に応じて、原作に関する記述を修正。
+ - magstyle オプションの値の名前を jsclasses に合わせて変更。
+ - 動く引数中で `\@` を用いた場合に aux ファイル中で後続の空白文字
+ が消えてしまう不具合を修正。
+ - graphics/color パッケージ対策で `nosetpagesize` をグローバルに
+ 指定した。
+ * Version 1.1e 〈2016/05/28〉
+ - `\subtitle` の定義を遅延させる。
+ * Version 1.1d 〈2016/05/21〉
+ - XeTeX でも「hyperref で `unicode` を既定で有効」にする。
+ - `bigcode`/`nobigcode` オプションを追加。
+ * Version 1.1c 〈2016/05/01〉
+ - バグ修正。
+ * Version 1.1b 〈2016/03/27〉
+ - 〈試験的〉`precisetext` オプションを追加。
+ * Version 1.1a 〈2016/02/20〉
+ - `\jachar` 命令を追加。
+ - バグ修正。
+ * Version 1.1 〈2016/02/14〉
+ - “Pandoc モード”および pandoc 和文ドライバを追加。
+ - サブタイトル命令 `\subtitle` を追加。
+ - 〈試験的〉modern 和文ドライバを追加。
+ - 〈試験的〉補助パッケージ bxjscompat と bxjscjkcat を追加。
+ * Version 1.0d 〈2015/11/21〉
+ - バグ修正。
+ * Version 1.0c 〈2015/10/18〉
+ - バグ修正。
+ * Version 1.0b 〈2015/09/07〉
+ - 未知のオプションがあるとエラーになるという不具合(これだと
+ “グローバルオプション”が使えない)を修正した。
+ - `ja(driver)` が非指定の場合はエンジンやドライバのオプションが
+ 無い場合のエラー・警告を抑止した。(v0.3 との互換性対策。)
+ - 別行立て数式で不要な警告が出ていたのを修正。
+ * Version 1.0a 〈2015/08/23〉
+ - `base`/`jbase` での Q 単位の指定に対応。
+ - pdflatex 使用時に `\hypersetup` で和文文字を含む文書情報を
+ 指定可能にする。
+ - バグ修正。
+ * Version 1.0 〈2015/08/05〉
+ - bxjsreport と bxjsslide クラスを提供する。
+ - `jafont` オプションを追加。
+ - `nopapersize` オプションを追加。
+ - hyperref 対策を追加。
+ - microtype 対策を追加。
+ - `\ifdraft` の定義を遅延させる。
+ - その他もろもろ。
+ * Version 0.9 〈2013/10/03〉
+ - LuaTeX-ja との連携をサポート。
+ - `magstyle`、`(no)zw`、`(no)js` オプションを追加。
+ - “和文ドライバ”の概念を採用して、ソースコードの構成を
+ 大幅に変更した。
+ * Version 0.4 〈2013/08/03〉
+ - CJK + bxcjkjatype との連携を追加。
+ * Version 0.3a 〈2012/05/01〉
+ - 一部の用紙サイズオプション(`b4paper` 等)で、縦と横の長さを
+ 逆に指定していたのを修正した。
+ * Version 0.3 〈2010/08/15〉
+ - (u)pLaTeX 用連携モジュールを追加。
+ - `jbase` クラスオプションを追加。
+ - `base`, `jbase`, `mag` を calc パッケージの数式で
+ 記述できるようにした。
+ * Version 0.2 〈2009/08/15〉
+ - 最初の公開版。
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/BX/bxjscls/README.md b/language/japanese/BX/bxjscls/README.md
new file mode 100644
index 0000000000..c0071f8824
--- /dev/null
+++ b/language/japanese/BX/bxjscls/README.md
@@ -0,0 +1,146 @@
+BXjscls Package
+===============
+
+LaTeX: Japanese document class collection for all major engines
+
+This package provides an extended version of the Japanese document
+class collection provided by [jsclasses package]. While the original
+version supports only pLaTeX and upLaTeX, the extended version also
+supports pdfLaTeX, XeLaTeX and LuaLaTeX, with the aid of suitable
+packages that provide capability of Japanese typesetting.
+
+[jsclasses package]: (https://www.ctan.org/pkg/jsclasses)
+
+### SYSTEM REQUIREMENTS
+
+ * TeX engine: pdfTeX, XeTeX, LuaTeX, pTeX, upTeX or pTeX-ng.
+ - e-TeX extension is not needed.
+ - XeTeX must be of version 0.997 or later.
+ * TeX format: LaTeX.
+ * DVIware: Anything.
+ * Prerequisite packages:
+ - keyval
+ - calc
+ - geometry
+ * Packages that the standard ja-driver cooperates with:
+ - On (pdf)LaTeX:
+ CJK + bxcjkjatype (v0.2c+)
+ - On XeLaTeX:
+ xeCJK (v3.0+) + zxjatype (v0.6+)
+ - On LuaLaTeX:
+ LuaTeX-ja
+ * Other packages required on occasion:
+ - type1cm: when `magstyle` is `nomag`/`nomag*`
+ - pxchfon (v0.5+): when `jafont` is used on pLaTeX
+ - zxjafont (v0.2a+): when `jafont` is used on XeLaTeX
+ * When you use ja-drivers other than standard, you generally need
+ packages for processing Japanese documents that the employed
+ combination of the ja-driver and the engine supports.
+
+### PACKAGE CONTENT
+
+ * `bxjscls-manual.pdf`: the user manual
+ * `bxjscls-manual.tex`: the source file for the above
+ * `bxjscls.dtx`: the DocStrip source file
+ * `bxjscls.ins`: the DocStrip installer file
+ * `bxjscls.pdf`: the DocStrip document (source code description)
+
+### INSTALLATION
+
+This package bundle is provided in the form of a DocStrip file.
+
+First, run the command to create some files:
+
+ luatex bxjscls.ins
+
+This command will generate the following files:
+
+ * `bxjsarticle.cls`: the BXJS-flavored article class file
+ * `bxjsbook.cls`: the BXJS-flavored book class file
+ * `bxjsreport.cls`: the BXJS-flavored report class file
+ * `bxjsslide.cls`: the BXJS-flavored slide class file
+ * `bxjsja-minimal.def`: the `minimal` ja-driver file
+ * `bxjsja-standard.def`: the `standard` ja-driver file
+ * `bxjsja-pandoc.def`: the `pandoc` ja-driver file
+ * `bxjsja-modern.def`: the `modern` ja-driver file
+ * `bxjscompat.sty`: the `bxjscompat` package file
+ * `bxjscjkcat.sty`: the `bxjscjkcat` package file
+ * `bxjspandoc.sty`: the `bxjspandoc` package file
+
+After that, move the files as follows (in a system compliant to
+TDS 1.1):
+
+ - `*.cls`/`*.def`/`*.sty` → $TEXMF/tex/latex/bxjscls/
+ - `*.dtx`/`*.ins` → $TEXMF/source/latex/bxjscls/
+ - `*.pdf`/`*.tex` → $TEXMF/doc/latex/bxjscls/
+
+And rehash your TEXMF trees if necessary.
+
+### USAGE
+
+Please refer to the user manual `bxjscls-manual.pdf`.
+Unfortunately, the manual is available only in Japanese....
+
+### LICENSE
+
+This package is distributed under the BSD 2-Clause License.
+
+Revision History
+----------------
+
+ * Version 1.9h 〈2019/07/27〉
+ * Version 1.9g 〈2019/06/23〉
+ * Version 1.9f 〈2019/03/10〉
+ * Version 1.9e 〈2019/01/13〉
+ * Version 1.9d 〈2018/10/03〉
+ * Version 1.9c 〈2018/09/04〉
+ * Version 1.9b 〈2018/08/20〉
+ * Version 1.9a 〈2018/07/20〉
+ - Sync with jsclasses 2018/06/23.
+ * Version 1.9 〈2018/04/19〉
+ * Version 1.8b 〈2018/04/14〉
+ * Version 1.8a 〈2018/03/29〉
+ - Sync with jsclasses 2018/03/11.
+ * Version 1.8 〈2018/03/03〉
+ * Version 1.7c 〈2018/02/04〉
+ * Version 1.7b 〈2018/01/28〉
+ * Version 1.7a 〈2017/12/09〉
+ * Version 1.7 〈2017/10/21〉
+ * Version 1.6b 〈2017/09/28〉
+ * Version 1.6a 〈2017/09/24〉
+ * Version 1.6 〈2017/09/09〉
+ - Sync with jsclasses 2017/09/03.
+ * Version 1.5d 〈2017/07/07〉
+ * Version 1.5c 〈2017/06/10〉
+ * Version 1.5b 〈2017/04/01〉
+ * Version 1.5a 〈2017/03/14〉
+ * Version 1.5 〈2017/03/11〉
+ - Sync with jsclasses 2017/03/05.
+ * Version 1.4 〈2017/02/03〉
+ * Version 1.3a 〈2017/01/28〉
+ - Sync with jsclasses 2017/01/13.
+ * Version 1.3 〈2016/11/01〉
+ - Sync with jsclasses 2016/10/08.
+ * Version 1.2a 〈2016/08/17〉
+ * Version 1.2 〈2016/08/01〉
+ * Version 1.1f 〈2016/07/16〉
+ * Version 1.1e 〈2016/05/28〉
+ * Version 1.1d 〈2016/05/21〉
+ * Version 1.1c 〈2016/05/01〉
+ * Version 1.1b 〈2016/03/27〉
+ * Version 1.1a 〈2016/02/20〉
+ * Version 1.1 〈2016/02/14〉
+ * Version 1.0d 〈2015/11/21〉
+ * Version 1.0c 〈2015/10/18〉
+ * Version 1.0b 〈2015/09/07〉
+ * Version 1.0a 〈2015/08/23〉
+ * Version 1.0 〈2015/08/05〉
+ * Version 0.9 〈2013/10/03〉
+ * Version 0.4 〈2013/08/03〉
+ * Version 0.3a 〈2012/05/01〉
+ * Version 0.3 〈2010/08/15〉
+ * Version 0.2 〈2009/08/15〉
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/BX/bxjscls/bxjscls-manual.pdf b/language/japanese/BX/bxjscls/bxjscls-manual.pdf
new file mode 100644
index 0000000000..00b4706eec
--- /dev/null
+++ b/language/japanese/BX/bxjscls/bxjscls-manual.pdf
Binary files differ
diff --git a/language/japanese/BX/bxjscls/bxjscls-manual.tex b/language/japanese/BX/bxjscls/bxjscls-manual.tex
new file mode 100644
index 0000000000..fd0a4a019d
--- /dev/null
+++ b/language/japanese/BX/bxjscls/bxjscls-manual.tex
@@ -0,0 +1,1664 @@
+% 文字コードは UTF-8
+% lualatex で組版する
+\documentclass[a4paper]{ltjsarticle}
+\usepackage{color}
+\definecolor{myblue}{rgb}{0,0,0.75}
+\definecolor{mygreen}{rgb}{0,0.45,0}
+%\usepackage{url}
+\usepackage[unicode,colorlinks,hyperfootnotes=false]{hyperref}
+\hypersetup{linkcolor=myblue,urlcolor=mygreen}
+\usepackage{metalogo}
+\pdfstringdefDisableCommands{%
+ \renewcommand*{\XeLaTeX}{XeLaTeX}}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{1.9h}
+\newcommand{\PkgDate}{2019/07/27}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}\nobr#1\nobr\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{:\ }
+\newcommand{\jemph}{\textsf}
+\newcommand{\wbr}{\linebreak[0]}
+\newcommand{\nobr}{\nolinebreak[4]}
+\newcommand{\xast}{\mbox{}\mbox{$^*$}}
+\providecommand{\pTeX}{p\TeX}
+\providecommand{\pLaTeX}{p\LaTeX}
+\providecommand{\upTeX}{u\pTeX}
+\providecommand{\upLaTeX}{u\pLaTeX}
+\providecommand{\pdfLaTeX}{pdf\LaTeX}
+\providecommand{\BibTeX}{Bib\TeX}
+%-----------------------------------------------------------
+\begin{document}
+\title{\Pkg{BXjscls} パッケージ\\
+ (BXJS文書クラス集)\\
+ ユーザマニュアル}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion\quad[\PkgDate]}
+\maketitle
+\tableofcontents
+
+%===========================================================
+\section*{注意}
+
+BXJS文書クラスについては、サイト“{\TeX} Wiki”中の記事、
+\footnote{\url{https://texwiki.texjp.org/?BXjscls}}%
+およびそこからたどれる情報も併せて参照してほしい。
+
+%===========================================================
+\section{概要}
+\label{sec:Ovewview}
+
+本パッケージに含まれる文書クラス集
+(以下では\jemph{BXJS(文書)クラス}と呼ぶ)
+は、奥村晴彦氏および“日本語{\TeX}開発コミュニティ”により作製された
+\Pkg{jsclasses}パッケージの文書クラス集
+(以下では\jemph{JS(文書)クラス}と呼ぶ)
+の拡張版に相当する。
+JSクラスのレイアウトデザインと機能をほぼ踏襲しているが、
+以下の点で改良が加えられている。
+\begin{itemize}
+\item JSクラスは{\pLaTeX}と{\upLaTeX}のみをサポートするが、
+ BXJSクラスはこれらに加えて{\pdfLaTeX}と{\XeLaTeX}と{\LuaLaTeX}を
+ サポートしており主要エンジンの全てで使用可能である。
+\item (u){\pLaTeX}以外では各々のエンジンの日本語処理パッケージを
+ 利用するが、“標準設定”を用いることで、それらのパッケージの
+ 設定を書かずに済ませられるので、{\pLaTeX}並に簡単に日本語の
+ 文書を書き始めることができる。
+\item JSクラスでは、フォントのオプティカルサイズを最適にするため、
+ 基底フォントサイズが10\,pt以外の時に{\TeX}の版面拡大(mag)機能を
+ 利用しているが、これが他のパッケージと衝突して
+ 不具合を起こすことがある。
+ BXJSクラスではmag機能を使う他に別の方式を選べるようにしている。
+ \Note JSクラスについても新しい(2016/07/11以降の)版では
+ 同様の機能が提供されている。
+\item 用紙サイズや基底フォントサイズについて、任意の値を指定する
+ ことができる。
+\end{itemize}
+
+%===========================================================
+\section{最も基本的な使い方}
+\label{sec:Basic}
+
+ここでは、BXJSクラスを“標準設定”(standard和文ドライバ)で
+用いる場合について解説する。
+この場合、|\documentclass| 命令を次のように書く。
+\footnote{もちろんクラスオプションの順序は任意である。}%
+
+\begin{quote}
+|\documentclass[|\Meta{エンジン}|,|\Meta{ドライバ}%
+|,ja=standard,jafont=|\Meta{フォント指定}|,|\Meta{他オプション}|]|\\
+| {|\Meta{クラス名}|}|
+\end{quote}
+
+\begin{itemize}
+\item \Meta{エンジン}の指定は必須で、実際に使っている
+ 「{\LaTeX}のコマンド名」を書く。
+ |platex|、|uplatex|、
+ |pdflatex|、|xelatex|、|lualatex|等が指定できる。
+\item DVI出力のエンジンを使う場合は、\Meta{ドライバ}の指定が必須で、
+ これは実際に使っている「DVIウェアの名前」を書く。
+ |dvips|、|dvipdfmx|、|dviout|、|xdvi|が指定できる。
+ PDF出力のエンジンの場合は\Meta{ドライバ}の指定は不要である。
+\item “標準設定”を適用するので |ja=standard| を指定する。
+\item 既定以外のフォント設定を利用する場合は、\Meta{フォント指定}に
+ その名前を書く。
+ 既定の設定を用いる場合は |jafont=...| 自体を省略する。
+\item その他のクラスオプション(|a4paper| 等)については、
+ 多くの場合JSクラスと同じものが使える。
+\item BXJSクラスについて、\Meta{クラス名}は以下のものがある。
+ \begin{itemize}
+ \item \Pkg{bxjsarticle}\Means 章のないレポート
+ (\Pkg{jsarticle}に相当する)
+ \item \Pkg{bxjsreport}\Means 章のあるレポート
+ (\Pkg{jsreport}に相当する)
+ \item \Pkg{bxjsbook}\Means 書籍
+ (\Pkg{jsbook}に相当する)
+ \item \Pkg{bxjsslide}\Means スライド
+ (\Pkg{jsarticle}\,+\,|slide|に相当する)
+ \end{itemize}
+\end{itemize}
+
+{\XeLaTeX}で\Pkg{bxjsarticle}クラスを用いた文書の例を示す。
+\footnote{組版結果における日付の出力はJSクラスと同様の
+「2015年7月3日」の形式になる。}%
+
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,xelatex,ja=standard]{bxjsarticle}
+\usepackage[unicode,colorlinks,
+ pdftitle={いきなり日本語}]{hyperref}
+\title{いきなり日本語}
+\author{七篠 権兵衛}
+\begin{document}
+\maketitle
+
+\section{日本語で{\LaTeX}する}
+中身はまだない。
+
+\end{document}
+\end{verbatim}\end{quote}
+
+以下では各エンジンについて、挙動を少し詳しく説明する。
+
+%-------------------
+\subsection{{\pLaTeX}の場合}
+
+例えば次の設定は:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,platex,dvipdfmx,ja=standard]{bxjsarticle}
+\end{verbatim}\end{quote}
+対応するJSクラスを用いた次の設定とほぼ等価になる
+\footnote{すなわち、論理フォントは明朝がjis、
+ゴシックがjisgが使われる。
+なお、BXJSでは |mingoth| 等の論理フォント変更の
+オプションはサポートされていない。}:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,dvipdfmx]{jsarticle}
+\end{verbatim}\end{quote}
+
+次のように |jafont| を指定した場合は:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,platex,dvipdfmx,ja=standard,jafont=ms]{bxjsarticle}
+\end{verbatim}\end{quote}
+|jafont| の値をプリセットオプションとして\Pkg{pxchfon}が読み込まれる:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,dvipdfmx]{jsarticle}
+\usepackage[ms]{pxchfon}
+\end{verbatim}\end{quote}
+
+%-------------------
+\subsection{{\upLaTeX}の場合}
+
+例えば次の設定は:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,uplatex,dvipdfmx,ja=standard]{bxjsarticle}
+\end{verbatim}\end{quote}
+次の設定とほぼ等価になる
+\footnote{論理フォントについては、従来のもの
+ (明朝がupjisr-h、ゴシックがupjisg-h)
+ に代わって、BMP外の文字に対応したもの
+ (明朝がupjpnrm-h、ゴシックがupjpngt-h)
+ を採用した。
+ 組み方は従来のものと変わらない。}:
+\begin{quote}\small\begin{verbatim}
+\documentclass[uplatex,a4paper,dvipdfmx]{jsarticle}
+\end{verbatim}\end{quote}
+
+|jafont| オプションの扱いは{\pLaTeX}の場合と同じである。
+
+%-------------------
+\subsection{{\pdfLaTeX}の場合}
+
+エンジン指定が |pdflatex| の場合、
+日本語処理パッケージとして\Pkg{bxcjkjatype}
+(これ自体は内部で\Pkg{CJK}パッケージを読み込む)
+を利用する。
+
+例えば次の設定は:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,pdflatex,ja=standard]{bxjsarticle}
+\end{verbatim}\end{quote}
+次の設定と大体同じであるが、ただし文書レイアウトは
+\Pkg{article}でなく\Pkg{jsarticle}とほぼ同じになっている:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper]{article}
+\usepackage[whole,autotilde]{bxcjkjatype}
+\end{verbatim}\end{quote}
+
+|jafont| を指定した場合は:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,pdflatex,ja=standard,jafont=ipaex]{bxjsarticle}
+\end{verbatim}\end{quote}
+その値が\Pkg{bxcjkjatype}のフォントプリセットになる。
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper]{article}
+\usepackage[whole,autotilde,ipaex]{bxcjkjatype}
+\end{verbatim}\end{quote}
+
+\Note 補足:
+\begin{itemize}
+\item 自動的に文書本体が |CJK*| 環境
+ \footnote{\Pkg{CJKspace}パッケージが読み込まれた下での |CJK*|
+ 環境である。}%
+ で囲まれかつ |\CJKtilde| が有効な状態になっている。
+ 従っていきなり日本語を書き始めることができる。
+ ただし和欧文間空白(四分空き)は手動で |~| を入れる必要がある。
+ \footnote{\Pkg{CJK}パッケージには自動で和欧文間空白を入れる
+ 機能はない。}%
+ 日本語出力の挙動の詳細については\Pkg{bxcjkjatype}のマニュアルを
+ 参照してほしい。
+ 以下に完全な文書ソースの例を示す:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,pdflatex,ja=standard]{bxjsarticle}
+\begin{document}
+日本語で~pdf{\LaTeX}~するテスト。
+\end{document}
+\end{verbatim}\end{quote}
+\item \Pkg{bxcjkjatype}パッケージにおけるフォントの既定設定は
+ 「Type1形式のIPAexフォント」(\Pkg{ipaex-type1}パッケージ)である。
+ 一方、|ipaex| プリセットを指定した場合は
+ 「TrueType形式のIPAexフォント」が使われるので、両者の出力は
+ 見かけは同じであるが、PDFデータとしては異なる。
+ \footnote{ちなみに、\Pkg{bxcjkjatype}には |ipaex-type1| という
+ オプションもあるが、この設定と既定設定(オプション無し)も
+ 動作は異なる。
+ BXJSクラスが用いるのは既定設定の方である。}%
+\end{itemize}
+
+%-------------------
+\subsection{{\XeLaTeX}の場合}
+
+エンジン指定が |xelatex| の場合、
+日本語処理パッケージとして\Pkg{zxjatype}
+(これ自体は内部で\Pkg{xeCJK}パッケージを読み込む)
+を利用する。
+
+例えば次の設定は:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,twocolumn,xelatex,ja=standard]{bxjsarticle}
+\end{verbatim}\end{quote}
+次の設定と大体同じであるが、ただし文書レイアウトは
+\Pkg{jsarticle}とほぼ同じになっている:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,twocolumn]{article}
+\usepackage{zxjatype}
+\setCJKmainfont[BoldFont=IPAexGothic]{IPAexMincho}% 明朝→IPAex明朝
+\setCJKsansfont[BoldFont=IPAexGothic]{IPAexGothic}% ゴシック→IPAexゴシック
+\end{verbatim}\end{quote}
+
+|jafont| を指定した場合は:
+\begin{quote}\small\begin{verbatim}
+\documentclass[a4paper,xelatex,ja=standard,jafont=ms]{bxjsarticle}
+\end{verbatim}\end{quote}
+その値が\Pkg{zxjafont}のプリセットになる。
+\begin{quote}\small\begin{verbatim}
+\usepackage{zxjatype}
+\usepackage[ms]{zxjafont}
+\end{verbatim}\end{quote}
+
+%-------------------
+\subsection{{\LuaLaTeX}の場合}
+
+エンジン指定が |lualatex| の場合、
+日本語処理パッケージとして\Pkg{\LuaTeX-ja}を利用する。
+
+例えば次の設定は:
+\begin{quote}\small\begin{verbatim}
+\documentclass[b5paper,9pt,lualatex,ja=standard]{bxjsarticle}
+\end{verbatim}\end{quote}
+次の設定とほぼ等価になる
+(ただし\Pkg{luatexja-preset}は実際には読み込まれない):
+\begin{quote}\small\begin{verbatim}
+\documentclass[b5paper,9pt]{ltjsarticle}
+\usepackage{luatexja-fontspec}
+\usepackage[ipaex]{luatexja-preset}
+\end{verbatim}\end{quote}
+
+|jafont| を指定した場合は:
+\begin{quote}\small\begin{verbatim}
+\documentclass[b5paper,lualatex,ja=standard,jafont=ms]{bxjsarticle}
+\end{verbatim}\end{quote}
+次の設定とほぼ等価になる:
+\begin{quote}\small\begin{verbatim}
+\documentclass[b5paper]{ltjsarticle}
+\usepackage{luatexja-fontspec}
+\usepackage[ms]{luatexja-preset}
+\end{verbatim}\end{quote}
+
+\Note 補足:
+\begin{itemize}
+\item \Pkg{luatexja-preset}パッケージの読込が行われるのは |jafont| を
+ 指定した場合に限られる。
+\end{itemize}
+
+%-------------------
+\subsection{注意事項}
+
+主にJSクラスとの違いについての注意。
+
+\begin{itemize}
+\item ページレイアウトについて、JSクラスの設計思想を受け継いで
+ いるが、全く同じになるわけではない。
+\item JSクラスの一部のオプションで、
+ BXJSクラスでは使用不可能なものがある。
+ (\ref{ssec:JS-deleted-option}節参照。)
+\item BXJSクラスではページレイアウトを設定するために
+ 内部で\Pkg{geometry}パッケージを読み込んでいる。
+ そのため、後からユーザが\Pkg{geometry}を読み込むことはできない。
+ ページレイアウトを変更する場合は、BXJSクラスが用意している
+ 再設定用の命令(\ref{ssec:page-layout}節参照)か、または
+ \Pkg{geometry}パッケージが提供する再設定用命令(|\geometry| 等)
+ を利用する。
+\item |papersize|オプションは既定で有効になっていて、
+ 出力用紙サイズはクラスオプションで指定したものに
+ 自動的に設定される。
+ この処理を無効にするには|nopapersize|オプションを指定すればよい。
+\item |papersize|オプションの処理は\Pkg{geometry}パッケージの
+ 機能により行われる。
+ \Pkg{hyperref}パッケージや(最近の)\Pkg{graphics}/
+ \Pkg{color}パッケージがもつ出力用紙サイズ設定の機能は
+ これと干渉する可能性があるので、
+ BXJSクラスにおいては自動的に無効化される。
+\item \Pkg{hyperref}パッケージにおける“PDFの文字コード”の設定は
+ エンジンごとに適切な値が異なっていて複雑であり、
+ これが不適切であるためにPDF文書情報(しおり等)が文字化けして
+ しまう事例が数知れない。
+ そこで、文書クラス側でエンジン毎に適切な設定を予め行う
+ ようにした。
+ \footnote{従って、(u){\pLaTeX}において、ほとんどの場合に
+ \Pkg{pxjahyper}パッケージを読み込む必要がない。
+ ただし読み込んでも構わないし、必要な場合もある。}%
+ (ただし文書クラスが\Pkg{hyperref}を読み込むわけではない。)
+\item pdf{\LaTeX}上で\Pkg{hyperref}で |pdftitle| 等の文書情報に
+ 和文文字を含めたい場合は、|\hypersetup| 命令を通常通り
+ 使うことができる。
+ \footnote{ちなみに、普通に\Pkg{CJKutf8}パッケージを用いた場合は、
+ この方法では失敗してしまう。
+ 恐らく |\hypersetup| 命令全体を |CJK*| 環境で囲う必要が
+ あるのだと思われる。}%
+\begin{quote}\small\begin{verbatim}
+\documentclass[pdflatex,a4paper,ja=standard]{bxjsarticle}
+\usepackage[colorlinks]{hyperref}
+\hypersetup{pdftitle={日本語タイトル}}
+\end{verbatim}\end{quote}
+ \Note \Pkg{hyperref}のパッケージオプションで和文文字を含む文書情報を
+ 指定することはできない。
+ (\Pkg{hyperref}の制限仕様。)
+\item |jafont| が無い場合の既定のフォント設定は多くのエンジンに
+ おいて「IPAexフォント使用」であるが、(u){\pLaTeX}だけは異なっていて
+ 「何も指定しない状態」(JSクラスと同様)である。
+ すなわち実際に使われる物理フォントの選択はDVIウェアの設定に
+ 委ねられている。
+\item 1.2版より、|\bf| や |\it| 等の
+ {\LaTeX}\,2.09方式のフォント選択命令の使用が
+ 非推奨となり、これらの命令を使うと警告が出るようになった。
+ 詳細は\ref{sec:Old-font-commands}節を参照。
+% TODO: \@ptsize の話
+\end{itemize}
+
+%===========================================================
+\section{Pandocモードの使い方}
+\label{sec:Pandoc-mode}
+
+「Pandocモード」は文書形式変換ツールである
+Pandoc\footnote{\url{http://pandoc.org/}}%
+を用いた日本語{\LaTeX}文書生成(および{\LaTeX}経由のPDF生成)
+のために調整された設定である。
+
+\begin{quote}
+|\documentclass[pandoc,|\Meta{ドライバ}%
+|,jafont=|\Meta{フォント指定}|,|\Meta{他オプション}|]|%
+|{|\Meta{クラス名}|}|
+\end{quote}
+
+\begin{itemize}
+\item クラスオプションに |pandoc| を指定し、代わりに
+ 「エンジン」と「和文ドライバ(|ja|)」のオプションを省く。
+ \footnote{|pandoc| が指定された場合は、エンジンオプションの
+ 値は |autodetect-engine|、和文ドライバの値は |pandoc| に
+ 固定される。}
+\item エンジンがDVI出力である場合のドライバの
+ 既定値が |dvipdfmx| になる。
+ ただし明示的にドライバオプションを与えることで |dvips| などに
+ 変更できる。
+\item 「和文フォント(|jafont|)」および他のクラスオプションは
+ 従来通り使用できる。
+\end{itemize}
+
+以下でPandocでBXJSクラスを用いる例を示す。
+
+\Note なお、以下の記述はPandoc 2.x版に従う。
+(1.x版からかなり変更されている。)
+
+\begin{itemize}
+\item \Pkg{bxjsarticle}クラスを使用する一例。
+ \begin{itemize}
+ \item {\XeLaTeX}経由
+ \item 用紙サイズはA4判
+ \item 和文フォント設定は |ipaex|
+ \end{itemize}
+
+ コマンド行は次のようになる。
+ \footnote{もちろん、実際には改行を含めず1行で書く。
+ なお、日本語文書の場合、変換先書式(|-t|)は |latex|
+ でなく |lates-smart|(|smart| 機能を無効化)とすべきである。}
+ \begin{quote}
+ |pandoc| \Meta{入力ファイル名}\
+ |-o| \Meta{出力ファイル名}|.pdf|
+ |-t latex-smart|\\\quad
+ |--pdf-engine=xelatex|
+ |-V papersize=a4|
+ |-V documentclass=bxjsarticle|\\\quad
+ |-V classoption=pandoc|
+ |-V classoption=jafont=ipaex|
+ \end{quote}
+
+ なおこの場合、途中で生成される{\LaTeX}文書のクラス指定は
+ 以下のようになる:
+ \begin{quote}
+ |\documentclass[a4paper,jafont=ipaex,pandoc]{bxjsarticle}|
+ \end{quote}
+
+\item \Pkg{bxjsbook}クラスを用いる場合の一例。
+ \begin{itemize}
+ \item 節番号を出力する
+ \item Lua{\LaTeX}経由
+ \item 用紙サイズはJIS~B5判
+ \item 和文の基底フォントサイズは11\,Q
+ \item 和文フォント設定は |ipaex|
+ \item 欧文フォントをPandocの機能で設定
+ \end{itemize}
+
+ コマンド行は次のようになる:
+ \begin{quote}
+ |pandoc| \Meta{入力ファイル名}\
+ |-o| \Meta{出力ファイル名}|.pdf|
+ |-N|
+ |-t latex-smart|\\\quad
+ |--top-level-division=chapter|
+ |--pdf-engine=xelatex|\\\quad
+ |-V papersize=b5|
+ |-V documentclass=bxjsbook|
+ |-V classoption=pandoc|\\\quad
+ |-V classoption=jbase=11Q|
+ |-V classoption=jafont=ipaex|\\\quad
+ |-V mainfont="TeX Gyre Termes"|
+ |-V sansfont="TeX Gyre Heros"|
+ \end{quote}
+
+ 注意事項:
+ \begin{itemize}
+ \item \Pkg{bxjsbook}クラスは「章(|\chapter|)」をもつクラスなので、
+ Pandocで |--top-level-division=|\linebreak[0]|chapter| の指定
+ が必要。
+ \end{itemize}
+
+\item Pandocで{\LaTeX}経由でPDFを出力する場合、
+ エンジン指定(|--pdf-engine|)は
+ |pdflatex|、|xelatex|、|lualatex|のみがサポートされる。
+ しかし、Pandocの出力を「単体の{\LaTeX}文書」(|-s|指定)とすることで、
+ {\LaTeX}エンジンに(u){\pLaTeX}を使用することができる。
+ 出力された{\LaTeX}文書は通常の方法でPDFやPostScript形式に
+ 変換できる。
+
+ \begin{quote}\small
+\begin{verbatim}
+pandoc mydoc.md -o mydoc.tex -s -V documentclass=bxjsarticle -V classoption=pandoc
+uplatex mydoc
+uplatex mydoc
+dvipdfmx mydoc
+\end{verbatim}
+ \end{quote}
+\end{itemize}
+
+%===========================================================
+\section{クラスオプション}
+\label{sec:Class-Option}
+
+一般的な値の書式についての注意\Means
+\begin{itemize}
+\item 真偽値は、 |true|(真)または |false|(偽)で指定する。
+\item 長さ値および整数値は\Pkg{calc}パッケージの式で指定できる。
+\item \Meta{長さ\xast}のように“\xast”のついた長さパラメタについては、
+ \Pkg{calc}の長さ式の代わりに、和文用単位(|Q|、|H|、|zw|、|zh|)
+ 付きの実数値で指定することもできる。
+ \footnote{この機能は |units| 和文パラメタとは無関係である。
+ 和文用単位を含む長さ式は((u){\pLaTeX}以外では)使えない。
+ なお、ここで使われる |zw| は常に((u){\pLaTeX}でも)
+ “規約上の全角幅”(|\jsZw|)を指す
+ (和文フォント設定が未完了のため)。}
+\end{itemize}
+
+%-------------------
+\subsection{BXJSクラスに特有のオプション}
+\label{ssec:BXJS-specific-option}
+
+JSクラスには無くBXJSクラスで追加されたクラスオプション。
+
+\begin{itemize}
+\item エンジンオプション\Means
+ 実際に使用するエンジン({\LaTeX}コマンド名)を指定する。
+ 有効な値は |latex|、|platex|、|uplatex|、|pdflatex|、|xelatex|、
+ |lualatex|、|platex-ng| である。
+ エンジンオプション(と次項の |autodetect-engine| の何れか)
+ の指定は必須である。
+ \Note |platex-ng| は{\pTeX-ng}エンジン
+ (別名A\pTeX、Asiatic \pTeX)のためのオプションである。
+ 現時点では |platex-ng| 指定時の仕様は流動的であり詳細を述べる
+ ことは避けるが、大体は |uplatex| と同様になる。
+ {\pTeX-ng}はPDF出力を行うので、ドライバオプションは指定しない。
+ \footnote{現状の実装では、自動的に |dvipdfmx| が
+ グローバルオプションに追加される。
+ また、|platex-ng| オプションの変種に |platex-ng*| があり、
+ こちらは |dvipdfmx| の自動追加を行わない。}
+\item |autodetect-engine|\Means
+ 使用しているエンジンを判定して、自動的に適切なエンジンオプションを
+ 設定する。
+ \footnote{実はエンジンの判定は常に行っていて、エンジンオプションが
+ 指定された場合はそれが正しいかを検査して、誤りの場合はエラーを
+ 出すようにしている。}%
+ \Note BXJSクラスの設計の思想としては、
+ 「{\LaTeX}文書がどのエンジンでコンパイルすべきものかは
+ ソース中に明示されるべき」と考えていて、
+ 従って、人間が“普通に”文書を作る際にはこのオプションの
+ 使用は推奨されない。
+ このオプションは 「{\LaTeX}ソースの自動生成」が絡む処理を念頭において
+ 用意されている。
+\item ドライバオプション\Means
+ DVI出力のエンジンを用いる場合に、実際に使用するDVIウェアの名前を
+ 指定する。
+ 有効な値は |dvips|、|dvipdfmx|、|dviout|、|xdvi| である。
+ DVI出力時はドライバオプション(と次項の |nodvidriver| の何れか)
+ の指定は必須である。
+ \footnote{ただし現状では、ドライバオプションが無い場合には
+ エラーではなく警告が出る。}
+\item |nodvidriver|\Means
+ 特殊なドライバオプションの一種で、BXJSクラスが持つ
+ ドライバ依存の機能を全て抑止することを指定する。
+ \footnote{従って、ドライバ依存のパッケージを使用しなければ、
+ 出力されるDVIファイルは特定のDVIウェアに依存しないものになる。}
+\item |dvi=|\Meta{ドライバ名}\Means
+ エンジンがDVI出力の場合に限り、指定のドライバオプションを
+ 有効にする。
+ \footnote{実際にドライバオプションが有効化された場合は、
+ そのオプションがグローバルオプションとしても働く。
+ 例えば、DVI出力のエンジンで |dvi=dvipdfmx| が指定された場合は、
+ |dvipdfmx| がグローバルオプションに追加される。}%
+ |autodetect-engine| と一緒に使うことが想定されている。
+\item |pandoc|\Means
+ 「Pandocモード」(\ref{sec:Pandoc-mode}節)を指定する。
+ 以下の設定が行われる:
+ \begin{itemize}
+ \item エンジンオプションが |autodetect-engine| に固定される。
+ \item 和文ドライバが |pandoc| に固定される。
+ \item ドライバオプションについて |dvi=dvipdfmx| が既定になる
+ (明示指定で上書可能)。
+ \end{itemize}
+\item |nopapersize|\Means
+ 出力用紙サイズ設定
+ (DVI出力の場合は所謂“papersize special出力”)
+ を抑止する。
+ (JSクラスとは異なり、出力用紙サイズ設定のオプション |papersize|
+ は既定で有効である。)
+ \Note 出力用紙サイズ設定を行う他のパッケージとの干渉に
+ 対する対策。
+\item |ja=|\Meta{名前}\Means
+ 使用する和文ドライバの名前を指定する。
+ (詳細は\ref{sec:Ja-Driver}節を参照。)
+ 標準で提供されている和文ドライバには |minimal|、
+ |standard|、|pandoc| がある。
+ エンジンが |platex| か |uplatex| の時は |ja| の
+ 既定値は |standard| である。
+ それ以外の場合は、一応 |minimal| とするが、
+ 明示的な指定が推奨される。
+\item |jafont=|\Meta{名前}\Means
+ 「和文フォントプリセット指定」の名前を設定する。
+ \Note \ref{sec:Basic}節で解説した通り、standard和文ドライバでは |jafont|
+ の値が利用される。
+ \par
+ プリセット指定の値が丸括弧を含む(例えば“|sourcehan(-otc)|”)場合、
+ 以下のように解釈される。
+ \begin{itemize}
+ \item エンジンが{\XeLaTeX}/{\LuaLaTeX}の場合は、
+ 丸括弧囲いの部分を削除した文字列(“sourcehan”)が使われる。
+ \item それ以外の場合は、
+ 丸括弧だけ削除した文字列(“sourcehan-otc”)が使われる。
+ \end{itemize}
+\item |japaram={|\Meta{キー}|=|\Meta{値}|,...}|\Means
+ 「和文ドライバパラメタ」の値を設定する。
+ 詳しくは\ref{sec:Ja-Driver-Param}節を参照。
+ \Note |jafont| と |japaram| の値がどのように解釈されるかは
+ 和文ドライバの仕様次第である。
+\item |base=|\Meta{長さ\xast}\Means
+ 基底フォントサイズ(|\normalsize| のサイズ)を指定する。
+ JSクラスの |10pt|、|11pt| 等と同じ役割で、任意の長さ値を指定できる。
+ 基底フォントサイズの既定値は10\,ptである。
+ \Note |##pt| の形のオプションには名前と実際に設定される値が
+ ずれているものが多く、例えば |11pt| は10.95\,pt、
+ |14pt| は 14.4\,pt が実際の設定値である。
+ \footnote{これは昔の{\LaTeX}の“magstep”の習慣に由来する。}%
+ これに対して |base=14pt| は文字通り14\,ptを設定する。
+\item |jbase=|\Meta{長さ\xast}\Means
+ 和文を基準にして基底フォントサイズを指定する。
+ すなわち和文フォントの |\normalsize| のサイズを指定の長さとする。
+ \footnote{この場合に決定されるmag値は和文スケール値にも依存する
+ ことに注意。}
+ \Note 1.8版から、|base| と |jbase| の両方の指定が可能になった。
+ この場合、和文スケール値がそれらに基づいて決定される
+ (|scale| 指定は無効になる)。
+\item |scale=|\Meta{実数}\Means
+ 和文スケール値を設定する。
+ 既定値は 0.924715(= 13\,Q/10\,pt)である。
+ \footnote{これはJSクラスの設計に基づく値である。
+ ただし実装の都合で、JSクラスの実際のスケール値はこれから
+ 僅かだけずれている。}
+\item |paper={|\Meta{横幅}|}{|\Meta{縦幅}|}|\Means
+ 用紙サイズ設定。
+ |a4paper| 等と同じ役割で、任意の長さ値を指定できる。
+ 用紙サイズの既定値はA4縦
+ ($\mbox{210\,mm}\times\mbox{294\,mm}$)である。
+\item |enablejfam=|\Meta{値}\Means
+ 数式中の和文出力をサポートするか否か。
+ 値は |true|(有効)/|false|(無効)/|default|(既定値に従う)
+ の何れかである。
+ エンジンや和文ドライバの種類により、
+ 既定値が有効・無効の何れになるかは異なり、また、
+ そもそも有効・無効の一方しか選択できない場合もある。
+ 詳細については\ref{sec:Ja-math-fonts}節を参照されたい。
+\item |textwidth=|\Meta{長さ}\Means
+ 行長(本文領域の横幅;|\textwidth|)を指定する。
+ \Note 実際には全角の整数倍に丸めた値が使われる
+ (\ref{ssec:page-layout}節参照)。
+ \begin{itemize}
+ \item \Pkg{bxjsbook}以外では、\Pkg{geometry}で |textwidth| を
+ 指定したのと同値。
+ この場合、既定では |textwidth| を指定しない。
+ \item \Pkg{bxjsbook}では、\Pkg{geometry}の |textwidth| は
+ 実際には |\fullwidth|(ヘッダ部分の横幅)の指定とみなされる。
+ 従って、|\textwidth| はこのオプションで指定する必要がある。
+ この場合の既定値は40\,zwである。
+ \Note |\textwidth| が |\fullwidth| を超えることはできない。
+ \end{itemize}
+\item |number-of-lines=|\Meta{整数}\Means
+ 1ページあたりの行数を指定する。
+ \Pkg{geometry}で |lines| を指定したのと同値。
+ 既定では |lines| を指定しない。
+\end{itemize}
+
+\paragraph{上級者向けのオプション}\mbox{}
+
+\begin{itemize}
+\item |use-zw=|\Meta{真偽値}\Means
+ |\jsZw| と等価な命令として |\zw| を定義するか。
+ 既定値は真。
+ \Note つまり |\zw| の命令名が衝突する場合に、
+ |use-zw=false| を指定する。
+\item |disguise-js=|\Meta{真偽値}\Means
+ JSクラス(例えば\Pkg{bxjsreport}の場合は\Pkg{jsbook})
+ が読込済であるように振舞うか否か。
+ 既定値は真。
+ \Note つまり「JSクラスの一種である」と判定されると不都合な場合に、
+ |disguise-js=false| を指定する。
+\item |bigcode|\Means
+ {\upTeX}エンジンとdvipdfmxの組合せで\Pkg{hyperref}パッケージを
+ 利用する時に適用されるToUnicode CMapとして |UTF8-UTF16| を指定する。
+ PDFの文書情報の文字列にBMP外の文字が含まれる場合には
+ この指定が必要である。
+ |UTF8-UTF16| のファイルがインストールされていないと、
+ dvipdfmxの処理が失敗する。
+\item |nobigcode|\Means
+ |bigcode| の否定。ToUnicode CMapとして |UTF8-UCS2| を指定する。
+ この場合は文書情報の文字列にBMP外の文字を使用できない。
+ \Note |UTF8-UTF16| のファイルが利用できるかを確実に判定するのは
+ 困難なため、|bigcode| の既定値は次のようなアドホックな方法で
+ 決めている:
+ {\TeX}エンジンのバージョンが3.14159265以上
+ \footnote{{\TeX}のバージョン3.14159265は2014年1月にリリースされた。}
+ である場合は、
+ ({\TeX}環境がある程度新しく、|UTF8-UTF16| が利用可能と思われるので)
+ |bigcode| を既定とし、それ以外は |nobigcode| を既定とする。
+\item |precise-text=|\Meta{真偽値}\Means
+ {\XeTeX}エンジンにおいて、「ActualText生成機能」を有効化する
+ \footnote{つまり、|\XeTeXgenerateactualtext=1| を行う。
+ ActualText 生成機能と日本語処理は相性が悪いため、これを使うと
+ 出力PDFのサイズが増大する(1.5~2倍)ことに注意。}%
+ か否か。
+ 既定値は偽。
+\item |simple-ja-setup=|\Meta{真偽値}\Means
+ {\XeTeX}エンジン自体の行組版機能(|\XeTeXlinebreaklocale| 等)
+ を利用した、簡易的な日本語用組版設定を行うか否か。
+ 既定値は真(だが多くの場合に無効化される)。
+ \Note {\XeTeX}エンジン以外では無効である。
+ また、\Pkg{xeCJK}や\Pkg{zhspacing}等の日本語(CJK)組版用
+ パッケージが読み込まれた場合も無効化される。
+ 特に、和文ドライバがstandardである場合は、必ず\Pkg{xeCJK}が
+ 読み込まれるため、このオプションは無意味である。
+\item |a4varpaper|、|b5varpaper|\Means
+ 用紙サイズ指定オプション |a4var|、|b5var| の別名。
+ \Note Pandocで |-V papersize=a4var| の指定を可能にするため。
+\item |mag=|\Meta{整数}\Means
+ 版面拡大率(mag値)の直接設定。
+ 既定は |base| から算出する。
+ \Note mag値が$n$の場合、版面が $n/1000$ 倍に拡大される。
+\item |magstyle=|\Meta{値}\Means
+ “版面拡大”の実現方法を指定する。
+ 有効な値は |usemag|、|nomag|、|nomag*| の何れか。
+ 詳細は\ref{ssec:magstyle}節を参照。
+\item |geometry=|\Meta{値}\Means
+ \Pkg{geometry}パッケージの読込に対する制御。
+ \begin{itemize}
+ \item |class|(既定)\Means
+ 通常通り、文書クラスが\Pkg{geometry}パッケージを読み込む。
+ ユーザは\Pkg{geometry}を後から読み込むことはできない。
+ \item |user|\Means
+ 文書クラスによる\Pkg{geometry}パッケージの読込をスキップする。
+ この場合、ユーザが自分で\Pkg{geometry}を読み込むことが想定される。
+ \footnote{\Pkg{geometry}の読込は必須ではなく、ページレイアウトの
+ パラメタを自分で設定しても構わない。
+ ただし\Pkg{geometry}の読込が強く推奨される。
+ (\Pkg{geometry}非読込時の動作テストはほとんど行っていない。)}
+ \end{itemize}
+ \Note 「どうしても\Pkg{geometry}パッケージを自分で読み込みたい」
+ という人のための設定。
+\item |oldfontcommands|\Means
+ |\bf| 等の“二文字フォント命令”の使用を許容する。
+\item |nooldfontcommands|(既定)\Means
+ “二文字フォント命令”の使用に対して警告を出す。
+ 詳細については\ref{sec:Old-font-commands}節を参照されたい。
+\item |fancyhdr=|\Meta{真偽値}\Means
+ \Pkg{fancyhdr}パッケージの機能に対する補正を行うか。
+ 真の場合、以下の補正が行われる。既定値は真。
+ \begin{itemize}
+ \item ヘッダ・フッタ書式の既定値に含まれる“二文字フォント命令”
+ を除去する。
+ \item \Pkg{bxjsbook}クラスでヘッダ・フッタの横幅を(|\textwidth|
+ ではなく)|\fullwidth| に一致させる。
+ \end{itemize}
+\item |paragraph-mark=|\Meta{文字1つ}\Means
+ パラグラフ(|\paragraph|)の見出し先頭に付く記号。
+ 既定値は“■”。
+ \Note “|paragraph-mark=|”のように値を空にするのも可能。
+\item |whole-zw-lines=|\Meta{真偽値}\Means
+ ページレイアウト策定において「行長を全角幅の整数倍に丸める処理」
+ を行うか否か。
+ 既定値は真。
+\item |hyperref-enc=|\Meta{真偽値}\Means
+ \Pkg{hyperref}パッケージについて
+ 「PDF文字列の文字コード設定を補正する処理」
+ を行うか否か。
+ 既定値は真。
+\item |jaspace-cmd=|\Meta{真偽値}\Means
+ 以下に挙げる和文空白命令を定義するか否か。
+ (詳しくは\ref{ssec:ja-settings}節を参照。)
+ \begin{quote}
+ |\jaenspace|、|\jathinspace|、|\>|、
+ |\_|(|\|\,+\,全角空白)
+ \end{quote}
+ 既定値は真。
+\item |fix-at-cmd=|\Meta{真偽値}\Means
+ |\@| 命令に対してJSクラスと同様の拡張を施すか否か。
+ 既定値は真。
+\item |label-section=|\Meta{値}\Means
+ 節番号の書式出力、特に
+ 「|\pre|/|postsectionname|」
+ 「\Pkg{bxjsarticle}での付録部における |\appendixname|」
+ の語句の付加の方法を選択する。
+ \begin{itemize}
+ \item |compat|(既定)\Means
+ JSクラスと同じ実装を用いる。
+ この場合、節のカウンタの書式(|\thesection|)そのものに語句が
+ 付加されるため、|\thesection| を参照する他のカウンタ書式が
+ 奇妙になる可能性がある。
+ \item |modern|\Means
+ 節のカウンタの書式(|\thesection|)には語句の付加を行わず、
+ 実際にそれが節番号として出力される際に語句を付加する。
+ \item |none|\Means
+ 節番号に対する語句の付加を抑止する。
+ 欧文・和文の標準文書クラスと同等になる。
+ \end{itemize}
+\item |layout=|\Meta{値}\Means
+ レイアウトの変種を選択する。
+ 現状では、過去の版との互換性を維持するために用いられている。
+ 有効な値は以下の通り。
+ \begin{itemize}
+ \item \Pkg{bxjsbook}クラスの場合:
+ \begin{itemize}
+ \item |v2|(既定)\Means
+ 現版の既定のレイアウト。
+ \item |v1|\Means
+ 1.2a版以前の(本来は不適切な)水平マージンの設定を適用する。
+ (詳細は\ref{ssec:page-layout}節を参照。)
+ \end{itemize}
+ \item \Pkg{bxjsreport}クラスの場合:
+ \begin{itemize}
+ \item |v2|(既定
+ \footnote{1.6版より既定値が |v2| に変更された。})\Means
+ JSクラスに新設された\Pkg{jsreport}クラスのレイアウトを継承する。
+ \item |v1|\Means
+ 従来の「\Pkg{jsbook}クラス\,+\,|report|オプション」の
+ レイアウトを継承する。
+ \end{itemize}
+ \item それ以外のクラスでは、本オプションは無効である。
+ \end{itemize}
+\end{itemize}
+
+\paragraph{jlreq文書クラスとの互換用のオプション}\mbox{}
+
+\begin{itemize}
+\item |paper={|\Meta{横幅}|,|\Meta{縦幅}|}|\Means
+ |paper={|\Meta{横幅}|}{|\Meta{縦幅}|}| と同値(用紙サイズ設定)。
+\item |fontsize=|\Meta{長さ}\Means
+ |base=|\Meta{長さ} と同値(基底フォントサイズ)。
+\item |jafontsize=|\Meta{長さ}\Means
+ |jbase=|\Meta{長さ} と同値(和文基底フォントサイズ)。
+\item |line_length=|\Meta{長さ}\Means
+ |textwidth=|\Meta{長さ} と同値(行長指定)。
+\item |number_of_lines=|\Meta{整数}\Means
+ |number-of-lines=|\Meta{整数} と同値(行数指定)。
+\end{itemize}
+
+\paragraph{旧版との互換用のオプション}\mbox{}
+
+\begin{itemize}
+\item |zw|\Means
+ |use-zw=true| と同値。
+\item |nozw|\Means
+ |use-zw=false| と同値。
+\item |js|\Means
+ |disguise-js=true| と同値。
+\item |nojs|\Means
+ |disguise-js=false| と同値。
+\item |precisetext|\Means
+ |precise-text=true| と同値。
+\item |noprecisetext|\Means
+ |precise-text=false| と同値。
+\item |simplejasetup|\Means
+ |simple-ja-setup=true| と同値。
+\item |nosimplejasetup|\Means
+ |simple-ja-setup=false| と同値。
+ \Note 以上の8個は1.9版より前で使われた。
+\item |textwidth-limit=|\Meta{整数}\Means
+ |textwidth-limit=|\Meta{整数}|zw| と同値。
+ \Note 1.8版より前で使われた。
+\item |dvipdfmx-if-dvi|\Means
+ |dvi=dvipdfmx| と同値。
+ \Note 1.2版より前で使われた。
+\item |magstyle=mag|/|real|/|xreal|\Means
+ それぞれ |magstyle=usemag|/|nomag|/|nomag*| と同値。
+ \Note 1.1f版より前で使われた。
+\item |jadriver=|\Meta{名前}\Means
+ |ja=|\Meta{名前} と同値(和文ドライバ指定)。
+ \Note 1.0版より前で使われた。
+\item |noscale|\Means
+ |scale=1| と同値。
+ \Note 0.9版より前で使われた。
+\end{itemize}
+
+%-------------------
+\subsection{JSクラスのオプションで使用可能なもの}
+\label{ssec:JS-inherited-option}
+
+これらについては名前だけ列挙するに留める。
+ただし、“JSクラス特有”(標準クラスに無い)オプションの一部に
+ついては解説を加える。
+
+\paragraph{用紙サイズ指定}
+|a3paper|、|a4paper|、|a5paper|、|a6paper|、
+|b4paper|、|b5paper|、|b6paper|、
+|a4j|、|a5j|、|b4j|、|b5j|、|a4var|、|b5var|、
+|letterpaper|、|legalpaper|、|executivepaper|。
+\Note |a4var| はA4変判($\mbox{210\,mm}\times\mbox{283\,mm}$)、
+|b5var| はB5変判($\mbox{182\,mm}\times\mbox{230\,mm}$)。
+\Note JS/BXJSクラスでは |a4j| は |a4paper| と全く等価である。
+(他の |b4j| 等も同様。)
+
+\paragraph{横置き}
+|landscape|。
+
+\paragraph{基底フォントサイズ}
+|8pt|、|9pt|、|10pt|、|11pt|、|12pt|、|14pt|、|17pt|、|20pt|、
+|21pt|、|25pt|、|30pt|、|36pt|、|43pt|、
+|12Q|、|14Q|、
+|10ptj|、|10.5ptj|、|11ptj|、|12ptj|。
+\Note |10pt|、|11pt|、|12pt|、|14pt|、|17pt|、|21pt|、|25pt|、
+|30pt|、|36pt|、|43pt| はそれぞれmagstepの
+0、0.5、1、2、3、4、5、6、7、8である。
+|8pt|、|9pt|、|20pt| は文字通りの値。
+|##Q|/|##ptj| は |jbase=##Q|/|jbase=##pt| を表す
+(つまり和文規準)。
+\footnote{ちなみにJSクラスの(固定の)和文スケール値に従うと |10pt|
+ が |jbase=13Q| に相当するので |13Q| というオプションは無い。}%
+
+\paragraph{両面用レイアウト}
+|oneside|、|twoside|、|vartwoside|。
+\Note |vartwoside| は |twoside| と同様だが
+傍注が常に右側余白に出力される。
+
+\paragraph{段組み}
+|onecolumn|、|twocolumn|。
+
+\paragraph{表題ページ}
+|titlepage|、|notitlepage|。
+
+\paragraph{起こし}
+|openright|、|openleft|、|openany|。
+\Note \Pkg{jsreport}と\Pkg{jsbook}にのみ存在するオプション。
+\Note |openleft| は部・章の開始を見開き左側のページ
+(偶数ページ)に強制する(左起こし)。
+
+\paragraph{数式配置}
+|leqno|、|fleqn|。
+
+\paragraph{オーバーフル警告}
+|final|、|draft|。
+
+\paragraph{papersize special出力}
+|papersize|。
+\Note BXJSクラスでは |papersize| は既定で有効。
+
+\paragraph{英語化}
+|english|。
+
+\paragraph{エンジン種別}
+|uplatex|、|autodetect-engine|。
+\Note 既に\ref{ssec:BXJS-specific-option}節で述べた通り。
+
+\paragraph{magstyle指定}
+|usemag|、|nomag|、|nomag*|。
+\Note BXJSクラスでは、これらは“|magstyle=|”を前置したものと
+同等に扱われる。
+詳細は\ref{ssec:magstyle}節を参照。
+
+\paragraph{和文数式ファミリ不使用}
+|disablejfam|。
+\Note BXJSクラスでは |enablejfam=false| と同値。
+詳細は\ref{sec:Ja-math-fonts}節を参照。
+
+\paragraph{ロゴ命令パッケージの読込}
+|jslogo|、|nojslogo|。
+\Note BXJSクラスでは |nojslogo| が既定値である。
+
+%-------------------
+\subsection{JSクラスのオプションで使用不可能なもの}
+\label{ssec:JS-deleted-option}
+
+\begin{itemize}
+\item クラス変種指定\Means
+ |report|、|slide|。
+ \Note |report| 相当は\Pkg{bxjsreport}、|slide| 相当は\Pkg{bxjsslide}と
+ 別クラスになっている。
+\item トンボ出力\Means
+ |tombow|、|tombo|、|mentuke|
+ \Note これは{\pLaTeX}のカーネル命令を利用しているので
+ とりあえず除外。
+\item 和文フォントメトリック指定\Means
+ |jis|、|mingoth|。
+ \Note 異なるエンジンで汎用的に扱うのが難しい。
+\end{itemize}
+
+%-------------------
+\subsection{クラスオプション設定の既定値}
+
+\begin{itemize}
+\item BXJSクラス共通\Means
+ |a4paper|、|onecolumn|、|final|、
+ |ja=minimal|、|jafont|は空、|japaram|は空、
+ |scale=0.924715|、|magstyle=usemag|%
+ \footnote{Lua{\TeX}の0.87版以降では |magstyle=nomag*| が既定となる。
+ \ref{ssec:magstyle}節参照。}
+\item \Pkg{bxjsarticle}\Means
+ |10pt|、|oneside|、|notitlepage|
+\item \Pkg{bxjsreport}\Means
+ |10pt|、|oneside|、|titlepage|、|openany|
+\item \Pkg{bxjsbook}\Means
+ |10pt|、|twoside|、|titlepage|、|openright|
+\item \Pkg{bxjsslide}\Means
+ |36pt|、|oneside|、|notitlepage|
+\end{itemize}
+
+%-------------------
+\subsection{magstyleオプション}
+\label{ssec:magstyle}
+
+JSクラスにおけるページレイアウト決定の過程では、
+基底フォントサイズが10\,pt以外の場合に、
+「版面を拡大縮小する」という処理を採用している。
+\footnote{例えば、基底フォントサイズが20\,ptだとすると、
+まずは指定されたものの半分の縦横幅をもつ用紙に対して
+基底フォントサイズが10\,ptとしてレイアウトを決定し、
+それを縦横2倍に拡大する、という過程をとっている。}%
+これには、「フォントのオプティカルサイズの選択を最適にするため
+\footnote{{\LaTeX}の既定の欧文フォントであるComputer Modernフォントが
+オプティカルサイズの性質をもつことは有名であるが、
+少々癖が強くて、本文を10\,pt(cmr10)で組んだ場合と
+12\,pt(cmr12)で組んだ場合でかなり異なった印象を受ける場合がある。
+JSクラスではそれを嫌って、本文(|\normalsize| のフォント)が
+必ず「cmr10を拡大縮小したもの」で組まれることを
+企図しているのである。}%
+」という理由があり、またこれにより、多種の基底フォントサイズへの
+対応が容易になるという利点もある。
+\footnote{BXJSで「任意の」基底フォントサイズが設定できるのも
+この利点があるため。}%
+ところがここで、JSクラスではこの“版面拡大”を実現するために
+{\TeX}エンジンが持つ版面拡大機能(仮に「mag設定」と呼称する)
+を用いていて、これについて批判されることが多い。
+また、現実問題として、mag設定が{\LaTeX}で用いられる機会は少ないため、
+実際に用いられた時にそれを想定していないパッケージが誤動作すると
+いう問題もある。
+
+これらの問題を緩和するため、BXJSクラスでは“版面拡大”について
+他の実現方法を提供している。
+それを選択するのが以下に挙げる「magstyleオプション」である。
+\footnote{「magstyleオプション」の値は、|magstyle|をキー名にした
+keyval形式(例えば|magstyle=nomag*|)で書くこともできる。
+1.1e版以前では、keyval形式のみがサポートされ、しかも値の識別子として
+|usemag|/|nomag|/|nomag*|の代わりに|mag|/|real|/|xreal|を用いて
+(つまり|magstyle=xreal|と書いて)いた。}
+
+\begin{itemize}
+\item |usemag|\Means
+ JSクラスと同様に、“版面拡大”のためにmag設定を用いる。
+\item |nomag|\Means
+ mag設定を一切用いず、代わりに、
+ 全てのページレイアウトのパラメタの値をスケールさせる。
+ |\normalsize| や |\large| 等の高位フォントサイズ命令で指定される
+ フォントサイズもスケールさせるが、
+ “オプティカルサイズの調整”は行わない。
+ いわゆる「基本35書体」のようなオプティカルサイズでない
+ \footnote{或いは、オプティカルサイズに“変な癖”のない。}%
+ フォントのみを用いるのであれば、この設定が最も適切である。
+\item |nomag*|\Means
+ |nomag| と同様に、
+ 全てのページレイアウトのパラメタの値をスケールさせる。
+ さらに、“オプティカルサイズの調整”を実現するために、
+ NFSSの実装コードにパッチを当てる。
+ \footnote{要するに、|OT1/cmr/m/n/12| が要求された時に、
+ |cmr12| でなくて |cmr10 at 12pt| が選ばれるようにする。}%
+ この場合、mag設定による不具合は起こらなくなるが、
+ 当然、NFSSのパッチのせいで別の不具合が起こる可能性はある。
+\end{itemize}
+
+\Note Lua{\TeX}の0.87版以降では(PDF出力時の)「mag設定」の機能が
+廃止されている。
+そのため、そのようなエンジンでは |usemag| はサポートされない
+(エラーになる)。
+
+\Note |magstyle| オプションの既定値は |usemag| である。
+ただし例外として、|usemag| がサポートされない
+エンジンでは |nomag*| が既定値となる。
+
+%===========================================================
+\section{和文ドライバ}
+\label{sec:Ja-Driver}
+
+BXJSクラスでは様々なエンジンについて、そのエンジンおよび
+それに対応するパッケージが提供する日本語処理機能を活用することで、
+日本語用の文書クラスとしての機能を実現している。
+そこでの汎用性を確保するため、
+“日本語処理機能と連携する部分”の実装をモジュールとして分離していて、
+これを\jemph{和文ドライバ}と呼ぶ。
+\footnote{\Pkg{graphicx}パッケージ等の「ドライバ」と類似した概念
+のためこの名称を用いた。}%
+\Pkg{BXjscls}のバンドルでは以下に挙げる和文ドライバを提供している。
+
+\begin{itemize}
+\item standard和文ドライバ\Means
+各エンジンについて、最も一般的に用いられる特定の
+“日本語処理機能”(例えば |lualatex| なら\Pkg{\LuaTeX-ja})
+を連携対象とした和文ドライバ。
+(u){\pLaTeX}上のJSクラスと同じくらい容易に日本語が
+書き始められることを目指している。
+\item minimal和文ドライバ\Means
+“何も実装されていない”和文ドライバ。
+上級ユーザがプレアンブルや自作パッケージ等に
+アドホックな連携コードを書いて、
+好きな“日本語処理機能”との連携を実現するために
+用いることを想定している。
+\item pandoc和文ドライバ\Means
+「Pandocモード」で仕様される和文ドライバ。
+standardドライバの機能を継承するが、
+「Pandocの既定のlatexテンプレート」が使われることを前提として、
+それとBXJSの設定を整合させるための措置を加えている。
+\Note 本マニュアルで「standard和文ドライバの場合」という場合、
+特に明示がない限りはpandoc和文ドライバも含まれる。
+\end{itemize}
+
+和文ドライバは自分で作製することも可能である。
+\footnote{和文ドライバの実装に必要な連携仕様の
+ 情報については、ソースコード説明書(bxjscls.pdf)
+ の付録Aを参照してほしい。}%
+|bxjsja-XXX.def|(|XXX| は任意の文字列
+\footnote{{\LaTeX}の非特殊文字
+({\TeX}言語でいうとカテゴリコードが11または12の文字)
+からなる必要がある。}%
+)の名前のファイルに実装コードを書いてそのファイルを配置すると、
+|ja=XXX| のオプション指定でその和文ドライバを利用できる。
+
+なお、和文ドライバ指定オプション(|ja|)の既定値は |minimal|
+である。
+現実には、ほとんど全ての場合に |standard| が用いられると思われるが、
+種々の理由があって、これを既定値にはしていない。
+
+\Note ただし、(u){\pLaTeX}については、日本語処理機能がエンジン自体に
+備わっていて不可分なため少し異なる扱いになっている。
+\footnote{JSクラスの実装から分離した「日本語処理関連」のコードを
+minimalに配置している。}%
+|minimal| を用いる意義がほとんどないため、
+|standard| が既定値になっている。
+
+\Note 1.8版より、(u){\pLaTeX}以外のエンジンについては、
+和文ドライバを明示指定することを推奨する。
+
+
+%===========================================================
+\section{和文ドライバパラメタ}
+\label{sec:Ja-Driver-Param}
+
+和文ドライバパラメタ(|japaram| オプション)は
+和文ドライバに依存する設定を指定するために用意されている。
+|japaram| オプションの値はそれ自身がキー値ペアのリストであり、
+一般的に次のような形式で指定される。
+\begin{quote}\small\begin{verbatim}
+\usepackage[...,japaram={key=value,...},...]{bxjsarticle}
+\end{verbatim}\end{quote}
+
+minimal和文ドライバには有効な和文ドライバパラメタは存在しない。
+
+%-------------------
+\subsection{standard和文ドライバの場合}
+
+以下の和文ドライバパラメタが存在する。
+
+\begin{itemize}
+\item |jis2004=|\Meta{真偽値}\Means
+ 漢字の字形について「2004JIS字形を優先させる」処理を行うか。
+ 真の場合、以下の処理が行われる。既定値は偽。
+ \begin{itemize}
+ \item グローバルオプションに |jis2004| を追加する。%
+ \footnote{\Pkg{japanese-otf}や\Pkg{luatexja-preset}などの
+ パッケージが |jis2004| オプションを利用する。}
+ \item エンジンが{(u)\pLaTeX}の場合、|pxchfon| と |pxbabel|
+ パッケージに予め |prefer2004jis| オプションが渡される。
+ \end{itemize}
+\item |units=|\Meta{真偽値}\Means
+ これを真にすると、
+ {\LaTeX}における長さ指定において、{\pTeX}の和文用の単位
+ (|zw|、|zh|、|(true)Q|、|(true)H|)
+ を全てのエンジンで使用できるようにする。
+ 既定値は偽。
+ \Note \Pkg{bxcalc}パッケージを読み込む。
+ \Note 厳密にいうと、「\Pkg{calc}の長さ数式が使える箇所」
+ において和文用の単位が使用できるようになる。
+\item |font={|\Meta{文字列}|}|\Means
+ standard和文ドライバが利用する和文フォントパッケージについて
+ 追加のオプションを指定する。
+\end{itemize}
+
+
+%===========================================================
+\section{ユーザ用命令}
+\label{sec:Commands}
+
+原則として、BXJSクラスで追加されたものだけを説明する。
+
+%-------------------
+\subsection{レイアウト設定関連}
+\label{ssec:page-layout}
+
+BXJSクラスではページレイアウトの設定に\Pkg{geometry}パッケージを
+用いて次の手順で行っている。
+
+\begin{enumerate}
+\item
+ (基底フォントサイズにより決定されたmag値を実際に設定する。)
+\item
+ \Pkg{geometry}で次のパラメタを設定する。
+ \label{itm:pl-param}
+ \begin{enumerate}
+ \item
+ クラスオプションで指定された用紙サイズ、
+ および|truedimen| とドライバ指定。
+ \label{itm:pl-parama}
+ \item
+ \Pkg{bxjsarticle}/\Pkg{bxjsreport}の場合は次のパラメタ値。
+ \label{itm:pl-paramb}
+\begin{quote}\small\begin{verbatim}
+headheight=10pt, footskip=0.03367\paperheight,
+headsep=\footskip-\topskip, includeheadfoot,
+hscale=0.76, hmarginratio=1:1, vscale=0.83, vmarginratio=1:1
+\end{verbatim}\end{quote}
+ \item
+ \Pkg{bxjsbook}の場合は次のパラメタ値。%
+ \label{itm:pl-paramc}
+\begin{quote}\small\begin{verbatim}
+headheight=10pt, headsep=6mm, nofoot, includeheadfoot,
+hmargin=18mm, vscale=0.83, vmarginratio=1:1
+\end{verbatim}\end{quote}
+ \Note \Pkg{bxjsbook}の1.2a版以前では、この設定の中の
+ “|hmargin=18mm|”の代わりに“|hmargin=36mm,| |hmarginratio=1:1|”
+ を用いていた。
+ これでは\Pkg{jsbook}の水平マージン設定と同等にならないため
+ 1.3版で現在の設定に修正された。
+ もし1.2a版以前との互換性を保ちたい場合は、
+ クラスオプションに |layout=v1| を指定してほしい。
+ \item
+ \Pkg{bxjsslide}の場合は次のパラメタ値。
+ \label{itm:pl-paramd}
+\begin{quote}\small\begin{verbatim}
+noheadfoot, hscale=0.9, hmarginratio=1:1,
+vscale=0.944, vmarginratio=1:1
+\end{verbatim}\end{quote}
+ \end{enumerate}
+\item
+ 後処理を行う。
+ \label{itm:pl-post}%
+ 以下の処理が含まれる。
+ \begin{itemize}
+ \item |textwidth| を全角幅の整数倍に、|textheight| を整数行分の
+ 自然長になるように丸める。
+ \item |marginpar| 関連の設定を行う。
+ \end{itemize}
+ \Note ただし、横幅の全角整数倍への丸めは、|whole-zw-lines=false|
+ 指定時には抑止される。
+\end{enumerate}
+
+ページレイアウトの再設定のために次の命令が用意されている。
+\begin{itemize}
+\item |\setpagelayout{|\Meta{設定}|}|\Means
+ 現在のページレイアウトの設定の一部を修正する。
+ \Meta{設定}は\Pkg{geometry}のパラメタの記述であり、
+ 現在の設定に追記して\Pkg{geometry}が再設定を行った後、
+ 再び\ref{itm:pl-post}の後処理が行われる。
+\item |\setpagelayout*{|\Meta{設定}|}|\Means
+ 用紙以外の設定をリセットして改めてページレイアウトの設定を行う。
+ 具体的には、まず\Pkg{geometry}の |reset| オプションで初期化し、
+ その後\ref{itm:pl-parama}と\Meta{設定}の
+ 内容を用いて再設定を行った後、
+ 再び\ref{itm:pl-post}の後処理が行われる。
+\item |\setpagelayout+{|\Meta{設定}|}|\Means
+ |\setpagelayout*| の変種で、「本文領域のサイズと位置」の設定のみを
+ リセットして改めてページレイアウトの設定を行う。
+ すなわち、前項の“再設定”の際に、
+ \ref{itm:pl-paramb}~\ref{itm:pl-paramd}の内容のうち
+ 「本文領域」以外のものが追加される。
+\end{itemize}
+
+なお、|\geometry| 命令を直接呼び出すことも可能である。
+当然この場合は\ref{itm:pl-post}の後処理は行われない。
+
+%-------------------
+\subsection{構造マークアップ関連}
+
+\begin{itemize}
+\item |\subtitle{|\Meta{テキスト}|}|\Means
+ サブタイトルを設定する。
+ \Note |\maketitle| の出力にサブタイトルが含まれるようになる。
+\item |chapterabstract| 環境\Means
+ \Pkg{jsbook}クラスの |abstract| 環境
+ \footnote{article系やreport系のクラスにあるような
+ (文書要旨のための)abstract 環境は、book系クラスでは
+ 用意されていないことが多いことに注意。}%
+ と等価な環境で、
+ 「各章の初めにちょっとしたことを書く」用途を想定したもの。
+ (ただし使用可能な場所に特に制限はない。)
+
+ なお、|abstract| 環境の機能については継承元のJSクラスと同一に
+ なるため以下のようになる。
+ \begin{itemize}
+ \item \Pkg{bxjsarticle}および|layout=v2|指定の\Pkg{bxjsreport}\Means
+ \Pkg{jsarticle}/\Pkg{jsreport}クラスと同じ、
+ つまり「文書要旨」のための環境。
+ \item \Pkg{bxjsbook}および|layout=v1|指定の\Pkg{bxjsreport}\Means
+ \Pkg{jsbook}クラスと同じ、
+ つまり |chapterabstract| 環境と等価。
+ \end{itemize}
+
+\item |\jayear|\Means
+ 和暦表示(|\和暦|)が有効な時の |\today| のテキスト中の年号
+ (「年」より前の部分、例えば「平成28」)
+ の部分を表すマクロ。
+\end{itemize}
+
+|label-section=modern| の場合に限り、以下の命令が利用できる。
+
+\begin{itemize}
+\item |\labelsection|\Means
+ 節見出し(|\section|)における節番号の表示形式を表すマクロ。
+ 通常、|\thesection|(|section| カウンタの出力形式)に
+ 必要な装飾(“節”や“§”など)を加えたテキストを指定する。
+ \par
+ 既定値は以下に示すものと同等になっている。
+ \begin{itemize}
+ \item 文書開始時は“|\presectionname\thesection\postsectionname|”。
+ \item 付録開始時(|\appendix| 実行時)に
+ “|\appendixname\thesection|”に切り替わる。
+ \footnote{|\labelsection| を実際に再定義するわけではないので、
+ ユーザが独自の |\labelsection| を設定している場合は
+ 切替は発生しなくなる。}
+ \end{itemize}
+ \Note |label-section=compat| の場合は(JSクラスと同様に)
+ 付録開始時に
+ 「|\presectionname| を |\appendixname| で上書きする」
+ という動作が発生するが、|label-section=modern| では
+ これは起こらない。
+\item |\labelsubsection|/|\labelsubsubsection|\Means
+ これらのマクロが定義されている場合は、各々の内容のテキストが
+ 小節見出しおよび小々節見出しの表示形式として利用される。
+ 未定義の場合は |\thesub(sub)section| で代用される。
+\end{itemize}
+
+%-------------------
+\subsection{和文用設定関連}
+\label{ssec:ja-settings}
+
+\begin{itemize}
+\item |\jsZw|\Means
+ 和文の全角幅を表す。
+ 例えば |2\jsZw| が pLaTeX の |2zw| に相当する。
+\item |\zw|\Means
+ |\jsZw| の別名。
+ \footnote{\Pkg{\LuaTeX-ja}では「実際の全角幅」を表す
+ 命令 |\zw|({\pLaTeX}の |zw| と本当に等価)が規定されている。
+ |lualatex| エンジン指定かつ和文ドライバが |standard| の場合は
+ この |\zw| の定義がそのまま使われる。
+ (従って |use-zw| は実質的に意味を持たない。)
+ なお、|\jsZw| は「規約上の全角幅」であり、「実際の全角幅」と本来は
+ 一致するはずだが、実際には計算誤差のせいで僅かに値が異なる。}%
+ ただし |use-zw=false| 指定時は定義されない。
+\item |\zwspace|\Means
+ 全角(|\jsZw|)幅の水平空き。
+\item |\_|(|\|\,の後に全角空白文字)\Means
+ |\zwspace| の別名。
+ 全角幅の水平空き。
+ \Note \Pkg{jlreq}クラスと互換の命令。
+ ただしBXJSクラスはJLREQの和字間隔の規定とは無関係であり、
+ この命令は単純に |\hspace|\wbr|{\jsZw}| と等価である。
+\item |\jaenspace|\Means
+ 半角(0.5\,|\jsZw|)幅の水平空き。
+\item |\allowoldfontcommands|\Means
+ これ以降に実行される二文字フォント命令を警告の対象にしない。
+\item |\disallowoldfontcommands|\Means
+ これ以降に実行される二文字フォント命令を警告の対象にする。
+\Note 詳細については\ref{sec:Old-font-commands}節を参照されたい。
+\end{itemize}
+
+\subsubsection{standard和文ドライバの場合}
+
+standard和文ドライバ(およびそれを継承するドライバ)では和文に関連する
+文書ソース記述をエンジンに依らずに共通になることを目指している。
+従って、和文関連の組版パラメタの設定についても
+「共通の命令」が提供される。
+
+\begin{itemize}
+\item 和文ファミリ変更命令\Means
+ {\pLaTeX}と同様に、
+ |\mcfamily| で「明朝」、|\gtfamily| で「ゴシック」に変更される。
+ |\textmc|、|\textgt| も使える。
+\item 欧文ファミリ変更命令での和文の連動\Means
+ JSクラスと同様
+ \footnote{ちなみに、(u){\pLaTeX}の既定ではこの連動は起こらない。}%
+ に、|\rmfamily| で和文が「明朝」、
+ |\sffamily| および |\ttfamily| で和文が「ゴシック」に変更される。
+\item |\jQ|、|\jH|、|\trueQ|、|\trueH|\Means
+ それぞれ{\pLaTeX}の単位Q、H、true\,Q、true\,Hに相当する長さ。
+\item |\ascQ|\Means
+ 1\,true\,Qを和文スケール値で割った長さ。
+ \footnote{命令名は“anti-scaled Q”の略。}%
+ 例えば、|\fontsize{10\ascQ}{16\trueH}|
+ で和文のサイズが10\,Qになる。%
+ \footnote{1.5c版で導入された |\jafontsize| 命令を用いて %
+ |\jafontsize{10trueQ}{16trueH}| としてもよい。}
+\item |\ascpt|\Means
+ 1\,true\,ptを和文スケール値で割った長さ。
+ 例えば、|\fontsize{9\ascpt}{13truept}|
+ で和文のサイズが9ポイントになる。
+\item |\setxkanjiskip{|\Meta{長さ}|}|\Means
+ 和欧文間空白の量を指定する。
+ {\pLaTeX}での |\setlength{\xkanjiskip}{|\Meta{長さ}|}| に相当する。
+\item |\getxkanjiskip|\Means
+ 現在の和欧文間空白の量を表す文字列に展開される。
+ {\pLaTeX}での |\xkanjiskip| の読出
+ \footnote{{\TeX}言語でいうと |\the\xkanjiskip|。}%
+ に相当する。
+\item |\autoxspacing|/|\noautoxspacing|\Means
+ 和欧文間空白の挿入を有効/無効にする。
+ {\pLaTeX}の同名の命令と同等。
+\item |\setkanjiskip{|\Meta{長さ}|}|\Means
+ 和文間空白の量を指定する。
+ {\pLaTeX}での |\setlength{\kanjiskip}{|\Meta{長さ}|}| に相当する。
+\item |\getkanjiskip|\Means
+ 現在の和文間空白の量を表す文字列に展開される。
+ {\pLaTeX}での |\kanjiskip| の読出
+ \footnote{{\TeX}言語でいうと |\the\kanjiskip|。}%
+ に相当する。
+\item |\autospacing|/|\noautospacing|\Means
+ 和文間空白の挿入を有効/無効にする。
+ {\pLaTeX}の同名の命令と同等。
+\item |\jathinspace|\Means
+ 和欧文間空白を挿入する。
+\item |\>|\Means
+ (非数式モードで
+ \footnote{|\>| という命令名は、plain {\TeX}では数式中の空白
+ ({\LaTeX}の |\:| と同等)を表す。
+ このため、実際には{\LaTeX}でも |\>| は |\:| と同等の命令として
+ 定義されている。
+ この「plain互換の |\>|」を利用したコードが影響を受けるのを避ける
+ ため、数式中では |\>| は従来通り |\:| と同等の動作を行う。}%
+ )和欧文間空白を挿入する。
+ \Note |jaspace-cmd=false| 指定時は定義されない。%
+ \footnote{ただし、standard和文ドライバで自動的に読み込まれる
+ \Pkg{zxjatype}や\Pkg{bxcjkjatype}のパッケージは、
+ それ自体が同様の機能の |\>| を提供することにも注意を要する。}
+\item |\jachar{|\Meta{文字1つ}|}|\Means
+ 指定の文字を和文文字として(現在の和文フォントで)出力する。
+\item |\jafontsize{|\Meta{フォントサイズ\xast}|}{|\Meta{行送り\xast}|}|\Means
+ “和文規準”でフォントサイズを指定する。
+ すなわち、和文の1\,zwが\Meta{フォントサイズ}と等しくなるように
+ フォントサイズを設定する。
+\item 和文数式フォント命令\Means
+ JSクラスと同様に、
+ |\mathmc| で「明朝」、|\mathgt| で「ゴシック」の
+ 和文数式フォントを指定する。
+\item 欧文数式フォント命令での和文の連動\Means
+ |\mathrm| で和文が「明朝」、
+ |\mathsf| および |\mathtt| で和文が「ゴシック」に指定される。
+ \Note JSクラスとは異なり、連動の組合せは
+ テキストと同一であることに注意。
+\end{itemize}
+
+例えば、{\pLaTeX}において、次のように「和文間空白」を
+利用して均等割りを行うという技法が知られている。
+
+\begin{quote}\small\begin{verbatim}
+%% \kintouwari{<整数n>}{<テキスト>}
+% n全角の幅にテキストを均等割りで出力する.
+\newcommand\kintouwari[2]{{%
+ \setlength{\kanjiskip}{\fill}%
+ \makebox[#1zw][s]{#2}}}
+\end{verbatim}\end{quote}
+
+これと同等のものを、次のようにエンジン非依存な形で書くことができる。
+
+\begin{quote}\small\begin{verbatim}
+\newcommand\kintouwari[2]{{%
+ \setkanjiskip{\fill}%
+ \makebox[#1\zw][s]{#2}}}
+\end{verbatim}\end{quote}
+
+%===========================================================
+\section{数式中の和文出力について}
+\label{sec:Ja-math-fonts}
+
+minimal和文ドライバは数式中の和文出力の機能を何も提供しない。
+従って、そのような機能を提供する他のパッケージを併用するので
+ない限り、数式中に和文を書いたときの挙動は未定義である。
+
+standard和文ドライバ(およびそれを継承する和文ドライバ)に
+おける数式中の和文出力の扱いは、エンジンと |enablejfam| オプション
+の値の組合せにより異なり、表\ref{tbl:ja-math}に示すようになる。
+以下でこの表に関する補足説明を行う。
+\begin{itemize}
+\item この表にある以外のエンジンと |enablejfam| 値の組合せは
+ 許容されない。
+ この場合、警告が出て、|enablejfam| が可能な値に自動的に変更される。
+\item 「直書き」が「可」の場合、数式フォント命令(|\mathXX{}|)の外に
+ 書いた和文文字は明朝体で出力される。
+ 「不可」の場合、そのような和文文字の扱いは未定義である。
+\item 「|\mathmc|/|gt|」が「サポート有り」の場合、これらの命令は
+ “本物”の数式フォント命令として働く。
+ 「フォールバック」の場合は、これらの命令は内部で一旦テキストモードに
+ 切り替えて非数式として出力される。
+ このフォールバック機能を実用したい場合は、
+ \Pkg{amstext}(または\Pkg{amsmath})パッケージの併用が望ましい。%
+ \footnote{\Pkg{amstext}を読み込まない場合、
+ 添字中で |\mathmc|/|gt| を用いたときに
+ 文字サイズが非添字のものに戻ってしまうという不具合が出る。}
+\end{itemize}
+
+\DeleteShortVerb{\|}
+\MakeShortVerb{\+}
+\begin{table}[t]
+ \caption{standard和文ドライバにおける数式中の和文出力のサポート}
+ \label{tbl:ja-math}
+ \small\centering
+ \begin{tabular}{ll|ccc}
+ \hline
+ エンジン & +enablejfam+ & 直書き & +\mathmc+/+gt+ & 和欧文連動 \\
+ \hline
+ +(u)platex+ & +true+(既定) & 可 & サポート有り & 有り \\
+ & +false+ & 不可 & フォールバック & --- \\
+ +lualatex+ & +true+ & 可 & サポート有り & 有り \\
+ +xelatex+ & +true+ & 可 & フォールバック & 無し \\
+ & +false+(既定)& 不可 & フォールバック & --- \\
+ +pdflatex+ & +false+ & 不可 & フォールバック & --- \\
+ \hline
+ \end{tabular}
+\end{table}
+\DeleteShortVerb{\+}
+\MakeShortVerb{\|}
+
+%===========================================================
+\section{“二文字フォント命令”に対する警告}
+\label{sec:Old-font-commands}
+
+ここでいう“二文字フォント命令”というのは、|\bf| や |\it| 等の
+{\LaTeX}~2.09で標準であったフォント選択命令のことである。
+\footnote{なお、|\em| は「二文字の名前のフォント命令」であるが、
+ これは{\LaTeXe}でも標準命令であり、“二文字フォント命令”には
+ 含まれない。}\
+{\LaTeXe}においては、これらに代わって、|\bfseries| 等の
+NFSS方式の新しい命令群が標準となり、
+古い二文字フォント命令はカーネルではもはサポートされなくなった。
+しかし同時に、二文字フォント命令を利用したパッケージを
+動作させるための“当面の”
+\footnote{ちなみに、
+ {\LaTeXe}が最初にリリースされたのは1994年のことである。}%
+互換性対策として、
+「標準の文書クラス(\Pkg{article}、\Pkg{book}等)で二文字フォント命令の
+サポートを行う」という方針がとられた。
+これに倣って、他の文書クラスの多くもクラスのレベルで
+二文字フォント命令をサポートしていて、
+BXJSクラスもその例に含まれる。
+
+ところが最近になって、一部の文書クラス
+(\Pkg{KOMA-Script}クラス群や\Pkg{memoir}クラス等)
+において、二文字フォント命令を明示的に非推奨の扱いにした上で、
+その使用に制限を設ける
+(警告を出す、オプションを指定しないと使えない、等)
+という措置が取られるようになっている。
+
+これに合わせて、BXJSクラスでは1.2版より
+二文字フォント命令を非推奨とし、また、
+既定でその使用に対して警告を出すようにした。
+
+%-------------------
+\subsection{警告の内容}
+
+文書中で |\bf| などの二文字フォント命令が呼び出された場合、
+コンパイルの最後に(一度だけ)以下の警告メッセージが表示される。
+
+\begin{quote}\small\begin{verbatim}
+Class bxjsarticle Warning: Some old font commands were used in text:
+(bxjsarticle) \bf \it
+(bxjsarticle) You should note, that since 1994 LaTeX2e provides a
+(bxjsarticle) new font selection scheme called NFSS2 with several
+(bxjsarticle) new, combinable font commands. The class provides
+(bxjsarticle) the old font commands only for compatibility.
+\end{verbatim}
+\end{quote}
+
+なお、この警告は、パッケージの機能の実装として用いられたものも含めて
+全ての二文字フォント命令の呼出が対象になる。
+ただし例外として、thebibliography環境の内部で呼び出されたものだけは
+対象から除外される。
+{\BibTeX}の文献スタイルファイル(|.bst|)や文献データベース(|.bib|)
+のファイルは(パッケージと比較しても)極めて古いものが
+割と普通に使い続けられることが多い。
+そういった極めて古いファイルに由来する二文字フォント命令を
+警告したとしても、多くの場合、ユーザ側には対処する方法が存在しない。
+これが文献リスト環境中で警告を抑止する理由である。
+
+%-------------------
+\subsection{警告の制御}
+
+二文字フォント命令に対する警告の有無はクラスオプションで制御できる。
+
+\begin{itemize}
+\item |oldfontcommands|\Means
+ 二文字フォント命令を警告の対象にしない。
+\item |nooldfontcommands|(既定)\Means
+ 二文字フォント命令を警告の対象にする。
+\end{itemize}
+
+また、以下の命令により、文書中で一時的に警告の設定を変えられる。
+\footnote{これらの命令の効果はグルーピングの影響を受ける。}
+
+\begin{itemize}
+\item |\allowoldfontcommands|\Means
+ これ以降に実行される二文字フォント命令を警告の対象にしない。
+\item |\disallowoldfontcommands|\Means
+ これ以降に実行される二文字フォント命令を警告の対象にする。
+\end{itemize}
+
+%-------------------
+\subsection{将来的な二文字フォント命令の扱い}
+
+\jemph{現在の版で存在する}和文ドライバを使用する場合には、
+将来的に以下の方針が維持される。
+
+\begin{itemize}
+\item 二文字フォント命令に対する警告の様式は、
+ 今後変更される可能性がある。
+\item しかし、将来に二文字フォント命令のサポートが廃止されることはない。
+\item |oldfontcommands| オプションよおび |\allowoldfontcommands| 命令
+ は継続して提供され、
+ これらの機能を用いた場合は、二文字フォント命令に関する警告が
+ 端末に表示されることは一切無い。
+\end{itemize}
+
+%===========================================================
+\end{document}
+
+%===========================================================
+\appendix
+\section{パッケージレベル公開命令の一覧}
+
+\begin{itemize}
+% \jsAtEndOfClass はBXJSの補助パッケージ専用
+\item |\jsBaseFontSize|
+\item |\jsDocClass|
+ \begin{itemize}
+ \item |\jsArticle|
+ \item |\jsBook|
+ \item |\jsReport|
+ \item |\jsSlide|
+ \end{itemize}
+\item |\ifjsDraft|
+\item |\jsEngine|
+\item |\jsFontSizeChanged|
+\item |\jsGeometryOptions|
+\item |\jsInhibitGlue|
+\item |\jsInhibitGlueAtParTop|
+\item |\jsInJaParen|
+\item |\ifjsInPdfMode|
+\item |\jsJaChar|
+\item |\jsJaFont|
+\item |\jsJaParam|
+\item |\jsKanjiSkip|
+\item |\jsLetHeadChar|
+\item |\jsParagraphMark|
+\item |\jsResetDimen|
+\item |\jsScale|
+\item |\ifjsSeireki|
+\item |\jsSimpleJaSetup|
+\item |\jsSubtitle|
+\item |\jsTextWidthLimit|
+\item |\jsUnusualPtSize|
+% \jsUseMinimalPageLayout はテスト用
+\item |\ifjsWitheTeX|
+\item |\ifjsWithupTeX|
+\item |\jsXKanjiSkip|
+% \jsZw はユーザレベル命令
+\end{itemize}
+
+%% EOF
diff --git a/language/japanese/BX/bxjscls/bxjscls.dtx b/language/japanese/BX/bxjscls/bxjscls.dtx
new file mode 100644
index 0000000000..c46d0fd9b7
--- /dev/null
+++ b/language/japanese/BX/bxjscls/bxjscls.dtx
@@ -0,0 +1,11608 @@
+% ^^A -*- japanese-latex -*-
+% \iffalse meta-comment
+%
+% BXJS ドキュメントクラス
+% (BXJS Document Classes)
+%
+% 本ソフトウェアは奥村晴彦氏および日本語TeX開発コミュニティによる
+% 「pLaTeX2ε新ドキュメントクラス」を
+% 「八登 崇之(別名 ZR)」が改変したものである。
+% (This software is a modified version of
+% "New Document CLasses for pLaTeX2e"
+% authored by Haruhiko Okumura and the Japanese TeX Development Community,
+% and the modification is by Takayuki YATO (aka."ZR").)
+%
+% 本ソフトウェアは修正 BSD ライセンスの下で配布される。
+% (This software is distributed under the BSD 2-Clause License.)
+%
+% 以下に原版についての原版著者による情報を示す:
+% (Below is shown the information on the original version,
+% provided by the original authors.)
+%---------------------------------------
+%
+% pLaTeX2ε新ドキュメントクラス(日本語 TeX 開発コミュニティ版)
+% 原作者:奥村晴彦 <okumura@okumuralab.org>
+%
+%---------------------------------------
+%
+% Copyright 1993-2016
+% The LaTeX3 Project and any individual authors listed elsewhere
+% in this file.
+%
+% Copyright 1995-1999 ASCII Corporation.
+% Copyright 1999-2016 Haruhiko Okumura
+% Copyright 2016-2019 Japanese TeX Development Community
+%
+% Copyright 2013-2019 Takayuki YATO (aka. "ZR")
+%
+% \fi
+% \CheckSum{0}
+%
+% \iffalse
+%
+% \begin{macrocode}
+%<article|report|book|slide>\NeedsTeXFormat{LaTeX2e}
+%<article>\ProvidesClass{bxjsarticle}
+%<report>\ProvidesClass{bxjsreport}
+%<book>\ProvidesClass{bxjsbook}
+%<slide>\ProvidesClass{bxjsslide}
+%<minimal>\ProvidesFile{bxjsja-minimal.def}
+%<standard>\ProvidesFile{bxjsja-standard.def}
+%<modern>\ProvidesFile{bxjsja-modern.def}
+%<pandoc>\ProvidesFile{bxjsja-pandoc.def}
+%<compat>\ProvidesPackage{bxjscompat}
+%<cjkcat>\ProvidesPackage{bxjscjkcat}
+%<ancpandoc>\ProvidesPackage{bxjspandoc}
+%<*driver>
+\ProvidesFile{bxjscls.dtx}
+%</driver>
+ [2019/07/27 v1.9h BXJS document classes]
+% based on jsclasses [2019/07/25]
+% [2019/06/23 v1.9g BXJS document classes]
+% [2019/03/10 v1.9f BXJS document classes]
+% [2019/01/13 v1.9e BXJS document classes]
+% [2018/10/03 v1.9d BXJS document classes]
+% [2018/09/04 v1.9c BXJS document classes]
+% [2018/08/20 v1.9b BXJS document classes]
+% [2018/07/20 v1.9a BXJS document classes]
+% based on jsclasses [2018/06/23]
+% [2018/04/19 v1.9 BXJS document classes]
+% [2018/04/14 v1.8b BXJS document classes]
+% [2018/03/29 v1.8a BXJS document classes]
+% based on jsclasses [2018/03/11]
+% [2018/03/03 v1.8 BXJS document classes]
+% [2018/02/04 v1.7c BXJS document classes]
+% [2018/01/28 v1.7b BXJS document classes]
+% [2017/12/09 v1.7a BXJS document classes]
+% [2017/10/21 v1.7 BXJS document classes]
+% [2017/09/28 v1.6b BXJS document classes]
+% [2017/09/24 v1.6a BXJS document classes]
+% [2017/09/09 v1.6 BXJS document classes]
+% based on jsclasses [2017/09/03]
+% [2017/07/07 v1.5d BXJS document classes]
+% [2017/06/10 v1.5c BXJS document classes]
+% [2017/04/01 v1.5b BXJS document classes]
+% [2017/03/14 v1.5a BXJS document classes]
+% [2017/03/11 v1.5 BXJS document classes]
+% based on jsclasses [2017/03/05]
+% [2017/02/03 v1.4 BXJS document classes]
+% [2017/01/28 v1.3a BXJS document classes]
+% based on jsclasses [2017/01/13]
+% [2016/11/01 v1.3 BXJS document classes]
+% based on jsclasses [2016/10/08]
+% [2016/08/16 v1.2a BXJS document classes]
+% [2016/08/01 v1.2 BXJS document classes]
+% based on jsclasses [2016/07/18]
+% [2016/07/16 v1.1f BXJS document classes]
+% based on jsclasses [2016/07/15]
+% [2016/05/28 v1.1e BXJS document classes]
+% [2016/05/21 v1.1d BXJS document classes]
+% [2016/05/01 v1.1c BXJS document classes]
+% [2016/03/27 v1.1b BXJS document classes]
+% [2016/02/20 v1.1a BXJS document classes]
+% [2016/02/14 v1.1 BXJS document classes]
+% [2015/11/21 v1.0d BXJS document classes]
+% [2015/10/18 v1.0c BXJS document classes]
+% [2015/09/07 v1.0b BXJS document classes]
+% [2015/08/23 v1.0a BXJS document classes]
+% [2015/08/05 v1.0 BXJS document classes]
+% based on jsclasses [2014/02/07]
+% [2013/10/03 v0.9pre BXJS document classes]
+% based on jsclasses [2013/05/14]
+%<*driver>
+\documentclass[a4paper]{ltjsarticle}
+\usepackage[ipaex]{luatexja-preset}
+\usepackage{metalogo}
+\usepackage{doc}
+\usepackage{color}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\TODO}{\par\noindent
+ {\usefont{OT1}{cmss}{sbc}{n}\color{red}TODO:}\ }
+\newcommand{\Means}{~:\quad}
+\newcommand{\OR}{$\;|\;$}
+\newcommand{\ZRX}{☃}
+\newenvironment{ZRnote}
+ {\StartZRnote}{\EndZRnote}
+\newcommand*{\ZRnoteline}[1]{
+ \par\noindent\makebox[0pt][l]{\rule[.5ex]{\linewidth}{.4pt}}%
+ \makebox{\hspace{.05\linewidth}\rule[#1ex]{.9\linewidth}{.2pt}}\par}
+\newcommand*{\StartZRnote}{\ZRnoteline{.1}}
+\newcommand*{\EndZRnote}{\ZRnoteline{.9}}
+\providecommand*{\eTeX}{$\varepsilon$-\TeX}
+\providecommand*{\upTeX}{u\pTeX}
+\providecommand*{\XeTeX}{XeTeX}
+\newcommand*{\zrWDash}{\symbol{"301C}}% WAVE DASH
+\newcommand*{\zrNote}[1]{[#1]}
+\makeatletter
+\providecommand*\jsTocLine{\leaders\hbox{%
+ $\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill}
+\def\meta@font@select{\rmfamily\itshape}
+\makeatother
+\addtolength{\textwidth}{-1in}
+\addtolength{\evensidemargin}{1in}
+\addtolength{\oddsidemargin}{1in}
+\addtolength{\marginparwidth}{1in}
+\setlength\marginparpush{0pt}
+% \OnlyDescription
+\DisableCrossrefs
+\CodelineNumbered
+\setcounter{StandardModuleDepth}{1}
+\GetFileInfo{bxjscls.dtx}
+\begin{document}
+ \DocInput{bxjscls.dtx}
+\end{document}
+%</driver>
+% \end{macrocode}
+%
+% \fi
+%
+%^^A========================================================
+% \title{\Pkg{BXjscls} パッケージ\\
+% (BXJS文書クラス集)\\
+% ソースコード説明書}
+% \author{八登崇之\ (Takayuki YATO; aka.~``ZR''}
+% \date{\fileversion\quad[\filedate]}
+% \maketitle
+%
+% \MakeShortVerb{\|}
+%
+% \begin{ZRnote}
+% この文書はソースコード説明書です。
+% 一般の文書作成者向けの解説については、
+% ユーザマニュアル |bxjscls-manual.pdf| を参照してください。
+% \end{ZRnote}
+%
+% \tableofcontents
+%
+% \section{はじめに}
+%
+% \begin{ZRnote}
+% この文書は「BXJSドキュメントクラス」のDocStrip形式のソースである。
+% インストール時のモジュール指定は以下のようである。
+% \begin{quote}
+% \begin{tabular}{lll}
+% $\langle$\textsf{article}$\rangle$ & \texttt{bxjsarticle.cls}
+% & 短いレポート(章なし) \\
+% $\langle$\textsf{report}$\rangle$ & \texttt{bxjsreport.cls}
+% & 長いレポート(章あり) \\
+% $\langle$\textsf{book}$\rangle$ & \texttt{bxjsbook.cls}
+% & 書籍用 \\
+% $\langle$\textsf{slide}$\rangle$ & \texttt{bxjsslide.cls}
+% & スライド用 \\
+% \end{tabular}
+% \end{quote}
+%
+% 本ドキュメントクラスは奥村晴彦氏および日本語TeX開発コミュニティ
+% による「p\LaTeXe 新ドキュメントクラス」に改変を加えたものである。
+% 本ドキュメントクラスに関する説明は全てこの形式の枠の中に記す。
+% 枠の外にあるものは原版著者による原版に対する解説である。
+% \end{ZRnote}
+%
+% これは\LaTeX3 Projectの \texttt{classes.dtx} と
+% 株式会社アスキーの \texttt{jclasses.dtx} に基づいて
+% もともと奥村晴彦により作成されたものです。
+% 現在は日本語\TeX 開発コミュニティによりGitHubで管理されています。
+% \begin{quote}
+% |https://github.com/texjporg/jsclasses|
+% \end{quote}
+%
+% [2002-12-19] いろいろなものに収録していただく際にライセンスを明確にする
+% 必要が生じてきました。アスキーのものが最近はmodified BSDライセンスになっ
+% ていますので,私のものもそれに準じてmodified BSDとすることにします。
+%
+% [2016-07-13] 日本語\TeX 開発コミュニティによる管理に移行しました。
+%
+% [2009-02-22] 田中琢爾氏によるup\LaTeX 対応パッチを取り込みました。
+%
+% ここでは次のドキュメントクラス(スタイルファイル)を作ります。
+%
+% [2017-02-13] forum:2121の議論を機に,jsreportクラスを新設しました。
+% 従来のjsbookの |report| オプションと比べると,|abstract| 環境の使い方
+% および挙動がアスキーのjreportに近づきました。
+%
+% \begin{quote}
+% \begin{tabular}{lll}
+% $\langle$\textsf{article}$\rangle$ & \texttt{jsarticle.cls} & 論文・レポート用 \\
+% $\langle$\textsf{book}$\rangle$ & \texttt{jsbook.cls} & 書籍用 \\
+% $\langle$\textsf{report}$\rangle$ & \texttt{jsreport.cls} & レポート用 \\
+% $\langle$\textsf{jspf}$\rangle$ & \texttt{jspf.cls} & 某学会誌用 \\
+% $\langle$\textsf{kiyou}$\rangle$ & \texttt{kiyou.cls} & 某紀要用
+% \end{tabular}
+% \end{quote}
+%
+% \iffalse
+%
+% \LaTeXe あるいは\pLaTeXe 標準のドキュメントクラスとの違いを説明してお
+% きます。
+%
+% \paragraph{JISフォントメトリックの使用}
+%
+% ここでは和文TFM(\TeX フォントメトリック)として東京書籍印刷の小林肇さ
+% んの作られたJISフォントメトリック \texttt{jis.tfm},\texttt{jisg.tfm}
+% を標準で使います。従来のフォントメトリック \texttt{min10.tfm},
+% \texttt{goth10.tfm} の類を使うには
+% \begin{quote}
+% |\documentclass[mingoth]{jsarticle}|
+% \end{quote}
+% のように \texttt{mingoth} オプションを付けます。
+%
+% \paragraph{サイズオプションの扱いが違う}
+%
+% 標準のドキュメントクラスでは本文のポイント数を指定するオプションがあり
+% ましたが,ポイント数は10,11,12しかなく,それぞれ別のクラスオプション
+% ファイルを読み込むようになっていました。しかも,標準の10ポイント以外で
+% は多少フォントのバランスが崩れることがあり,あまり便利ではありませんで
+% した。ここでは文字サイズを増すとページを小さくし,\TeX の |\mag| プリ
+% ミティブで全体的に拡大するという手を使って,9ポイントや21,25,30,36,
+% 43ポイント,12Q,14Qの指定を可能にしています。
+% \fi
+%
+% \StopEventually{}
+%
+% 以下では実際のコードに即して説明します。
+% \begin{macrocode}
+%<*cls>
+%% このファイルは日本語文字を含みます.
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@clsname}
+%
+% 文書クラスの名前です。エラーメッセージ表示などで使われます。
+%
+% \begin{macrocode}
+%<article>\def\bxjs@clsname{bxjsarticle}
+%<book>\def\bxjs@clsname{bxjsbook}
+%<report>\def\bxjs@clsname{bxjsreport}
+%<slide>\def\bxjs@clsname{bxjsslide}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifjsc@needsp@tch}
+%
+% [2016-08-22] 従来\texttt{jsclasses}では,\pLaTeX や\LaTeX の
+% 不都合な点に対して,クラスファイル内で独自に対策を施していま
+% した。しかし,2016年以降,コミュニティ版\pLaTeX が次第に対策
+% コードをカーネル内に取り込むようになりました。そこで,新しい
+% \pLaTeX カーネルと衝突しないように,日付が古い場合だけパッチ
+% をあてる場合があります。この処理に使用するフラグを定義します。
+%
+% \begin{macrocode}
+\newif\ifjsc@needsp@tch
+\jsc@needsp@tchfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{BXJSクラス特有の設定 \ZRX}
+%
+% \mbox{}
+% \begin{ZRnote}
+% 長さ値の指定で式を利用可能にするため |calc| を読み込む。
+% \begin{macrocode}
+\RequirePackage{calc}
+% \end{macrocode}
+% クラスオプションでkey-value形式を使用するため |keyval| を読み込む。
+% \begin{macrocode}
+\RequirePackage{keyval}
+% \end{macrocode}
+% クラスの本体ではこの他に |geometry| パッケージが読み込まれる。
+% \TODO 依存パッケージの情報。
+%
+% 互換性のための補助パッケージを読み込む。
+% \begin{macrocode}
+\IfFileExists{bxjscompat.sty}{%
+ \let\jsAtEndOfClass\@gobble
+ \RequirePackage{bxjscompat}%
+}{}
+% \end{macrocode}
+%
+% \begin{macro}{\jsDocClass}
+% 〔トークン〕
+% 文書クラスの種別。
+% 以下の定値トークンの何れかと同等:
+% |\jsArticle|=bxjsarticle、
+% |\jsBook|=bxjsbook、
+% |\jsReport|=bxjsreport、
+% |\jsSlide|=bxjsslide。
+% \begin{macrocode}
+\let\jsArticle=a
+\let\jsBook=b
+\let\jsReport=r
+\let\jsSlide=s
+%<article>\let\jsDocClass\jsArticle
+%<book>\let\jsDocClass\jsBook
+%<report>\let\jsDocClass\jsReport
+%<slide>\let\jsDocClass\jsSlide
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsEngine}
+% 〔暗黙文字トークン〕
+% エンジン({\TeX}の種類)の種別:
+% |j|={\pTeX}系、
+% |x|={\XeTeX}、
+% |p|=pdf{\TeX}(含DVIモード)、
+% |l|=Lua{\TeX}、
+% |J|=NTT j{\TeX}、
+% |O|=Omega系、
+% |n|=以上の何れでもない。
+%
+% \begin{macrocode}
+\let\jsEngine=n
+\def\bxjs@test@engine#1#2{%
+ \edef\bxjs@tmpa{\string#1}%
+ \edef\bxjs@tmpb{\meaning#1}%
+ \ifx\bxjs@tmpa\bxjs@tmpb #2\fi}
+\bxjs@test@engine\kanjiskip{\let\jsEngine=j}
+\bxjs@test@engine\jintercharskip{\let\jsEngine=J}
+\bxjs@test@engine\Omegaversion{\let\jsEngine=O}
+\bxjs@test@engine\XeTeXversion{\let\jsEngine=x}
+\bxjs@test@engine\pdftexversion{\let\jsEngine=p}
+\bxjs@test@engine\luatexversion{\let\jsEngine=l}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifjsWithupTeX}
+% 〔スイッチ〕
+% エンジンが(内部漢字コードがUnicodeの){\upTeX}であるか。
+% \begin{macrocode}
+\newif\ifjsWithupTeX
+\ifx\ucs\@undefined\else \ifnum\ucs"3000="3000
+ \jsWithupTeXtrue
+\fi\fi
+\let\if@jsc@uplatex\ifjsWithupTeX
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifjsWithpTeXng}
+% 〔スイッチ〕
+% エンジンが{\pTeX-ng}であるか。
+% \begin{macrocode}
+\newif\ifjsWithpTeXng
+\bxjs@test@engine\ngbanner{\jsWithpTeXngtrue}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifjsWitheTeX}
+% 〔スイッチ〕
+% エンジンが{\eTeX}拡張をもつか。
+% \begin{macrocode}
+\newif\ifjsWitheTeX
+\bxjs@test@engine\eTeXversion{\jsWitheTeXtrue}
+% \end{macrocode}
+% \end{macro}
+%
+% 非サポートのエンジンの場合は強制終了させる。
+% \Note NTT j{\TeX}とOmega系。
+% \begin{macrocode}
+\let\bxjs@tmpa\relax
+\ifx J\jsEngine \def\bxjs@tmpa{NTT-jTeX}\fi
+\ifx O\jsEngine \def\bxjs@tmpa{Omega}\fi
+\ifx\bxjs@tmpa\relax \expandafter\@gobble
+\else
+ \ClassError\bxjs@clsname
+ {The engine in use (\bxjs@tmpa) is not supported}
+ {It's a fatal error. I'll quit right now.}
+ \expandafter\@firstofone
+\fi{\endinput\@@end}
+% \end{macrocode}
+%
+% Lua{\TeX}の場合、本クラス用のLuaモジュールを用意する。
+% \begin{macrocode}
+\ifx l\jsEngine
+ \directlua{ bxjs = {} }
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@protected}
+% {\eTeX}拡張が有効な場合にのみ |\protected|
+% の効果をもつ。
+% \begin{macrocode}
+\ifjsWitheTeX \let\bxjs@protected\protected
+\else \let\bxjs@protected\@empty
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@robust@def}
+% 無引数の頑強な命令を定義する。
+% \begin{macrocode}
+\ifjsWitheTeX
+ \def\bxjs@robust@def{\protected\def}
+\else
+ \def\bxjs@robust@def{\DeclareRobustCommand*}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifjsInPdfMode}
+% 〔スイッチ〕
+% pdf{\TeX}/Lua{\TeX}がPDFモードで動作しているか。
+% \Note Lua{\TeX} 0.8x版でのプリミティブ名変更に対応。
+% \begin{macrocode}
+\newif\ifjsInPdfMode
+\@nameuse{ImposeOldLuaTeXBehavior}
+\let\bxjs@tmpa\PackageWarningNoLine
+\let\PackageWarningNoLine\PackageInfo % suppress warning
+\RequirePackage{ifpdf}
+\let\PackageWarningNoLine\bxjs@tmpa
+\@nameuse{RevokeOldLuaTeXBehavior}
+\let\ifjsInPdfMode\ifpdf
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@TUenc}
+% 〔スイッチ〕
+% {\LaTeX}の既定のフォントエンコーディングがTUであるか。
+% \Note 2017年1月以降の{\LaTeX}カーネルにおいて
+% 「Unicodeを表す{\LaTeX}公式のフォントエンコーディング」
+% である“TU”が導入され、
+% これ以降の{\LaTeX}を{\XeTeX}またはLua{\TeX}で動かしている場合は、
+% 既定のエンコーディングがTUになる。
+% それ以外の場合は、既定のエンコーディングはOT1である。
+% \begin{macrocode}
+\newif\ifbxjs@TUenc
+\def\bxjs@tmpa{TU}\edef\bxjs@tmpb{\f@encoding}
+\ifx\bxjs@tmpa\bxjs@tmpb
+ \bxjs@TUenctrue
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@cond}
+% |\bxjs@cond\ifXXX|……|\fi{|\Meta{真}|}{|\Meta{偽}|}|\par
+% {\TeX}のif-文(|\ifXXX|……\Meta{真}|\else|\Meta{偽}|\fi|)を
+% 末尾呼出形式に変換するためのマクロ。
+% \begin{macrocode}
+\@gobbletwo\if\if \def\bxjs@cond#1\fi{%
+ #1\expandafter\@firstoftwo
+ \else\expandafter\@secondoftwo
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@cslet}
+% |\bxjs@cslet{|\Meta{名前1}|}\制御綴|\Means
+% \begin{macrocode}
+\def\bxjs@cslet#1{%
+ \expandafter\let\csname#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@csletcs}
+% |\bxjs@csletcs{|\Meta{名前1}|}{|\Meta{名前2}|}|\Means
+% \begin{macrocode}
+\def\bxjs@csletcs#1#2{%
+ \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@catopt}
+% |\bxjs@catopt{|\Meta{文字列1}|}{|\Meta{文字列2}|}|\Means
+% 2つの文字列を |,| で繋いだ文字列。
+% ただし片方が空の場合は |,| を入れない。
+% 完全展開可能。
+% \begin{macrocode}
+\def\bxjs@catopt#1#2{%
+ #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@ifplus}
+% |\@ifstar| の |+| 版。
+% \begin{macrocode}
+\def\bxjs@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@gset@tempcnta}
+% |calc| の整数式を用いて |\@tempcnta| の値を設定する。
+% \begin{macrocode}
+\let\c@bxjs@tempcnta\@tempcnta
+\def\bxjs@gset@tempcnta{\setcounter{bxjs@tempcnta}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsSetQHLength}
+% |\jsSetQHLength\CS{|\Meta{長さ式}|}|\Means
+% |\setlength| の変種で、通常の |calc| の長さ式の代わりに、
+% 「|Q|/|H|/|trueQ|/|trueH|/|zw|/|zh| の単位付きの実数」
+% が記述できる(この場合は式は使えない)。
+% \begin{macrocode}
+\def\jsSetQHLength#1#2{%
+ \begingroup
+ \bxjs@parse@qh{#2}%
+ \ifx\bxjs@tmpb\relax
+ \setlength\@tempdima{#2}%
+ \xdef\bxjs@g@tmpa{\the\@tempdima}%
+ \else \global\let\bxjs@g@tmpa\bxjs@tmpb
+ \fi
+ \endgroup
+ #1=\bxjs@g@tmpa\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@parse@qh}
+% |#1| が |Q|/|H|/|trueQ|/|trueH|/|zw|/|zh| で終わる場合、
+% 単位用の寸法値マクロ |\bxjs@unit@XXX| が定義済なら、
+% |\bxjs@tmpb| に |#1| に等しい寸法の表現を返し、
+% そうでないならエラーを出す。
+% それ以外では、|\bxjs@tmpb| は |\relax| になる。
+% \Note {(u)\pLaTeX}の場合はこれらの和文単位はエンジンでサポートされる。
+% しかし和文フォントの設定が完了するまでは |zw|/|zh| の値は正しくない。
+% \begin{macrocode}
+\if j\jsEngine \def\bxjs@parse@qh@units{zw,zh}
+\else \def\bxjs@parse@qh@units{trueQ,trueH,Q,H,zw,zh}
+\fi
+\def\bxjs@parse@qh#1{%
+ \let\bxjs@tmpb\relax
+ \@for\bxjs@tmpa:=\bxjs@parse@qh@units\do{%
+ \ifx\bxjs@tmpb\relax
+ \edef\bxjs@next{{\bxjs@tmpa}{#1}}%
+ \expandafter\bxjs@parse@qh@a\csname bxjs@unit@\bxjs@tmpa\expandafter
+ \endcsname\bxjs@next
+ \fi}}
+\def\bxjs@parse@qh@a#1#2#3{%
+ \def\bxjs@next##1#2\@nil##2\@nnil{\bxjs@parse@qh@b{##1}{##2}#1}%
+ \bxjs@next#3\@nil#2\@nil\@nnil}
+\def\bxjs@parse@qh@b#1#2#3{%
+ \ifx\@nnil#2\@nnil\else
+ \ifx#3\relax
+ \ClassError\bxjs@clsname
+ {You cannot use '\bxjs@tmpa' here}{\@ehc}%
+ \def\bxjs@tmpb{0pt}%
+ \else
+ \@tempdimb#3\relax \@tempdimb#1\@tempdimb
+ \edef\bxjs@tmpb{\the\@tempdimb}%
+ \fi
+ \fi}
+% \end{macrocode}
+% 今の段階では |Q|/|H| だけが使用可能。
+% \begin{macrocode}
+ \def\bxjs@unit@Q{0.25mm}\let\bxjs@unit@H\bxjs@unit@Q
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@begin@document@hook}
+% BXJSクラス用の文書本体開始時フック。
+% \begin{macrocode}
+\@onlypreamble\bxjs@begin@document@hook
+\let\bxjs@begin@document@hook\@empty
+\AtBeginDocument{\bxjs@begin@document@hook}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@post@option@hook}
+% |\ProcessOptions| 直後に実行されるフック。
+% \begin{macrocode}
+\@onlypreamble\bxjs@post@option@hook
+\let\bxjs@post@option@hook\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@pre@jadriver@hook}
+% 和文ドライバ読込直前に実行されるフック。
+% \begin{macrocode}
+\@onlypreamble\bxjs@pre@jadriver@hook
+\let\bxjs@pre@jadriver@hook\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsAtEndOfClass}
+% このクラスの読込終了時に対するフック。
+% (補助パッケージ中で用いられる。)
+% \begin{macrocode}
+\def\jsAtEndOfClass{%
+ \expandafter\g@addto@macro\csname\bxjs@clsname.cls-h@@k\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% 一時的な手続き用の制御綴。
+% \begin{macrocode}
+\@onlypreamble\bxjs@tmpdo
+\@onlypreamble\bxjs@tmpdo@a
+\@onlypreamble\bxjs@tmpdo@b
+\@onlypreamble\bxjs@tmpdo@c
+\@onlypreamble\bxjs@tmpdo@d
+% \end{macrocode}
+%
+% Lua\TeX の場合、原版のコード中のコントロールワード中に現れる
+% 日本語文字のカテゴリコードを一時的に11に変更する。
+% クラス読込終了時点で元に戻される。
+% \Note 現在の{Lua\LaTeX}では、漢字のカテゴリコードは最初から11に
+% なっているので、この処理は特段の意味を持たない。
+% しかし、昔は12になっていて、この場合、日本語文字の
+% コントロールワードの命令を使用するには、カテゴリコードを11に
+% 変更する必要がある。
+% \begin{macrocode}
+\if l\jsEngine
+\def\bxjs@tmpdo#1{%
+ \xdef\bxjs@pre@jadriver@hook{%
+ \bxjs@pre@jadriver@hook
+ \catcode`#1=\the\catcode`#1\relax}%
+ \catcode`#1=11\relax}
+\@tfor\bxjs@tmpa:=和西暦\do
+ {\expandafter\bxjs@tmpdo\bxjs@tmpa}
+\fi
+% \end{macrocode}
+%
+% |\jsInhibitGlue| は |\inhibitglue| が定義されていればそれを
+% 実行し、未定義ならば何もしない。
+% \begin{macrocode}
+\bxjs@robust@def\jsInhibitGlue{%
+ \ifx\inhibitglue\@undefined\else \inhibitglue \fi}
+% \end{macrocode}
+%
+% 万が一「2.09互換モード」になっていた場合は、
+% これ以上進むと危険なので強制終了させる。
+% \begin{macrocode}
+\if@compatibility
+ \ClassError\bxjs@clsname
+ {Something went chaotic!\MessageBreak
+ (How come '\string\documentstyle' is there?)\MessageBreak
+ I cannot go a single step further...}
+ {If the chant of '\string\documentstyle' was just a blunder of yours,\MessageBreak
+ then there'll still be hope....}
+ \expandafter\@firstofone
+\else \expandafter\@gobble
+\fi{\typeout{Farewell!}\endinput\@@end}
+% \end{macrocode}
+%
+% \end{ZRnote}
+%
+% \section{オプション}
+%
+% これらのクラスは |\documentclass{jsarticle}|
+% あるいは |\documentclass[オプション]{jsarticle}|
+% のように呼び出します。
+%
+% まず,オプションに関連するいくつかのコマンドやスイッチ(論理変数)を定
+% 義します。
+%
+% \begin{macro}{\if@restonecol}
+%
+% 段組のときに真になる論理変数です。
+%
+% \begin{macrocode}
+\newif\if@restonecol
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@titlepage}
+%
+% これを真にすると表題,概要を独立したページに出力します。
+%
+% \begin{macrocode}
+\newif\if@titlepage
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openright}
+%
+% |\chapter|,|\part| を右ページ起こしにするかどうかです。
+% 横組の書籍では真が標準で,要するに片起こし,奇数ページ起こしになります。
+%
+% \begin{macrocode}
+%<book|report>\newif\if@openright
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openleft}
+%
+% [2017-02-24] |\chapter|,|\part| を左ページ起こしにするかどうかです。
+%
+% \begin{macrocode}
+%<book|report>\newif\if@openleft
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@mainmatter}
+%
+% 真なら本文,偽なら前付け・後付けです。
+% 偽なら |\chapter| で章番号が出ません。
+%
+% \begin{ZRnote}
+% BXJSではreport系でも定義されることに注意。
+% \end{ZRnote}
+% \begin{macrocode}
+%<book|report>\newif\if@mainmatter \@mainmattertrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@enablejfam}
+%
+% 和文フォントを数式フォントとして登録するかどうかを示すスイッチです。
+%
+% \begin{ZRnote}
+% JSクラスと異なり、初期値は偽とする。
+% \end{ZRnote}
+% \begin{macrocode}
+\newif\if@enablejfam \@enablejfamfalse
+% \end{macrocode}
+% \end{macro}
+%
+% 以下で各オプションを宣言します。
+%
+% \paragraph{用紙サイズ}
+%
+% JISやISOのA0判は面積 $1\,\mathrm{m}^2$,縦横比 $1:\sqrt{2}$
+% の長方形の辺の長さを mm 単位に切り捨てたものです。
+% これを基準として順に半截しては mm 単位に切り捨てたものがA1,A2,…です。
+%
+% B判はJISとISOで定義が異なります。
+% JISではB0判の面積が $1.5\,\mathrm{m}^2$ ですが,
+% ISOではB1判の辺の長さがA0判とA1判の辺の長さの幾何平均です。
+% したがってISOのB0判は $1000\,\mathrm{mm} \times 1414\,\mathrm{mm}$ です。
+% このため,\LaTeXe の \texttt{b5paper}
+% は $250\,\mathrm{mm} \times 176\,\mathrm{mm}$ ですが,
+% \pLaTeXe の \texttt{b5paper}
+% は $257\,\mathrm{mm} \times 182\,\mathrm{mm}$ になっています。
+% ここでは\pLaTeXe にならってJISに従いました。
+%
+% デフォルトは \texttt{a4paper} です。
+%
+% \texttt{b5var}(B5変形,182mm×230mm),
+% \texttt{a4var}(A4変形,210mm×283mm)を追加しました。
+%
+% \begin{ZRnote}
+% BXJSクラスではページレイアウト設定に |geometry| パッケージを用いる。
+% 用紙サイズ設定は |geometry| に渡すオプションの指定と扱われる。
+% \begin{macrocode}
+\@onlypreamble\bxjs@setpaper
+\def\bxjs@setpaper#1{\def\bxjs@param@paper{#1}}
+\DeclareOption{a3paper}{\bxjs@setpaper{a3paper}}
+\DeclareOption{a4paper}{\bxjs@setpaper{a4paper}}
+\DeclareOption{a5paper}{\bxjs@setpaper{a5paper}}
+\DeclareOption{a6paper}{\bxjs@setpaper{a6paper}}
+\DeclareOption{b4paper}{\bxjs@setpaper{{257truemm}{364truemm}}}
+\DeclareOption{b5paper}{\bxjs@setpaper{{182truemm}{257truemm}}}
+\DeclareOption{b6paper}{\bxjs@setpaper{{128truemm}{182truemm}}}
+\DeclareOption{a4j}{\bxjs@setpaper{a4paper}}
+\DeclareOption{a5j}{\bxjs@setpaper{a5paper}}
+\DeclareOption{b4j}{\bxjs@setpaper{{257truemm}{364truemm}}}
+\DeclareOption{b5j}{\bxjs@setpaper{{182truemm}{257truemm}}}
+\DeclareOption{a4var}{\bxjs@setpaper{{210truemm}{283truemm}}}
+\DeclareOption{b5var}{\bxjs@setpaper{{182truemm}{230truemm}}}
+% \end{macrocode}
+% \Note |...var| をPandocで使えるように後ろに |paper| をつけた形を用意する。
+% \begin{macrocode}
+\DeclareOption{a4varpaper}{\bxjs@setpaper{{210truemm}{283truemm}}}
+\DeclareOption{b5varpaper}{\bxjs@setpaper{{182truemm}{230truemm}}}
+\DeclareOption{letterpaper}{\bxjs@setpaper{letterpaper}}
+\DeclareOption{legalpaper}{\bxjs@setpaper{legalpaper}}
+\DeclareOption{executivepaper}{\bxjs@setpaper{executivepaper}}
+% \end{macrocode}
+% \end{ZRnote}
+%
+% \paragraph{横置き}
+%
+% 用紙の縦と横の長さを入れ換えます。
+%
+% \begin{macrocode}
+\newif\if@landscape
+\@landscapefalse
+\DeclareOption{landscape}{\@landscapetrue}
+% \end{macrocode}
+%
+% \paragraph{slide}
+%
+% オプション \texttt{slide} を新設しました。
+%
+% [2016-10-08] \texttt{slide} オプションは article 以外では使い物にならなかったので,
+% 簡単のため article のみで使えるオプションとしました。
+%
+% \begin{macrocode}
+\newif\if@slide
+% \end{macrocode}
+%
+% \begin{ZRnote}
+% BXJSではスライド用のクラス |bxjsslide| を用意しているので、
+% 本来はこのスイッチは不要なはずである。
+% しかし、JSクラスの一部のコードをそのまま使うために保持している。
+% \Note この |\if@slide| という制御綴は、ユニークでないにも関わらず、
+% 衝突した場合に正常動作が保たれない、という問題を抱えている。
+% \begin{macrocode}
+%<!slide>\@slidefalse
+%<slide>\@slidetrue
+% \end{macrocode}
+% \end{ZRnote}
+%
+% \paragraph{サイズオプション}
+%
+% 10pt,11pt,12pt のほかに,8pt,9pt,14pt,17pt,21pt,25pt,30pt,36pt,43pt を追加しました。
+% これは等比数列になるように選んだものです(従来の 20pt も残しました)。
+% |\@ptsize| の定義が変だったのでご迷惑をおかけしましたが,
+% 標準的なドキュメントクラスと同様にポイント数から10を引いたものに直しました。
+%
+% [2003-03-22] 14Qオプションを追加しました。
+%
+% [2003-04-18] 12Qオプションを追加しました。
+%
+% [2016-07-08] |\mag| を使わずに各種寸法をスケールさせるためのオプション \texttt{nomag} を新設しました。
+% \texttt{usemag} オプションの指定で従来通りの動作となります。デフォルトは \texttt{usemag} です。
+%
+% [2016-07-24] オプティカルサイズを調整するためにNFSSへパッチを当てるオプション \texttt{nomag*} を新設しました。
+%
+% \begin{ZRnote}
+% |\@ptsize| は |10pt|, |11pt|, |12pt| が指定された時のみ従来と同じ値とし、
+% それ以外は |\jsUnusualPtSize|(= $-20$)にする。
+%
+% \begin{macrocode}
+\newcommand{\@ptsize}{0}
+\def\bxjs@param@basefontsize{10pt}
+\def\jsUnusualPtSize{-20}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@setbasefontsize}
+% 基底フォントサイズを実際に変更する。
+% \begin{macrocode}
+\def\bxjs@setbasefontsize#1{%
+% \end{macrocode}
+% Q単位の長さ指定をサポートするため |\jsSetQHLength| を使う。
+% \Note クラスオプションのトークン列の中に展開可能なトークンが
+% ある場合、{\LaTeX}はクラスファイルの読込の前にそれを展開しようとする。
+% このため、この位置で |\jQ| をサポートすることは
+% 原理的に不可能である。
+% \begin{macrocode}
+ \jsSetQHLength\@tempdima{#1}%
+ \edef\bxjs@param@basefontsize{\the\@tempdima}%
+ \ifdim\@tempdima=10pt \long\def\@ptsize{0}%
+ \else\ifdim\@tempdima=10.95pt \long\def\@ptsize{1}%
+ \else\ifdim\@tempdima=12pt \long\def\@ptsize{2}%
+ \else \long\edef\@ptsize{\jsUnusualPtSize}\fi\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% |\ifjsc@mag| は「|\mag| を使うか」を表すスイッチ。
+%
+% |\ifjsc@mag@xreal| は「NFSSにパッチを当てるか」を表すスイッチ。
+% \begin{macrocode}
+\newif\ifjsc@mag
+\newif\ifjsc@mag@xreal
+%\let\jsc@magscale\@undefined
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareOption{8pt}{\bxjs@setbasefontsize{8pt}}
+\DeclareOption{9pt}{\bxjs@setbasefontsize{9pt}}
+\DeclareOption{10pt}{\bxjs@setbasefontsize{10pt}}
+\DeclareOption{11pt}{\bxjs@setbasefontsize{10.95pt}}
+\DeclareOption{12pt}{\bxjs@setbasefontsize{12pt}}
+\DeclareOption{14pt}{\bxjs@setbasefontsize{14.4pt}}
+\DeclareOption{17pt}{\bxjs@setbasefontsize{17.28pt}}
+\DeclareOption{20pt}{\bxjs@setbasefontsize{20pt}}
+\DeclareOption{21pt}{\bxjs@setbasefontsize{20.74pt}}
+\DeclareOption{25pt}{\bxjs@setbasefontsize{24.88pt}}
+\DeclareOption{30pt}{\bxjs@setbasefontsize{29.86pt}}
+\DeclareOption{36pt}{\bxjs@setbasefontsize{35.83pt}}
+\DeclareOption{43pt}{\bxjs@setbasefontsize{43pt}}
+\DeclareOption{12Q}{\bxjs@setjbasefontsize{3mm}}
+\DeclareOption{14Q}{\bxjs@setjbasefontsize{3.5mm}}
+\DeclareOption{10ptj}{\bxjs@setjbasefontsize{10pt}}
+\DeclareOption{10.5ptj}{\bxjs@setjbasefontsize{10.5pt}}
+\DeclareOption{11ptj}{\bxjs@setjbasefontsize{11pt}}
+\DeclareOption{12ptj}{\bxjs@setjbasefontsize{12pt}}
+% \end{macrocode}
+%
+% JSクラス互換のmagstyle設定オプション。
+% \begin{macrocode}
+\DeclareOption{usemag}{\let\bxjs@magstyle\bxjs@magstyle@usemag}
+\DeclareOption{nomag}{\let\bxjs@magstyle\bxjs@magstyle@nomag}
+\DeclareOption{nomag*}{\let\bxjs@magstyle\bxjs@magstyle@xreal}
+% \end{macrocode}
+%
+% \end{ZRnote}
+%
+% \paragraph{トンボオプション}
+%
+% トンボ(crop marks)を出力します。
+% 実際の処理は\pLaTeXe 本体で行います(\texttt{plcore.dtx} 参照)。
+% オプション \texttt{tombow} で日付付きのトンボ,
+% オプション \texttt{tombo} で日付なしのトンボを出力します。
+% これらはアスキー版のままです。
+% カウンタ |\hour|,|\minute| はp\LaTeXe 本体で宣言されています。
+%
+% \begin{ZRnote}
+% 取りあえず、{\pTeX}系の場合に限り、JSクラスのトンボ関連の
+% コードをそのまま活かしておく。
+% 正常に動作する保証はない。
+% \end{ZRnote}
+% \begin{macrocode}
+\if j\jsEngine
+\hour\time \divide\hour by 60\relax
+\@tempcnta\hour \multiply\@tempcnta 60\relax
+\minute\time \advance\minute-\@tempcnta
+\DeclareOption{tombow}{%
+ \tombowtrue \tombowdatetrue
+ \setlength{\@tombowwidth}{.1\p@}%
+ \@bannertoken{%
+ \jobname\space(\number\year-\two@digits\month-\two@digits\day
+ \space\two@digits\hour:\two@digits\minute)}%
+ \maketombowbox}
+\DeclareOption{tombo}{%
+ \tombowtrue \tombowdatefalse
+ \setlength{\@tombowwidth}{.1\p@}%
+ \maketombowbox}
+\fi
+% \end{macrocode}
+%
+% \paragraph{面付け}
+%
+% オプション \texttt{mentuke} で幅ゼロのトンボを出力します。
+% 面付けに便利です。これもアスキー版のままです。
+%
+% \begin{macrocode}
+\if j\jsEngine
+\DeclareOption{mentuke}{%
+ \tombowtrue \tombowdatefalse
+ \setlength{\@tombowwidth}{\z@}%
+ \maketombowbox}
+\fi
+% \end{macrocode}
+%
+% \paragraph{両面,片面オプション}
+%
+% \texttt{twoside} で奇数ページ・偶数ページのレイアウトが変わります。
+%
+% [2003-04-29] \texttt{vartwoside} でどちらのページも傍注が右側になります。
+%
+% \begin{macrocode}
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+\DeclareOption{vartwoside}{\@twosidetrue \@mparswitchfalse}
+% \end{macrocode}
+%
+% \paragraph{二段組}
+%
+% \texttt{twocolumn} で二段組になります。
+%
+% \begin{macrocode}
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+% \end{macrocode}
+%
+% \paragraph{表題ページ}
+%
+% \texttt{titlepage} で表題・概要を独立したページに出力します。
+%
+% \begin{macrocode}
+\DeclareOption{titlepage}{\@titlepagetrue}
+\DeclareOption{notitlepage}{\@titlepagefalse}
+% \end{macrocode}
+%
+% \paragraph{右左起こし}
+%
+% 書籍では章は通常は奇数ページ起こしになりますが,横組ではこれを
+% \texttt{openright} と表すことにしてあります。
+% \texttt{openany} で偶数ページからでも始まるようになります。
+%
+% [2017-02-24] \texttt{openright} は横組では奇数ページ起こし,縦組では
+% 偶数ページ起こしを表します。ややこしいですが,これは\LaTeX の標準クラスが
+% 西欧の横組事情しか考慮せずに,奇数ページ起こしと右起こしを一緒にしてしまっ
+% たせいです。縦組での奇数ページ起こしと横組での偶数ページ起こしも表現したい
+% ので,jsclassesでは新たに \texttt{openleft} も追加しました。
+%
+% \begin{macrocode}
+%<book|report>\DeclareOption{openright}{\@openrighttrue\@openleftfalse}
+%<book|report>\DeclareOption{openleft}{\@openlefttrue\@openrightfalse}
+%<book|report>\DeclareOption{openany}{\@openrightfalse\@openleftfalse}
+% \end{macrocode}
+%
+% \paragraph{eqnarray環境と数式の位置}
+%
+% 森本さんのご教示にしたがって前に移動しました。
+%
+% \begin{environment}{eqnarray}
+%
+% \LaTeX の |eqnarray| 環境では |&| でできるアキが大きすぎる
+% ようですので,少し小さくします。
+% また,中央の要素も |\displaystyle| にします。
+%
+% \begin{macrocode}
+\def\eqnarray{%
+ \stepcounter{equation}%
+ \def\@currentlabel{\p@equation\theequation}%
+ \global\@eqnswtrue
+ \m@th
+ \global\@eqcnt\z@
+ \tabskip\@centering
+ \let\\\@eqncr
+ $$\everycr{}\halign to\displaywidth\bgroup
+ \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
+ &\global\@eqcnt\@ne \hfil$\displaystyle{{}##{}}$\hfil
+ &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil\tabskip\@centering
+ &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
+ \tabskip\z@skip
+ \cr}
+% \end{macrocode}
+% \end{environment}
+%
+% \texttt{leqno} で数式番号が左側になります。
+% \texttt{fleqn} で数式が本文左端から一定距離のところに出力されます。
+% 森本さんにしたがって訂正しました。
+%
+% \begin{macrocode}
+\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{\input{fleqn.clo}%
+% fleqn用のeqnarray環境の再定義
+ \def\eqnarray{%
+ \stepcounter{equation}%
+ \def\@currentlabel{\p@equation\theequation}%
+ \global\@eqnswtrue\m@th
+ \global\@eqcnt\z@
+ \tabskip\mathindent
+ \let\\=\@eqncr
+ \setlength\abovedisplayskip{\topsep}%
+ \ifvmode
+ \addtolength\abovedisplayskip{\partopsep}%
+ \fi
+ \addtolength\abovedisplayskip{\parskip}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+ \setlength\belowdisplayshortskip{\abovedisplayskip}%
+ \setlength\abovedisplayshortskip{\abovedisplayskip}%
+ $$\everycr{}\halign to\linewidth% $$
+ \bgroup
+ \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
+ &\global\@eqcnt\@ne \hfil$\displaystyle{{}##{}}$\hfil
+ &\global\@eqcnt\tw@
+ $\displaystyle{##}$\hfil \tabskip\@centering
+ &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
+ \tabskip\z@skip\cr
+ }}
+% \end{macrocode}
+%
+% \paragraph{文献リスト}
+%
+% 文献リストをopen形式(著者名や書名の後に改行が入る)で出力します。
+% これは使われることはないのでコメントアウトしてあります。
+%
+% \begin{macrocode}
+% \DeclareOption{openbib}{%
+% \AtEndOfPackage{%
+% \renewcommand\@openbib@code{%
+% \advance\leftmargin\bibindent
+% \itemindent -\bibindent
+% \listparindent \itemindent
+% \parsep \z@}%
+% \renewcommand\newblock{\par}}}
+% \end{macrocode}
+%
+% \paragraph{数式フォントとして和文フォントを登録しないオプション}
+%
+% 数式中では16通りのフォントしか使えません。
+% AMSFontsや \texttt{mathptmx} パッケージを使って数式フォントを
+% たくさん使うと ``Too many math alphabets \ldots'' というエラーが
+% 起こってしまいます。\texttt{disablejfam} オプションを付ければ,
+% 明朝・ゴシックを数式用フォントとして登録するのをやめますので,
+% 数式用フォントが二つ節約できます。
+% いずれにしても |\textmc| や |\mbox| や \texttt{amsmath}
+% パッケージの |\text| を使えば数式中で和文フォントが使えますので,
+% この新ドキュメントクラスでは標準で和文フォントを数式用に登録
+% しないことにしていたのですが,従来のドキュメントクラスの仕様に
+% 合わせることにしました。
+%
+% \begin{ZRnote}
+% \begin{macro}{\bxjs@enablejfam}
+% 〔暗黙文字トークン〕
+% |enablejfam| オプションの状態:
+% \begin{macrocode}
+%\let\bxjs@enablejfam\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% |enablejfam| オプションの処理。
+% \begin{macrocode}
+\def\bxjs@kv@enablejfam@true{\let\bxjs@enablejfam=t}
+\def\bxjs@kv@enablejfam@false{\let\bxjs@enablejfam=f}
+\def\bxjs@kv@enablejfam@default{\let\bxjs@enablejfam\@undefined}
+\define@key{bxjs}{enablejfam}[true]{%
+ \bxjs@set@keyval{enablejfam}{#1}{}}
+% \end{macrocode}
+%
+% JSクラスとの互換のため |disablejfam| オプションを定義する。
+% \begin{macrocode}
+\DeclareOption{disablejfam}{\let\bxjs@enablejfam=f}
+% \end{macrocode}
+%
+% \Note 実際に何らかの設定を行うのは和文ドライバである。
+% 和文ドライバとエンジンの組合せにより、|enablejfam| が |default| である
+% 場合に「数式和文ファミリ」が有効と無効の選択は異なるし、またそもそも
+% 有効と無効の一方しか選択できない場合もある。
+%
+% \end{ZRnote}
+%
+% \paragraph{ドラフト}
+%
+% \texttt{draft} でoverfull boxの起きた行末に5ptの罫線を引きます。
+%
+% [2016-07-13] |\ifdraft| を定義するのをやめました。
+%
+% \begin{ZRnote}
+% \begin{macro}{\ifjsDraft}
+% JSクラスは |\ifdraft| という公開名のスイッチを用いているが、
+% これは |ifdraft| パッケージと衝突するので、代わりに |\ifjsDraft|
+% の名前を用い、本文開始時に |\ifdraft| が未定義の場合に限り、
+% |\ifjsDraft| を |\ifdraft| にコピーする処理にする。
+% \Note JSクラスの |\ifdraft| が廃止されたので、
+% |\ifdraft| は2.0版で廃止を予定する。
+% \begin{macrocode}
+\let\ifjsDraft\iffalse
+\@onlypreamble\bxjs@draft
+\def\bxjs@draft#1{%
+ \expandafter\let\expandafter\ifjsDraft\csname if#1\endcsname}
+\DeclareOption{draft}{\bxjs@draft{true}\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\bxjs@draft{false}\setlength\overfullrule{0pt}}
+\g@addto@macro\bxjs@begin@document@hook{%
+ \expandafter\ifx\csname ifdraft\endcsname\relax
+ \expandafter\let\csname ifdraft\expandafter\endcsname
+ \csname ifjsDraft\endcsname
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{ZRnote}
+%
+% \paragraph{和文フォントメトリックの選択}
+%
+% このクラスファイルでは,和文TFMとして東京書籍印刷の小林肇さんの
+% 作られたJISフォントメトリック(\texttt{jis},\texttt{jisg})
+% を標準で使うことにしますが,
+% 従来の \texttt{min10},\texttt{goth10} などを使いたいときは
+% \texttt{mingoth} というオプションを指定します。
+% また,\texttt{winjis} オプションで \texttt{winjis} メトリック
+% (OTFパッケージと同じpsitauさん作;ソースに書かれたWindowsの
+% 機種依存文字がdvips, dvipdfmxなどで出力出来るようになる)が使えます。
+%
+% [2018-02-04] \texttt{winjis} オプションはコッソリ削除しました。
+% 代替として,同等なものをパッケージ化(winjis.sty)して,
+% GitHubにはコッソリ置いておきます。
+%
+% \begin{ZRnote}
+% BXJSクラスではここは和文ドライバの管轄。
+% \end{ZRnote}
+%
+% \paragraph{papersizeスペシャルの利用}
+%
+% dvipsやdvioutで用紙設定を自動化するには
+% オプション \texttt{papersize} を与えます。
+%
+% \begin{ZRnote}
+% BXJSクラスでは |geometry| パッケージがこの処理を行う。
+%
+% \begin{macro}{\ifbxjs@papersize}
+% 〔スイッチ〕 papersizeスペシャルを出力するか。
+% 既定で有効であるが、|nopapersize| オプションで無効にできる。
+% \Note JSクラスでは |\ifpapersize| という制御綴だが、これは採用しない。
+% \begin{macrocode}
+\newif\ifbxjs@papersize
+\bxjs@papersizetrue
+\DeclareOption{nopapersize}{\bxjs@papersizefalse}
+\DeclareOption{papersize}{\bxjs@papersizetrue}
+% \end{macrocode}
+% \end{macro}
+% \end{ZRnote}
+%
+% \paragraph{英語化}
+%
+% オプション \texttt{english} を新設しました。
+%
+% \begin{ZRnote}
+% \Note |\if@english| は非ユニークで衝突耐性がない。
+% \end{ZRnote}
+%
+% \begin{macrocode}
+\newif\if@english
+\@englishfalse
+\DeclareOption{english}{\@englishtrue}
+% \end{macrocode}
+%
+% \paragraph{jsbookをjsreportもどきに}
+%
+% オプション \texttt{report} を新設しました。
+%
+% [2017-02-13] 従来は「jsreport相当」をjsbookの \texttt{report} オプションで提供して
+% いましたが,新しくjsreportクラスも作りました。どちらでもお好きな方を使ってください。
+%
+% \begin{ZRnote}
+% BXJSでは当初から |bxjsreport| クラスが用意されている。
+% \end{ZRnote}
+%
+% \paragraph{\texttt{jslogo}パッケージの読み込み}
+%
+% \LaTeX 関連のロゴを再定義する\texttt{jslogo}パッケージを
+% 読み込まないオプション\texttt{nojslogo}を新設しました。
+% \texttt{jslogo}オプションの指定で従来どおりの動作となります。
+% デフォルトは\texttt{jslogo}で,すなわちパッケージを読み込みます。
+%
+% \begin{ZRnote}
+% BXJSクラスでは、|nojslogo| を既定とする。
+% \end{ZRnote}
+% \begin{macrocode}
+\newif\if@jslogo \@jslogofalse
+\DeclareOption{jslogo}{\@jslogotrue}
+\DeclareOption{nojslogo}{\@jslogofalse}
+% \end{macrocode}
+%
+% \paragraph{複合設定オプション \ZRX}
+% \mbox{}
+% \TODO |\bxjs@invscale| を書く場所を決める。
+% (JSクラスと同じにはできなそう。)
+% \begin{macro}{\bxjs@invscale}
+% |\bxjs@invscale| は{\TeX}における「長さのスケール」の逆関数を求めるもの。
+% 例えば |\bxjs@invscale\dimX{1.3}| は |\dimX=1.3\dimX| の
+% 逆の演算を行う。
+% \Note 局所化の |\begingroup|~|\endgroup| について、
+% 以前は |\group|~|\egroup| を使っていたが、これだと数式モード中では
+% 空のサブ数式を生み出してしまうため修正した。
+% \Note 元の長さが128\,pt以上の場合でも動作するように修正した。
+% \begin{macrocode}
+\mathchardef\bxjs@isc@ll=128
+\mathchardef\bxjs@isc@sl=259
+\def\bxjs@isc@sl@h{65539 }
+\def\bxjs@invscale#1#2{%
+ \begingroup \@tempdima=#1\relax \@tempdimb#2\p@\relax
+ \ifdim\@tempdima<\bxjs@isc@ll\p@
+ \@tempcnta\@tempdima \multiply\@tempcnta\@cclvi
+ \divide\@tempcnta\@tempdimb \multiply\@tempcnta\@cclvi
+ \else
+ \@tempcnta\@tempdima \divide\@tempcnta\@tempdimb
+ \multiply\@tempcnta\p@ \let\bxjs@isc@sl\bxjs@isc@sl@h
+ \fi
+ \@tempcntb\p@ \divide\@tempcntb\@tempdimb
+ \advance\@tempcnta-\@tempcntb \advance\@tempcnta-\tw@
+ \@tempdimb\@tempcnta\@ne
+ \advance\@tempcnta\@tempcntb \advance\@tempcnta\@tempcntb
+ \advance\@tempcnta\bxjs@isc@sl \@tempdimc\@tempcnta\@ne
+ \@whiledim\@tempdimb<\@tempdimc\do{%
+ \@tempcntb\@tempdimb \advance\@tempcntb\@tempdimc
+ \advance\@tempcntb\@ne \divide\@tempcntb\tw@
+ \ifdim #2\@tempcntb>\@tempdima
+ \advance\@tempcntb\m@ne \@tempdimc=\@tempcntb\@ne
+ \else \@tempdimb=\@tempcntb\@ne \fi}%
+ \xdef\bxjs@gtmpa{\the\@tempdimb}%
+ \endgroup #1=\bxjs@gtmpa\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{ZRnote}
+% 複合設定オプションとは、
+% 「エンジンやドライバや和文ドライバの設定を含む、
+% 複数の設定を一度に行うオプション」
+% のことである。
+% ある特定の設定を短く書く必要性が高いと判断される場合に
+% 用意される。
+%
+% |pandoc| オプションは、Pandocで{\LaTeX}用の既定テンプレートを
+% 用いて他形式から{\LaTeX}(およびPDF)形式に変換する用途に
+% 最適化した設定を与える。
+% \begin{macrocode}
+\DeclareOption{pandoc}{%
+% \end{macrocode}
+% 和文ドライバを |pandoc| に、エンジン指定を |autodetect-engine| に
+% 変更する。
+% \Note 実際の和文ドライバ・エンジン設定より優先される。
+% \begin{macrocode}
+ \g@addto@macro\bxjs@post@option@hook{%
+ \bxjs@oldfontcommandstrue
+ \setkeys{bxjs}{ja=pandoc}%
+ \let\bxjs@engine@given=*}%
+% \end{macrocode}
+% ドライバオプションを |dvi=dvipdfmx| 相当に変更する。
+% \Note これは実際のドライバ設定で上書きできる
+% (オプション宣言順に注意)。
+% \TODO できない気がする…。
+% \begin{macrocode}
+ \def\bxjs@driver@opt{dvipdfmx}%
+ \bxjs@dvi@opttrue}
+% \end{macrocode}
+%
+% \end{ZRnote}
+%
+% \paragraph{エンジン・ドライバオプション \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+% \begin{macro}{\bxjs@engine@given}
+% オプションで明示されたエンジンの種別。
+% \begin{macrocode}
+%\let\bxjs@engine@given\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@engine@opt}
+% 明示されたエンジンのオプション名。
+% \begin{macrocode}
+%\let\bxjs@engine@opt\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% エンジン明示指定のオプションの処理。
+% \Note 0.9pre版の暫定仕様と異なり、エンジン名は |...latex|
+% に限定する。
+% |xetex| や |pdftex| は一般的な{\LaTeX}の慣習に従って
+% 「ドライバの指定」とみなすべきだから。
+%
+% \begin{macrocode}
+\DeclareOption{autodetect-engine}{%
+ \let\bxjs@engine@given=*}
+\DeclareOption{latex}{%
+ \def\bxjs@engine@opt{latex}%
+ \let\bxjs@engine@given=n}
+\DeclareOption{platex}{%
+ \def\bxjs@engine@opt{platex}%
+ \let\bxjs@engine@given=j}
+\DeclareOption{uplatex}{%
+ \def\bxjs@engine@opt{uplatex}%
+ \let\bxjs@engine@given=u}
+\DeclareOption{xelatex}{%
+ \def\bxjs@engine@opt{xelatex}%
+ \let\bxjs@engine@given=x}
+\DeclareOption{pdflatex}{%
+ \def\bxjs@engine@opt{pdflatex}%
+ \let\bxjs@engine@given=p}
+\DeclareOption{lualatex}{%
+ \def\bxjs@engine@opt{lualatex}%
+ \let\bxjs@engine@given=l}
+\DeclareOption{platex-ng}{%
+ \def\bxjs@engine@opt{platex-ng}%
+ \let\bxjs@engine@given=g}
+\DeclareOption{platex-ng*}{%
+ \def\bxjs@engine@opt{platex-ng*}%
+ \let\bxjs@platexng@nodrv=t%
+ \let\bxjs@engine@given=g}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@driver@given}
+% オプションで明示されたドライバの種別。
+% \begin{macrocode}
+%\let\bxjs@driver@given\@undefined
+\let\bxjs@driver@@dvimode=0
+\let\bxjs@driver@@dvipdfmx=1
+\let\bxjs@driver@@pdfmode=2
+\let\bxjs@driver@@xetex=3
+\let\bxjs@driver@@dvips=4
+\let\bxjs@driver@@none=5
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@driver@opt}
+% 明示された「ドライバ指定」のオプション名。
+% \begin{macrocode}
+%\let\bxjs@driver@opt\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\DeclareOption{dvips}{%
+ \def\bxjs@driver@opt{dvips}%
+ \let\bxjs@driver@given\bxjs@driver@@dvips}
+\DeclareOption{dviout}{%
+ \def\bxjs@driver@opt{dviout}%
+ \let\bxjs@driver@given\bxjs@driver@@dvimode}
+\DeclareOption{xdvi}{%
+ \def\bxjs@driver@opt{xdvi}%
+ \let\bxjs@driver@given\bxjs@driver@@dvimode}
+\DeclareOption{dvipdfmx}{%
+ \def\bxjs@driver@opt{dvipdfmx}%
+ \let\bxjs@driver@given\bxjs@driver@@dvipdfmx}
+\DeclareOption{nodvidriver}{%
+ \def\bxjs@driver@opt{nodvidriver}%
+ \let\bxjs@driver@given\bxjs@driver@@none}
+\DeclareOption{pdftex}{%
+ \def\bxjs@driver@opt{pdftex}%
+ \let\bxjs@driver@given\bxjs@driver@@pdfmode}
+\DeclareOption{luatex}{%
+ \def\bxjs@driver@opt{luatex}%
+ \let\bxjs@driver@given\bxjs@driver@@pdfmode}
+\DeclareOption{xetex}{%
+ \def\bxjs@driver@opt{xetex}%
+ \let\bxjs@driver@given\bxjs@driver@@xetex}
+% \end{macrocode}
+%
+% 「もしDVIモードであればドライバを |dvipdfmx| にする」
+% というオプション。
+% \Note 1.2版で |dvi| オプションが新設されたが、互換性のため
+% このオプションも残す。
+% \begin{macrocode}
+\DeclareOption{dvipdfmx-if-dvi}{%
+ \setkeys{bxjs}{dvi=dvipdfmx}}
+% \end{macrocode}
+%
+% \end{ZRnote}
+%
+% \paragraph{その他のBXJS独自オプション \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+% \TODO 互換用オプションを分離する(2.0版で?)。
+% \begin{macro}{\ifbxjs@bigcode}
+% {\upTeX}で有効化するToUnicode CMapとして
+% 「|UTF8-UCS2|」の代わりに「|UTF8-UTF16|」を使うか。
+% BMP外の文字に対応できる「|UTF8-UTF16|」の方が望ましいのであるが、
+% このファイルが利用可能かの確実な判定が困難であるため、
+% オプションで指定することとする。
+% \begin{macrocode}
+\newif\ifbxjs@bigcode \bxjs@bigcodefalse
+% \end{macrocode}
+% その上で、「{\TeX}環境がある程度新しければ利用可能であろう」
+% と判断し |bxjs@bigcode| の既定値を真とする。
+% 具体的な判断基準として、
+% 「{\TeX}のバージョンが3.14159265(2014年1月)以上であるか」
+% を採用する。
+% \begin{macrocode}
+\edef\bxjs@tmpa{\expandafter\noexpand\csname\endcsname}
+\def\bxjs@tmpb#1 #2#3\@nil{%
+ \ifx1#2\bxjs@bigcodetrue \fi}
+\expandafter\bxjs@tmpb\meaning\bxjs@tmpa1 0\@nil
+% \end{macrocode}
+% \end{macro}
+%
+% |nobigcode|/|bigcode| オプションの定義。
+% \begin{macrocode}
+\DeclareOption{nobigcode}{%
+ \bxjs@bigcodefalse}
+\DeclareOption{bigcode}{%
+ \bxjs@bigcodetrue}
+% \end{macrocode}
+%
+% \begin{macro}{\ifbxjs@oldfontcommands}
+% |\allowoldfontcommands| を既定で有効にするか。
+% \begin{macrocode}
+\newif\ifbxjs@oldfontcommands
+% \end{macrocode}
+% \end{macro}
+%
+% |nooldfontcommands|、|oldfontcommands| オプションの定義。
+% \Note |oldfontcommands| オプションの名前は\Pkg{memoir}クラスに倣った。
+% ちなみに\Pkg{KOMA-Script}では |enabledeprecatedfontcommands| であるが
+% これはチョットアレなので避けた。
+% \begin{macrocode}
+\DeclareOption{nooldfontcommands}{%
+ \bxjs@oldfontcommandsfalse}
+\DeclareOption{oldfontcommands}{%
+ \bxjs@oldfontcommandstrue}
+% \end{macrocode}
+%
+% \end{ZRnote}
+%
+% \paragraph{keyval型のオプション \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+% その他のオプションは |keyval| の機構を用いて処理する。
+% \begin{macrocode}
+\DeclareOption*{%
+ \def\bxjs@next{\bxjs@safe@setkeys{bxjs}}%
+ \expandafter\bxjs@next\expandafter{\CurrentOption}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@safe@setkeys}
+% 未知のキーに対してエラー無しで無視する |\setkeys|。
+% \Note ネスト不可。
+% \begin{macrocode}
+\def\bxjs@safe@setkeys#1#2{%
+ \let\bxjs@save@KV@errx\KV@errx \let\KV@errx\@gobble
+ \setkeys{#1}{#2}%
+ \let\KV@errx\bxjs@save@KV@errx}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@declare@enum@option}
+% |\bxjs@declare@enum@option{|\Meta{オプション名}|}{|\Meta{enum名}|}|\par
+% “\Meta{オプション名}|=|\Meta{値}”のオプション指定に対して、
+% |\|[|bxjs@|\Meta{enum名}] を |\|[|bxjs@|\Meta{enum名}|@@|\Meta{値}] に
+% 等値する(後者の制御綴が未定義の場合はエラー)、という動作を規定する。
+% \begin{macrocode}
+\@onlypreamble\bxjs@declare@enum@option
+\def\bxjs@declare@enum@option#1#2{%
+ \define@key{bxjs}{#1}{%
+ \expandafter\ifx\csname bxjs@#2@@##1\endcsname\relax
+ \bxjs@error@keyval{#1}{##1}%
+ \else \bxjs@csletcs{bxjs@#2}{bxjs@#2@@##1}%
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@declare@bool@option}
+% |\bxjs@declare@bool@option{|\Meta{オプション名}|}{|\Meta{スイッチ名}|}|\par
+% “\Meta{オプション名}|=|\Meta{真偽値}”のオプション指定に対して、
+% |\if|[|bxjs@|\Meta{スイッチ名}] を設定する、という動作を規定する。
+% \begin{macrocode}
+\@onlypreamble\bxjs@declare@bool@option
+\def\bxjs@declare@bool@option#1#2{%
+ \define@key{bxjs}{#1}[true]{%
+ \expandafter\ifx\csname bxjs@#2##1\endcsname\relax
+ \bxjs@error@keyval{#1}{##1}%
+ \else \@nameuse{bxjs@#2##1}%
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@set@keyval}
+% |\bxjs@set@keyval{|\meta{key}|}{|\meta{value}|}{|\meta{error}|}|\par
+% |\bxjs@kv@|\meta{key}|@|\meta{value} が定義済ならそれを実行し、
+% 未定義ならエラーを出す。
+% \begin{macrocode}
+\def\bxjs@set@keyval#1#2#3{%
+ \expandafter\let\expandafter\bxjs@next\csname bxjs@kv@#1@#2\endcsname
+ \ifx\bxjs@next\relax
+ \bxjs@error@keyval{#1}{#2}%
+ #3%
+ \else \bxjs@next
+ \fi}
+\@onlypreamble\bxjs@error@keyval
+\def\bxjs@error@keyval#1#2{%
+ \ClassError\bxjs@clsname
+ {Invalid value '#2' for option #1}\@ehc}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsScale}
+% 〔実数値マクロ〕
+% 和文スケール値。
+% \begin{macrocode}
+\def\jsScale{0.924715}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@base@opt}
+% 明示された |base| オプションの値。
+% \begin{macrocode}
+%\let\bxjs@base@opt\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% |base| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjs}{base}{%
+ \edef\bxjs@base@opt{#1}%
+ \bxjs@setbasefontsize{#1}}
+\define@key{bxjs}{fontsize}{\setkeys{bxjs}{base=#1}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@jbase@opt}
+% 明示された |jbase| オプションの値。
+% \begin{macrocode}
+%\let\bxjs@jbase@opt\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% |jbase| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjs}{jbase}{\edef\bxjs@jbase@opt{#1}}
+\define@key{bxjs}{jafontsize}{\setkeys{bxjs}{jbase=#1}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@scale@opt}
+% 明示された |scale| オプションの値。
+% \begin{macrocode}
+%\let\bxjs@scale@opt\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% |scale| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjs}{scale}{%
+ \edef\bxjs@scale@opt{#1}%
+ \let\jsScale\bxjs@scale@opt}
+\define@key{bxjs}{jafontscale}{\setkeys{bxjs}{scale=#1}}
+% \end{macrocode}
+%
+% |noscale| オプションの処理。
+% \begin{macrocode}
+\DeclareOption{noscale}{\setkeys{bxjs}{scale=1}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@param@mag}
+% |mag| オプションの値。
+% \begin{macrocode}
+\let\bxjs@param@mag\relax
+% \end{macrocode}
+% \end{macro}
+%
+% |mag| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjs}{mag}{\edef\bxjs@param@mag{#1}}
+% \end{macrocode}
+%
+% |paper| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjs}{paper}{\edef\bxjs@param@paper{#1}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@jadriver}
+% 和文ドライバの名前。
+% \begin{macrocode}
+\let\bxjs@jadriver\relax
+%\let\bxjs@jadriver@opt\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% |ja| オプションの処理。
+% \Note |jadriver| は0.9版で用いられた旧称。
+% \Note 単なる |ja| という指定は無視される(Pandoc 対策)。
+% \begin{macrocode}
+\define@key{bxjs}{jadriver}{\edef\bxjs@jadriver@opt{#1}}
+\define@key{bxjs}{ja}[\relax]{%
+ \ifx\relax#1\else\edef\bxjs@jadriver@opt{#1}\fi}
+% \end{macrocode}
+%
+% \begin{macro}{\jsJaFont}
+% 和文フォント設定の名前。
+% \begin{macrocode}
+\let\jsJaFont\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% |jafont| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjs}{jafont}{\edef\jsJaFont{#1}}
+% \end{macrocode}
+%
+% \begin{macro}{\jsJaParam}
+% 和文ドライバパラメタの文字列。
+% \begin{macrocode}
+\let\jsJaParam\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% |japaram| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjs}{japaram}{\edef\jsJaParam{#1}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@magstyle}
+% magstyle設定値。(古いイマイチな名前。)
+% \begin{macrocode}
+\let\bxjs@magstyle@mag=m
+\let\bxjs@magstyle@real=r
+\let\bxjs@magstyle@xreal=x
+% \end{macrocode}
+% (新しい素敵な名前。)
+% \Note ただし制御綴としては、|*|付の名前は扱い難いので、|\bxjs@magstyle@xreal|
+% の方を優先させる。
+% \begin{macrocode}
+\let\bxjs@magstyle@usemag\bxjs@magstyle@mag
+\let\bxjs@magstyle@nomag\bxjs@magstyle@real
+\expandafter\let\csname bxjs@magstyle@nomag*\endcsname\bxjs@magstyle@xreal
+% \end{macrocode}
+% |\bxjs@magstyle@default| は既定の値を表す。
+% \begin{macrocode}
+\let\bxjs@magstyle@default\bxjs@magstyle@usemag
+\ifx l\jsEngine \ifnum\luatexversion>86
+ \let\bxjs@magstyle@default\bxjs@magstyle@xreal
+\fi\fi
+\ifjsWithpTeXng
+ \let\bxjs@magstyle@default\bxjs@magstyle@xreal
+\fi
+\let\bxjs@magstyle\bxjs@magstyle@default
+% \end{macrocode}
+% \end{macro}
+%
+% |magstyle| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjs}{magstyle}{%
+ \expandafter\let\expandafter\bxjs@magstyle\csname
+ bxjs@magstyle@#1\endcsname
+ \ifx\bxjs@magstyle\relax
+ \ClassError\bxjs@clsname
+ {Invalid value '#1' for option magstyle}\@ehc
+ \let\bxjs@magstyle\bxjs@magstyle@default
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@geometry}
+% |geometry| オプションの値。
+% \begin{macrocode}
+\let\bxjs@geometry@class=c
+\let\bxjs@geometry@user=u
+\let\bxjs@geometry\bxjs@geometry@class
+% \end{macrocode}
+% \end{macro}
+%
+% |geometry| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjs}{geometry}{%
+ \expandafter\let\expandafter\bxjs@geometry\csname
+ bxjs@geometry@#1\endcsname
+ \ifx\bxjs@geometry\relax
+ \ClassError\bxjs@clsname
+ {Invalid value '#1' for option geometry}\@ehc
+ \let\bxjs@geometry\bxjs@geometry@class
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\ifbxjs@fancyhdr}
+% 〔スイッチ〕
+% |fancyhdr| パッケージに対する調整を行うか。
+% \begin{macrocode}
+\newif\ifbxjs@fancyhdr \bxjs@fancyhdrtrue
+% \end{macrocode}
+% \end{macro}
+%
+% |fancyhdr| オプションの処理。
+% \begin{macrocode}
+\let\bxjs@kv@fancyhdr@true\bxjs@fancyhdrtrue
+\let\bxjs@kv@fancyhdr@false\bxjs@fancyhdrfalse
+\define@key{bxjs}{fancyhdr}[true]{%
+ \bxjs@set@keyval{fancyhdr}{#1}{}}
+% \end{macrocode}
+%
+% \begin{macro}{\ifbxjs@dvi@opt}
+% |dvi| オプションが指定されたか。
+% \begin{macrocode}
+\newif\ifbxjs@dvi@opt
+% \end{macrocode}
+% \end{macro}
+%
+% DVIモードのドライバとドライバ種別との対応。
+% \begin{macrocode}
+\let\bxjs@dvidriver@@dvipdfmx=\bxjs@driver@@dvipdfmx
+\let\bxjs@dvidriver@@dvips=\bxjs@driver@@dvips
+\let\bxjs@dvidriver@@dviout=\bxjs@driver@@dvimode
+\let\bxjs@dvidriver@@xdvi=\bxjs@driver@@dvimode
+\let\bxjs@dvidriver@@nodvidriver=\bxjs@driver@@none
+% \end{macrocode}
+%
+% |dvi| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjs}{dvi}{%
+ \expandafter\let\expandafter\bxjs@tmpa\csname
+ bxjs@dvidriver@@#1\endcsname
+ \ifx\bxjs@tmpa\relax
+ \ClassError\bxjs@clsname
+ {Invalid value '#1' for option dvi}\@ehc
+ \else
+% \end{macrocode}
+% |\bxjs@driver@given| を未定義にしていることに注意。
+% \begin{macrocode}
+ \def\bxjs@driver@opt{#1}%
+ \let\bxjs@driver@given\@undefined
+ \bxjs@dvi@opttrue
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\ifbxjs@layout@buggyhmargin}
+% 〔スイッチ〕
+% |bxjsbook| の左右マージンがアレか。
+% \Note |layout| が |v1| の場合はアレになる。
+% \begin{macrocode}
+\newif\ifbxjs@layout@buggyhmargin
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@force@chapterabstract}
+% 〔スイッチ〕
+% abstract環境をchapterabstractにするか。
+% \Note |bxjsbook| では常に真。
+% |bxjsreport| では |layout| が |v1| の場合に真になる。
+% \begin{macrocode}
+\newif\ifbxjs@force@chapterabstract
+%<book>\bxjs@force@chapterabstracttrue
+% \end{macrocode}
+% \end{macro}
+%
+% |layout| オプションの処理。
+% \begin{macrocode}
+\@namedef{bxjs@kv@layout@v1}{%
+%<book>\bxjs@layout@buggyhmargintrue
+%<report>\bxjs@force@chapterabstracttrue
+}
+\@namedef{bxjs@kv@layout@v2}{%
+%<book>\bxjs@layout@buggyhmarginfalse
+%<report>\bxjs@force@chapterabstractfalse
+}
+\define@key{bxjs}{layout}{%
+ \bxjs@set@keyval{layout}{#1}{}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@textwidth@limit}
+% |textwidth-limit| の指定値。
+% \begin{macrocode}
+%\let\bxjs@textwidth@limit@opt\@undefined
+\define@key{bxjs}{textwidth-limit}{%
+ \edef\bxjs@textwidth@limit@opt{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@textwidth@opt}
+% |textwidth| の指定値。
+% \begin{macrocode}
+%\let\bxjs@textwidth@opt\@undefined
+\define@key{bxjs}{textwidth}{\edef\bxjs@textwidth@opt{#1}}
+\define@key{bxjs}{line_length}{\setkeys{bxjs}{textwidth=#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@number@of@lines@opt}
+% |number-of-lines| の指定値。
+% \begin{macrocode}
+%\let\bxjs@number@of@lines@opt\@undefined
+\define@key{bxjs}{number-of-lines}{\edef\bxjs@number@of@lines@opt{#1}}
+\define@key{bxjs}{number_of_lines}{\setkeys{bxjs}{number-of-lines=#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@paragraph@mark}
+% |paragraph-mark| の指定値。
+% パラグラフのマーク。
+% \begin{macrocode}
+%\let\bxjs@paragraph@mark\@undefined
+\define@key{bxjs}{paragraph-mark}{%
+ \edef\bxjs@paragraph@mark{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@whole@zw@lines}
+% 〔スイッチ〕 |whole-zw-lines| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@whole@zw@lines \bxjs@whole@zw@linestrue
+\let\bxjs@kv@wholezwlines@true\bxjs@whole@zw@linestrue
+\let\bxjs@kv@wholezwlines@false\bxjs@whole@zw@linesfalse
+\define@key{bxjs}{whole-zw-lines}[true]{\bxjs@set@keyval{wholezwlines}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@jaspace@cmd}
+% 〔スイッチ〕 |jaspace-cmd| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@jaspace@cmd \bxjs@jaspace@cmdtrue
+\let\bxjs@kv@jaspacecmd@true\bxjs@jaspace@cmdtrue
+\let\bxjs@kv@jaspacecmd@false\bxjs@jaspace@cmdfalse
+\define@key{bxjs}{jaspace-cmd}[true]{\bxjs@set@keyval{jaspacecmd}{#1}{}}
+\define@key{bxjs}{xkanjiskip-cmd}[true]{\bxjs@set@keyval{jaspacecmd}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@fix@at@cmd}
+% 〔スイッチ〕 |fix-at-cmd| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@fix@at@cmd \bxjs@fix@at@cmdtrue
+\let\bxjs@kv@fixatcmd@true\bxjs@fix@at@cmdtrue
+\let\bxjs@kv@fixatcmd@false\bxjs@fix@at@cmdfalse
+\define@key{bxjs}{fix-at-cmd}[true]{\bxjs@set@keyval{fixatcmd}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@hyperref@enc}
+% 〔スイッチ〕 |hyperref-enc| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@hyperref@enc \bxjs@hyperref@enctrue
+\let\bxjs@kv@hyperrefenc@true\bxjs@hyperref@enctrue
+\let\bxjs@kv@hyperrefenc@false\bxjs@hyperref@encfalse
+\define@key{bxjs}{hyperref-enc}[true]{\bxjs@set@keyval{hyperrefenc}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@everyparhook}
+% |everyparhook| の指定値。
+% \begin{macrocode}
+\chardef\bxjs@everyparhook@none=0
+\chardef\bxjs@everyparhook@compat=1
+\chardef\bxjs@everyparhook@modern=2
+\if j\jsEngine
+ \let\bxjs@everyparhook\bxjs@everyparhook@compat
+\else
+ \let\bxjs@everyparhook\bxjs@everyparhook@modern
+\fi
+\def\bxjs@kv@everyparhook@none{\let\bxjs@everyparhook\bxjs@everyparhook@none}
+\def\bxjs@kv@everyparhook@compat{\let\bxjs@everyparhook\bxjs@everyparhook@compat}
+\def\bxjs@kv@everyparhook@modern{\let\bxjs@everyparhook\bxjs@everyparhook@modern}
+\define@key{bxjs}{everyparhook}{\bxjs@set@keyval{everyparhook}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@label@section}
+% |label-section| の指定値。
+% \begin{macrocode}
+\chardef\bxjs@label@section@none=0
+\chardef\bxjs@label@section@compat=1
+\chardef\bxjs@label@section@modern=2
+\let\bxjs@label@section\bxjs@label@section@compat
+\def\bxjs@kv@labelsection@none{\let\bxjs@label@section\bxjs@label@section@none}
+\def\bxjs@kv@labelsection@compat{\let\bxjs@label@section\bxjs@label@section@compat}
+\def\bxjs@kv@labelsection@modern{\let\bxjs@label@section\bxjs@label@section@modern}
+\define@key{bxjs}{label-section}{\bxjs@set@keyval{labelsection}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@usezw}
+% 〔スイッチ〕 |use-zw| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@usezw \bxjs@usezwtrue
+\bxjs@declare@bool@option{use-zw}{usezw}
+\DeclareOption{nozw}{\setkeys{bxjs}{use-zw=false}}
+\DeclareOption{zw}{\setkeys{bxjs}{use-zw=true}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@disguise@js}
+% 〔スイッチ〕 |disguise-js| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@disguise@js \bxjs@disguise@jstrue
+\bxjs@declare@bool@option{disguise-js}{disguise@js}
+\DeclareOption{nojs}{\setkeys{bxjs}{disguise-js=false}}
+\DeclareOption{js}{\setkeys{bxjs}{disguise-js=true}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@precisetext}
+% 〔スイッチ〕 |precise-text| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@precisetext
+\bxjs@declare@bool@option{precise-text}{precisetext}
+\DeclareOption{noprecisetext}{\setkeys{bxjs}{precise-text=false}}
+\DeclareOption{precisetext}{\setkeys{bxjs}{precise-text=true}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@simplejasetup}
+% 〔スイッチ〕 |simple-ja-setup| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@simplejasetup \bxjs@simplejasetuptrue
+\bxjs@declare@bool@option{simple-ja-setup}{simplejasetup}
+\DeclareOption{nosimplejasetup}{\setkeys{bxjs}{simple-ja-setup=false}}
+\DeclareOption{simplejasetup}{\setkeys{bxjs}{simple-ja-setup=true}}
+% \end{macrocode}
+% \end{macro}
+%
+% \end{ZRnote}
+%
+% \paragraph{オプションの実行}
+% \mbox{}
+% \begin{ZRnote}
+% {\LaTeX}の実装では、クラスやパッケージのオプションのトークン列の
+% 中に |{ }| が含まれると正常に処理ができない。
+% これに対処する為 |\@removeelement| の実装に少し手を加える
+% (仕様は変わらない)。
+% \Note クラスに |\DeclareOption*| がある場合は |\@unusedoptions|
+% は常に空のままであることを利用している。
+% \begin{macrocode}
+\let\bxjs@org@removeelement\@removeelement
+\def\@removeelement#1#2#3{%
+ \def\reserved@a{#2}%
+ \ifx\reserved@a\@empty \let#3\@empty
+ \else \bxjs@org@removeelement{#1}{#2}{#3}%
+ \fi}
+% \end{macrocode}
+%
+% \end{ZRnote}
+%
+% デフォルトのオプションを実行します。
+% |multicols| や |url| を |\RequirePackage| するのはやめました。
+%
+% \begin{macrocode}
+%<article>\ExecuteOptions{a4paper,oneside,onecolumn,notitlepage,final}
+%<book>\ExecuteOptions{a4paper,twoside,onecolumn,titlepage,openright,final}
+%<report>\ExecuteOptions{a4paper,oneside,onecolumn,titlepage,openany,final}
+%<slide>\ExecuteOptions{36pt,a4paper,landscape,oneside,onecolumn,titlepage,final}
+\ProcessOptions\relax
+\bxjs@post@option@hook
+% \end{macrocode}
+%
+% 後処理
+%
+% \begin{macrocode}
+\if@slide
+ \def\maybeblue{\@ifundefined{ver@color.sty}{}{\color{blue}}}
+\fi
+\if@landscape
+ \setlength\@tempdima {\paperheight}
+ \setlength\paperheight{\paperwidth}
+ \setlength\paperwidth {\@tempdima}
+\fi
+% \end{macrocode}
+%
+% \paragraph{グローバルオプションの整理 \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+%
+% グローバルオプションのトークン列に |{ }| が含まれていると、
+% やはり後のパッケージの読込処理で不具合を起こすようである
+% (|\ProcessOptions*| がエラーになる)。
+% 従って、このようなオプションは除外することにする。
+% \begin{macrocode}
+\def\bxjs@tmpdo{%
+ \def\bxjs@tmpa{\@gobble}%
+ \expandafter\bxjs@tmpdo@a\@classoptionslist,\@nil,%
+ \let\@classoptionslist\bxjs@tmpa}
+\def\bxjs@tmpdo@a#1,{%
+ \ifx\@nil#1\relax\else
+ \bxjs@tmpdo@b#1{}\@nil
+ \if@tempswa \edef\bxjs@tmpa{\bxjs@tmpa,#1}\fi
+ \expandafter\bxjs@tmpdo@a
+ \fi}
+\def\bxjs@tmpdo@b#1#{\bxjs@tmpdo@c}
+\def\bxjs@tmpdo@c#1\@nil{%
+ \ifx\@nil#1\@nil \@tempswatrue \else \@tempswafalse \fi}
+\bxjs@tmpdo
+% \end{macrocode}
+%
+% |papersize|、|10pt|、|noscale| の各オプションは他のパッケージと衝突を
+% 起こす可能性があるため、グローバルオプションから外す。
+%
+% \begin{macrocode}
+\@expandtwoargs\@removeelement
+ {papersize}\@classoptionslist\@classoptionslist
+\@expandtwoargs\@removeelement
+ {10pt}\@classoptionslist\@classoptionslist
+\@expandtwoargs\@removeelement
+ {noscale}\@classoptionslist\@classoptionslist
+% \end{macrocode}
+%
+% \end{ZRnote}
+%
+% \paragraph{使用エンジンの検査・自動判定}
+%
+% ユーザが |uplatex| オプションの有無により指定したエンジンが,実際に
+% 使われているものと一致しているかを検査し,一致しない場合はエラー
+% メッセージを表示します。
+%
+% [2016-11-09] p\LaTeX / up\LaTeX を自動判別するオプション |autodetect-engine| を新設しました。
+% up\LaTeX の場合は,グローバルオプションに |uplatex| を追加することで,
+% 自動判定に応じて |otf| パッケージにも |uplatex| オプションが渡るようにします。
+%
+% \begin{ZRnote}
+% ここのコードを削除。
+% \end{ZRnote}
+%
+% [2016-11-11] p\LaTeX の場合は,オプション |uplatex| が指定されていれば必ずエラーを出します。
+% |autodetect-engine| が有効になっていてもエラーを出しますが,これは |otf| パッケージに
+% |uplatex| オプションが渡ってしまうのを防ぐためです。
+%
+% \begin{ZRnote}
+%
+% 正規化前の和文ドライバの値を |\bxjs@jadriver| に設定する。
+% \begin{macrocode}
+\ifx\bxjs@jadriver@opt\@undefined\else
+ \let\bxjs@jadriver\bxjs@jadriver@opt
+\fi
+% \end{macrocode}
+%
+% エンジン明示指定のオプションが与えられた場合は、
+% それが実際のエンジンと一致するかを検査する。
+% \begin{macrocode}
+\let\bxjs@tmpb\jsEngine
+\ifx j\bxjs@tmpb\ifjsWithpTeXng
+ \let\bxjs@tmpb=g
+\fi\fi
+\ifx j\bxjs@tmpb\ifjsWithupTeX
+ \let\bxjs@tmpb=u
+\fi\fi
+\ifx p\bxjs@tmpb\ifjsInPdfMode\else
+ \let\bxjs@tmpb=n
+\fi\fi
+% \end{macrocode}
+% (この時点で |\bxjs@tmpb| は |\bxjs@engine@given| と
+% 同じ規則で分類したコードをもっている。)
+% \begin{macrocode}
+\ifx *\bxjs@engine@given
+ \let\bxjs@engine@given\bxjs@tmpb
+% \end{macrocode}
+% エンジン指定が |autodetect-engine| であり、かつ実際のエンジンが
+% {(u)\pLaTeX}だった場合は、本来のエンジンオプションを
+% グローバルオプションに加える。
+% \begin{macrocode}
+ \ifx j\bxjs@engine@given
+ \g@addto@macro\@classoptionslist{,platex}
+ \else\ifx u\bxjs@engine@given
+ \g@addto@macro\@classoptionslist{,uplatex}
+ \fi\fi
+\fi
+\ifx\bxjs@engine@given\@undefined\else
+ \ifx\bxjs@engine@given\bxjs@tmpb\else
+ \ClassError\bxjs@clsname
+ {Option '\bxjs@engine@opt' used on wrong engine}\@ehc
+ \fi
+\fi
+% \end{macrocode}
+%
+% エンジンが{\pTeX-ng}の場合、グローバルオプションに |uplatex| を
+% 追加する。
+% \begin{macrocode}
+\ifjsWithpTeXng
+ \g@addto@macro\@classoptionslist{,uplatex}
+\fi
+% \end{macrocode}
+%
+% \paragraph{ドライバ指定 \ZRX}
+%
+% ドライバ指定のオプションが与えられた場合は、
+% それがエンジンと整合するかを検査する。
+% \begin{macrocode}
+\@tempswatrue
+\ifx \bxjs@driver@given\@undefined\else
+ \ifjsInPdfMode
+ \ifx\bxjs@driver@given\bxjs@driver@@pdfmode\else
+ \@tempswafalse
+ \fi
+ \else\ifx x\jsEngine
+ \ifx\bxjs@driver@given\bxjs@driver@@xetex\else
+ \@tempswafalse
+ \fi
+ \else
+ \ifx\bxjs@driver@given\bxjs@driver@@pdfmode
+ \@tempswafalse
+ \else\ifx\bxjs@driver@given\bxjs@driver@@xetex
+ \@tempswafalse
+ \fi\fi
+ \ifjsWithpTeXng\ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx\else
+ \@tempswafalse
+ \fi\fi
+ \fi\fi
+\fi
+\if@tempswa\else
+ \ClassError\bxjs@clsname
+ {Option '\bxjs@driver@opt' used on wrong engine}\@ehc
+\fi
+% \end{macrocode}
+%
+% DVI出力のエンジンである場合の追加処理。
+% \begin{macrocode}
+\ifjsInPdfMode \@tempswafalse
+\else\ifx x\jsEngine \@tempswafalse
+\else\ifjsWithpTeXng \@tempswafalse
+\else \@tempswatrue
+\fi\fi\fi
+\if@tempswa
+% \end{macrocode}
+% ドライバオプションがない場合は警告を出す。
+% \Note ただし |ja| 非指定の場合はスキップする
+% (0.3 版との互換性のため)。
+% \begin{macrocode}
+ \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@opt\@undefined\else
+ \ClassWarningNoLine\bxjs@clsname
+ {No driver option is given}
+ \fi\fi
+% \end{macrocode}
+% |dvi=XXX| が指定されていた場合は、
+% |XXX| が指定された時と同じ動作にする。
+% (グローバルオプションに |XXX| を追加する。)
+% \begin{macrocode}
+ \ifbxjs@dvi@opt
+ \edef\bxjs@next{%
+ \let\noexpand\bxjs@driver@given
+ \csname bxjs@dvidriver@@\bxjs@driver@opt\endcsname
+ \noexpand\g@addto@macro\noexpand\@classoptionslist
+ {,\bxjs@driver@opt}%
+ }\bxjs@next
+ \fi
+\fi
+% \end{macrocode}
+%
+% エンジンが{\pTeX-ng}の場合、グローバルオプションに |dvipdfmx|
+% を追加する。
+% ただし、エンジンオプションが |platex-ng*|(|*|付)の場合、および
+% 既に |dvipdfmx| が指定されている場合を除く。
+% \begin{macrocode}
+\ifjsWithpTeXng
+ \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx
+ \let\bxjs@platexng@nodrv\@undefined
+ \else\ifx t\bxjs@platexng@nodrv\else
+ \g@addto@macro\@classoptionslist{,dvipdfmx}
+ \fi\fi
+\fi
+% \end{macrocode}
+%
+% ドライバが |nodvidriver| であった場合の処理。
+% DVIウェア依存の処理を全て無効化する。
+% \begin{macrocode}
+\ifx\bxjs@driver@given\bxjs@driver@@none
+ \bxjs@papersizefalse
+\fi
+% \end{macrocode}
+%
+% \paragraph{その他のBXJS特有の後処理 \ZRX}
+%
+% |\bxjs@jadriver| の正規化。
+% 値が未指定の場合は |minimal| に変える。
+% ただしエンジンが{(u)\pTeX}である場合は |standard|
+% に変える。
+% \begin{macrocode}
+\def\bxjs@@minimal{minimal}
+\ifx\bxjs@jadriver\relax
+ \ifx j\jsEngine
+ \def\bxjs@jadriver{standard}
+ \else
+ \let\bxjs@jadriver\bxjs@@minimal
+ \fi
+\fi
+% \end{macrocode}
+%
+% エンジンオプションがない場合はエラーを出す。
+% \Note ただし |ja| 非指定の場合はスキップする。
+% \begin{macrocode}
+\ifx\bxjs@jadriver@opt\@undefined\else
+ \ifx\bxjs@engine@given\@undefined
+ \ClassError\bxjs@clsname
+ {An engine option must be explicitly given}%
+ {When you use a Japanese-driver you must specify a correct\MessageBreak
+ engine option.\MessageBreak\@ehc}
+\fi\fi
+% \end{macrocode}
+%
+% 新しいLua{\TeX}(0.87版以降)ではmagがアレなので、
+% |magstyle=usemag| が指定されていた場合はエラーを出す。
+% (この場合の既定値は |nomag*| であり、
+% エラーの場合は既定値に置き換えられる。)
+% \begin{macrocode}
+\ifx\bxjs@magstyle@default\bxjs@magstyle@mag\else
+ \ifx\bxjs@magstyle\bxjs@magstyle@mag
+ \let\bxjs@magstyle\bxjs@magstyle@default
+ \ClassError\bxjs@clsname
+ {The engine does not support 'magstyle=usemag'}%
+ {LuaTeX v0.87 or later no longer supports the "mag" feature of TeX.\MessageBreak
+ The default value 'nomag*' is used instead.\MessageBreak \@ehc}
+ \fi
+\fi
+% \end{macrocode}
+%
+% |base|、|jbase|、|scale| の値を用いて和文スケール値を解決する。
+% \Note |\bxjs@param@basefontsize| と |\jsScale| へのオプション値の反映は
+% 既に実施されていることに注意。
+% |jbase| 非指定の場合はこのままでよい。
+% \begin{macrocode}
+\ifx\bxjs@jbase@opt\@undefined\else
+ \ifx\bxjs@base@opt\@undefined
+% \end{macrocode}
+% |jbase| 指定済で |base| 未指定の場合は、|\jsScale| の値を採用して
+% 和文基底サイズを決定する。
+% \begin{macrocode}
+ \jsSetQHLength\@tempdima{\bxjs@jbase@opt}%
+ \bxjs@invscale\@tempdima\jsScale
+ \bxjs@setbasefontsize{\@tempdima}%
+ \else
+% \end{macrocode}
+% |jbase| と |base| がともに指定済の場合は、それらの値から
+% 和文スケール値を決定する。
+% \begin{macrocode}
+ \ifx\bxjs@scale@opt\@undefined\else
+ \ClassWarningNoLine\bxjs@clsname
+ {Redundant 'scale' option is ignored}%
+ \fi
+ \jsSetQHLength\@tempdima{\bxjs@jbase@opt}%
+ \@tempdimb=\bxjs@param@basefontsize\relax
+ \edef\jsScale{\strip@pt\@tempdimb}%
+ \bxjs@invscale\@tempdima\jsScale
+ \edef\jsScale{\strip@pt\@tempdima}%
+ \fi
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\Cjascale}
+% 和文クラス共通仕様(※ただしZR氏提唱)における、
+% 和文スケール値の変数。
+% \begin{macrocode}
+\let\Cjascale\jsScale
+% \end{macrocode}
+% \end{macro}
+%
+% \end{ZRnote}
+% \begin{ZRnote}
+%
+% 8bit欧文{\TeX}の場合は、高位バイトをアクティブ化しておく。
+% (和文を含むマクロ定義を通用させるため。)
+% \begin{macrocode}
+\if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T
+ \@tempcnta="80 \loop \ifnum\@tempcnta<"100
+ \catcode\@tempcnta\active
+ \advance\@tempcnta\@ne
+ \repeat
+\fi
+% \end{macrocode}
+%
+% |js| オプション指定時は、jsarticle(または jsbook)クラスを
+% 読込済のように振舞う。
+% \Note 「2つのクラスを読み込んだ状態」は |\LoadClass| を使用した
+% 場合に出現するので、別に異常ではない。
+% \begin{macrocode}
+\ifbxjs@disguise@js
+%<book|report>\def\bxjs@js@clsname{jsbook}
+%<!book&!report>\def\bxjs@js@clsname{jsarticle}
+ \@namedef{ver@\bxjs@js@clsname.cls}{2001/01/01 (bxjs)}
+\fi
+% \end{macrocode}
+%
+% |color|/|graphics| パッケージが持つ出力用紙サイズ設定の機能は、
+% BXJSクラスでは余計なので無効にしておく。
+% このため、グローバルで |nosetpagesize| を設定しておく。
+% \begin{macrocode}
+\g@addto@macro\@classoptionslist{,nosetpagesize}
+% \end{macrocode}
+%
+% |oldfontcommands| オプション指定時は |\allowoldfontcommands|
+% 命令を実行する。
+% \begin{macrocode}
+\ifbxjs@oldfontcommands
+ \AtEndOfClass{\allowoldfontcommands}
+\fi
+% \end{macrocode}
+% \end{ZRnote}
+%
+% \paragraph{papersizeスペシャルの出力}
+%
+% |dvi| ファイルの先頭にdvipsのpapersize specialを書き込むことで,
+% 出力用紙サイズを設定します。これはdvipdfmxや最近のdvioutにも有効です。
+% どうやらpapersize specialにはtrue付の単位は許されず,かつ単位は
+% 常にtrueなものと扱われるようです。
+% そこで,後で出てくる(☆)の部分,「|\mag|にあわせてスケール」よりも
+% 手前で実行しておくことになります。
+%
+% トンボの付いたときの用紙サイズは無意味ですが,
+% いわゆる「ノビ」サイズという縦横1インチずつ長い用紙に出力することを考えて,
+% 1インチずつ加えました。
+% ところが\pLaTeXe はトンボ出力幅を両側に1インチとっていますので,
+% dvips使用時に
+% \begin{quote}
+% |-O -0.5in,-0.5in|
+% \end{quote}
+% というオプションを与えて両側0.5インチのトンボにするといいでしょう。
+%
+% [2003-05-17] トンボをプレビューに使うことを考えて1インチを2インチにしました。
+%
+% [2016-07-11] memoirクラスのマニュアルによると,トンボを含めた用紙の寸法は
+% |\stockwidth|,|\stockheight|と呼ぶようですので,これを使うことにしました。
+%
+% [2017-01-11] トンボオプションが指定されているとき「だけ」|\stockwidth|,
+% |\stockheight|を定義するようにしました。
+%
+% \begin{ZRnote}
+% BXJSでは出力用紙サイズ記録は |geometry| パッケージが行う。
+%
+% また、JSクラスと異なり、|\stockwidth|、|\stockheight| は常に定義される。
+% \end{ZRnote}
+% \begin{macrocode}
+\newdimen\stockwidth \newdimen\stockheight
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname iftombow\expandafter\endcsname\csname iftrue\endcsname
+% \newdimen\stockwidth \newdimen\stockheight
+ \setlength{\stockwidth}{\paperwidth}
+ \setlength{\stockheight}{\paperheight}
+ \advance \stockwidth 2in
+ \advance \stockheight 2in
+\fi
+% \end{macrocode}
+%
+% \paragraph{基準となる行送り}
+%
+% \begin{macro}{\n@baseline}
+%
+% 基準となる行送りをポイント単位で表したものです。
+%
+% \begin{macrocode}
+%<slide>\def\n@baseline{13}%
+%<!slide>\ifdim\bxjs@param@basefontsize<10pt \def\n@baseline{15}%
+%<!slide>\else \def\n@baseline{16}\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{拡大率の設定}
+% \mbox{}
+% \begin{ZRnote}
+% |\bxjs@magstyle| の値に応じてスイッチ |jsc@mag| と |jsc@mag@xreal| を
+% 設定する。
+% \begin{macrocode}
+\ifx\bxjs@magstyle\bxjs@magstyle@mag
+ \jsc@magtrue
+\else\ifx\bxjs@magstyle\bxjs@magstyle@xreal
+ \jsc@mag@xrealtrue
+\fi\fi
+% \end{macrocode}
+% \end{ZRnote}
+%
+% サイズの変更は\TeX のプリミティブ |\mag| を使って行います。
+% 9ポイントについては行送りも若干縮めました。
+% サイズについては全面的に見直しました。
+%
+% [2008-12-26] 1000 / |\mag| に相当する |\inv@mag| を定義しました。
+% |truein| を使っていたところを |\inv@mag in| に直しましたので,
+% |geometry| パッケージと共存できると思います。
+% なお,新ドキュメントクラス側で |10pt| 以外にする場合の注意:
+% \begin{itemize}
+% \item |geometry| 側でオプション |truedimen| を指定してください。
+% \item |geometry| 側でオプション |mag| は使えません。
+% \end{itemize}
+%
+% \begin{ZRnote}
+% 設定すべき |\mag| 値を (基底サイズ)/(10\,pt) $\times$ 1000 と算出。
+% BXJSクラスでは、|\mag| を直接指定したい場合は、|geometry| 側では
+% なくクラスのオプションで行うものとする。
+% \begin{macrocode}
+\ifx\bxjs@param@mag\relax
+ \@tempdima=\bxjs@param@basefontsize
+ \advance\@tempdima.001pt \multiply\@tempdima25
+ \divide\@tempdima16384\relax \@tempcnta\@tempdima\relax
+ \edef\bxjs@param@mag{\the\@tempcnta}
+\else
+% mag値が直接指定された場合
+ \bxjs@gset@tempcnta{\bxjs@param@mag}
+ \ifnum\@tempcnta<\z@ \@tempcnta=\z@ \fi
+% 有効なmag値の範囲は1--32768
+ \edef\bxjs@param@mag{\the\@tempcnta}
+ \advance\@tempcnta100000
+ \def\bxjs@tmpa#1#2#3#4#5\@nil{\@tempdima=#2#3#4.#5\p@}
+ \expandafter\bxjs@tmpa\the\@tempcnta\@nil
+ \edef\bxjs@param@basefontsize{\the\@tempdima}
+\fi
+\@tempcnta\bxjs@param@mag \advance\@tempcnta100000
+\def\bxjs@tmpa#1#2#3#4\@nil{\@tempdima=#2#3.#4\p@}
+\expandafter\bxjs@tmpa\the\@tempcnta\@nil
+\edef\jsc@magscale{\strip@pt\@tempdima}
+\let\jsBaseFontSize\bxjs@param@basefontsize
+% \end{macrocode}
+% \end{ZRnote}
+%
+% [2016-07-08] |\jsc@mpt| および |\jsc@mmm| に,それぞれ1ptおよび1mmを拡大させた値を格納します。
+% 以降のレイアウト指定ではこちらを使います。
+%
+% \begin{ZRnote}
+% |\mag| する場合(現状はこれが既定)にコードの変更を低減するために、
+% 以下では必要に応じて、|\jsc@mpt| を |\p@?| と書く。
+% その上で、|\mag| する場合は |?| を無視して |\p@| と解釈させ、
+% |\mag| しない場合は |?| を英字扱いにして |\p@?| という制御綴を
+% |\jsc@mpt| と同値にする。
+% \Note (多分2.0版あたりで)JSクラスに合わせるため |\p@?| 表記を
+% 止める予定。
+% \begin{macrocode}
+\newdimen\jsc@mpt
+\newdimen\jsc@mmm
+\ifjsc@mag
+ \jsc@mpt=1\p@
+ \jsc@mmm=1mm
+ \catcode`\?=9 % \p@? read as \p@
+\else
+ \jsc@mpt=\jsc@magscale\p@
+ \jsc@mmm=\jsc@magscale mm
+ \catcode`\?=11 \let\p@?\jsc@mpt
+\fi
+\chardef\bxjs@qmcc=\catcode`\?\relax
+\g@addto@macro\bxjs@pre@jadriver@hook{\catcode`\?=12\relax}
+% \end{macrocode}
+%
+% ここで{p\TeX}のzwに相当する単位として用いる長さ変数 |\jsZw| を作成する。
+% 約束により、これは |\jsScale| $\times$ (指定フォントサイズ) に等しい。
+%
+% |nozw| 非指定時は |\zw| を |\jsZw| と同義にする。
+% \begin{macrocode}
+\newdimen\jsZw
+\jsZw=10\jsc@mpt \jsZw=\jsScale\jsZw
+\ifbxjs@usezw
+ \providecommand*\zw{\jsZw}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\zwspace}
+% 全角幅の水平空き。
+% \begin{macrocode}
+\def\zwspace{\hskip\jsZw\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% そして、magstyle が |nomag*| の場合は、NFSSにパッチを当てる。
+% \begin{macrocode}
+\ifjsc@mag@xreal
+ \RequirePackage{type1cm}
+ \let\jsc@invscale\bxjs@invscale
+% \end{macrocode}
+% ムニャムニャムニャ……。
+% \end{ZRnote}
+% \begin{macrocode}
+ \ifbxjs@TUenc
+ \expandafter\let\csname TU/lmr/m/n/10\endcsname\relax
+ \else
+ \expandafter\let\csname OT1/cmr/m/n/10\endcsname\relax
+ \fi
+ \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax
+ \let\jsc@get@external@font\get@external@font
+ \def\get@external@font{%
+ \jsc@preadjust@extract@font
+ \jsc@get@external@font}
+ \def\jsc@fstrunc#1{%
+ \edef\jsc@tmpa{\strip@pt#1}%
+ \expandafter\jsc@fstrunc@a\jsc@tmpa.****\@nil}
+ \def\jsc@fstrunc@a#1.#2#3#4#5#6\@nil{%
+ \if#5*\else
+ \edef\jsc@tmpa{#1%
+ \ifnum#2#3>\z@ .#2\ifnum#3>\z@ #3\fi\fi}%
+ \fi}
+ \def\jsc@preadjust@extract@font{%
+ \let\jsc@req@size\f@size
+ \dimen@\f@size\p@ \jsc@invscale\dimen@\jsc@magscale
+ \advance\dimen@.005pt\relax \jsc@fstrunc\dimen@
+ \let\jsc@ref@size\jsc@tmpa
+ \let\f@size\jsc@ref@size}
+ \def\execute@size@function#1{%
+ \let\jsc@cref@size\f@size
+ \let\f@size\jsc@req@size
+ \csname s@fct@#1\endcsname}
+ \let\jsc@DeclareErrorFont\DeclareErrorFont
+ \def\DeclareErrorFont#1#2#3#4#5{%
+ \@tempdimc#5\p@ \@tempdimc\jsc@magscale\@tempdimc
+ \edef\jsc@tmpa{{#1}{#2}{#3}{#4}{\strip@pt\@tempdimc}}
+ \expandafter\jsc@DeclareErrorFont\jsc@tmpa}
+ \def\gen@sfcnt{%
+ \edef\mandatory@arg{\mandatory@arg\jsc@cref@size}%
+ \empty@sfcnt}
+ \def\genb@sfcnt{%
+ \edef\mandatory@arg{%
+ \mandatory@arg\expandafter\genb@x\jsc@cref@size..\@@}%
+ \empty@sfcnt}
+ \ifbxjs@TUenc\else
+ \DeclareErrorFont{OT1}{cmr}{m}{n}{10}
+ \fi
+\fi
+% \end{macrocode}
+%
+% [2016-11-16] latex.ltx (ltspace.dtx)で定義されている |\smallskip| の,
+% 単位 |pt| を |\jsc@mpt| に置き換えた |\jsc@smallskip| を定義します。
+% これは |\maketitle| で用いられます。
+% |\jsc@medskip| と |\jsc@bigskip| は必要ないのでコメントアウトしています。
+%
+% \begin{macro}{\jsc@smallskip}
+% \begin{macro}{\jsc@medskip}
+% \begin{macro}{\jsc@bigskip}
+% \begin{macrocode}
+\def\jsc@smallskip{\vspace\jsc@smallskipamount}
+%\def\jsc@medskip{\vspace\jsc@medskipamount}
+%\def\jsc@bigskip{\vspace\jsc@bigskipamount}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\jsc@smallskipamount}
+% \begin{macro}{\jsc@medskipamount}
+% \begin{macro}{\jsc@bigskipamount}
+% \begin{macrocode}
+\newskip\jsc@smallskipamount
+\jsc@smallskipamount=3\jsc@mpt plus 1\jsc@mpt minus 1\jsc@mpt
+%\newskip\jsc@medskipamount
+%\jsc@medskipamount =6\jsc@mpt plus 2\jsc@mpt minus 2\jsc@mpt
+%\newskip\jsc@bigskipamount
+%\jsc@bigskipamoun =12\jsc@mpt plus 4\jsc@mpt minus 4\jsc@mpt
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% |\paperwidth|,|\paperheight|を|\mag|にあわせてスケールしておきます(☆)。
+%
+% [2016-07-11] 新しく追加した|\stockwidth|,|\stockheight|も|\mag|にあわせて
+% スケールします。
+%
+% [2017-01-11] トンボオプションが指定されているとき「だけ」|\stockwidth|,
+% |\stockheight|が定義されています。
+%
+% \begin{macrocode}
+% \end{macrocode}
+%
+% \paragraph{pagesizeスペシャルの出力}
+%
+% [2003-05-17] dvipdfm(x)のpagesizeスペシャルを出力します。
+%
+% [2004-08-08] 今のdvipdfmxはdvips用スペシャルを理解するようなので外しました。
+%
+% \begin{macrocode}
+% \ifpapersize
+% \setlength{\@tempdima}{\paperwidth}
+% \setlength{\@tempdimb}{\paperheight}
+% \iftombow
+% \advance \@tempdima 2truein
+% \advance \@tempdimb 2truein
+% \fi
+% \AtBeginDvi{\special{pdf: pagesize width \the\@tempdima\space height \the\@tempdimb}}
+% \fi
+% \end{macrocode}
+%
+% \section{和文フォントの変更}
+%
+% \begin{ZRnote}
+% 和文フォントの設定は和文ドライバの管轄。
+% \end{ZRnote}
+%
+% \begin{macro}{\@}
+%
+% 欧文といえば,\LaTeX の |\def\@{\spacefactor\@m}| という定義(|\@m| は1000)
+% では |I watch TV\@.| と書くと V とピリオドのペアカーニングが効かなくなります。
+% そこで,次のような定義に直し,|I watch TV.\@| と書くことにします。
+%
+% [2016-07-14] 2015-01-01の\LaTeX で,auxiliary filesに書き出されたときに
+% スペースが食われないようにする修正が入りました。これに合わせて |{}| を補いました。
+%
+% \begin{ZRnote}
+% BXJSクラスでの変更点:
+% \begin{itemize}
+% \item |fix-at-cmd| オプションが偽の場合は再定義しない。
+% \item 固定の3000でなく実際のピリオドのsfcode値を使う。
+% \item 「防御的な |\@|」での不具合を防ぐため、大文字直後の |\@|
+% は標準と同等の動作にする。
+% \end{itemize}
+% \end{ZRnote}
+%
+% \begin{macrocode}
+\chardef\bxjs@periodchar=`\.
+\bxjs@protected\def\bxjs@SE{%
+ \ifnum\spacefactor<\@m \spacefactor\@m
+ \else \spacefactor\sfcode\bxjs@periodchar
+ \fi}
+\ifbxjs@fix@at@cmd
+ \def\@{\bxjs@SE{}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \section{フォントサイズ}
+%
+% フォントサイズを変える命令(|\normalsize|,|\small| など)
+% の実際の挙動の設定は,三つの引数をとる命令 |\@setfontsize| を使って,
+% たとえば
+% \begin{quote}
+% |\@setfontsize{\normalsize}{10}{16}|
+% \end{quote}
+% のようにして行います。これは
+% \begin{quote}
+% |\normalsize| は10ポイントのフォントを使い,行送りは16ポイントである
+% \end{quote}
+% という意味です。
+% ただし,処理を速くするため,
+% 以下では10と同義の\LaTeX の内部命令 |\@xpt| を使っています。
+% この |\@xpt| の類は次のものがあり,\LaTeX 本体で定義されています。
+%\begin{verbatim}
+% \@vpt 5 \@vipt 6 \@viipt 7
+% \@viiipt 8 \@ixpt 9 \@xpt 10
+% \@xipt 10.95 \@xiipt 12 \@xivpt 14.4
+%\end{verbatim}
+%
+%^^A\begin{macro}{\@setfontsize}
+%
+% ここでは |\@setfontsize| の定義を少々変更して,
+% 段落の字下げ |\parindent|,
+% 和文文字間のスペース |\kanjiskip|,
+% 和文・欧文間のスペース |\xkanjiskip| を変更しています。
+%
+% |\kanjiskip| は\pLaTeXe で |0pt plus .4pt minus .5pt| に設定していますが,
+% これはそもそも文字サイズの変更に応じて変わるべきものです。
+% それに,プラスになったりマイナスになったりするのは,
+% 追い出しと追い込みの混在が生じ,統一性を欠きます。
+% なるべく追い出しになるようにプラスの値だけにしたいところですが,
+% ごくわずかなマイナスは許すことにしました。
+%
+% |\xkanjiskip| については,四分つまり全角の1/4を標準として,
+% 追い出すために三分あるいは二分まで延ばすのが一般的ですが,
+% ここではTimesやPalatinoのスペースがほぼ四分であることに着目して,
+% これに一致させています。これなら書くときにスペースを空けても
+% 空けなくても同じ出力になります。
+%
+% |\parindent| については,0(以下)でなければ全角幅(1zw)に直します。
+%
+% [2008-02-18] |english| オプションで |\parindent| を 1em にしました。
+%
+% \begin{ZRnote}
+% \begin{macro}{\set@fontsize}
+% |\fontsize| 命令(|\large| 等でなく)でフォントサイズ変更した場合
+% にもフックが実行されるように、|\@setfontsize| では
+% なく |\set@fontsize| に対してパッチを当てるように変更。
+% \begin{macrocode}
+\def\bxjs@tmpa{\def\set@fontsize##1##2##3}
+\expandafter\bxjs@tmpa\expandafter{%
+ \set@fontsize{#1}{#2}{#3}%
+% 末尾にコードを追加
+ \expandafter\def\expandafter\size@update\expandafter{%
+ \size@update
+ \jsFontSizeChanged}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsFontSizeChanged}
+% フォントサイズ変更時に呼ばれるフック。
+% |\jsZw| を再設定している。
+% その後でユーザ定義用のフック |\jsResetDimen| を実行する。
+% \begin{macrocode}
+\newcommand*\jsFontSizeChanged{%
+ \jsZw=\f@size\p@
+ \jsZw=\jsScale \jsZw
+ \ifdim\parindent>\z@
+ \if@english \parindent=1em
+ \else \parindent=1\jsZw
+ \fi
+ \fi\relax
+ \jsResetDimen}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsResetDimen}
+% ユーザ定義用のフック。
+% \begin{macrocode}
+\newcommand*\jsResetDimen{}
+% \end{macrocode}
+% \end{macro}
+% \end{ZRnote}
+%
+% \begin{macro}{\jsc@setfontsize}
+% クラスファイルの内部では,拡大率も考慮した |\jsc@setfontsize| を
+% |\@setfontsize| の変わりに用いることにします。
+% \begin{macrocode}
+\ifjsc@mag
+ \let\jsc@setfontsize\@setfontsize
+\else
+ \def\jsc@setfontsize#1#2#3{%
+ \@setfontsize#1{#2\jsc@mpt}{#3\jsc@mpt}}
+% microtype対策
+ \ifjsWitheTeX\if j\jsEngine\else
+ \def\jsc@setfontsize#1#2#3{%
+ \edef\bxjs@sfs@next{%
+ \unexpanded{\@setfontsize#1}%
+ {\the\dimexpr#2\jsc@mpt\relax}{\the\dimexpr#3\jsc@mpt\relax}%
+ }\bxjs@sfs@next}
+ \fi\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% これらのグルーをもってしても行分割ができない場合は,
+% |\emergencystretch| に訴えます。
+%
+% \begin{ZRnote}
+% これはフォントサイズ非依存なので |\Cwd| で書くのが適当だが、
+% |\Cwd| はまだ定義されていない。
+% \end{ZRnote}
+% \begin{macrocode}
+\emergencystretch 3\jsZw
+% \end{macrocode}
+%
+% \begin{macro}{\ifnarrowbaselines}
+% \begin{macro}{\narrowbaselines}
+% \begin{macro}{\widebaselines}
+%
+% 欧文用に行間を狭くする論理変数と,それを真・偽にするためのコマンドです。
+%
+% [2003-06-30] 数式に入るところで |\narrowbaselines|
+% を実行しているので |\abovedisplayskip| 等が初期化
+% されてしまうというshintokさんのご指摘に対して,
+% しっぽ愛好家さんが次の修正を教えてくださいました。
+%
+% [2008-02-18] |english| オプションで最初の段落のインデントをしないようにしました。
+%
+% TODO: Hasumiさん [qa:54539] のご指摘は考慮中です。
+%
+% \begin{ZRnote}
+% 別行立て数式に入るときに |\narrowbaselines| が呼ばれるが、
+% このコードでは「数式中で |\normalsize| などのサイズ命令
+% (|\@currsize| の実体)が呼ばれた」ことになり警告が出る。
+% JSクラスでは、|\@setfontsize| 中の |\@nomath| 実行を消して
+% 「そもそもサイズ命令で警告が出ない」ようにしている。
+% 警告が常に出ないのも望ましくないので、BXJSクラスの実装では、
+% |\narrowbaselines| の時だけ警告が出ないようにする。
+% \end{ZRnote}
+%
+% \begin{macrocode}
+\newif\ifnarrowbaselines
+\if@english
+ \narrowbaselinestrue
+\fi
+\def\narrowbaselines{%
+ \narrowbaselinestrue
+ \skip0=\abovedisplayskip
+ \skip2=\abovedisplayshortskip
+ \skip4=\belowdisplayskip
+ \skip6=\belowdisplayshortskip
+% 一時的に警告を無効化する
+ \let\bxjs@save@nomath\@nomath
+ \let\@nomath\@gobble
+ \@currsize\selectfont
+ \let\@nomath\bxjs@save@nomath
+ \abovedisplayskip=\skip0
+ \abovedisplayshortskip=\skip2
+ \belowdisplayskip=\skip4
+ \belowdisplayshortskip=\skip6\relax}
+\def\widebaselines{\narrowbaselinesfalse\@currsize\selectfont}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{ZRnote}
+% |microtype| パッケージを読み込んだ場合、|\normalsize| 等の
+% フォントサイズ変更命令の定義の中にif文が使われていると、
+% 不可解なエラーが発生する。
+% これは |microtype| が邪悪なトリックを使用しているせいなのだが、
+% 一応こちら側で対策をとることにする。
+% \begin{macrocode}
+\def\bxjs@if@narrowbaselines{%
+ \ifnarrowbaselines\expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{ZRnote}
+%
+% \begin{macro}{\normalsize}
+%
+% 標準のフォントサイズと行送りを選ぶコマンドです。
+%
+% 本文10ポイントのときの行送りは,
+% 欧文の標準クラスファイルでは12ポイント,
+% アスキーの和文クラスファイルでは15ポイントになっていますが,
+% ここでは16ポイントにしました。
+% ただし |\narrowbaselines| で欧文用の12ポイントになります。
+%
+% 公称10ポイントの和文フォントが約9.25ポイント
+% (アスキーのものの0.961倍)であることもあり,
+% 行送りがかなりゆったりとしたと思います。
+% 実際,$16/9.25 \approx 1.73$ であり,
+% 和文の推奨値の一つ「二分四分」(1.75)
+% に近づきました。
+%
+% \begin{ZRnote}
+% |microtype| 対策のためif文を避ける。
+% \end{ZRnote}
+% \begin{macrocode}
+\renewcommand{\normalsize}{%
+ \bxjs@if@narrowbaselines{%
+ \jsc@setfontsize\normalsize\@xpt\@xiipt
+ }{%else
+ \jsc@setfontsize\normalsize\@xpt{\n@baseline}%
+ }%
+% \end{macrocode}
+%
+% 数式の上のアキ(|\abovedisplayskip|),
+% 短い数式の上のアキ(|\abovedisplayshortskip|),
+% 数式の下のアキ(|\belowdisplayshortskip|)の設定です。
+%
+% [2003-02-16] ちょっと変えました。
+%
+% [2009-08-26] \TeX\ Q\,\&\,A 52569から始まる議論について逡巡して
+% いましたが,結局,微調節してみることにしました。
+%
+% \begin{macrocode}
+ \abovedisplayskip 11\p@? \@plus3\p@? \@minus4\p@?
+ \abovedisplayshortskip \z@ \@plus3\p@?
+ \belowdisplayskip 9\p@? \@plus3\p@? \@minus4\p@?
+ \belowdisplayshortskip \belowdisplayskip
+% \end{macrocode}
+%
+% 最後に,リスト環境のトップレベルのパラメータ |\@listI| を,
+% |\@listi| にコピーしておきます。|\@listI| の設定は後で出てきます。
+%
+% \begin{macrocode}
+ \let\@listi\@listI}
+% \end{macrocode}
+%
+% ここで実際に標準フォントサイズで初期化します。
+%
+% \begin{macrocode}
+\normalsize
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\Cht}
+% \begin{macro}{\Cdp}
+% \begin{macro}{\Cwd}
+% \begin{macro}{\Cvs}
+% \begin{macro}{\Chs}
+%
+% 基準となる長さの設定をします。
+% \pLaTeXe カーネル(\texttt{plfonts.dtx})で宣言されている
+% パラメータに実際の値を設定します。
+% たとえば |\Cwd| は |\normalfont| の全角幅(1zw)です。
+%
+% [2017-08-31] 基準とする文字を「全角空白」(EUCコード\texttt{0xA1A1})から
+% 「漢」(JISコード\texttt{0x3441})へ変更しました。
+%
+% \begin{ZRnote}
+% |\Cwd| 等の変数は{\pTeX}系以外では未定義なのでここで定義する。
+% \begin{macrocode}
+\ifx\Cht\@undefined \newdimen\Cht \fi
+\ifx\Cdp\@undefined \newdimen\Cdp \fi
+\ifx\Cwd\@undefined \newdimen\Cwd \fi
+\ifx\Cvs\@undefined \newdimen\Cvs \fi
+\ifx\Chs\@undefined \newdimen\Chs \fi
+% \end{macrocode}
+%
+% 規約上、現在の |\jsZw| の値が |\Cwd| である。
+% BXJSでは |\Cht| と |\Cdp| は単純に |\Cwd| の88\%と12\%の値とする。
+% \end{ZRnote}
+% \begin{macrocode}
+\setlength\Cht{0.88\jsZw}
+\setlength\Cdp{0.12\jsZw}
+\setlength\Cwd{1\jsZw}
+\setlength\Cvs{\baselineskip}
+\setlength\Chs{1\jsZw}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\small}
+%
+% |\small| も |\normalsize| と同様に設定します。
+% 行送りは,|\normalsize| が16ポイントなら,
+% 割合からすれば$16 \times 0.9 = 14.4$ポイントになりますが,
+% |\small| の使われ方を考えて,ここでは和文13ポイント,
+% 欧文11ポイントとします。
+% また,|\topsep| と |\parsep| は,元はそれぞれ$4 \pm 2$,$2 \pm 1$
+% ポイントでしたが,ここではゼロ(|\z@|)にしました。
+%
+% \begin{ZRnote}
+% |microtype| 対策のためif文を避ける。
+% 後の |\footnotesize| も同様。
+% \end{ZRnote}
+% \begin{macrocode}
+\newcommand{\small}{%
+ \bxjs@if@narrowbaselines{%
+%<!kiyou> \jsc@setfontsize\small\@ixpt{11}%
+%<kiyou> \jsc@setfontsize\small{8.8888}{11}%
+ }{%else
+%<!kiyou> \jsc@setfontsize\small\@ixpt{13}%
+%<kiyou> \jsc@setfontsize\small{8.8888}{13.2418}%
+ }%
+ \abovedisplayskip 9\p@? \@plus3\p@? \@minus4\p@?
+ \abovedisplayshortskip \z@ \@plus3\p@?
+ \belowdisplayskip \abovedisplayskip
+ \belowdisplayshortskip \belowdisplayskip
+ \def\@listi{\leftmargin\leftmargini
+ \topsep \z@
+ \parsep \z@
+ \itemsep \parsep}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footnotesize}
+%
+% |\footnotesize| も同様です。
+% |\topsep| と |\parsep| は,元はそれぞれ$3 \pm 1$,$2 \pm 1$
+% ポイントでしたが,ここではゼロ(|\z@|)にしました。
+%
+% \begin{macrocode}
+\newcommand{\footnotesize}{%
+ \bxjs@if@narrowbaselines{%
+%<!kiyou> \jsc@setfontsize\footnotesize\@viiipt{9.5}%
+%<kiyou> \jsc@setfontsize\footnotesize{8.8888}{11}%
+ }{%else
+%<!kiyou> \jsc@setfontsize\footnotesize\@viiipt{11}%
+%<kiyou> \jsc@setfontsize\footnotesize{8.8888}{13.2418}%
+ }%
+ \abovedisplayskip 6\p@? \@plus2\p@? \@minus3\p@?
+ \abovedisplayshortskip \z@ \@plus2\p@?
+ \belowdisplayskip \abovedisplayskip
+ \belowdisplayshortskip \belowdisplayskip
+ \def\@listi{\leftmargin\leftmargini
+ \topsep \z@
+ \parsep \z@
+ \itemsep \parsep}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scriptsize}
+% \begin{macro}{\tiny}
+% \begin{macro}{\large}
+% \begin{macro}{\Large}
+% \begin{macro}{\LARGE}
+% \begin{macro}{\huge}
+% \begin{macro}{\Huge}
+% \begin{macro}{\HUGE}
+%
+% それ以外のサイズは,本文に使うことがないので,
+% 単にフォントサイズと行送りだけ変更します。
+% 特に注意すべきは |\large| で,
+% これは二段組のときに節見出しのフォントとして使い,
+% 行送りを |\normalsize| と同じにすることによって,
+% 節見出しが複数行にわたっても段間で行が揃うようにします。
+%
+% [2004-11-03] |\HUGE| を追加。
+%
+% \begin{macrocode}
+\newcommand{\scriptsize}{\jsc@setfontsize\scriptsize\@viipt\@viiipt}
+\newcommand{\tiny}{\jsc@setfontsize\tiny\@vpt\@vipt}
+\if@twocolumn
+%<!kiyou> \newcommand{\large}{\jsc@setfontsize\large\@xiipt{\n@baseline}}
+%<kiyou> \newcommand{\large}{\jsc@setfontsize\large{11.111}{\n@baseline}}
+\else
+%<!kiyou> \newcommand{\large}{\jsc@setfontsize\large\@xiipt{17}}
+%<kiyou> \newcommand{\large}{\jsc@setfontsize\large{11.111}{17}}
+\fi
+%<!kiyou>\newcommand{\Large}{\jsc@setfontsize\Large\@xivpt{21}}
+%<kiyou>\newcommand{\Large}{\jsc@setfontsize\Large{12.222}{21}}
+\newcommand{\LARGE}{\jsc@setfontsize\LARGE\@xviipt{25}}
+\newcommand{\huge}{\jsc@setfontsize\huge\@xxpt{28}}
+\newcommand{\Huge}{\jsc@setfontsize\Huge\@xxvpt{33}}
+\newcommand{\HUGE}{\jsc@setfontsize\HUGE{30}{40}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% 別行立て数式の中では |\narrowbaselines| にします。
+% 和文の行送りのままでは,行列や場合分けの行送り,
+% 連分数の高さなどが不釣合いに大きくなるためです。
+%
+% 本文中の数式の中では |\narrowbaselines| にしていません。
+% 本文中ではなるべく行送りが変わるような大きいものを使わず,
+% 行列は |amsmath| の |smallmatrix| 環境を使うのがいいでしょう。
+%
+% \begin{macrocode}
+\everydisplay=\expandafter{\the\everydisplay \narrowbaselines}
+% \end{macrocode}
+%
+% しかし,このおかげで別行数式の上下のスペースが少し違ってしまいました。
+% とりあえず |amsmath| の |equation| 関係は |okumacro| のほうで逃げていますが,
+% もっとうまい逃げ道があればお教えください。
+%
+% 見出し用のフォントは |\bfseries| 固定ではなく,|\headfont|
+% という命令で定めることにします。
+% これは太ゴシックが使えるときは |\sffamily| |\bfseries|
+% でいいと思いますが,通常の中ゴシックでは単に |\sffamily|
+% だけのほうがよさそうです。
+% 『p\LaTeXe 美文書作成入門』(1997年)では |\sffamily|
+% |\fontseries{sbc}| として新ゴMと合わせましたが,
+% |\fontseries{sbc}| はちょっと幅が狭いように感じました。
+%
+% \begin{macrocode}
+% \newcommand{\headfont}{\bfseries}
+\newcommand{\headfont}{\sffamily}
+% \newcommand{\headfont}{\sffamily\fontseries{sbc}\selectfont}
+% \end{macrocode}
+%
+% \section{レイアウト}
+%
+% \paragraph{二段組}
+%
+% \begin{macro}{\columnsep}
+% \begin{macro}{\columnseprule}
+%
+% |\columnsep| は二段組のときの左右の段間の幅です。
+% 元は10ptでしたが,2zwにしました。
+% このスペースの中央に |\columnseprule| の幅の罫線が引かれます。
+%
+% \begin{macrocode}
+%<!kiyou>\setlength\columnsep{2\Cwd}
+%<kiyou>\setlength\columnsep{28truebp}
+\setlength\columnseprule{\z@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{段落}
+%
+% \begin{macro}{\lineskip}
+% \begin{macro}{\normallineskip}
+% \begin{macro}{\lineskiplimit}
+% \begin{macro}{\normallineskiplimit}
+%
+% 上下の行の文字が |\lineskiplimit| より接近したら,
+% |\lineskip| より近づかないようにします。
+% 元は0ptでしたが1ptに変更しました。
+% \texttt{normal...} の付いた方は保存用です。
+%
+% \begin{macrocode}
+\setlength\lineskip{1\jsc@mpt}
+\setlength\normallineskip{1\jsc@mpt}
+\setlength\lineskiplimit{1\jsc@mpt}
+\setlength\normallineskiplimit{1\jsc@mpt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\baselinestretch}
+%
+% 実際の行送りが |\baselineskip| の何倍かを表すマクロです。たとえば
+% \begin{quote}
+% |\renewcommand{\baselinestretch}{2}|
+% \end{quote}
+% とすると,行送りが通常の2倍になります。ただし,
+% これを設定すると,たとえ |\baselineskip| が伸縮するように
+% 設定しても,行送りの伸縮ができなくなります。
+% 行送りの伸縮はしないのが一般的です。
+%
+% \begin{macrocode}
+\renewcommand{\baselinestretch}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\parskip}
+% \begin{macro}{\parindent}
+%
+% |\parskip| は段落間の追加スペースです。
+% 元は 0pt plus 1pt になっていましたが,ここではゼロにしました。
+% |\parindent| は段落の先頭の字下げ幅です。
+%
+% \begin{macrocode}
+\setlength\parskip{\z@}
+\if@slide
+ \setlength\parindent{0\p@}
+\else
+ \setlength\parindent{1\Cwd}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@lowpenalty}
+% \begin{macro}{\@medpenalty}
+% \begin{macro}{\@highpenalty}
+%
+% |\nopagebreak|,|\nolinebreak| は引数に応じて次のペナルティ値
+% のうちどれかを選ぶようになっています。
+% ここはオリジナル通りです。
+%
+% \begin{macrocode}
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\interlinepenalty}
+%
+% 段落中の改ページのペナルティです。デフォルトは 0 です。
+%
+% \begin{macrocode}
+% \interlinepenalty 0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\brokenpenalty}
+%
+% ページの最後の行がハイフンで終わる際のペナルティです。
+% デフォルトは100です。
+%
+% \begin{macrocode}
+% \brokenpenalty 100
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{ページレイアウト}
+%
+% \begin{ZRnote}
+% BXJSではページレイアウトの処理は |geometry| パッケージが担当している。
+% \end{ZRnote}
+%
+% \paragraph{準備 \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+%
+% \begin{macro}{\bxjs@bd@pre@geometry@hook}
+% begin-documentフックのコード内で、|geometry| パッケージが挿入する
+% コードの直前で実行されるフック。
+% \begin{macrocode}
+\@onlypreamble\bxjs@bd@pre@geometry@hook
+\let\bxjs@bd@pre@geometry@hook\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% 現状ではここで |\mag| を設定している。\par
+% |\topskip| も指定する。
+% \begin{macrocode}
+\ifjsc@mag
+\mag=\bxjs@param@mag
+\fi
+\setlength{\topskip}{10\p@?}
+% \end{macrocode}
+%
+% |\jsSetQHLength| のための和文単位の定義。
+% \begin{macrocode}
+\def\bxjs@unit@trueQ{0.25truemm}\let\bxjs@unit@trueH\bxjs@unit@trueQ
+\def\bxjs@unit@zw{\jsZw}\let\bxjs@unit@zh\bxjs@unit@zw
+% \end{macrocode}
+%
+% |\bxjs@param@paper| が長さ指定(|{W}{H}|)の場合、
+% |geometry| の形式(|papersize={W,H}|)に変換する。
+% \begin{macrocode}
+\def\bxjs@tmpdo{\futurelet\bxjs@tmpa\bxjs@tmpdo@a}
+\def\bxjs@tmpdo@a{%
+ \ifx\bxjs@tmpa\bgroup \expandafter\bxjs@tmpdo@b
+ \else \expandafter\bxjs@tmpdo@c \fi}
+\def\bxjs@tmpdo@b#1#2#3\@nil{\edef\bxjs@param@paper{papersize={#1,#2}}}
+\def\bxjs@tmpdo@c#1\@nil{\bxjs@tmpdo@d#1,,\@nil}
+\def\bxjs@tmpdo@d#1,#2,#3\@nil{%
+ \ifx\@nil#3\@nil\else \edef\bxjs@param@paper{papersize={#1,#2}}\fi}
+\expandafter\bxjs@tmpdo\bxjs@param@paper\@empty\@empty\@nil
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@layout@paper}
+% |geometry| の用紙設定のオプション。
+% \begin{macrocode}
+\edef\bxjs@layout@paper{%
+ \ifjsc@mag truedimen,\fi
+ \if@landscape landscape,\fi
+ \bxjs@param@paper}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@layout}
+% |geometry| のページレイアウトのオプション列。
+% 文書クラス毎に異なる。
+% \begin{macrocode}
+%<*article|report>
+\def\bxjs@layout@base{%
+ headheight=\topskip,footskip=0.03367\paperheight,%
+ headsep=\footskip-\topskip,includeheadfoot,%
+}
+\edef\bxjs@layout{\bxjs@layout@base
+ hscale=0.76,hmarginratio=1:1,%
+ vscale=0.83,vmarginratio=1:1,%
+}
+%</article|report>
+%<*book>
+\def\bxjs@layout@base{%
+ headheight=\topskip,headsep=6\jsc@mmm,nofoot,includeheadfoot,%
+}
+\ifbxjs@layout@buggyhmargin %---
+% アレ
+\edef\bxjs@layout{\bxjs@layout@base
+ hmargin=36\jsc@mmm,hmarginratio=1:1,%
+ vscale=0.83,vmarginratio=1:1,%
+}
+\else %---
+% 非アレ
+\edef\bxjs@layout{\bxjs@layout@base
+ hmargin=18\jsc@mmm,%
+ vscale=0.83,vmarginratio=1:1,%
+}
+\fi %---
+%</book>
+%<*slide>
+\def\bxjs@layout@base{%
+ noheadfoot,%
+}
+\edef\bxjs@layout{\bxjs@layout@base
+ hscale=0.9,hmarginratio=1:1,%
+ vscale=0.944,vmarginratio=1:1,%
+}
+%</slide>
+% \end{macrocode}
+% \end{macro}
+%
+% |textwidth| オプションの設定を反映する。
+% \begin{macrocode}
+%<*!book>
+\ifx\bxjs@textwidth@opt\@undefined\else
+ \jsSetQHLength\@tempdima{\bxjs@textwidth@opt}
+ \edef\bxjs@layout{\bxjs@layout width=\the\@tempdima,}
+\fi
+%</!book>
+\ifx\bxjs@number@of@lines@opt\@undefined\else
+ \bxjs@gset@tempcnta{\bxjs@number@of@lines@opt}
+ \edef\bxjs@layout{\bxjs@layout lines=\the\@tempcnta,}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\fullwidth}
+% 〔寸法レジスタ〕
+% ヘッダ・フッタ領域の横幅。
+% \begin{macrocode}
+\newdimen\fullwidth
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@textwidth@limit}
+% 〔寸法値マクロ〕
+% |bxjsbook| における、|\textwidth| 上限の値。
+%
+% \begin{macro}{\jsTextWidthLimit}
+% 〔実数値マクロ〕
+% |\bxjs@textwidth@limit| の全角(|\Cwd|)単位での値。
+% \begin{macrocode}
+%<*book>
+\newcommand\jsTextWidthLimit{40}
+\@tempdima=\jsTextWidthLimit\Cwd
+\ifx\bxjs@textwidth@limit@opt\@undefined\else
+ \bxjs@gset@tempcnta{\bxjs@textwidth@limit@opt}
+ \@tempdima=\@tempcnta\Cwd
+\fi
+\ifx\bxjs@textwidth@opt\@undefined\else
+ \jsSetQHLength\@tempdima{\bxjs@textwidth@opt}
+\fi
+\edef\bxjs@textwidth@limit{\the\@tempdima}
+\ifdim\@tempdima=\jsTextWidthLimit\Cwd\else
+ \bxjs@invscale\@tempdima{\strip@pt\Cwd}
+ \long\edef\jsTextWidthLimit{\strip@pt\@tempdima}
+\fi
+%</book>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@preproc@layout}
+% |geometry| の前処理。
+%
+% |geometry| は |\topskip| が標準の行高(|\ht\strutbox|)より小さくならない
+% ようにする自動調整を行うが、これをどうするかは未検討。
+% 今のところ、単純に回避(無効化)している。
+% \begin{macrocode}
+\def\bxjs@preproc@layout{%
+ \edef\bxjs@save@ht@strutbox{\the\ht\strutbox}\ht\strutbox=10\jsc@mpt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@postproc@layout}
+% |geometry| の後処理。
+% \begin{macrocode}
+\def\bxjs@postproc@layout{%
+% \end{macrocode}
+% |geometry| のドライバを再設定する。
+% \begin{macrocode}
+ \ifx\bxjs@geometry@driver\relax\else
+ \let\Gm@driver\bxjs@geometry@driver
+ \fi
+% \end{macrocode}
+% |\ht\strutbox| の値を元に戻す。
+% \begin{macrocode}
+ \ht\strutbox=\bxjs@save@ht@strutbox\relax
+% \end{macrocode}
+% |\textwidth| の値を補正する。
+% \begin{macrocode}
+ \ifbxjs@whole@zw@lines
+ \@tempdimb=\textwidth
+ \if@twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi
+ \advance\textwidth.005pt\relax
+ \divide\textwidth\@tempdima \multiply\textwidth\@tempdima
+ \advance\@tempdimb-\textwidth
+ \advance\oddsidemargin 0.5\@tempdimb
+ \advance\evensidemargin 0.5\@tempdimb
+ \fi
+ \fullwidth=\textwidth
+% \end{macrocode}
+% |bxjsbook| の場合は、|geometry| が設定した |\textwidth| は |\fullwidth| と
+% して扱い、その値から実際の |\textwidth| を導出する。
+% \begin{macrocode}
+%<*book>
+ \@tempdima=\bxjs@textwidth@limit\relax
+ \ifbxjs@whole@zw@lines
+ \advance\@tempdima.005pt\relax
+ \divide\@tempdima\Cwd \multiply\@tempdima\Cwd
+ \fi
+ \ifdim\textwidth>\@tempdima
+ \textwidth=\@tempdima
+ \addtolength\evensidemargin{\fullwidth-\textwidth}
+ \fi
+%</book>
+% \end{macrocode}
+% |\textheight| 関連の調整。
+% \begin{macrocode}
+ \@tempdimb=\textheight
+ \advance\textheight-\topskip
+ \advance\textheight.005pt\relax
+ \divide\textheight\baselineskip \multiply\textheight\baselineskip
+ \advance\textheight\topskip
+ \advance\@tempdimb-\textheight
+ \advance\topmargin0.5\@tempdimb
+% \end{macrocode}
+% |\headheight| 関連の調整。
+% \begin{macrocode}
+ \@tempdima=\topskip
+ \advance\headheight\@tempdima
+ \advance\topmargin-\@tempdima
+% \end{macrocode}
+% marginpar関連の調整。
+% \begin{macrocode}
+ \setlength\marginparsep{\columnsep}
+ \setlength\marginparpush{\baselineskip}
+ \setlength\marginparwidth{\paperwidth-\oddsidemargin-1truein%
+ -\textwidth-10\jsc@mmm-\marginparsep}
+ \ifbxjs@whole@zw@lines
+ \divide\marginparwidth\Cwd \multiply\marginparwidth\Cwd
+ \fi
+% \end{macrocode}
+% 連動する変数。
+% \begin{macrocode}
+ \maxdepth=.5\topskip
+ \stockwidth=\paperwidth
+ \stockheight=\paperheight
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsGeometryOptions}
+% |geometry|パッケージに渡すオプションのリスト。
+% \Note |geometry=user| 指定時にユーザが利用することを想定している。
+% \begin{macrocode}
+\edef\jsGeometryOptions{%
+ \bxjs@layout@paper,\bxjs@layout}
+% \end{macrocode}
+% \end{macro}
+% \end{ZRnote}
+%
+% \paragraph{geometry パッケージを読み込む \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+% |geoemtry=class| の場合に、実際に |geometry| パッケージを読みこむ。
+% \begin{macrocode}
+\ifx\bxjs@geometry\bxjs@geometry@class
+% \end{macrocode}
+%
+% |geometry| のドライバオプション指定。
+% |nopapersize| 指定時は、special命令出力を抑止するために
+% ドライバを |none| にする。
+% そうでない場合は、クラスで指定したドライバオプションが引き継がれる
+% ので何もしなくてよいが、例外として、ドライバが |dvipdfmx| の
+% 時は、現状の |geometry| は |dvipdfm| を指定する必要がある。
+% \begin{macrocode}
+\ifbxjs@papersize
+ \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx
+ \PassOptionsToPackage{dvipdfm}{geometry}
+ \else\ifx\bxjs@driver@given\bxjs@driver@@dvimode
+ \PassOptionsToPackage{dvipdfm}{geometry}
+ \fi\fi
+ \let\bxPapersizeSpecialDone=t
+\else
+ \PassOptionsToPackage{driver=none}{geometry}
+\fi
+% \end{macrocode}
+%
+% ここで |geometry| を読み込む。
+% \Note |geometry| のbegin-documentフックにおいて、Lua{\TeX}の
+% 旧版互換を有効にする。
+% \begin{macrocode}
+\AtBeginDocument{\bxjs@bd@pre@geometry@hook}
+\AtBeginDocument{\ImposeOldLuaTeXBehavior}
+\bxjs@preproc@layout
+\edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@layout@paper,\bxjs@layout]{geometry}%
+}\bxjs@next
+\AtBeginDocument{\RevokeOldLuaTeXBehavior}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@geometry@driver}
+% |geometry| が用いるドライバの名前。
+% \Note この値は一度決めた後は変わってほしくないので、
+% |\bxjs@postproc@layout| において書き戻す処理を入れている。
+% \begin{macrocode}
+\let\bxjs@geometry@driver\Gm@driver
+\bxjs@postproc@layout
+% \end{macrocode}
+% \end{macro}
+%
+% |geometry| のドライバ自動判別に対する前処理。
+% \begin{macrocode}
+\g@addto@macro\bxjs@bd@pre@geometry@hook{%
+% \end{macrocode}
+% |geometry| の4.x版に関する対策。
+% \Note |geometry| の4.x版の使用はBXJS 1.2版より非推奨とし、
+% 2.0版でサポートを廃止する予定。
+% \begin{macrocode}
+ \@ifpackagelater{geometry}{2010/02/12}{}{%else
+ \PackageWarningNoLine\bxjs@clsname
+ {The 'geometry' package installed\MessageBreak
+ is too old (< v5.0)}%
+ \if x\jsEngine \ifnum\mag=\@m\else
+ \def\bxjs@Gm@driver{pdftex}
+ \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
+ \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
+ \fi\fi}%
+% \end{macrocode}
+% エンジンが |platex-ng| の時は |geometry| のドライバを |pdftex| にする。
+% \begin{macrocode}
+ \ifjsWithpTeXng
+ \ifx\Gm@driver\@empty
+ \def\Gm@driver{pdftex}%
+ \fi
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\setpagelayout}
+% ページレイアウト設定のためのユーザ命令。
+% \begin{macrocode}
+\def\setpagelayout{%
+ \bxjs@ifplus{\bxjs@setpagelayout@a\tw@}{%else
+ \@ifstar{\bxjs@setpagelayout@a\@ne}{\bxjs@setpagelayout@a\z@}}}
+\def\bxjs@setpagelayout@a#1#2{%
+ \ifcase#1% modify
+ \def\bxjs@next{\ifjsc@mag truedimen,\fi #2}%
+ \or% reset(*)
+ \def\bxjs@next{reset,\bxjs@layout@paper,#2}%
+ \or% semireset(+)
+ \def\bxjs@next{reset,\bxjs@layout@paper,\bxjs@layout@base,#2}%
+ \fi
+ \bxjs@preproc@layout
+ \edef\bxjs@next{%
+ \noexpand\geometry{\bxjs@next}%
+ }\bxjs@next
+ \bxjs@postproc@layout}
+% \end{macrocode}
+% \end{macro}
+%
+% \end{ZRnote}
+%
+% \paragraph{geometry パッケージを読み込まない \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+% |geometry=user|の場合の処理。
+% \begin{macrocode}
+\else\ifx\bxjs@geometry\bxjs@geometry@user
+% \end{macrocode}
+%
+% この場合はユーザが何らかの方法(例えば |geometry| を読み込む)
+% でページレイアウトを設定する必要がある。
+% もし、本体開始時に |\textwidth| がカーネル設定の値(|.5\maxdimen|)
+% のままになっている場合はエラーを出す。
+% \Note |\jsUseMinimalPageLayout| は動作テスト用。
+% \begin{macrocode}
+\g@addto@macro\bxjs@begin@document@hook{%
+ \ifdim\textwidth=.5\maxdimen
+ \ClassError\bxjs@clsname
+ {Page layout is not properly set}%
+ {\@ehd}%
+ \fi}
+\def\jsUseMinimalPageLayout{%
+ \setlength{\textwidth}{6.5in}%
+ \setlength{\textheight}{8in}}
+% \end{macrocode}
+%
+% |\setpagelayout| はとりあえず無効にしておく。
+% \begin{macrocode}
+\let\bxjs@geometry@driver\relax
+\def\setpagelayout{%
+ \bxjs@ifplus{\bxjs@pagelayout@a}{%else
+ \@ifstar{\bxjs@pagelayout@a}{\bxjs@pagelayout@a}}}
+\def\bxjs@pagelayout@a#1{%
+ \ClassError\bxjs@clsname
+ {Command '\string\setpagelayout' is not supported,\MessageBreak
+ because 'geometry' value is not 'class'}\@eha}
+%
+\fi\fi
+% \end{macrocode}
+% \end{ZRnote}
+%
+% \paragraph{JSクラスと共通処理の開始 \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+% ここからのコードは以下の点を除いて JS クラスのものを踏襲する。
+% \begin{itemize}
+% \item zw の代わりに |\jsZw| を用いる。
+% \item article/report/book/slide の切り分けの処理が異なる。
+% \end{itemize}
+% \Note diffが崩壊するのを避けるためオリジナルのコードを無効化した状態で
+% 挿入しておく。
+% \end{ZRnote}
+% \begin{macrocode}
+%<*jsclasses>
+% \end{macrocode}
+%
+% \paragraph{縦方向のスペース}
+%
+% \begin{macro}{\headheight}
+% \begin{macro}{\topskip}
+%
+% |\topskip| は本文領域上端と本文1行目のベースラインとの距離です。
+% あまりぎりぎりの値にすると,本文中に $\int$ のような高い文字が
+% 入ったときに1行目のベースラインが他のページより下がってしまいます。
+% ここでは本文の公称フォントサイズ(10pt)にします。
+%
+% [2003-06-26] |\headheight| はヘッダの高さで,
+% 元は12ptでしたが,新ドキュメントクラスでは |\topskip|
+% と等しくしていました。ところが,|fancyhdr| パッケージ
+% で |\headheight| が小さいとおかしいことになるようです
+% ので,2倍に増やしました。代わりに,版面の上下揃えの
+% 計算では |\headheight| ではなく |\topskip| を使う
+% ことにしました。
+%
+% [2016-08-17] 圏点やルビが一行目に来た場合に下がるのを防ぐた
+% め,|\topskip| を10ptから1.38zwに増やしました。
+% |\headheight| は従来と同じ20ptのままとします。
+%
+% \begin{macrocode}
+\setlength\topskip{1.38zw}%% from 10\jsc@mpt (2016-08-17)
+\if@slide
+ \setlength\headheight{0\jsc@mpt}
+\else
+ \setlength\headheight{20\jsc@mpt}%% from 2\topskip (2016-08-17); from \topskip (2003-06-26)
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\footskip}
+%
+% |\footskip| は本文領域下端とフッタ下端との距離です。
+% 標準クラスファイルでは,book で0.35in(約8.89mm),
+% book 以外で30pt(約10.54mm)となっていましたが,
+% ここではA4判のときちょうど1cmとなるように,
+% |\paperheight| の0.03367倍(最小 |\baselineskip|)としました。
+% 書籍については,フッタは使わないことにして,ゼロにしました。
+%
+% \begin{macrocode}
+%<*article|kiyou>
+\if@slide
+ \setlength\footskip{0pt}
+\else
+ \setlength\footskip{0.03367\paperheight}
+ \ifdim\footskip<\baselineskip
+ \setlength\footskip{\baselineskip}
+ \fi
+\fi
+%</article|kiyou>
+%<jspf>\setlength\footskip{9\jsc@mmm}
+%<*book>
+\if@report
+ \setlength\footskip{0.03367\paperheight}
+ \ifdim\footskip<\baselineskip
+ \setlength\footskip{\baselineskip}
+ \fi
+\else
+ \setlength\footskip{0pt}
+\fi
+%</book>
+%<*report>
+\setlength\footskip{0.03367\paperheight}
+\ifdim\footskip<\baselineskip
+ \setlength\footskip{\baselineskip}
+\fi
+%</report>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\headsep}
+%
+% |\headsep| はヘッダ下端と本文領域上端との距離です。
+% 元は book で18pt(約6.33mm),
+% それ以外で25pt(約8.79mm)になっていました。
+% ここでは article は |\footskip| $-$ |\topskip| としました。
+%
+% [2016-10-08] article の \texttt{slide} のとき,
+% および book の非 \texttt{report} と kiyou のときに |\headsep| を
+% 減らしそこねていたのを修正しました(2016-08-17での修正漏れ)。
+%
+% \begin{macrocode}
+%<*article>
+\if@slide
+ \setlength\headsep{0\jsc@mpt}
+ \addtolength\headsep{-\topskip}%% added (2016-10-08)
+ \addtolength\headsep{10\jsc@mpt}%% added (2016-10-08)
+\else
+ \setlength\headsep{\footskip}
+ \addtolength\headsep{-\topskip}
+\fi
+%</article>
+%<*book>
+\if@report
+ \setlength\headsep{\footskip}
+ \addtolength\headsep{-\topskip}
+\else
+ \setlength\headsep{6\jsc@mmm}
+ \addtolength\headsep{-\topskip}%% added (2016-10-08)
+ \addtolength\headsep{10\jsc@mpt}%% added (2016-10-08)
+\fi
+%</book>
+%<*report>
+\setlength\headsep{\footskip}
+\addtolength\headsep{-\topskip}
+%</report>
+%<*jspf>
+\setlength\headsep{9\jsc@mmm}
+\addtolength\headsep{-\topskip}
+%</jspf>
+%<*kiyou>
+\setlength\headheight{0\jsc@mpt}
+\setlength\headsep{0\jsc@mpt}
+\addtolength\headsep{-\topskip}%% added (2016-10-08)
+\addtolength\headsep{10\jsc@mpt}%% added (2016-10-08)
+%</kiyou>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maxdepth}
+%
+% |\maxdepth| は本文最下行の最大の深さで,
+% plain \TeX や\LaTeX~2.09では4ptに固定でした。
+% \LaTeX2e では |\maxdepth| $+$ |\topskip| を本文フォントサイズ
+% の1.5倍にしたいのですが,|\topskip| は本文フォントサイズ
+% (ここでは10pt)に等しいので,結局 |\maxdepth| は |\topskip|
+% の半分の値(具体的には5pt)にします。
+%
+% \begin{macrocode}
+\setlength\maxdepth{.5\topskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{本文の幅と高さ}
+%
+% \begin{macro}{\fullwidth}
+%
+% 本文の幅が全角40文字を超えると読みにくくなります。
+% そこで,書籍の場合に限って,
+% 紙の幅が広いときは外側のマージンを余分にとって全角40文字に押え,
+% ヘッダやフッタは本文領域より広く取ることにします。
+% このときヘッダやフッタの幅を表す |\fullwidth| という長さを定義します。
+%
+% \begin{macrocode}
+\newdimen\fullwidth
+% \end{macrocode}
+%
+% この |\fullwidth| は article では紙幅 |\paperwidth|の0.76倍を超えない
+% 全角幅の整数倍(二段組では全角幅の偶数倍)にします。0.76倍という数値は
+% A4縦置きの場合に紙幅から約2インチを引いた値になるように選びました。
+% book では紙幅から36ミリを引いた値にしました。
+%
+% \begin{macro}{\textwidth}
+%
+% 書籍以外では本文領域の幅 |\textwidth| は |\fullwidth| と等しくします。
+% |article| ではA4縦置きで49文字となります。
+% 某学会誌スタイルでは50zw(25文字×2段)+段間8mmとします。
+%
+% \begin{macrocode}
+%<*article>
+\if@slide
+ \setlength\fullwidth{0.9\paperwidth}
+\else
+ \setlength\fullwidth{0.76\paperwidth}
+\fi
+\if@twocolumn \@tempdima=2zw \else \@tempdima=1zw \fi
+\divide\fullwidth\@tempdima \multiply\fullwidth\@tempdima
+\setlength\textwidth{\fullwidth}
+%</article>
+%<*book>
+\if@report
+ \setlength\fullwidth{0.76\paperwidth}
+\else
+ \setlength\fullwidth{\paperwidth}
+ \addtolength\fullwidth{-36\jsc@mmm}
+\fi
+\if@twocolumn \@tempdima=2zw \else \@tempdima=1zw \fi
+\divide\fullwidth\@tempdima \multiply\fullwidth\@tempdima
+\setlength\textwidth{\fullwidth}
+\if@report \else
+ \if@twocolumn \else
+ \ifdim \fullwidth>40zw
+ \setlength\textwidth{40zw}
+ \fi
+ \fi
+\fi
+%</book>
+%<*report>
+\setlength\fullwidth{0.76\paperwidth}
+\if@twocolumn \@tempdima=2zw \else \@tempdima=1zw \fi
+\divide\fullwidth\@tempdima \multiply\fullwidth\@tempdima
+\setlength\textwidth{\fullwidth}
+%</report>
+%<*jspf>
+\setlength\fullwidth{50zw}
+\addtolength\fullwidth{8\jsc@mmm}
+\setlength\textwidth{\fullwidth}
+%</jspf>
+%<*kiyou>
+\setlength\fullwidth{48zw}
+\addtolength\fullwidth{\columnsep}
+\setlength\textwidth{\fullwidth}
+%</kiyou>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\textheight}
+%
+% 紙の高さ |\paperheight| は,1インチと |\topmargin|
+% と |\headheight| と |\headsep| と |\textheight|
+% と |\footskip| とページ下部の余白を加えたものです。
+%
+% 本文部分の高さ |\textheight| は,
+% 紙の高さ |\paperheight| の0.83倍から,
+% ヘッダの高さ,ヘッダと本文の距離,本文とフッタ下端の距離,
+% |\topskip| を引き,
+% それを |\baselineskip| の倍数に切り捨て,
+% 最後に |\topskip| を加えます。
+% 念のため0.1ポイント余分に加えておきます。
+% 0.83倍という数値は,A4縦置きの場合に紙の高さから
+% 上下マージン各約1インチを引いた値になるように選びました。
+%
+% 某学会誌スタイルでは44行にします。
+%
+% [2003-06-26] |\headheight| を |\topskip| に直しました。
+% 以前はこの二つは値が同じであったので,変化はないはずです。
+%
+% [2016-08-26] |\topskip| を10ptから1.38zwに増やしましたので,
+% その分 |\textheight| を増やします(2016-08-17での修正漏れ)。
+%
+% [2016-10-08] article の slide のときに |\headheight| はゼロ
+% なので,さらに修正しました(2016-08-17での修正漏れ)。
+%
+% \begin{macrocode}
+%<*article|book|report>
+\if@slide
+ \setlength{\textheight}{0.95\paperheight}
+\else
+ \setlength{\textheight}{0.83\paperheight}
+\fi
+\addtolength{\textheight}{-10\jsc@mpt}%% from -\topskip (2016-10-08); from -\headheight (2003-06-26)
+\addtolength{\textheight}{-\headsep}
+\addtolength{\textheight}{-\footskip}
+\addtolength{\textheight}{-\topskip}
+\divide\textheight\baselineskip
+\multiply\textheight\baselineskip
+%</article|book|report>
+%<jspf>\setlength{\textheight}{51\baselineskip}
+%<kiyou>\setlength{\textheight}{47\baselineskip}
+\addtolength{\textheight}{\topskip}
+\addtolength{\textheight}{0.1\jsc@mpt}
+%<jspf>\setlength{\mathindent}{10\jsc@mmm}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\flushbottom}
+%
+% [2016-07-18] |\textheight| に念のため0.1ポイント余裕を持たせて
+% いるのと同様に,|\flushbottom| にも余裕を持たせます。
+% 元の\LaTeXe での完全な |\flushbottom| の定義は
+%\begin{verbatim}
+% \def\flushbottom{%
+% \let\@textbottom\relax \let\@texttop\relax}
+%\end{verbatim}
+% ですが,次のようにします。
+%
+% \begin{macrocode}
+\def\flushbottom{%
+ \def\@textbottom{\vskip \z@ \@plus.1\jsc@mpt}%
+ \let\@texttop\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\marginparsep}
+% \begin{macro}{\marginparpush}
+%
+% |\marginparsep| は欄外の書き込みと本文との間隔です。
+% |\marginparpush| は欄外の書き込みどうしの最小の間隔です。
+%
+% \begin{macrocode}
+\setlength\marginparsep{\columnsep}
+\setlength\marginparpush{\baselineskip}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\oddsidemargin}
+% \begin{macro}{\evensidemargin}
+%
+% それぞれ奇数ページ,偶数ページの左マージンから1インチ引いた値です。
+% 片面印刷では |\oddsidemargin| が使われます。
+% \TeX は上・左マージンに |1truein| を挿入しますが,
+% トンボ関係のオプションが指定されるとp\LaTeXe (|plcore.ltx|)
+% はトンボの内側に |1in| のスペース(|1truein| ではなく)を挿入するので,
+% 場合分けしています。
+%
+% \begin{macrocode}
+\setlength{\oddsidemargin}{\paperwidth}
+\addtolength{\oddsidemargin}{-\fullwidth}
+\setlength{\oddsidemargin}{.5\oddsidemargin}
+\iftombow
+ \addtolength{\oddsidemargin}{-1in}
+\else
+ \addtolength{\oddsidemargin}{-\inv@mag in}
+\fi
+\setlength{\evensidemargin}{\oddsidemargin}
+\if@mparswitch
+ \addtolength{\evensidemargin}{\fullwidth}
+ \addtolength{\evensidemargin}{-\textwidth}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\marginparwidth}
+%
+% |\marginparwidth| は欄外の書き込みの横幅です。
+% 外側マージンの幅(|\evensidemargin| $+$ 1インチ)から1センチを引き,
+% さらに |\marginparsep|(欄外の書き込みと本文のアキ)を引いた値に
+% しました。最後に1\,zwの整数倍に切り捨てます。
+%
+% \begin{macrocode}
+\setlength\marginparwidth{\paperwidth}
+\addtolength\marginparwidth{-\oddsidemargin}
+\addtolength\marginparwidth{-\inv@mag in}
+\addtolength\marginparwidth{-\textwidth}
+\addtolength\marginparwidth{-10\jsc@mmm}
+\addtolength\marginparwidth{-\marginparsep}
+\@tempdima=1zw
+\divide\marginparwidth\@tempdima
+\multiply\marginparwidth\@tempdima
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\topmargin}
+%
+% 上マージン(紙の上端とヘッダ上端の距離)
+% から1インチ引いた値です。
+%
+% [2003-06-26] |\headheight| を |\topskip| に直しました。
+% 以前はこの二つは値が同じであったので,変化はないはずです。
+%
+% [2016-08-17] |\topskip| を10ptから1.38zwに直しましたが,
+% |\topmargin| は従来の値から変わらないように調節しました。
+% …のつもりでしたが,|\textheight| を増やし忘れていたので
+% 変わってしまっていました(2016-08-26修正済み)。
+%
+% \begin{macrocode}
+\setlength\topmargin{\paperheight}
+\addtolength\topmargin{-\textheight}
+\if@slide
+ \addtolength\topmargin{-\headheight}
+\else
+ \addtolength\topmargin{-10\jsc@mpt}%% from -\topskip (2016-10-08); from -\headheight (2003-06-26)
+\fi
+\addtolength\topmargin{-\headsep}
+\addtolength\topmargin{-\footskip}
+\setlength\topmargin{0.5\topmargin}
+%<kiyou>\setlength\topmargin{81truebp}
+\iftombow
+ \addtolength\topmargin{-1in}
+\else
+ \addtolength\topmargin{-\inv@mag in}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</jsclasses>
+% \end{macrocode}
+%
+% \paragraph{脚注}
+%
+% \begin{macro}{\footnotesep}
+%
+% 各脚注の頭に入る支柱(strut)の高さです。
+% 脚注間に余分のアキが入らないように,
+% |\footnotesize| の支柱の高さ(行送りの0.7倍)に等しくします。
+%
+% \begin{ZRnote}
+% ここは元々は
+%\begin{verbatim}
+%{\footnotesize\global\setlength\footnotesep{\baselineskip}}
+%\end{verbatim}
+% としていたが、そもそも |\global||\setlength|~ は\Pkg{calc}使用時には
+% 有意義な動作をしない。
+% |\global||\footnotesep| だと所望の値が得られるが、
+% 同時に |\footnotesize| のフォントを固定させてしまうという副作用をもつ。
+% なので、実際の設定値を直接使うことにする。
+% \end{ZRnote}
+% \begin{macrocode}
+\footnotesep=11\p@? \footnotesep=0.7\footnotesep
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footins}
+%
+% |\skip\footins| は本文の最終行と最初の脚注との間の距離です。
+% 標準の10ポイントクラスでは 9 plus 4 minus 2 ポイントになっていますが,
+% 和文の行送りを考えてもうちょっと大きくします。
+%
+% \begin{macrocode}
+\setlength{\skip\footins}{16\p@? \@plus 5\p@? \@minus 2\p@?}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{フロート関連}
+%
+% フロート(図,表)関連のパラメータは\LaTeXe 本体で定義されていますが,
+% ここで設定変更します。本文ページ(本文とフロートが共存するページ)
+% とフロートだけのページで設定が異なります。
+% ちなみに,カウンタは内部では |\c@| を名前に冠したマクロになっています。
+%
+% \begin{macro}{\c@topnumber}
+%
+% |topnumber| カウンタは本文ページ上部のフロートの最大数です。
+%
+% [2003-08-23] ちょっと増やしました。
+%
+% \begin{macrocode}
+\setcounter{topnumber}{9}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\topfraction}
+%
+% 本文ページ上部のフロートが占有できる最大の割合です。
+% フロートが入りやすいように,元の値 0.7 を 0.8 [2003-08-23: 0.85] に変えてあります。
+%
+% \begin{macrocode}
+\renewcommand{\topfraction}{.85}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@bottomnumber}
+%
+% |bottomnumber| カウンタは本文ページ下部のフロートの最大数です。
+%
+% [2003-08-23] ちょっと増やしました。
+%
+% \begin{macrocode}
+\setcounter{bottomnumber}{9}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bottomfraction}
+%
+% 本文ページ下部のフロートが占有できる最大の割合です。元は 0.3 でした。
+%
+% \begin{macrocode}
+\renewcommand{\bottomfraction}{.8}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@totalnumber}
+%
+% |totalnumber| カウンタは本文ページに入りうるフロートの最大数です。
+%
+% [2003-08-23] ちょっと増やしました。
+%
+% \begin{macrocode}
+\setcounter{totalnumber}{20}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textfraction}
+%
+% 本文ページに最低限入らなければならない本文の割合です。
+% フロートが入りやすいように元の 0.2 を 0.1 に変えました。
+%
+% \begin{macrocode}
+\renewcommand{\textfraction}{.1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\floatpagefraction}
+%
+% フロートだけのページでのフロートの最小割合です。
+% これも 0.5 を 0.8 に変えてあります。
+%
+% \begin{macrocode}
+\renewcommand{\floatpagefraction}{.8}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@dbltopnumber}
+%
+% 二段組のとき本文ページ上部に出力できる
+% 段抜きフロートの最大数です。
+%
+% [2003-08-23] ちょっと増やしました。
+%
+% \begin{macrocode}
+\setcounter{dbltopnumber}{9}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbltopfraction}
+%
+% 二段組のとき本文ページ上部に出力できる
+% 段抜きフロートが占めうる最大の割合です。
+% 0.7 を 0.8 に変えてあります。
+%
+% \begin{macrocode}
+\renewcommand{\dbltopfraction}{.8}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatpagefraction}
+%
+% 二段組のときフロートだけのページに入るべき
+% 段抜きフロートの最小割合です。
+% 0.5 を 0.8 に変えてあります。
+%
+% \begin{macrocode}
+\renewcommand{\dblfloatpagefraction}{.8}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\floatsep}
+% \begin{macro}{\textfloatsep}
+% \begin{macro}{\intextsep}
+%
+% |\floatsep| はページ上部・下部のフロート間の距離です。
+% |\textfloatsep| はページ上部・下部のフロートと本文との距離です。
+% |\intextsep| は本文の途中に出力されるフロートと本文との距離です。
+%
+% \begin{macrocode}
+\setlength\floatsep {12\p@? \@plus 2\p@? \@minus 2\p@?}
+\setlength\textfloatsep{20\p@? \@plus 2\p@? \@minus 4\p@?}
+\setlength\intextsep {12\p@? \@plus 2\p@? \@minus 2\p@?}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatsep}
+% \begin{macro}{\dbltextfloatsep}
+%
+% 二段組のときの段抜きのフロートについての値です。
+%
+% \begin{macrocode}
+\setlength\dblfloatsep {12\p@? \@plus 2\p@? \@minus 2\p@?}
+\setlength\dbltextfloatsep{20\p@? \@plus 2\p@? \@minus 4\p@?}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@fptop}
+% \begin{macro}{\@fpsep}
+% \begin{macro}{\@fpbot}
+%
+% フロートだけのページに入るグルーです。
+% |\@fptop| はページ上部,
+% |\@fpbot| はページ下部,
+% |\@fpsep| はフロート間に入ります。
+%
+% \begin{macrocode}
+\setlength\@fptop{0\p@? \@plus 1fil}
+\setlength\@fpsep{8\p@? \@plus 2fil}
+\setlength\@fpbot{0\p@? \@plus 1fil}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dblfptop}
+% \begin{macro}{\@dblfpsep}
+% \begin{macro}{\@dblfpbot}
+%
+% 段抜きフロートについての値です。
+%
+% \begin{macrocode}
+\setlength\@dblfptop{0\p@? \@plus 1fil}
+\setlength\@dblfpsep{8\p@? \@plus 2fil}
+\setlength\@dblfpbot{0\p@? \@plus 1fil}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{改ページ(日本語\TeX{}開発コミュニティ版のみ)}\label{sec:cleardoublepage}
+%
+% \begin{macro}{\pltx@cleartorightpage}
+% \begin{macro}{\pltx@cleartoleftpage}
+% \begin{macro}{\pltx@cleartooddpage}
+% \begin{macro}{\pltx@cleartoevenpage}
+% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて,
+% 同じ命令を追加しました。
+% \begin{enumerate}
+% \item|\pltx@cleartorightpage|:右ページになるまでページを繰る命令
+% \item|\pltx@cleartoleftpage|:左ページになるまでページを繰る命令
+% \item|\pltx@cleartooddpage|:奇数ページになるまでページを繰る命令
+% \item|\pltx@cleartoevenpage|:偶数ページになるまでページを繰る命令
+% \end{enumerate}
+% となっています。
+%
+% \begin{macrocode}
+%\def\pltx@cleartorightpage{\clearpage\if@twoside
+% \ifodd\c@page
+% \iftdir
+% \hbox{}\thispagestyle{empty}\newpage
+% \if@twocolumn\hbox{}\newpage\fi
+% \fi
+% \else
+% \ifydir
+% \hbox{}\thispagestyle{empty}\newpage
+% \if@twocolumn\hbox{}\newpage\fi
+% \fi
+% \fi\fi}
+%\def\pltx@cleartoleftpage{\clearpage\if@twoside
+% \ifodd\c@page
+% \ifydir
+% \hbox{}\thispagestyle{empty}\newpage
+% \if@twocolumn\hbox{}\newpage\fi
+% \fi
+% \else
+% \iftdir
+% \hbox{}\thispagestyle{empty}\newpage
+% \if@twocolumn\hbox{}\newpage\fi
+% \fi
+% \fi\fi}
+\def\pltx@cleartooddpage{\clearpage\if@twoside
+ \ifodd\c@page\else
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi\fi}
+\def\pltx@cleartoevenpage{\clearpage\if@twoside
+ \ifodd\c@page
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi\fi}
+% \end{macrocode}
+%
+% \begin{ZRnote}
+% BXJSクラスでは |\iftdir| 等が使えないので、
+% 横組を仮定した定義を用いる。
+% \begin{macrocode}
+\let\pltx@cleartorightpage\pltx@cleartooddpage
+\let\pltx@cleartoleftpage\pltx@cleartoevenpage
+% \end{macrocode}
+% \end{ZRnote}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cleardoublepage}
+% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて,
+% reportとbookクラスの場合に|\cleardoublepage|を再定義します。
+% \begin{macrocode}
+%<*book|report>
+\if@openleft
+ \let\cleardoublepage\pltx@cleartoleftpage
+\else\if@openright
+ \let\cleardoublepage\pltx@cleartorightpage
+\fi\fi
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
+% \section{ページスタイル}\label{sec:pagestyle}
+%
+% ページスタイルとして,\LaTeXe (欧文版)の標準クラス
+% では |empty|,|plain|,|headings|,|myheadings| があります。
+% このうち |empty|,|plain| スタイルは\LaTeXe 本体
+% で定義されています。
+%
+% アスキーのクラスファイルでは |headnombre|,|footnombre|,
+% |bothstyle|,|jpl@in| が追加されていますが,
+% ここでは欧文標準のものだけにしました。
+%
+% ページスタイルは |\ps@...| の形のマクロで定義されています。
+%
+% \begin{macro}{\@evenhead}
+% \begin{macro}{\@oddhead}
+% \begin{macro}{\@evenfoot}
+% \begin{macro}{\@oddfoot}
+%
+% |\@oddhead|,|\@oddfoot|,|\@evenhead|,|\@evenfoot| は
+% 偶数・奇数ページの柱(ヘッダ,フッタ)を出力する命令です。
+% これらは |\fullwidth| 幅の |\hbox| の中で呼び出されます。
+% |\ps@...| の中で定義しておきます。
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% 柱の内容は,|\chapter| が呼び出す |\chaptermark{何々}|,
+% |\section| が呼び出す |\sectionmark{何々}| で設定します。
+% 柱を扱う命令には次のものがあります。
+%
+% \begin{quote}
+% \begin{tabbing}
+% |\markboth{左}{右} | \= 両方の柱を設定します。\\
+% |\markright{右}| \> 右の柱を設定します。\\
+% |\leftmark| \> 左の柱を出力します。\\
+% |\rightmark| \> 右の柱を出力します。
+% \end{tabbing}
+% \end{quote}
+%
+% 柱を設定する命令は,右の柱が左の柱の下位にある場合は十分まともに
+% 動作します。たとえば左マークを |\chapter|,右マークを |\section|
+% で変更する場合がこれにあたります。
+% しかし,同一ページに複数の |\markboth| があると,
+% おかしな結果になることがあります。
+%
+% |\tableofcontents| のような命令で使われる |\@mkboth| は,
+% |\ps@...| コマンド中で |\markboth| か |\@gobbletwo|(何もしない)
+% に |\let| されます。
+%
+% \begin{macro}{\ps@empty}
+%
+% |empty| ページスタイルの定義です。
+% \LaTeX 本体で定義されているものをコメントアウトした形で
+% 載せておきます。
+%
+% \begin{macrocode}
+% \def\ps@empty{%
+% \let\@mkboth\@gobbletwo
+% \let\@oddhead\@empty
+% \let\@oddfoot\@empty
+% \let\@evenhead\@empty
+% \let\@evenfoot\@empty}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps@plainhead}
+% \begin{macro}{\ps@plainfoot}
+% \begin{macro}{\ps@plain}
+%
+% |plainhead| はシンプルなヘッダだけのページスタイルです。
+%
+% |plainfoot| はシンプルなフッタだけのページスタイルです。
+%
+% |plain| は |book| では |plainhead|,それ以外では |plainfoot| になります。
+%
+% \begin{macrocode}
+\def\ps@plainfoot{%
+ \let\@mkboth\@gobbletwo
+ \let\@oddhead\@empty
+ \def\@oddfoot{\normalfont\hfil\thepage\hfil}%
+ \let\@evenhead\@empty
+ \let\@evenfoot\@oddfoot}
+\def\ps@plainhead{%
+ \let\@mkboth\@gobbletwo
+ \let\@oddfoot\@empty
+ \let\@evenfoot\@empty
+ \def\@evenhead{%
+ \if@mparswitch \hss \fi
+ \hbox to \fullwidth{\textbf{\thepage}\hfil}%
+ \if@mparswitch\else \hss \fi}%
+ \def\@oddhead{%
+ \hbox to \fullwidth{\hfil\textbf{\thepage}}\hss}}
+%<book>\let\ps@plain\ps@plainhead
+%<!book>\let\ps@plain\ps@plainfoot
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ps@headings}
+%
+% |headings| スタイルはヘッダに見出しとページ番号を出力します。
+% ここではヘッダにアンダーラインを引くようにしてみました。
+%
+% まず article の場合です。
+%
+% \begin{macrocode}
+%<*article|slide>
+\if@twoside
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \let\@evenfoot\@empty
+ \def\@evenhead{\if@mparswitch \hss \fi
+ \underline{\hbox to \fullwidth{\textbf{\thepage}\hfil\leftmark}}%
+ \if@mparswitch\else \hss \fi}%
+ \def\@oddhead{%
+ \underline{%
+ \hbox to \fullwidth{{\rightmark}\hfil\textbf{\thepage}}}\hss}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{\markboth{%
+ \ifnum \c@secnumdepth >\z@ \bxjs@label@sect{section}\hskip1\jsZw\fi
+ ##1}{}}%
+ \def\subsectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\@ne \bxjs@label@sect{subsection}\hskip1\jsZw\fi
+ ##1}}%
+ }
+\else % if not twoside
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{%
+ \underline{%
+ \hbox to \fullwidth{{\rightmark}\hfil\textbf{\thepage}}}\hss}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\z@ \bxjs@label@sect{section}\hskip1\jsZw\fi
+ ##1}}}
+\fi
+%</article|slide>
+% \end{macrocode}
+%
+% 次は book および report の場合です。
+% [2011-05-10] しっぽ愛好家さん [qa:6370] のパッチを取り込ませていただきました
+% (北見さん [qa:55896] のご指摘ありがとうございます)。
+%
+% \begin{ZRnote}
+% |\autoxspacing| は未定義の可能性があるため、
+% 「|\autoxspacing| が定義済なら実行する」マクロ |\bxjs@maybe@autoxspacing| を
+% 代わりに用いる。
+% \end{ZRnote}
+%
+% \begin{macrocode}
+%<*book|report>
+\def\bxjs@maybe@autoxspacing{%
+ \ifx\autoxspacing\@undefined\else \autoxspacing \fi}
+\newif\if@omit@number
+\def\ps@headings{%
+ \let\@oddfoot\@empty
+ \let\@evenfoot\@empty
+ \def\@evenhead{%
+ \if@mparswitch \hss \fi
+ \underline{\hbox to \fullwidth{\bxjs@maybe@autoxspacing
+ \textbf{\thepage}\hfil\leftmark}}%
+ \if@mparswitch\else \hss \fi}%
+ \def\@oddhead{\underline{\hbox to \fullwidth{\bxjs@maybe@autoxspacing
+ {\if@twoside\rightmark\else\leftmark\fi}\hfil\textbf{\thepage}}}\hss}%
+ \let\@mkboth\markboth
+ \def\chaptermark##1{\markboth{%
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \if@omit@number\else
+ \@chapapp\thechapter\@chappos\hskip1\jsZw
+ \fi
+ \fi
+ \fi
+ ##1}{}}%
+ \def\sectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\z@ \bxjs@label@sect{section}\hskip1\jsZw\fi
+ ##1}}}%
+%</book|report>
+% \end{macrocode}
+%
+% 最後は学会誌の場合です。
+%
+% \begin{macrocode}
+%<*jspf>
+\def\ps@headings{%
+ \def\@oddfoot{\normalfont\hfil\thepage\hfil}
+ \def\@evenfoot{\normalfont\hfil\thepage\hfil}
+ \def\@oddhead{\normalfont\hfil \@title \hfil}
+ \def\@evenhead{\normalfont\hfil プラズマ・核融合学会誌\hfil}}
+%</jspf>
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\ps@myheadings}
+%
+% |myheadings| ページスタイルではユーザが |\markboth| や |\markright| で
+% 柱を設定するため,ここでの定義は非常に簡単です。
+%
+% [2004-01-17] 渡辺徹さんのパッチを適用しました。
+%
+% \begin{macrocode}
+\def\ps@myheadings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{%
+ \if@mparswitch \hss \fi%
+ \hbox to \fullwidth{\thepage\hfil\leftmark}%
+ \if@mparswitch\else \hss \fi}%
+ \def\@oddhead{%
+ \hbox to \fullwidth{\rightmark\hfil\thepage}\hss}%
+ \let\@mkboth\@gobbletwo
+%<book|report> \let\chaptermark\@gobble
+ \let\sectionmark\@gobble
+%<!book&!report> \let\subsectionmark\@gobble
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{文書のマークアップ}
+%
+% \subsection{表題}
+%
+% \begin{macro}{\title}
+% \begin{macro}{\author}
+% \begin{macro}{\date}
+%
+% これらは\LaTeX 本体で次のように定義されています。
+% ここではコメントアウトした形で示します。
+%
+% \begin{macrocode}
+% \newcommand*{\title}[1]{\gdef\@title{#1}}
+% \newcommand*{\author}[1]{\gdef\@author{#1}}
+% \newcommand*{\date}[1]{\gdef\@date{#1}}
+% \date{\today}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{ZRnote}
+% \begin{macro}{\subtitle}
+% \begin{macro}{\jsSubtitle}
+% 副題を設定する。
+% \Note プレアンブルにおいて |\newcommand*{\subtitle}{...}| が
+% 行われることへの対策として、
+% |\subtitle| の定義を |\title| の実行まで遅延させることにする。
+% もしどうしても主題より前に副題を設定したい場合は、
+% |\jsSubtitle| 命令を直接用いればよい。
+%
+% 本体を |\jsSubtitle| として定義する。
+% \begin{macrocode}
+\newcommand*{\jsSubtitle}[1]{\gdef\bxjs@subtitle{#1}}
+%\let\bxjs@subtitle\@undefined
+% \end{macrocode}
+%
+% |\title| にフックを入れる。
+% \begin{macrocode}
+\renewcommand*{\title}[1]{\bxjs@decl@subtitle\gdef\@title{#1}}
+\AtBeginDocument{\bxjs@decl@subtitle}
+\def\bxjs@decl@subtitle{%
+ \global\let\bxjs@decl@subtitle\relax
+ \ifx\subtitle\@undefined
+ \global\let\subtitle\jsSubtitle
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@annihilate@subtitle}
+% |\subtitle| 命令を無効化する。
+% \Note 独自の |\subtitle| が使われている場合は無効化しない。
+% \begin{macrocode}
+\def\bxjs@annihilate@subtitle{%
+ \ifx\subtitle\jsSubtitle \global\let\subtitle\relax \fi
+ \global\let\jsSubtitle\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \end{ZRnote}
+%
+% \begin{macro}{\etitle}
+% \begin{macro}{\eauthor}
+% \begin{macro}{\keywords}
+%
+% 某学会誌スタイルで使う英語のタイトル,英語の著者名,キーワード,メールアドレスです。
+%
+% \begin{macrocode}
+%<*jspf>
+\newcommand*{\etitle}[1]{\gdef\@etitle{#1}}
+\newcommand*{\eauthor}[1]{\gdef\@eauthor{#1}}
+\newcommand*{\keywords}[1]{\gdef\@keywords{#1}}
+\newcommand*{\email}[1]{\gdef\authors@mail{#1}}
+\newcommand*{\AuthorsEmail}[1]{\gdef\authors@mail{author's e-mail:\ #1}}
+%</jspf>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\plainifnotempty}
+%
+% 従来の標準クラスでは,文書全体のページスタイルを |empty| に
+% しても表題のあるページだけ |plain| になってしまうことが
+% ありました。これは |\maketitle| の定義中
+% に |\thispagestyle|\hspace{0pt}|{plain}| が入っている
+% ためです。この問題を解決するために,
+% 「全体のページスタイルが |empty| でないなら
+% このページのスタイルを |plain| にする」という次の
+% 命令を作ることにします。
+%
+% \begin{macrocode}
+\def\plainifnotempty{%
+ \ifx \@oddhead \@empty
+ \ifx \@oddfoot \@empty
+ \else
+ \thispagestyle{plainfoot}%
+ \fi
+ \else
+ \thispagestyle{plainhead}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maketitle}
+%
+% 表題を出力します。
+% 著者名を出力する部分は,欧文の標準クラスファイルでは |\large|,
+% 和文のものでは |\Large| になっていましたが,ここでは |\large|
+% にしました。
+%
+% [2016-11-16] 新設された \texttt{nomag} および \texttt{nomag*} オプション
+% の場合をデフォルト(\texttt{usemag} 相当)に合わせるため,|\smallskip| を
+% |\jsc@smallskip| に置き換えました。|\smallskip| のままでは
+% \texttt{nomag(*)} の場合にスケールしなくなり,レイアウトが変わってしまいます。
+%
+% \begin{macrocode}
+%<*article|book|report|slide>
+\if@titlepage
+ \newcommand{\maketitle}{%
+ \begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let\footnote\thanks
+ \null\vfil
+ \if@slide
+ {\footnotesize \@date}%
+ \begin{center}
+ \mbox{} \\[1\jsZw]
+ \large
+ {\maybeblue\hrule height0\p@? depth2\p@?\relax}\par
+ \jsc@smallskip
+ \@title
+ \ifx\bxjs@subtitle\@undefined\else
+ \par\vskip\z@
+ {\small \bxjs@subtitle\par}
+ \fi
+ \jsc@smallskip
+ {\maybeblue\hrule height0\p@? depth2\p@?\relax}\par
+ \vfill
+ {\small \@author}%
+ \end{center}
+ \else
+ \vskip 60\p@?
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \ifx\bxjs@subtitle\@undefined\else
+ \vskip5\p@?
+ {\normalsize \bxjs@subtitle\par}
+ \fi
+ \vskip 3em%
+ {\large
+ \lineskip .75em
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1.5em
+ {\large \@date \par}%
+ \end{center}%
+ \fi
+ \par
+ \@thanks\vfil\null
+ \end{titlepage}%
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ \bxjs@annihilate@subtitle
+ }%
+\else
+ \newcommand{\maketitle}{\par
+ \begingroup
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
+ \long\def\@makefntext##1{\advance\leftskip 3\jsZw
+ \parindent 1\jsZw\noindent
+ \llap{\@textsuperscript{\normalfont\@thefnmark}\hskip0.3\jsZw}##1}%
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle
+ \fi
+ \plainifnotempty
+ \@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ \bxjs@annihilate@subtitle
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@maketitle}
+%
+% 独立した表題ページを作らない場合の表題の出力形式です。
+%
+% \begin{macrocode}
+ \def\@maketitle{%
+ \newpage\null
+ \vskip 2em
+ \begin{center}%
+ \let\footnote\thanks
+ {\LARGE \@title \par}%
+ \ifx\bxjs@subtitle\@undefined\else
+ \vskip3\p@?
+ {\normalsize \bxjs@subtitle\par}
+ \fi
+ \vskip 1.5em
+ {\large
+ \lineskip .5em
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em
+ {\large \@date}%
+ \end{center}%
+ \par\vskip 1.5em
+%<article|slide> \ifvoid\@abstractbox\else\centerline{\box\@abstractbox}\vskip1.5em\fi
+ }
+\fi
+%</article|book|report|slide>
+%<*jspf>
+\newcommand{\maketitle}{\par
+ \begingroup
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
+ \long\def\@makefntext##1{\advance\leftskip 3\jsZw
+ \parindent 1\jsZw\noindent
+ \llap{\@textsuperscript{\normalfont\@thefnmark}\hskip0.3\jsZw}##1}%
+ \twocolumn[\@maketitle]%
+ \plainifnotempty
+ \@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+% \global\let\@title\@empty % \@title は柱に使う
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ \ifx\authors@mail\@undefined\else{%
+ \def\@makefntext{\advance\leftskip 3\jsZw \parindent -3\jsZw}%
+ \footnotetext[0]{\itshape\authors@mail}%
+ }\fi
+ \global\let\authors@mail\@undefined}
+\def\@maketitle{%
+ \newpage\null
+ \vskip 6em % used to be 2em
+ \begin{center}
+ \let\footnote\thanks
+ \ifx\@title\@undefined\else{\LARGE\headfont\@title\par}\fi
+ \lineskip .5em
+ \ifx\@author\@undefined\else
+ \vskip 1em
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par
+ \fi
+ \ifx\@etitle\@undefined\else
+ \vskip 1em
+ {\large \@etitle \par}%
+ \fi
+ \ifx\@eauthor\@undefined\else
+ \vskip 1em
+ \begin{tabular}[t]{c}%
+ \@eauthor
+ \end{tabular}\par
+ \fi
+ \vskip 1em
+ \@date
+ \end{center}
+ \vskip 1.5em
+ \centerline{\box\@abstractbox}
+ \ifx\@keywords\@undefined\else
+ \vskip 1.5em
+ \centerline{\parbox{157\jsc@mmm}{\textsf{Keywords:}\\ \small\@keywords}}
+ \fi
+ \vskip 1.5em}
+%</jspf>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{章・節}
+%
+% \begin{ZRnote}
+% ムニャムニャ……。
+% \begin{macro}{\bxjs@label@sect}
+% 節付 |#1| の番号を出力する。
+% 節付 |XXX| に対して、|\labelXXX| が定義済ならそれが出力書式を表す。
+% 未定義ならばカウンタの出力書式 |\theXXX| が使われる。
+% \begin{macrocode}
+\def\bxjs@label@sect#1{%
+ \expandafter\ifx\csname label#1\endcsname\relax
+ \csname the#1\endcsname
+ \else \csname label#1\endcsname
+ \fi}
+\def\@seccntformat#1{\bxjs@label@sect{#1}\quad}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@secapp}
+% 節番号の接頭辞。
+% \begin{macro}{\@secpos}
+% 節番号の接尾辞。
+% \begin{macrocode}
+\ifnum\bxjs@label@section=\bxjs@label@section@compat\else
+\def\@secapp{\presectionname}
+\def\@secpos{\postsectionname}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\labelsection}
+% 節番号の出力書式。
+% \begin{macrocode}
+\ifnum\bxjs@label@section=\bxjs@label@section@modern
+\def\labelsection{\@secapp\thesection\@secpos}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \end{ZRnote}
+%
+% \paragraph{構成要素}
+%
+% |\@startsection| マクロは6個の必須引数と,オプションとして |*| と
+% 1個のオプション引数と1個の必須引数をとります。
+%
+% \begin{quote}
+% |\@startsection{名}{レベル}{字下げ}{前アキ}{後アキ}{スタイル}| \\
+% | *[別見出し]{見出し}|
+% \end{quote}
+%
+% それぞれの引数の意味は次の通りです。
+%
+% \begin{description}
+% \item[名] ユーザレベルコマンドの名前です(例: section)。
+% \item[レベル] 見出しの深さを示す数値です
+% (chapter=1, section=2, \ldots )。
+% この数値が |secnumdepth| 以下のとき見出し番号を出力します。
+% \item[字下げ] 見出しの字下げ量です。
+% \item[前アキ] この値の絶対値が見出し上側の空きです。
+% 負の場合は,見出し直後の段落をインデントしません。
+% \item[後アキ] 正の場合は,見出しの下の空きです。
+% 負の場合は,絶対値が見出しの右の空きです
+% (見出しと同じ行から本文を始めます)。
+% \item[スタイル] 見出しの文字スタイルの設定です。
+% \item[\texttt{*}] この \texttt{*} 印がないと,見出し番号を付け,
+% 見出し番号のカウンタに1を加算します。
+% \item[別見出し] 目次や柱に出力する見出しです。
+% \item[見出し] 見出しです。
+% \end{description}
+%
+% 見出しの命令は通常 |\@startsection| とその最初の6個の引数として
+% 定義されます。
+%
+% 次は |\@startsection| の定義です。
+% 情報処理学会論文誌スタイルファイル(\texttt{ipsjcommon.sty})
+% を参考にさせていただきましたが,完全に行送りが |\baselineskip|
+% の整数倍にならなくてもいいから前の行と重ならないようにしました。
+%
+% \begin{macrocode}
+\def\@startsection#1#2#3#4#5#6{%
+ \if@noskipsec \leavevmode \fi
+ \par
+% 見出し上の空きを \@tempskipa にセットする
+ \@tempskipa #4\relax
+% \@afterindent は見出し直後の段落を字下げするかどうかを表すスイッチ
+ \if@english \@afterindentfalse \else \@afterindenttrue \fi
+% 見出し上の空きが負なら見出し直後の段落を字下げしない
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+ \fi
+ \if@nobreak
+% \everypar{\everyparhook}% これは間違い
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty
+% 次の行は削除
+% \addvspace\@tempskipa
+% 次の \noindent まで追加
+ \ifdim \@tempskipa >\z@
+ \if@slide\else
+ \null
+ \vspace*{-\baselineskip}%
+ \fi
+ \vskip\@tempskipa
+ \fi
+ \fi
+ \noindent
+% 追加終わり
+ \@ifstar
+ {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+% \end{macrocode}
+%
+% |\@sect| と |\@xsect| は,
+% 前のアキがちょうどゼロの場合にもうまくいくように,多少変えてあります。
+% |\everyparhook| も挿入しています。
+%
+% \begin{ZRnote}
+% |\everyparhook| の挿入は |everyparhook=compat| の時のみ行う。
+% \begin{macro}{\bxjs@if@ceph}
+% |everyparhook=compat| である場合にのみ直後のトークンを実行する。
+% \begin{macrocode}
+\ifnum\bxjs@everyparhook=\bxjs@everyparhook@compat
+ \let\bxjs@if@ceph\@firstofone
+\else \let\bxjs@if@ceph\@gobble
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{ZRnote}
+%
+% \begin{macrocode}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+% 見出し後の空きを \@tempskipa にセット
+ \@tempskipa #5\relax
+% 条件判断の順序を入れ換えました
+ \ifdim \@tempskipa<\z@
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec #8}%
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\bxjs@label@sect{#1}}%
+ \fi
+ #7}}% 目次にフルネームを載せるなら #8
+ \else
+ \begingroup
+ \interlinepenalty \@M % 下から移動
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+% \interlinepenalty \@M % 上に移動
+ #8\@@par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\bxjs@label@sect{#1}}%
+ \fi
+ #7}% 目次にフルネームを載せるならここは #8
+ \fi
+ \@xsect{#5}}
+% \end{macrocode}
+%
+% 二つ挿入した |\everyparhook| のうち後者が |\paragraph| 類の後で2回実行され,
+% それ以降は前者が実行されます。
+%
+% [2016-07-28] \texttt{slide}オプションと\texttt{twocolumn}オプションを
+% 同時に指定した場合の罫線の位置を微調整しました。
+%
+% \begin{macrocode}
+\def\@xsect#1{%
+% 見出しの後ろの空きを \@tempskipa にセット
+ \@tempskipa #1\relax
+% 条件判断の順序を変えました
+ \ifdim \@tempskipa<\z@
+ \@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if@noskipsec
+ \global\@noskipsecfalse
+ {\setbox\z@\lastbox}%
+ \clubpenalty\@M
+ \begingroup \@svsechd \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \hskip -\@tempskipa
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar\expandafter{\bxjs@if@ceph\everyparhook}%
+ \fi\bxjs@if@ceph\everyparhook}%
+ \else
+ \par \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \fi
+ \if@slide
+ {\vskip\if@twocolumn-5\jsc@mpt\else-6\jsc@mpt\fi
+ \maybeblue\hrule height0\jsc@mpt depth1\jsc@mpt
+ \vskip\if@twocolumn 4\jsc@mpt\else 7\jsc@mpt\fi\relax}%
+ \fi
+ \par % 2000-12-18
+ \ignorespaces}
+\def\@ssect#1#2#3#4#5{%
+ \@tempskipa #3\relax
+ \ifdim \@tempskipa<\z@
+ \def\@svsechd{#4{\hskip #1\relax #5}}%
+ \else
+ \begingroup
+ #4{%
+ \@hangfrom{\hskip #1}%
+ \interlinepenalty \@M #5\@@par}%
+ \endgroup
+ \fi
+ \@xsect{#3}}
+% \end{macrocode}
+%
+% \paragraph{柱関係の命令}
+%
+% \begin{macro}{\chaptermark}
+% \begin{macro}{\sectionmark}
+% \begin{macro}{\subsectionmark}
+% \begin{macro}{\subsubsectionmark}
+% \begin{macro}{\paragraphmark}
+% \begin{macro}{\subparagraphmark}
+%
+% |\...mark| の形の命令を初期化します(第\ref{sec:pagestyle}節参照)。
+% |\chaptermark| 以外は\LaTeX 本体で定義済みです。
+%
+% \begin{macrocode}
+\newcommand*\chaptermark[1]{}
+% \newcommand*{\sectionmark}[1]{}
+% \newcommand*{\subsectionmark}[1]{}
+% \newcommand*{\subsubsectionmark}[1]{}
+% \newcommand*{\paragraphmark}[1]{}
+% \newcommand*{\subparagraphmark}[1]{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{カウンタの定義}
+%
+% \begin{macro}{\c@secnumdepth}
+%
+% |secnumdepth| は第何レベルの見出しまで
+% 番号を付けるかを決めるカウンタです。
+%
+% \begin{macrocode}
+%<!book&!report>\setcounter{secnumdepth}{3}
+%<book|report>\setcounter{secnumdepth}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@chapter}
+% \begin{macro}{\c@section}
+% \begin{macro}{\c@subsection}
+% \begin{macro}{\c@subsubsection}
+% \begin{macro}{\c@paragraph}
+% \begin{macro}{\c@subparagraph}
+%
+% 見出し番号のカウンタです。
+% |\newcounter| の第1引数が新たに作るカウンタです。
+% これは第2引数が増加するたびに 0 に戻されます。
+% 第2引数は定義済みのカウンタです。
+%
+% \begin{macrocode}
+\newcounter{part}
+%<book|report>\newcounter{chapter}
+%<book|report>\newcounter{section}[chapter]
+%<!book&!report>\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\newcounter{subparagraph}[paragraph]
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\thepart}
+% \begin{macro}{\thechapter}
+% \begin{macro}{\thesection}
+% \begin{macro}{\thesubsection}
+% \begin{macro}{\thesubsubsection}
+% \begin{macro}{\theparagraph}
+% \begin{macro}{\thesubparagraph}
+%
+% カウンタの値を出力する命令 |\the何々| を定義します。
+%
+% カウンタを出力するコマンドには次のものがあります。
+%
+% \begin{quote}
+% |\arabic{COUNTER} | 1, 2, 3, \ldots \\
+% |\roman{COUNTER} | i, ii, iii, \ldots \\
+% |\Roman{COUNTER} | I, II, III, \ldots \\
+% |\alph{COUNTER} | a, b, c, \ldots \\
+% |\Alph{COUNTER} | A, B, C, \ldots \\
+% |\kansuji{COUNTER} | 一, 二, 三, \ldots
+% \end{quote}
+%
+% 以下ではスペース節約のため |@| の付いた内部表現を多用しています。
+%
+% \begin{macrocode}
+\renewcommand{\thepart}{\@Roman\c@part}
+%<*!book&!report>
+\ifnum\bxjs@label@section=\bxjs@label@section@compat
+\renewcommand{\thesection}{\presectionname\@arabic\c@section\postsectionname}
+\renewcommand{\thesubsection}{\@arabic\c@section.\@arabic\c@subsection}
+\else
+\renewcommand{\thesection}{\@arabic\c@section}
+\renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection}
+\fi
+%</!book&!report>
+%<*book|report>
+\renewcommand{\thechapter}{\@arabic\c@chapter}
+\renewcommand{\thesection}{\thechapter.\@arabic\c@section}
+\renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection}
+%</book|report>
+\renewcommand{\thesubsubsection}{%
+ \thesubsection.\@arabic\c@subsubsection}
+\renewcommand{\theparagraph}{%
+ \thesubsubsection.\@arabic\c@paragraph}
+\renewcommand{\thesubparagraph}{%
+ \theparagraph.\@arabic\c@subparagraph}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@chapapp}
+% \begin{macro}{\@chappos}
+%
+% |\@chapapp| の初期値は |\prechaptername|(第)です。
+%
+% |\@chappos| の初期値は |\postchaptername|(章)です。
+%
+% |\appendix| は |\@chapapp| を |\appendixname| に,
+% |\@chappos| を空に再定義します。
+%
+% [2003-03-02] |\@secapp| は外しました。
+%
+% \begin{macrocode}
+%<book|report>\newcommand{\@chapapp}{\prechaptername}
+%<book|report>\newcommand{\@chappos}{\postchaptername}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{前付,本文,後付}
+%
+% 本のうち章番号があるのが「本文」,
+% それ以外が「前付」「後付」です。
+%
+% \begin{macro}{\frontmatter}
+%
+% ページ番号をローマ数字にし,章番号を付けないようにします。
+%
+% [2017-03-05] |\frontmatter| と |\mainmatter| の2つの命令は,
+% 改丁または改ページした後で |\pagenumbering{...}| でノンブルを1に
+% リセットします。長い間 |\frontmatter| は \texttt{openany} のときに
+% 単なる改ページとしていましたが,これではノンブルをリセットする際に
+% 偶奇逆転が起こる場合がありました。\texttt{openany} かどうかに依らず
+% 奇数ページまで繰るように修正することで,問題を解消しました。
+% 実は,\LaTeX の標準クラスでは1998年に修正されていた問題です
+% (コミュニティ版\pLaTeX の標準クラス2017/03/05も参照)。
+%
+% \begin{macrocode}
+%<*book|report>
+\newcommand\frontmatter{%
+ \pltx@cleartooddpage
+ \@mainmatterfalse
+ \pagenumbering{roman}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mainmatter}
+%
+% ページ番号を算用数字にし,章番号を付けるようにします。
+%
+% \begin{macrocode}
+\newcommand\mainmatter{%
+ \pltx@cleartooddpage
+ \@mainmattertrue
+ \pagenumbering{arabic}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\backmatter}
+%
+% 章番号を付けないようにします。ページ番号の付け方は変わりません。
+%
+% \begin{macrocode}
+\newcommand\backmatter{%
+ \if@openleft
+ \cleardoublepage
+ \else\if@openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi\fi
+ \@mainmatterfalse}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{部}
+%
+% \begin{macro}{\part}
+%
+% 新しい部を始めます。
+%
+% |\secdef| を使って見出しを定義しています。
+% このマクロは二つの引数をとります。
+%
+% \begin{quote}
+% |\secdef{星なし}{星あり}|
+% \end{quote}
+%
+% \begin{description}
+% \item[星なし] \texttt{*} のない形の定義です。
+% \item[星あり] \texttt{*} のある形の定義です。
+% \end{description}
+%
+% |\secdef| は次のようにして使います。
+%
+%\begin{verbatim}
+% \def\chapter { ... \secdef \CMDA \CMDB }
+% \def\CMDA [#1]#2{....} % \chapter[...]{...} の定義
+% \def\CMDB #1{....} % \chapter*{...} の定義
+%\end{verbatim}
+%
+% まず |book| と |report| のクラス以外です。
+%
+% \begin{macrocode}
+%<*!book&!report>
+\newcommand\part{%
+ \if@noskipsec \leavevmode \fi
+ \par
+ \addvspace{4ex}%
+ \if@english \@afterindentfalse \else \@afterindenttrue \fi
+ \secdef\@part\@spart}
+%</!book&!report>
+% \end{macrocode}
+%
+% |book| および |report| クラスの場合は,少し複雑です。
+%
+% \begin{macrocode}
+%<*book|report>
+\newcommand\part{%
+ \if@openleft
+ \cleardoublepage
+ \else\if@openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi\fi
+ \thispagestyle{empty}% 欧文用標準スタイルでは plain
+ \if@twocolumn
+ \onecolumn
+ \@restonecoltrue
+ \else
+ \@restonecolfalse
+ \fi
+ \null\vfil
+ \secdef\@part\@spart}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@part}
+%
+% 部の見出しを出力します。
+% |\bfseries| を |\headfont| に変えました。
+%
+% |book| および |report| クラス以外では |secnumdepth| が $-1$ より大きいとき
+% 部番号を付けます。
+%
+% \begin{macrocode}
+%<*!book&!report>
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{%
+ \prepartname\thepart\postpartname\hspace{1\jsZw}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\parindent\z@
+ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \Large\headfont\prepartname\thepart\postpartname
+ \par\nobreak
+ \fi
+ \huge \headfont #2%
+ \markboth{}{}\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}
+%</!book&!report>
+% \end{macrocode}
+%
+% |book| および |report| クラスでは |secnumdepth| が $-2$ より大きいとき部番号を付けます。
+%
+% \begin{macrocode}
+%<*book|report>
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{%
+ \prepartname\thepart\postpartname\hspace{1\jsZw}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >-2\relax
+ \huge\headfont \prepartname\thepart\postpartname
+ \par\vskip20\p@?
+ \fi
+ \Huge \headfont #2\par}%
+ \@endpart}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@spart}
+%
+% 番号を付けない部です。
+%
+% \begin{macrocode}
+%<*!book&!report>
+\def\@spart#1{{%
+ \parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \huge \headfont #1\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}
+%</!book&!report>
+%<*book|report>
+\def\@spart#1{{%
+ \centering
+ \interlinepenalty \@M
+ \normalfont
+ \Huge \headfont #1\par}%
+ \@endpart}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@endpart}
+%
+% |\@part| と |\@spart| の最後で実行されるマクロです。
+% 両面印刷のときは白ページを追加します。
+% 二段組のときには,二段組に戻します。
+%
+% [2016-12-13] \texttt{openany} のときには白ページが追加されるのは変なので,
+% その場合は追加しないようにしました。このバグは\LaTeX では
+% classes.dtx v1.4b (2000/05/19)
+% で修正されています。
+%
+% \begin{macrocode}
+%<*book|report>
+\def\@endpart{\vfil\newpage
+ \if@twoside
+ \if@openleft %% added (2017/02/24)
+ \null\thispagestyle{empty}\newpage
+ \else\if@openright %% added (2016/12/13)
+ \null\thispagestyle{empty}\newpage
+ \fi\fi %% added (2016/12/13, 2017/02/24)
+ \fi
+ \if@restonecol
+ \twocolumn
+ \fi}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{章}
+%
+% \begin{macro}{\chapter}
+%
+% 章の最初のページスタイルは,全体が |empty| でなければ |plain| に
+% します。
+% また,|\@topnum| を 0 にして,
+% 章見出しの上に図や表が来ないようにします。
+%
+% \begin{macrocode}
+%<*book|report>
+\newcommand{\chapter}{%
+ \if@openleft\cleardoublepage\else
+ \if@openright\cleardoublepage\else\clearpage\fi\fi
+ \plainifnotempty % 元: \thispagestyle{plain}
+ \global\@topnum\z@
+ \if@english \@afterindentfalse \else \@afterindenttrue \fi
+ \secdef
+ {\@omit@numberfalse\@chapter}%
+ {\@omit@numbertrue\@schapter}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chapter}
+%
+% 章見出しを出力します。
+% |secnumdepth| が0以上かつ |\@mainmatter| が真のとき章番号を出力します。
+%
+% \begin{macrocode}
+\def\@chapter[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\thechapter\@chappos}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline
+% %{\if@english\thechapter\else\@chapapp\thechapter\@chappos\fi}%
+ {\@chapapp\thechapter\@chappos}%
+ #1}%
+ \else\addcontentsline{toc}{chapter}{#1}\fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\jsc@mpt}}%
+ \addtocontents{lot}{\protect\addvspace{10\jsc@mpt}}%
+ \if@twocolumn
+ \@topnewpage[\@makechapterhead{#2}]%
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makechapterhead}
+%
+% 実際に章見出しを組み立てます。
+% |\bfseries| を |\headfont| に変えました。
+%
+% \begin{macrocode}
+\def\@makechapterhead#1{%
+ \vspace*{2\Cvs}% 欧文は50pt
+ {\parindent \z@ \raggedright \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \huge\headfont \@chapapp\thechapter\@chappos
+ \par\nobreak
+ \vskip \Cvs % 欧文は20pt
+ \fi
+ \fi
+ \interlinepenalty\@M
+ \Huge \headfont #1\par\nobreak
+ \vskip 3\Cvs}} % 欧文は40pt
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@schapter}
+%
+% |\chapter*{...}| コマンドの本体です。
+% |\chaptermark| を補いました。
+%
+% \begin{macrocode}
+\def\@schapter#1{%
+ \chaptermark{#1}%
+ \if@twocolumn
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \else
+ \@makeschapterhead{#1}\@afterheading
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makeschapterhead}
+%
+% 番号なしの章見出しです。
+%
+% \begin{macrocode}
+\def\@makeschapterhead#1{%
+ \vspace*{2\Cvs}% 欧文は50pt
+ {\parindent \z@ \raggedright
+ \normalfont
+ \interlinepenalty\@M
+ \Huge \headfont #1\par\nobreak
+ \vskip 3\Cvs}} % 欧文は40pt
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{下位レベルの見出し}
+%
+% \begin{macro}{\section}
+%
+% 欧文版では |\@startsection| の第4引数を負にして最初の段落の
+% 字下げを禁止していますが,
+% 和文版では正にして字下げするようにしています。
+%
+% 段組のときはなるべく左右の段が狂わないように工夫しています。
+%
+% \begin{macrocode}
+\if@twocolumn
+ \newcommand{\section}{%
+%<jspf>\ifx\maketitle\relax\else\maketitle\fi
+ \@startsection{section}{1}{\z@}%
+%<!kiyou> {0.6\Cvs}{0.4\Cvs}%
+%<kiyou> {\Cvs}{0.5\Cvs}%
+% {\normalfont\large\headfont\@secapp}}
+ {\normalfont\large\headfont\raggedright}}
+\else
+ \newcommand{\section}{%
+ \if@slide\clearpage\fi
+ \@startsection{section}{1}{\z@}%
+ {\Cvs \@plus.5\Cdp \@minus.2\Cdp}% 前アキ
+ {.5\Cvs \@plus.3\Cdp}% 後アキ
+% {\normalfont\Large\headfont\@secapp}}
+ {\normalfont\Large\headfont\raggedright}}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\subsection}
+%
+% 同上です。
+%
+% \begin{macrocode}
+\if@twocolumn
+ \newcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
+ {\z@}{\if@slide .4\Cvs \else \z@ \fi}%
+ {\normalfont\normalsize\headfont}}
+\else
+ \newcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
+ {\Cvs \@plus.5\Cdp \@minus.2\Cdp}% 前アキ
+ {.5\Cvs \@plus.3\Cdp}% 後アキ
+ {\normalfont\large\headfont}}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\subsubsection}
+%
+% [2016-07-22] \texttt{slide}オプション指定時に |\subsubsection| の文字列
+% と罫線が重なる問題に対処しました(forum:1982)。
+%
+% \begin{macrocode}
+\if@twocolumn
+ \newcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
+ {\z@}{\if@slide .4\Cvs \else \z@ \fi}%
+ {\normalfont\normalsize\headfont}}
+\else
+ \newcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
+ {\Cvs \@plus.5\Cdp \@minus.2\Cdp}%
+ {\if@slide .5\Cvs \@plus.3\Cdp \else \z@ \fi}%
+ {\normalfont\normalsize\headfont}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\paragraph}
+% % \begin{macro}{\jsParagraphMark}
+%
+% 見出しの後ろで改行されません。
+%
+% [2016-11-16] 従来は |\paragraph| の最初に出るマークを「■」に固定して
+% いましたが,このマークを変更可能にするため |\jsParagraphMark| というマクロ
+% に切り出しました。これで,たとえば
+%\begin{verbatim}
+% \renewcommand{\jsParagraphMark}{★}
+%\end{verbatim}
+% とすれば「★」に変更できますし,マークを空にすることも容易です。
+% なお,某学会クラスでは従来どおりマークは付きません。
+%
+% \begin{ZRnote}
+%
+% \Note BXJSクラスでは、1.1版[2016-02-14]から |\jsParagraphMark| を
+% サポートしている。
+%
+% 段落のマーク(■)が必ず和文フォントで出力されるようにする。
+%
+% |\jsJaChar| はstandard和文ドライバが読み込まれた場合は\
+% |\jachar| と同義になるが、それ以外は何もしない。
+% \end{ZRnote}
+% \begin{macrocode}
+\newcommand\jsParagraphMark{\relax\jsJaChar{■}}
+\let\bxjs@org@paragraph@mark\jsParagraphMark
+\ifx\bxjs@paragraph@mark\@empty
+ \let\jsParagraphMark\@empty
+\else\ifx\bxjs@paragraph@mark\@undefined\else
+ \long\edef\jsParagraphMark{\noexpand\jsJaChar{\bxjs@paragraph@mark}}
+\fi\fi
+\let\jsJaChar\@empty
+\if@twocolumn
+ \newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
+ {\z@}{\if@slide .4\Cvs \else -1\jsZw\fi}% 改行せず 1\jsZw のアキ
+%<jspf> {\normalfont\normalsize\headfont}}
+%<!jspf> {\normalfont\normalsize\headfont\jsParagraphMark}}
+\else
+ \newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
+ {0.5\Cvs \@plus.5\Cdp \@minus.2\Cdp}%
+ {\if@slide .5\Cvs \@plus.3\Cdp \else -1\jsZw\fi}% 改行せず 1\jsZw のアキ
+%<jspf> {\normalfont\normalsize\headfont}}
+%<!jspf> {\normalfont\normalsize\headfont\jsParagraphMark}}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\subparagraph}
+%
+% 見出しの後ろで改行されません。
+%
+% \begin{macrocode}
+\if@twocolumn
+ \newcommand{\subparagraph}{\@startsection{subparagraph}{5}{\z@}%
+ {\z@}{\if@slide .4\Cvs \@plus.3\Cdp \else -1\jsZw\fi}%
+ {\normalfont\normalsize\headfont}}
+\else
+ \newcommand{\subparagraph}{\@startsection{subparagraph}{5}{\z@}%
+ {\z@}{\if@slide .5\Cvs \@plus.3\Cdp \else -1\jsZw\fi}%
+ {\normalfont\normalsize\headfont}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{リスト環境}
+%
+% 第 $k$ レベルのリストの初期化をするのが |\@list|$k$ です
+% ($k = \mathtt{i}, \mathtt{ii}, \mathtt{iii}, \mathtt{iv}$)。
+% |\@list|$k$ は |\leftmargin| を |\leftmargin|$k$ に設定します。
+%
+% \begin{macro}{\leftmargini}
+%
+% 二段組であるかないかに応じてそれぞれ 2em,2.5em でしたが,
+% ここでは全角幅の2倍にしました。
+%
+% [2002-05-11] 3zw に変更しました。
+%
+% [2005-03-19] 二段組は 2zw に戻しました。
+%
+% \begin{macrocode}
+\if@slide
+ \setlength\leftmargini{1\jsZw}
+\else
+ \if@twocolumn
+ \setlength\leftmargini{2\jsZw}
+ \else
+ \setlength\leftmargini{3\jsZw}
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\leftmarginii}
+% \begin{macro}{\leftmarginiii}
+% \begin{macro}{\leftmarginiv}
+% \begin{macro}{\leftmarginv}
+% \begin{macro}{\leftmarginvi}
+%
+% |ii|,|iii|,|iv| は |\labelsep| と
+% それぞれ `(m)',`vii.',`M.' の幅との和より大きくする
+% ことになっています。ここでは全角幅の整数倍に丸めました。
+%
+% \begin{macrocode}
+\if@slide
+ \setlength\leftmarginii {1\jsZw}
+ \setlength\leftmarginiii{1\jsZw}
+ \setlength\leftmarginiv {1\jsZw}
+ \setlength\leftmarginv {1\jsZw}
+ \setlength\leftmarginvi {1\jsZw}
+\else
+ \setlength\leftmarginii {2\jsZw}
+ \setlength\leftmarginiii{2\jsZw}
+ \setlength\leftmarginiv {2\jsZw}
+ \setlength\leftmarginv {1\jsZw}
+ \setlength\leftmarginvi {1\jsZw}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelsep}
+% \begin{macro}{\labelwidth}
+%
+% |\labelsep| はラベルと本文の間の距離です。
+% |\labelwidth| はラベルの幅です。
+% これは二分に変えました。
+%
+% \begin{macrocode}
+\setlength \labelsep {0.5\jsZw} % .5em
+\setlength \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\partopsep}
+%
+% リスト環境の前に空行がある場合,
+% |\parskip| と |\topsep| に |\partopsep| を
+% 加えた値だけ縦方向の空白ができます。
+% 0 に改変しました。
+%
+% \begin{macrocode}
+\setlength\partopsep{\z@} % {2\p@ \@plus 1\p@ \@minus 1\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@beginparpenalty}
+% \begin{macro}{\@endparpenalty}
+% \begin{macro}{\@itempenalty}
+%
+% リストや段落環境の前後,リスト項目間に挿入されるペナルティです。
+%
+% \begin{macrocode}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@listi}
+% \begin{macro}{\@listI}
+%
+% |\@listi| は |\leftmargin|,|\parsep|,|\topsep|,|\itemsep| などの
+% トップレベルの定義をします。
+% この定義は,フォントサイズコマンドによって変更されます
+% (たとえば |\small| の中では小さい値に設定されます)。
+% このため,|\normalsize| がすべてのパラメータを戻せるように,
+% |\@listI| で |\@listi| のコピーを保存します。
+% 元の値はかなり複雑ですが,ここでは簡素化してしまいました。
+% 特に最初と最後に行送りの半分の空きが入るようにしてあります。
+% アスキーの標準スタイルでは
+% トップレベルの |itemize|,|enumerate| 環境でだけ
+% 最初と最後に行送りの半分の空きが入るようになっていました。
+%
+% [2004-09-27] |\topsep| のグルー $_{-0.1}^{+0.2}$ |\baselineskip|
+% を思い切って外しました。
+%
+% \begin{macrocode}
+\def\@listi{\leftmargin\leftmargini
+ \parsep \z@
+ \topsep 0.5\baselineskip
+ \itemsep \z@ \relax}
+\let\@listI\@listi
+% \end{macrocode}
+%
+% 念のためパラメータを初期化します(実際には不要のようです)。
+%
+% \begin{macrocode}
+\@listi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@listii}
+% \begin{macro}{\@listiii}
+% \begin{macro}{\@listiv}
+% \begin{macro}{\@listv}
+% \begin{macro}{\@listvi}
+%
+% 第2\zrWDash6レベルのリスト環境のパラメータの設定です。
+%
+% \begin{macrocode}
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+ \topsep \z@
+ \parsep \z@
+ \itemsep\parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii \advance\labelwidth-\labelsep
+ \topsep \z@
+ \parsep \z@
+ \itemsep\parsep}
+\def\@listiv {\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep}
+\def\@listv {\leftmargin\leftmarginv
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep}
+\def\@listvi {\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{enumerate環境}
+%
+% |enumerate| 環境はカウンタ |enumi|,|enumii|,|enumiii|,
+% |enumiv| を使います。|enum|$n$ は第 $n$ レベルの番号です。
+%
+% \begin{macro}{\theenumi}
+% \begin{macro}{\theenumii}
+% \begin{macro}{\theenumiii}
+% \begin{macro}{\theenumiv}
+%
+% 出力する番号の書式を設定します。
+% これらは\LaTeX 本体(\texttt{ltlists.dtx} 参照)で定義済みですが,
+% ここでは表し方を変えています。
+% |\@arabic|,|\@alph|,|\@roman|,|\@Alph| はそれぞれ
+% 算用数字,小文字アルファベット,小文字ローマ数字,大文字アルファベット
+% で番号を出力する命令です。
+%
+% \begin{macrocode}
+\renewcommand{\theenumi}{\@arabic\c@enumi}
+\renewcommand{\theenumii}{\@alph\c@enumii}
+\renewcommand{\theenumiii}{\@roman\c@enumiii}
+\renewcommand{\theenumiv}{\@Alph\c@enumiv}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelenumi}
+% \begin{macro}{\labelenumii}
+% \begin{macro}{\labelenumiii}
+% \begin{macro}{\labelenumiv}
+%
+% |enumerate| 環境の番号を出力する命令です。
+% 第2レベル以外は最後に欧文のピリオドが付きますが,
+% これは好みに応じて取り払ってください。
+% 第2レベルの番号のかっこは和文用に換え,
+% その両側に入る余分なグルーを |\inhibitglue| で
+% 取り除いています。
+% \begin{ZRnote}
+% 和文の括弧で囲むための補助命令 |\jsInJaParen| を
+% 定義して |\labelenumii| でそれを用いている。
+% \Note 現状の |zxjatype| の |\inhibitglue| の実装には
+% 「前後のグルーを消してしまう」という不備があって、
+% そのため |enumii| の出力が異常になるという不具合があった。
+% |zxjatype| を修正するまでの回避策として、サイズがゼロの
+% 罫(|\bxjs@dust|)でガードしておく。
+% \end{ZRnote}
+%
+% \begin{macrocode}
+\def\bxjs@dust{\vrule\@width\z@\@height\z@\@depth\z@}
+\newcommand*{\jsInJaParen}[1]{%
+ \bxjs@dust\jsInhibitGlue (#1)\jsInhibitGlue\bxjs@dust}
+\newcommand{\labelenumi}{\theenumi.}
+\newcommand{\labelenumii}{\jsInJaParen{\theenumii}}
+\newcommand{\labelenumiii}{\theenumiii.}
+\newcommand{\labelenumiv}{\theenumiv.}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\p@enumii}
+% \begin{macro}{\p@enumiii}
+% \begin{macro}{\p@enumiv}
+%
+% |\p@enum|$n$ は |\ref| コマンドで |enumerate| 環境の第 $n$ レベルの
+% 項目が参照されるときの書式です。
+% これも第2レベルは和文用かっこにしました。
+%
+% \begin{macrocode}
+\renewcommand{\p@enumii}{\theenumi}
+\renewcommand{\p@enumiii}{\theenumi\jsInhibitGlue (\theenumii )}
+\renewcommand{\p@enumiv}{\p@enumiii\theenumiii}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{itemize環境}
+%
+% \begin{macro}{\labelitemi}
+% \begin{macro}{\labelitemii}
+% \begin{macro}{\labelitemiii}
+% \begin{macro}{\labelitemiv}
+% |itemize| 環境の第 $n$ レベルのラベルを作るコマンドです。
+% \begin{macrocode}
+\newcommand\labelitemi{\textbullet}
+\newcommand\labelitemii{\normalfont\bfseries \textendash}
+\newcommand\labelitemiii{\textasteriskcentered}
+\newcommand\labelitemiv{\textperiodcentered}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{description環境}
+%
+% \begin{environment}{description}
+%
+% 本来の |description| 環境では,項目名が短いと,説明部分の頭が
+% それに引きずられて左に出てしまいます。
+% これを解決した新しい |description| の実装です。
+%
+% \begin{macrocode}
+\newenvironment{description}{%
+ \list{}{%
+ \labelwidth=\leftmargin
+ \labelsep=1\jsZw
+ \advance \labelwidth by -\labelsep
+ \let \makelabel=\descriptionlabel}}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\descriptionlabel}
+%
+% |description| 環境のラベルを出力するコマンドです。
+% 好みに応じて |#1| の前に適当な空き
+% (たとえば |\hspace{1\jsZw}|)を入れるのもいいと思います。
+%
+% \begin{macrocode}
+\newcommand*\descriptionlabel[1]{\normalfont\headfont #1\hfil}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{概要}
+%
+% \begin{environment}{abstract}
+%
+% 概要(要旨,梗概)を出力する環境です。
+% |book| クラスでは各章の初めにちょっとしたことを書くのに使います。
+% |titlepage| オプション付きの |article| クラスでは,
+% 独立したページに出力されます。
+% |abstract| 環境は元は |quotation| 環境で作られていましたが,
+% |quotation| 環境の右マージンをゼロにしたので,
+% |list| 環境で作り直しました。
+%
+% JSPFスタイルでは実際の出力は |\maketitle| で行われます。
+%
+% \begin{ZRnote}
+% |bxjsreport| クラスのabstract環境は:
+% \begin{itemize}
+% \item |layout=v1| の場合は |jsbook|\,+\,|report| の動作を継承する。
+% つまり |jsbook| と同じになる。
+% \item |layout=v2| の場合は新設の |jsreport| の動作を継承する。
+% つまり |jsarticle|(+\,|titlapage|)と同じになる。
+% \end{itemize}
+%
+% \begin{environment}{chapterabstract}
+% |jsbook| のabstract環境
+% (「各章の初めにちょっとしたことを書く」ためのもの)
+% をchapterabstractと呼ぶことにする。
+% \begin{macrocode}
+%<*book|report>
+\newenvironment{chapterabstract}{%
+ \begin{list}{}{%
+ \listparindent=1\jsZw
+ \itemindent=\listparindent
+ \rightmargin=0pt
+ \leftmargin=5\jsZw}\item[]}{\end{list}\vspace{\baselineskip}}
+%</book|report>
+% \end{macrocode}
+% \end{environment}
+%
+% “普通の”abstract環境の定義。
+% \begin{macrocode}
+%<*article|report|slide>
+\newbox\@abstractbox
+\if@titlepage
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \@beginparpenalty\@lowpenalty
+ \begin{center}%
+ \headfont \abstractname
+ \@endparpenalty\@M
+ \end{center}%
+% \end{macrocode}
+% BXJSクラスでは、
+% 概要の最初の段落に段落下げが入るようにする。
+% \begin{macrocode}
+ \par}%
+ {\par\vfil\null\endtitlepage}
+\else
+ \newenvironment{abstract}{%
+ \if@twocolumn
+ \ifx\maketitle\relax
+ \section*{\abstractname}%
+ \else
+ \global\setbox\@abstractbox\hbox\bgroup
+ \begin{minipage}[b]{\textwidth}
+ \small\parindent1\jsZw
+ \begin{center}%
+ {\headfont \abstractname\vspace{-.5em}\vspace{\z@}}%
+ \end{center}%
+ \list{}{%
+ \listparindent\parindent
+ \itemindent \listparindent
+ \rightmargin \leftmargin}%
+ \item\relax
+ \fi
+ \else
+ \small
+ \begin{center}%
+ {\headfont \abstractname\vspace{-.5em}\vspace{\z@}}%
+ \end{center}%
+ \list{}{%
+ \listparindent\parindent
+ \itemindent \listparindent
+ \rightmargin \leftmargin}%
+ \item\relax
+ \fi}{\if@twocolumn
+ \ifx\maketitle\relax
+ \else
+ \endlist\end{minipage}\egroup
+ \fi
+ \else
+ \endlist
+ \fi}
+\fi
+%</article|report|slide>
+%<*jspf>
+\newbox\@abstractbox
+\newenvironment{abstract}{%
+ \global\setbox\@abstractbox\hbox\bgroup
+ \begin{minipage}[b]{157\jsc@mmm}{\sffamily Abstract}\par
+ \small
+ \if@english \parindent6\jsc@mmm \else \parindent1\jsZw \fi}%
+ {\end{minipage}\egroup}
+%</jspf>
+% \end{macrocode}
+%
+% |bxjs@force@chapterabstract| が真の場合は、abstract環境を
+% chapterabstract環境と等価にする。
+% \begin{macrocode}
+%<*book|report>
+\ifbxjs@force@chapterabstract
+ \let\abstract\chapterabstract
+ \let\endabstract\endchapterabstract
+\fi
+%</book|report>
+% \end{macrocode}
+% \end{ZRnote}
+%
+% \end{environment}
+%
+% \paragraph{キーワード}
+%
+% \begin{environment}{keywords}
+%
+% キーワードを準備する環境です。
+% 実際の出力は |\maketitle| で行われます。
+%
+% \begin{macrocode}
+%<*jspf>
+%\newbox\@keywordsbox
+%\newenvironment{keywords}{%
+% \global\setbox\@keywordsbox\hbox\bgroup
+% \begin{minipage}[b]{1570\jsc@mmm}{\sffamily Keywords:}\par
+% \small\parindent0\jsZw}%
+% {\end{minipage}\egroup}
+%</jspf>
+% \end{macrocode}
+% \end{environment}
+%
+% \paragraph{verse環境}
+%
+% \begin{environment}{verse}
+%
+% 詩のための |verse| 環境です。
+%
+% \begin{macrocode}
+\newenvironment{verse}{%
+ \let \\=\@centercr
+ \list{}{%
+ \itemsep \z@
+ \itemindent -2\jsZw % 元: -1.5em
+ \listparindent\itemindent
+ \rightmargin \z@
+ \advance\leftmargin 2\jsZw}% 元: 1.5em
+ \item\relax}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \paragraph{quotation環境}
+%
+% \begin{environment}{quotation}
+%
+% 段落の頭の字下げ量を1.5emから |\parindent| に変えました。
+% また,右マージンを 0 にしました。
+%
+% \begin{macrocode}
+\newenvironment{quotation}{%
+ \list{}{%
+ \listparindent\parindent
+ \itemindent\listparindent
+ \rightmargin \z@}%
+ \item\relax}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \paragraph{quote環境}
+%
+% \begin{environment}{quote}
+%
+% |quote| 環境は,段落がインデントされないことを除き,
+% |quotation| 環境と同じです。
+%
+% \begin{macrocode}
+\newenvironment{quote}%
+ {\list{}{\rightmargin\z@}\item\relax}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \paragraph{定理など}
+%
+% |ltthm.dtx| 参照。たとえば次のように定義します。
+%\begin{verbatim}
+% \newtheorem{definition}{定義}
+% \newtheorem{axiom}{公理}
+% \newtheorem{theorem}{定理}
+%\end{verbatim}
+%
+% [2001-04-26] 定理の中はイタリック体になりましたが,
+% これでは和文がゴシック体になってしまうので,
+% |\itshape| を削除しました。
+%
+% [2009-08-23] |\bfseries| を |\headfont| に直し,
+% |\labelsep| を 1\,zw にし,括弧を全角にしました。
+%
+% \begin{macrocode}
+\def\@begintheorem#1#2{\trivlist\labelsep=1\jsZw
+ \item[\hskip \labelsep{\headfont #1\ #2}]}
+\def\@opargbegintheorem#1#2#3{\trivlist\labelsep=1\jsZw
+ \item[\hskip \labelsep{\headfont #1\ #2(#3)}]}
+% \end{macrocode}
+%
+% \begin{environment}{titlepage}
+%
+% タイトルを独立のページに出力するのに使われます。
+%
+% [2017-02-24] コミュニティ版\pLaTeX の標準クラス2017/02/15に合わせて,
+% bookクラスでタイトルを必ず奇数ページに送るようにしました。といっても,
+% 横組クラスしかありませんでしたので,従来の挙動は何も変わっていません。
+% また,book以外の場合のページ番号のリセットもコミュニティ版\pLaTeX の
+% 標準クラス2017/02/15に合わせましたが,こちらも片面印刷あるいは
+% 独立のタイトルページを作らないクラスばかりでしたので,従来の挙動は
+% 何も変わらずに済みました。
+%
+% \begin{macrocode}
+\newenvironment{titlepage}{%
+%<book> \pltx@cleartooddpage %% 2017-02-24
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \ifodd\c@page\setcounter{page}\@ne\else\setcounter{page}\z@\fi %% 2017-02-24
+ }%
+ {\if@restonecol\twocolumn \else \newpage \fi
+ \if@twoside\else
+ \setcounter{page}\@ne
+ \fi}
+% \end{macrocode}
+% \end{environment}
+%
+% \paragraph{付録}
+%
+% \begin{macro}{\appendix}
+%
+% 本文と付録を分離するコマンドです。
+%
+% \begin{macrocode}
+%<*!book&!report>
+\newcommand{\appendix}{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \ifnum\bxjs@label@section=\bxjs@label@section@compat
+ \gdef\presectionname{\appendixname}%
+ \gdef\postsectionname{}%
+% \gdef\thesection{\@Alph\c@section}% [2003-03-02]
+ \gdef\thesection{\presectionname\@Alph\c@section\postsectionname}%
+ \gdef\thesubsection{\@Alph\c@section.\@arabic\c@subsection}%
+ \else
+ \gdef\@secapp{\appendixname}%
+ \gdef\@secpos{}%
+ \gdef\thesection{\@Alph\c@section}%
+ \fi}
+%</!book&!report>
+%<*book|report>
+\newcommand{\appendix}{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\@chappos{}%
+ \gdef\thechapter{\@Alph\c@chapter}}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{パラメータの設定}
+%
+% \paragraph{arrayとtabular環境}
+%
+% \begin{macro}{\arraycolsep}
+%
+% |array| 環境の列間には |\arraycolsep| の2倍の幅の空きが入ります。
+%
+% \begin{macrocode}
+\setlength\arraycolsep{5\p@?}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tabcolsep}
+%
+% |tabular| 環境の列間には |\tabcolsep| の2倍の幅の空きが入ります。
+%
+% \begin{macrocode}
+\setlength\tabcolsep{6\p@?}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\arrayrulewidth}
+%
+% |array|,|tabular| 環境内の罫線の幅です。
+%
+% \begin{macrocode}
+\setlength\arrayrulewidth{.4\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\doublerulesep}
+%
+% |array|,|tabular| 環境での二重罫線間のアキです。
+%
+% \begin{macrocode}
+\setlength\doublerulesep{2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{tabbing環境}
+%
+% \begin{macro}{\tabbingsep}
+%
+% |\'| コマンドで入るアキです。
+%
+% \begin{macrocode}
+\setlength\tabbingsep{\labelsep}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{minipage環境}
+%
+% \begin{macro}{\@mpfootins}
+%
+% |minipage| 環境の脚注の |\skip|\hspace{0pt}|\@mpfootins|
+% は通常のページの |\skip|\hspace{0pt}|\footins|
+% と同じ働きをします。
+%
+% \begin{macrocode}
+\skip\@mpfootins = \skip\footins
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{framebox環境}
+%
+% \begin{macro}{\fboxsep}
+%
+% |\fbox|,|\framebox| で内側のテキストと枠との間の空きです。
+%
+% \begin{macro}{\fboxrule}
+%
+% |\fbox|,|\framebox| の罫線の幅です。
+%
+% \begin{macrocode}
+\setlength\fboxsep{3\p@?}
+\setlength\fboxrule{.4\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{equationとeqnarray環境}
+%
+% \begin{macro}{\theequation}
+%
+% 数式番号を出力するコマンドです。
+%
+% \begin{macrocode}
+%<!book&!report>\renewcommand \theequation {\@arabic\c@equation}
+%<*book|report>
+\@addtoreset{equation}{chapter}
+\renewcommand\theequation
+ {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jot}
+%
+% |eqnarray| の行間に余分に入るアキです。
+% デフォルトの値をコメントアウトして示しておきます。
+%
+% \begin{macrocode}
+% \setlength\jot{3pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@eqnnum}
+%
+% 数式番号の形式です。
+% デフォルトの値をコメントアウトして示しておきます。
+%
+% |\jsInhibitGlue (\theequation )\jsInhibitGlue| のように和文かっこ
+% を使うことも可能です。
+%
+% \begin{macrocode}
+% \def\@eqnnum{(\theequation)}
+% \end{macrocode}
+% \end{macro}
+%
+% |amsmath| パッケージを使う場合は |\tagform@| を次のように修正します。
+%
+% \begin{macrocode}
+% \def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr )}}
+% \end{macrocode}
+%
+% \subsection{フロート}
+%
+% タイプ \texttt{TYPE} のフロートオブジェクトを
+% 扱うには,次のマクロを定義します。
+% \begin{description}
+% \item[\texttt{\bslash fps@TYPE}]
+% フロートを置く位置(float placement specifier)です。
+% \item[\texttt{\bslash ftype@TYPE}]
+% フロートの番号です。2の累乗(1,2,4,\ldots )でなければなりません。
+% \item[\texttt{\bslash ext@TYPE}]
+% フロートの目次を出力するファイルの拡張子です。
+% \item[\texttt{\bslash fnum@TYPE}]
+% キャプション用の番号を生成するマクロです。
+% \item[\texttt{\bslash @makecaption}{\meta{num}}{\meta{text}}]
+% キャプションを出力するマクロです。
+% \meta{num} は |\fnum@...| の生成する番号,
+% \meta{text} はキャプションのテキストです。
+% テキストは適当な幅の |\parbox| に入ります。
+% \end{description}
+%
+% \paragraph{figure環境}
+%
+% \begin{macro}{\c@figure}
+%
+% 図番号のカウンタです。
+%
+% \begin{macro}{\thefigure}
+%
+% 図番号を出力するコマンドです。
+%
+% \begin{macrocode}
+%<*!book&!report>
+\newcounter{figure}
+\renewcommand \thefigure {\@arabic\c@figure}
+%</!book&!report>
+%<*book|report>
+\newcounter{figure}[chapter]
+\renewcommand \thefigure
+ {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fps@figure}
+% \begin{macro}{\ftype@figure}
+% \begin{macro}{\ext@figure}
+% \begin{macro}{\fnum@figure}
+%
+% |figure| のパラメータです。
+% |\figurename| の直後に |~| が入っていましたが,
+% ここでは外しました。
+%
+% \begin{macrocode}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename\nobreak\thefigure}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{figure}
+% \begin{environment}{figure*}
+%
+% |*| 形式は段抜きのフロートです。
+%
+% \begin{macrocode}
+\newenvironment{figure}%
+ {\@float{figure}}%
+ {\end@float}
+\newenvironment{figure*}%
+ {\@dblfloat{figure}}%
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \paragraph{table環境}
+%
+% \begin{macro}{\c@table}
+% \begin{macro}{\thetable}
+%
+% 表番号カウンタと表番号を出力するコマンドです。
+% アスキー版では |\thechapter.| が |\thechapter{}・| になっていますが,
+% ここではオリジナルのままにしています。
+%
+% \begin{macrocode}
+%<*!book&!report>
+\newcounter{table}
+\renewcommand\thetable{\@arabic\c@table}
+%</!book&!report>
+%<*book|report>
+\newcounter{table}[chapter]
+\renewcommand \thetable
+ {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fps@table}
+% \begin{macro}{\ftype@table}
+% \begin{macro}{\ext@table}
+% \begin{macro}{\fnum@table}
+%
+% |table| のパラメータです。
+% |\tablename| の直後に |~| が入っていましたが,
+% ここでは外しました。
+%
+% \begin{macrocode}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename\nobreak\thetable}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{table}
+% \begin{environment}{table*}
+%
+% |*| は段抜きのフロートです。
+%
+% \begin{macrocode}
+\newenvironment{table}%
+ {\@float{table}}%
+ {\end@float}
+\newenvironment{table*}%
+ {\@dblfloat{table}}%
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsection{キャプション}
+%
+% \begin{macro}{\@makecaption}
+%
+% |\caption| コマンドにより呼び出され,
+% 実際にキャプションを出力するコマンドです。
+% 第1引数はフロートの番号,
+% 第2引数はテキストです。
+%
+% \begin{macro}{\abovecaptionskip}
+% \begin{macro}{\belowcaptionskip}
+%
+% それぞれキャプションの前後に挿入されるスペースです。
+% |\belowcaptionskip| が0になっていましたので,
+% キャプションを表の上につけた場合にキャプションと表が
+% くっついてしまうのを直しました。
+%
+% \begin{macrocode}
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{5\p@?} % 元: 10\p@
+\setlength\belowcaptionskip{5\p@?} % 元: 0\p@
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% 実際のキャプションを出力します。
+% オリジナルと異なり,文字サイズを |\small| にし,
+% キャプションの幅を2cm狭くしました。
+%
+% [2003-11-05] ロジックを少し変えてみました。
+%
+% \begin{macrocode}
+%<*!jspf>
+% \long\def\@makecaption#1#2{{\small
+% \advance\leftskip10\jsc@mmm
+% \advance\rightskip10\jsc@mmm
+% \vskip\abovecaptionskip
+% \sbox\@tempboxa{#1\hskip1\jsZw\relax #2}%
+% \ifdim \wd\@tempboxa >\hsize
+% #1\hskip1\jsZw\relax #2\par
+% \else
+% \global \@minipagefalse
+% \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+% \fi
+% \vskip\belowcaptionskip}}
+\long\def\@makecaption#1#2{{\small
+ \advance\leftskip .0628\linewidth
+ \advance\rightskip .0628\linewidth
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{#1\zwspace#2}%
+ \ifdim \wd\@tempboxa <\hsize \centering \fi
+ #1\zwspace#2\par
+ \vskip\belowcaptionskip}}
+%</!jspf>
+%<*jspf>
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{\small\sffamily #1\quad #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ {\small\sffamily
+ \list{#1}{%
+ \renewcommand{\makelabel}[1]{##1\hfil}
+ \itemsep \z@
+ \itemindent \z@
+ \labelsep \z@
+ \labelwidth 11\jsc@mmm
+ \listparindent\z@
+ \leftmargin 11\jsc@mmm}\item\relax #2\endlist}
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}
+%</jspf>
+% \end{macrocode}
+% \end{macro}
+%
+% \section{フォントコマンド}
+%
+% ここでは\LaTeX~2.09で使われていたコマンドを定義します。
+% これらはテキストモードと数式モードのどちらでも動作します。
+% これらは互換性のためのもので,
+% できるだけ |\text...| と |\math...| を使ってください。
+%
+% [2016-07-15] KOMA-Script中の |\scr@DeclareOldFontCommand| に倣い、
+% これらの命令を使うときには警告を発することにしました。
+%
+% [2016-07-16] 警告を最初の一回だけ発することにしました。また,
+% 例外的に警告を出さないようにするスイッチも付けます。
+%
+% \begin{macro}{\if@jsc@warnoldfontcmd}
+% \begin{macro}{\if@jsc@warnoldfontcmdexception}
+% \begin{ZRnote}
+% |\if@jsc@warnoldfontcmd| はBXJSクラスでは不使用。\par
+% |\if@jsc@warnoldfontcmdexception| は |\allow/disallowoldfontcommands|
+% の状態を表す。
+% \end{ZRnote}
+% \begin{macrocode}
+\newif\if@jsc@warnoldfontcmd
+\@jsc@warnoldfontcmdtrue
+\newif\if@jsc@warnoldfontcmdexception
+\@jsc@warnoldfontcmdexceptionfalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\jsc@DeclareOldFontCommand}
+% \begin{macrocode}
+\newcommand*{\jsc@DeclareOldFontCommand}[3]{%
+ \g@addto@macro\bxjs@oldfontcmd@list{\do#1}%
+ \DeclareOldFontCommand{#1}{%
+ \bxjs@oldfontcmd{#1}#2%
+ }{%
+ \bxjs@oldfontcmd{#1}#3%
+ }%
+}
+\DeclareRobustCommand*{\jsc@warnoldfontcmd}[1]{%
+ \ClassInfo\bxjs@clsname
+ {Old font command '\string#1' is used!!\MessageBreak
+ The first occurrence is}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{ZRnote}
+%
+% \begin{macro}{\allowoldfontcommands}
+% “二文字フォント命令”の使用を許可する(警告しない)。
+% \begin{macro}{\disallowoldfontcommands}
+% “二文字フォント命令”の使用に対して警告を出す。
+% \begin{macrocode}
+\newcommand*{\allowoldfontcommands}{%
+ \@jsc@warnoldfontcmdexceptiontrue}
+\newcommand*{\disallowoldfontcommands}{%
+ \@jsc@warnoldfontcmdexceptionfalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+\let\bxjs@oldfontcmd@list\@empty
+\def\bxjs@oldfontcmd#1{%
+ \expandafter\bxjs@oldfontcmd@a\csname bxjs@ofc/\string#1\endcsname#1}
+\def\bxjs@oldfontcmd@a#1#2{%
+ \if@jsc@warnoldfontcmdexception\else
+ \global\@jsc@warnoldfontcmdfalse
+ \ifx#1\relax
+ \global\let#1=t%
+ \jsc@warnoldfontcmd{#2}%
+ \fi
+ \fi}
+\def\bxjs@warnoldfontcmd@final{%
+% \par
+ \global\let\bxjs@warnoldfontcmd@final\@empty
+ \let\@tempa\@empty
+ \def\do##1{%
+ \expandafter\ifx\csname bxjs@ofc/\string##1\endcsname\relax\else
+ \edef\@tempa{\@tempa \space\string##1}\fi}
+ \bxjs@oldfontcmd@list
+ \ifx\@tempa\@empty\else
+ \ClassWarningNoLine\bxjs@clsname
+ {Some old font commands were used in text:\MessageBreak
+ \space\@tempa\MessageBreak
+ You should note, that since 1994 LaTeX2e provides a\MessageBreak
+ new font selection scheme called NFSS2 with several\MessageBreak
+ new, combinable font commands. The
+ class provides\MessageBreak
+ the old font commands only for compatibility}
+ \fi}
+% \end{macrocode}
+% 単純に |\AtEndDocument| のフックの中で |\bxjs@warnoldfontcmd@final| を
+% 実行した場合、最終ページのヘッダ・フッタの中にある二文字フォント命令は
+% それより後に実行されるため捕捉できない。
+% これに対処するため、|\end{document}| 中に実行される |\clearpage| の処理の
+% 直後に |\bxjs....final| が呼ばれるようにする。
+% \begin{macrocode}
+\def\bxjs@warnoldfontcmd@kick@final{%
+ \g@addto@macro\clearpage{\bxjs@warnoldfontcmd@final}}
+\AtEndDocument{\bxjs@warnoldfontcmd@kick@final}
+% \end{macrocode}
+%
+% \end{ZRnote}
+%
+% \begin{macro}{\mc}
+% \begin{macro}{\gt}
+% \begin{macro}{\rm}
+% \begin{macro}{\sf}
+% \begin{macro}{\tt}
+%
+% フォントファミリを変更します。
+%
+% \begin{macrocode}
+\jsc@DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
+\jsc@DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
+\jsc@DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\jsc@DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\jsc@DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bf}
+%
+% ボールドシリーズにします。通常のミーディアムシリーズに戻す
+% コマンドは |\mdseries| です。
+%
+% \begin{macrocode}
+\jsc@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\it}
+% \begin{macro}{\sl}
+% \begin{macro}{\sc}
+%
+% フォントシェイプを変えるコマンドです。
+% 斜体とスモールキャップスは数式中では何もしません
+% (警告メッセージを出力します)。
+% 通常のアップライト体に戻すコマンドは |\upshape| です。
+%
+% \begin{macrocode}
+\jsc@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\jsc@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\jsc@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cal}
+% \begin{macro}{\mit}
+%
+% 数式モード以外では何もしません(警告を出します)。
+%
+% \begin{macrocode}
+\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{相互参照}
+%
+% \subsection{目次の類}
+%
+% |\section| コマンドは |.toc| ファイルに次のような行を出力します。
+% \begin{quote}
+% |\contentsline{section}{タイトル}{ページ}|
+% \end{quote}
+% たとえば |\section| に見出し番号が付く場合,上の「タイトル」は
+% \begin{quote}
+% |\numberline{番号}{見出し}|
+% \end{quote}
+% となります。
+% この「番号」は |\thesection| コマンドで生成された見出し番号です。
+%
+% |figure| 環境の |\caption| コマンドは |.lof| ファイルに
+% 次のような行を出力します。
+% \begin{quote}
+% |\contentsline{figure}{\numberline{番号}{キャプション}{ページ}|
+% \end{quote}
+% この「番号」は |\thefigure| コマンドで生成された図番号です。
+%
+% |table| 環境も同様です。
+%
+% |\contentsline{...}| は |\l@...| というコマンドを実行するので,
+% あらかじめ |\l@chapter|,|\l@section|,|\l@figure| などを
+% 定義しておかなければなりません。
+% これらの多くは |\@dottedtocline| コマンドを使って定義します。
+% これは
+% \begin{quote}
+% |\@dottedtocline{レベル}{インデント}{幅}{タイトル}{ページ}|
+% \end{quote}
+% という書式です。
+% \begin{description}
+% \item[レベル] この値が |tocdepth| 以下のときだけ出力されます。
+% |\chapter| はレベル0,|\section| はレベル1,等々です。
+% \item[インデント] 左側の字下げ量です。
+% \item[幅] 「タイトル」に |\numberline| コマンドが含まれる場合,
+% 節番号が入る箱の幅です。
+% \end{description}
+%
+% \begin{macro}{\@pnumwidth}
+%
+% ページ番号の入る箱の幅です。
+%
+% \begin{macro}{\@tocrmarg}
+%
+% 右マージンです。
+% |\@tocrmarg| $\ge$ |\@pnumwidth| とします。
+%
+% \begin{macro}{\@dotsep}
+%
+% 点の間隔です(単位 mu)。
+%
+% \begin{macro}{\c@tocdepth}
+%
+% 目次ページに出力する見出しレベルです。
+% 元は \texttt{article} で3,その他で2でしたが,
+% ここでは一つずつ減らしています。
+%
+% \begin{macrocode}
+\newcommand\@pnumwidth{1.55em}
+\newcommand\@tocrmarg{2.55em}
+\newcommand\@dotsep{4.5}
+%<!book&!report>\setcounter{tocdepth}{2}
+%<book|report>\setcounter{tocdepth}{1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{目次}
+%
+% \begin{macro}{\tableofcontents}
+%
+% 目次を生成します。
+%
+% \begin{macro}{\jsc@tocl@width}
+%
+% [2013-12-30] |\prechaptername| などから見積もった目次のラベルの長さです。(by ts)
+%
+% \begin{macrocode}
+\newdimen\jsc@tocl@width
+\newcommand{\tableofcontents}{%
+%<*book|report>
+ \settowidth\jsc@tocl@width{\headfont\prechaptername\postchaptername}%
+ \settowidth\@tempdima{\headfont\appendixname}%
+ \ifdim\jsc@tocl@width<\@tempdima \setlength\jsc@tocl@width{\@tempdima}\fi
+ \ifdim\jsc@tocl@width<2\jsZw \divide\jsc@tocl@width by 2 \advance\jsc@tocl@width 1\jsZw\fi
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \chapter*{\contentsname}%
+ \@mkboth{\contentsname}{}%
+%</book|report>
+%<*!book&!report>
+ \settowidth\jsc@tocl@width{\headfont\presectionname\postsectionname}%
+ \settowidth\@tempdima{\headfont\appendixname}%
+ \ifdim\jsc@tocl@width<\@tempdima\relax\setlength\jsc@tocl@width{\@tempdima}\fi
+ \ifdim\jsc@tocl@width<2\jsZw \divide\jsc@tocl@width by 2 \advance\jsc@tocl@width 1\jsZw\fi
+ \section*{\contentsname}%
+ \@mkboth{\contentsname}{\contentsname}%
+%</!book&!report>
+ \@starttoc{toc}%
+%<book|report> \if@restonecol\twocolumn\fi
+}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\l@part}
+%
+% 部の目次です。
+%
+% \begin{macrocode}
+\newcommand*{\l@part}[2]{%
+ \ifnum \c@tocdepth >-2\relax
+%<!book&!report> \addpenalty\@secpenalty
+%<book|report> \addpenalty{-\@highpenalty}%
+ \addvspace{2.25em \@plus\p@?}%
+ \begingroup
+ \parindent \z@
+% \@pnumwidth should be \@tocrmarg
+% \rightskip \@pnumwidth
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ {\leavevmode
+ \large \headfont
+ \setlength\@lnumwidth{4\jsZw}%
+ #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
+ \nobreak
+%<book|report> \global\@nobreaktrue
+%<book|report> \everypar{\global\@nobreakfalse\everypar{}}%
+ \endgroup
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@chapter}
+%
+% 章の目次です。|\@lnumwidth| を4.683zwに増やしました。
+%
+% [2013-12-30] |\@lnumwidth| を |\jsc@tocl@width| から
+% 決めるようにしてみました。(by ts)
+%
+% \begin{macrocode}
+%<*book|report>
+\newcommand*{\l@chapter}[2]{%
+ \ifnum \c@tocdepth >\m@ne
+ \addpenalty{-\@highpenalty}%
+ \addvspace{1.0em \@plus\p@?}
+% \vskip 1.0em \@plus\p@ % book.clsでは↑がこうなっている
+ \begingroup
+ \parindent\z@
+% \rightskip\@pnumwidth
+ \rightskip\@tocrmarg
+ \parfillskip-\rightskip
+ \leavevmode\headfont
+% % \if@english\setlength\@lnumwidth{5.5em}\else\setlength\@lnumwidth{4.683\jsZw}\fi
+ \setlength\@lnumwidth{\jsc@tocl@width}\advance\@lnumwidth 2.683\jsZw
+ \advance\leftskip\@lnumwidth \hskip-\leftskip
+ #1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par
+ \penalty\@highpenalty
+ \endgroup
+ \fi}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@section}
+%
+% 節の目次です。
+%
+% \begin{macrocode}
+%<*!book&!report>
+\newcommand*{\l@section}[2]{%
+ \ifnum \c@tocdepth >\z@
+ \addpenalty{\@secpenalty}%
+ \addvspace{1.0em \@plus\p@?}%
+ \begingroup
+ \parindent\z@
+% \rightskip\@pnumwidth
+ \rightskip\@tocrmarg
+ \parfillskip-\rightskip
+ \leavevmode\headfont
+% % \setlength\@lnumwidth{4\jsZw}% 元1.5em [2003-03-02]
+ \setlength\@lnumwidth{\jsc@tocl@width}\advance\@lnumwidth 2\jsZw
+ \advance\leftskip\@lnumwidth \hskip-\leftskip
+ #1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par
+ \endgroup
+ \fi}
+%</!book&!report>
+% \end{macrocode}
+%
+% インデントと幅はそれぞれ1.5em,2.3emでしたが,
+% 1zw,3.683zwに変えました。
+% \begin{macrocode}
+%<book|report> % \newcommand*{\l@section}{\@dottedtocline{1}{1\jsZw}{3.683\jsZw}}
+% \end{macrocode}
+%
+% [2013-12-30] 上のインデントは |\jsc@tocl@width| から決めるように
+% しました。(by ts)
+%
+% \end{macro}
+%
+% \begin{macro}{\l@subsection}
+% \begin{macro}{\l@subsubsection}
+% \begin{macro}{\l@paragraph}
+% \begin{macro}{\l@subparagraph}
+%
+% さらに下位レベルの目次項目の体裁です。
+% あまり使ったことがありませんので,要修正かもしれません。
+%
+% [2013-12-30] ここも |\jsc@tocl@width| から決めるように
+% してみました。(by ts)
+%
+% \begin{macrocode}
+%<*!book&!report>
+% \newcommand*{\l@subsection} {\@dottedtocline{2}{1.5em}{2.3em}}
+% \newcommand*{\l@subsubsection}{\@dottedtocline{3}{3.8em}{3.2em}}
+% \newcommand*{\l@paragraph} {\@dottedtocline{4}{7.0em}{4.1em}}
+% \newcommand*{\l@subparagraph} {\@dottedtocline{5}{10em}{5em}}
+%
+% \newcommand*{\l@subsection} {\@dottedtocline{2}{1zw}{3zw}}
+% \newcommand*{\l@subsubsection}{\@dottedtocline{3}{2\jsZw}{3\jsZw}}
+% \newcommand*{\l@paragraph} {\@dottedtocline{4}{3\jsZw}{3\jsZw}}
+% \newcommand*{\l@subparagraph} {\@dottedtocline{5}{4\jsZw}{3\jsZw}}
+%
+\newcommand*{\l@subsection}{%
+ \@tempdima\jsc@tocl@width \advance\@tempdima -1\jsZw
+ \@dottedtocline{2}{\@tempdima}{3\jsZw}}
+\newcommand*{\l@subsubsection}{%
+ \@tempdima\jsc@tocl@width \advance\@tempdima 0\jsZw
+ \@dottedtocline{3}{\@tempdima}{4\jsZw}}
+\newcommand*{\l@paragraph}{%
+ \@tempdima\jsc@tocl@width \advance\@tempdima 1\jsZw
+ \@dottedtocline{4}{\@tempdima}{5\jsZw}}
+\newcommand*{\l@subparagraph}{%
+ \@tempdima\jsc@tocl@width \advance\@tempdima 2\jsZw
+ \@dottedtocline{5}{\@tempdima}{6\jsZw}}
+%</!book&!report>
+%<*book|report>
+% \newcommand*{\l@subsection} {\@dottedtocline{2}{3.8em}{3.2em}}
+% \newcommand*{\l@subsubsection}{\@dottedtocline{3}{7.0em}{4.1em}}
+% \newcommand*{\l@paragraph} {\@dottedtocline{4}{10em}{5em}}
+% \newcommand*{\l@subparagraph} {\@dottedtocline{5}{12em}{6em}}
+\newcommand*{\l@section}{%
+ \@tempdima\jsc@tocl@width \advance\@tempdima -1\jsZw
+ \@dottedtocline{1}{\@tempdima}{3.683\jsZw}}
+\newcommand*{\l@subsection}{%
+ \@tempdima\jsc@tocl@width \advance\@tempdima 2.683\jsZw
+ \@dottedtocline{2}{\@tempdima}{3.5\jsZw}}
+\newcommand*{\l@subsubsection}{%
+ \@tempdima\jsc@tocl@width \advance\@tempdima 6.183\jsZw
+ \@dottedtocline{3}{\@tempdima}{4.5\jsZw}}
+\newcommand*{\l@paragraph}{%
+ \@tempdima\jsc@tocl@width \advance\@tempdima 10.683\jsZw
+ \@dottedtocline{4}{\@tempdima}{5.5\jsZw}}
+\newcommand*{\l@subparagraph}{%
+ \@tempdima\jsc@tocl@width \advance\@tempdima 16.183\jsZw
+ \@dottedtocline{5}{\@tempdima}{6.5\jsZw}}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\numberline}
+% \begin{macro}{\@lnumwidth}
+%
+% 欧文版\LaTeX では |\numberline{...}| は幅 |\@tempdima| の箱に左詰め
+% で出力する命令ですが,
+% アスキー版では |\@tempdima| の代わりに |\@lnumwidth| という変数
+% で幅を決めるように再定義しています。
+% 後続文字が全角か半角かでスペースが変わらないように |\hspace|
+% を入れておきました。
+%
+% \begin{macrocode}
+\newdimen\@lnumwidth
+\def\numberline#1{\hb@xt@\@lnumwidth{#1\hfil}\hspace{0pt}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dottedtocline}
+% \begin{macro}{\jsTocLine}
+%
+% \LaTeX 本体(\texttt{ltsect.dtx} 参照)での定義と同じですが,
+% |\@tempdima| を |\@lnumwidth| に変えています。
+%
+% [2018-06-23] デフォルトでは\jsTocLine のようにベースラインになります。\par
+% これを変更可能にするため,|\jsTocLine| というマクロに切り出しました。
+% 例えば,仮想ボディの中央
+% {\renewcommand{\jsTocLine}{\leaders \hbox {\hss ・\hss}\hfill}\jsTocLine}
+% に変更したい場合は
+%\begin{verbatim}
+% \renewcommand{\jsTocLine}{\leaders \hbox {\hss ・\hss}\hfill}
+%\end{verbatim}
+% とします。
+%
+% \begin{macrocode}
+\def\jsTocLine{\leaders\hbox{%
+ $\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill}
+\def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
+ \vskip \z@ \@plus.2\p@?
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@lnumwidth #3\relax
+ \advance\leftskip \@lnumwidth \null\nobreak\hskip -\leftskip
+ {#4}\nobreak
+ \jsTocLine \nobreak\hb@xt@\@pnumwidth{%
+ \hfil\normalfont \normalcolor #5}\par}\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{図目次と表目次}
+%
+% \begin{macro}{\listoffigures}
+%
+% 図目次を出力します。
+%
+% \begin{macrocode}
+\newcommand{\listoffigures}{%
+%<*book|report>
+ \if@twocolumn\@restonecoltrue\onecolumn
+ \else\@restonecolfalse\fi
+ \chapter*{\listfigurename}%
+ \@mkboth{\listfigurename}{}%
+%</book|report>
+%<*!book&!report>
+ \section*{\listfigurename}%
+ \@mkboth{\listfigurename}{\listfigurename}%
+%</!book&!report>
+ \@starttoc{lof}%
+%<book|report> \if@restonecol\twocolumn\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@figure}
+%
+% 図目次の項目を出力します。
+%
+% \begin{macrocode}
+\newcommand*{\l@figure}{\@dottedtocline{1}{1\jsZw}{3.683\jsZw}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listoftables}
+%
+% 表目次を出力します。
+%
+% \begin{macrocode}
+\newcommand{\listoftables}{%
+%<*book|report>
+ \if@twocolumn\@restonecoltrue\onecolumn
+ \else\@restonecolfalse\fi
+ \chapter*{\listtablename}%
+ \@mkboth{\listtablename}{}%
+%</book|report>
+%<*!book&!report>
+ \section*{\listtablename}%
+ \@mkboth{\listtablename}{\listtablename}%
+%</!book&!report>
+ \@starttoc{lot}%
+%<book|report> \if@restonecol\twocolumn\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@table}
+%
+% 表目次は図目次と同じです。
+%
+% \begin{macrocode}
+\let\l@table\l@figure
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{参考文献}
+%
+% \begin{macro}{\bibindent}
+%
+% オープンスタイルの参考文献で使うインデント幅です。
+% 元は 1.5em でした。
+%
+% \begin{macrocode}
+\newdimen\bibindent
+\setlength\bibindent{2\jsZw}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{thebibliography}
+%
+% 参考文献リストを出力します。
+%
+% [2016-07-16] \LaTeX~2.09で使われていたフォントコマンドの警告を,
+% 文献スタイル(.bst)ではよく |\bf| がいまだに用いられることが多いため,
+% |thebibliography| 環境内では例外的に出さないようにしました。
+%
+% \begin{macrocode}
+\newenvironment{thebibliography}[1]{%
+ \@jsc@warnoldfontcmdexceptiontrue
+ \global\let\presectionname\relax
+ \global\let\postsectionname\relax
+%<article|slide> \section*{\refname}\@mkboth{\refname}{\refname}%
+%<*kiyou>
+ \vspace{1.5\baselineskip}
+ \subsubsection*{\refname}\@mkboth{\refname}{\refname}%
+ \vspace{0.5\baselineskip}
+%</kiyou>
+%<book|report> \chapter*{\bibname}\@mkboth{\bibname}{}%
+%<book|report> \addcontentsline{toc}{chapter}{\bibname}%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+%<kiyou> \small
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty\clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\newblock}
+%
+% |\newblock| はデフォルトでは小さなスペースを生成します。
+%
+% \begin{macrocode}
+\newcommand{\newblock}{\hskip .11em\@plus.33em\@minus.07em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@openbib@code}
+%
+% |\@openbib@code| はデフォルトでは何もしません。
+% この定義は |openbib| オプションによって変更されます。
+%
+% \begin{macrocode}
+\let\@openbib@code\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@biblabel}
+%
+% |\bibitem[...]| のラベルを作ります。
+% \texttt{ltbibl.dtx} の定義の半角 [] を全角[]に変え,
+% 余分なスペースが入らないように |\jsInhibitGlue| ではさみました。
+% とりあえずコメントアウトしておきますので,必要に応じて生かしてください。
+%
+% \begin{macrocode}
+% \def\@biblabel#1{\jsInhibitGlue [#1]\jsInhibitGlue}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cite}
+% \begin{macro}{\@cite}
+% \begin{macro}{\@citex}
+%
+% 文献の番号を出力する部分は \texttt{ltbibl.dtx} で定義されていますが,
+% コンマとかっこを和文フォントにするには次のようにします。
+% とりあえずコメントアウトしておきましたので,必要に応じて生かしてください。
+% かっこの前後に入るグルーを |\jsInhibitGlue| で取っていますので,
+% オリジナル同様,\verb*+Knuth~\cite{knu} + のように半角空白
+% で囲んでください。
+%
+% \begin{macrocode}
+% \def\@citex[#1]#2{\leavevmode
+% \let\@citea\@empty
+% \@cite{\@for\@citeb:=#2\do
+% {\@citea\def\@citea{,\inhibitglue\penalty\@m\ }%
+% \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+% \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+% \@ifundefined{b@\@citeb}{\mbox{\normalfont\bfseries ?}%
+% \G@refundefinedtrue
+% \@latex@warning
+% {Citation `\@citeb' on page \thepage \space undefined}}%
+% {\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}}
+% \def\@cite#1#2{\jsInhibitGlue [{#1\if@tempswa ,#2\fi}]\jsInhibitGlue}
+% \end{macrocode}
+%
+% 引用番号を上ツキの 1)のようなスタイルにするには次のようにします。
+% |\cite| の先頭に |\unskip| を付けて先行のスペース(\verb|~| も)
+% を帳消しにしています。
+%
+% \begin{macrocode}
+% \DeclareRobustCommand\cite{\unskip
+% \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+% \def\@cite#1#2{$^{\hbox{\scriptsize{#1\if@tempswa
+% ,\jsInhibitGlue\ #2\fi})}}$}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{索引}
+%
+% \begin{environment}{theindex}
+%
+% 2\zrWDash3段組の索引を作成します。
+% 最後が偶数ページのときにマージンがずれる現象を直しました(Thanks: 藤村さん)。
+%
+% \begin{macrocode}
+\newenvironment{theindex}{% 索引を3段組で出力する環境
+ \if@twocolumn
+ \onecolumn\@restonecolfalse
+ \else
+ \clearpage\@restonecoltrue
+ \fi
+ \columnseprule.4pt \columnsep 2\jsZw
+ \ifx\multicols\@undefined
+%<book|report> \twocolumn[\@makeschapterhead{\indexname}%
+%<book|report> \addcontentsline{toc}{chapter}{\indexname}]%
+%<!book&!report> \def\presectionname{}\def\postsectionname{}%
+%<!book&!report> \twocolumn[\section*{\indexname}]%
+ \else
+ \ifdim\textwidth<\fullwidth
+ \setlength{\evensidemargin}{\oddsidemargin}
+ \setlength{\textwidth}{\fullwidth}
+ \setlength{\linewidth}{\fullwidth}
+%<book|report> \begin{multicols}{3}[\chapter*{\indexname}%
+%<book|report> \addcontentsline{toc}{chapter}{\indexname}]%
+%<!book&!report> \def\presectionname{}\def\postsectionname{}%
+%<!book&!report> \begin{multicols}{3}[\section*{\indexname}]%
+ \else
+%<book|report> \begin{multicols}{2}[\chapter*{\indexname}%
+%<book|report> \addcontentsline{toc}{chapter}{\indexname}]%
+%<!book&!report> \def\presectionname{}\def\postsectionname{}%
+%<!book&!report> \begin{multicols}{2}[\section*{\indexname}]%
+ \fi
+ \fi
+%<book|report> \@mkboth{\indexname}{}%
+%<!book&!report> \@mkboth{\indexname}{\indexname}%
+ \plainifnotempty % \thispagestyle{plain}
+ \parindent\z@
+ \parskip\z@ \@plus .3\p@?\relax
+ \let\item\@idxitem
+ \raggedright
+ \footnotesize\narrowbaselines
+ }{
+ \ifx\multicols\@undefined
+ \if@restonecol\onecolumn\fi
+ \else
+ \end{multicols}
+ \fi
+ \clearpage
+ }
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@idxitem}
+% \begin{macro}{\subitem}
+% \begin{macro}{\subsubitem}
+%
+% 索引項目の字下げ幅です。|\@idxitem| は |\item| の項目の字下げ幅です。
+%
+% \begin{macrocode}
+\newcommand{\@idxitem}{\par\hangindent 4\jsZw} % 元 40pt
+\newcommand{\subitem}{\@idxitem \hspace*{2\jsZw}} % 元 20pt
+\newcommand{\subsubitem}{\@idxitem \hspace*{3\jsZw}} % 元 30pt
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indexspace}
+%
+% 索引で先頭文字ごとのブロックの間に入るスペースです。
+%
+% \begin{macrocode}
+\newcommand{\indexspace}{\par \vskip 10\p@? \@plus5\p@? \@minus3\p@?\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\seename}
+% \begin{macro}{\alsoname}
+%
+% 索引の |\see|,|\seealso| コマンドで出力されるものです。
+% デフォルトはそれぞれ \emph{see},\emph{see also} という英語ですが,
+% ここではとりあえず両方とも「→」に変えました。
+% $\Rightarrow$(|$\Rightarrow$|)などでもいいでしょう。
+%
+% \begin{macrocode}
+\newcommand\seename{\if@english see\else →\fi}
+\newcommand\alsoname{\if@english see also\else →\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{脚注}
+%
+% \begin{macro}{\footnote}
+% \begin{macro}{\footnotemark}
+%
+% 和文の句読点・閉じかっこ類の直後で用いた際に
+% 余分なアキが入るのを防ぐため,
+% |\inhibitglue| を入れることにします。
+% p\LaTeX の日付が2016/09/03より新しい場合は,このパッチが不要なのであてません。
+%
+% \begin{ZRnote}
+% パッチの必要性は「|\pltx@foot@penalty| が未定義か」で行う。
+% |\inhibitglue| の代わりに |\jsInhibitGlue| を使う。
+% \end{ZRnote}
+% \begin{macrocode}
+\ifx\pltx@foot@penalty\@undefined
+ \let\footnotes@ve=\footnote
+ \def\footnote{\jsInhibitGlue\footnotes@ve}
+ \let\footnotemarks@ve=\footnotemark
+ \def\footnotemark{\jsInhibitGlue\footnotemarks@ve}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@makefnmark}
+%
+% 脚注番号を付ける命令です。
+% ここでは脚注番号の前に記号 $*$ を付けています。
+% 「注1」の形式にするには |\textasteriskcentered|
+% を |注\kern0.1em| にしてください。
+% |\@xfootnotenext| と合わせて,
+% もし脚注番号が空なら記号も出力しないようにしてあります。
+%
+% [2002-04-09] インプリメントの仕方を変えたため消しました。
+%
+% [2013-04-23] 新しい\pTeX では脚注番号のまわりにスペースが入りすぎることを防ぐため,
+% 北川さんのパッチ [qa:57090] を取り込みました。
+%
+% [2013-05-14] plcore.ltx に倣った形に書き直しました(Thanks: 北川さん)。
+%
+% [2016-07-11] コミュニティ版p\LaTeX の変更に追随しました(Thanks: 角藤さん)。
+% p\LaTeX の日付が2016/04/17より新しい場合は,このパッチが不要なのであてません。
+%
+% \begin{ZRnote}
+% {\pTeX}依存のコードなので、minimal和文ドライバ実装に移動。
+% \end{ZRnote}
+% \end{macro}
+%
+% \begin{macro}{\thefootnote}
+%
+% 脚注番号に * 印が付くようにしました。
+% ただし,番号がゼロのときは * 印も脚注番号も付きません。
+%
+% [2003-08-15] |\textasteriskcentered| ではフォントによって
+% 下がりすぎるので変更しました。
+%
+% [2016-10-08] TODO: 脚注番号が |newtxtext| や |newpxtext| の使用時に
+% おかしくなってしまいます。これらのパッケージは内部で |\thefootnote| を
+% 再定義していますので,気になる場合はパッケージを読み込むときに
+% \texttt{defaultsups} オプションを付けてください(qa:57284, qa:57287)。
+%
+% \begin{macrocode}
+\def\thefootnote{\ifnum\c@footnote>\z@\leavevmode\lower.5ex\hbox{*}\@arabic\c@footnote\fi}
+% \end{macrocode}
+%
+% 「注1」の形式にするには次のようにしてください。
+%
+% \begin{macrocode}
+% \def\thefootnote{\ifnum\c@footnote>\z@ 注\kern0.1\jsZw\@arabic\c@footnote\fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\footnoterule}
+%
+% 本文と脚注の間の罫線です。
+%
+% \begin{macrocode}
+\renewcommand{\footnoterule}{%
+ \kern-2.6\p@? \kern-.4\p@
+ \hrule width .4\columnwidth
+ \kern 2.6\p@?}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@footnote}
+%
+% 脚注番号は章ごとにリセットされます。
+%
+% \begin{macrocode}
+%<book|report>\@addtoreset{footnote}{chapter}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@footnotetext}
+%
+% 脚注で |\verb| が使えるように改変してあります。
+% Jeremy Gibbons, \textit{\TeX\ and TUG NEWS},
+% Vol.~2, No.~4 (1993), p.~9)
+%
+% [2016-08-25] コミュニティ版\pLaTeX の「閉じ括弧類の直後に
+% |\footnotetext| が続く場合に改行が起きることがある問題に対処」
+% と同等のコードを追加しました。
+%
+% [2016-09-08] コミュニティ版\pLaTeX のバグ修正に追随しました。
+%
+% [2016-11-29] 古い\pLaTeX で使用された場合を考慮してコードを改良。
+% ^^A 脚注直後に改行を可能にするために|\null|を入れる場合,
+% ^^A 同時にペナルティも考慮しなければ誤った改行が起きる可能性がある。
+% ^^A このため,|\ifhmode\null\fi|は
+% ^^A |\ifx\pltx@foot@penalty\@undefined\else ... \fi|
+% ^^A 条件の内側に置いておくのが安全。
+%
+% [2018-03-11] |\next|などいくつかの内部命令を |\jsc@...| 付きの
+% ユニークな名前にしました。
+% \begin{macrocode}
+\long\def\@footnotetext{%
+ \insert\footins\bgroup
+ \normalfont\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces}%
+ \futurelet\jsc@next\jsc@fo@t}
+\def\jsc@fo@t{\ifcat\bgroup\noexpand\jsc@next \let\jsc@next\jsc@f@@t
+ \else \let\jsc@next\jsc@f@t\fi \jsc@next}
+\def\jsc@f@@t{\bgroup\aftergroup\jsc@@foot\let\jsc@next}
+\def\jsc@f@t#1{#1\jsc@@foot}
+\def\jsc@@foot{\@finalstrut\strutbox\color@endgroup\egroup
+ \ifx\pltx@foot@penalty\@undefined\else
+ \ifhmode\null\fi
+ \ifnum\pltx@foot@penalty=\z@\else
+ \penalty\pltx@foot@penalty
+ \pltx@foot@penalty\z@
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefntext}
+%
+% 実際に脚注を出力する命令です。
+% |\@makefnmark| は脚注の番号を出力する命令です。
+% ここでは脚注が左端から一定距離に来るようにしてあります。
+%
+% \begin{macrocode}
+\newcommand\@makefntext[1]{%
+ \advance\leftskip 3\jsZw
+ \parindent 1\jsZw
+ \noindent
+ \llap{\@makefnmark\hskip0.3\jsZw}#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@xfootnotenext}
+%
+% 最初の |\footnotetext{...}| は番号が付きません。
+% 著者の所属などを脚注の欄に書くときに便利です。
+%
+% すでに |\footnote| を使った後なら |\footnotetext[0]{...}|
+% とすれば番号を付けない脚注になります。
+% ただし,この場合は脚注番号がリセットされてしまうので,
+% 工夫が必要です。
+%
+% [2002-04-09] インプリメントの仕方を変えたため消しました。
+%
+% \begin{macrocode}
+% \def\@xfootnotenext[#1]{%
+% \begingroup
+% \ifnum#1>\z@
+% \csname c@\@mpfn\endcsname #1\relax
+% \unrestored@protected@xdef\@thefnmark{\thempfn}%
+% \else
+% \unrestored@protected@xdef\@thefnmark{}%
+% \fi
+% \endgroup
+% \@footnotetext}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{ZRnote}
+% ここまでのコードは JS クラスを踏襲する。
+% \end{ZRnote}
+%
+% \section{段落の頭へのグルー挿入禁止}
+%
+% 段落頭のかぎかっこなどを見かけ1字半下げから全角1字下げに直します。
+%
+% \begin{ZRnote}
+% \begin{macro}{\jsInhibitGlueAtParTop}
+% 「段落頭の括弧の空き補正」の処理を |\jsInhibitGlueAtParTop|
+% という命令にして、これを再定義可能にした。
+% \begin{macrocode}
+\let\jsInhibitGlueAtParTop\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\everyparhook}
+% 全ての段落の冒頭で実行されるフック。
+% これの初期値を先述の |\jsInhibitGlueAtParTop| とする。
+% \begin{macrocode}
+\def\everyparhook{\jsInhibitGlueAtParTop}
+\ifnum\bxjs@everyparhook=\bxjs@everyparhook@compat
+\g@addto@macro\bxjs@begin@document@hook{\everypar{\everyparhook}}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{ZRnote}
+%
+% [2016-07-18] |\inhibitglue| の発行対象を |\inhibitxspcode| が2に
+% 設定されているものすべてに拡大しました。
+%
+% [2016-12-01] すぐ上の変更で |\@tempa| を使っていたのがよくなかった
+% ので,プレフィックスを付けて |\jsc@tempa| にしました(forum:2085)。
+%
+% [2017-02-13] |\jsc@tempa| は実はテンポラリではなく「この処理専用の
+% ユニーク制御綴」である必要があります。間違って別の箇所で使う危険性が
+% 高いので,専用の命令 |\jsc@ig@temp| に置き換えました(Issue \#54)。
+%
+% \begin{ZRnote}
+% 次の |\@inhibitglue| はJSクラスでの |\jsInhibitGlueAtParTop| の
+% 実装である。
+% エンジンが |(u)platex| の場合はこれを採用する。
+% \end{ZRnote}
+% \begin{macrocode}
+\ifx j\jsEngine
+\def\@inhibitglue{%
+ \futurelet\@let@token\@@inhibitglue}
+\begingroup
+\let\GDEF=\gdef
+\let\CATCODE=\catcode
+\let\ENDGROUP=\endgroup
+\CATCODE`k=12
+\CATCODE`a=12
+\CATCODE`n=12
+\CATCODE`j=12
+\CATCODE`i=12
+\CATCODE`c=12
+\CATCODE`h=12
+\CATCODE`r=12
+\CATCODE`t=12
+\CATCODE`e=12
+\GDEF\KANJI@CHARACTER{kanji character }
+\ENDGROUP
+\def\@@inhibitglue{%
+ \expandafter\expandafter\expandafter\jsc@inhibitglue\expandafter\meaning\expandafter\@let@token\KANJI@CHARACTER\relax\jsc@end}
+\expandafter\def\expandafter\jsc@inhibitglue\expandafter#\expandafter1\KANJI@CHARACTER#2#3\jsc@end{%
+ \def\jsc@ig@temp{#1}%
+ \ifx\jsc@ig@temp\@empty
+ \ifnum\the\inhibitxspcode`#2=2\relax
+ \inhibitglue
+ \fi
+ \fi}
+\fi
+% \end{macrocode}
+%
+% \begin{ZRnote}
+% ここからしばらく
+% 「(本物の)|\everypar| に追加した |\everyparhook| を保持する」
+% ためのパッチ処理が続く。
+% これは、|everyparhook=compat| の場合にのみ実行する。
+% \end{ZRnote}
+% \begin{macrocode}
+\ifnum\bxjs@everyparhook=\bxjs@everyparhook@compat
+% \end{macrocode}
+%
+% これだけではいけないようです。あちこちに |\everypar| を初期化するコマンドが
+% 隠されていました。
+%
+% まず,環境の直後の段落です。
+%
+% [2016-11-19] ltlists.dtx 2015/05/10 v1.0tの変更に追随して |\clubpenalty| の
+% リセットを追加しました。
+%
+% \begin{macrocode}
+\def\@doendpe{%
+ \@endpetrue
+ \def\par{%
+ \@restorepar\clubpenalty\@clubpenalty\everypar{\everyparhook}\par\@endpefalse}%
+ \everypar{{\setbox\z@\lastbox}\everypar{\everyparhook}\@endpefalse\everyparhook}}
+% \end{macrocode}
+%
+% [2017-08-31] minipage環境にも対策します。
+%
+% \begin{macrocode}
+\def\@setminipage{%
+ \@minipagetrue
+ \everypar{\@minipagefalse\everypar{\everyparhook}}%
+}
+% \end{macrocode}
+%
+% |\item| 命令の直後です。
+%
+% \begin{macrocode}
+\def\@item[#1]{%
+ \if@noparitem
+ \@donoparitem
+ \else
+ \if@inlabel
+ \indent \par
+ \fi
+ \ifhmode
+ \unskip\unskip \par
+ \fi
+ \if@newlist
+ \if@nobreak
+ \@nbitem
+ \else
+ \addpenalty\@beginparpenalty
+ \addvspace\@topsep
+ \addvspace{-\parskip}%
+ \fi
+ \else
+ \addpenalty\@itempenalty
+ \addvspace\itemsep
+ \fi
+ \global\@inlabeltrue
+ \fi
+ \everypar{%
+ \@minipagefalse
+ \global\@newlistfalse
+ \if@inlabel
+ \global\@inlabelfalse
+ {\setbox\z@\lastbox
+ \ifvoid\z@
+ \kern-\itemindent
+ \fi}%
+ \box\@labels
+ \penalty\z@
+ \fi
+ \if@nobreak
+ \@nobreakfalse
+ \clubpenalty \@M
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{\everyparhook}%
+ \fi
+ \everyparhook}%
+ \if@noitemarg
+ \@noitemargfalse
+ \if@nmbrlist
+ \refstepcounter\@listctr
+ \fi
+ \fi
+ \sbox\@tempboxa{\makelabel{#1}}%
+ \global\setbox\@labels\hbox{%
+ \unhbox\@labels
+ \hskip \itemindent
+ \hskip -\labelwidth
+ \hskip -\labelsep
+ \ifdim \wd\@tempboxa >\labelwidth
+ \box\@tempboxa
+ \else
+ \hbox to\labelwidth {\unhbox\@tempboxa}%
+ \fi
+ \hskip \labelsep}%
+ \ignorespaces}
+% \end{macrocode}
+%
+% 二つ挿入した |\everyparhook| のうち後者が |\section| 類の直後に2回,
+% 前者が3回目以降に実行されます。
+%
+% \begin{macrocode}
+\def\@afterheading{%
+ \@nobreaktrue
+ \everypar{%
+ \if@nobreak
+ \@nobreakfalse
+ \clubpenalty \@M
+ \if@afterindent \else
+ {\setbox\z@\lastbox}%
+ \fi
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{\everyparhook}%
+ \fi\everyparhook}}
+% \end{macrocode}
+%
+% \begin{ZRnote}
+% 「|\everyparhook| 用のパッチ処理」はここまで。
+% \end{ZRnote}
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+% |\@gnewline| についてはちょっと複雑な心境です。
+% もともとのp\LaTeXe は段落の頭にグルーが入る方で統一されていました。
+% しかし |\\| の直後にはグルーが入らず,不統一でした。
+% そこで |\\| の直後にもグルーを入れるように直していただいた経緯があります。
+% しかし,ここでは逆にグルーを入れない方で統一したいので,
+% また元に戻してしまいました。
+%
+% しかし単に戻すだけでも駄目みたいなので,ここでも最後にグルーを消しておきます。
+%
+% \begin{ZRnote}
+% \Note |luatexja| を読みこんだ場合に lltjcore.sty によって上書きされる
+% のを防ぐため遅延させる。
+% \end{ZRnote}
+% \begin{macrocode}
+\ifnum\bxjs@everyparhook=\bxjs@everyparhook@none\else
+\AtEndOfPackage{%
+\def\@gnewline #1{%
+ \ifvmode
+ \@nolnerr
+ \else
+ \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
+ \jsInhibitGlue \ignorespaces
+ \fi}
+}
+\fi
+% \end{macrocode}
+%
+% \section{いろいろなロゴ}
+%
+% \LaTeX 関連のロゴを作り直します。
+%
+% [2016-07-14] ロゴの定義は\texttt{jslogo}パッケージに移転しました。
+% 後方互換のため,\texttt{jsclasses}ではデフォルトでこれを読み込みます。
+% \texttt{nojslogo}オプションが指定されている場合は読み込みません。
+%
+% \begin{ZRnote}
+% BXJSクラスでも |jslogo| オプション指定の場合に jslogo パッケージを
+% 読み込むようにした。
+% ただしJSクラスと異なり、既定では読み込まない。
+% \Note |\小|、|\上小| の制御綴は定義しない。
+% \end{ZRnote}
+% \begin{macrocode}
+\if@jslogo
+ \IfFileExists{jslogo.sty}{%
+ \RequirePackage{jslogo}%
+ }{%
+ \ClassWarningNoLine\bxjs@clsname
+ {The package 'jslogo' is not installed.\MessageBreak
+ It is included in the recent release of\MessageBreak
+ the 'jsclasses' bundle}
+ }
+\fi
+% \end{macrocode}
+%
+% \section{\texttt{amsmath} との衝突の回避}
+%
+% \begin{macro}{\ltx@ifnextchar}
+% \begin{macro}{\ProvidesFile}
+%
+% \texttt{amsmath} パッケージでは行列中で |\@ifnextchar|
+% を再定義していますが,これが\LaTeX の |\ProvidesFile|
+% で悪さをする例がFTeXで報告されています。
+% これを避けるためのtDBさんのフィックスを挿入しておきます。
+% 副作用がありましたらお知らせください。
+%
+% この現象については私のTeX掲示板 4273〜,16058〜 で議論がありました。
+% なお,AMS関係のパッケージを読み込む際に psamsfonts オプションを
+% 与えても回避できます(Thanks: しっぽ愛好家さん)。
+%
+% [2016-11-19] 本家の ltclass.dtx 2004/01/28 v1.1g で修正されているので
+% コメントアウトしました。
+%
+% \begin{macrocode}
+%\let\ltx@ifnextchar\@ifnextchar
+%\def\ProvidesFile#1{%
+% \begingroup
+% \catcode`\ 10 %
+% \ifnum \endlinechar<256 %
+% \ifnum \endlinechar>\m@ne
+% \catcode\endlinechar 10 %
+% \fi
+% \fi
+% \@makeother\/%
+% \@makeother\&%
+% \ltx@ifnextchar[{\@providesfile{#1}}{\@providesfile{#1}[]}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{初期設定}
+%
+% \paragraph{いろいろな語}
+%
+% \begin{macro}{\prepartname}
+% \begin{macro}{\postpartname}
+% \begin{macro}{\prechaptername}
+% \begin{macro}{\postchaptername}
+% \begin{macro}{\presectionname}
+% \begin{macro}{\postsectionname}
+% \begin{macrocode}
+\newcommand{\prepartname}{\if@english Part~\else 第\fi}
+\newcommand{\postpartname}{\if@english\else 部\fi}
+%<book|report>\newcommand{\prechaptername}{\if@english Chapter~\else 第\fi}
+%<book|report>\newcommand{\postchaptername}{\if@english\else 章\fi}
+\newcommand{\presectionname}{}% 第
+\newcommand{\postsectionname}{}% 節
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\contentsname}
+% \begin{macro}{\listfigurename}
+% \begin{macro}{\listtablename}
+% \begin{macrocode}
+\newcommand{\contentsname}{\if@english Contents\else 目次\fi}
+\newcommand{\listfigurename}{\if@english List of Figures\else 図目次\fi}
+\newcommand{\listtablename}{\if@english List of Tables\else 表目次\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refname}
+% \begin{macro}{\bibname}
+% \begin{macro}{\indexname}
+% \begin{macrocode}
+\newcommand{\refname}{\if@english References\else 参考文献\fi}
+\newcommand{\bibname}{\if@english Bibliography\else 参考文献\fi}
+\newcommand{\indexname}{\if@english Index\else 索引\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\figurename}
+% \begin{macro}{\tablename}
+% \begin{macrocode}
+%<!jspf>\newcommand{\figurename}{\if@english Fig.~\else 図\fi}
+%<jspf>\newcommand{\figurename}{Fig.~}
+%<!jspf>\newcommand{\tablename}{\if@english Table~\else 表\fi}
+%<jspf>\newcommand{\tablename}{Table~}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\appendixname}
+% \begin{macro}{\abstractname}
+% \begin{macrocode}
+% \newcommand{\appendixname}{\if@english Appendix~\else 付録\fi}
+\newcommand{\appendixname}{\if@english \else 付録\fi}
+%<!book>\newcommand{\abstractname}{\if@english Abstract\else 概要\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{今日の日付}
+%
+% \LaTeX で処理した日付を出力します。
+% |jarticle| などと違って,標準を西暦にし,余分な空白が入らないように改良しました。
+% 和暦にするには |\和暦| と書いてください。
+%
+% \begin{ZRnote}
+% 環境変数 |SOURCE_DATE_EPOCH|/|FORCE_SOURCE_DATE| が
+% 設定されている場合は“今日”が過去・未来の日付になる可能性がある。
+% BXJSクラスでは、和暦の扱いは |bxwareki| パッケージに任せることを
+% 原則とする。
+% ただし、|bxwareki| が使えない場合は自前で処理する。
+% \end{ZRnote}
+%
+% \begin{macrocode}
+\@onlypreamble\bxjs@decl@Seireki@cmds
+\@tempswafalse
+\if p\jsEngine \@tempswatrue \fi
+\if n\jsEngine \@tempswatrue \fi
+\if@tempswa \expandafter\@firstoftwo
+\else \expandafter\@secondoftwo
+\fi
+{%
+% 欧文8bitTeXの場合
+\newif\ifjsSeireki \jsSeirekitrue
+\def\bxjs@decl@Seireki@cmds{%
+ \def\西暦{\jsSeirekitrue}%
+ \def\和暦{\jsSeirekifalse}}
+\def\Seireki{\jsSeirekitrue}
+\def\Wareki{\jsSeirekifalse}
+\def\bxjs@if@use@seireki{%
+ \ifjsSeireki \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo \fi}
+}{%
+\newif\if西暦 \西暦true
+\def\bxjs@decl@Seireki@cmds{%
+ \def\西暦{\西暦true}%
+ \def\和暦{\西暦false}}
+\def\Seireki{\西暦true}
+\def\Wareki{\西暦false}
+\def\bxjs@if@use@seireki{%
+ \if西暦 \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo \fi}
+}
+\bxjs@decl@Seireki@cmds
+\let\bxjs@unxp\@firstofone \let\bxjs@onxp\@firstofone
+\bxjs@test@engine\unexpanded{\let\bxjs@unxp\unexpanded
+ \def\bxjs@onxp{\unexpanded\expandafter}}
+\if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T
+ \def\bxjs@iai{\noexpand~}
+\else \def\bxjs@iai{}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\ifbxjs@bxwareki@avail}
+% |bxwareki| パッケージが使用できるか。
+% \begin{macrocode}
+\newif\ifbxjs@bxwareki@avail
+\IfFileExists{bxwareki.sty}{%
+ \RequirePackage{bxwareki}[]%
+ \bxjs@bxwareki@availtrue}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jayear}
+% 和暦における年の表記(元号+年数)。
+% \begin{macro}{\heisei}
+% 年数を表す整数レジスタで、
+% 元号が「平成」である場合にのみ定義される。
+% \begin{macrocode}
+\ifbxjs@bxwareki@avail
+ \let\jayear\warekiyear
+ \def\bxjs@tmpa{H}\ifx\bxjs@tmpa\warekigengoinitial
+ \newcount\heisei \heisei=\value{warekiyear}
+ \fi
+% \end{macrocode}
+% |bxwareki| が使えない場合のフォールバック処理。
+% 平成のみに対応する。
+% \begin{macrocode}
+\else
+ \@tempcnta=\the\year\two@digits\month\two@digits\day\relax
+ \ifnum\@tempcnta<19890108 \else \ifnum\@tempcnta<20190501
+ \newcount\heisei \heisei\year \advance\heisei-1988\relax
+ \fi\fi
+ \ifnum \ifx\heisei\@undefined\z@\else\heisei\fi >\@ne
+ \edef\jayear{\bxjs@unxp{平成}\bxjs@iai \the\heisei \bxjs@iai}
+ \else \edef\jayear{\the\year \bxjs@iai}
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\today}
+% 英語、西暦、和暦で場合分けをする。
+% \begin{macrocode}
+\let\bxjs@next\relax
+\ifbxjs@bxwareki@avail
+ \ifx\warekigengo\@empty\else
+ \def\bxjs@next{\bxjs@onxp{\warekitoday}}
+ \fi
+\else\ifnum \ifx\heisei\@undefined\z@\else\heisei\fi >\@ne
+ \def\bxjs@next{%
+ \bxjs@unxp{平成}\bxjs@iai\number\heisei\bxjs@iai\bxjs@unxp{年}%
+ \bxjs@iai\number\month\bxjs@iai\bxjs@unxp{月}%
+ \bxjs@iai\number\day\bxjs@iai\bxjs@unxp{日}}
+\fi\fi
+\edef\bxjs@today{%
+ \if@english
+ \ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year
+ \else
+ \ifx\bxjs@next\relax \expandafter\@firstoftwo
+ \else \noexpand\bxjs@if@use@seireki
+ \fi {%
+ \number\year\bxjs@iai\bxjs@unxp{年}%
+ \bxjs@iai\number\month\bxjs@iai\bxjs@unxp{月}%
+ \bxjs@iai\number\day\bxjs@iai\bxjs@unxp{日}%
+ }{\bxjs@next}%
+ \fi}
+\let\today\bxjs@today
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{ZRnote}
+% texjporg版の日本語用Babel定義ファイル(|japanese.ldf|)が読み込まれた
+% 場合に影響を受けないようにする。
+% \begin{macrocode}
+\g@addto@macro\bxjs@begin@document@hook{%
+ \ifx\bbl@jpn@Seirekitrue\@undefined\else
+ \bxjs@decl@Seireki@cmds
+ \g@addto@macro\datejapanese{%
+ \let\today\bxjs@today}%
+ \fi}
+% \end{macrocode}
+% \end{ZRnote}
+%
+% \paragraph{ハイフネーション例外}
+%
+% \TeX のハイフネーションルールの補足です(ペンディング:eng-lish)
+%
+% \begin{macrocode}
+\hyphenation{ado-be post-script ghost-script phe-nom-e-no-log-i-cal man-u-script}
+% \end{macrocode}
+%
+% \paragraph{ページ設定}
+%
+% ページ設定の初期化です。
+%
+% \begin{macrocode}
+%<slide>\pagestyle{empty}%
+%<article|report>\pagestyle{plain}%
+%<book>\pagestyle{headings}%
+\pagenumbering{arabic}
+\if@twocolumn
+ \twocolumn
+ \sloppy
+ \flushbottom
+\else
+ \onecolumn
+ \raggedbottom
+\fi
+%<*slide>
+ \renewcommand\familydefault{\sfdefault}
+ \raggedright
+%</slide>
+% \end{macrocode}
+%
+% \paragraph{BXJS独自の追加処理 \ZRX}
+% \mbox{}
+% \begin{ZRnote}
+%
+% フックを実行する。
+% \begin{macrocode}
+\bxjs@pre@jadriver@hook
+% \end{macrocode}
+% 和文ドライバのファイルを読み込む。
+% \begin{macrocode}
+\input{bxjsja-\bxjs@jadriver.def}
+% \end{macrocode}
+%
+% おしまい。
+% \begin{macrocode}
+%</cls>
+% \end{macrocode}
+%
+% \end{ZRnote}
+%
+% 以上です。
+%
+%^^A////////////////////////////////////////////////////////
+% \clearpage
+% \appendix
+%^^A========================================================
+% \section{和文ドライバの仕様 \ZRX}
+%
+% 次の命令がBXJSクラス本体と和文ドライバの連携のために
+% 用意されている。
+% このうち、★印を付けたものは“書込”が許されるものである。
+%
+% \begin{itemize}
+% \item |\jsDocClass| \zrNote{文字トークンの let}\quad
+% 文書クラスの種類を示し、次のいずれかと一致する
+% (|\if| で判定可能)。
+% \begin{quote}\begin{tabular}{l@{\qquad}l}
+% |\jsArticle| & |bxjsarticle| クラス\\
+% |\jsBook| & |bxjsbook| クラス\\
+% |\jsReport| & |bxjsreport| クラス\\
+% |\jsSlide| & |bxjsslide| クラス
+% \end{tabular}\end{quote}
+% \item |\jsEngine| \zrNote{文字トークンの let}\quad
+% 使用されているエンジンの種別。
+% (|\if| で判定可能)。
+% \begin{quote}\begin{tabular}{l@{\qquad}l}
+% |p| & pdf{\TeX}(DVIモードも含む)\\
+% |l| & Lua{\TeX}(〃)\\
+% |x| & {\XeTeX}\\
+% |j| & {\pTeX}または{\upTeX}\\
+% |n| & 以上の何れでもない
+% \end{tabular}\end{quote}
+% \item |\ifjsWithupTeX| \zrNote{スイッチ}\quad
+% 使用されているエンジンが{\upTeX}であるか。
+% \item |\ifjsWitheTeX| \zrNote{スイッチ}\quad
+% 使用されているエンジンが{\eTeX}拡張であるか。
+% \item |\ifjsInPdfMode| \zrNote{スイッチ}\quad
+% 使用されているエンジンが(pdf{\TeX}・Lua{\TeX}の)
+% PDFモードであるか。
+% \item |\jsUnusualPtSize| \zrNote{整数定数を表す文字列のマクロ}\quad
+% 基底フォントサイズが |10pt|、|11pt|、|12pt| のいずれでもない
+% 場合の |\@ptsize| の値。
+% (|\@ptsize| 自体があまり有用でないと思われる。)
+% \item |\jsScale| \zrNote{実数を表す文字列のマクロ}\quad
+% 和文フォントサイズの要求サイズに対するスケール。
+% クラスオプション |scale| で指定される。
+% (既定値は0.924715。)
+% \item |\jsJaFont| \zrNote{マクロ}\quad
+% 和文フォント設定を表す文字列。
+% クラスオプション |jafont| で指定された値。
+% \item |\jsJaParam| \zrNote{マクロ}\quad
+% 和文モジュールに渡すパラメタを表す文字列。
+% この値が何を表すかは決まってなくて、各々の和文モジュールが
+% 独自に解釈する。
+% クラスオプション |japaram| で指定された値。
+% \item |\jsInhibitGlue| \zrNote{マクロ}\quad
+% |\inhibitglue| という命令が定義されていればそれを実行し、
+% そうでなければ何もしない。
+% JSクラスで |\inhibitglue| を用いている箇所は
+% 全て |\jsInhibitGlue| に置き換えられている。
+% 従って、|\inhibitglue| は未定義でも動作するが、その実装が
+% ある場合はBXJSクラスはそれを活用する。
+% \item |\jsInhibitGlueAtParTop| \zrNote{マクロ}★\quad
+% 段落先頭におけるカギ括弧の位置調整を行うマクロ。
+% 全ての段落先頭で呼び出される。
+% \item |\jsZw| \zrNote{内部寸法値}\quad
+% 「現在の全角幅」を表す変数。
+% JSクラスでzw単位で設定されている長さパラメタはこの変数を単位と
+% して設定されている。
+% この変数の値は実際に用いられる「和文フォント」のメトリックに
+% 基づくのではなく、機械的に\
+% |\jsScale| $\times$(フォントサイズ)
+% であると定められている
+% (フォントサイズ変更の度に再設定される)。
+% 従って、「和文コンポーネント」はこの設定と辻褄が合うように
+% 和文フォントサイズを調整する必要がある。
+% ほとんどの場合、和文フォントをNFSSで規定する際に |\jsScale|
+% の値をスケール値として与えれば上手くいく。
+% \item |\jsFontSizeChanged| \zrNote{マクロ}\quad
+% フォントサイズが変更された時に必ず呼び出されるマクロ。
+% \item |\jsResetDimen| \zrNote{マクロ}★\quad
+% 上記 |\jsFontSizeChanged| の中で呼び出される、
+% ユーザ(和文モジュール)用のフック。
+% フォントサイズに依存するパラメタをここで設定することができる。
+% 既定の定義は空。
+% \end{itemize}
+%
+% 以下で標準で用意されている和文ドライバの実装を示す。
+% \begin{macrocode}
+%<*drv>
+% \end{macrocode}
+%
+%^^A========================================================
+% \section{和文ドライバ:minimal \ZRX}
+%
+% |jadriver| の指定が無い場合に適用されるドライバ。
+% また、standard ドライバはまずこのドライバファイルを
+% 読み込んでいる。
+%
+% このドライバでは、各エンジンについての必要最低限の処理だけを
+% 行っている。
+% 日本語処理のためのパッケージ(xeCJK や Lua{\TeX}-ja 等)
+% を自分で読み込んで適切な設定を行うという使用状況を想定している。
+%
+% ただし、(u){\pTeX}エンジンについては例外で、和文処理機構の
+% 選択の余地がないため、このドライバにおいて、
+% 「JSクラスと同等の指定」を完成させるためのコードを記述する。
+%
+%^^A----------------
+% \subsection{補助マクロ}
+%
+% \begin{macrocode}
+%<*minimal>
+%% このファイルは日本語文字を含みます
+% \end{macrocode}
+%
+% \begin{macro}{\DeclareJaTextFontCommand}
+% 和文書体のための、「余計なこと」をしない |\DeclareTextFontCommand|。
+% \begin{macrocode}
+\def\DeclareJaTextFontCommand#1#2{%
+ \DeclareRobustCommand#1[1]{%
+ \relax
+ \ifmmode \expandafter\nfss@text \fi
+ {#2##1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DeclareJaMathFontCommand}
+% 和文数式フォントが無効な場合に、それをエミュレートするもの。
+% \begin{macrocode}
+\def\DeclareJaMathFontCommand#1#2{%
+ \DeclareRobustCommand#1[1]{%
+ \relax
+ \ifmmode\else \non@alpherr{#1\space}\fi
+ \nfss@text{\fontfamily\familydefault
+ \fontseries{m}\fontshape{n}\selectfont\relax
+ #2##1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@if@sf@default}
+% |\familydefault| の定義が“|\sfdefault|”である場合に
+% 引数のコードを実行する。
+% \begin{macrocode}
+\long\def\bxjs@@CSsfdefault{\sfdefault}%
+\@onlypreamble\bxjs@if@sf@default
+\def\bxjs@if@sf@default#1{%
+ \ifx\familydefault\bxjs@@CSsfdefault#1\fi
+ \g@addto@macro\bxjs@begin@document@hook{%
+ \ifx\familydefault\bxjs@@CSsfdefault#1\fi}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsInverseScale}
+% |\jsScale| の逆数。
+% \Note |\CS=\jsInverseScale\CS| は |\bxjs@invscale\CS\jsScale|
+% よりも精度が劣るが処理が軽い。
+% \begin{macrocode}
+\@tempdima\p@ \bxjs@invscale\@tempdima\jsScale
+\edef\jsInverseScale{\strip@pt\@tempdima}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsLetHeadChar}
+% |\jsLetHeadChar\CS{|\Meta{トークン列}|}|\Means
+% トークン列の先頭の文字を抽出し、|\CS| をその文字トークン
+% (に展開されるマクロ)として定義する。
+% \Note 先頭にあるのが制御綴やグループである場合は |\CS| は |\relax|
+% に等置される。
+% \Note 文字トークンは“|\the|-文字列”のカテゴリコードをもつ。
+% \Note 非Unicodeエンジンの場合は文字列がUTF-8で符号化されていると
+% 見なし、先頭が高位バイトの場合は1文字分のバイト列(のトークン列)
+% を抽出する。
+% この場合は元のカテゴリコードが保持される。
+% \begin{macrocode}
+\def\jsLetHeadChar#1#2{%
+ \begingroup
+ \escapechar=`\\ %
+ \let\bxjs@tmpa={% brace-match-hack
+ \bxjs@let@hchar@exp#2}%
+ \endgroup
+ \let#1\bxjs@g@tmpa}
+\def\bxjs@let@hchar@exp{%
+ \futurelet\@let@token\bxjs@let@hchar@exp@a}
+\def\bxjs@let@hchar@exp@a{%
+ \bxjs@cond\ifcat\noexpand\@let@token\bgroup\fi{% 波括弧
+ \bxjs@let@hchar@out\let\relax
+ }{\bxjs@cond\ifcat\noexpand\@let@token\@sptoken\fi{% 空白
+ \bxjs@let@hchar@out\let\space%
+ }{\bxjs@cond\if\noexpand\@let@token\@backslashchar\fi{% バックスラッシュ
+ \bxjs@let@hchar@out\let\@backslashchar
+ }{\bxjs@let@hchar@exp@b}}}}
+\def\bxjs@let@hchar@exp@b#1{%
+ \expandafter\bxjs@let@hchar@exp@c\string#1?\@nil#1}
+\def\bxjs@let@hchar@exp@c#1#2\@nil{%
+%\message{<#1#2>}%
+ \bxjs@cond\if#1\@backslashchar\fi{% 制御綴
+ \bxjs@cond\expandafter\ifx\noexpand\@let@token\@let@token\fi{%
+ \bxjs@let@hchar@out\let\relax
+ }{%else
+ \expandafter\bxjs@let@hchar@exp
+ }%
+ }{%else
+ \bxjs@let@hchar@chr#1%
+ }}
+\def\bxjs@let@hchar@chr#1{%
+ \bxjs@let@hchar@out\def{{#1}}}
+\def\bxjs@let@hchar@out#1#2{%
+ \global#1\bxjs@g@tmpa#2\relax
+ \toks@\bgroup}% skip to right brace
+% \end{macrocode}
+% UTF-8のバイト列を扱うコード。
+% \begin{macrocode}
+\chardef\bxjs@let@hchar@csta=128
+\chardef\bxjs@let@hchar@cstb=192
+\chardef\bxjs@let@hchar@cstc=224
+\chardef\bxjs@let@hchar@cstd=240
+\chardef\bxjs@let@hchar@cste=248
+\let\bxjs@let@hchar@chr@ue@a\bxjs@let@hchar@chr
+\def\bxjs@let@hchar@chr@ue#1{%
+ \@tempcnta=`#1\relax
+%\message{\the\@tempcnta}%
+ \bxjs@cond\ifnum\@tempcnta<\bxjs@let@hchar@csta\fi{%
+ \bxjs@let@hchar@chr@ue@a#1%
+ }{\bxjs@cond\ifnum\@tempcnta<\bxjs@let@hchar@cstb\fi{%
+ \bxjs@let@hchar@out\let\relax
+ }{\bxjs@cond\ifnum\@tempcnta<\bxjs@let@hchar@cstc\fi{%
+ \bxjs@let@hchar@chr@ue@b
+ }{\bxjs@cond\ifnum\@tempcnta<\bxjs@let@hchar@cstd\fi{%
+ \bxjs@let@hchar@chr@ue@c
+ }{\bxjs@cond\ifnum\@tempcnta<\bxjs@let@hchar@cste\fi{%
+ \bxjs@let@hchar@chr@ue@d
+ }{%else
+ \bxjs@let@hchar@out\let\relax
+ }}}}}}
+\def\bxjs@let@hchar@chr@ue@a#1{%
+ \bxjs@let@hchar@out\def{{#1}}}
+\def\bxjs@let@hchar@chr@ue@b#1#2{%
+ \bxjs@let@hchar@out\def{{#1#2}}}
+\def\bxjs@let@hchar@chr@ue@c#1#2#3{%
+ \bxjs@let@hchar@out\def{{#1#2#3}}}
+\def\bxjs@let@hchar@chr@ue@d#1#2#3#4{%
+ \bxjs@let@hchar@out\def{{#1#2#3#4}}}
+% \end{macrocode}
+% \end{macro}
+%
+%^^A----------------
+% \subsection{(u){\pTeX}用の設定}
+%
+% \begin{macrocode}
+\ifx j\jsEngine
+% \end{macrocode}
+%
+% 基本的に、JSクラスのコードの中で、「和文コンポーネントの管轄」
+% としてBXJSクラスで除外されている部分に相当するが、
+% 若干の変更が加えられている。
+%
+% \paragraph{補助マクロ}
+%
+% |\jsLetHeadChar| を和文文字トークンに対応させる。
+% \begin{macrocode}
+\def\bxjs@let@hchar@chr@pp#1#2{%
+ \expandafter\bxjs@let@hchar@chr@pp@a\meaning#2\relax#1#2}
+\def\bxjs@let@hchar@chr@pp@a#1#2\relax#3#4{%
+%\message{(\meaning#3:\meaning#4)}%
+ \bxjs@cond\if#1k\fi{%
+ \bxjs@let@hchar@out\def{{#4}}%
+ }{%else
+ \bxjs@let@hchar@chr@ue#3#4%
+ }}
+\let\bxjs@let@hchar@chr\bxjs@let@hchar@chr@pp
+% \end{macrocode}
+%
+% \paragraph{エンジン依存の定義}
+%
+% 最初にエンジン({\pTeX}かu{\pTeX}か)に依存する定義を行う。
+% |\ifjsWithupTeX| はBXJSにおいて定義されているスイッチで、
+% エンジンがu{\pTeX}であるかを表す。
+%
+% |\jsc@JYn| および |\jsc@JTn| は標準の和文横書きおよび縦書き用
+% エンコーディングを表す。
+% \begin{macrocode}
+\edef\jsc@JYn{\ifjsWithupTeX JY2\else JY1\fi}
+\edef\jsc@JTn{\ifjsWithupTeX JT2\else JT1\fi}
+\edef\jsc@pfx@{\ifjsWithupTeX u\fi}
+% \end{macrocode}
+%
+% |\bxjs@declarefontshape| は標準の和文フォント宣言である。
+% 後で |\bxjs@scale| を求めるため一旦マクロにしておく。
+% |\bxjs@sizereference| は全角幅を測定する時に参照するフォント。
+%
+% まずu{\pTeX}の場合の定義を示す。
+% JSクラスの |uplatex| オプション指定時の定義と同じである。
+% \begin{macrocode}
+\@onlypreamble\bxjs@declarefontshape
+\ifjsWithupTeX
+\def\bxjs@declarefontshape{%
+\DeclareFontShape{JY2}{mc}{m}{n}{<->s*[\bxjs@scale]upjpnrm-h}{}%
+\DeclareFontShape{JY2}{gt}{m}{n}{<->s*[\bxjs@scale]upjpngt-h}{}%
+\DeclareFontShape{JT2}{mc}{m}{n}{<->s*[\bxjs@scale]upjpnrm-v}{}%
+\DeclareFontShape{JT2}{gt}{m}{n}{<->s*[\bxjs@scale]upjpngt-v}{}%
+}
+\def\bxjs@sizereference{upjisr-h}
+% \end{macrocode}
+%
+% {\pTeX}の場合の定義を示す。
+% JSクラスのフォント種別オプション非指定時の定義と同じである。
+% \begin{macrocode}
+\else
+\def\bxjs@declarefontshape{%
+\DeclareFontShape{JY1}{mc}{m}{n}{<->s*[\bxjs@scale]jis}{}%
+\DeclareFontShape{JY1}{gt}{m}{n}{<->s*[\bxjs@scale]jisg}{}%
+\DeclareFontShape{JT1}{mc}{m}{n}{<->s*[\bxjs@scale]tmin10}{}%
+\DeclareFontShape{JT1}{gt}{m}{n}{<->s*[\bxjs@scale]tgoth10}{}%
+}
+\def\bxjs@sizereference{jis}
+\fi
+% \end{macrocode}
+%
+% 既に使用されている標準和文フォント定義がもしあれば取り消す。
+% \begin{macrocode}
+\def\bxjs@next#1/#2/#3/#4/#5\relax{%
+ \def\bxjs@tmpb{#5}}
+\ifjsWithpTeXng \def\bxjs@tmpb{10}%
+\else
+\expandafter\expandafter\expandafter\bxjs@next
+ \expandafter\string\the\jfont\relax
+\fi
+\@for\bxjs@tmpa:={\jsc@JYn/mc/m/n,\jsc@JYn/gt/m/n,%
+ \jsc@JTn/mc/m/n,\jsc@JTn/gt/m/n}\do
+ {\expandafter\let\csname\bxjs@tmpa/10\endcsname=\@undefined
+ \expandafter\let\csname\bxjs@tmpa/\bxjs@tmpb\endcsname=\@undefined}
+% \end{macrocode}
+%
+% \paragraph{和文フォントスケールの補正}
+%
+% 実は、{\pTeX}の標準的な和文フォント(JFMのこと、例えば |jis|)
+% では、指定された |\jsScale|(この値を $s$ とする)をそのまま
+% 使って定義すると期待通りの大きさにならない。
+% これらのJFMでは1\,zwの大きさが指定されたサイズではなく
+% 既にスケール(この値を $f$ とする;|jis| では0.962216倍)
+% が掛けられた値になっているからである。
+% そのため、ここでは $s/f$ を求めてその値をマクロ |\bxjs@scale|
+% に保存する。
+% \begin{macrocode}
+\begingroup
+% 参照用フォント(\bxjs@sizereference)の全角空白の幅を取得
+ \font\bxjs@tmpa=\bxjs@sizereference\space at 10pt
+ \setbox\z@\hbox{\bxjs@tmpa\char\jis"2121\relax}
+% 幅が丁度10ptなら補正は不要
+ \ifdim\wd\z@=10pt
+ \global\let\bxjs@scale\jsScale
+ \else
+% (10*s)/(10*f)として計算、\bxjs@invscaleはBXJSで定義
+ \edef\bxjs@tmpa{\strip@pt\wd\z@}
+ \@tempdima=10pt \@tempdima=\jsScale\@tempdima
+ \bxjs@invscale\@tempdima\bxjs@tmpa
+ \xdef\bxjs@scale{\strip@pt\@tempdima}
+ \fi
+\endgroup
+%\typeout{\string\bxjs@scale : \bxjs@scale}
+% \end{macrocode}
+%
+% \paragraph{和文フォント関連定義}
+%
+% |\bxjs@scale| が決まったので先に保存した標準和文フォント
+% 宣言を実行する。
+% \begin{macrocode}
+\bxjs@declarefontshape
+% \end{macrocode}
+%
+% フォント代替の明示的定義。
+% \begin{macrocode}
+\DeclareFontShape{\jsc@JYn}{mc}{m}{it}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc@JYn}{mc}{m}{sl}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc@JYn}{mc}{m}{sc}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc@JYn}{gt}{m}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JYn}{gt}{m}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JYn}{mc}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JYn}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JYn}{gt}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JYn}{gt}{bx}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JYn}{mc}{b}{n}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{\jsc@JYn}{mc}{b}{it}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{\jsc@JYn}{mc}{b}{sl}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{\jsc@JYn}{gt}{b}{n}{<->ssub*gt/bx/n}{}
+\DeclareFontShape{\jsc@JYn}{gt}{b}{it}{<->ssub*gt/bx/n}{}
+\DeclareFontShape{\jsc@JYn}{gt}{b}{sl}{<->ssub*gt/bx/n}{}
+\DeclareFontShape{\jsc@JTn}{mc}{m}{it}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc@JTn}{mc}{m}{sl}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc@JTn}{mc}{m}{sc}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\jsc@JTn}{gt}{m}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JTn}{gt}{m}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JTn}{mc}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JTn}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JTn}{gt}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JTn}{gt}{bx}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\jsc@JTn}{mc}{b}{n}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{\jsc@JTn}{mc}{b}{it}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{\jsc@JTn}{mc}{b}{sl}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{\jsc@JTn}{gt}{b}{n}{<->ssub*gt/bx/n}{}
+\DeclareFontShape{\jsc@JTn}{gt}{b}{it}{<->ssub*gt/bx/n}{}
+\DeclareFontShape{\jsc@JTn}{gt}{b}{sl}{<->ssub*gt/bx/n}{}
+% \end{macrocode}
+%
+% 欧文総称フォント命令で和文フォントが連動するように修正する。
+% その他の和文フォント関係の定義を行う。
+% \begin{macrocode}
+\DeclareRobustCommand\rmfamily
+ {\not@math@alphabet\rmfamily\mathrm
+ \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
+\DeclareRobustCommand\sffamily
+ {\not@math@alphabet\sffamily\mathsf
+ \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
+\DeclareRobustCommand\ttfamily
+ {\not@math@alphabet\ttfamily\mathtt
+ \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
+\ifx\DeclareFixJFMCJKTextFontCommand\@undefined
+\DeclareJaTextFontCommand{\textmc}{\mcfamily}
+\DeclareJaTextFontCommand{\textgt}{\gtfamily}
+\fi
+\bxjs@if@sf@default{%
+ \renewcommand\kanjifamilydefault{\gtdefault}}
+% \end{macrocode}
+%
+% 念のため。
+% \begin{macrocode}
+\selectfont
+% \end{macrocode}
+%
+% |\bxjs@parse@qh| の処理は{\pTeX}系では不要になるので無効化する
+% (つまり |\jsSetQHLength| は |\setlength| と等価になる)。
+% \begin{macrocode}
+\def\bxjs@parse@qh#1{\let\bxjs@tmpb\relax}
+\let\bxjs@parse@qh@a\@undefined
+\let\bxjs@parse@qh@b\@undefined
+% \end{macrocode}
+%
+% \paragraph{パラメタの設定}
+%
+% \begin{macrocode}
+\prebreakpenalty\jis"2147=10000
+\postbreakpenalty\jis"2148=10000
+\prebreakpenalty\jis"2149=10000
+\inhibitxspcode`!=1
+\inhibitxspcode`〒=2
+\xspcode`+=3
+\xspcode`\%=3
+% \end{macrocode}
+%
+% |"80|\zrWDash|"FF| の範囲の |\spcode| を3に変更。
+% \begin{macrocode}
+\@tempcnta="80 \@whilenum\@tempcnta<"100 \do{%
+ \xspcode\@tempcnta=3\advance\@tempcnta\@ne}
+% \end{macrocode}
+%
+% |\jsInhibitGlueAtParTop| の定義。
+% 「JSクラスでの定義」を利用する。
+% \begin{macrocode}
+\let\jsInhibitGlueAtParTop\@inhibitglue
+% \end{macrocode}
+%
+% |\jsResetDimen| は空のままでよい。
+%
+% \paragraph{組方向依存の処理}
+%
+% 組方向判定のif-トークン(|\if?dir|)は{\pTeX}以外では未定義で
+% あるため、そのままif文に入れることができない。
+% これを回避するため部分的に|!|をエスケープ文字に使う。
+% \begin{macrocode}
+\begingroup
+\catcode`\!=0
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@ptex@dir}
+% 現在の組方向: |t|=縦、|y|=横、|?|=その他。
+% \begin{macrocode}
+\gdef\bxjs@ptex@dir{%
+ !iftdir t%
+ !else!ifydir y%
+ !else ?%
+ !fi!fi}
+% \end{macrocode}
+% \end{macro}
+%
+% 新版の{\pTeX}で脚注番号の周囲の空きが過大になる現象への対処。
+% \Note 現在の{p\LaTeX}カーネルでは対処が既に行われている。
+% ここでは、|\@makefnmark| の定義が古いものであった場合に、
+% 新しいものに置き換える。
+% \begin{macrocode}
+% 古い \@makefnmark の定義
+\long\def\bxjs@tmpa{\hbox{%
+ !ifydir \@textsuperscript{\normalfont\@thefnmark}%
+ !else\hbox{\yoko\@textsuperscript{\normalfont\@thefnmark}}!fi}}
+\ifx\@makefnmark\bxjs@tmpa
+\long\gdef\@makefnmark{%
+ !ifydir \hbox{}\hbox{\@textsuperscript{\normalfont\@thefnmark}}\hbox{}%
+ !else\hbox{\yoko\@textsuperscript{\normalfont\@thefnmark}}!fi}
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\endgroup
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{pdf{\TeX}用の処理}
+%
+% \begin{macrocode}
+\else\ifx p\jsEngine
+% \end{macrocode}
+%
+% \begin{macrocode}
+\let\bxjs@let@hchar@chr\bxjs@let@hchar@chr@ue
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@onlypreamble\bxjs@cjk@loaded
+\def\bxjs@cjk@loaded{%
+ \def\@footnotemark{%
+ \leavevmode
+ \ifhmode
+ \edef\@x@sf{\the\spacefactor}%
+ \ifdim\lastkern>\z@\ifdim\lastkern<5sp\relax
+ \unkern\unkern
+ \ifdim\lastskip>\z@ \unskip \fi
+ \fi\fi
+ \nobreak
+ \fi
+ \@makefnmark
+ \ifhmode \spacefactor\@x@sf \fi
+ \relax}%
+ \let\bxjs@cjk@loaded\relax
+}
+\g@addto@macro\bxjs@begin@document@hook{%
+ \@ifpackageloaded{CJK}{%
+ \bxjs@cjk@loaded
+ }{}%
+}
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{{\XeTeX}用の処理}
+%
+% \begin{macrocode}
+\else\ifx x\jsEngine
+% \end{macrocode}
+%
+% |\bxjs@let@hchar@chr| について、
+% 「BMP外の文字の文字トークンに対して |\string| を適用すると
+% サロゲートペアに分解される」という問題に対する応急措置を施す。
+% \begin{macrocode}
+\def\bxjs@let@hchar@chr#1{%
+ \@tempcnta`#1\relax \divide\@tempcnta"800\relax
+ \bxjs@cond\ifnum\@tempcnta=27 \fi{%
+ \bxjs@let@hchar@chr@xe
+ }{\bxjs@let@hchar@out\def{{#1}}}}
+\def\bxjs@let@hchar@chr@xe#1{%
+ \lccode`0=`#1\relax
+ \lowercase{\bxjs@let@hchar@out\def{{0}}}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@do@precisetext}
+% |precisetext| オプションの処理。
+% \begin{macrocode}
+\@onlypreamble\bxjs@do@precisetext
+\ifx\XeTeXgenerateactualtext\@undefined\else
+ \def\bxjs@do@precisetext{%
+ \XeTeXgenerateactualtext=\@ne}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@do@simplejasetup}
+% |simplejasetup| オプションの処理。
+% \begin{macrocode}
+\@onlypreamble\bxjs@do@simplejasetup
+\def\bxjs@do@simplejasetup{%
+ \ifnum\XeTeXinterchartokenstate>\z@
+ \else\ifnum\strcmp{\the\XeTeXlinebreakskip}{\the\z@}=\z@
+ \jsSimpleJaSetup
+ \ClassInfo\bxjs@clsname
+ {'\string\jsSimpleJaSetup' is applied\@gobble}%
+ \fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\jsSimpleJaSetup}
+% 日本語出力用の超簡易的な設定。
+% \begin{macrocode}
+\newcommand*{\jsSimpleJaSetup}{%
+ \XeTeXlinebreaklocale "ja"\relax
+ \XeTeXlinebreakskip=0pt plus 1pt minus 0.1pt\relax
+ \XeTeXlinebreakpenalty=0\relax}
+% \end{macrocode}
+% \end{macro}
+%
+%^^A----------------
+% \subsection{後処理(エンジン共通)}
+% \begin{macrocode}
+\fi\fi\fi
+% \end{macrocode}
+%
+% |simplejasetup| オプションの処理。
+% \begin{macrocode}
+\ifx\bxjs@do@simplejasetup\@undefined\else
+ \g@addto@macro\bxjs@begin@document@hook{%
+ \ifbxjs@simplejasetup
+ \bxjs@do@simplejasetup
+ \fi}
+\fi
+% \end{macrocode}
+%
+% |precisetext| オプションの処理。
+% \begin{macrocode}
+\ifbxjs@precisetext
+ \ifx\bxjs@do@precisetext\@undefined
+ \ClassWarning\bxjs@clsname
+ {The current engine does not support the\MessageBreak
+ 'precise-text' option\@gobble}
+ \else
+ \bxjs@do@precisetext
+ \fi
+\fi
+% \end{macrocode}
+%
+% \paragraph{段落頭でのグルー挿入禁止}
+%
+% 本体開始時において |\everyparhook| を検査して、
+% “結局何もしない”ことになっている場合は、
+% 副作用を完全に無くすために |\everyparhook| を空にする。
+% \begin{macrocode}
+\g@addto@macro\bxjs@begin@document@hook{%
+ \ifx\jsInhibitGlueAtParTop\@empty
+ \def\bxjs@tmpa{\jsInhibitGlueAtParTop}%
+ \ifx\everyparhook\bxjs@tmpa
+ \let\everyparhook\@empty
+ \fi
+ \fi}
+% \end{macrocode}
+%
+% |everyparhook=modern| の場合の、|\everyparhook| の有効化の実装。
+% \Note 本体開始時ではなく最初から有効化していることに注意。
+% \begin{macrocode}
+\ifnum\bxjs@everyparhook=\bxjs@everyparhook@modern
+% \end{macrocode}
+% まず |\everypar| を“乗っ取る”処理を行う。
+% \begin{macrocode}
+ \let\bxjs@everypar\everypar
+ \newtoks\everypar
+ \everypar\bxjs@everypar
+% \end{macrocode}
+% そして本物の |\everypar| では、最後で常に |\everyparhook| が実行される
+% ようにする。
+% \begin{macrocode}
+ \bxjs@everypar{\the\expandafter\everypar\everyparhook}%
+\fi
+% \end{macrocode}
+%
+% \paragraph{fancyhdr対策}
+% |fancyhdr| オプションの値が |true| であり、
+% かつ |fancyhdr| が使用された場合に以下の対策を行う。
+% \begin{itemize}
+% \item デフォルトの書式設定に含まれる“二文字フォント命令”を除去する。
+% \item bxjsbookにおいて、ヘッダ・フッタの横幅を |\fullwidth| に変える。
+% \end{itemize}
+%
+% \begin{macrocode}
+\ifbxjs@fancyhdr
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@adjust@fancyhdr}
+% |fancyhdr| の初期設定に関する改変の処理。
+% |fancyhdr| 読込完了と |\pagestyle{fancy}| 実行の間で実行されるべき。
+% \begin{macrocode}
+\@onlypreamble\bxjs@adjust@fancyhdr
+\def\bxjs@adjust@fancyhdr{%
+% \end{macrocode}
+% ヘッダ・フッタの要素の書式について、それが既定のままであれば、
+% “二文字フォント命令”を除去したものに置き換える。
+% \Note 和文なので |\sl| は無い方がよいはず。
+% \begin{macrocode}
+ \def\bxjs@tmpa{\fancyplain{}{\sl\rightmark}\strut}%
+ \def\bxjs@tmpb{\fancyplain{}{\rightmark}\strut}%
+ \ifx\f@ncyelh\bxjs@tmpa \global\let\f@ncyelh\bxjs@tmpb \fi
+ \ifx\f@ncyerh\bxjs@tmpa \global\let\f@ncyerh\bxjs@tmpb \fi
+ \ifx\f@ncyolh\bxjs@tmpa \global\let\f@ncyolh\bxjs@tmpb \fi
+ \ifx\f@ncyorh\bxjs@tmpa \global\let\f@ncyorh\bxjs@tmpb \fi
+ \def\bxjs@tmpa{\fancyplain{}{\sl\leftmark}\strut}%
+ \def\bxjs@tmpb{\fancyplain{}{\leftmark}\strut}%
+ \ifx\f@ncyelh\bxjs@tmpa \global\let\f@ncyelh\bxjs@tmpb \fi
+ \ifx\f@ncyerh\bxjs@tmpa \global\let\f@ncyerh\bxjs@tmpb \fi
+ \ifx\f@ncyolh\bxjs@tmpa \global\let\f@ncyolh\bxjs@tmpb \fi
+ \ifx\f@ncyorh\bxjs@tmpa \global\let\f@ncyorh\bxjs@tmpb \fi
+ \def\bxjs@tmpa{\rm\thepage\strut}%
+ \def\bxjs@tmpb{\thepage\strut}%
+ \ifx\f@ncyecf\bxjs@tmpa \global\let\f@ncyecf\bxjs@tmpb \fi
+ \ifx\f@ncyocf\bxjs@tmpa \global\let\f@ncyocf\bxjs@tmpb \fi
+% \end{macrocode}
+% |\fullwidth| が(定義済で)|\textwidth| よりも大きい場合、
+% ヘッダ・フッタの横幅を |\fullwidth| に合わせる。
+% \begin{macrocode}
+ \ifx\fullwidth\@undefined\else \ifdim\textwidth<\fullwidth
+ \setlength{\@tempdima}{\fullwidth-\textwidth}%
+ \edef\bxjs@tmpa{\noexpand\fancyhfoffset[EL,OR]{\the\@tempdima}%
+ }\bxjs@tmpa
+ \fi\fi
+ \PackageInfo\bxjs@clsname
+ {Patch to fancyhdr is applied\@gobble}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@pagestyle@hook}
+% |\pagestyle| へのフックの本体。
+% \begin{macrocode}
+\def\bxjs@pagestyle@hook{%
+ \@ifpackageloaded{fancyhdr}{%
+ \bxjs@adjust@fancyhdr
+ \global\let\bxjs@adjust@fancyhdr\relax
+ }{}}
+% \end{macrocode}
+% \end{macro}
+%
+% |\pagestyle| にフックを入れ込む。
+% \begin{macrocode}
+\let\bxjs@org@pagestyle\pagestyle
+\def\pagestyle{%
+ \bxjs@pagestyle@hook \bxjs@org@pagestyle}
+% \end{macrocode}
+%
+% begin-document フック。
+% \Note これ以降に |fancyhdr| が読み込まれることはあり得ない。
+% \begin{macrocode}
+\g@addto@macro\bxjs@begin@document@hook{%
+ \bxjs@pagestyle@hook
+ \global\let\bxjs@pagestyle@hook\relax}
+% \end{macrocode}
+%
+% \paragraph{和文空白命令}
+% \begin{macrocode}
+\ifbxjs@jaspace@cmd
+% \end{macrocode}
+%
+% \begin{macro}{\jaenspace}
+% 半角幅の水平空き。
+% \begin{macrocode}
+ \def\jaenspace{\hskip.5\jsZw\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jathinspace}
+% 和欧文間空白を入れるユーザ命令。
+% \Note minimalではダミー定義。
+% \begin{macrocode}
+ \def\jathinspace{\hskip\z@skip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\_}
+% 全角空白文字1つからなる名前の制御綴。
+% |\zwspace| と等価になる。
+% \begin{macrocode}
+ \def\ {\zwspace}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jaspace}
+% |jlreq| クラスと互換の命令。
+% \begin{macrocode}
+ \DeclareRobustCommand*{\jaspace}[1]{%
+ \expandafter\ifx\csname bxjs@jaspace@@#1\endcsname\relax
+ \ClassError\bxjs@clsname
+ {Unknown jaspace: #1}{\@eha}%
+ \else
+ \csname bxjs@jaspace@@#1\endcsname
+ \fi}
+ \def\bxjs@jaspace@@zenkaku{\hskip 1\jsZw\relax}
+ \def\bxjs@jaspace@@nibu{\hskip .5\jsZw\relax}
+ \def\bxjs@jaspace@@shibu{\hskip .25\jsZw\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+% 終わり。
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+% 以上で終わり。
+% \begin{macrocode}
+%</minimal>
+% \end{macrocode}
+%
+%^^A========================================================
+% \section{和文ドライバ:standard \ZRX}
+%
+% 標準のドライバ。
+%
+% \begin{itemize}
+% \item |\rmfamily|/|\sffamily|/|\ttfamily| での
+% 和文ファミリ連動
+% \item |\mcfamily|/|\gtfamily|
+% \item |\textmc|/|\textgt|
+% \item |\zw|
+% \item |\jQ|/|\jH|
+% \item |\trueQ|/|\trueH|/|\ascQ|
+% \item |\setkanjiskip|/|\getkanjiskip|
+% \item |\setxkanjiskip|/|\getxkanjiskip|
+% \item |\autospacing|/|\noautospacing|
+% \item |\autoxspacing|/|\noautoxspacing|
+% \end{itemize}
+%
+% \paragraph{和文フォント指定の扱い}
+%
+% |standard| 和文ドライバでは |\jsJaFont| の値を和文フォントの
+% “プリセット”の指定として用いる。
+% プリセットの値は、{\TeX} Liveの |kanji-config-updmap| コマンドで
+% 使う“ファミリ”と同じにすることを想定する。
+% 特別な値として、|auto| は |kanji-config-updmap| で現在指定
+% されているファミリを表す。
+%
+%^^A----------------
+% \subsection{共通処理(1)}
+%
+% まず minimal ドライバを読み込む。
+% \begin{macrocode}
+%<*standard>
+%% このファイルは日本語文字を含みます
+\input{bxjsja-minimal.def}
+% \end{macrocode}
+%
+% |simplejasetup| はstandardでは無効になる。
+% \begin{macrocode}
+\bxjs@simplejasetupfalse
+% \end{macrocode}
+%
+% \paragraph{japaramオプションの処理}
+%
+% |japaram| の値をkey-valueリストとして解釈する。
+% keyvalのファミリは |bxjsStd| とする。
+%
+% \begin{macro}{\ifbxjs@jp@jismmiv}
+% 2004JIS字形を優先させるか。
+% \begin{macrocode}
+\newif\ifbxjs@jp@jismmiv
+% \end{macrocode}
+% \end{macro}
+%
+% |jis2004| オプションの処理。
+% \begin{macrocode}
+\bxjs@cslet{bxjs@kv@jis2004@true}\bxjs@jp@jismmivtrue
+\bxjs@cslet{bxjs@kv@jis2004@false}\bxjs@jp@jismmivfalse
+\define@key{bxjsStd}{jis2004}[true]{%
+ \bxjs@set@keyval{jis2004}{#1}{}}
+% \end{macrocode}
+%
+% \begin{macro}{\ifbxjs@jp@units}
+% 和文用単位(|zw|、|zh|、|(true)Q|、|(true)H|)を
+% 使えるようにするか。
+% \begin{macrocode}
+\newif\ifbxjs@jp@units
+% \end{macrocode}
+% \end{macro}
+%
+% |units| オプションの処理。
+% \begin{macrocode}
+\let\bxjs@kv@units@true\bxjs@jp@unitstrue
+\let\bxjs@kv@units@false\bxjs@jp@unitsfalse
+\define@key{bxjsStd}{units}[true]{%
+ \bxjs@set@keyval{units}{#1}{}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@jp@font}
+% フォントパッケージの追加オプション。
+% \begin{macrocode}
+\let\bxjs@jp@font\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% |font| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjsStd}{font}{%
+ \edef\bxjs@jp@font{#1}}
+% \end{macrocode}
+%
+% 実際の |japaram| の値を適用する。
+% \begin{macrocode}
+\def\bxjs@next#1{\bxjs@safe@setkeys{bxjsStd}{#1}}
+\expandafter\bxjs@next\expandafter{\jsJaParam}
+% \end{macrocode}
+%
+% \paragraph{jis2004パラメタ}
+%
+% |jis2004| パラメタが有効の場合は、グローバルオプションに |jis2004|
+% を追加する。
+% \Note |otf| や |luatexja-preset| 等のパッケージがこのオプションを
+% 利用する。
+% \begin{macrocode}
+\ifbxjs@jp@jismmiv
+ \g@addto@macro\@classoptionslist{,jis2004}
+% \@ifpackagewith 判定への対策
+ \PassOptionsToPackage{jis2004}{otf}
+\fi
+% \end{macrocode}
+%
+% \paragraph{和文用単位のサポート}
+%
+% エンジンが{(u)\pTeX}の場合は |units| を無効にする。
+% \begin{macrocode}
+\if j\jsEngine
+ \bxjs@jp@unitsfalse
+\fi
+% \end{macrocode}
+%
+% |units| パラメタが有効の場合は、|bxcalc| パッケージの |\usepTeXunits| 命令
+% を実行して和文用単位を有効化する。
+% \begin{macrocode}
+\ifbxjs@jp@units
+ \IfFileExists{bxcalc.sty}{%
+ \RequirePackage{bxcalc}[2018/01/28]%v1.0a
+ \ifx\usepTeXunits\@undefined
+ \PackageWarningNoLine\bxjs@clsname
+ {Cannot support pTeX units (zw etc.), since\MessageBreak
+ the package 'bxcalc' is too old}%
+ \bxjs@jp@unitsfalse
+ \else \usepTeXunits
+ \fi
+ }{%else
+ \PackageWarningNoLine\bxjs@clsname
+ {Cannot support pTeX units (zw etc.), since\MessageBreak
+ the package 'bxcalc' is unavailable}%
+ \bxjs@jp@unitsfalse
+ }
+\fi
+% \end{macrocode}
+%
+% |bxcalc| で和文用単位をサポートした場合は、|\bxjs@parse@qh| の処理は不要に
+% なるので無効化する。
+% \begin{macrocode}
+\ifbxjs@jp@units
+\def\bxjs@parse@qh#1{\let\bxjs@tmpb\relax}
+\let\bxjs@parse@qh@a\@undefined
+\let\bxjs@parse@qh@b\@undefined
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@let@lenexpr}
+% |\bxjs@let@lenexpr\CS{|\Meta{長さ式}|}|\Means
+% 長さ式に |bxcalc| の展開を適用した結果のトークン列を |\CS| に代入する。
+% \begin{macrocode}
+\ifbxjs@jp@units
+ \def\bxjs@let@lenexpr#1#2{%
+ \edef#1{#2}%
+ \expandafter\CUXParseExpr\expandafter#1\expandafter{#1}}
+\else
+ \def\bxjs@let@lenexpr{\edef}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{共通命令の実装}
+%
+% |\jQ| 等の「単位」系の共通命令を実装する。
+% まず{$\varepsilon$-\TeX}拡張が使えるか検査する。
+% \begin{macrocode}
+\ifjsWitheTeX
+% \end{macrocode}
+% 使える場合は、「|\dimexpr|外部寸法表記|\relax|」の形式
+% (これは内部値なので単位として使える)で各命令定義する。
+%
+% \begin{macro}{\jQ}
+% \begin{macro}{\jH}
+% |\jQ| と |\jH| はともに0.25\,mmに等しい。
+% \begin{macrocode}
+ \@tempdima=0.25mm
+ \protected\edef\jQ{\dimexpr\the\@tempdima\relax}
+ \let\jH\jQ
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\trueQ}
+% \begin{macro}{\trueH}
+% |\trueQ| と |\trueH| はともに0.25\,true\,mmに等しい。
+% \begin{macrocode}
+ \ifjsc@mag
+ \@tempdimb=\jsBaseFontSize\relax
+ \edef\bxjs@tmpa{\strip@pt\@tempdimb}%
+ \@tempdima=2.5mm
+ \bxjs@invscale\@tempdima\bxjs@tmpa
+ \protected\edef\trueQ{\dimexpr\the\@tempdima\relax}
+ \@tempdima=10pt
+ \bxjs@invscale\@tempdima\bxjs@tmpa
+ \protected\edef\bxjs@truept{\dimexpr\the\@tempdima\relax}
+ \else \let\trueQ\jQ \let\bxjs@truept\p@
+ \fi
+ \let\trueH\trueQ
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ascQ}
+% \begin{macro}{\ascpt}
+% |\ascQ| は |\trueQ| を和文スケール値で割った値。
+% 例えば、|\fontsize{12\ascQ}{16\trueH}| とすると、
+% 和文が12Qになる。
+%
+% 同様に、|\ascpt| は |truept| を和文スケールで割った値。
+% \begin{macrocode}
+ \@tempdima\trueQ \bxjs@invscale\@tempdima\jsScale
+ \protected\edef\ascQ{\dimexpr\the\@tempdima\relax}
+ \@tempdima\bxjs@truept \bxjs@invscale\@tempdima\jsScale
+ \protected\edef\ascpt{\dimexpr\the\@tempdima\relax}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\jafontsize}
+% |\jafontsize{|\Meta{フォントサイズ}|}{|\Meta{行送り}|}|\Means
+% 和文フォント規準で、すなわち、1\,zwが\Meta{フォントサイズ}に
+% 等しくなるようにフォントサイズを指定する。
+% この命令の引数では、|Q|/|H| の単位が使用できる。
+% \begin{macrocode}
+\def\jafontsize#1#2{%
+ \begingroup
+ \bxjs@jafontsize@a{#1}%
+ \@tempdimb\jsInverseScale\@tempdima
+ \bxjs@jafontsize@a{#2}%
+ \xdef\bxjs@g@tmpa{%
+ \noexpand\fontsize{\the\@tempdimb}{\the\@tempdima}}%
+ \endgroup\bxjs@g@tmpa}
+\def\bxjs@jafontsize@a#1{%
+ \bxjs@parse@qh{#1}%
+ \ifx\bxjs@tmpb\relax \def\bxjs@tmpb{#1}\fi
+ \@defaultunits\@tempdima\bxjs@tmpb pt\relax\@nnil}
+% \end{macrocode}
+% \end{macro}
+%
+% 続いて、和文間空白・和欧文間空白関連の命令を実装する。
+% (エンジン依存のコード。)
+%
+% \begin{macro}{\bxjs@kanjiskip}
+% 和文間空白の量を表すテキスト。
+% \begin{macrocode}
+\def\bxjs@kanjiskip{0pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setkanjiskip}
+% 和文間空白の量を設定する。
+% \begin{macrocode}
+\newcommand*\setkanjiskip[1]{%
+ \bxjs@let@lenexpr\bxjs@kanjiskip{#1}%
+ \bxjs@reset@kanjiskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\getkanjiskip}
+% 和文間空白の量を表すテキストに展開する。
+% \begin{macrocode}
+\newcommand*\getkanjiskip{%
+ \bxjs@kanjiskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@kanjiskip@enabled}
+% 和文間空白の挿入が有効か。
+% ただし{\pTeX}では自身の |\(no)autospacing| での制御を
+% 用いるのでこの変数は常に真とする。
+% \begin{macrocode}
+\newif\ifbxjs@kanjiskip@enabled \bxjs@kanjiskip@enabledtrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@enable@kanjiskip}
+% \begin{macro}{\bxjs@disable@kanjiskip}
+% 和文間空白の挿入を有効/無効にする。({\pTeX}以外)
+% \begin{macrocode}
+\bxjs@robust@def\bxjs@enable@kanjiskip{%
+ \bxjs@kanjiskip@enabledtrue
+ \bxjs@reset@kanjiskip}
+\bxjs@robust@def\bxjs@disable@kanjiskip{%
+ \bxjs@kanjiskip@enabledfalse
+ \bxjs@reset@kanjiskip}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@reset@kanjiskip}
+% 現在の和文間空白の設定を実際にエンジンに反映させる。
+% \begin{macrocode}
+\bxjs@robust@def\bxjs@reset@kanjiskip{%
+ \ifbxjs@kanjiskip@enabled
+ \setlength{\@tempskipa}{\bxjs@kanjiskip}%
+ \else \@tempskipa\z@
+ \fi
+ \bxjs@apply@kanjiskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@xkanjiskip}
+% \begin{macro}{\setxkanjiskip}
+% \begin{macro}{\getxkanjiskip}
+% \begin{macro}{\ifbxjs@xkanjiskip@enabled}
+% \begin{macro}{\bxjs@enable@xkanjiskip}
+% \begin{macro}{\bxjs@disable@xkanjiskip}
+% \begin{macro}{\bxjs@reset@xkanjiskip}
+% 和欧文間空白について同様のものを用意する。
+% \begin{macrocode}
+\def\bxjs@xkanjiskip{0pt}
+\newcommand*\setxkanjiskip[1]{%
+ \bxjs@let@lenexpr\bxjs@xkanjiskip{#1}%
+ \bxjs@reset@xkanjiskip}
+\newcommand*\getxkanjiskip{%
+ \bxjs@xkanjiskip}
+\newif\ifbxjs@xkanjiskip@enabled \bxjs@xkanjiskip@enabledtrue
+\bxjs@robust@def\bxjs@enable@xkanjiskip{%
+ \bxjs@xkanjiskip@enabledtrue
+ \bxjs@reset@xkanjiskip}
+\bxjs@robust@def\bxjs@disable@xkanjiskip{%
+ \bxjs@xkanjiskip@enabledfalse
+ \bxjs@reset@xkanjiskip}
+\bxjs@robust@def\bxjs@reset@xkanjiskip{%
+ \ifbxjs@xkanjiskip@enabled
+ \setlength{\@tempskipa}{\bxjs@xkanjiskip}%
+ \else \@tempskipa\z@
+ \fi
+ \bxjs@apply@xkanjiskip}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% |\jsResetDimen| を用いて、フォントサイズが変更された時に
+% 空白の量が追随するようにする。
+% \begin{macrocode}
+\g@addto@macro\jsResetDimen{%
+ \bxjs@reset@kanjiskip
+ \bxjs@reset@xkanjiskip}
+\let\bxjs@apply@kanjiskip\relax
+\let\bxjs@apply@xkanjiskip\relax
+% \end{macrocode}
+%
+% \paragraph{和文フォント指定の扱い}
+%
+% \begin{macro}{\bxjs@adjust@jafont}
+% |\jsJaFont| に入っている和文フォント設定の値を“調整”して、
+% その結果を |\bxjs@tmpa| に返す。
+% |#1| が |f| の場合は“非埋込(|noEmbed|)”の設定が禁止される。
+% この禁止の場合も含め、何か異常がある場合は |\bxjs@tmpa| は空になる。
+% \begin{macrocode}
+\@onlypreamble\bxjs@adjust@jafont
+\def\bxjs@adjust@jafont#1{%
+ \ifx\jsJaFont\bxjs@@auto
+ \bxjs@get@kanjiEmbed
+ \ifx\bxjs@kanjiEmbed\relax
+ \let\bxjs@tmpa\@empty
+ \else
+ \let\bxjs@tmpa\bxjs@kanjiEmbed
+ \fi
+ \else
+ \let\bxjs@tmpa\jsJaFont
+ \fi
+ \if f#1\ifx\bxjs@tmpa\bxjs@@noEmbed
+ \ClassWarningNoLine\bxjs@clsname
+ {Option 'jafont=noEmbed' is ignored, because it is\MessageBreak
+ not available on the current situation}%
+ \let\bxjs@tmpa\@empty
+ \fi\fi
+}
+\def\bxjs@@auto{auto}
+\def\bxjs@@noEmbed{noEmbed}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@kanjiEmbed}
+% 現在の |updmap| の |kanjiEmbed| パラメタの値。
+% |\bxjs@get@kanjiEmbed| により実際の設定値が取得されてここに設定される。
+% \begin{macrocode}
+\let\bxjs@kanjiEmbed\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@get@kanjiEmbed}
+% 現在の |updmap| の |kanjiEmbed| パラメタの値を取得する。
+% \begin{macrocode}
+\@onlypreamble\bxjs@get@kanjiEmbed
+\def\bxjs@get@kanjiEmbed{%
+ \begingroup\setbox\z@=\hbox{%
+ \global\let\bxjs@g@tmpa\relax
+ \endlinechar\m@ne
+ \let\do\@makeother\dospecials
+ \catcode32=10 \catcode12=10 %form-feed
+ \let\bxjs@tmpa\@empty
+ \openin\@inputcheck="|kpsewhich updmap.cfg"\relax
+ \ifeof\@inputcheck\else
+ \read\@inputcheck to\bxjs@tmpa
+ \closein\@inputcheck
+ \fi
+ \ifx\bxjs@tmpa\@empty\else
+ \openin\@inputcheck="\bxjs@tmpa"\relax
+ \@tempswatrue
+ \loop\if@tempswa
+ \read\@inputcheck to\bxjs@tmpa
+ \expandafter\bxjs@get@ke@a\bxjs@tmpa\@nil kanjiEmbed \@nil\@nnil
+ \ifx\bxjs@tmpb\relax\else
+ \global\let\bxjs@g@tmpa\bxjs@tmpb
+ \@tempswafalse
+ \fi
+ \expandafter\bxjs@get@ke@b\bxjs@tmpa\@nil jaEmbed \@nil\@nnil
+ \ifx\bxjs@tmpb\relax\else
+ \global\let\bxjs@g@tmpa\bxjs@tmpb
+ \@tempswafalse
+ \fi
+ \ifeof\@inputcheck \@tempswafalse \fi
+ \repeat
+ \fi
+ }\endgroup
+ \let\bxjs@kanjiEmbed\bxjs@g@tmpa
+}
+\@onlypreamble\bxjs@get@ke@a
+\def\bxjs@get@ke@a#1kanjiEmbed #2\@nil#3\@nnil{%
+ \ifx$#1$\def\bxjs@tmpb{#2}%
+ \else \let\bxjs@tmpb\relax
+ \fi}
+\@onlypreamble\bxjs@get@ke@b
+\def\bxjs@get@ke@b#1jaEmbed #2\@nil#3\@nnil{%
+ \ifx$#1$\def\bxjs@tmpb{#2}%
+ \else \let\bxjs@tmpb\relax
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jachar}
+% |\jachar{|\meta{文字}|}|\Means
+% 和文文字として出力する。
+% \begin{macrocode}
+\newcommand*\jachar[1]{%
+ \begingroup
+% \end{macrocode}
+% |\jsLetHeadChar| で先頭の“文字”を拾って
+% それを |\bxjs@jachar| に渡す。
+% \begin{macrocode}
+ \jsLetHeadChar\bxjs@tmpa{#1}%
+ \ifx\bxjs@tmpa\relax
+ \ClassWarningNoLine\bxjs@clsname
+ {Illegal argument given to \string\jachar}%
+ \else
+ \expandafter\bxjs@jachar\expandafter{\bxjs@tmpa}%
+ \fi
+ \endgroup}
+% \end{macrocode}
+% |\jsJaChar| を |\jachar| と等価にする。
+% \begin{macrocode}
+\let\jsJaChar\jachar
+% \end{macrocode}
+% 下請けの |\bxjs@jachar| の実装はエンジンにより異なる。
+% \begin{macrocode}
+\let\bxjs@jachar\@firstofone
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{hyperref対策}
+%
+% 出力ページサイズに館する処理は |geometry| パッケージが行うので、
+% |hyperref| 側の処理は無効にしておく。
+% \begin{macrocode}
+\PassOptionsToPackage{setpagesize=false}{hyperref}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@fix@hyperref@unicode}
+% |hyperref| の |unicode| オプションの値を固定する。
+% \begin{macrocode}
+\@onlypreamble\bxjs@fix@hyperref@unicode
+\def\bxjs@fix@hyperref@unicode#1{%
+ \PassOptionsToPackage{bxjs/hook=#1}{hyperref}%
+ \@namedef{KV@Hyp@bxjs/hook}##1{%
+ \KV@Hyp@unicode{##1}%
+ \def\KV@Hyp@unicode####1{%
+ \expandafter\ifx\csname if##1\expandafter\endcsname
+ \csname if####1\endcsname\else
+ \ClassWarningNoLine\bxjs@clsname
+ {Blcoked hyperref option 'unicode=####1'}%
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsCheckHyperrefUnicode}
+% 「|hyperref| の |unicode| オプションの値を検証する」ための
+% 本体開始時のフック。
+% \begin{macrocode}
+\@onlypreamble\jsCheckHyperrefUnicode
+\let\jsCheckHyperrefUnicode\@empty
+\g@addto@macro\bxjs@begin@document@hook{\jsCheckHyperrefUnicode}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@check@hyperref@unicode}
+% |hyperref| の |unicode| オプションの値を本体開始時に検証する。
+% \begin{macrocode}
+\@onlypreamble\bxjs@check@hyperref@unicode
+\def\bxjs@check@hyperref@unicode#1{%
+ \g@addto@macro\jsCheckHyperrefUnicode{%
+ \@tempswafalse
+ \begingroup
+ \expandafter\ifx\csname ifHy@unicode\endcsname\relax
+ \aftergroup\@tempswatrue \fi
+ \expandafter\ifx\csname ifHy@unicode\expandafter\endcsname
+ \csname if#1\endcsname
+ \aftergroup\@tempswatrue \fi
+ \endgroup
+ \if@tempswa\else
+ \ClassError\bxjs@clsname
+ {The value of hyperref 'unicode' key is not suitable\MessageBreak
+ for the present engine (must be #1)}%
+ {\@ehc}%
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@urgent@special}
+% DVIのなるべく早い位置にspecialを出力する。
+% \begin{macrocode}
+\@onlypreamble\bxjs@urgent@special
+\def\bxjs@urgent@special#1{%
+ \AtBeginDvi{\special{#1}}%
+ \g@addto@macro\bxjs@begin@document@hook{%
+ \@ifpackageloaded{atbegshi}{%
+ \begingroup
+ \toks\z@{\special{#1}}%
+ \toks\tw@\expandafter{\AtBegShi@HookFirst}%
+ \xdef\AtBegShi@HookFirst{\the\toks@\the\toks\tw@}%
+ \endgroup
+ }{}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@resolve@jafont@paren}
+% |jafont|パラメタ値内の|()|を解決する。
+% |\bxjs@resolve@jafont@paren\CS| で、|\CS| の内容中の |(...)|
+% を |\bxjs@jafont@paren{...}| に置き換える。
+% \begin{macrocode}
+\@onlypreamble\bxjs@resolve@jafont@paren
+\def\bxjs@resolve@jafont@paren#1{%
+ \def\bxjs@tmpb{\let#1}%
+ \expandafter\bxjs@resolve@jafont@paren@a#1\@nil()\@nil\relax}
+\@onlypreamble\bxjs@resolve@jafont@paren@a
+\def\bxjs@resolve@jafont@paren@a#1(#2)#3\@nil#4\relax{%
+ \ifx\relax#4\relax \bxjs@tmpb\jsJaFont
+ \else
+ \edef\bxjs@tmpa{#1\bxjs@jafont@paren{#2}#3}%
+ \bxjs@tmpb\bxjs@tmpa
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%^^A----------------
+% \subsection{{\pTeX}用設定}
+%
+% \begin{macrocode}
+\if j\jsEngine
+% \end{macrocode}
+%
+% \paragraph{共通命令の実装}
+%
+% \begin{macrocode}
+\def\bxjs@apply@kanjiskip{%
+ \kanjiskip\@tempskipa}
+\def\bxjs@apply@xkanjiskip{%
+ \xkanjiskip\@tempskipa}
+% \end{macrocode}
+%
+% |\jaJaChar| のサブマクロ。
+% \begin{macrocode}
+\def\bxjs@jachar#1{%
+ \bxjs@jachar@a#1....\@nil}
+\def\bxjs@jachar@a#1#2#3#4#5\@nil{%
+% \end{macrocode}
+% 引数が単一トークンなら和文文字トークンが得られたと
+% 見なしてそれをそのまま出力する。
+% \begin{macrocode}
+ \ifx.#2#1%
+% \end{macrocode}
+% 引数が複数トークンの場合は、UTF-8のバイト列であると見なし、
+% そのスカラー値を |\@tempcnta| に代入する。
+% \begin{macrocode}
+ \else\ifx.#3%
+ \@tempcnta`#1 \multiply\@tempcnta64
+ \advance\@tempcnta`#2 \advance\@tempcnta-"3080
+ \bxjs@jachar@b
+ \else\ifx.#4%
+ \@tempcnta`#1 \multiply\@tempcnta64
+ \advance\@tempcnta`#2 \multiply\@tempcnta64
+ \advance\@tempcnta`#3 \advance\@tempcnta-"E2080
+ \bxjs@jachar@b
+ \else
+ \@tempcnta`#1 \multiply\@tempcnta64
+ \advance\@tempcnta`#2 \multiply\@tempcnta64
+ \advance\@tempcnta`#3 \multiply\@tempcnta64
+ \advance\@tempcnta`#4 \advance\@tempcnta-"3C82080
+ \bxjs@jachar@b
+ \fi\fi\fi}
+% \end{macrocode}
+% 符号値が |\@tempcnta| の和文文字を出力する処理。
+% \begin{macrocode}
+\ifjsWithupTeX
+ \def\bxjs@jachar@b{\kchar\@tempcnta}
+\else
+ \def\bxjs@jachar@b{%
+ \ifx\bxUInt\@undefined\else
+ \bxUInt{\@tempcnta}%
+ \fi}
+\fi
+% \end{macrocode}
+%
+% 和欧文間空白の命令 |\jathinspace| の実装。
+% \begin{macrocode}
+\ifbxjs@jaspace@cmd
+ \def\jathinspace{\hskip\xkanjiskip}
+\fi
+% \end{macrocode}
+%
+% \paragraph{jis2004パラメタ}
+%
+% |pxchfon| と |pxbabel| では2004JISを指定するオプションの
+% 名が |prefer2004jis| である。
+% \begin{macrocode}
+\ifbxjs@jp@jismmiv
+ \PassOptionsToPackage{prefer2004jis}{pxchfon}
+ \PassOptionsToPackage{prefer2004jis}{pxbabel}
+\fi
+% \end{macrocode}
+%
+% \paragraph{和文フォント指定の扱い}
+%
+% {\pTeX}は既定で |kanji-config-updmap| の設定に従うため、
+% |\jsJaFont| が |auto| の場合は何もする必要がない。
+% 無指定でも |auto| でもない場合は、|\jsJaFont| をオプションに
+% して |pxchfon| パッケージを読み込む。
+% ここで、和文ドライバパラメタ |font| が指定されいる場合は、
+% その値を |pxchfon| のオプションに追加する。
+% \begin{macrocode}
+\let\bxjs@jafont@paren\@firstofone
+\let\bxjs@tmpa\jsJaFont
+\ifx\bxjs@tmpa\bxjs@@auto
+ \let\bxjs@tmpa\@empty
+\else\ifx\bxjs@tmpa\bxjs@@noEmbed
+ \def\bxjs@tmpa{noembed}
+\fi\fi
+\bxjs@resolve@jafont@paren\bxjs@tmpa
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
+\ifx\bxjs@tmpa\@empty\else
+ \edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@tmpa]{pxchfon}[2010/05/12]% v0.5
+ }\bxjs@next
+\fi
+% \end{macrocode}
+%
+% \paragraph{otfパッケージ対策}
+%
+% インストールされている |otf| パッケージが |scale| オプションに
+% 対応している場合は |scale=(\jsScaleの値)| を事前に |otf| に渡す。
+% \Note |scale| 対応は1.7b6版 [2013/11/17] から。
+% \Note otf.sty の中に「|\RequirePackage{keyval}|」の行が存在する
+% かにより判定している。
+% (もっといい方法はないのか……。)
+%
+% \begin{macrocode}
+\begingroup
+ \global\let\bxjs@g@tmpa\relax
+ \catcode`\|=0 \catcode`\\=12
+ |def|bxjs@tmpdo#1|@nil{%
+ |bxjs@tmpdo@a#1|@nil\RequirePackage|@nnil}%
+ |def|bxjs@tmpdo@a#1\RequirePackage#2|@nnil{%
+ |ifx$#1$|bxjs@tmpdo@b#2|@nil keyval|@nnil |fi}%
+ |catcode`|\=0 \catcode`\|=12
+ \def\bxjs@tmpdo@b#1keyval#2\@nnil{%
+ \ifx$#2$\else
+ \xdef\bxjs@g@tmpa{%
+ \noexpand\PassOptionsToPackage{scale=\jsScale}{otf}}%
+ \fi}
+\@firstofone{%
+ \catcode10=12 \endlinechar\m@ne
+ \let\do\@makeother \dospecials \catcode32=10
+ \openin\@inputcheck=otf.sty\relax
+ \@tempswatrue
+ \loop\if@tempswa
+ \ifeof\@inputcheck \@tempswafalse \fi
+ \if@tempswa
+ \read\@inputcheck to\bxjs@next
+ \expandafter\bxjs@tmpdo\bxjs@next\@nil
+ \fi
+ \repeat
+ \closein\@inputcheck
+\endgroup}
+\bxjs@g@tmpa
+% \end{macrocode}
+%
+% \paragraph{hyperref対策}
+%
+% |unicode| にしてはいけない。
+% \begin{macrocode}
+\ifbxjs@hyperref@enc
+ \bxjs@check@hyperref@unicode{false}
+\fi
+% \end{macrocode}
+%
+% |tounicode| special命令を出力する。
+% \begin{macrocode}
+\if \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx T%
+ \else\ifjsWithpTeXng T\else F\fi\fi T%
+ \ifnum\jis"2121="A1A1 %euc
+ \bxjs@urgent@special{pdf:tounicode EUC-UCS2}
+ \else\ifnum\jis"2121="8140 %sjis
+ \bxjs@urgent@special{pdf:tounicode 90ms-RKSJ-UCS2}
+ \else\ifnum\jis"2121="3000 %uptex
+ \ifbxjs@bigcode
+ \bxjs@urgent@special{pdf:tounicode UTF8-UTF16}
+ \PassOptionsToPackage{bigcode}{pxjahyper}
+ \else
+ \bxjs@urgent@special{pdf:tounicode UTF8-UCS2}
+ \fi
+ \fi\fi\fi
+ \let\bxToUnicodeSpecialDone=t
+\fi
+% \end{macrocode}
+%
+% \paragraph{和文数式ファミリ}
+%
+% 和文数式ファミリは既定で有効とする。
+% すなわち |enablejfam=false| 以外の場合は |@enablejfam| を真にする。
+% \begin{macrocode}
+\ifx f\bxjs@enablejfam\else
+ \@enablejfamtrue
+\fi
+% \end{macrocode}
+%
+% 実際に和文用の数式ファミリの設定を行う。
+% \begin{macrocode}
+\if@enablejfam
+ \DeclareSymbolFont{mincho}{\jsc@JYn}{mc}{m}{n}
+ \DeclareSymbolFontAlphabet{\mathmc}{mincho}
+ \SetSymbolFont{mincho}{bold}{\jsc@JYn}{gt}{m}{n}
+ \jfam\symmincho
+ \DeclareMathAlphabet{\mathgt}{\jsc@JYn}{gt}{m}{n}
+ \g@addto@macro\bxjs@begin@document@hook{%
+ \ifx\reDeclareMathAlphabet\@undefined\else
+ \reDeclareMathAlphabet{\mathrm}{\@mathrm}{\@mathmc}%
+ \reDeclareMathAlphabet{\mathbf}{\@mathbf}{\@mathgt}%
+ \reDeclareMathAlphabet{\mathsf}{\@mathsf}{\@mathgt}%
+ \fi}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{pdf{\TeX}用設定: CJK + bxcjkjatype}
+%
+% \begin{macrocode}
+\else\if p\jsEngine
+% \end{macrocode}
+%
+% \paragraph{bxcjkjatypeパッケージの読込}
+%
+% |\jsJaFont| が指定されている場合は、その値を |bxcjkjatype| の
+% オプション(プリセット指定)に渡す。
+% (|auto| ならば |\bxjs@get@kanjiEmbed| を実行する。)
+% スケール値(|\jsScale|)の反映は bxcjkjatype の側で行われる。
+% \Note Pandocモードでは |autotilde| を指定しない。
+% \begin{macrocode}
+\bxjs@adjust@jafont{f}
+\let\bxjs@jafont@paren\@firstofone
+\bxjs@resolve@jafont@paren\bxjs@tmpa
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa{whole}}
+\def\bxjs@tmpb{pandoc}\ifx\bxjs@tmpb\bxjs@jadriver\else
+ \edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa{autotilde}}
+\fi
+\edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@tmpa]{bxcjkjatype}[2013/10/15]% v0.2c
+}\bxjs@next
+\bxjs@cjk@loaded
+% \end{macrocode}
+%
+% \paragraph{hyperref対策}
+%
+% |bxcjkjatype| 使用時は |unicode| にするべき。
+% \Note 取りあえず固定はしない。
+% \begin{macrocode}
+\ifbxjs@hyperref@enc
+ \PassOptionsToPackage{unicode}{hyperref}
+\fi
+% \end{macrocode}
+%
+% |\hypersetup| 命令で(|CJK*| 環境に入れなくても)日本語文字を
+% 含む文書情報を設定できるようにするための細工。
+% \Note bxcjkjatype を |whole| 付きで使っていることが前提。
+% \Note パッケージオプションでの指定に対応するのは、
+% 「アクティブな高位バイトトークンがその場で展開されてしまう」
+% ため困難である。
+% \begin{macrocode}
+\ifx\bxcjkjatypeHyperrefPatchDone\@undefined
+\begingroup
+ \CJK@input{UTF8.bdg}
+\endgroup
+\g@addto@macro\pdfstringdefPreHook{%
+ \@nameuse{CJK@UTF8Binding}%
+}
+\fi
+% \end{macrocode}
+%
+% |~| が和欧文間空白である場合はPDF文字列中で空白文字で
+% なく空に展開させる。
+% \begin{macrocode}
+\ifx\bxcjkjatypeHyperrefPatchDone\@undefined
+\g@addto@macro\pdfstringdefPreHook{%
+ \ifx~\bxjs@@CJKtilde
+ \let\bxjs@org@LetUnexpandableSpace\HyPsd@LetUnexpandableSpace
+ \let\HyPsd@LetUnexpandableSpace\bxjs@LetUnexpandableSpace
+ \let~\@empty
+ \fi
+}
+\def\bxjs@@CJKtilde{\CJKecglue\ignorespaces}
+\def\bxjs@@tildecmd{~}
+\def\bxjs@LetUnexpandableSpace#1{%
+ \def\bxjs@tmpa{#1}\ifx\bxjs@tmpa\bxjs@@tildecmd\else
+ \bxjs@org@LetUnexpandableSpace#1%
+ \fi}
+\fi
+% \end{macrocode}
+%
+% \paragraph{共通命令の実装}
+%
+% \begin{macrocode}
+\newskip\jsKanjiSkip
+\newskip\jsXKanjiSkip
+\ifx\CJKecglue\@undefined
+ \def\CJKtilde{\CJK@global\def~{\CJKecglue\ignorespaces}}
+\fi
+\let\autospacing\bxjs@enable@kanjiskip
+\let\noautospacing\bxjs@disable@kanjiskip
+\protected\def\bxjs@CJKglue{\hskip\jsKanjiSkip}
+\def\bxjs@apply@kanjiskip{%
+ \jsKanjiSkip\@tempskipa
+ \let\CJKglue\bxjs@CJKglue}
+\let\autoxspacing\bxjs@enable@xkanjiskip
+\let\noautoxspacing\bxjs@disable@xkanjiskip
+\protected\def\bxjs@CJKecglue{\hskip\jsXKanjiSkip}
+\def\bxjs@apply@xkanjiskip{%
+ \jsXKanjiSkip\@tempskipa
+ \let\CJKecglue\bxjs@CJKecglue}
+% \end{macrocode}
+%
+% |\jachar| のサブマクロの実装。
+% \begin{macrocode}
+\def\bxjs@jachar#1{%
+ \CJKforced{#1}}
+% \end{macrocode}
+%
+% 和欧文間空白の命令 |\jathinspace| の実装。
+% \begin{macrocode}
+\ifbxjs@jaspace@cmd
+ \protected\def\jathinspace{\CJKecglue}
+\fi
+% \end{macrocode}
+%
+% \paragraph{和文数式ファミリ}
+%
+% CJKパッケージは(恐らく)数式文字としてCJK文字をサポートしていない。
+% 従って |@enablejfam| は常に偽になる。
+% \begin{macrocode}
+\ifx t\bxjs@enablejfam
+ \ClassWarningNoLine\bxjs@clsname
+ {You cannot use 'enablejfam=true', since the\MessageBreak
+ CJK package does not support Japanese math}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{{\XeTeX}用設定: xeCJK + zxjatype}
+%
+% \begin{macrocode}
+\else\if x\jsEngine
+% \end{macrocode}
+%
+% \paragraph{zxjatypeパッケージの読込}
+%
+% スケール値(|\jsScale|)の反映は zxjatype の側で行われる。
+% \begin{macrocode}
+\RequirePackage{zxjatype}
+\PassOptionsToPackage{no-math}{fontspec}%!
+\PassOptionsToPackage{xetex}{graphicx}%!
+\PassOptionsToPackage{xetex}{graphics}%!
+\ifx\zxJaFamilyName\@undefined
+ \ClassError\bxjs@clsname
+ {xeCJK or zxjatype is too old}\@ehc
+\fi
+% \end{macrocode}
+%
+% \paragraph{和文フォント定義}
+%
+% |\jsJaFont| が指定された場合は、その値をオプションと
+% して |zxjafont| を読み込む。
+% 非指定の場合はIPAexフォントを使用する。
+% \begin{macrocode}
+\bxjs@adjust@jafont{f}
+\let\bxjs@jafont@paren\@gobble
+\bxjs@resolve@jafont@paren\bxjs@tmpa
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
+\ifx\bxjs@tmpa\@empty
+ \setCJKmainfont[BoldFont=ipaexg.ttf]{ipaexm.ttf}
+ \setCJKsansfont[BoldFont=ipaexg.ttf]{ipaexg.ttf}
+\else
+ \edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@tmpa]{zxjafont}[2013/01/28]% v0.2a
+ }\bxjs@next
+\fi
+% \end{macrocode}
+%
+% \paragraph{hyperref対策}
+%
+% |unicode| オプションの指定に関する話。
+%
+% {\XeTeX}の場合は、xdvipdfmxがUTF-8→UTF-16の変換を行う機能を
+% 持っているため、本来はspecial命令の文字列の文字コード変換は不要である。
+% ところが、|hyperref| での方針としては、{\XeTeX}の場合にも
+% パッケージ側で文字コード変換を行う方が望ましいと考えている。
+% 実際、|unicode| を無効にしていると警告が出て強制的に有効化される。
+% 一方で、過去(r35125まで)^^A2014/09/20
+% のxdvipdfmxでは、文字列をUTF-16に変換した状態で与えるのは不正と
+% 見なしていて警告が発生する。
+%
+% これを踏まえて、ここでは、
+% 「{\XeTeX}のバージョンが0.99992以上の場合に |unicode| を既定で
+% 有効にする」
+% ことにする。
+% \Note 取りあえず固定はしない。
+% \begin{macrocode}
+\ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99992}>\m@ne
+ \ifbxjs@hyperref@enc
+ \PassOptionsToPackage{unicode}{hyperref}
+ \fi
+\fi
+% \end{macrocode}
+%
+% \paragraph{段落頭でのグルー挿入禁止}
+%
+% どうやら、\Pkg{zxjatype}の |\inhibitglue| の実装が極めて杜撰なため、
+% 1.0版での実装では全く期待通りの動作をしていないし、
+% そもそも(少なくとも現状の)\Pkg{xeCJK}では、
+% 段落頭での |\inhibitglue| は実行しないほうがJSクラスの出力に
+% 近いものが得られるらしい。
+%
+% 従って、|\jsInhibitGlueAtParTop| は結局何もしないことにする。
+%
+% 強制改行直後のグルー禁止処理、のような怪しげな何か。
+%
+% \begin{macrocode}
+\AtEndOfPackage{%
+\def\@gnewline #1{%
+ \ifvmode \@nolnerr
+ \else
+ \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
+ \nobreak \hskip-1sp\hskip1sp\relax
+ \ignorespaces
+ \fi}
+}
+% \end{macrocode}
+%
+% \paragraph{共通命令の実装}
+%
+% \begin{macrocode}
+\newskip\jsKanjiSkip
+\newskip\jsXKanjiSkip
+\ifx\CJKecglue\@undefined
+ \def\CJKtilde{\CJK@global\def~{\CJKecglue\ignorespaces}}
+\fi
+\let\autospacing\bxjs@enable@kanjiskip
+\let\noautospacing\bxjs@disable@kanjiskip
+\protected\def\bxjs@CJKglue{\hskip\jsKanjiSkip}
+\def\bxjs@apply@kanjiskip{%
+ \jsKanjiSkip\@tempskipa
+ \xeCJKsetup{CJKglue={\bxjs@CJKglue}}}
+\let\autoxspacing\bxjs@enable@xkanjiskip
+\let\noautoxspacing\bxjs@disable@xkanjiskip
+\protected\def\bxjs@CJKecglue{\hskip\jsXKanjiSkip}
+\def\bxjs@apply@xkanjiskip{%
+ \jsXKanjiSkip\@tempskipa
+ \xeCJKsetup{CJKecglue={\bxjs@CJKecglue}}}
+% \end{macrocode}
+%
+% |\mcfamily|、|\gtfamily| は本来は zxjatype の方で定義すべき
+% であろうが、現状は暫定的にここで定義する。
+% \begin{macrocode}
+\ifx\mcfamily\@undefined
+ \protected\def\mcfamily{\CJKfamily{\CJKrmdefault}}
+ \protected\def\gtfamily{\CJKfamily{\CJKsfdefault}}
+\fi
+% \end{macrocode}
+%
+% |\jachar| のサブマクロの実装。
+% \begin{macrocode}
+\def\bxjs@jachar#1{%
+ \xeCJKDeclareCharClass{CJK}{`#1}\relax
+ #1}
+% \end{macrocode}
+%
+% |\jathinspace| の実装。
+% \begin{macrocode}
+\ifbxjs@jaspace@cmd
+ \protected\def\jathinspace{\CJKecglue}
+\fi
+% \end{macrocode}
+%
+% \paragraph{和文数式ファミリ}
+%
+% 和文数式ファミリは既定で無効とする。
+% すなわち |enablejfam=true| の場合にのみ |@enablejfam| を真にする。
+% \begin{macrocode}
+\ifx t\bxjs@enablejfam
+ \@enablejfamtrue
+\fi
+% \end{macrocode}
+%
+% 実際に和文用の数式ファミリの設定を行う。
+% \Note FIXME: 要検討。
+% \begin{macrocode}
+\if@enablejfam
+ \xeCJKsetup{CJKmath=true}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{Lua{\TeX}用設定: Lua{\TeX}-ja}
+%
+% \begin{macrocode}
+\else\if l\jsEngine
+% \end{macrocode}
+%
+% \paragraph{Lua{\TeX}-jaパッケージの読込}
+%
+% |luatexja| とともに |luatexja-fontspec| パッケージを読み込む。
+%
+% |luatexja| は自前の |\zw|(これは実際の現在和文フォントに
+% 基づく値を返す)を定義するので、|\zw| の定義を消しておく。
+% なお、レイアウト定義の「全角幅」は「規定」に基づく |\jsZw| で
+% あることに注意が必要。
+%
+% \Note 1.0b版から
+% 「graphicsパッケージに |pdftex| オプションを渡す」
+% 処理を行っていたが、1.4版で廃止された。
+%
+% \begin{macrocode}
+\let\zw\@undefined
+\RequirePackage{luatexja}
+\edef\bxjs@next{%
+ \noexpand\RequirePackage[scale=\jsScale]{luatexja-fontspec}[2015/08/26]%
+}\bxjs@next
+% \end{macrocode}
+%
+% フォント代替の明示的定義。
+% \begin{macrocode}
+\DeclareFontShape{JY3}{mc}{m}{it}{<->ssub*mc/m/n}{}
+\DeclareFontShape{JY3}{mc}{m}{sl}{<->ssub*mc/m/n}{}
+\DeclareFontShape{JY3}{mc}{m}{sc}{<->ssub*mc/m/n}{}
+\DeclareFontShape{JY3}{gt}{m}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY3}{gt}{m}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY3}{mc}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY3}{gt}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY3}{gt}{bx}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY3}{mc}{b}{n}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{JY3}{mc}{b}{it}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{JY3}{mc}{b}{sl}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{JY3}{gt}{b}{n}{<->ssub*gt/bx/n}{}
+\DeclareFontShape{JY3}{gt}{b}{it}{<->ssub*gt/bx/n}{}
+\DeclareFontShape{JY3}{gt}{b}{sl}{<->ssub*gt/bx/n}{}
+\DeclareFontShape{JT3}{mc}{m}{it}{<->ssub*mc/m/n}{}
+\DeclareFontShape{JT3}{mc}{m}{sl}{<->ssub*mc/m/n}{}
+\DeclareFontShape{JT3}{mc}{m}{sc}{<->ssub*mc/m/n}{}
+\DeclareFontShape{JT3}{gt}{m}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JT3}{gt}{m}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JT3}{mc}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JT3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JT3}{gt}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JT3}{gt}{bx}{sl}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JT3}{mc}{b}{n}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{JT3}{mc}{b}{it}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{JT3}{mc}{b}{sl}{<->ssub*mc/bx/n}{}
+\DeclareFontShape{JT3}{gt}{b}{n}{<->ssub*gt/bx/n}{}
+\DeclareFontShape{JT3}{gt}{b}{it}{<->ssub*gt/bx/n}{}
+\DeclareFontShape{JT3}{gt}{b}{sl}{<->ssub*gt/bx/n}{}
+% \end{macrocode}
+%
+% \paragraph{和文フォント定義}
+%
+% |\jsJaFont| が指定された場合は、その値をオプションと
+% して |luatexja-preset| を読み込む。
+% 非指定の場合は、|luatexja-preset| パッケージの |ipaex|
+% オプション(IPAexフォント使用)と等価な設定を用いる
+% (|luatexja-preset| は読み込まない)。
+% \begin{macrocode}
+\bxjs@adjust@jafont{t}
+\ifx\bxjs@tmpa\bxjs@@noEmbed
+ \def\bxjs@tmpa{noembed}
+\fi
+\let\bxjs@jafont@paren\@gobble
+\bxjs@resolve@jafont@paren\bxjs@tmpa
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
+\ifx\bxjs@tmpa\@empty
+ \defaultjfontfeatures{ Kerning=Off }
+ \setmainjfont[BoldFont=IPAexGothic,JFM=ujis]{IPAexMincho}
+ \setsansjfont[BoldFont=IPAexGothic,JFM=ujis]{IPAexGothic}
+\else
+ \edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@tmpa]{luatexja-preset}%
+ }\bxjs@next
+\fi
+% \end{macrocode}
+%
+% 欧文総称フォント命令で和文フォントが連動するように修正する。
+% その他の和文フォント関係の定義を行う。
+% \begin{macrocode}
+\DeclareRobustCommand\rmfamily
+ {\not@math@alphabet\rmfamily\mathrm
+ \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
+\DeclareRobustCommand\sffamily
+ {\not@math@alphabet\sffamily\mathsf
+ \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
+\DeclareRobustCommand\ttfamily
+ {\not@math@alphabet\ttfamily\mathtt
+ \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
+\g@addto@macro\bxjs@begin@document@hook{%
+ \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
+ \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}%
+ \reDeclareMathAlphabet{\mathsf}{\mathsf}{\mathgt}}%
+\bxjs@if@sf@default{%
+ \renewcommand\kanjifamilydefault{\gtdefault}}
+% \end{macrocode}
+%
+% \paragraph{和文パラメタの設定}
+%
+% \begin{macrocode}
+% 次の3つは既定値の通り
+%\ltjsetparameter{prebreakpenalty={`’,10000}}
+%\ltjsetparameter{postbreakpenalty={`“,10000}}
+%\ltjsetparameter{prebreakpenalty={`”,10000}}
+\ltjsetparameter{jaxspmode={`!,1}}
+\ltjsetparameter{jaxspmode={`〒,2}}
+\ltjsetparameter{alxspmode={`+,3}}
+\ltjsetparameter{alxspmode={`\%,3}}
+% \end{macrocode}
+%
+% \paragraph{段落頭でのグルー挿入禁止}
+%
+% 基本的に現状の |ltjs*| クラスの処理に合わせる。
+% \Note |\jsInhibitGlueAtParTop| は使わない。
+%
+% \begin{macro}{\ltjfakeparbegin}
+% 現在の{\LuaTeX-ja}で定義されているマクロで、
+% 段落中で段落冒頭用の処理を発動する。
+% 未定義である場合にに備えて同等のものを用意する。
+% \begin{macrocode}
+\ifx\ltjfakeparbegin\@undefined
+ \protected\def\ltjfakeparbegin{%
+ \ifhmode
+ \relax\directlua{%
+ luatexja.jfmglue.create_beginpar_node()}}
+ \fi}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% |ltjs*| クラスの定義と同等になるようにパッチを当てる。
+% \begin{macrocode}
+\unless\ifnum\bxjs@everyparhook=\bxjs@everyparhook@none
+\begingroup
+ \let\%\@percentchar \def\@#1{[[\detokenize{#1}]]}
+ \@gobble\if\def\bxjs@tmpa{\@{\everypar{}\fi}}
+ \ifnum\bxjs@everyparhook=\bxjs@everyparhook@compat
+ \@gobble\if\def\bxjs@tmpa{\@{\everypar{\everyparhook}\fi}}\fi
+ \directlua{
+ local function patchcmd(cs, code, from, to)
+ tex.sprint(code:gsub(from:gsub("\%W", "\%\%\%0"), "\%0"..to)
+ :gsub("macro:", \@\gdef..cs, 1):gsub("->", "{", 1).."}")
+ end
+ patchcmd(\@\@xsect, [[\meaning\@xsect]],
+ \@{\hskip-\@tempskipa}, \@\ltjfakeparbegin)
+ patchcmd(\@\@item, [[\meaning\@item]],
+ \bxjs@tmpa, \@\ltjfakeparbegin)}
+\endgroup
+\fi
+% \end{macrocode}
+%
+% \paragraph{hyperref対策}
+%
+% |unicode| にするべき。
+% \Note 1.6c版より、固定ではなく既定設定+検証に切り替えた。
+% \begin{macrocode}
+\ifbxjs@hyperref@enc
+ \PassOptionsToPackage{unicode}{hyperref}
+ \bxjs@check@hyperref@unicode{true}
+\fi
+% \end{macrocode}
+%
+% \paragraph{共通命令の実装}
+%
+% \begin{macrocode}
+\protected\def\autospacing{%
+ \ltjsetparameter{autospacing=true}}
+\protected\def\noautospacing{%
+ \ltjsetparameter{autospacing=false}}
+\protected\def\autoxspacing{%
+ \ltjsetparameter{autoxspacing=true}}
+\protected\def\noautoxspacing{%
+ \ltjsetparameter{autoxspacing=false}}
+\def\bxjs@apply@kanjiskip{%
+ \ltjsetparameter{kanjiskip={\@tempskipa}}}
+\def\bxjs@apply@xkanjiskip{%
+ \ltjsetparameter{xkanjiskip={\@tempskipa}}}
+% \end{macrocode}
+%
+% |\jachar| のサブマクロの実装。
+% \begin{macrocode}
+\def\bxjs@jachar#1{%
+ \ltjjachar`#1\relax}
+% \end{macrocode}
+%
+% |\jathinspace| の実装。
+% \begin{macrocode}
+\ifbxjs@jaspace@cmd
+ \protected\def\jathinspace{%
+ \hskip\ltjgetparameter{xkanjiskip}\relax}
+\fi
+% \end{macrocode}
+%
+% \paragraph{和文数式ファミリ}
+%
+% Lua{\TeX}-jaでは和文数式ファミリは常に有効で、既にこの時点で必要な
+% 設定は済んでいる。
+% 従って |@enablejfam| は常に真になる。
+% \begin{macrocode}
+\ifx f\bxjs@enablejfam
+ \ClassWarningNoLine\bxjs@clsname
+ {You cannot use 'enablejfam=false', since the\MessageBreak
+ LuaTeX-ja always provides Japanese math families}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{共通処理(2)}
+%
+% \begin{macrocode}
+\fi\fi\fi\fi
+% \end{macrocode}
+%
+% \paragraph{共通命令の実装}
+% \begin{macro}{\textmc}
+% \begin{macro}{\textgt}
+% minimal ドライバ実装中で定義した |\DeclareJaTextFontCommand|
+% を利用する。
+% \begin{macrocode}
+\ifx\DeclareFixJFMCJKTextFontCommand\@undefined
+\DeclareJaTextFontCommand{\textmc}{\mcfamily}
+\DeclareJaTextFontCommand{\textgt}{\gtfamily}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\mathmc}
+% \begin{macro}{\mathgt}
+% この時点で未定義である場合に限り、
+% |\DeclareJaMathFontCommand| を利用したフォールバックの定義を行う。
+% \begin{macrocode}
+\ifx\mathmc\@undefined
+ \DeclareJaMathFontCommand{\mathmc}{\mcfamily}
+ \DeclareJaMathFontCommand{\mathgt}{\gtfamily}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{和文空白命令}
+% \begin{macro}{\>}
+% 非数式中では |\jathinspace| と等価になるように再定義する。
+% \Note 数式中では従来通り(|\:| と等価)。
+% \begin{macrocode}
+\ifbxjs@jaspace@cmd
+ \bxjs@protected\def\bxjs@choice@jathinspace{%
+ \relax\ifmmode \mskip\medmuskip
+ \else \jathinspace\ignorespaces
+ \fi}
+ \jsAtEndOfClass{%
+ \ifjsWitheTeX \let\>\bxjs@choice@jathinspace
+ \else \def\>{\protect\bxjs@choice@jathinspace}%
+ \fi}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{和文・和欧文間空白の初期値}
+%
+% \begin{macrocode}
+\setkanjiskip{0pt plus.1\jsZw minus.01\jsZw}
+\ifx\jsDocClass\jsSlide \setxkanjiskip{0.1em}
+\else \setxkanjiskip{0.25em plus 0.15em minus 0.06em}
+\fi
+% \end{macrocode}
+%
+% 以上で終わり。
+%
+% \begin{macrocode}
+%</standard>
+% \end{macrocode}
+%
+%^^A========================================================
+% \section{和文ドライバ:modern \ZRX}
+%
+% モダーンな設定。
+%
+% standardドライバの設定を引き継ぐ。
+% \begin{macrocode}
+%<*modern>
+\input{bxjsja-standard.def}
+% \end{macrocode}
+%
+%^^A----------------
+%\subsection{フォント設定}
+%
+% T1エンコーディングに変更する。
+% \Note 以下のコードは |\usepackage[T1]{fontenc}| と同等。
+% \begin{macrocode}
+\ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi=\z@
+\def\encodingdefault{T1}%
+\input{t1enc.def}%
+\fontencoding\encodingdefault\selectfont
+\fi
+% \end{macrocode}
+%
+% 基本フォントをLatin Modernフォントファミリに変更する。
+% \Note 以下は |\usepackage[noamth]{lmodern}| と同じ。
+% ユーザは後で |lmodern| を好きなオプションを付けて読み込む
+% ことができる。
+% \begin{macrocode}
+\ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi=\z@
+\renewcommand{\rmdefault}{lmr}
+\renewcommand{\sfdefault}{lmss}
+\renewcommand{\ttdefault}{lmtt}
+\fi
+% \end{macrocode}
+%
+% 大型演算子用の数式フォントの設定。
+% \Note |amsfonts| パッケージと同等にする。
+% \begin{macrocode}
+\DeclareFontShape{OMX}{cmex}{m}{n}{%
+ <-7.5>cmex7<7.5-8.5>cmex8%
+ <8.5-9.5>cmex9<9.5->cmex10}{}%
+\expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax
+% \end{macrocode}
+% |amsmath| 読込時に上書きされるのを防ぐ。
+% \begin{macrocode}
+\def\cmex@opt{10}
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{fixltx2e読込}
+%
+% \Note |fixltx2e| 廃止前の{\LaTeX}カーネルの場合。
+% \begin{macrocode}
+\ifx\@IncludeInRelease\@undefined
+\RequirePackage{fixltx2e}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{和文カテゴリコード}
+%
+% 和文カテゴリコード設定のための補助パッケージを読みこむ。
+% \begin{macrocode}
+\RequirePackage{bxjscjkcat}
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{完了}
+% おしまい。
+% \begin{macrocode}
+%</modern>
+% \end{macrocode}
+%
+%^^A========================================================
+% \section{和文ドライバ:pandoc \ZRX}
+%
+% Pandoc用の何か。
+%
+% standardドライバの設定を引き継ぐ。
+% \begin{macrocode}
+%<*pandoc>
+\input{bxjsja-standard.def}
+% \end{macrocode}
+%
+% |bxjspandoc| パッケージを読み込む。
+% \begin{macrocode}
+\RequirePackage{bxjspandoc}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@endpreamble@hook}
+% |etoolbox| の |\AtEndPreamble| で実行されるBXJSクラス用のフック。
+% \Note {\eTeX}以外では無効になる。
+% (将来pandocの外に出す可能性あり。)
+% \begin{macrocode}
+\@onlypreamble\bxjs@endpreamble@hook
+\let\bxjs@endpreamble@hook\@empty
+\ifjsWitheTeX
+ \RequirePackage{etoolbox}[2010/08/21]% v2.0
+ \AtEndPreamble{\bxjs@endpreamble@hook}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%^^A----------------
+%\subsection{duploadシステム}
+%
+% パッケージが重複して読み込まれたときに“option clash”の
+% 検査をスキップする。
+% この時に何らかのコードを実行させることができる。
+%
+% \begin{macro}{\bxjs@set@dupload@proc}
+% |\bxjs@set@dupload@proc{|\Meta{ファイル名}|}{|\Meta{定義本体}|}|
+% 特定のファイルの読込が |\@filewithoptions| で指示されて、しかも
+% そのファイルが読込済である場合に、オプション重複検査をスキップして、
+% 代わりに\Meta{定義本体}のコードを実行する。
+% このコード中で |#1| は渡されたオプション列のテキストに置換される。
+% \begin{macrocode}
+\@onlypreamble\bxjs@set@dupload@proc
+\def\bxjs@set@dupload@proc#1{%
+ \expandafter\bxjs@set@dupload@proc@a\csname bxjs@dlp/#1\endcsname}
+\@onlypreamble\bxjs@set@dupload@proc@a
+\def\bxjs@set@dupload@proc@a#1{%
+ \@onlypreamble#1\def#1##1}
+\def\bxjs@unset@dupload@proc#1{%
+ \expandafter\let\csname bxjs@dlp/#1\endcsname\@undefined}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@if@ptions}
+% |\@if@ptions| の再定義。
+% \begin{macrocode}
+\@onlypreamble\bxjs@org@if@ptions
+\let\bxjs@org@if@ptions\@if@ptions
+\@onlypreamble\bxjs@org@reset@ptions
+\let\bxjs@org@reset@ptions\relax
+\def\@if@ptions#1#2#3{%
+ \let\bxjs@next\@secondoftwo
+ \def\bxjs@tmpa{#1}\def\bxjs@tmpb{\@currext}%
+ \ifx\bxjs@tmpa\bxjs@tmpb
+ \expandafter\ifx\csname bxjs@dlp/#2.#1\endcsname\relax\else
+ \let\bxjs@next\@firstoftwo \fi
+ \fi
+ \bxjs@next\bxjs@do@dupload@proc\bxjs@org@if@ptions{#1}{#2}{#3}}
+\g@addto@macro\bxjs@begin@document@hook{%
+ \let\@if@ptions\bxjs@org@if@ptions}
+\@onlypreamble\bxjs@do@dupload@proc
+\def\bxjs@do@dupload@proc#1#2#3{%
+ \ifx\bxjs@org@reset@ptions\relax
+ \let\bxjs@org@reset@ptions\@reset@ptions
+ \fi
+ \bxjs@csletcs{bxjs@next}{bxjs@dlp/#2.#1}%
+ \def\@reset@ptions{%
+ \let\@reset@ptions\bxjs@org@reset@ptions
+ \@reset@ptions
+ \bxjs@next{#3}}%
+ \@firstoftwo}
+% \end{macrocode}
+% \end{macro}
+%
+%^^A----------------
+%\subsection{lang変数}
+% |lang=ja| という言語指定が行われると、
+% Pandocはこれに対応していないため
+% 不完全なBabelやPolyglossiaの設定を出力してしまう。
+% これを防ぐための対策を行う。
+%
+% \begin{macro}{\bxjs@polyglossia@options}
+% Polyglossiaのオプション列のテキスト。
+% “実際には読み込まれていない”場合は |\relax| になる。
+% \begin{macrocode}
+\let\bxjs@polyglossia@options\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@babel@options}
+% Babelのオプション列のテキスト。
+% “実際には読み込まれていない”場合は |\relax| になる。
+% \begin{macrocode}
+\let\bxjs@babel@options\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Polyglossiaについて}
+% つまり{\XeTeX}・{Lua\TeX}の場合。
+% \Note この場合 |etoolbox| が使用可能になっている。
+% \begin{macrocode}
+\ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi>0
+% \end{macrocode}
+%
+% パッケージの読込を検知するため読込済のマークを付けて
+% duploadの処理を仕込む。
+% \begin{macrocode}
+\pandocSkipLoadPackage{polyglossia}
+\bxjs@set@dupload@proc{polyglossia.sty}{%
+ \bxjs@unset@dupload@proc{polyglossia.sty}%
+ \ClassWarning\bxjs@clsname
+ {Package polyglossia is required}%
+ \def\bxjs@polyglossia@options{#1}%
+% \end{macrocode}
+%
+% |polyglossia| の読込が指示された場合、
+% 直後に |\setmainlanguage| が実行されることを想定して、
+% フック用の |\setmainlanguage| を定義する。
+% \Note 先に |\setmainlanguage| 以外が実行された場合はエラーになる。
+% \begin{macrocode}
+ \newcommand*\setmainlanguage[2][]{%
+% \end{macrocode}
+% もし、言語名が空の |\setmainlanguage{}| が実行された場合は、
+% |lang=ja| が指定されたと見なす。
+% \begin{macrocode}
+ \ifblank{##2}{%
+ \ClassWarning\bxjs@clsname
+ {Main language is invalid, thus the fallback\MessageBreak
+ definitions will be employed}%
+ \bxjs@pandoc@lang@ja
+% \end{macrocode}
+% 言語名が非空ならば、本来の |polyglossia| の処理を実行する。
+% \begin{macrocode}
+ }{%else
+ \ClassWarning\bxjs@clsname
+ {Main language is valid (##2),\MessageBreak
+ thus polyglossia will be loaded}%
+ \csundef{ver@polyglossia.sty}%
+ \edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@polyglossia@options]{polyglossia}[]%
+ }\bxjs@next
+ \setmainlanguage[##1]{##2}%
+ }}}
+% \end{macrocode}
+%
+% プレアンブルで |polyglossia| の読込が指示されなかった場合、
+% Polyglossiaと連携するパッケージの誤動作を防ぐため、
+% 読込済マークを外す。
+% \begin{macrocode}
+\g@addto@macro\bxjs@endpreamble@hook{%
+ \ifx\bxjs@polyglossia@options\relax
+ \csundef{ver@polyglossia.sty}%
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@pandoc@lang@ja}
+% Pandoc側で |lang=ja| が指定されていた場合の処理。
+% この場合はPolyglossiaの処理を無効化するためにダミーの定義を行う。
+% その時点でダミーの |\setotherlanguage(s)| を定義する。
+% \begin{macrocode}
+\@onlypreamble\bxjs@pandoc@lang@ja
+\def\bxjs@pandoc@lang@ja{%
+ \renewcommand*\setmainlanguage[2][]{}%
+ \newcommand*\setotherlanguage[2][]{%
+ \ifblank{##2}{}{%else
+ \cslet{##2}\@empty \cslet{end##2}\@empty
+ \cslet{text##2}\@firstofone}}%
+ \newcommand*\setotherlanguages[2][]{%
+ \@for\bxjs@tmpa:={##2}\do{%
+ \setotherlangauge{\bxjs@tmpa}}}%
+% \end{macrocode}
+% Polyglossiaの読込済マークは外れるようにしておく。
+% \begin{macrocode}
+ \let\bxjs@polyglossia@options\relax}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+% \paragraph{Babelについて}
+% {\XeTeX}以外の場合。
+% \Note Pandoc 2.6版において、Lua{\TeX}で用いられる多言語パッケージが
+% PolyglossiaからBabelに変更された。
+% \begin{macrocode}
+\if x\jsEngine\else
+% \end{macrocode}
+%
+% パッケージの読込を検知するため読込済のマークを付けて
+% duploadの処理を仕込む。
+% \begin{macrocode}
+\pandocSkipLoadPackage{babel}
+\bxjs@set@dupload@proc{babel.sty}{%
+ \bxjs@unset@dupload@proc{babel.sty}%
+ \ClassWarning\bxjs@clsname
+ {Package babel is required}%
+% \end{macrocode}
+% パッケージオプションに言語名が空の |main=| があるかを調べる。
+% ある場合は |lang=ja| 対策を実行する。
+% \Note |\bxjs@babel@options| には |main=| を除いたオプション列を
+% 格納する。
+% \begin{macrocode}
+ \@tempswafalse \let\bxjs@babel@options\@empty
+ \def\bxjs@tmpb{main=}%
+ \@for\bxjs@tmpa:=#1\do{%
+ \ifx\bxjs@tmpa\bxjs@tmpb \@tempswatrue
+ \else \edef\bxjs@babel@options{\bxjs@babel@options,\bxjs@tmpa}%
+ \fi}%
+ \if@tempswa
+ \ClassWarning\bxjs@clsname
+ {Main language is invalid, so fallback\MessageBreak
+ definitions will be employed}%
+ \bxjs@pandoc@lang@ja
+% \end{macrocode}
+% ない場合は、本来の |babel| の処理を実行する。
+% \begin{macrocode}
+ \else
+ \ClassWarning\bxjs@clsname
+ {Main language is valid,\MessageBreak
+ thus babel will be loaded}%
+ \expandafter\let\csname ver@babel.sty\endcsname\@undefined
+ \RequirePackage[#1]{babel}[]%
+ \fi}
+% \end{macrocode}
+%
+% プレアンブルで |babel| の読込が指示されなかった場合、
+% 読込済マークを外す。
+% \begin{macrocode}
+\g@addto@macro\bxjs@endpreamble@hook{%
+ \ifx\bxjs@babel@options\relax
+ \expandafter\let\csname ver@babel.sty\endcsname\@undefined
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@pandoc@lang@ja}
+% Pandoc側で |lang=ja| が指定されていた場合の処理。
+% \begin{macrocode}
+\@onlypreamble\bxjs@pandoc@lang@ja
+\def\bxjs@pandoc@lang@ja{%
+ \expandafter\let\csname ver@babel.sty\endcsname\@undefined
+ \edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@babel@options,english]{babel}[]%
+ }\bxjs@next
+ \if j\jsEngine
+ \RequirePackage[main=japanese]{pxbabel}[]%
+ \else
+ \RequirePackage{bxorigcapt}[]%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% lang対策はこれで終わり。
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+%\subsection{geometry変数}
+% |geometry| を“再度読み込んだ”場合に、
+% そのパラメタで |\setpagelayout*| が呼ばれるようにする。
+%
+% \begin{macrocode}
+\bxjs@set@dupload@proc{geometry.sty}{%
+ \setpagelayout*{#1}}
+% \end{macrocode}
+%
+%^^A----------------
+%\subsection{CJKmainfont変数}
+% Lua{\TeX}(+ Lua{TeX}-ja)の場合に CJKmainfont 変数が
+% 指定された場合は |\setmainjfont| の指定にまわす。
+% \begin{macrocode}
+\if l\jsEngine
+ \pandocSkipLoadPackage{xeCJK}
+ \providecommand*{\setCJKmainfont}{\setmainjfont}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+%\subsection{paragraphのマーク}
+%
+% BXJSクラスでは |\paragraph| の見出しの前に |\jsParagraphMark|
+% で指定したマークが付加され、既定ではこれは“■”である。
+% しかし、この規定は |\paragraph| が本来のレイアウトを保っている、
+% すなわち「行内見出しである」「節番号が付かない」ことが前提になって
+% いると考えられる。
+% Pandocはこの規定を変更することがある
+% (特に既定で |\paragraph| を別行見出しに再定義する)
+% ため、変更された場合は |\jsParagraphMark| の既定値を空にする。
+%
+% Pandocがプレアンブルで行う再定義の結果を調べるため、
+% begin-documentフックを利用する。
+% \begin{macrocode}
+\g@addto@macro\bxjs@begin@document@hook{%
+ \@tempswafalse
+% \end{macrocode}
+% まず、マーク変更が必要かを調べる。
+% |\oldparagraph| という制御綴が定義済の場合、Pandocが |\paragraph|
+% の様式を変更したということなので、マーク変更が必要である。
+% \begin{macrocode}
+ \ifx\oldparagraph\@undefined\else
+ \@tempswatrue
+ \fi
+% \end{macrocode}
+% |\paragraph| が番号付きの場合は、マーク変更が必要である。
+% \begin{macrocode}
+ \ifnum\c@secnumdepth>3
+ \@tempswatrue
+ \fi
+% \end{macrocode}
+% 「マーク変更が必要」である場合、|\jsParagraphMark| が既定値のままで
+% あれば空に変更する。
+% \begin{macrocode}
+ \if@tempswa\ifx\jsParagraphMark\bxjs@org@paragraph@mark
+ \let\jsParagraphMark\@empty
+ \fi\fi}
+% \end{macrocode}
+%
+%^^A----------------
+%\subsection{全角空白文字}
+%
+% \begin{macrocode}
+\ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi>\z@
+ \catcode"3000=\active
+ \begingroup \catcode`\!=7
+ \protected\gdef!!!!3000{\zwspace}
+ \endgroup
+\else\ifx\DeclareUnicodeCharacter\@undefined\else
+ \DeclareUnicodeCharacter{3000}{\bxjs@zsp@char}
+ \bxjs@protected\def\bxjs@zsp@char{\zwspace}
+\fi\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \paragraph{hyperref対策}
+%
+% |hyperref| の |unicode| オプションの固定を行う。
+% \begin{macrocode}
+\if j\jsEngine
+ \bxjs@fix@hyperref@unicode{false}
+\else
+ \bxjs@fix@hyperref@unicode{true}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{完了}
+% おしまい。
+% \begin{macrocode}
+%</pandoc>
+% \end{macrocode}
+%
+% 和文ドライバ実装はここまで。
+% \begin{macrocode}
+%</drv>
+% \end{macrocode}
+%
+%^^A========================================================
+% \section{補助パッケージ一覧 \ZRX}
+%
+% BXJSクラスの機能を実現するために用意されたものだが、
+% 他のクラスの文書で読み込んで利用することもできる。
+%
+% \begin{itemize}
+% \item bxjscompat : ムニャムニャムニャ。
+% \item bxjscjkcat: modernドライバ用の和文カテゴリを適用する。
+% \item bxjspandoc : Pandoc用のナニカ。
+% \end{itemize}
+%
+% \begin{macrocode}
+%<*anc>
+% \end{macrocode}
+%
+%^^A========================================================
+% \section{補助パッケージ:bxjscompat \ZRX}
+%
+% ムニャムニャムニャ……。
+%
+%^^A----------------
+% \subsection{準備}
+%
+% \begin{macrocode}
+%<*compat>
+\def\bxac@pkgname{bxjscompat}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjx@engine}
+% エンジンの種別。
+% \begin{macrocode}
+\let\bxac@engine=n
+\def\bxac@do#1#2{%
+ \edef\bxac@tmpa{\string#1}%
+ \edef\bxac@tmpb{\meaning#1}%
+ \ifx\bxac@tmpa\bxac@tmpb #2\fi}
+\bxac@do\XeTeXversion{\let\bxac@engine=x}
+\bxac@do\luatexversion{\let\bxac@engine=l}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxac@delayed@if@bxjs}
+% もしBXJSクラスの読込中でこのパッケージが読み込まれているならば、
+% BXJSのクラスの終わりまで実行を遅延する。
+% \begin{macrocode}
+\ifx\jsAtEndOfClass\@undefined
+ \let\bxac@delayed@if@bxjs\@firstofone
+\else \let\bxac@delayed@if@bxjs\jsAtEndOfClass
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ImposeOldLuaTeXBehavior}
+% \begin{macro}{\RevokeOldLuaTeXBehavior}
+% ムニャムニャ。
+% \begin{macrocode}
+\newif\ifbxac@in@old@behavior
+\let\ImposeOldLuaTeXBehavior\relax
+\let\RevokeOldLuaTeXBehavior\relax
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%^^A----------------
+% \subsection{{\XeTeX}部分}
+% \begin{macrocode}
+\ifx x\bxac@engine
+% \end{macrocode}
+%
+% {\XeTeX}文字クラスのムニャムニャ。
+% \begin{macrocode}
+\@onlypreamble\bxac@adjust@charclass
+\bxac@delayed@if@bxjs{%
+ \@ifpackageloaded{xeCJK}{}{%else
+ \ifx\xe@alloc@intercharclass\@undefined\else
+ \ifnum\xe@alloc@intercharclass=\z@
+ \PackageInfo\bxac@pkgname
+ {Setting up interchar class for CJK...\@gobble}%
+ \InputIfFileExists{load-unicode-xetex-classes.tex}{%
+ \xe@alloc@intercharclass=3
+ }{%else
+ \PackageWarning\bxac@pkgname
+ {Cannot find file 'load-unicode-xetex-classes.tex'%
+ \@gobble}%
+ }%
+ \fi\fi
+ \ifnum\XeTeXcharclass"3041=\z@
+ \PackageInfo\bxac@pkgname
+ {Adjusting interchar class for CJK...\@gobble}%
+ \@for\bxac@x:={%
+ 3041,3043,3045,3047,3049,3063,3083,3085,3087,308E,%
+ 3095,3096,30A1,30A3,30A5,30A7,30A9,30C3,30E3,30E5,%
+ 30E7,30EE,30F5,30F6,30FC,31F0,31F1,31F2,31F3,31F4,%
+ 31F5,31F6,31F7,31F8,31F9,31FA,31FB,31FC,31FD,31FE,%
+ 31FF%
+ }\do{\XeTeXcharclass"\bxac@x=\@ne}%
+ \fi
+ }%
+}
+% \end{macrocode}
+% 以上。
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{Lua{\TeX}部分}
+% \begin{macrocode}
+\ifx l\bxac@engine
+% \end{macrocode}
+%
+% ムニャムニャ。
+% \begin{macrocode}
+\unless\ifnum\luatexversion<80 \ifnum\luatexversion<85
+ \chardef\pdftexversion=200
+ \def\pdftexrevision{0}
+ \let\pdftexbanner\luatexbanner
+\fi\fi
+% \end{macrocode}
+%
+% \begin{macro}{\ImposeOldLuaTeXBehavior}
+% \begin{macro}{\RevokeOldLuaTeXBehavior}
+% ムニャムニャ。
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname outputmode\endcsname\relax\else
+\def\bxac@ob@list{%
+ \do{\let}\pdfoutput{\outputmode}%
+ \do{\let}\pdfpagewidth{\pagewidth}%
+ \do{\let}\pdfpageheight{\pageheight}%
+ \do{\protected\edef}\pdfhorigin{{\pdfvariable horigin}}%
+ \do{\protected\edef}\pdfvorigin{{\pdfvariable vorigin}}}
+\def\bxac@ob@do#1#2{\begingroup
+ \expandafter\bxac@ob@do@a\csname bxac@\string#2\endcsname{#1}#2}
+\def\bxac@ob@do@a#1#2#3#4{\endgroup
+ \ifbxac@in@old@behavior \let#1#3\relax #2#3#4\relax
+ \else \let#3#1\relax \let#1\@undefined
+ \fi}
+\protected\def\ImposeOldLuaTeXBehavior{%
+ \unless\ifbxac@in@old@behavior
+ \bxac@in@old@behaviortrue
+ \let\do\bxac@ob@do \bxac@ob@list
+ \fi}
+\protected\def\RevokeOldLuaTeXBehavior{%
+ \ifbxac@in@old@behavior
+ \bxac@in@old@behaviorfalse
+ \let\do\bxac@ob@do \bxac@ob@list
+ \fi}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% 漢字および完成形ハングルのカテゴリコードのムニャムニャ。
+% \begin{macrocode}
+ \ifnum\luatexversion>64 \directlua{
+ local function range(cs, ce, cc, ff)
+ if ff or not tex.getcatcode(cs) == cc then
+ local setcc = tex.setcatcode
+ for c = cs, ce do setcc(c, cc) end
+ end
+ end
+ range(0x3400, 0x4DB5, 11, false)
+ range(0x4DB5, 0x4DBF, 11, true)
+ range(0x4E00, 0x9FCC, 11, false)
+ range(0x9FCD, 0x9FFF, 11, true)
+ range(0xAC00, 0xD7A3, 11, false)
+ range(0x20000, 0x2A6D6, 11, false)
+ range(0x2A6D7, 0x2A6FF, 11, true)
+ range(0x2A700, 0x2B734, 11, false)
+ range(0x2B735, 0x2B73F, 11, true)
+ range(0x2B740, 0x2B81D, 11, false)
+ range(0x2B81E, 0x2B81F, 11, true)
+ range(0x2B820, 0x2CEA1, 11, false)
+ range(0x2CEA2, 0x2FFFD, 11, true)
+ }\fi
+% \end{macrocode}
+%
+% 以上。
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{完了}
+% おしまい。
+% \begin{macrocode}
+%</compat>
+% \end{macrocode}
+%
+%^^A========================================================
+% \section{補助パッケージ:bxjscjkcat \ZRX}
+%
+% modernドライバ用の和文カテゴリを適用する。
+%
+%^^A----------------
+% \subsection{準備}
+%
+% \begin{macrocode}
+%<*cjkcat>
+\def\bxjx@pkgname{bxjscjkcat}
+\newcount\bxjx@cnta
+\@onlypreamble\bxjx@tmpdo
+\@onlypreamble\bxjx@tmpdo@a
+\@onlypreamble\bxjx@tmpdo@b
+% \end{macrocode}
+%
+% \begin{macro}{\bxjx@engine}
+% エンジンの種別。
+% \begin{macrocode}
+\let\bxjx@engine=n
+\def\bxjx@tmpdo#1#2{%
+ \edef\bxjx@tmpa{\string#1}%
+ \edef\bxjx@tmpb{\meaning#1}%
+ \ifx\bxjx@tmpa\bxjx@tmpb #2\fi}
+\bxjx@tmpdo\kanjiskip{\let\bxjx@engine=j}
+\bxjx@tmpdo\enablecjktoken{\let\bxjx@engine=u}
+\bxjx@tmpdo\XeTeXversion{\let\bxjx@engine=x}
+\bxjx@tmpdo\pdftexversion{\let\bxjx@engine=p}
+\bxjx@tmpdo\luatexversion{\let\bxjx@engine=l}
+% \end{macrocode}
+% \end{macro}
+%
+% それぞれのエンジンで、前提となる日本語処理パッケージが実際に
+% 読み込まれているかを検査する。
+% \begin{macrocode}
+\def\bxjx@tmpdo#1#2{%
+ \if#1\bxjx@engine
+ \@ifpackageloaded{#2}{}{%else
+ \PackageError\bxjx@pkgname
+ {Package '#2' must be loaded}%
+ {Package loading is aborted.\MessageBreak\@ehc}%
+ \endinput}
+ \fi}
+\bxjx@tmpdo{p}{bxcjkjatype}
+\bxjx@tmpdo{x}{xeCJK}
+\bxjx@tmpdo{l}{luatexja}
+% \end{macrocode}
+%
+% 古い{\LaTeX}の場合、|\TextOrMath| は |fixltx2e| パッケージで
+% 提供される。
+% \begin{macrocode}
+\ifx\TextOrMath\@undefined
+ \RequirePackage{fixltx2e}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{和文カテゴリコードの設定}
+%
+% up{\LaTeX}の場合、和文カテゴリコードの設定を
+% Lua{\TeX}-jaと(ほぼ)等価なものに変更する。
+%
+% \Note Lua{\TeX}-jaとの相違点:
+% |A830|、|A960|、|1B000|。
+% \begin{macrocode}
+\if u\bxjx@engine
+\@for\bxjx@tmpa:={%
+0080,0100,0180,0250,02B0,0300,0500,0530,0590,0600,%
+0700,0750,0780,07C0,0800,0840,0860,08A0,0900,0980,%
+0A00,0A80,0B00,0B80,0C00,0C80,0D00,0D80,0E00,0E80,%
+0F00,1000,10A0,1200,1380,13A0,1400,1680,16A0,1700,%
+1720,1740,1760,1780,1800,18B0,1900,1950,1980,19E0,%
+1A00,1A20,1AB0,1B00,1B80,1BC0,1C00,1C50,1C80,1CC0,%
+1CD0,1D00,1D80,1DC0,1E00,1F00,2440,27C0,27F0,2800,%
+2A00,2C00,2C60,2C80,2D00,2D30,2D80,2DE0,2E00,4DC0,%
+A4D0,A500,A640,A6A0,A700,A720,A800,A830,A840,A880,%
+A8E0,A900,A930,A980,A9E0,AA00,AA60,AA80,AAE0,AB00,%
+AB30,AB70,ABC0,D800,DB80,DC00,E000,FB00,FB50,FE00,%
+FE70,FFF0,%
+10000,10080,10100,10140,10190,101D0,10280,102A0,%
+102E0,10300,10330,10350,10380,103A0,10400,10450,%
+10480,104B0,10500,10530,10600,10800,10840,10860,%
+10880,108E0,10900,10920,10980,109A0,10A00,10A60,%
+10A80,10AC0,10B00,10B40,10B60,10B80,10C00,10C80,%
+10E60,11000,11080,110D0,11100,11150,11180,111E0,%
+11200,11280,112B0,11300,11400,11480,11580,11600,%
+11660,11680,11700,118A0,11A00,11A50,11AC0,11C00,%
+11C70,11D00,12000,12400,12480,13000,14400,16800,%
+16A40,16AD0,16B00,16F00,1BC00,1BCA0,1D000,1D100,%
+1D200,1D300,1D360,1D400,1D800,1E000,1E800,1E900,%
+1EE00,1F000,1F030,1F0A0,1F300,1F600,1F650,1F680,%
+1F700,1F780,1F800,1F900,E0000,E0100,F0000,100000,%
+00C0%
+}\do{%
+\@tempcnta="\bxjx@tmpa\relax
+\@tempcntb\@tempcnta \advance\@tempcntb\m@ne
+\chardef\bxjx@tmpb\kcatcode\@tempcntb
+\kcatcode\@tempcnta=15 \kcatcode\@tempcntb\bxjx@tmpb}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{ギリシャ・キリル文字の扱い}
+%
+% 「特定CJK曖昧文字」について、和文・欧文扱いを制御できるようにする。
+% ここで\textbf{「特定CJK曖昧文字」}とは以下に該当する文字の集合を指す:
+% \begin{itemize}
+% \item UnicodeとJIS X~0213に共通して含まれるギリシャ文字・キリル文字。
+% \item Latin-1の上位部分とJIS X~0208に共通して含まれる文字
+% (Lua{\TeX}-jaの定める“範囲8”)。
+% \end{itemize}
+%
+% \begin{macro}{\bxjx@grkcyr@list}
+% 「特定CJK曖昧文字」に関する情報をもつ\,|\do|-リスト。
+% 各項目の形式は以下の通り:\\
+% |\do{|\Meta{Unicode符号値}|}{|\Meta{対象fontenc}|}{|^^A
+% \Meta{テキストLICR}|}{|\Meta{数式LICR}|}|
+% \Note 数式で使わない文字は \Meta{数式LICR} を空にする。
+% \begin{macrocode}
+\@onlypreamble\bxjx@grkcyr@list
+\def\bxjx@grkcyr@list{%
+\do{0391}{LGR}{\textAlpha}{A}% % GR. C. L. ALPHA
+\do{0392}{LGR}{\textBeta}{B}% % GR. C. L. BETA
+\do{0393}{LGR}{\textGamma}{\Gamma}% % GR. C. L. GAMMA
+\do{0394}{LGR}{\textDelta}{\Delta}% % GR. C. L. DELTA
+\do{0395}{LGR}{\textEpsilon}{E}% % GR. C. L. EPSILON
+\do{0396}{LGR}{\textZeta}{Z}% % GR. C. L. ZETA
+\do{0397}{LGR}{\textEta}{H}% % GR. C. L. ETA
+\do{0398}{LGR}{\textTheta}{\Theta}% % GR. C. L. THETA
+\do{0399}{LGR}{\textIota}{I}% % GR. C. L. IOTA
+\do{039A}{LGR}{\textKappa}{K}% % GR. C. L. KAPPA
+\do{039B}{LGR}{\textLambda}{\Lambda}% % GR. C. L. LAMDA
+\do{039C}{LGR}{\textMu}{M}% % GR. C. L. MU
+\do{039D}{LGR}{\textNu}{N}% % GR. C. L. NU
+\do{039E}{LGR}{\textXi}{\Xi}% % GR. C. L. XI
+\do{039F}{LGR}{\textOmicron}{O}% % GR. C. L. OMICRON
+\do{03A0}{LGR}{\textPi}{\Pi}% % GR. C. L. PI
+\do{03A1}{LGR}{\textRho}{P}% % GR. C. L. RHO
+\do{03A3}{LGR}{\textSigma}{\Sigma}% % GR. C. L. SIGMA
+\do{03A4}{LGR}{\textTau}{T}% % GR. C. L. TAU
+\do{03A5}{LGR}{\textUpsilon}{\Upsilon}% % GR. C. L. UPSILON
+\do{03A6}{LGR}{\textPhi}{\Phi}% % GR. C. L. PHI
+\do{03A7}{LGR}{\textChi}{X}% % GR. C. L. CHI
+\do{03A8}{LGR}{\textPsi}{\Psi}% % GR. C. L. PSI
+\do{03A9}{LGR}{\textOmega}{\Omega}% % GR. C. L. OMEGA
+\do{03B1}{LGR}{\textalpha}{\alpha}% % GR. S. L. ALPHA
+\do{03B2}{LGR}{\textbeta}{\beta}% % GR. S. L. BETA
+\do{03B3}{LGR}{\textgamma}{\gamma}% % GR. S. L. GAMMA
+\do{03B4}{LGR}{\textdelta}{\delta}% % GR. S. L. DELTA
+\do{03B5}{LGR}{\textepsilon}{\epsilon}% % GR. S. L. EPSILON
+\do{03B6}{LGR}{\textzeta}{\zeta}% % GR. S. L. ZETA
+\do{03B7}{LGR}{\texteta}{\eta}% % GR. S. L. ETA
+\do{03B8}{LGR}{\texttheta}{\theta}% % GR. S. L. THETA
+\do{03B9}{LGR}{\textiota}{\iota}% % GR. S. L. IOTA
+\do{03BA}{LGR}{\textkappa}{\kappa}% % GR. S. L. KAPPA
+\do{03BB}{LGR}{\textlambda}{\lambda}% % GR. S. L. LAMDA
+\do{03BC}{LGR}{\textmu}{\mu}% % GR. S. L. MU
+\do{03BD}{LGR}{\textnu}{\nu}% % GR. S. L. NU
+\do{03BE}{LGR}{\textxi}{\xi}% % GR. S. L. XI
+\do{03BF}{LGR}{\textomicron}{o}% % GR. S. L. OMICRON
+\do{03C0}{LGR}{\textpi}{\pi}% % GR. S. L. PI
+\do{03C1}{LGR}{\textrho}{\rho}% % GR. S. L. RHO
+\do{03C2}{LGR}{\textvarsigma}{\varsigma}% % GR. S. L. FINAL SIGMA
+\do{03C3}{LGR}{\textsigma}{\sigma}% % GR. S. L. SIGMA
+\do{03C4}{LGR}{\texttau}{\tau}% % GR. S. L. TAU
+\do{03C5}{LGR}{\textupsilon}{\upsilon}% % GR. S. L. UPSILON
+\do{03C6}{LGR}{\textphi}{\phi}% % GR. S. L. PHI
+\do{03C7}{LGR}{\textchi}{\chi}% % GR. S. L. CHI
+\do{03C8}{LGR}{\textpsi}{\psi}% % GR. S. L. PSI
+\do{03C9}{LGR}{\textomega}{\omega}% % GR. S. L. OMEGA
+\do{0401}{T2A}{\CYRYO}{}% % CY. C. L. IO
+\do{0410}{T2A}{\CYRA}{}% % CY. C. L. A
+\do{0411}{T2A}{\CYRB}{}% % CY. C. L. BE
+\do{0412}{T2A}{\CYRV}{}% % CY. C. L. VE
+\do{0413}{T2A}{\CYRG}{}% % CY. C. L. GHE
+\do{0414}{T2A}{\CYRD}{}% % CY. C. L. DE
+\do{0415}{T2A}{\CYRE}{}% % CY. C. L. IE
+\do{0416}{T2A}{\CYRZH}{}% % CY. C. L. ZHE
+\do{0417}{T2A}{\CYRZ}{}% % CY. C. L. ZE
+\do{0418}{T2A}{\CYRI}{}% % CY. C. L. I
+\do{0419}{T2A}{\CYRISHRT}{}% % CY. C. L. SHORT I
+\do{041A}{T2A}{\CYRK}{}% % CY. C. L. KA
+\do{041B}{T2A}{\CYRL}{}% % CY. C. L. EL
+\do{041C}{T2A}{\CYRM}{}% % CY. C. L. EM
+\do{041D}{T2A}{\CYRN}{}% % CY. C. L. EN
+\do{041E}{T2A}{\CYRO}{}% % CY. C. L. O
+\do{041F}{T2A}{\CYRP}{}% % CY. C. L. PE
+\do{0420}{T2A}{\CYRR}{}% % CY. C. L. ER
+\do{0421}{T2A}{\CYRS}{}% % CY. C. L. ES
+\do{0422}{T2A}{\CYRT}{}% % CY. C. L. TE
+\do{0423}{T2A}{\CYRU}{}% % CY. C. L. U
+\do{0424}{T2A}{\CYRF}{}% % CY. C. L. EF
+\do{0425}{T2A}{\CYRH}{}% % CY. C. L. HA
+\do{0426}{T2A}{\CYRC}{}% % CY. C. L. TSE
+\do{0427}{T2A}{\CYRCH}{}% % CY. C. L. CHE
+\do{0428}{T2A}{\CYRSH}{}% % CY. C. L. SHA
+\do{0429}{T2A}{\CYRSHCH}{}% % CY. C. L. SHCHA
+\do{042A}{T2A}{\CYRHRDSN}{}% % CY. C. L. HARD SIGN
+\do{042B}{T2A}{\CYRERY}{}% % CY. C. L. YERU
+\do{042C}{T2A}{\CYRSFTSN}{}% % CY. C. L. SOFT SIGN
+\do{042D}{T2A}{\CYREREV}{}% % CY. C. L. E
+\do{042E}{T2A}{\CYRYU}{}% % CY. C. L. YU
+\do{042F}{T2A}{\CYRYA}{}% % CY. C. L. YA
+\do{0430}{T2A}{\cyra}{}% % CY. S. L. A
+\do{0431}{T2A}{\cyrb}{}% % CY. S. L. BE
+\do{0432}{T2A}{\cyrv}{}% % CY. S. L. VE
+\do{0433}{T2A}{\cyrg}{}% % CY. S. L. GHE
+\do{0434}{T2A}{\cyrd}{}% % CY. S. L. DE
+\do{0435}{T2A}{\cyre}{}% % CY. S. L. IE
+\do{0436}{T2A}{\cyrzh}{}% % CY. S. L. ZHE
+\do{0437}{T2A}{\cyrz}{}% % CY. S. L. ZE
+\do{0438}{T2A}{\cyri}{}% % CY. S. L. I
+\do{0439}{T2A}{\cyrishrt}{}% % CY. S. L. SHORT I
+\do{043A}{T2A}{\cyrk}{}% % CY. S. L. KA
+\do{043B}{T2A}{\cyrl}{}% % CY. S. L. EL
+\do{043C}{T2A}{\cyrm}{}% % CY. S. L. EM
+\do{043D}{T2A}{\cyrn}{}% % CY. S. L. EN
+\do{043E}{T2A}{\cyro}{}% % CY. S. L. O
+\do{043F}{T2A}{\cyrp}{}% % CY. S. L. PE
+\do{0440}{T2A}{\cyrr}{}% % CY. S. L. ER
+\do{0441}{T2A}{\cyrs}{}% % CY. S. L. ES
+\do{0442}{T2A}{\cyrt}{}% % CY. S. L. TE
+\do{0443}{T2A}{\cyru}{}% % CY. S. L. U
+\do{0444}{T2A}{\cyrf}{}% % CY. S. L. EF
+\do{0445}{T2A}{\cyrh}{}% % CY. S. L. HA
+\do{0446}{T2A}{\cyrc}{}% % CY. S. L. TSE
+\do{0447}{T2A}{\cyrch}{}% % CY. S. L. CHE
+\do{0448}{T2A}{\cyrsh}{}% % CY. S. L. SHA
+\do{0449}{T2A}{\cyrshch}{}% % CY. S. L. SHCHA
+\do{044A}{T2A}{\cyrhrdsn}{}% % CY. S. L. HARD SIGN
+\do{044B}{T2A}{\cyrery}{}% % CY. S. L. YERU
+\do{044C}{T2A}{\cyrsftsn}{}% % CY. S. L. SOFT SIGN
+\do{044D}{T2A}{\cyrerev}{}% % CY. S. L. E
+\do{044E}{T2A}{\cyryu}{}% % CY. S. L. YU
+\do{044F}{T2A}{\cyrya}{}% % CY. S. L. YA
+\do{0451}{T2A}{\cyryo}{}% % CY. S. L. IO
+\do{00A7}{TS1}{\textsection}{\mathsection}% SECTION SYMBOL
+\do{00A8}{TS1}{\textasciidieresis}{}% % DIAERESIS
+\do{00B0}{TS1}{\textdegree}{\mathdegree}% % DEGREE SIGN
+\do{00B1}{TS1}{\textpm}{\pm}% % PLUS-MINUS SIGN
+\do{00B4}{TS1}{\textasciiacute}{}% % ACUTE ACCENT
+\do{00B6}{TS1}{\textparagraph}{\mathparagraph}% PILCROW SIGN
+\do{00D7}{TS1}{\texttimes}{\times}% % MULTIPLICATION SIGN
+\do{00F7}{TS1}{\textdiv}{\div}% % DIVISION SIGN
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\mathdegree}
+% 面倒なので補っておく。
+% \begin{macrocode}
+\providecommand*{\mathdegree}{{}^{\circ}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjx@gcc@cjk}
+% 〔スイッチ〕
+% 「特定CJK曖昧文字」を和文扱いにするか。
+% \begin{macrocode}
+\newif\ifbxjx@gcc@cjk
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\greekasCJK}
+% 〔公開命令〕
+% 「特定CJK曖昧文字」を和文扱いにする。
+% \begin{macrocode}
+\newcommand*\greekasCJK{%
+ \bxjx@gcc@cjktrue}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\nogreekasCJK}
+% 〔公開命令〕
+% 「特定CJK曖昧文字」を欧文扱いにする。
+% \begin{macrocode}
+\newcommand*\nogreekasCJK{%
+ \bxjx@gcc@cjkfalse}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjx@fake@grk}
+% |\bxjx@fake@grk{|\Meta{出力文字}|}{|\Meta{基準文字}|}|\Means
+% ラテン文字で代用される数式ギリシャ文字の出力を行う。
+% \Meta{基準文字}(mathchardefの制御綴)の数式クラスと数式ファミリを
+% 引き継いで、\Meta{出力文字}(ASCII文字トークン)の文字コードの
+% 数式文字を出力する。
+% 例えば、|\Pi| の意味が |\mathchar"7005| である場合、
+% |\bxjx@fake@grk{B}{\Pi}| は |\mathchar"7042| を実行する。
+% \Note フォントパッケージ使用時の再定義を考慮して、\Meta{基準文字}が
+% mathchardefであるかを検査し、そうでない場合はフォールバックとして
+% 単に\Meta{出力文字}を実行する。
+% \begin{macrocode}
+\def\bxjx@tmpdo#1\relax{%
+ \def\bxjx@fake@grk##1##2{%
+ \expandafter\bxjx@fake@grk@a\meaning##2#1\@nil{##1}{##2}}%
+ \def\bxjx@fake@grk@a##1#1##2\@nil##3##4{%
+ \ifx\\##1\\%
+ \bxjx@cnta##4\divide\bxjx@cnta\@cclvi
+ \multiply\bxjx@cnta\@cclvi \advance\bxjx@cnta`##3\relax
+ \mathchar\bxjx@cnta
+ \else ##3\fi}
+}\expandafter\bxjx@tmpdo\string\mathchar\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{pdf{\TeX}・{\upTeX}の場合}
+% \begin{macrocode}
+\ifnum0\if p\bxjx@engine1\fi\if u\bxjx@engine1\fi>0
+% \end{macrocode}
+% \begin{itemize}
+% \item |\|[|bxjx@KC/|\Meta{符号値}]\Means
+% その文字が「特定曖昧CJK文字」に該当する場合に定義済になる。
+% \end{itemize}
+%
+% まず |inputenc| を読み込んで入力エンコーディングを |utf8|
+% に変更する。
+% \Note 「既定UTF-8化」後の{\LaTeX}においても、必ず
+% 「|inputenc| が明示的に読み込まれた」状態になる。
+% \begin{macrocode}
+\@ifpackageloaded{inputenc}{}{%else
+ \RequirePackage[utf8]{inputenc}}
+\def\bxjx@tmpa{utf8}
+\ifx\bxjx@tmpa\inputencdoingname
+ \PackageWarningNoLine\bxjx@pkgname
+ {Input encoding changed to utf8}%
+ \inputencoding{utf8}%
+\fi
+% \end{macrocode}
+%
+% {\upTeX}の場合に、「特定曖昧CJK文字」を含む
+% ブロックの和文カテゴリコードを変更する。
+% \begin{macrocode}
+\if u\bxjx@engine
+\kcatcode"0370=15
+\kcatcode"0400=15
+\kcatcode"0500=15
+\fi
+% \end{macrocode}
+% 各文字について |\DeclareUnicodeCharacter| を実行する。
+% \begin{macrocode}
+\def\bxjx@tmpdo#1{%
+ \@tempcnta="#1\relax
+ \expandafter\bxjx@tmpdo@a\csname bxjx@KC/\the\@tempcnta\endcsname{#1}}
+\def\bxjx@tmpdo@a#1#2#3#4#5{%
+% \end{macrocode}
+% 引数\,=\,|\|[|bxjx@KC/|\Meta{符号値}]|{|\Meta{符号値}|}{|^^A
+% \Meta{fontenc}|}{|\Meta{LICR}|}{|\Meta{数式LICR}|}|
+%
+% “数式中の動作”を決定する。
+% \Meta{数式LICR}が空(数式非対応)なら警告を出す。
+% \begin{macrocode}
+ \ifx\\#5\\%
+ \def\bxjx@tmpa{\@inmathwarn#4}%
+% \end{macrocode}
+% \Meta{数式LICR}が英字である場合は |\bxjx@fake@grk| で出力する。
+% 大文字なら |\Pi|、小文字なら |\pi| を基準文字にする。
+% \begin{macrocode}
+ \else\ifcat A\noexpand#5%
+ \edef\bxjx@tmpa{\noexpand\bxjx@fake@grk{#5}%
+ {\ifnum\uccode`#5=`#5\noexpand\Pi\else\noexpand\pi\fi}}%
+% \end{macrocode}
+% それ以外は\Meta{数式LICR}をそのまま実行する。
+% \begin{macrocode}
+ \else \def\bxjx@tmpa{#5}%
+ \fi\fi
+ \def\bxjx@tmpb{\bxjx@tmpdo@b{#1}{#2}{#3}{#4}}%
+ \expandafter\bxjx@tmpb\expandafter{\bxjx@tmpa}}
+% \end{macrocode}
+% 以降はエンジン種別で分岐する。
+% {\upTeX}の場合。
+% \begin{macrocode}
+\if u\bxjx@engine
+\def\bxjx@tmpdo@b#1#2#3#4#5{%
+% \end{macrocode}
+% 引数\,=\,|\|[|bxjx@KC/|\Meta{符号値}]|{|\Meta{符号値}|}{|^^A
+% \Meta{fontenc}|}{|\Meta{LICR}|}{|\Meta{数式中の動作}|}|
+%
+% 当該のUnicode文字の動作は「テキストでは\Meta{LICR}、数式では
+% \Meta{数式中の動作}」となる。
+% LICRは現在エンコーディングで有効な定義がある場合はそれが実行
+% されるはずである。
+% (つまり、現在がLGRである場合はギリシャ文字は常に欧文扱いになる。)
+% それ以外の場合はLICRを |\bxjx@ja@or@not| に帰着させる。
+% この際に、和文用の定義として当該のkchardefを使用し、その制御綴と
+% して |\|[|bxjx@KC/...|] を流用している。
+% \begin{macrocode}
+ \kchardef#1=\@tempcnta
+ \DeclareTextCommandDefault{#4}{\bxjx@ja@or@not{#1}{#3}{#4}}%
+ \DeclareUnicodeCharacter{#2}{\TextOrMath{#4}{#5}}}
+% \end{macrocode}
+% {pdf\TeX}の場合も処理はほとんど同じ。
+% ただし、和文用の定義として |\UTF{|\Meta{符号値}|}| を使う
+% (|\UTF| は |bxcjkjatype| の命令)。
+% |\|[|bxjx@KC/...|] は使わないが定義済にする必要がある。
+% \begin{macrocode}
+\else\if p\bxjx@engine
+\def\bxjx@tmpdo@b#1#2#3#4#5{%
+ \mathchardef#1=\@tempcnta
+ \DeclareTextCommandDefault{#4}{\bxjx@ja@or@not{\UTF{#2}}{#3}{#4}}%
+ \DeclareUnicodeCharacter{#2}{\TextOrMath{#4}{#5}}}
+\fi\fi
+% \end{macrocode}
+% 以上の処理を「特定CJK曖昧文字」の各々に適用する。
+% \begin{macrocode}
+\let\do\bxjx@tmpdo \bxjx@grkcyr@list
+% \end{macrocode}
+%
+% \begin{macro}{\bxjx@DeclareUnicodeCharacter}
+% |\bxjx@DeclareUnicodeCharacter| を改変して、
+% 「特定CJK曖昧文字」の場合に再定義を抑止したもの。
+% \begin{macrocode}
+\@onlypreamble\bxjx@org@DeclareUnicodeCharacter
+\let\bxjx@org@DeclareUnicodeCharacter\DeclareUnicodeCharacter
+\@onlypreamble\bxjx@DeclareUnicodeCharacter
+\def\bxjx@DeclareUnicodeCharacter#1#2{%
+ \count@="#1\relax
+ \expandafter\ifx\csname bxjx@KC/\the\count@\endcsname\relax
+ \bxjx@org@DeclareUnicodeCharacter{#1}{#2}%
+ \else
+ \wlog{ \space\space skipped defining Unicode char U+#1}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjx@ja@or@not}
+% |\bxjx@ja@or@not{|\Meta{和文用定義}|}{|\Meta{対象fontenc}|}{|^^A
+% \Meta{LICR}|}|\Means
+% |\|[|no|]|greekasCJK| の状態に応じて和文または欧文で文字を出力する。
+% \begin{macrocode}
+\def\bxjx@ja@or@not#1#2#3{%
+% \end{macrocode}
+% |\greekasCJK| の場合は、無条件に\Meta{和文用定義}を実行する。
+% \begin{macrocode}
+ \ifbxjx@gcc@cjk #1%
+% \end{macrocode}
+% |\nogreekasCJK| の場合は、対象のエンコーディングに変更してLICRを
+% 実行するが、そのエンコーディングが未定義の場合は
+% (フォールバックとして)和文用定義を使う。
+% \begin{macrocode}
+ \else\expandafter\ifx\csname T@#2\endcsname\relax #1%
+ \else \UseTextSymbol{#2}{#3}%
+ \fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DeclareFontEncoding@}
+% |\DeclareFontEncoding@| にパッチを当てて、
+% |\DeclareFontEncoding| の実行中だけ
+% 改変後の |\DeclareUnicodeCharacter| が使われるようにする。
+% \begin{macrocode}
+\begingroup
+\toks@\expandafter{\DeclareFontEncoding@{#1}{#2}{#3}}
+\xdef\next{\def\noexpand\DeclareFontEncoding@##1##2##3{%
+ \noexpand\bxjx@swap@DUC@cmd
+ \the\toks@
+ \noexpand\bxjx@swap@DUC@cmd}}
+\endgroup\next
+\def\bxjx@swap@DUC@cmd{%
+ \let\bxjx@tmpa\DeclareUnicodeCharacter
+ \let\DeclareUnicodeCharacter\bxjx@DeclareUnicodeCharacter
+ \let\bxjx@DeclareUnicodeCharacter\bxjx@tmpa
+ \let\bxjx@tmpa\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% 以上。
+%
+% \paragraph{{\XeTeX}・Lua{\TeX}の場合}
+% \begin{macrocode}
+\else\ifnum0\if x\bxjx@engine1\fi\if l\bxjx@engine1\fi>0
+% \end{macrocode}
+%
+% 各文字について、数式中の動作を定義する。
+% \begin{macrocode}
+\def\bxjx@tmpdo#1{%
+ \bxjx@cnta="#1\relax
+ \begingroup
+ \lccode`~=\bxjx@cnta
+ \lowercase{\endgroup
+ \bxjx@tmpdo@a{~}}{#1}}
+\def\bxjx@tmpdo@a#1#2#3#4#5{%
+% \end{macrocode}
+% \Meta{数式LICR}が空なら何もしない。
+% 空でない場合、{up\LaTeX}の場合と同じ方法で“数式中の動作”を決定し、
+% 当該の文字をmath activeにしてその動作を設定する。
+% \begin{macrocode}
+ \ifx\\#5\\\let\bxjx@tmpa\relax
+ \else\ifcat A\noexpand#5%
+ \edef\bxjx@tmpa{\noexpand\bxjx@fake@grk{#5}%
+ {\ifnum\uccode`#5=`#5\noexpand\Pi\else\noexpand\pi\fi}}%
+ \else \def\bxjx@tmpa{#5}%
+ \fi\fi
+ \ifx\bxjx@tmpa\relax\else
+ \mathcode\bxjx@cnta"8000 \let#1\bxjx@tmpa
+ \fi}
+% \end{macrocode}
+% 「Unicodeな数式」の設定が行われているかを(簡易的に)検査して、
+% そうでない場合にのみ、以上の処理を「特定CJK曖昧文字」の各々に適用する。
+% \begin{macrocode}
+\mathchardef\bxjx@tmpa="119
+\ifx\bxjx@tmpa\pi \let\do\bxjx@tmpdo \bxjx@grkcyr@list \fi
+% \end{macrocode}
+%
+% 次に、テキストにおいて「特定CJK曖昧文字」の扱いが |\|[|no|]|greekasCJK|
+% で切り替わるようにする。
+%
+% Lua{\TeX}の場合は、Lua{\TeX}-jaの |jacharrange| の設定を変更する。
+% \Note “範囲2”がギリシャ・キリル文字、“範囲8”がLatin-1の記号。
+% \begin{macrocode}
+\if l\bxjx@engine
+ \protected\def\greekasCJK{%
+ \bxjx@gcc@cjktrue
+ \ltjsetparameter{jacharrange={+2, +8}}}
+ \protected\def\nogreekasCJK{%
+ \bxjx@gcc@cjkfalse
+ \ltjsetparameter{jacharrange={-2, -8}}}
+\fi
+% \end{macrocode}
+%
+% {\XeTeX}の場合、|xeCJK| は{\XeTeX}の文字クラス定義を参照して
+% いるので、対象文字の文字クラスを変更する。
+% \begin{macrocode}
+\if x\bxjx@engine
+ \let\bxjx@gcc@cjk@list\@empty
+ \def\do#1#2#3#4{%
+ \edef\bxjx@gcc@cjk@list{\bxjx@gcc@cjk@list
+ \noexpand\XeTeXcharclass"#1\bxjx@cnta}}
+ \bxjx@grkcyr@list
+ \protected\def\greekasCJK{%
+ \bxjx@gcc@cjktrue
+ \bxjx@cnta=\@ne \bxjx@gcc@cjk@list}
+ \protected\def\nogreekasCJK{%
+ \bxjx@gcc@cjkfalse
+ \bxjx@cnta=\z@ \bxjx@gcc@cjk@list}
+\fi
+% \end{macrocode}
+%
+% 以上。
+% \begin{macrocode}
+\fi\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{初期設定}
+% 「特定CJK曖昧文字」を欧文扱いにする。
+% \begin{macrocode}
+\nogreekasCJK
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{完了}
+% おしまい。
+% \begin{macrocode}
+%</cjkcat>
+% \end{macrocode}
+%
+%^^A========================================================
+% \section{補助パッケージ:bxjspandoc \ZRX}
+%
+% Pandocの{\LaTeX}用標準テンプレートをより幸せに使うための設定。
+% BXJSクラスのpandocドライバのコードの中の、“汎用的”に使える
+% 部分を切り出したもの。
+% つまり現在のpandocドライバはこのパッケージを読みこむ。
+% \Note テンプレートの{\TeX}コードより前に読み込む必要があるため、
+% 専ら文書クラス内での読込に限られる。
+%
+%^^A----------------
+% \subsection{準備}
+%
+% \begin{macrocode}
+%<*ancpandoc>
+%% このファイルは日本語文字を含みます.
+\def\bxjsp@pkgname{bxjscjkcat}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjsp@engine}
+% エンジンの種別。
+% \begin{macrocode}
+\let\bxjsp@engine=n
+\@onlypreamble\bxjsp@do
+\def\bxjsp@do#1#2{%
+ \edef\bxjsp@tmpa{\string#1}%
+ \edef\bxjsp@tmpb{\meaning#1}%
+ \ifx\bxjsp@tmpa\bxjsp@tmpb #2\fi}
+\bxjsp@do\kanjiskip{\let\bxjsp@engine=j}
+\bxjsp@do\XeTeXversion{\let\bxjsp@engine=x}
+\bxjsp@do\pdftexversion{\let\bxjsp@engine=p}
+\bxjsp@do\luatexversion{\let\bxjsp@engine=l}
+% \end{macrocode}
+% \end{macro}
+%
+%^^A----------------
+%\subsection{パッケージオプション}
+%
+% |english| オプションが指定されている場合、|\ldots| の調整を抑止する。
+% \Note つまり、「グローバルの |english| オプション」が指定されている
+% 場合も抑止の対象になる。
+% BXJSクラスの英語モードを想定しているが、それ以外の場合でも、
+% 一般的な{\LaTeX}の習慣として、グローバルの |english| は
+% 「その文書の基底言語が英語である」ことを示す。
+% \begin{macrocode}
+\newif\ifbxjsp@english
+\DeclareOption{english}{\bxjsp@englishtrue}
+% \end{macrocode}
+%
+% オプション定義はおしまい。
+% \begin{macrocode}
+\ProcessOptions*
+% \end{macrocode}
+%
+%^^A----------------
+%\subsection{パッケージ読込の阻止}
+%
+% \begin{macro}{\pandocSkipLoadFile}
+% |\pandocSkipLoadFile{|\Meta{ファイル名}|}|\Means
+% 特定のファイルを(|\@filewithoptions| の処理に関して)
+% 読込済であるとマークする。
+% \begin{macrocode}
+\@onlypreamble\pandocSkipLoadFile
+\newcommand*\pandocSkipLoadFile[1]{%
+ \expandafter\bxjsp@skip@load@file@a\csname ver@#1\endcsname{#1}}
+\def\bxjsp@skip@load@file@a#1#2{%
+ \ifx#1\relax
+ \def#1{2001/01/01}%
+ \PackageInfo\bxjsp@pkgname
+ {File '#2' marked as loaded\@gobble}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pandocSkipLoadPackage}
+% |\pandocSkipLoadPackage{|\Meta{パッケージ名}|}|\Means
+% |\pandocSkipLoadFile| の機能を用いてパッケージの読込を阻止する。
+% \begin{macrocode}
+\@onlypreamble\pandocSkipLoadPackage
+\newcommand*\pandocSkipLoadPackage[1]{%
+ \pandocSkipLoadFile{#1.sty}}
+% \end{macrocode}
+% \end{macro}
+%
+%^^A----------------
+%\subsection{fixltx2eパッケージ}
+% テンプレートでは |fixltx2e| パッケージを読み込むが、
+% 最近(2015年版以降)の{\LaTeX}ではこれで警告が出る。
+% これを抑止する。
+%
+% {\LaTeX}カーネルが新しい場合は |fixltx2e| を
+% 読込済にする。
+% \begin{macrocode}
+\ifx\@IncludeInRelease\@undefined\else
+ \pandocSkipLoadPackage{fixltx2e}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+%\subsection{cmapパッケージ}
+% エンジンが{(u)\pLaTeX}のときに |cmap| パッケージが
+% 読み込まれるのを阻止する。
+% (実際は警告が出るだけで無害であるが。)
+%
+% \begin{macrocode}
+\if j\bxjsp@engine
+ \pandocSkipLoadPackage{cmap}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+%\subsection{microtypeパッケージ}
+% 警告が多すぎなので消す。
+%
+% \begin{macrocode}
+\if j\bxjsp@engine \else
+ \PassOptionsToPackage{verbose=silent}{microtype}
+\fi
+% \end{macrocode}
+%
+% エンジンが{(u)\pLaTeX}のときに |microtype| パッケージが
+% 読み込まれるのを阻止し、さらにテンプレートで使われている命令を
+% 通すためにダミーの定義を行う。
+% \Note 昔はstandardドライバでこの処理を行っていたが、
+% 元来はPandoc用の処理なので、1.5版でpandocに移動。
+% \begin{macrocode}
+\if j\bxjsp@engine
+ \pandocSkipLoadPackage{microtype}
+ \newcommand*\UseMicrotypeSet[2][]{}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+%\subsection{Unicode文字変換対策}
+%
+% Pandocで{\LaTeX}形式に書き出す場合は、元データ中の一部のUnicode文字を
+% 「{\LaTeX}の表記」に置き換える。
+% その中には日本語文書で問題になるものが含まれる。
+% \begin{quote}
+% \mbox{…}→|\ldots{}|\quad
+% \mbox{‘}→|`|\quad
+% \mbox{’}→|'|\quad
+% \mbox{“}→|``|\quad
+% \mbox{”}→|''|\quad
+% \end{quote}
+% 日本語{\LaTeX}では「{\LaTeX}の表記」は欧文扱い、
+% Unicode文字は和文扱いとして使い分ける習慣があるので、
+% このような置換が行われるのは好ましくない。
+%
+% これらの置換のうち、後の4つはPandocの |--no-tex-ligatures| オプションを
+% 指定すれば抑止できるが、「…」の置換を抑止する機能はないようである。
+% そこで、「|\ldots| を『…』に戻す」という処置を行う。
+%
+% \begin{macro}{\pandocLdots}
+% Pandoc用の |\ldots| の実装。
+% 非数式である場合は代わりに |…| を実行する。
+% \Note 以前は「Pandocが必ず |\ldots{}| の形で書き出す」ことを利用して
+% 後続に |{}| があるかで「元が |…| であるか」を判断していた。
+% ところが、Pandoc 2.7版で |{}| を必ずしも付けなくなったため、
+% 1.9f版で非数式の |\ldots| を全て |…| に戻す動作に変更した。
+% \begin{macrocode}
+\DeclareRobustCommand{\pandocLdots}{%
+ \relax\ifmmode \expandafter\bxjsp@org@ldots
+ \else \expandafter\bxjsp@ja@ellipsis
+ \fi}
+\def\bxjsp@ja@ellipsis{…}
+\let\bxjsp@org@ldots\ldots
+% \end{macrocode}
+% \end{macro}
+%
+% |\ldots| の実装を置き換える。
+% \Note B|english| オプション指定時は置き換えない。
+% \begin{macrocode}
+\AtBeginDocument{%
+ \let\bxjsp@org@ldots\ldots
+ \ifbxjsp@english\else \let\ldots\pandocLdots \fi}
+% \end{macrocode}
+%
+% |\ldots| の直後の文字が非英字の場合、Pandocは「|\ldots。|」の
+% ように空白を入れずに並べて出力する。
+% 「Pandocは非英字と見なすが{\XeTeX}・{Lua\TeX}は英字と見なす
+% (または将来その可能性がある)」文字で、特に日本語文書に現れる
+% ものについて、非英字扱いにしておく。
+% \Note Pandocは「Unicode 7.0でGCがLetter」な文字を英字と判定している。
+% \begin{macrocode}
+\chardef\bxjsp@cc@other=12
+\@onlypreamble\bxjsp@makeother@range
+\def\bxjsp@makeother@range#1#2{%
+ \@tempcnta"#1\relax \@tempcntb"#2\relax
+ \loop\ifnum\@tempcnta<\@tempcntb
+ \catcode\@tempcnta\bxjsp@cc@other
+ \advance\@tempcnta\@ne
+ \repeat}
+\ifnum0\if x\bxjsp@engine1\fi\if l\bxjsp@engine1\fi>0
+ \catcode"1F23B=\bxjsp@cc@other
+ \bxjsp@makeother@range{9FCD}{A000}
+ \bxjsp@makeother@range{1B002}{1B170}
+ \bxjsp@makeother@range{2B820}{2EBF0}
+\fi
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{PandoLaモジュール}
+% インストール済であれば読み込む。
+% \begin{macrocode}
+\IfFileExists{bxpandola.sty}{%
+ \RequirePackage{bxpandola}\relax
+ \PackageInfo\bxjsp@pkgname
+ {PandoLa module is loaded\@gobble}
+}{}
+% \end{macrocode}
+%
+%^^A----------------
+% \subsection{完了}
+% おしまい。
+% \begin{macrocode}
+%</ancpandoc>
+% \end{macrocode}
+%
+% 補助パッケージ実装はここまで。
+% \begin{macrocode}
+%</anc>
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/BX/bxjscls/bxjscls.ins b/language/japanese/BX/bxjscls/bxjscls.ins
new file mode 100644
index 0000000000..0e533ebe34
--- /dev/null
+++ b/language/japanese/BX/bxjscls/bxjscls.ins
@@ -0,0 +1,16 @@
+%% bxjscls.ins : installer file for bxjscls.dtx
+\def\batchfile{bxjscls.ins}
+\input docstrip.tex
+\keepsilent
+\generateFile{bxjsarticle.cls}{f}{\from{bxjscls.dtx}{cls,article}}
+\generateFile{bxjsreport.cls}{f}{\from{bxjscls.dtx}{cls,report}}
+\generateFile{bxjsbook.cls}{f}{\from{bxjscls.dtx}{cls,book}}
+\generateFile{bxjsslide.cls}{f}{\from{bxjscls.dtx}{cls,slide}}
+\generateFile{bxjsja-minimal.def}{f}{\from{bxjscls.dtx}{drv,minimal}}
+\generateFile{bxjsja-standard.def}{f}{\from{bxjscls.dtx}{drv,standard}}
+\generateFile{bxjsja-modern.def}{f}{\from{bxjscls.dtx}{drv,modern}}
+\generateFile{bxjsja-pandoc.def}{f}{\from{bxjscls.dtx}{drv,pandoc}}
+\generateFile{bxjscompat.sty}{f}{\from{bxjscls.dtx}{anc,compat}}
+\generateFile{bxjscjkcat.sty}{f}{\from{bxjscls.dtx}{anc,cjkcat}}
+\generateFile{bxjspandoc.sty}{f}{\from{bxjscls.dtx}{anc,ancpandoc}}
+%% EOF
diff --git a/language/japanese/BX/bxjscls/bxjscls.pdf b/language/japanese/BX/bxjscls/bxjscls.pdf
new file mode 100644
index 0000000000..bc7df6ed8d
--- /dev/null
+++ b/language/japanese/BX/bxjscls/bxjscls.pdf
Binary files differ
diff --git a/language/japanese/BX/bxwareki/LICENSE b/language/japanese/BX/bxwareki/LICENSE
new file mode 100644
index 0000000000..c4443b644c
--- /dev/null
+++ b/language/japanese/BX/bxwareki/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018,2019 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/BX/bxwareki/README.md b/language/japanese/BX/bxwareki/README.md
new file mode 100644
index 0000000000..b02a5bc205
--- /dev/null
+++ b/language/japanese/BX/bxwareki/README.md
@@ -0,0 +1,53 @@
+BXwareki Package
+================
+
+LaTeX: Support for Japanese calendar
+
+This package provides commands to convert from the Gregorian calendar
+(2018/8/28) to the Japanese rendering of the Japanese calendar (Heisei
+30 nen 8 gatsu 28 nichi; actually with kanji characters). You can choose
+whether the numbers are written in Western numerals or kanji numerals.
+
+Note that the package only deals with dates in the year 1873 or later,
+where the Japanese calendar is really a Gregorian calendar with the
+different notation of years.
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: pdfTeX, LuaTeX, XeTeX, pTeX, upTeX, ApTeX (pTeX-ng),
+ and NTT-jTeX. (The e-TeX extension is not needed.)
+
+### Installation
+
+ - `*.sty`, `*.def` → $TEXMF/tex/latex/BXwareki
+
+### License
+
+This package is distributed under the MIT License.
+
+
+The bxwareki Package ― main
+----------------------------
+
+See the manual `bxwareki.pdf` for detail.
+
+
+Revision History
+----------------
+
+ * Version 0.6 ‹2019/06/01›
+ - The file `bxwareki2019.def` is no longer required.
+ * Version 0.5 ‹2019/04/01›
+ - Support for the new gengo “令和”.
+ * Version 0.4 ‹2018/10/01›
+ - Add `\warekigengoinitial`.
+ - Add option `download2019`.
+ * Version 0.3 ‹2018/09/24›
+ - The total rewrite.
+ * Version 0.2 ‹2018/04/08›
+ - The first public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/BX/bxwareki/bxwareki-cd.def b/language/japanese/BX/bxwareki/bxwareki-cd.def
new file mode 100644
index 0000000000..695a4c2460
--- /dev/null
+++ b/language/japanese/BX/bxwareki/bxwareki-cd.def
@@ -0,0 +1,126 @@
+%%
+%% This is file 'bxwareki-cd.def'.
+%%
+%% Copyright (c) 2018,2019 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+% Note: This file must be encoded in UTF-8.
+
+%% file declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{bxwareki-cd.def}[2019/06/01 v0.6]
+
+\ifbxwy@epTeXinputencoding@ok
+ \epTeXinputencoding utf8
+\fi
+
+%--------------------------------------- helpers
+
+%% \bxwy@burst-`>...
+\let\bxwy@burst\romannumeral
+
+%% \bxwy@cond\ifXXX...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\bxwy@cond#1\fi{%
+ #1\expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi}
+
+%% \bxwy@catch@mk...\bxwy@mk
+\def\bxwy@catch@mk#1\bxwy@mk{#1}
+
+%--------------------------------------- kanji numerals
+
+%% \bxwy@Jkansuji{<number>}
+% The kansuji-by-reading with use of ten-composites (廿, 卅).
+% NB. Only valid in range 0..99; otherwise fallback to \bxwy@jkansuji.
+\def\bxwy@Jkansuji#1{%
+ \expandafter\bxwy@Jkansuji@a\number#1\bxwy@mk}
+\def\bxwy@Jkansuji@a#1\bxwy@mk{%
+ \ifnum#1<\bxwy@jk@x
+ \bxwy@jkansuji@a#1\bxwy@mk
+ \else\ifnum#1<\bxwy@jk@c
+ \bxwy@Jkansuji@b#1%
+ \else
+ \bxwy@jkansuji@a#1\bxwy@mk
+ \fi\fi}
+\def\bxwy@Jkansuji@b#1#2{%
+ \ifcase#1\relax \or 十\or 廿\or 卅%
+ \else \csname bxwy@jcd/#1\endcsname 十%
+ \fi
+ \ifnum#2>\z@ \csname bxwy@jcd/#2\endcsname \fi}
+
+%--------------------------------------- custom date format
+
+%% \warekicustomdate{<options>}
+% Renders the date in the form specified by the options.
+% [calendar] def. seireki; w = wareki;
+% [numerals] def. western numerals; k = kansuji; j = kansuji-by-reading;
+% J = kansuji-by-reading, with ten-composites (廿, 卅);
+% [month names] def. by numbers; o = 異名 (old month names);
+% O = Izumo-style 異名 (use 神在月 instead of 神無月);
+\def\warekicustomdate#1{%
+ \bxwy@custom@date@parse@opt{#1}\bxwy@custom@date@a}
+\def\bxwy@custom@date@a#1{%
+ \expandafter\bxwy@custom@date@b\bxwy@date#1}
+\def\bxwy@custom@date@b#1#2#3#4#5#6{%
+ % y,m,d,calendar,numerals,monthname
+ \if \ifx\warekigengo\@empty-\else#4\fi w% wareki
+ \warekigengo
+ \ifnum\c@warekiyear=\@ne 元%
+ \else \bxwy@custom@date@number#5\c@warekiyear
+ \fi
+ \else % seireki
+ \if#5-#1\bxwy@S% western
+ \else \bxwy@kansuji{#1}% kansuji/-j/-J
+ \fi
+ \fi
+ 年%
+ \if#6-\bxwy@custom@date@number#5{#2}月% month by number
+ \else \bxwy@custom@date@month#6{#2}% month name
+ \fi
+ \bxwy@custom@date@number#5{#3}日}
+\def\bxwy@custom@date@number#1#2{%
+ \if#1k\bxwy@kansuji{#2}% kansuji
+ \else\if#1j\bxwy@jkansuji{#2}% kansuji-j
+ \else\if#1J\bxwy@Jkansuji{#2}% kansuji-J
+ \else % western
+ \bxwy@S \expandafter\bxwy@catch@mk\number#2\bxwy@mk \bxwy@S
+ \fi\fi\fi}
+\def\bxwy@custom@date@month#1#2{%
+ \ifnum#2=\z@\else\ifcase#2\relax
+ \or 睦月\or 如月\or 弥生\or 卯月\or 皐月\or 水無月%
+ \or 文月\or 葉月\or 長月%
+ \or \if#1O神在月\else 神無月\fi
+ \or 霜月\or 師走%
+ \fi\fi}
+
+%% \bxwy@custom@date@parse@opt{<options>}\CScont
+\def\bxwy@custom@date@parse@opt#1{%
+ \bxwy@cd@parse@opt@a#1\bxwy@mk---}
+\def\bxwy@cd@parse@opt@a{%
+ \expandafter\bxwy@cd@parse@opt@b\bxwy@burst-`>}
+\def\bxwy@cd@parse@opt@b#1{%
+ \bxwy@cond\ifx#1\bxwy@mk\fi{\bxwy@cd@parse@opt@f}{%
+ \expandafter\bxwy@cd@parse@opt@c\csname bxwy@cdpo@@#1\endcsname}}
+\def\bxwy@cd@parse@opt@c#1{%
+ \bxwy@cond\ifx#1\relax\fi{\bxwy@cd@parse@opt@a}{%
+ \bxwy@cd@parse@opt@d#1}}
+\def\bxwy@cd@parse@opt@d#1#2\bxwy@mk#3#4#5{%
+ \expandafter\bxwy@cd@parse@opt@e\bxwy@burst-`>#1#3#4#5{#2}}
+\def\bxwy@cd@parse@opt@e#1#2#3#4{%
+ \bxwy@cd@parse@opt@a#4\bxwy@mk#1#2#3}
+\def\bxwy@cd@parse@opt@f#1#2#3#4{%
+ #4{#1#2#3}}
+%
+\def\bxwy@cdpo@@w#1#2#3{w#2#3}
+\def\bxwy@cdpo@@k#1#2#3{#1k#3}
+\def\bxwy@cdpo@@j#1#2#3{#1j#3}
+\def\bxwy@cdpo@@J#1#2#3{#1J#3}
+\def\bxwy@cdpo@@o#1#2#3{#1#2o}
+\def\bxwy@cdpo@@O#1#2#3{#1#2O}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxwareki/bxwareki.pdf b/language/japanese/BX/bxwareki/bxwareki.pdf
new file mode 100644
index 0000000000..5bfcc6272d
--- /dev/null
+++ b/language/japanese/BX/bxwareki/bxwareki.pdf
Binary files differ
diff --git a/language/japanese/BX/bxwareki/bxwareki.sty b/language/japanese/BX/bxwareki/bxwareki.sty
new file mode 100644
index 0000000000..d3dab98aca
--- /dev/null
+++ b/language/japanese/BX/bxwareki/bxwareki.sty
@@ -0,0 +1,513 @@
+%%
+%% This is file 'bxwareki.sty'.
+%%
+%% Copyright (c) 2018,2019 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+% Note: This file is encoded entirely in us-ascii.
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxwareki}[2019/06/01 v0.6]
+
+%% preparation
+\def\bxwy@pkgname{bxwareki}
+\providecommand\bxDebug[1]{}
+
+%--------------------------------------- general
+
+%% unique tokens
+\def\bxwy@end{\noexpand\bxwy@end@}
+\def\bxwy@mt{\noexpand\bxwy@mt@}
+\let\bxwy@mk\indent
+
+%% \bxwy@engine : engine type
+%% \ifbxwy@eTeX@ok : have e-TeX extension?
+%% \ifbxwy@epTeXinputencoding@ok : have \epTeXinputencoding?
+\def\bxwy@next#1#2{%
+ \edef\bxwy@tmpa{\string#1}\edef\bxwy@tmpb{\meaning#1}%
+ \ifx\bxwy@tmpa\bxwy@tmpb #2\fi}
+\chardef\bxwy@engine=0 % 8-bit TeX
+\bxwy@next\kanjiskip {\chardef\bxwy@engine=1 }% pTeX (or upTeX)
+\bxwy@next\jintercharskip{\chardef\bxwy@engine=2 }% NTT-jTeX
+\bxwy@next\Omegaversion {\chardef\bxwy@engine=3 }% Aleph
+\bxwy@next\XeTeXversion {\chardef\bxwy@engine=4 }% XeTeX
+\bxwy@next\luatexversion {\chardef\bxwy@engine=5 }% LuaTeX
+\newif\ifbxwy@eTeX@ok
+\bxwy@next\eTeXversion{\bxwy@eTeX@oktrue}
+\newif\ifbxwy@upTeX@ok
+\bxwy@next\forcecjktoken{\bxwy@upTeX@oktrue}
+\newif\ifbxwy@epTeXinputencoding@ok
+\bxwy@next\epTeXinputencoding{\bxwy@epTeXinputencoding@oktrue}
+
+%% switch 'bxwy@customdate@ok'
+% NB. It is "whether or not UTF-8 files can be safely loaded".
+\newif\ifbxwy@customdate@ok
+\ifcase\bxwy@engine \bxwy@customdate@oktrue % 8-bit
+\or % pTeX
+ \ifbxwy@epTeXinputencoding@ok \bxwy@customdate@oktrue
+ \else\ifbxwy@upTeX@ok \bxwy@customdate@oktrue
+ \fi\fi
+\or % jTeX
+\else \bxwy@customdate@oktrue
+\fi
+
+%% \bxwy@oncex{...}
+% The once-expander, used in \edef.
+%% \bxwy@twicex{...}
+% The twice-expander, used in \edef.
+\ifbxwy@eTeX@ok
+ \def\bxwy@oncex#1{\unexpanded\expandafter{#1}}
+ \def\bxwy@twicex#1{\unexpanded\expandafter\expandafter\expandafter{#1}}
+\else
+ % Here it is assumed that the engine is (u)pTeX or JTeX.
+ \def\bxwy@oncex#1{#1}
+ \def\bxwy@twicex#1{#1}
+\fi
+
+%% \bxwy@newcounter{<name>}
+%% \bxwy@setcounter{<name>}{<value>}
+% Declares a pseudo-counter (if not on e-TeX).
+\@onlypreamble\bxwy@newcounter
+\ifbxwy@eTeX@ok
+ \let\bxwy@newcounter\newcounter
+ \def\bxwy@setcounter#1#2{% assign locally
+ \csname c@#1\endcsname#2\relax}
+\else
+ \def\bxwy@newcounter#1{%
+ \expandafter\@ifdefinable\csname c@#1\endcsname{%
+ \expandafter\mathchardef\csname c@#1\endcsname\z@
+ \expandafter\gdef\csname the#1\expandafter\endcsname\expandafter{%
+ \expandafter\@arabic\csname c@#1\endcsname}}}
+ \def\bxwy@setcounter#1#2{% assign locally
+ \expandafter\mathchardef\csname c@#1\endcsname#2\relax}
+\fi
+
+%--------------------------------------- options
+
+%% 'download'
+\DeclareOption{download2019}{}% now no-op
+% dispatch
+\ProcessOptions\relax
+
+%--------------------------------------- Japanese string maker
+
+% The "combo-code" represents a single Japanese character and has
+% the form such like:
+% E698AD:662D:3E3C:f3F
+% where
+% - E698AD is hex dump of UTF-8 bytes;
+% - 662D is hex of Unicode point;
+% - 3E3C is hex dump of JIS-encoding bytes;
+% - f3F is something for jTeX.
+
+%% \bxwy@S : inter-ascii-kanji skip
+\let\bxwy@S\@empty
+%% \bxwy@normal@S : the normal definition of \bxwy@S
+\let\bxwy@normal@S\relax
+%% \bxwy@C : Japanese character printer for JTeX
+\let\bxwy@C\relax
+
+%% \bxwy@freeze@fragile : make fragile cs unexpandable
+\let\bxwy@freeze@fragile\relax
+%% \bxwy@restore@fragile : revoke \bxwy@freeze@fragile
+\let\bxwy@restore@fragile\relax
+
+%% \bxwy@add@jchar\CS{<combo-code>}
+% Adds a character with given combo-code to the macro \CS.
+\@onlypreamble\bxwy@add@jchar
+\def\bxwy@add@jchar#1#2{%
+ \begingroup
+ \bxwy@freeze@fragile
+ \def\bxwy@next##1{\xdef#1{\bxwy@oncex#1\bxwy@oncex{##1}}}%
+ \edef\bxwy@tmpa{#2}%
+ \expandafter\bxwy@add@jchar@dec\bxwy@tmpa::::\bxwy@end
+ \endgroup}
+\@onlypreamble\bxwy@add@jchar@dec
+\@onlypreamble\bxwy@add@jchar@dec@a
+\@onlypreamble\bxwy@add@jchar@dec@b
+% engine-dependent parts
+\ifcase\bxwy@engine %8-bit
+ \def\bxwy@add@jchar@dec#1:#2:#3:#4:#5\bxwy@end{%
+ \bxwy@add@jchar@dec@a#1000000\bxwy@end}
+ \def\bxwy@add@jchar@dec@a#1#2#3#4#5#6#7\bxwy@end{%
+ \let\do\bxwy@add@jchar@dec@b
+ \do{#1#2}\do{#3#4}\do{#5#6}}
+ \def\bxwy@add@jchar@dec@b#1{%
+ \lccode`\~="#1\relax\lowercase{\bxwy@next{\noexpand~}}}
+ \def\bxwy@S{~}% \bxwy@S expands to ~, and ~ is protected.
+ \let\bxwy@org@tie\relax
+ \def\bxwy@freeze@fragile{\let\bxwy@org@tie=~\let~=\relax}
+ \def\bxwy@restore@fragile{\let~=\bxwy@org@tie}
+\or %pTeX
+ \def\bxwy@add@jchar@dec#1:#2:#3:#4:#5\bxwy@end{%
+ \kansujichar\@ne=\jis"#3\relax \bxwy@next{\kansuji\@ne}}
+\or %jTeX
+ \def\bxwy@add@jchar@dec#1:#2:#3:#4:#5\bxwy@end{%
+ \bxwy@next{\bxwy@C#4}}
+ \def\bxwy@C#1#2#3{%
+ \mbox{\csname j#1\endcsname\char"#2#3}}
+ \def\bxwy@@S{% standard inter-ascii-kanji skip
+ \hskip \ifdim\jasciikanjiskip=\z@ \fontdimen7\ja\@minus\fontdimen9\ja
+ \else \jasciikanjiskip \fi
+ \relax}
+ \def\bxwy@S{\bxwy@@S}% \bxwy@S expands to \bxwy@@S, which is protected.
+ \let\bxwy@org@@S\relax \let\bxwy@org@C\relax
+ \def\bxwy@freeze@fragile{%
+ \let\bxwy@org@@S\bxwy@@S \let\bxwy@@S\relax
+ \let\bxwy@org@C\bxwy@C \let\bxwy@C\relax}
+ \def\bxwy@restore@fragile{%
+ \let\bxwy@@S\bxwy@org@@S \let\bxwy@C\bxwy@org@C}
+\else %Aleph/XeTeX/LuaTeX
+ \def\bxwy@add@jchar@dec#1:#2:#3:#4:#5\bxwy@end{%
+ \lccode`\Z="#2\relax \lowercase{\bxwy@next{\noexpand Z}}}
+\fi
+% set \bxwy@normal@S
+\let\bxwy@normal@S\bxwy@S
+
+\ifbxwy@eTeX@ok %<*eTeX>
+%%<+> \WarekiUseNormalInterGlue
+% Uses the normal definition of inter-ascii-kanji skip.
+\newcommand*\WarekiUseNormalInterGlue{%
+ \let\bxwy@S\bxwy@normal@S
+ \bxwy@render@all}
+%%<+> \WarekiUseCustomInterGlue{<text>}
+% Uses the custom definition of inter-ascii-kanji skip.
+\@ifdefinable\WarekiUseCustomInterGlue{%
+ \def\WarekiUseCustomInterGlue#{%
+ \afterassignment\bxwy@render@all
+ \protected\def\bxwy@S}}
+\fi %</eTeX>
+
+%--------------------------------------- Japanese words
+
+%% \bxwy@@meiji : kanji string 'Meiji'
+\let\bxwy@@meiji\@empty
+\bxwy@add@jchar\bxwy@@meiji{E6988E:660E:4C40:k67}
+\bxwy@add@jchar\bxwy@@meiji{E6B2BB:6CBB:3C23:e6A}
+%% \bxwy@@taisho : kanji string 'Taisho'
+\let\bxwy@@taisho\@empty
+\bxwy@add@jchar\bxwy@@taisho{E5A4A7:5927:4267:gE2}
+\bxwy@add@jchar\bxwy@@taisho{E6ADA3:6B63:4035:fF4}
+%% \bxwy@@showa : kanji string 'Showa'
+\let\bxwy@@showa\@empty
+\bxwy@add@jchar\bxwy@@showa{E698AD:662D:3E3C:f3F}
+\bxwy@add@jchar\bxwy@@showa{E5928C:548C:4F42:l83}
+%% \bxwy@@heisei : kanji string 'Heisei'
+\let\bxwy@@heisei\@empty
+\bxwy@add@jchar\bxwy@@heisei{E5B9B3:5E73:4A3F:jAA}
+\bxwy@add@jchar\bxwy@@heisei{E68890:6210:402E:fED}
+%% \bxwy@@reiwa : kanji string 'Reiwa'
+\let\bxwy@@reiwa\@empty
+\bxwy@add@jchar\bxwy@@reiwa{E4BBA4:4EE4:4E61:l44}
+\bxwy@add@jchar\bxwy@@reiwa{E5928C:548C:4F42:l83}
+%% \bxwy@@nen : kanji for 'year'
+\let\bxwy@@nen\@empty
+\bxwy@add@jchar\bxwy@@nen{E5B9B4:5E74:472F:i80}
+%% \bxwy@@gatsu : kanji for 'month'
+\let\bxwy@@gatsu\@empty
+\bxwy@add@jchar\bxwy@@gatsu{E69C88:6708:376E:cDF}
+%% \bxwy@@nichi : kanji for 'day'
+\let\bxwy@@nichi\@empty
+\bxwy@add@jchar\bxwy@@nichi{E697A5:65E5:467C:i6F}
+%% \bxwy@@gan : kanji for 'origin'
+\let\bxwy@@gan\@empty
+\bxwy@add@jchar\bxwy@@gan{E58583:5143:3835:d04}
+
+%--------------------------------------- kanji numerals
+
+%% \bxwy@set@jchar@digit{<n>}{<combo-code>}
+\@onlypreamble\bxwy@set@jchar@digit
+\def\bxwy@set@jchar@digit#1{%
+ \expandafter\bxwy@set@jchar@digit@a\csname bxwy@jcd/#1\endcsname}
+\@onlypreamble\bxwy@set@jchar@digit@a
+\def\bxwy@set@jchar@digit@a#1#2{%
+ \let#1\@empty \bxwy@add@jchar#1{#2}}
+
+%% \[bxwr@jcd/<n>] : kanji digit for n
+\bxwy@set@jchar@digit{0}{E38087:3007:213B:{sy}1B}
+\bxwy@set@jchar@digit{1}{E4B880:4E00:306C:a4B}
+\bxwy@set@jchar@digit{2}{E4BA8C:4E8C:4673:i66}
+\bxwy@set@jchar@digit{3}{E4B889:4E09:3B30:e19}
+\bxwy@set@jchar@digit{4}{E59B9B:56DB:3B4D:e36}
+\bxwy@set@jchar@digit{5}{E4BA94:4E94:385E:d2D}
+\bxwy@set@jchar@digit{6}{E585AD:516D:4F3B:l7C}
+\bxwy@set@jchar@digit{7}{E4B883:4E03:3C37:e7E}
+\bxwy@set@jchar@digit{8}{E585AB:516B:482C:iDB}
+\bxwy@set@jchar@digit{9}{E4B99D:4E5D:3665:c78}
+\bxwy@set@jchar@digit{X}{E58D81:5341:3D3D:eE2}% ten
+\bxwy@set@jchar@digit{C}{E799BE:767E:4934:j41}% hundred
+
+%%<+> \WarekiKansuji{<counter>}
+%% \bxwy@kansuji{<number>}
+% The kansuji representation of the number.
+\newcommand*\WarekiKansuji[1]{%
+ \expandafter\bxwy@kansuji\csname c@#1\endcsname}
+\def\bxwy@kansuji#1{%
+ \ifnum#1<\z@\else
+ \expandafter\bxwy@kansuji@a\number#1\bxwy@mk
+ \fi}
+\def\bxwy@kansuji@a#1{%
+ \ifx#1\bxwy@mk\else
+ \bxwy@twicex{\csname bxwy@jcd/#1\endcsname}%
+ \expandafter\bxwy@kansuji@a
+ \fi}
+
+%% \bxwy@jkansuji{<number>}
+% The kansuji-by-reading representation of the number.
+% NB. Only valid in range 0..999; otherwise fallback to \bxwy@kansuji.
+\def\bxwy@jkansuji#1{%
+ \expandafter\bxwy@jkansuji@a\number#1\bxwy@mk}
+\chardef\bxwy@jk@x=10
+\chardef\bxwy@jk@c=100
+\def\bxwy@jkansuji@a#1\bxwy@mk{%
+ \ifnum#1<\z@
+ \bxwy@kansuji{#1}%
+ \else\ifnum#1<\bxwy@jk@x
+ \bxwy@twicex{\csname bxwy@jcd/#1\endcsname}%
+ \else\ifnum#1<\bxwy@jk@c
+ \bxwy@jkansuji@b0#1%
+ \else\ifnum#1<\@m
+ \bxwy@jkansuji@b#1%
+ \else
+ \bxwy@kansuji@a#1\bxwy@mk
+ \fi\fi\fi\fi}
+\def\bxwy@jkansuji@b#1#2#3{%
+ \ifnum#1>\@ne \bxwy@twicex{\csname bxwy@jcd/#1\endcsname}\fi
+ \ifnum#1>\z@ \bxwy@twicex{\csname bxwy@jcd/C\endcsname}\fi
+ \ifnum#2>\@ne \bxwy@twicex{\csname bxwy@jcd/#2\endcsname}\fi
+ \ifnum#2>\z@ \bxwy@twicex{\csname bxwy@jcd/X\endcsname}\fi
+ \ifnum#3>\z@ \bxwy@twicex{\csname bxwy@jcd/#3\endcsname}\fi}
+
+%--------------------------------------- calculate wareki year
+
+%% errors
+\def\bxwy@err@ivnum#1{%
+ \PackageError\bxwy@pkgname
+ {Bad number form: #1}{\@ehc}}
+\def\bxwy@err@ivrng#1#2#3#4{%
+ \PackageError\bxwy@pkgname
+ {The #4 value #1 is out of range (#2..#3)}{\@ehc}}
+
+%% variables
+\let\bxwy@g@gengo\relax
+\let\bxwy@g@year\relax
+\let\bxwy@g@date\relax
+
+%% \bxwy@assign@date{<year>}{<month>}{<day>}
+\def\bxwy@assign@date#1#2#3{%
+ \bxwy@assign@date@a\year {#1}{0}{9999}{year}%
+ \bxwy@assign@date@a\month{#2}{1}{99}{}%
+ \bxwy@assign@date@a\day {#3}{1}{99}{}}
+\def\bxwy@assign@date@a#1#2#3#4#5{%
+ \afterassignment\bxwy@assign@date@b\@tempcnta=#2\bxwy@mk{#2}%
+ \@tempswatrue
+ \edef\bxwy@tmpb{\the\@tempcnta}%
+ \ifnum#3>\@tempcnta \@tempswafalse \@tempcnta#3\relax \fi
+ \ifnum#4<\@tempcnta \@tempswafalse \@tempcnta#4\relax \fi
+ \if@tempswa\else \ifx\bxwy@mt#5\bxwy@mt\else
+ \bxwy@err@ivrng\bxwy@tmpb{#3}{#4}{#5}%
+ \fi\fi
+ #1=\ifnum\@tempcnta=\z@ \@ne \else \@tempcnta \fi}
+\def\bxwy@assign@date@b#1\bxwy@mk#2{%
+ \ifx\bxwy@mk#1\bxwy@mk\else
+ \@tempcnta\z@
+ \bxwy@err@ivnum{#2}%
+ \fi}
+
+%% \bxwy@calc@wareki@year
+% Sets \bxwy@g@gengo and \bxwy@g@year.
+\def\bxwy@calc@wareki@year{%
+ \@tempcnta=\the\year\two@digits\month\two@digits\day\relax
+ \let\bxwy@tmpa\@empty \let\bxwy@tmpb\@empty \@tempcntb\year
+ \ifnum\@tempcnta<18730101 % ancient times (non-Gregorian)
+ \else\ifnum\@tempcnta<19120730 % meiji era
+ \let\bxwy@tmpb\bxwy@@meiji
+ \advance\@tempcntb-1867\relax
+ \else\ifnum\@tempcnta<19261225 % taisho era
+ \let\bxwy@tmpb\bxwy@@taisho
+ \advance\@tempcntb-1911\relax
+ \else\ifnum\@tempcnta<19890108 % showa era
+ \let\bxwy@tmpb\bxwy@@showa
+ \advance\@tempcntb-1925\relax
+ \else\ifnum\@tempcnta<20190501 % heisei era
+ \let\bxwy@tmpb\bxwy@@heisei
+ \advance\@tempcntb-1988\relax
+ \else % the new era
+ \let\bxwy@tmpb\bxwy@@reiwa
+ \advance\@tempcntb-2018\relax
+ \fi\fi\fi\fi\fi
+ %
+ \global\let\bxwy@g@gengo\bxwy@tmpb
+ \xdef\bxwy@g@year{\the\@tempcntb}%
+ \xdef\bxwy@g@date{{\the\year}{\the\month}{\the\day}}}
+
+%% \bxwy@gengo@initial@of\CS
+\def\bxwy@gengo@initial@of#1{%
+ \ifx#1\@empty \@empty
+ \else\ifx#1\bxwy@@meiji M%
+ \else\ifx#1\bxwy@@taisho T%
+ \else\ifx#1\bxwy@@showa S%
+ \else\ifx#1\bxwy@@heisei H%
+ \else\ifx#1\bxwy@@reiwa R%
+ \fi\fi\fi\fi\fi\fi}
+
+%--------------------------------------- render wareki date
+
+%% \bxwy@render@for\CSIdate\CSIgengo\CSIyear
+% \CSOyear\CSOdate\CSOkanjidate\CSOjkanjidate
+\def\bxwy@render@for{%
+ \expandafter\bxwy@render@for@a}
+\def\bxwy@render@for@a#1#2#3#4#5#6#7#8#9{%
+ %y,m,d,Igengo,Iyear,Oyaer,Odate,Okanjidate,Ojkanjidate
+ \bxwy@freeze@fragile
+ % \CSOyear
+ \edef#6{%
+ \ifx#4\@empty \number#1%(y)
+ \else
+ \bxwy@oncex{#4}%(\CSIgengo)
+ \ifnum#5=\@ne \bxwy@oncex{\bxwy@@gan}%
+ \else \bxwy@S\number#5%(\CSIyear)
+ \fi
+ \fi}%
+ % \CSOdate
+ \edef#7{%
+ \bxwy@oncex{#6}%(\CSOyear)
+ \ifx#4\@empty \bxwy@S
+ \else\ifnum#5=\@ne %nix
+ \else \bxwy@S
+ \fi\fi
+ \bxwy@oncex{\bxwy@@nen}%
+ \bxwy@S#2\bxwy@S \bxwy@oncex{\bxwy@@gatsu}%(m)
+ \bxwy@S#3\bxwy@S \bxwy@oncex{\bxwy@@nichi}}%(d)
+ % \CSOkanjidate
+ \edef#8{%
+ \ifx#4\@empty \bxwy@kansuji{#1}%(y)
+ \else
+ \bxwy@oncex{#4}%(\CSIgengo)
+ \ifnum#5=\@ne \bxwy@oncex{\bxwy@@gan}%
+ \else \bxwy@kansuji{#5}%
+ \fi
+ \fi
+ \bxwy@oncex{\bxwy@@nen}%
+ \bxwy@kansuji{#2}\bxwy@oncex{\bxwy@@gatsu}%(m)
+ \bxwy@kansuji{#3}\bxwy@oncex{\bxwy@@nichi}}%(d)
+ % \CSOjkanjidate
+ \edef#9{%
+ \ifx#4\@empty \bxwy@jkansuji{#1}%(y)
+ \else
+ \bxwy@oncex{#4}%(\CSIgengo)
+ \ifnum#5=\@ne \bxwy@oncex{\bxwy@@gan}%
+ \else \bxwy@jkansuji{#5}%
+ \fi
+ \fi
+ \bxwy@oncex{\bxwy@@nen}%
+ \bxwy@jkansuji{#2}\bxwy@oncex{\bxwy@@gatsu}%(m)
+ \bxwy@jkansuji{#3}\bxwy@oncex{\bxwy@@nichi}}%(d)
+ % done
+ \bxwy@restore@fragile}
+
+%% \bxwy@render@date
+\def\bxwy@render@date{%
+ \bxwy@render@for\bxwy@date\warekigengo\c@warekiyear
+ \warekiyear\warekidate\warekikanjidate\warekijkanjidate
+ \edef\warekigengoinitial{\bxwy@gengo@initial@of\warekigengo}}
+%% \bxwy@render@today
+\def\bxwy@render@today{%
+ \bxwy@render@for\bxwy@today@date\bxwy@today@gengo\bxwy@today@year
+ \bxwy@today@yearstr\warekitoday\warekikanjitoday\warekijkanjitoday}
+%% \bxwy@render@all
+\def\bxwy@render@all{%
+ \bxwy@render@date
+ \bxwy@render@today}
+
+%--------------------------------------- user interface
+
+%% variables
+\let\bxwy@date\relax
+\let\bxwy@today@date\relax
+\let\bxwy@today@gengo\relax
+\let\bxwy@today@year\relax
+\let\bxwy@today@yearstr\relax
+
+%%<*> counter 'warekiyear' : number of wareki year
+\bxwy@newcounter{warekiyear}
+%%<*> \warekigengo : kanji string of the current gengo
+\newcommand*\warekigengo{}
+%%<*> \warekigengoinitial : initial Latin letter of the current gengo
+\newcommand*\warekigengoinitial{}
+%%<*> \warekiyear : string of the wareki year
+\newcommand*\warekiyear{}
+%%<*> \warekidate : string of the wareki date
+\newcommand*\warekidate{}
+%%<*> \warekikanjidate : string of the wareki date (kansuji)
+\newcommand*\warekikanjidate{}
+%%<*> \warekijkanjidate : string of the wareki date (kansuji-by-reading)
+\newcommand*\warekijkanjidate{}
+%%<*> \warekitoday : \warekidate string of today
+\newcommand*\warekitoday{}
+%%<*> \warekikanjitoday : \warekikanjidate string of today
+\newcommand*\warekikanjitoday{}
+%%<*> \warekijkanjitoday : \warekijkanjidate string of today
+\newcommand*\warekijkanjitoday{}
+
+%%<*> \warekisetdate{<year>}{<month>}{<day>}
+\newcommand*\warekisetdate[3]{%
+ \begingroup
+ \bxwy@assign@date{#1}{#2}{#3}%
+ \bxwy@calc@wareki@year
+ \endgroup
+ \let\warekigengo\bxwy@g@gengo
+ \bxwy@setcounter{warekiyear}{\bxwy@g@year}%
+ \let\bxwy@date\bxwy@g@date
+ \bxwy@render@date}
+
+%%<*> \warekisettoday
+\newcommand*\warekisettoday{%
+ \warekisetdate\year\month\day}
+
+%%<+> \WarekiSetToday
+\newcommand*\WarekiSetToday{%
+ \begingroup
+ \bxwy@assign@date\year\month\day
+ \bxwy@calc@wareki@year
+ \endgroup
+ \let\bxwy@today@gengo\bxwy@g@gengo
+ \let\bxwy@today@year\bxwy@g@year
+ \let\bxwy@today@date\bxwy@g@date
+ \bxwy@render@today}
+
+%%<+> WarekiIfCustomDateAvailable{<true>}{<false>}
+\newcommand*\WarekiIfCustomDateAvailable{%
+ \ifbxwy@customdate@ok \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi}
+
+%%<*> \warekicustomdate
+\newcommand*\warekicustomdate[1]{%
+ \warekidate}% fallback
+
+%--------------------------------------- start up
+
+%% load submodules
+\ifbxwy@customdate@ok
+ \input{bxwareki-cd.def}
+\fi
+
+%% set 'date' to today
+\warekisettoday
+% copy 'date' to 'today'
+\let\bxwy@today@gengo\warekigengo
+\edef\bxwy@today@year{\the\c@warekiyear}
+\let\bxwy@today@date\bxwy@date
+\let\warekitoday\warekidate
+\let\warekikanjitoday\warekikanjidate
+\let\warekijkanjitoday\warekijkanjidate
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/BX/bxwareki/bxwareki.tex b/language/japanese/BX/bxwareki/bxwareki.tex
new file mode 100644
index 0000000000..ac00bc9be7
--- /dev/null
+++ b/language/japanese/BX/bxwareki/bxwareki.tex
@@ -0,0 +1,240 @@
+% LuaLaTeX document; UTF-8
+\documentclass[a4paper]{article}
+\usepackage[scale=0.75]{geometry}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{0.6}
+\newcommand{\PkgDate}{2019/06/01}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\textit{#1}$\rangle$}
+\newcommand{\Note}{\par\noindent\emph{Note:}\quad}
+\newcommand{\Ie}{i.\,e.}
+\newcommand{\Eg}{e.\,g.}
+\newcommand{\Means}{~:\quad}
+\usepackage{bxtexlogo}
+\bxtexlogoimport{*,ApTeX,JTeX}
+% Japanese something
+\usepackage{fontspec}
+\newfontfamily{\fIpaex}{IPAexMincho}[Scale=0.95]
+\newcommand*{\Ja}[1]{{\fIpaex#1}}
+\newcommand*{\+}{\hspace{0.25em minus 0.25em}}
+%-----------------------------------------------------------
+\begin{document}
+\title{The \Pkg{bxwareki} package}
+\author{Takayuki YATO\quad (aka.~``ZR'')}
+\date{v\PkgVersion \quad[\PkgDate]}
+\maketitle
+
+%===========================================================
+\section{Overview}
+\label{sec:Overview}
+
+This package provides commands to convert from the Gregorian calendar
+(2018/8/28) to the Japanese rendering of the Japanese calendar
+(\Ja{平成\+30\+年\+8\+月\+28\+日}).
+You can choose whether the numbers are written
+in Western numerals (28) or kanji numerals (\Ja{二八}).
+The package is aware of the current era name,
+\emph{Reiwa}~(\Ja{令和}).
+
+Note that the package only deals with dates in the year 1873 or later,
+where the Japanese calendar is really a Gregorian calendar
+with the different notation of years.
+
+\paragraph{System requirement}
+
+\begin{itemize}
+\item \TeX{} format: \LaTeX.
+\item \TeX{} engine: {\pdfTeX}, {\LuaTeX}, {\XeTeX},
+ {\pTeX}, {\upTeX}, {\ApTeX} ({\pTeX}-ng), NTT-{\JTeX}.
+\end{itemize}
+
+\Note The modern (post-1873) Japanese calendar (\emph{wareki}; \Ja{和暦})
+can be regarded as a variant of Gregorian calendar
+where only the notation of years differs from the original.
+To avoid confusion, this document refers to the original Gregorian
+calendar as the \emph{Western calendar},
+which corresponds to the Japanese term \emph{seireki} (\Ja{西暦}).
+
+%===========================================================
+\section{Package Loading}
+\label{sec:Loading}
+
+No options are available.
+
+\begin{quote}\small\begin{verbatim}
+\usepackage{bxwareki}
+\end{verbatim}\end{quote}
+
+%===========================================================
+\section{Usage}
+\label{sec:Usage}
+
+%-------------------
+\subsection{Conversion from the given date}
+
+\begin{itemize}
+\item |\warekisetdate{|\Meta{year}|}{|\Meta{month}|}{|\Meta{day}|}|\Means
+ Converts from the specified Western date.
+ The result will be rendered by the commands described
+ at the following items, where the result for the invocation
+ |\warekisetdate{2018}{8}{28}|
+ will be shown as example.
+
+ \Note Although the Japanese calendar differs from the Western calendar
+ only in the notation of years,
+ the value of months and days are still required,
+ since the notation of the year in which
+ \emph{kaigen} (\Ja{改元}; change of gengo)
+ occurs depends on months and days.
+
+\item |\warekisettoday|\Means
+ Does |\warekisetdate| with the current date.
+
+\item Counter |warekiyear|\Means
+ The year number (within the gengo); \Eg~``\Ja{30}''.
+
+ \Note Unlike ordinary counters,
+ the assignment to |warekiyear| by |\warekisetdate| is \emph{local}.
+ Moreover, manual assignment to this counter is not supported.
+
+\item |\warekigengo|\Means
+ The gengo in kanji, \Eg~``\Ja{平成}''.
+
+\item |\warekigengoinitial|\Means
+ The initial Latin letter of the gengo, \Eg~``\Ja{H}''.
+
+\item |\warekiyear|\Means
+ The full notation of the year (without `\Ja{年}'),
+ \Eg~``\Ja{平成\+30}''.
+
+ \Note When the year number is one,
+ the kanji `\Ja{元}' is used instead of the numeral `\Ja{1}'.
+
+\item |\warekidate|\Means
+ The date string, \Eg~``\Ja{平成\+30\+年\+8\+月\+28\+日}''.
+
+\item |\warekikanjidate|\Means
+ The date string using kansuji (kanji numerals),
+ \Eg~``\Ja{平成三〇年八月二八日}''.
+
+\item |\warekijkanjidate|\Means
+ The date string using ``kansuji-by-reading''
+ (that is, kanji rendering of numbers in the Japanese language),
+ \Eg.``\Ja{平成三十年八月二十八日}''.
+
+\item |\warekicustomdate{|\Meta{option}|}|\Means
+ The date string in the form specified with the option.
+ The option is a string of letters such as |wk|
+ and each letter means a specific setting.
+ When the option is empty, the date is rendered in the form
+ ``\Ja{2018\+年\+8\+月\+28\+日}'' (using the Western calendar).
+ The available option letters are:
+ \begin{itemize}
+ \item |w|\Means
+ uses Japanese calendar (\Ja{2018\+年} $\to$ \Ja{平成\+30\+年});
+ \item |k|\Means
+ uses kansuji (\Ja{28} $\to$ \Ja{二八});
+ \item |j|\Means
+ uses kansuji-by-reading (\Ja{28} $\to$ \Ja{二十八});
+ \par\smallskip
+ \Note Western years does not support kansuji-by-reading
+ and thus |k| will be applied instead
+ (\Ja{二〇一八}, not \Ja{二千十八}).
+ \item |J|\Means
+ variant of |j| where ``ten's multiple'' kanji characters
+ (\Ja{廿} and \Ja{卅}) are employed (\Ja{28} $\to$ \Ja{廿八});
+ \item |o|\Means
+ uses \emph{imyo} (\Ja{異名}) for months%
+ \footnote{Don't ask me if this form is ever used in {\LaTeX} document!}
+ (\Ja{8\+月} $\to$ \Ja{葉月}).
+ \end{itemize}
+
+ \Note This command is supported only on {\pdfLaTeX}, {\XeLaTeX},
+ {\LuaLaTeX}, {\upLaTeX}, {Ap\LaTeX} and recent versions of {\pLaTeX}.
+ On other engines it simply falls back to |\warekidate|.
+
+\item |\WarekiIfCustomDateAvailable{|\Meta{true}|}{|\Meta{false}|}|\Means
+ Tests if the command |\warekicustomdate| is
+ supported on the engine in use.
+\end{itemize}
+
+%-------------------
+\subsection{Current date}
+
+These commands always represent the current date,
+and are not affected by |\warekisetdate| (or |\warekisettoday|).
+
+\begin{itemize}
+\item |\warekitoday|\Means
+ The |\warekidate| form of the current date.
+\item |\warekikanjitoday|\Means
+ The |\warekikanjidate| form.
+\item |\warekijkanjitoday|\Means
+ The |\warekijkanjidate| form.
+\end{itemize}
+
+%-------------------
+\subsection{Inter-alphabet-kanji glues}
+
+In quality Japanese typesetting, a thin space
+(\emph{shibuaki}; \Ja{四分空き}) must be inserted
+between an alphabet letter and a kanji letter.
+This package by default inserts a command
+suitable for the most prevalent Japanese-typesetting environment
+for the engine in use.
+
+\begin{itemize}
+\item On {\pLaTeX}, {\upLaTeX} and {Ap\LaTeX}:
+ Nothing is inserted,
+ since the engine can automatically insert shibuaki spaces.
+\item On {\LuaLaTeX} and {\XeLaTeX}:
+ Nothing is inserted,
+ on the assumption that the package for Japanese typesetting
+ (such as \Pkg{\LuaTeX-ja} and \Pkg{xeCJK})
+ will automatically insert shibuaki spaces.
+\item On {\LaTeX} and {\pdfLaTeX}:
+ |~| is inserted,
+ on the assumption that the \Pkg{CJK} package is employed
+ and |\CJKtilde| is in effect.
+\end{itemize}
+
+On the engines with {\eTeX} extension,
+the command for shibuaki can be changed with the following commands:
+\begin{itemize}
+\item |\WarekiUseCustomInterGlue{|\Meta{text}|}|\Means
+ Uses \Meta{text} for making shibuaki spaces.
+\item |\WarekiUseNormalInterGlue|\Means
+ Reverts |\WarekiUseCustomInterGlue|
+ and uses the normal setting.
+\end{itemize}
+
+%===========================================================
+\section{Notices for {\TeX} programmers}
+\label{sec:Allez}
+
+\begin{itemize}
+\item On the engines with native kanji/Unicode support
+ (\Ie~{\LuaLaTeX}, {\XeLaTeX}, {\pLaTeX}, {\upLaTeX}, and {Ap\LaTeX}),
+ the content (one-level expansion) of |\wareki...date|
+ (except |\warekicustomdate|) and |\wareki...today|
+ is a simple string of character tokens,
+ unless |\WarekiUseCustomInterGlue| is in effect.
+ The same holds for {\LaTeX} and {\pdfLaTeX},
+ except that each kanji character is
+ represented by the sequence of activated byte tokens
+ and |~| is inserted as shibuaki spaces.
+\item On the engines with native kanji/Unicode support,
+ |\warekicustomdate| fully expands to a simple string
+ of character tokens
+ (again without |\WarekiUseCustomInterGlue|),
+ and the situation on {\LaTeX} and {\pdfLaTeX}
+ is parallel to that described at the previous item.
+\item The use of |\WarekiUseCustomInterGlue|
+ does not break the full expandability
+ of |\wareki...date| and |\wareki...today|
+ on the engines with native kanji/Unicode support.
+\end{itemize}
+
+%===========================================================
+\end{document}
diff --git a/language/japanese/BX/bxwareki/bxwareki2019.def b/language/japanese/BX/bxwareki/bxwareki2019.def
new file mode 100644
index 0000000000..438a5bdba1
--- /dev/null
+++ b/language/japanese/BX/bxwareki/bxwareki2019.def
@@ -0,0 +1,3 @@
+E4BBA4:4EE4:4E61:l44
+E5928C:548C:4F42:l83
+R
diff --git a/language/japanese/CJK b/language/japanese/CJK
new file mode 120000
index 0000000000..b9aefe6123
--- /dev/null
+++ b/language/japanese/CJK
@@ -0,0 +1 @@
+../chinese/CJK \ No newline at end of file
diff --git a/language/japanese/README.CJK b/language/japanese/README.CJK
new file mode 100644
index 0000000000..432baee019
--- /dev/null
+++ b/language/japanese/README.CJK
@@ -0,0 +1,5 @@
+The CJK package, for setting Chinese, Japanese and Korean, is
+available via directory tex-archive/language/japanese/CJK, even
+though it does not necessarily show up in via this directory in the
+`quote site index' command
+
diff --git a/language/japanese/bxcjkjatype/LICENSE b/language/japanese/bxcjkjatype/LICENSE
new file mode 100644
index 0000000000..9e7e5a082c
--- /dev/null
+++ b/language/japanese/bxcjkjatype/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2016 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/bxcjkjatype/README-ja.md b/language/japanese/bxcjkjatype/README-ja.md
new file mode 100644
index 0000000000..f92de5499f
--- /dev/null
+++ b/language/japanese/bxcjkjatype/README-ja.md
@@ -0,0 +1,284 @@
+BXcjkjatype パッケージバンドル
+==============================
+
+LaTeX: pdfLaTeX と CJK パッケージを利用した日本語組版の支援
+
+本パッケージは、日本語組版に適した CJK パッケージの設定を提供する。その
+上で、pLaTeX ユーザにとって CJK パッケージの使用が容易にするために、
+pLaTeX カーネルや pLaTeX 用パッケージのものに類似した命令を提供する。
+
+なお、CJK パッケージ自体は多種の入力エンコーディングをサポートしている
+が、本パッケージでは UTF-8 のみをサポートすることに注意。
+
+### 前提環境
+
+ * フォーマット: LaTeX
+ * エンジン: pdfTeX(DVI・PDF モード共に可)
+ * DVIウェア: 不問
+ - 既定以外のフォント設定では dvipdfmx/pdfTeX が必須。
+ * 依存パッケージ:
+ - CJK、CJKutf8、CJKspace、CJKpunct、etoolbox
+ - ipaex-type1(既定のフォントマップ使用時)
+ - zhmetrics(既定以外のフォントマップ使用時)
+
+### インストール
+
+ - `*.sty` → $TEXMF/tex/latex/BXcjkjatype
+
+bxcjkjatype パッケージ
+----------------------
+
+### パッケージ読込
+
+ \usepackage[<option>,...]{bxcjkjatype}
+
+利用可能なオプションを以下で挙げる。
+
+#### 自動囲み込み
+
+文書本体を `CJK(*)` 環境で自動的かつ安全に囲うためのオプション。文書中に
+多量の CJK テキストが含まれる場合、或いは「動く引数」に CJK テキストが
+含まれる場合はこれを指定するのが適切である。
+
+ * `whole`、`wholeCJK*`: 文書全体を `CJK*` 環境で囲む。(厳密に言うと
+ `\begin{uCJK*}`~`\end{uCJK*}` で囲む。)
+ * `wholeCJK`: 文書全体を `CJK` 環境で囲む。(厳密に言うと
+ `\begin{uCJK}`~`\end{uCJK}` で囲む。)
+ * `nowhole`(既定): `wholeCJK*` 及び `wholeCJK` の否定。
+
+#### 「自動チルダ」
+
+`autotilde` オプションを指定すると、`\CJKtilde` が自動的に呼び出されて
+`~` が和欧文間空白(四分空き)の意味になる。なお、`\CJKtilde` 有効時は
+`\nbs` で非分割欧文空白(本来の `~` の意味)が挿入できる。また、
+`\standardtilde` は `\CJKtilde` の効力を打ち消す。(これらは CJK
+パッケージの機能である。)
+
+ * `autotilde`: 全ての `CJK(*)` 環境の先頭で `\autotilde` が呼び出され
+ るようにする。
+ * `noautotilde`(既定): `autotilde` の否定。
+
+#### フォントマップ設定
+
+[pxchfon パッケージ] と同等のフォントマップのプリセットが利用できる。
+詳細についてはそちらの解説文書を参照されたい。
+
+ * `oneweight`、`nooneweight`: pxchfon と同様。
+ * pxchfon で利用可能なプリセットオプション(`ms` 等)が利用できる。
+ (旧式のものを除く。)
+ * `ttfname=<パターン>`: TTC 代替(後述)を行う場合の TTF フォント名の
+ パターンを指定する。
+ * `ipaex-type1`: 本パッケージのフォント管理を無効にし、ipaex-type1
+ パッケージのファミリ(`ipxm` と `ipxg`)を直接用いる。この設定では
+ `\mcdefault` の値は `ipxm` に、`\gtdefault` の値は `ipxg` になる。
+
+[pxchfon パッケージ]: http://www.ctan.org/pkg/pxchfon
+
+#### CJK フォントスケール
+
+ * `scale=<実数>`: CJK フォントに対するスケール値を設定する。
+
+※0.3 版より、`ipaex-type1` 指定時も CJK フォントスケールが利用できるよう
+になった。
+
+#### その他のオプション
+
+ * `everypage`: フォントマップ情報を出力 DVI 文書の全てのページに出力
+ する。`dvipdfmx` ドライバでのみ有効。
+ * `noeverypage`(既定): `everypage` の否定。
+ * ドライバオプション:
+ `pdftex`、`dvipdfmx`、`dvips`、`none` が指定できる。ドライバ設定は
+ 既定(ipaex-type1)以外のフォントマップの使用時にのみ意味をもつ。
+ さらに、フォントマップ変更は `pdftex` と `dvipdfmx` でのみサポート
+ されまたこの 2 つの値は常に自動判定可能(PDF モードでは `pdftex`、
+ DVI モードでは `dvipdfmx` が既定)なので、実際にはドライバを指定する
+ 必要はない。
+ * `substmingoth`: CJK パッケージの日本語用総称ファミリとして慣習的に
+ 使われているファミリの `min`/`goth`/`maru` について、LaTeX レベル
+ で、本パッケージにおける標準ファミリである `mc`/`gt`/`mg` への代替
+ を設定する。これにより、`min` 等のファミリの使用を前提とした日本語湯
+ テンプレート等を使う場合においても、論理フォントレベルでの代替設定を
+ 行う必要がなくなる。
+ * `nosubstmingoth`(既定): `substmingoth` の否定。
+ * `boldbyembolden`(既定): CJK パッケージの“擬似太字”(`\CJKbold`)
+ の処理方法を“重ね打ち”から“合成太字”に変更する。
+ * `noboldbyembolden`: `boldbyembolden` の否定。
+
+#### TTC 代替
+
+pdfTeX エンジンは TTC 形式のフォントをサポートしていない(サポートして
+いる OpenType の形式は単体の TTF グリフのものだけである)。従って、
+`\setminchofont` 命令などで TTC フォントを使おうと望むなら、適当なツール
+を使って TTC フォントファイルを個々の TTF フォントファイルに分解する処理
+を行うことが必須になる。
+
+これはエンジン側の制限仕様のため仕方がないだろう。しかし本パッケージを
+用いる場合には他に問題がある。変換後の TTF フォントはファイル名が元のもの
+と異なるため、プリセット設定(`mobo-moga` 等のオプション)が使えないので
+ある。これを解決するために、0.3 版で `ttfname` オプションが新設された。
+
+例えば、パッケージ読込時に `ttfname=*_1` が指定されたとする。この状態で
+本パッケージの処理において「mogam.ttc の最初(0 番)」が要求された場合、
+代わりに「mogam_1.ttf」というファイルが使われる。同様に、「mogam.ttc の
+1 番、2 番、……」については「mogam_2.ttf」「mogam_3.ttf」……での代替が
+行われる。
+
+`ttfname` で指定するファイル名のパターンには「`*_1`」「`TEMP-*-00.TTF`」
+のように「`*` を 1 つ含み、数字列を含む文字列」が指定できる。この `*` の
+部分は要求の TTC ファイルのベース名(`mogam` 等)で置き換えられ、かつ、
+拡張子がない場合は `.ttf` が補われる。その結果の文字列が TTC の最初(0
+番)のフォントに対する代替ファイル名となる。後続(1 番、2 番、……)の
+代替ファイル名は数字部分をインクリメントしたものになる。
+
+### 機能
+
+#### CJK フォントの選択
+
+本パッケージでは、pLaTeX + [japanese-otf パッケージ] で用いられるものと
+同等の 3 つの「総称」CJK ファミリを用意する: 明朝(`\mcfamily`)、
+ゴシック(`\gtfamily`)、丸ゴシック(`\mgfamily`)。既定では ipaex-type1
+パッケージのフォントが割り当てられている:明朝→IPAex明朝、ゴシック→
+IPAexゴシック。この割り当ては変更可能である。
+
+ * `\mcfamily`: CJK ファミリを明朝ファミリに変更する。
+ `\CJKfamily{\mcdefault}` と等価である。
+ * `\gtfamily`: CJK ファミリをゴシックファミリに変更する。
+ `\CJKfamily{\gtdefault}` と等価である。
+ * `\mgfamily`: CJK ファミリを丸ゴシックファミリに変更する。
+ `\CJKfamily{\mgdefault}` と等価である。
+
+高度な命令:
+
+ * `\mcdefault`/`\gtdefault`/`\mgdefault`: 総称ファミリに対応する
+ CJK ファミリ名である。標準の割当ではこれらの値は `mc`/`gt`/`mg` で
+ ありこの割当が既定で用いられる。
+
+ * `\setCJKfamilydefault{<CJKファミリ>}`: 既定の CJK ファミリを設定
+ する。この既定値は、ある種の命令(例えば `\CJKfamily{}` や
+ `\begin{CJK}{UTF8}{}`)でファミリ名が省略された時に用いられる。
+ (再定義後の)`\normalfont` は CJK ファミリをこの命令で設定した既定
+ ファミリに変更する。
+
+ この既定ファミリの既定値は、文書の本体の先頭で有効である欧文ファミリ
+ の「対応ファミリ」となる。(次小節を参照。)
+
+[japanese-otf パッケージ]: http://www.ctan.org/pkg/japanese-otf
+
+#### CJK と欧文のファミリの連動
+
+CJK パッケージ(および pTeX エンジン)では CJK と欧文で別々の「現在
+ファミリ」を管理する。この取扱は利点もあるが、多くの場合はこの 2 つの
+「現在ファミリ」を連動させた方が都合がよい。この為、本パッケージでは現在
+欧文フォントを切り替える幾つかの LaTeX 命令について、CJK ファミリを欧文
+の「対応ファミリ」に切り替えるように再定義する。ここで「対応ファミリ」は
+以下のように定められる:
+
+ * `\rmfamily`(セリフ) → `\mcfamily`(明朝)
+ * `\sffamily`(サンセリフ) → `\gtfamily`(ゴシック)
+ * `\ttfamily`(等幅) → `\gtfamily`(ゴシック)
+ * その他のファミリについては、対応ファミリは `\mcfamily` とする。
+
+再定義される命令:
+
+ * `\rmfamily`/`\sffamily`/`\ttfamily`: 本来の動作の後、CJKファミリ
+ を欧文ファミリの「対応ファミリ」に変更する。
+ * `\normalfont`: CJK ファミリを、`\setCJKfamilydefault` 命令により
+ 指定された既定 CJK ファミリに変更する。
+
+`CJK`/`CJK*` 環境の省略系:
+
+ * `\begin{uCJK*}...\end{uCJK*}`: 次のものと等価:
+
+ \begin{CJK*}{UTF8}{対応ファミリ}...\end{CJK*}
+
+ ただし `対応ファミリ` は現在の欧文ファミリの対応ファミリを表す。
+
+ 次のものと等価ではないことに注意:
+
+ \begin{CJK*}{UTF8}{}...\end{CJK*}
+
+ こちらは既定の CJK ファミリを使用する。
+
+ * `\begin{uCJK}...\end{uCJK}`: 次のものと等価:
+
+ \begin{CJK}{UTF8}{対応ファミリ}...\end{CJK}
+
+#### フォントマップ設定
+
+これらの命令の使い方は pxchfon パッケージの時と同じであるので、詳細に
+ついてはそちらの解説文書を参照されたい。
+
+ * `\setminchofont[<ID>]{<フォントファイル名>}`
+ * `\setgothicfont[<ID>]{<フォントファイル名>}`
+ * `\setmarugothicfont[<ID>]{<フォントファイル名>}`
+ * `\setmediumminchofont[<ID>]{<フォントファイル名>}`
+ * `\setboldminchofont[<ID>]{<フォントファイル名>}`
+ * `\setmediumgothicfont[<ID>]{<フォントファイル名>}`
+ * `\setboldgothicfont[<ID>]{<フォントファイル名>}`
+ * `\setxboldgothicfont[<ID>]{<フォントファイル名>}`
+
+ところが、pdfTeX エンジンについてはフォントマップの仕様に関して重大な
+制限が存在する。TrueType グリフであってかつ TTC 形式でないフォントのみ
+が使用できる。(dvipdfmx 使用時は全ての種類の OpenType フォントが使用
+可能。)
+
+注意: 本パッケージは「明朝・細字」のフォントをサポートしない。従って、
+`\setlightminchofont` は動作しない。
+
+#### その他の命令
+
+ * `\UTF{<16進数字>}`: CJK 文字を Unicode 符号値で入力する。例えば、
+ `\UTF{5B57}` は `\Unicode{"5B}{"57}` と等価である。
+
+ * `\CJKforce{<character>...}`: 以降は引数の中にある各々の文字を CJK
+ 文字として扱う(CJK フォントで出力される)。
+
+ * `\CJKunforce{<character>...}`: `\CJKforce` の効果を打ち消す。
+
+ * `\@<character>`: 非 ASCII 文字の前に `\@` がある場合は、その文字
+ (その出現のみ)を CJK 文字として扱う。ASCII 文字の前の `\@` は
+ LaTeX 本来の意味を保持する。
+
+ * `\CJKecglue`: 和欧文間空白を挿入する。`\CJKtilde` が有効な時は `~`
+ はこの命令を呼び出す。この命令をユーザが再定義して和欧文間空白の量を
+ 調節することができる(和文間空白の `\CJKglue` と同様)。
+
+ 使用例:
+
+ \renewcommand{\CJKecglue}{\hspace{0.125em minus 0.125em}}
+
+### 補足事項
+
+ * 本パッケージで標準に用いられるフォントは、例えそれに ipaex-type1 の
+ フォントが割り当てられている場合でも、縦書きをサポートしない。しかし
+ ipaex-type1 が提供するファミリ(`ipxm` と `ipxg`)は縦書きをサポート
+ しており、`ipaex-type1` オプションを指定することでそれらのファミリを
+ 直接使うことができる。
+
+更新履歴
+--------
+
+ * Version 0.3 ‹2016/10/15›
+ - CJKvert パッケージによる縦組と共存を可能にした。
+ - hyperref での PDF 文字列の文字化けを防止し。
+ - `ipaex-type1` 指定時もフォントスケールを可能にした。
+ - `boldbyembolden` 機能を実装。
+ - `ttfname` オプションを追加。
+ - `substmingoth` オプションを追加。
+
+ * Version 0.2c ‹2013/10/18›
+ - CJK フォントスケールをサポートした。
+ - `\CJKforce`、`\CJKunforce`、`\@` を追加。
+
+ * Version 0.2b ‹2013/09/28›
+ - `\UTF`、`\CJKecglue` を追加。
+
+ * Version 0.2a ‹2013/08/08›
+ - `autotilde` オプションを追加。
+
+ * Version 0.2 ‹2013/08/08›
+ - 最初の公開版。
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/bxcjkjatype/README.md b/language/japanese/bxcjkjatype/README.md
new file mode 100644
index 0000000000..1a2fe8242d
--- /dev/null
+++ b/language/japanese/bxcjkjatype/README.md
@@ -0,0 +1,282 @@
+BXcjkjatype Package
+===================
+
+LaTeX: Support for Japanese typesetting with pdfLaTeX and CJK package
+
+This package provides working configuration of the CJK package suitable
+for Japanese typesetting of moderate quality. Moreover, it facilitates
+use of the CJK package for pLaTeX users, by providing commands that
+are similar to those used by the pLaTeX kernel and some other packages
+used with it.
+
+Note that while the CJK package supports many input encodings, this
+package supports only UTF-8.
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: pdfTeX (DVI or PDF mode).
+ * DVI driver: Anything.
+ - Non-default font settings require dvipdfmx or pdfTeX.
+ * Dependent packages:
+ - CJK, CJKutf8, CJKspace, CJKpunct, etoolbox;
+ - ipaex-type1 (when using default font mapping);
+ - zhmetrics (when using non-default font mapping).
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/latex/BXcjkjatype
+
+### License
+
+This package is distributed under the MIT License.
+
+The bxcjkjatype Package
+-----------------------
+
+### Package Loading
+
+ \usepackage[<option>,...]{bxcjkjatype}
+
+The available options are described hereafter.
+
+#### Options for auto-wrapping
+
+These options enable one to wrap the document body with a `CJK(*)`
+environemnt automatically and safely. They are suitable when a document
+contains much amount of CJK text, or some “moving arguemnts” hold
+CJK text.
+
+ * `whole`, `wholeCJK*`: Wraps the whole document body with a `CJK*`
+ environment (precisely speaking, with
+ `\begin{uCJK*}` ... `\end{uCJK*}` ).
+ * `wholeCJK`: Wraps the whole document body with a `CJK` environment
+ (precisely speaking, with
+ `\begin{uCJK}` ... `\end{uCJK}` ).
+ * `nowhole` (default): Negation of `wholeCJK*` or `wholeCJK`.
+
+#### Options for “auto-tilde”
+
+The option `autotilde` triggers automatic invocation of `\CJKtilde`,
+which makes a tilde character (`~`) insert “shibuaki” (a thin space
+between alphabetic and ideographic letters) rather than a no-break
+space (standard). No-break spaces can still be inserted by the command
+`\nbs`, and `\standardtilde` cancels the effect of `\CJKtilde`. (The
+commands mentioned here belong to CJK package.)
+
+ * `autotilde`: Makes `\CJKtilde` invoked at the beginning of every
+ `CJK(*)` environemnt.
+ * `noautotilde` (default): Negation of `autotilde`.
+
+#### Options for font-mapping
+
+One can use preset font mappings in the same way as in the [pxchfon
+package]. Please refer to the manual of that package for detailed
+explanation of this feature.
+
+ * `oneweight`, `nooneweight`: The same as in pxchfon.
+ * One can use font preset options (such as `ms`) which are available
+ in pxchfon (except obsolete ones).
+ * `ttfname=<pattern>`: Specifies the pattern of the TTF font names
+ which are used when TTC substitution is employed. For example,
+ when `ttfname=*_1` is given, the font “index 0 of mogam.ttc” will
+ map to “mogam_1.ttf”, and similarly, “index 1” to “mogam_2.ttf”
+ and so on.
+ * `ipaex-type1`: Disables the font management of this package and
+ directly uses the families provided by the ipaex-type1 package,
+ namely `ipxm` and `ipxg`. In this setting the value of `\mcdefault`
+ is `ipxm` and the value of `\gtdefault` and `\mgdefault` is `ipxg`,
+ so that the higher level commands (such as `\sffamily` and
+ `\gtfamily`) can work correctly.
+
+[pxchfon package]: http://www.ctan.org/pkg/pxchfon
+
+#### Options for CJK font scaling
+
+ * `scale=<real>`: Sets the scaling factor for CJK fonts.
+
+(With version 0.3 or later, one can employ the scaling even with the
+`ipaex-type1` option.)
+
+#### Other options
+
+ * `everypage`: Outputs the font mapping information on every page of
+ the resulted DVI document. Available only with `dvipdfmx` driver.
+ * `noeverypage` (default): Negation of `everypage`.
+ * driver options:
+ `pdftex`, `dvipdfmx`, `dvips` and `none` are available. The driver
+ setting is relevant only when using font mappings other than the
+ default one (ipaex-type1 fonts), so one need not care of drivers
+ in using default fonts. Moreover, non-default font mappings are
+ supported only by `pdftex` and `dvipdfmx`, and these two values are
+ auto-detected (`pdftex` is default in PDF mode and `dvipdfmx` in
+ DVI mode). Thus one will never need to specify the driver.
+ * `substmingoth`: Applies the substituion of families `min`, `goth`
+ and `maru` (used conventionally for Japanese) with families `mc`,
+ `gt` and `mg` (standard in this package).
+ * `nosubstmingoth` (default): Negation of `substmingoth`.
+ * `boldbyembolden` (default): Changes the implemention of `\CJKbold`
+ (pseudo-bold) from “overstriking” to “synthetic emboldening”.
+ * `noboldbyembolden`: Negation of `boldbyembolden`.
+
+### Usage
+
+#### Selecting CJK fonts
+
+The present package provides three “generic” CJK families in the same
+way as pLaTeX plus the [japanese-otf package]: Mincho family
+(`\mcfamily`), Gothic family (`\gtfamily`), and Maru-gothic family
+(`\mgfamily`). In default setting, the font set from the ipaex-type1
+package are allocated; Mincho family uses IPAex Mincho font, and Gothic
+and Maru-gothic families use IPAex Gothic font. This allocation can be
+altered by users.
+
+ * `\mcfamily`: Changes the CJK family to Mincho family. Equivalent
+ to `\CJKfamily{\mcdefault}`.
+ * `\gtfamily`: Changes the CJK family to Gothic family. Equivalent
+ to `\CJKfamily{\gtdefault}`.
+ * `\mgfamily`: Changes the CJK family to Maru-gothic family.
+ Equivalent to `\CJKfamily{\mgdefault}`.
+
+More advanced commands:
+
+ * `\mcdefault`/`\gtdefault`/`\mgdefault`: The names of CJK families
+ corresponding to the three generic families. In the standard
+ allocation their values are `mc`/`gt`/`mg` respectively and the
+ allocation is used as default.
+
+ * `\setCJKfamilydefault{<CJK-family>}`: Declares the default CJK
+ family. This default value is used when family names are missing
+ in some commands, such as `\CJKfamily{}` and `\begin{CJK}{UTF8}{}`.
+ The (redefined) `\normalfont` also switches the CJK family to the
+ family specified by this command.
+
+ The default value of this default family is the “counterpart” of
+ the alphabetic font family which is in effect at the beginning of
+ the document body. (See the next subsection.)
+
+[japanese-otf package]: http://www.ctan.org/pkg/japanese-otf
+
+#### Synchronization of CJK and non-CJK families
+
+The CJK package (and pTeX engine) manages separate “current families”
+for CJK and alphabetic (non-CJK) families. While this treatment has its
+merit, synchronization of the two “current families” is convenient in
+many cases. Accordingly, tHe present package redefines some of the
+LaTeX commands that switches current alphabetic font families so that
+the CJK family will be switched to the counterpart of the current
+alphabetic family, where the “counterpart” is defined as follows:
+
+ * `\rmfamily` (Serif) → `\mcfamily` (Mincho)
+ * `\sffamily` (Sans-serif) → `\gtfamily` (Gothic)
+ * `\ttfamily` (Monospace) → `\gtfamily` (Gothic)
+ * The counterpart of the other families is `\mcfamily`.
+
+Redefined commands:
+
+ * `\rmfamily`/`\sffamily`/`\ttfamily`: Changes the CJK family to
+ the counterpart of the alphabetic font family after executing the
+ original function.
+ * `\normalfont`: Changes the CJK family to the default CJK family
+ specified by `\setCJKfamilydefault` command.
+
+There are shorthand forms of `CJK`/`CJK*` environemnts:
+
+ * `\begin{uCJK*}...\end{uCJK*}`: Equivalent to:
+
+ \begin{CJK*}{UTF8}{counterpart}...\end{CJK*}
+
+ where `counterpart` means the counterpart of the current alphabetic
+ font family.
+
+ Note that this is *not* equivalent to
+
+ \begin{CJK*}{UTF8}{}...\end{CJK*}
+
+ structure, which uses the default CJK family.
+
+ * `\begin{uCJK}...\end{uCJK}`: Equivalent to:
+
+ \begin{CJK}{UTF8}{counterpart}...\end{CJK}
+
+#### Font mapping
+
+The usage of these commands are the same as in the pxchfon package.
+Please refer to the manual of that package for detail.
+
+ * `\setminchofont[<id>]{<font-file>}`
+ * `\setgothicfont[<id>]{<font-file>}`
+ * `\setmarugothicfont[<id>]{<font-file>}`
+ * `\setmediumminchofont[<id>]{<font-file>}`
+ * `\setboldminchofont[<id>]{<font-file>}`
+ * `\setmediumgothicfont[<id>]{<font-file>}`
+ * `\setboldgothicfont[<id>]{<font-file>}`
+ * `\setxboldgothicfont[<id>]{<font-file>}`
+
+However there is a major limitation as to the use of font mapping with
+the pdfTeX engine. One can use only TrueType fonts and moreover
+TTC format is not allowed. (One can use any flavor of OpenType fonts
+when using dvipdfmx.)
+
+Note: The present package does not support the light-weight Mincho font,
+and thus `\setlightminchofont` does nothing useful.
+
+#### Other commands
+
+ * `\UTF{<hexadecimal-number>}`: Inputs a CJK character through Unicode
+ codepoint value. `\UTF{5B57}` is equivalent to `\Unicode{"5B}{"57}`.
+
+ * `\CJKforce{<character>...}`: Afterwards Treats the characters given
+ in the argument as CJK characters (printed using CJK fonts).
+
+ * `\CJKunforce{<character>...}`: Cancels the effect of the `\CJKforce`
+ command.
+
+ * `\@<character>`: Treats the next character (only that occurrence)
+ as a CJK character, when the character is outside ASCII; othersize
+ the normal meaning of `\@` is retained.
+
+ * `\CJKecglue`: Insers a “shibuaki” space. This will be invoked by
+ `~` when `\CJKtilde` is in effect. This command can be redefined by
+ users to adjust the value of shibuaki space, just as `\CJKglue` can
+ be redefined to adjust inter-ideographic space.
+
+ For example:
+
+ \renewcommand{\CJKecglue}{\hspace{0.125em minus 0.125em}}
+
+### Remarks
+
+ * The standard font families provided by this package does *not*
+ support vertical writing, even when using default ipaex-type1 font
+ set. However, the families provided by ipaex-type1 (`ipxm` and
+ `ipxg`) do support vertical writing, and one can utilize these
+ families directly by specifying `ipaex-type1` option.
+
+Revision History
+----------------
+
+ * Version 0.3 ‹2016/10/15›
+ - Made the vertical writing work well (with CJKvert).
+ - Avoided garbling of PDF strings created by hyperref.
+ - Allowed font scaling even when `ipaex-type1` is set.
+ - Added `boldbyembolden` feature.
+ - Added `ttfname` option.
+ - Added `substmingoth` option.
+
+ * Version 0.2c ‹2013/10/18›
+ - Added support of CJK font scaling.
+ - Added `\CJKforce`, `\CJKunforce`, `\@`.
+
+ * Version 0.2b ‹2013/09/28›
+ - Added `\UTF`, `\CJKecglue`.
+
+ * Version 0.2a ‹2013/08/08›
+ - Added `autotilde` option.
+
+ * Version 0.2 ‹2013/08/08›
+ - The first public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/bxcjkjatype/bxcjkjatype.sty b/language/japanese/bxcjkjatype/bxcjkjatype.sty
new file mode 100644
index 0000000000..f530e030e9
--- /dev/null
+++ b/language/japanese/bxcjkjatype/bxcjkjatype.sty
@@ -0,0 +1,1056 @@
+%%
+%% This is file 'bxcjkjatype.sty'.
+%%
+%% Copyright (c) 2016 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxcjkjatype}[2016/10/15 v0.3]
+\def\bxjy@pkgname{bxcjkjatype}
+
+%% definitions
+\def\bxjy@error{\PackageError\bxjy@pkgname}
+\def\bxjy@warn{\PackageWarning\bxjy@pkgname}
+\def\bxjy@info{\PackageInfo\bxjy@pkgname}
+
+%--------------------------------------- helpers
+
+%% switches
+\newif\ifbxjy@ok
+\newif\ifbxjy@default@set
+\newif\ifbxjy@byembolden
+
+%% unique tokens
+\def\bxjy@mark{\bxjy@mark@}
+\def\bxjy@end{\bxjy@end@}
+
+%% \bxjy@ifprimitive\CS{<true>}{<false>}
+\@onlypreamble\bxjy@ifprimitive
+\def\bxjy@ifprimitive#1{%
+ \edef\bxjy@tmpa{\string#1}%
+ \edef\bxjy@tmpb{\meaning#1}%
+ \ifx\bxjy@tmpa\bxjy@tmpb \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo \fi
+}
+
+%% \bxjy@cond\ifXX...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\bxjy@cond#1\fi{%
+ #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+
+%--------------------------------------- environment check
+
+%% engine check
+\bxjy@oktrue
+\bxjy@ifprimitive\kanjiskip{\bxjy@okfalse}{}
+\bxjy@ifprimitive\luatexversion{\bxjy@okfalse}{}
+\bxjy@ifprimitive\XeTeXversion{\bxjy@okfalse}{}
+\bxjy@ifprimitive\eTeXversion{}{\bxjy@okfalse}
+\ifbxjy@ok\else
+ \bxjy@error{The engine in use is not supported}%
+ {Only pdfTeX engine is supported.\MessageBreak
+ Package loading is aborted.}
+\expandafter\endinput\fi\relax
+
+%--------------------------------------- option handling
+
+%% using keyval
+\RequirePackage{keyval}
+
+%% Declares options
+\let\bxjy@driver\@undefined
+\let\bxjy@none=n
+\let\bxjy@pdftex=p
+\let\bxjy@dvipdfmx=d
+\DeclareOption{none}{\let\bxjy@driver\bxjy@none}
+\DeclareOption{dvips}{\let\bxjy@driver\bxjy@none}
+\DeclareOption{pdftex}{\let\bxjy@driver\bxjy@pdftex}
+\DeclareOption{dvipdfmx}{\let\bxjy@driver\bxjy@dvipdfmx}
+\let\bxjy@whole=f
+\DeclareOption{whole}{\let\bxjy@whole=t}
+\DeclareOption{wholeCJK*}{\let\bxjy@whole=t}
+\DeclareOption{wholeCJK}{\let\bxjy@whole=p}
+\DeclareOption{nowhole}{\let\bxjy@whole=f}
+\newif\ifbxjy@everypage
+\DeclareOption{everypage}{\bxjy@everypagetrue}
+\DeclareOption{noeverypage}{\bxjy@everypagefalse}
+\newif\ifbxjy@ipaex
+\let\bxjy@oneweight=f
+\DeclareOption{ipaex-type1}{\bxjy@ipaextrue}
+\DeclareOption{oneweight}{\let\bxjy@oneweight=t}
+\DeclareOption{nooneweight}{\let\bxjy@oneweight=f}
+\newif\ifbxjy@autotilde
+\DeclareOption{autotilde}{\bxjy@autotildetrue}
+\DeclareOption{noautotilde}{\bxjy@autotildefalse}
+\newif\ifbxjy@CJKpunct \bxjy@CJKpuncttrue
+\DeclareOption{CJKpunct}{\bxjy@CJKpuncttrue}
+\DeclareOption{noCJKpunct}{\bxjy@CJKpunctfalse}
+\newif\ifbxjy@CJKspace \bxjy@CJKspacetrue
+\DeclareOption{CJKspace}{\bxjy@CJKspacetrue}
+\DeclareOption{noCJKspace}{\bxjy@CJKspacefalse}
+\newif\ifbxjy@boldbyembolden \bxjy@boldbyemboldentrue
+\DeclareOption{boldbyembolden}{\bxjy@boldbyemboldentrue}
+\DeclareOption{noboldbyembolden}{\bxjy@boldbyemboldenfalse}
+\newif\ifbxjy@substmin
+\DeclareOption{substmingoth}{\bxjy@substmintrue}
+\DeclareOption{nosubstmingoth}{\bxjy@substminfalse}
+% preset spec options
+\def\bxjy@all@main@preset{%
+ %(uniweight)
+ ms,ipa,ipaex,%
+ %(multiweight)
+ ms-hg,ipa-hg,moga-mobo,moga-maruberi,%
+ kozuka-pro,kozuka-pr6,kozuka-pr6n,%
+ hiragino-pro,hiragino-pron,morisawa-pro,morisawa-pr6n}
+\let\bxjy@main@preset\relax
+\def\bxjy@do#1{\DeclareOption{#1}{\def\bxjy@main@preset{#1}}}
+\@for\bxjy@x:=\bxjy@all@main@preset\do{%
+ \expandafter\bxjy@do\expandafter{\bxjy@x}}
+% keyval-type
+\DeclareOption*{%
+ \expandafter\bxjy@setkey@a\expandafter{\CurrentOption}}
+\def\bxjy@setkey@a{\setkeys{bxjy}}
+% 'scale=<real>'
+\let\bxjy@scale\relax
+\define@key{bxjy}{scale}{%
+ \def\bxjy@scale{#1}}
+% 'verrtical=<val>'
+\let\bxjy@vertical\@empty
+\define@key{bxjy}{vertical}[true]{%
+ \def\bxjy@vertical{#1}}
+% 'ttfname=<val>'
+\let\bxjy@ttfname\@empty
+\define@key{bxjy}{ttfname}{%
+ \def\bxjy@ttfname{#1}}
+%% Dispatch options
+\ProcessOptions*
+
+%--------------------------------------- configuration check
+
+%% Check the driver specified
+\def\bxjy@tmpa#1#2{%
+ \bxjy@info{Driver auto-detected: #2}%
+ \let\bxjy@driver#1}
+\def\bxjy@tmpb#1#2{%
+ \bxjy@error{Wrong driver specified, changed to: #2}\@ehc%
+ \let\bxjy@driver#1}
+\ifnum\ifdefined\pdfoutput\pdfoutput\else\z@\fi>\z@
+ \unless\ifdefined\bxjy@driver
+ \bxjy@tmpa\bxjy@pdftex{pdftex}%
+ \else\unless\ifx\bxjy@driver\bxjy@pdftex
+ \bxjy@tmpb\bxjy@pdftex{pdftex}%
+ \fi\fi
+\else
+ \unless\ifdefined\bxjy@driver
+ \bxjy@tmpa\bxjy@dvipdfmx{dvipdfmx}%
+ \else\ifx\bxjy@driver\bxjy@pdftex
+ \bxjy@tmpb\bxjy@dvipdfmx{dvipdfmx}%
+ \fi\fi
+\fi
+
+%% Consistency check
+\ifbxjy@ipaex \unless\ifx\bxjy@main@preset\relax
+ \bxjy@error{Preset options cannot go with 'ipaex-type1'}\@ehc
+ \let\bxjy@main@preset\relax
+\fi\fi
+\ifx \bxjy@driver\bxjy@none \unless\ifx\bxjy@main@preset\relax
+ \bxjy@error{Preset options require a valid driver}\@ehc
+ \let\bxjy@main@preset\relax
+\fi\fi
+\ifx \bxjy@driver\bxjy@none
+ \bxjy@boldbyemboldenfalse
+\fi
+
+%% default scale value
+\ifx\bxjy@scale\relax
+ \ifx\Cjascale\@undefined
+ \ifx\jsScale\@undefined
+ \def\bxjy@scale{1}
+ \else \let\bxjy@scale\jsScale
+ \fi
+ \else \let\bxjy@scale\Cjascale
+ \fi
+\fi
+
+%--------------------------------------- preparations
+
+%% Load CJK package and friends
+\RequirePackage{CJK}
+\@namedef{opt@CJK.sty}{encapsulated}
+\let\CJK@global\relax
+\let\CJK@active\relax
+\let\CJK@local\relax
+\RequirePackage{CJKutf8}
+\ifbxjy@CJKspace
+\RequirePackage{CJKspace}
+\fi
+\ifbxjy@CJKpunct
+\RequirePackage{CJKpunct}
+\fi
+
+%% Load other packages
+\RequirePackage{etoolbox}
+\ifbxjy@everypage\ifx\bxjy@driver\bxjy@dvipdfmx
+ \RequirePackage{atbegshi}
+\fi\fi
+%%
+
+%%<+> \FirstCJKUse
+%%<+> \EveryCJKUse
+\appto\CJKhook{%
+ \bxjy@first@cjk@use@hook
+ \bxjy@every@cjk@use@hook}
+\def\bxjy@first@cjk@use@hook{%
+ \global\let\bxjy@first@cjk@use@hook\relax}
+\let\bxjy@every@cjk@use@hook\@empty
+\newcommand*\FirstCJKUse{%
+ \gappto\bxjy@first@cjk@use@hook}
+\newcommand*\EveryCJKUse{%
+ \gappto\bxjy@every@cjk@use@hook}
+
+%--------------------------------------- vertical
+
+%% constants
+\chardef\bxjy@vert@none=0
+\chardef\bxjy@vert@false=0
+\chardef\bxjy@vert@=0
+\chardef\bxjy@vert@sub=1
+\chardef\bxjy@vert@main=2
+\chardef\bxjy@vert@true=2
+
+%% \bxjy@vert
+\let\bxjy@vert\bxjy@vert@none
+\ifcsdef{bxjy@vert@\bxjy@vertical}{%
+ \letcs\bxjy@vert{bxjy@vert@\bxjy@vertical}
+}{%else
+ \bxjy@error{Invalid value of 'vertical': \bxjy@vertical}\@ehc
+}
+\ifcase\bxjy@vert %none
+ \AfterEndPreamble{\csuse{CJKhorz}}
+\or %sub
+ \RequirePackage{CJKvert}[]%
+ \AfterEndPreamble{\CJKhorz}
+\or %main
+ \RequirePackage{CJKvert}[]%
+ \AfterEndPreamble{\CJKvert}
+\fi
+\AtBeginDocument{%
+ \@ifpackageloaded{CJKvert}{%
+ \bxjy@patch@CJKsymbol@CJKvert
+ \patchcmd{\CJKvert}{\normalfont}{\bxjy@normalafont}{}{}%
+ \patchcmd{\CJKhorz}{\normalfont}{\bxjy@normalafont}{}{}%
+ }{}}
+
+%--------------------------------------- user interface
+
+%%%%<*> \setminchofont/\setgothicfont/etc.
+\newcommand*\setminchofont{\bxjy@setfont{mnl,mnr,mnb}}
+\newcommand*\setgothicfont{\bxjy@setfont{gtr,gtb,gtx,gtu}}
+\newcommand*\setlightminchofont{\bxjy@setfont{mnl}}
+\newcommand*\setmediumminchofont{\bxjy@setfont{mnr}}
+\newcommand*\setboldminchofont{\bxjy@setfont{mnb}}
+\newcommand*\setmediumgothicfont{\bxjy@setfont{gtr}}
+\newcommand*\setboldgothicfont{\bxjy@setfont{gtb}}
+\newcommand*\setxboldgothicfont{\bxjy@setfont{gtx}}
+\newcommand*\setoneweightgothicfont{\bxjy@setfont{gtu}}
+\newcommand*\setmarugothicfont{\bxjy@setfont{mgr}}
+\def\bxjy@setfont#1{\@ifnextchar[%]
+ {\bxjy@setfont@a{#1}}{\bxjy@setfont@a{#1}[]}}
+\def\bxjy@setfont@a#1[#2]#3{%
+ \ifx\bxjy@driver\bxjy@none
+ \bxjy@error{The command is invalid in dvips mode}\@eha
+ \else
+ \@for\bxjy@x:={#1}\do{%
+ \ifx @#2@\@namedef{bxjy@FS/\bxjy@x}{#3}%
+ \else \@namedef{bxjy@FS/\bxjy@x}{:#2:#3}%
+ \fi}%
+ \fi}
+\@for\bxjy@x:={%
+ mnr,mnb,gtr,gtb,gtx,gtu,mgr%
+}\do{\@namedef{bxjy@FS/\bxjy@x}{}}
+
+%%<*> \begin{uCJK}
+\@ifdefinable{\uCJK}{%
+ \def\uCJK{%
+ \bxjy@set@genfam
+ \CJK{UTF8}{\bxjy@genfam}}
+ \let\enduCJK\endCJK
+}
+%%<*> \begin{uCJK*}
+\@ifdefinable{\uCJK*}{%
+ \csdef{uCJK*}{%
+ \bxjy@set@genfam
+ \CJK{UTF8}{\bxjy@genfam}}
+ \cslet{enduCJK*}\endCJK
+}
+
+%%<*> \setCJKfamilydefault{<fam>}
+%\newif\ifbxjy@default@set
+\newrobustcmd*\setCJKfamilydefault[1]{%
+ \bxjy@default@settrue
+ \CJKencfamily{UTF8}{#1}}
+\AtEndOfPackage{%
+ \bxjy@default@setfalse}
+
+%% \bxjy@set@genfam
+\def\bxjy@set@genfam{%
+ \bxjy@okfalse
+ \edef\bxjy@tmpa{\f@family}%
+ \edef\bxjy@tmpb{\sfdefault}%
+ \ifx\bxjy@tmpa\bxjy@tmpb \bxjy@oktrue \fi
+ \edef\bxjy@tmpb{\ttdefault}%
+ \ifx\bxjy@tmpa\bxjy@tmpb \bxjy@oktrue \fi
+ \edef\bxjy@genfam{\ifbxjy@ok \gtdefault \else \mcdefault \fi}}
+
+%% autotilde
+\EveryCJKUse{%
+ \ifbxjy@autotilde \CJKtilde \fi}
+
+%%<*> \CJKecglue
+\unless\ifdefined\CJKecglue
+ \def\CJKtilde{%
+ \CJK@global\def~{\CJKecglue\ignorespaces}}
+ \def\CJKecglue{\hspace{0.25em plus 0.125em minus 0.08em}}
+\fi
+
+%%<*> \>
+\def\bxjy@tmpa{\mskip\medmuskip}
+\ifx\>\bxjy@tmpa
+ \def\>{\ifmmode\mskip\medmuskip\else \CJKecglue\ignorespaces \fi}
+\fi
+
+%--------------------------------------- something Unicode
+
+%% \bxjy@pick@char\CSnext\CSexit
+\def\bxjy@pick@char#1#2{%
+ \let\bxjy@pc@next#1\let\bxjy@pc@exit#2%
+ \futurelet\bxjy@pc@tok\bxjy@pick@char@a
+}
+\def\bxjy@pick@char@a{%
+ \bxjy@cond\ifcat\noexpand\bxjy@pc@tok\relax\fi{%
+ \bxjy@pick@char@b
+ }{\bxjy@pc@exit}%
+}
+\chardef\bxjy@csta="C0
+\def\bxjy@pick@char@b#1{%
+ \bxjy@cond{\ifnum0\ifcat\noexpand#1\noexpand~%
+ \ifnum`#1<\bxjy@csta\else1\fi\fi =\@ne}\fi{%
+ \begingroup
+ \let\UTFviii@two@octets\bxjy@pcseq@two
+ \let\UTFviii@three@octets\bxjy@pcseq@three
+ \let\UTFviii@four@octets\bxjy@pcseq@four
+ \let\CJK@@@\bxjy@pcseq@cjk
+ \expandafter\bxjy@pick@char@c\romannumeral-`>#1%
+ }{\bxjy@pc@exit#1}%
+}
+\def\bxjy@pick@char@c#1\bxjy@end{%
+ \endgroup
+ \edef\bxjy@tmpa{{#1}}%
+ \expandafter\bxjy@pc@next\bxjy@tmpa
+}
+
+%% \bxjy@pcseq@two
+\def\bxjy@pcseq@two#1#2{#1\string#2\bxjy@end}
+\def\bxjy@pcseq@three#1#2#3{#1\string#2\string#3\bxjy@end}
+\def\bxjy@pcseq@four#1#2#3#4{#1\string#2\string#3\string#4\bxjy@end}
+\def\bxjy@pcseq@cjk#1\expandafter#2#3#4#5#6#7#8#9\fi{%
+ \csname bxjy@X/\string#4\expandafter\endcsname\string#8}
+\@namedef{bxjy@X/\string\CJK@XX}{\bxjy@pcseq@two}
+\@namedef{bxjy@X/\string\CJK@XXX}{\bxjy@pcseq@three}
+\@namedef{bxjy@X/\string\CJK@XXXX}{\bxjy@pcseq@four}
+
+%% \bxjy@pick@cseq\CS
+\def\bxjy@pick@cseq#1#2{%
+ \def\bxjy@pcs@do##1{#1{##1}\bxjy@pick@cseq@a}%
+ \bxjy@pick@cseq@a#2\bxjy@pcs@end
+}
+\def\bxjy@pick@cseq@a{\bxjy@pick@char\bxjy@pcs@do\bxjy@pcs@exit}
+\def\bxjy@pcs@exit#1\bxjy@pcs@end{}
+
+%%<*> \UTF{<hex-number>}
+\newcommand*\UTF[1]{%
+ \edef\bxjy@tmpa{#1}%
+ \expandafter\bxjy@utf@a\bxjy@tmpa\bxjy@mark000000\bxjy@end}
+\def\bxjy@utf@a#1#2#3#4#5#6#7#8\bxjy@end{%
+ \bxjy@utf@b#1#2#3#4#5#6#7\bxjy@end}
+\def\bxjy@utf@b#1\bxjy@mark#2\bxjy@end{%
+ \uppercase{\bxjy@utf@c#2#1}\bxjy@end}
+\def\bxjy@utf@c#1#2#3#4#5#6\bxjy@end{%
+ \Unicode{"#1#2#3#4}{"#5#6}}
+
+%%<*> \CJKforce{<kanji>...}
+\newcommand*\CJKforce[1]{%
+ \let\bxjy@cjkforce@do\bxjy@cjkforce@a
+ \bxjy@pick@cseq\bxjy@cjk@force{#1}%
+}
+\def\bxjy@cjkforce@a#1#2#3{%
+ \ifx#1\relax\else \let#2#1\let#1\relax \fi
+}
+%%<*> \CJKunforce{<kanji>...}
+\newcommand*\CJKunforce[1]{%
+ \let\bxjy@cjkforce@do\bxjy@cjkunforce@a
+ \bxjy@pick@cseq\bxjy@cjk@force{#1}%
+}
+\def\bxjy@cjkunforce@a#1#2#3{%
+ \ifx#1\relax \let#1#2\fi
+}
+\def\bxjy@cjk@force#1{%
+ \expandafter\bxjy@cjkforce@do
+ \csname u8:#1\expandafter\endcsname
+ \csname bxjy@U/#1\endcsname{#1}%
+}
+
+%%<*> \CJKforced{<kanji>}
+\@ifdefinable{\CJKforced}{%
+ \protected\def\CJKforced#1{% drop braces
+ \bxjy@pick@char\bxjy@cjkforced\relax#1%
+ }
+ \def\bxjy@cjkforced#1{%
+ \scantokens{\def\x{#1}\relax}% make active again
+ \begingroup
+ \expandafter\let\csname u8:#1\endcsname\relax \x
+ \endgroup
+ }
+ \let\bxjy@org@at\@
+ \protected\def\@{\bxjy@at@a}
+}
+
+%%<*> \@
+\def\bxjy@at@a{%
+ \futurelet\bxjy@tok\bxjy@at@b
+}
+\def\bxjy@at@b{%
+ \bxjy@cond\ifcat\noexpand\bxjy@tok.\fi{\bxjy@org@at}{%
+ \bxjy@cond\ifcat\noexpand\bxjy@tok\@sptoken\fi{\bxjy@org@at}{%
+ \bxjy@cond\ifcat\noexpand\bxjy@tok\bgroup\fi{\CJKforced}{%
+ \bxjy@cond\ifcat\noexpand\bxjy@tok\relax\fi{\bxjy@at@c}{%
+ \bxjy@org@at
+ }}}}%
+}
+\def\bxjy@at@c#1{%
+ \bxjy@cond\ifcat\noexpand#1\noexpand~\fi{\CJKforced}{%
+ \bxjy@org@at
+ }#1%
+}
+
+%--------------------------------------- ttfname
+
+%% variables
+\let\bxjy@ttfname@ptn\relax
+\let\bxjy@ttc@info
+
+%% constants
+\begingroup \let\\\@backslashchar
+% The set of allowed characters, all ASCII but the followings:
+% [special in Windwos path name] \ / ? : * " > < |
+% [special in LaTeX] # % ^ { } ~
+\edef\x{[]!$&'()+,.0-9;=@A-Z_`a-z-]}
+\xdef\bxjy@Rx@tp@a{^(\x*)\\*(\x*)$}
+\xdef\bxjy@Rx@tp@b{^.*\\.[Tt][Tt][Ff]$}
+\xdef\bxjy@Rx@tp@c{^(|.*[^0-9])([0-9]{1,5})([^0-9]*)$}
+\xdef\bxjy@Rx@fn@a{^(.*)\\.\\w+$}
+\xdef\bxjy@Rx@fn@b{^.*\\.[Tt][Tt][Cc]$}
+\endgroup
+
+%% \bxjy@set@match\CS{<number>}
+\@onlypreamble\bxjy@set@match
+\def\bxjy@set@match#1#2{%
+ \expandafter\bxjy@set@match@a\pdflastmatch#2\relax#1}
+\@onlypreamble\bxjy@set@match@a
+\def\bxjy@set@match@a#1>#2\relax#3{\def#3{#2}}
+
+%% \bxjy@set@ttfname@ptn
+% Sets \bxjy@ttfname@ptn.
+\@onlypreamble\bxjy@set@ttfname@ptn
+\def\bxjy@set@ttfname@ptn{%
+ \begingroup
+ \let\bxjy@ttfname@ptn\relax
+ \ifnum\pdfmatch{\bxjy@Rx@tp@a}{\bxjy@ttfname}>\z@
+ \bxjy@set@match\bxjy@ptnA{1}\bxjy@set@match\bxjy@ptnBC{2}%
+ \ifnum\pdfmatch{\bxjy@Rx@tp@b}{\bxjy@ptnBC}=\z@
+ \edef\bxjy@ptnBC{\bxjy@ptnBC.ttf}%
+ \fi
+ \ifnum\pdfmatch{\bxjy@Rx@tp@c}{\bxjy@ptnBC}>\z@
+ \bxjy@set@match\bxjy@ptnB{1}\bxjy@set@match\bxjy@ptnC{3}%
+ \bxjy@set@match\bxjy@ptnN{2}%
+ \xdef\bxjy@ttfname@ptn{%
+ {\bxjy@ptnA}{\bxjy@ptnB}{\bxjy@ptnC}{\bxjy@ptnN}}%
+ \fi
+ \fi
+ \ifx\bxjy@ttfname@ptn\relax
+ \@latex@warning@no@line
+ {Option 'ttfname' has an invalid value:\MessageBreak
+ "\bxjy@ttfname"}%
+ \fi
+ \endgroup}
+
+%% \bxjy@make@ttfname\CS{<ttc-name>}{<number>}
+\@onlypreamble\bxjy@make@ttfname
+\def\bxjy@make@ttfname{%
+ \expandafter\bxjy@make@ttfname@a\bxjy@ttfname@ptn}
+\@onlypreamble\bxjy@make@ttfname@a
+\def\bxjy@make@ttfname@a#1#2#3#4#5#6#7{%
+ \numdef\bxjy@tmpa{#4+#7}\numdef\bxjy@tmpb{1#4-#4}%
+ \ifnum\bxjy@tmpa<\bxjy@tmpb
+ \numdef\bxjy@tmpa{\bxjy@tmpa+\bxjy@tmpb}%
+ \edef\bxjy@tmpa{\expandafter\@gobble\bxjy@tmpa}%
+ \fi
+ \edef\bxjy@tmpb{\detokenize{#6}}%
+ \ifnum\pdfmatch{\bxjy@Rx@fn@a}{\bxjy@tmpb}>\z@
+ \bxjy@set@match\bxjy@tmpb{1}%
+ \fi
+ \edef#5{#1\bxjy@tmpb#2\bxjy@tmpa#3}}
+
+%% set the pattern
+\unless\ifx\bxjy@ttfname\@empty
+ \ifdefined\pdfmatch
+ \bxjy@set@ttfname@ptn
+ \else
+ \bxjy@error
+ {Option 'ttfname' cannot be used because your\MessageBreak
+ pdfTeX engine is too old}\@ehc
+ \fi
+\fi
+
+%% \bxjy@modify@fontname
+\@onlypreamble\bxjy@modify@fontname
+\def\bxjy@modify@fontname{%
+ \bxly@check@ttc\FONT
+ \unless\ifx\bxjy@ttc@info\relax
+ \ifx\bxjy@ttfname@ptn\relax
+ \bxjy@error{pdfTeX does not support TTC}\@eha
+ \else
+ \edef\bxjy@tmpa{\noexpand\FONT\bxjy@ttc@info}%
+ \expandafter\bxjy@make@ttfname\bxjy@tmpa
+ \fi
+ \fi}
+
+%% \bxly@check@ttc{<name>}
+\@onlypreamble\bxly@check@ttc
+\ifdefined\pdfmatch
+\def\bxly@check@ttc#1{%
+ \ifnum\pdfmatch{^:([0-9]+):(.*)}{#1}>\z@
+ \bxjy@set@match\bxjy@tmpa{1}\bxjy@set@match\bxjy@tmpb{2}%
+ \edef\bxjy@ttc@info{{\bxjy@tmpb}{\bxjy@tmpa}}%
+ \else\ifnum\pdfmatch{\bxjy@Rx@fn@b}{#1}>\z@
+ \edef\bxjy@ttc@info{{#1}{0}}%
+ \else\let\bxjy@ttc@info\relax
+ \fi\fi}
+\else
+\def\bxjy@check@ttc#1{\let\bxjy@ttc@info\relax}
+\fi
+
+%--------------------------------------- fontmap internals
+
+%% \bxjy@noembed
+\def\bxjy@noembed{*}
+
+%% \bxjy@cmap@embed/\bxjy@cmap@noembed
+\def\bxjy@cmap@embed{unicode}
+\def\bxjy@cmap@noembed{UniJIS2004-UTF16-H}
+
+%% \bxjy@NEF/<sym>
+\def\bxjy@do#1#2{%
+ \def\bxjy@tmpb{#2}%
+ \@for\bxjy@tmpa:=#1\do{%
+ \cslet{bxjy@NEF/\bxjy@tmpa}\bxjy@tmpb}}
+\bxjy@do{mnr,mnb}{Ryumin-Light}
+\bxjy@do{gtr,gtb,gtx,gtu,mgr}{GothicBBB-Medium}
+
+%% \bxjy@addtospec{<id>}
+\@onlypreamble\bxjy@addtospec
+\def\bxjy@addtospec#1{%
+ \begingroup
+ \let\Entry\bxjy@Entry\let\ \space
+ \@nameuse{bxjy@ME/#1}%
+ \endgroup}
+\@onlypreamble\bxjy@Entry
+\def\bxjy@Entry#1{%
+ \letcs\FONT{bxjy@FS/#1}%
+ \ifx\FONT\bxjy@noembed
+ \let\unicode\bxjy@cmap@noembed
+ \edef\FONT{!\@nameuse{bxjy@NEF/#1}}%
+ \else\unless\ifx\FONT\@empty
+ \let\unicode\bxjy@cmap@embed
+ \fi\fi
+ \ifx\FONT\@empty \expandafter\@gobble
+ \else \expandafter\bxjy@entry@sub \fi}
+\ifx\bxjy@driver\bxjy@dvipdfmx
+ \def\bxjy@entry@sub#1{%<tfm-spec>
+ \xappto\bxjy@spec{%
+ \noexpand\special{pdf:mapline #1 \unicode\ \FONT}}}
+ \let\bxjy@spec\@empty
+\else\ifx\bxjy@driver\bxjy@pdftex
+ \def\bxjy@entry@sub#1{%<tfm-spec>
+ \bxjy@modify@fontname
+ \unless\ifx\FONT\relax \pdfmapline{=#1 <\FONT}\fi}
+\else % invalid in dvips
+\fi\fi
+
+%--------------------------------------- map entry definitions
+
+%% \bxjy@mapentry{<id>}{<text>}
+\def\bxjy@mapentry#1{%
+ \expandafter\bxjy@mapentry@a\csname bxjy@ME/#1\endcsname}
+\def\bxjy@mapentry@a#1{\@onlypreamble#1\def#1}
+
+%% the map entries
+\bxjy@mapentry{STDU}{% (uniweight)
+\Entry{mnr}{unisong@Unicode@}%
+\Entry{gtu}{unihei@Unicode@}%
+\Entry{mgr}{unikai@Unicode@}%
+}
+\bxjy@mapentry{STDM}{% (nouniweight)
+\Entry{mnr}{unisong@Unicode@}%
+\Entry{mnb}{unili@Unicode@}%
+\Entry{gtr}{unihei@Unicode@}%
+\Entry{gtb}{uniyou@Unicode@}%
+\Entry{gtx}{unifs@Unicode@}%
+\Entry{mgr}{unikai@Unicode@}%
+}
+
+%--------------------------------------- NFSS declarations
+
+%%<*> \mcdefault/\gtdefault/\mgdefault
+\providecommand{\mcdefault}{mc}
+\providecommand{\gtdefault}{gt}
+\providecommand{\mgdefault}{mg}
+
+%%<*> \mcfamily/\gtfamily/\mgfamily
+\newrobustcmd*{\mcfamily}{%
+ \not@math@alphabet\mcfamily\relax
+ \CJKfamily{\mcdefault}}
+\newrobustcmd*{\gtfamily}{%
+ \not@math@alphabet\mcfamily\relax
+ \CJKfamily{\gtdefault}}
+\newrobustcmd*{\mgfamily}{%
+ \not@math@alphabet\mcfamily\relax
+ \CJKfamily{\mgdefault}}
+
+%% \bxjy@normalafont
+\letcs\bxjy@normalafont{normalfont }
+
+%% Add patches to \rmfamily, etc.
+\csappto{rmfamily }{%
+ \CJKfamily{\mcdefault}}
+\csappto{sffamily }{%
+ \CJKfamily{\gtdefault}}
+\csappto{ttfamily }{%
+ \CJKfamily{\gtdefault}}
+\csappto{normalfont }{%
+ \CJKfamily{}}
+
+%%<*> \ebseries
+\ifx f\bxjy@oneweight
+ \providerobustcmd*{\ebseries}{%
+ \not@math@alphabet\ebseries\relax
+ \fontseries\ebdefault\selectfont}
+ \providecommand{\ebdefault}{eb}
+\fi
+\protected\def\CJKbold{\CJK@bold@true}
+\protected\def\CJKnormal{\CJK@bold@false}
+
+%% \bxjy@decl@series
+\@onlypreamble\bxjy@decl@series
+\def\bxjy@decl@series#1#2#3{%
+\DeclareFontShape{C70}{#1}{#2}{n}{<->#3}{\CJKnormal}%
+\DeclareFontShape{C70}{#1}{#2}{sl}{<->CJKssub*#1/#2/n}{\CJKnormal}%
+\DeclareFontShape{C70}{#1}{#2}{it}{<->CJKssub*#1/#2/n}{\CJKnormal}%
+\DeclareFontShape{C70}{#1}{#2}{sc}{<->CJKssub*#1/#2/n}{\CJKnormal}}
+%% \bxjy@decl@family
+\@onlypreamble\bxjy@decl@family
+\def\bxjy@decl@family#1#2#3#4{%
+\DeclareFontFamily{C70}{#1}{\hyphenchar\font\m@ne}%
+\bxjy@decl@series{#1}{m}{#2}%
+\bxjy@decl@series{#1}{bx}{#3}%
+\bxjy@decl@series{#1}{b}{CJKssub*#1/bx/n}%
+\bxjy@decl@series{#1}{eb}{#4}}
+
+%% the declarations
+\def\bxjy@sc{sCJK*[\bxjy@scale]}
+\ifx f\bxjy@oneweight
+\bxjy@decl@family{mc}{\bxjy@sc unisong}{\bxjy@sc unili}{CJKssub*mc/bx/n}
+\bxjy@decl@family{gt}{\bxjy@sc unihei}{\bxjy@sc uniyou}{\bxjy@sc unifs}
+\bxjy@decl@family{mg}{\bxjy@sc unikai}{CJKssub*mg/m/n}{CJKssub*mg/m/n}
+\else\ifx t\bxjy@oneweight
+\bxjy@decl@family{mc}{\bxjy@sc unisong}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
+\bxjy@decl@family{gt}{\bxjy@sc unihei}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
+\bxjy@decl@family{mg}{\bxjy@sc unikai}{CJKssub*mg/m/n}{CJKssub*mg/m/n}
+\fi\fi
+
+%% Set default CJK family
+\setCJKfamilydefault{\mcdefault}
+
+%% \bxjy@check@alldefined
+\@onlypreamble\bxjy@check@alldefined
+\def\bxjy@check@alldefined#1{%
+ \bxjy@oktrue
+ \@for\bxjy@x:={#1}\do{%
+ \expandafter\ifx\csname bxjy@FS/\bxjy@x\endcsname\@empty
+ \bxjy@okfalse \fi}}
+%% When no font is selected for a family by \set...font, then thm
+% must be switched to that of ipxex-type1.
+\FirstCJKUse{%
+\bxjy@check@alldefined{mnr,mnb}%
+\unless\ifbxjy@ok
+\bxjy@decl@family{mc}{\bxjy@sc ipxm-r-u}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
+\fi
+\bxjy@check@alldefined{gtr,gtb,gtx}%
+\unless\ifbxjy@ok
+\bxjy@decl@family{gt}{\bxjy@sc ipxg-r-u}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
+\fi
+\bxjy@check@alldefined{mgr}%
+\unless\ifbxjy@ok
+\bxjy@decl@family{mg}{\bxjy@sc ipxg-r-u}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
+\fi
+}
+
+%% \bxjy@force@load@font@fam
+\@onlypreamble\bxjy@force@load@font@fam
+\def\bxjy@force@load@font@fam#1{%
+ \begingroup
+ \def\f@encoding{C70}\let\CJK@enc\f@encoding
+ \edef\f@family{#1}\let\CJK@family\f@family
+ \def\f@series{m}\def\f@shape{n}%
+ \xdef\font@name{\csname\curr@fontshape/\f@size\endcsname}%
+ \let\extract@font\relax \pickup@font
+ \endgroup}
+
+%--------------------------------------- ipaex-type1
+\ifbxjy@ipaex
+
+%% default changed
+\renewcommand{\mcdefault}{ipxm}
+\renewcommand{\gtdefault}{ipxg}
+\renewcommand{\mgdefault}{ipxg}
+
+%% scale applied
+\unless\ifdim\bxjy@scale\p@=\p@
+ \def\bxjy@tmpa#1#2#3{%
+ \bxjy@force@load@font@fam{#1}%
+ \expandafter\ifx\csname C70+#1\endcsname\@empty\else
+ \def\bxjy@tmpb{\DeclareFontShape{C70}{#1}}%
+ \bxjy@tmpb{m}{n}{<->sCJK*[\bxjy@scale]#3-r-u}{}%
+ \ifx t#2%
+ \bxjy@tmpb{m}{sl}{<->sCJK*[\bxjy@scale]#3-ro-u}{}%
+ \bxjy@tmpb{bx}{n}{<->sCJKb*[\bxjy@scale]#3-r-u}{\CJKbold}%
+ \bxjy@tmpb{bx}{sl}{<->sCJKb*[\bxjy@scale]#3-ro-u}{\CJKbold}%
+ \fi
+ \fi}
+ \bxjy@tmpa{ipxm}f{ipxm}%
+ \bxjy@tmpa{ipxg}f{ipxg}%
+ \bxjy@tmpa{ipxma}t{ipxm}%
+ \bxjy@tmpa{ipxga}t{ipxg}%
+\fi
+
+\fi
+%--------------------------------------- subst-mingoth
+\ifbxjy@substmin
+
+%% apply
+\def\bxjy@tmpa#1#2{%
+ \bxjy@force@load@font@fam{#1}%
+ \expandafter\ifx\csname C70+#1\endcsname\@empty\else
+ \def\bxjy@tmpb{\DeclareFontShape{C70}{#1}}%
+ \bxjy@tmpb{l}{n}{<->CJKssub*#2/m/n}{}%
+ \bxjy@tmpb{m}{n}{<->CJKssub*#2/m/n}{}%
+ \bxjy@tmpb{bx}{n}{<->CJKssub*#2/bx/n}{\CJKbold}%
+ \fi}
+\bxjy@tmpa{min}{mc}%
+\bxjy@tmpa{goth}{gt}%
+\bxjy@tmpa{maru}{mg}%
+
+\fi
+%--------------------------------------- bold-by-embolden
+\ifbxjy@boldbyembolden %<*boldbyembolden>
+
+%<*>\CJKboldbyembolden/\CJKnoboldbyembolden
+%\newif\ifbxjy@byembolden
+\newcommand*{\CJKboldbyembolden}{\bxjy@byemboldentrue}
+\newcommand*{\CJKnoboldbyembolden}{\bxjy@byemboldenfalse}
+\CJKboldbyembolden % initial value
+
+%% \bxjy@pdfliteraldirect{<pdf-text>}
+\ifx\bxjy@driver\bxjy@pdftex
+ \def\bxjy@pdfliteraldirect#1{\pdfliteral page {#1}}
+\else\ifx\bxjy@driver\bxjy@dvipdfmx
+ \def\bxjy@pdfliteraldirect#1{\special{pdf:literal direct #1}}
+\else
+ \bxjy@error{INTERNAL_ERROR(1)}
+\fi\fi
+
+%% \bxjy@embolden
+\def\bxjy@bsfactor{1.68}
+\def\bxjy@bswd;{\strip@pt\dimexpr\bxjy@bsfactor
+ \dimexpr\CJKboldshift\relax\relax}
+\def\bxjy@embolden{%
+ \bxjy@pdfliteraldirect{q 2 Tr \bxjy@bswd; w}}
+\def\bxjy@embolden@alt{%
+ \bxjy@pdfliteraldirect{2 Tr \bxjy@bswd; w}}
+%% \bxjy@noembolden
+\def\bxjy@noembolden{%
+ \bxjy@pdfliteraldirect{Q}}
+\def\bxjy@noembolden@alt{%
+ \bxjy@pdfliteraldirect{0 Tr}}
+
+%% \bxjy@patch@CJKsymbol@CJKvert
+% Patches to CJKvert version of \CJKsymbol.
+\@onlypreamble\bxjy@patch@CJKsymbol@CJKvert
+\def\bxjy@patch@CJKsymbol@CJKvert{%
+ \global\let\bxjy@patch@CJKsymbol@CJKvert\relax
+ \bxjy@oktrue
+ \expandafter\patchcmd\csname CJKsymbol \endcsname{%from
+ \ifCJK@bold@ \CJK@temp
+ \hbox to \z@{\hss \raise\CJKboldshift\hbox{\CJK@temp}}%
+ \hbox to \z@{\hss \raise-\CJKboldshift\hbox{\CJK@temp}}%
+ \else \CJK@temp
+ \fi
+ }{%to
+ \ifCJK@bold@\ifbxjy@byembolden
+ \bxjy@embolden@alt
+ \fi\fi
+ \CJK@temp
+ \ifCJK@bold@
+ \ifbxjy@byembolden
+ \bxjy@noembolden@alt
+ \else
+ \hbox to \z@{\hss \raise\CJKboldshift\hbox{\CJK@temp}}%
+ \hbox to \z@{\hss \raise-\CJKboldshift\hbox{\CJK@temp}}%
+ \fi
+ \fi
+ }{}{\bxjy@okfalse}%
+ \expandafter\patchcmd\csname CJKsymbol \endcsname{%from
+ \ifCJK@bold@ \CJK@temp
+ \hbox to \CJKboldshift{\hss\CJK@temp}%
+ \hbox to \CJKboldshift{\hss\CJK@temp}%
+ \else \CJK@temp
+ \fi
+ }{%to
+ \ifCJK@bold@\ifbxjy@byembolden
+ \bxjy@embolden@alt
+ \fi\fi
+ \CJK@temp
+ \ifCJK@bold@
+ \ifbxjy@byembolden
+ \bxjy@noembolden@alt
+ \else
+ \kern-\CJKboldshift\hb@xt@\z@{\hss\CJK@temp}%
+ \kern2\dimexpr\CJKboldshift\relax
+ \hb@xt@\z@{\hss\CJK@temp}\kern-\CJKboldshift\relax
+ \fi
+ \fi
+ }{}{\bxjy@okfalse}%
+ \unless\ifbxjy@ok
+ \bxjy@error{Failure in patching to CJKvert}\@ehc
+ \fi
+}
+%% redefine \CJKsymbol
+\@ifpackageloaded{CJKvert}{%
+ % CJKvert version
+ \bxjy@patch@CJKsymbol@CJKvert
+}{% non-CJKvert version
+ \@namedef{CJKsymbol }#1{%
+ \ifCJK@bold@\ifbxjy@byembolden
+ \bxjy@embolden
+ \fi\fi
+ \symbol{#1}%
+ \ifCJK@bold@
+ \ifbxjy@byembolden
+ \bxjy@noembolden
+ \else
+ \kern-\CJKboldshift\hb@xt@\z@{\hss\symbol{#1}}%
+ \kern2\dimexpr\CJKboldshift\relax
+ \hb@xt@\z@{\hss\symbol{#1}}\kern-\CJKboldshift\relax
+ \fi
+ \fi}%
+}
+
+\else %<*!boldbyembolden>
+% makes \CJK[no]boldbyembolden no-op
+\newcommand*{\CJKboldbyembolden}{}
+\newcommand*{\CJKnoboldbyembolden}{}
+\fi %</boldbyembolden>
+%--------------------------------------- begin-document hook
+
+\ifx\bxjy@driver\bxjy@dvipdfmx %<*dvipdfmx>
+
+%% \bxjy@set@page@hook{<text>}
+\ifbxjy@everypage
+\def\bxjy@set@page@hook#1{%
+ \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{%
+ \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@
+ #1\copy\AtBeginShipoutBox}}}
+\else
+\let\bxjy@set@page@hook\AtBeginDvi
+\fi
+
+\else %<!*dvipdfmx>
+\let\bxjy@set@page@hook\@gobble
+\fi %</dvipdfmx>
+
+%% The begin-document hook for font mapping
+\AtBeginDocument{%
+ \ifx f\bxjy@oneweight \bxjy@addtospec{STDM}%
+ \else\ifx t\bxjy@oneweight \bxjy@addtospec{STDU}%
+ \fi\fi
+ \bxjy@set@page@hook{\bxjy@spec}%
+}
+
+%% The document hooks for 'whole' option
+\AtBeginDocument{%
+ \unless\ifbxjy@default@set
+ \bxjy@set@genfam
+ \setCJKfamilydefault{\bxjy@genfam}%
+ \fi}
+\ifx t\bxjy@whole
+ \AtBeginDocument{\csuse{CJK*}{UTF8}{}}
+ \AtEndDocument{\clearpage\csuse{endCJK*}}
+\else\ifx p\bxjy@whole
+ \AtBeginDocument{\CJK{UTF8}{}}
+ \AtEndDocument{\clearpage\CJK}
+\fi\fi
+
+%% Invokes first-CJK hook at begin-document
+\AtBeginDocument{\bxjy@first@cjk@use@hook}
+
+%--------------------------------------- PDF-string hack
+
+%%<+> \bxcjkjatypeHyperrefPatchDone
+%% Informs that the patch is applied.
+\let\bxcjkjatypeHyperrefPatchDone=t
+
+%% prepare
+\begingroup
+ \CJK@input{UTF8.bdg}% emerge CJK@UTF8Binding
+\endgroup
+%% register to \pdfstringdefPreHook
+\g@addto@macro\pdfstringdefPreHook{%
+ \@nameuse{CJK@UTF8Binding}% enable UTF8 decoder
+ \ifx~\bxjy@@CJKtilde % \CJKtilde is effective
+ \let\bxjy@org@LetUnexpandableSpace\HyPsd@LetUnexpandableSpace
+ \let\HyPsd@LetUnexpandableSpace\bxjy@LetUnexpandableSpace
+ \let~\@empty
+ \fi
+}
+\def\bxjy@@CJKtilde{\CJKecglue\ignorespaces}
+%% patch to \HyPsd@LetUnexpandableSpace
+\def\bxjy@@tildecmd{~}
+\def\bxjy@LetUnexpandableSpace#1{%
+ \def\bxjy@tmpa{#1}\ifx\bxjy@tmpa\bxjy@@tildecmd\else
+ \bxjy@org@LetUnexpandableSpace#1%
+ \fi
+}
+
+%--------------------------------------- preset font mappings
+
+%% \bxjy@declare@preset{<name>}{<text>}
+\def\bxjy@declare@preset#1{%
+ \expandafter\bxjy@decl@preset@a\csname bxjy@the@preset@#1\endcsname}
+\def\bxjy@decl@preset@a#1{\@onlypreamble#1\def#1}
+
+%% \bxjy@declare@preset@alias{<name1>}{<name2>}
+\def\bxjy@declare@preset@alias#1#2{%
+ \expandafter\bxjy@decl@preset@alias@a\csname bxjy@the@preset@#1%
+ \expandafter\endcsname\csname bxjy@the@preset@#2\endcsname}
+\def\bxjy@decl@preset@alias@a#1#2{\@onlypreamble#1\let#1#2}
+
+%% \bxjy@uniweight{<font-mn>}{<font-gt>}
+\@onlypreamble\bxjy@uniweight
+\def\bxjy@uniweight#1#2{%
+ \setminchofont{#1}\setgothicfont{#2}\setmarugothicfont{#2}}
+
+%% \bxjy@multiweight{<font-mnl>}{<font-mnr>}{<font-mnb>}
+%% {<font-gtr>}{<font-gtb>}{<font-gtx>}{<font-gtu>}{<font-mgr>}
+\@onlypreamble\bxjy@multiweight
+\def\bxjy@multiweight#1#2#3#4#5#6#7#8{%
+ \setminchofont{#2}\setgothicfont{#7}\setmarugothicfont{#8}%
+ \ifx f\bxjy@oneweight
+ \setboldminchofont{#3}% #1 ignored
+ \setmediumgothicfont{#4}\setboldgothicfont{#5}\setxboldgothicfont{#6}%
+ \fi}
+
+%% \bxjy@use@preset{<name>}
+\def\bxjy@use@preset#1{%
+ \csname bxjy@the@preset@#1\endcsname}
+
+%% for compatibility
+\def\bxjy@MI{:0:}
+\let\bxjy@enable@switch@realfont\relax
+\let\usecmapforalphabet\relax
+
+%%%% definitions of main preset mappings
+%(uniweight)
+\bxjy@declare@preset{ms}{%
+ \bxjy@uniweight{:0:msmincho.ttc}{:0:msgothic.ttc}}
+\bxjy@declare@preset{ipa}{%
+ \bxjy@uniweight{ipam.ttf}{ipag.ttf}}
+\bxjy@declare@preset{ipaex}{%
+ \bxjy@uniweight{ipaexm.ttf}{ipaexg.ttf}}
+%(multiweight)
+\bxjy@declare@preset{ms-hg}{%
+ \bxjy@multiweight{:0:msmincho.ttc}{:0:msmincho.ttc}{:0:hgrme.ttc}%
+ {:0:hgrgm.ttc}{:0:hgrge.ttc}{:0:hgrsgu.ttc}{:0:msgothic.ttc}{hgrsmp.ttf}}
+\bxjy@declare@preset{ipa-hg}{%
+ \bxjy@multiweight{ipam.ttf}{ipam.ttf}{:0:hgrme.ttc}%
+ {:0:hgrgm.ttc}{:0:hgrge.ttc}{:0:hgrsgu.ttc}{ipag.ttf}{hgrsmp.ttf}}
+\bxjy@declare@preset{moga-mobo}{%
+ \bxjy@enable@switch@realfont
+ \bxjy@multiweight{\bxjy@MI mogam.ttc}{\bxjy@MI mogam.ttc}%
+ {\bxjy@MI mogamb.ttc}{\bxjy@MI mogag.ttc}{\bxjy@MI mogagb.ttc}%
+ {\bxjy@MI mogagb.ttc}{\bxjy@MI mogag.ttc}{\bxjy@MI mobog.ttc}}
+\bxjy@declare@preset{moga-maruberi}{%
+ \bxjy@enable@switch@realfont
+ \bxjy@multiweight{\bxjy@MI mogam.ttc}{\bxjy@MI mogam.ttc}%
+ {\bxjy@MI mogamb.ttc}{\bxjy@MI mogag.ttc}{\bxjy@MI mogagb.ttc}%
+ {\bxjy@MI mogagb.ttc}{\bxjy@MI mogag.ttc}{MTLmr3m.ttf}}
+\bxjy@declare@preset{kozuka-pro}{%
+ \usecmapforalphabet
+ \bxjy@multiweight{KozMinPro-Light.otf}{KozMinPro-Regular.otf}%
+ {KozMinPro-Bold.otf}{KozGoPro-Regular.otf}{KozGoPro-Bold.otf}%
+ {KozGoPro-Heavy.otf}{KozGoPro-Medium.otf}{KozGoPro-Heavy.otf}}
+\bxjy@declare@preset{kozuka-pr6}{%
+ \usecmapforalphabet
+ \bxjy@multiweight{KozMinProVI-Light.otf}{KozMinProVI-Regular.otf}%
+ {KozMinProVI-Bold.otf}{KozGoProVI-Regular.otf}{KozGoProVI-Bold.otf}%
+ {KozGoProVI-Heavy.otf}{KozGoProVI-Medium.otf}{KozGoProVI-Heavy.otf}}
+\bxjy@declare@preset{kozuka-pr6n}{%
+ \usecmapforalphabet
+ \bxjy@multiweight{KozMinPr6N-Light.otf}{KozMinPr6N-Regular.otf}%
+ {KozMinPr6N-Bold.otf}{KozGoPr6N-Regular.otf}{KozGoPr6N-Bold.otf}%
+ {KozGoPr6N-Heavy.otf}{KozGoPr6N-Medium.otf}{KozGoPr6N-Heavy.otf}}
+\bxjy@declare@preset{hiragino-pro}{%
+ \usecmapforalphabet
+ \bxjy@multiweight{HiraMinPro-W2.otf}{HiraMinPro-W3.otf}%
+ {HiraMinPro-W6.otf}{HiraKakuPro-W3.otf}{HiraKakuPro-W6.otf}%
+ {HiraKakuStd-W8.otf}{HiraKakuPro-W6.otf}{HiraMaruPro-W4.otf}}
+\bxjy@declare@preset{hiragino-pron}{%
+ \usecmapforalphabet
+ \bxjy@multiweight{HiraMinProN-W2.otf}{HiraMinProN-W3.otf}%
+ {HiraMinProN-W6.otf}{HiraKakuProN-W3.otf}{HiraKakuProN-W6.otf}%
+ {HiraKakuStdN-W8.otf}{HiraKakuProN-W6.otf}{HiraMaruProN-W4.otf}}
+\bxjy@declare@preset{morisawa-pro}{%
+ \usecmapforalphabet
+ \bxjy@multiweight{A-OTF-RyuminPro-Light.otf}{A-OTF-RyuminPro-Light.otf}%
+ {A-OTF-FutoMinA101Pro-Bold.otf}{A-OTF-GothicBBBPro-Medium.otf}%
+ {A-OTF-FutoGoB101Pro-Bold}{A-OTF-MidashiGoPro-MB31.otf}%
+ {A-OTF-GothicBBBPro-Medium.otf}{A-OTFJun101Pro-Light.otf}}
+\bxjy@declare@preset{morisawa-pr6n}{%
+ \usecmapforalphabet
+ \bxjy@multiweight{A-OTF-RyuminPr6N-Light.otf}{A-OTF-RyuminPr6N-Light.otf}%
+ {A-OTF-FutoMinA101Pr6N-Bold.otf}{A-OTF-GothicBBBPr6N-Medium.otf}%
+ {A-OTF-FutoGoB101Pr6N-Bold}{A-OTF-MidashiGoPr6N-MB31.otf}%
+ {A-OTF-GothicBBBPr6N-Medium.otf}{A-OTFJun101Pr6N-Light.otf}}
+
+%% ... and invokes the specified one!
+\ifx\bxjy@main@preset\relax\else
+\bxjy@use@preset{\bxjy@main@preset}
+\fi
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/bxcjkjatype/sample-bxcjkjatype-beamer.pdf b/language/japanese/bxcjkjatype/sample-bxcjkjatype-beamer.pdf
new file mode 100644
index 0000000000..cdc9b97afa
--- /dev/null
+++ b/language/japanese/bxcjkjatype/sample-bxcjkjatype-beamer.pdf
Binary files differ
diff --git a/language/japanese/bxcjkjatype/sample-bxcjkjatype-beamer.tex b/language/japanese/bxcjkjatype/sample-bxcjkjatype-beamer.tex
new file mode 100644
index 0000000000..9d73a96425
--- /dev/null
+++ b/language/japanese/bxcjkjatype/sample-bxcjkjatype-beamer.tex
@@ -0,0 +1,76 @@
+% This file is encoded in UTF-8.
+% To be typeset with pdflatex or latex + dvipdfmx.
+\documentclass[12pt]{beamer} % for pdfTeX
+%\documentclass[12pt,dvipdfmx]{beamer} % for dvipdfmx
+\hypersetup{unicode}%← needed to make bookmark text right
+\usepackage[whole]{bxcjkjatype}% needed 'whole'
+%% That's all! You can do 日本語 right now!
+\usetheme{Warsaw}
+%---------------------------------------
+\title{How to do 日本語 with pdf{\TeX}}
+\author{ZR 某}
+\date{某日 of August, 2013}
+%---------------------------------------
+\begin{document}
+
+\begin{frame}
+ \titlepage
+\end{frame}
+
+%---------------------------------------
+\section{日本語 with bxcjkjatype package}
+
+\begin{frame}[fragile]{First}
+ Load the \alert{bxcjkjatype} package in preamble.\par
+ Use of \structure{\texttt{whole}} option is often suitable.\par
+ \begin{exampleblock}{とある Example}
+\begin{verbatim}
+\documentclass[a4paper]{article}
+\usepackage[whole]{bxcjkjatype}
+\end{verbatim}
+ \end{exampleblock}
+\end{frame}
+
+\begin{frame}[fragile]{Second}
+ Write whatever 日本語 text you like in the document body.\par
+ You can use ひらがな, カタカナ, 漢字, and/or
+ any character available in the standard fonts
+ (\structure{IPAex明朝/ゴシック}).\par
+ \begin{exampleblock}{とある Example}
+\begin{verbatim}
+\documentclass[a4paper]{article}
+\usepackage[whole]{bxcjkjatype}
+\begin{document}
+私のホバークラフトは鰻でいっぱいです。
+\end{document}
+\end{verbatim}
+ \end{exampleblock}
+ \structure{※} Must use UTF-8.\par
+\end{frame}
+
+\begin{frame}[fragile]{Third}
+ Compile the document as usual.\par
+
+\begin{verbatim}
+pdflatex sample.tex
+\end{verbatim}
+\end{frame}
+
+\begin{frame}{Last}\relax
+ {\LARGE\alert{完成!}\par}
+ \begin{block}{とある Output}
+ \rmfamily
+ 私のホバークラフトは鰻でいっぱいです。
+ \end{block}
+\end{frame}
+
+%---------------------------------------
+\section{Conclusion (Not!)}
+
+\begin{frame}{おしまい}
+ \transdissolve[duration=0.5]
+ \centering\Large
+ \structure{Happy 日本語 {\TeX}ing!}
+\end{frame}
+
+\end{document}
diff --git a/language/japanese/bxcjkjatype/sample-bxcjkjatype.pdf b/language/japanese/bxcjkjatype/sample-bxcjkjatype.pdf
new file mode 100644
index 0000000000..960978c535
--- /dev/null
+++ b/language/japanese/bxcjkjatype/sample-bxcjkjatype.pdf
Binary files differ
diff --git a/language/japanese/bxcjkjatype/sample-bxcjkjatype.tex b/language/japanese/bxcjkjatype/sample-bxcjkjatype.tex
new file mode 100644
index 0000000000..a7561fbc33
--- /dev/null
+++ b/language/japanese/bxcjkjatype/sample-bxcjkjatype.tex
@@ -0,0 +1,48 @@
+% This file is encoded in UTF-8.
+% (bxcjkjatype supports only UTF-8.)
+% To be typeset with pdflatex, latex + dvipdfmx, or latex + dvips
+\documentclass[a4paper]{article}
+% hyperref may require an explicit driver option
+% (bxcjkjatype does not.)
+%\documentclass[a4paper,dvipdfmx]{article}
+
+% The 'whole' option makes the whole document body wrapped with a
+% CJK* environment.
+\usepackage[whole]{bxcjkjatype}
+
+% After loading the package, you can write 日本語 text, even in the
+% preamble. You can define a macro which includes 日本語.
+\newcommand\Nihongo{日本語}
+
+% You can make PDF files which holds correct CJK text as document
+% information, such as boookmarks.
+\usepackage[unicode,% ←needed to make bookmark text right
+ bookmarks=true,colorlinks=true]{hyperref}
+
+% Here I use Standard fonts (IPAex fonts) for Mincho and Gothic
+% families. For Maru-gothic family, I use "Rounded M+ 1c Regular".
+% (available at http://d.hatena.ne.jp/itouhiro/20120226).
+\setmarugothicfont{rounded-mplus-1c-regular.ttf}
+
+\begin{document}
+% (Now already in a CJK* environment.)
+
+% You can safely put a section heading containing 日本語 letters!
+\section{Preparing 文書 in \Nihongo\ using pdf\TeX}
+The 文書 contains 日本語 and English.
+
+\section{Font selection}
+\begin{itemize}
+% \rmfamily designates Mincho family.
+\item \rmfamily Mincho (明朝) family.
+ % If you have specified a bold Mincho font with
+ % \setboldminchofont, then you will see it working.
+ % \textbf{And bold (太字) version.}
+% \sffamily designates Gothic family.
+\item \sffamily Gothic (ゴシック) family.
+% \mgfamily changes only CJK family, so the alphabetic font
+% family remains unchanged (i.e. in \sffamily).
+\item \mgfamily Maru-gothic (丸ゴシック) family.
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/endnotesj/LICENSE b/language/japanese/endnotesj/LICENSE
new file mode 100644
index 0000000000..99a0c323d1
--- /dev/null
+++ b/language/japanese/endnotesj/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2016-2018 Hironobu Yamashita
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/endnotesj/Makefile b/language/japanese/endnotesj/Makefile
new file mode 100644
index 0000000000..831ffc1468
--- /dev/null
+++ b/language/japanese/endnotesj/Makefile
@@ -0,0 +1,26 @@
+KANJI = -kanji=utf8
+FONTMAP = -f ipaex.map -f ptex-ipaex.map
+TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
+
+all: endnotesj-ja.pdf
+
+.SUFFIXES: .tex .dvi .pdf
+.tex.dvi:
+ platex $(KANJI) $<
+ platex $(KANJI) $<
+ rm *.aux *.log
+.dvi.pdf:
+ dvipdfmx $(FONTMAP) $<
+
+.PHONY: install clean
+install:
+ mkdir -p ${TEXMF}/doc/latex/endnotesj
+ cp ./Makefile ${TEXMF}/doc/latex/endnotesj/
+ cp ./LICENSE ${TEXMF}/doc/latex/endnotesj/
+ cp ./README.md ${TEXMF}/doc/latex/endnotesj/
+ cp ./*.pdf ${TEXMF}/doc/latex/endnotesj/
+ cp ./*.tex ${TEXMF}/doc/latex/endnotesj/
+ mkdir -p ${TEXMF}/tex/latex/endnotesj
+ cp ./*.sty ${TEXMF}/tex/latex/endnotesj/
+clean:
+ rm -f *.dvi *.pdf
diff --git a/language/japanese/endnotesj/README.md b/language/japanese/endnotesj/README.md
new file mode 100644
index 0000000000..4d7a3a4247
--- /dev/null
+++ b/language/japanese/endnotesj/README.md
@@ -0,0 +1,25 @@
+# endnotesj
+
+This bundle provides customized styles for endnote
+to be used with Japanese documents (pLaTeX, upLaTeX and LuaLaTeX).
+
+## Installation
+
+- *.sty -> $TEXMF/tex/latex/endnotesj
+- *.tex, *.pdf -> $TEXMF/doc/latex/endnotesj
+
+## Repository
+
+The bundle is maintained on GitHub:
+https://github.com/aminophen/endnotesj
+
+## License
+
+The bundle may be distributed and/or modified under the terms of
+the 3-clause BSD license (see [LICENSE](./LICENSE)).
+
+## Release Date
+
+2018-05-13
+
+Hironobu Yamashita
diff --git a/language/japanese/endnotesj/endnotesj-ja.pdf b/language/japanese/endnotesj/endnotesj-ja.pdf
new file mode 100644
index 0000000000..0b66ad6d8a
--- /dev/null
+++ b/language/japanese/endnotesj/endnotesj-ja.pdf
Binary files differ
diff --git a/language/japanese/endnotesj/endnotesj-ja.tex b/language/japanese/endnotesj/endnotesj-ja.tex
new file mode 100644
index 0000000000..9a3dc83851
--- /dev/null
+++ b/language/japanese/endnotesj/endnotesj-ja.tex
@@ -0,0 +1,232 @@
+%# -*- coding: utf-8 -*-
+\ifdefined\epTeXinputencoding % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+%
+% 日本語論文用 後註生成マクロ for pLaTeX2e 付属ドキュメント
+%
+% endnotesj.sty v3.0 系列は、熊本学園大学経済学部の
+% 小川弘和さんによる endnotesj.sty 2003/02/12 v2.1 に対し、
+% 許可を得て山下弘展がいくつかの修正・拡張を施したものです。
+%
+% この文書は、原著者である小川さんの文書
+% aboutendnotesj.sjis
+% を山下が LaTeX ソース化し、適宜記述を追加したものです。
+%
+% 元のファイル (v2.1) は、2016 年 9 月 8 日に
+% JIS X 0212 for pTeX
+% http://www2.kumagaku.ac.jp/teacher/herogw/
+% から取得しました。著作表記は、以下のとおりでした。
+%
+% =============================================================
+% 改造者:小川弘和(熊本学園大学経済学部)
+% mail:dokuroishi@mac.com,herogw@kumagaku.ac.jp
+% web:http://homepage.mac.com/dokuroryokan/index.html
+% http://www2.kumagaku.ac.jp/teacher/herogw/index.html
+%
+% based on "endnotes.sty" written by John Lavagnino
+% lav@brandeis.bitnet, 9/23/88
+% Department of English and American Literature,
+% Brandeis University
+% =============================================================
+%
+
+\documentclass[a4paper]{jsarticle}
+\usepackage{doc}
+\usepackage{endnotesj}
+\GetFileInfo{endnotesj.sty}
+\def\Lpack#1{\textsf{#1}}
+\def\Lopt#1{\texttt{#1}}
+\title{\Lpack{\filename} \fileversion\\
+ 日本語論文用 後註生成マクロ}
+\author{小川 弘和(熊本学園大学経済学部)\\
+ modified by 山下 弘展}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+日本史・国文学関係論文作成に必要な、縦型の“(連数字)”形式
+註番号および、複数行にわたる註部分テキストの2行目以降を、先頭行
+テキスト開始位置に揃える表記を可能とした、後註生成マクロです。
+縦組論文での使用を意図して作成していますが、横組論文でもその
+まま使用可能です。
+
+このバージョン(\fileversion)は、旧版との互換性を極力維持しつつ、
+内部マクロを本家(\Lpack{endnotes.sty})最新版に合わせて更新し、さらに
+機能拡張を施したものです。旧版同様にp\LaTeX/up\LaTeX{}で動作する
+ことに加え、Lua\LaTeX\ (Lua\TeX-ja)にも対応しています。
+最新版はGitHubリポジトリ
+\begin{verbatim}
+ https://github.com/aminophen/endnotesj
+\end{verbatim}
+で管理しています。
+
+\section{コマンド・マニュアル}
+
+コマンド自体はオリジナルである\Lpack{endnotes.sty}と同じです。
+
+\begin{itemize}
+\item \verb+\endnote{註}+\\
+ 本文中に挿入することで自動的に、\verb+{}+に挟まれたテキストを、
+ 連番を付した後註として扱います。つまり、このコマンドの埋め込
+ まれた位置の本文肩に註番号を生成するとともに、後に解説する
+ \verb+\theendnotes+コマンドによって、\verb+{}+に挟まれたテキ
+ ストの冒頭に同様の番号を付したうえで、後註として列挙するわけ
+ です。
+\item \verb+\endnote[数字]{註}+\\
+ \verb+[数字]+部分に任意の数字を埋め込むことで、数字で指定した
+ 数を註番号とする後註を生成します。
+ このコマンドによって生成された註は、上記\verb+\endnote{註}+に
+ よって生成される註とは別グループとして扱われるため、そちら
+ の番号に影響を与えることはありません。
+ よって表記を改良すれば補注用として利用可能ですが、現状では
+ 通常の註と同スタイルのため紛らわしいので、使用は勧められません。
+\item \verb+\endnotemark[数字]+\\
+ 実際には後註を生成せぬままで、本文肩に任意の註番号を生成します。
+ また、\verb+[数字]+オプションを用いた場合、以降の註番号は任意
+ の番号にスキップしたうえで生成されていくことになります。
+\item \verb+\endnotetext[数字]{註}+\\
+ 番号を表立って表記せぬ後註を生成します。このコマンドの場合
+ でも、内部的には註番号はカウントされています。
+ なお[数字]オプションの機能は\verb+\endnotemark+と同様です。
+\item \verb+\theendnotes+\\
+ 本文中に挿入することでその位置に、それまで\verb+\endnote+等の
+ コマンドによって生成された後註を列挙表示します。
+ なお、\verb+\setcounter{endnote}{0}+コマンドを用いると、その
+ 後の註番号が再び(1)より開始されますので、本コマンドとの組合せ
+ によって、容易に章・節ごとの後註が作成できます。
+\end{itemize}
+
+\section{パッケージ・オプション}
+
+次に、パッケージのオプションを説明します。
+これらは\Lpack{endnotesj.sty}独自のものです。
+
+\subsection{注釈印の書式}
+
+プリアンブルで
+\begin{verbatim}
+ \usepackage{endnotesj}
+\end{verbatim}
+とすることで、縦組用の“(連数字)”型注(『日本史研究』等の形式。
+本文中では、注挿入指定位置直前の文字の直上に注No.を配置する。)が
+使用可能に、
+\begin{verbatim}
+ \usepackage[yoko]{endnotesj}
+\end{verbatim}
+とすることで、横組用の“(数字)”型注(本文中では、注挿入指定
+位置直前の文字の直後上方に、ほぼ1/4倍角で注No.を配置する。)が
+使用可能に、
+\begin{verbatim}
+ \usepackage[single]{endnotesj}
+\end{verbatim}
+とすることで、横組用の“数字)”型注(『歴史学研究』等の形式。
+本文中では、注挿入指定位置直前の文字の直後上方に、ほぼ1/4倍角で
+注No.を配置する。)が使用可能になります。
+
+\subsection{\Lpack{otf}パッケージを用いた注釈印の書式}
+
+\Lpack{otf}パッケージをインストールしてある環境であれば、
+注番号の数字に詰数字を用い、より奇麗に表示可能です。
+この機能を使うには
+\begin{verbatim}
+ \usepackage[otf]{endnotesj}
+\end{verbatim}
+と指定します。\Lopt{otf}はv3.0で新設されたオプションで、
+旧バージョンv2.1にあった\Lopt{utf}も同じ意味になります。
+
+このオプションを指定すると、
+\Lpack{otf.sty}および\Lpack{ajmacros.sty}で定義されている
+\verb+\UTF+・\verb+\ajTumesuji+コマンドに動作が依存します。
+そのため、これらのパッケージを自動で読み込みます
+\footnote{古い環境で\Lpack{utf.sty}および\Lpack{utfmacro.sty}しか
+利用できない場合は、これらにフォールバックします。}。このため、
+別途これらのパッケージを\verb+\usepackage+する必要はありませんが、
+\Lpack{otf.sty}の各種オプション(\Lopt{expert}など)を用いたい場合は
+\Lpack{endnotesj.sty}より\emph{前}に指定してください。
+
+\subsection{後注列挙部分のタイトル}
+
+ここまでの節で紹介したオプション以外が\verb+\usepackage+の
+オプションに指定された場合は、それを後注列挙部分のタイトルと
+して用います。たとえば、
+\begin{verbatim}
+ \usepackage[注]{endnotesj}
+\end{verbatim}
+オプションで、文末の後注列挙部分の先頭に「注」、
+\begin{verbatim}
+ \usepackage[註]{endnotesj}
+\end{verbatim}
+オプションで「註」と表記されます(v2.1以前は「注」と「註」のみ
+サポートしていましたが、v3.0以降は「注釈」や「後註」なども
+自由に指定できます)。オプション無指定の場合には、何も表記せぬ
+まま、注が列挙されていきます。
+
+\section{行数・桁数指定マクロ}
+
+\Lpack{endnotesj.sty}には、
+『\LaTeX{}スタイル・マクロ ポケットリファレンス』(技術評論社)、
+いわゆるポケリで紹介されている行数・桁数指定マクロも組み込んで
+あり、使用することが可能です。用紙サイズにあわせて自動的に字間
+配置を調整する\TeX{}には本来は、行数・桁数指定は馴染まないので
+すが、投稿規定上、行数・文字数を固定する必要がある場合に用いて
+ください。
+
+基本的な記述法は以下の通りです。
+\begin{verbatim}
+ \kcharparline{30}
+ \begin{document}
+ \linesparpage{20}
+\end{verbatim}
+
+\verb+\kcharparline{30}+が、用紙縦方向の文字数指定。
+この場合、30文字に指定しています。
+なお、このコマンドはプリアンプルで指定します。
+
+\verb+\linesparpage{20}+が、用紙横方向の文字数指定。
+ここでは、20文字に指定しています。こちらは本文で指定するか、
+\verb+\AtBeginDocument{}+に入れて使用します。
+
+\section{旧版(v2.1以前)との違い}
+
+% ---- 細かい挙動なので削除 ----
+% v2.1以前とv3.0以降の唯一の違いとして、v2.1では「注」と「註」を
+% 同時に指定した場合には「注」が優先されましたが、v3.0以降は
+% 「複数指定されたうちの最後の一つ」が優先されます。同時に指定
+% するという使い方は全く無意味でしたから、影響はないと思います。
+
+% ----- 2018 年となっては 15 年以上前の話なので削除 -----
+% なお、v2よりもっと古く配布していた、横組用“数字)”型表記用
+% マクロendnotesjs.styは、endnotesj.styに機能が改良統合された
+% ため、廃止しました。また、以前は本文肩註番号表記の実現に際し、
+% 金水敏氏が作成された訓点資料表記用マクロkunten2e.styに定義され
+% ている\verb+\MigiNakaTn+コマンドに依存しておりましたが、記述を
+% 見直すことにより、非依存となりました。
+
+旧版(v2.1)からv3.0での変更点は、以下のとおりです。
+\begin{itemize}
+\item パッケージのコード本体からASCII文字以外を排除。
+\item 後註内部マクロを最新の\Lpack{endnotes.sty}%
+ \footnote{Date of this version: 15 January 2003.}ベースに更新。
+ これにより、例えば本文中で合印直前で行分割することがあった問題が
+ 解決しました。
+\item パッケージのオプションを拡張。
+ 組方向(縦・横)に応じて適切な注の印が出る\Lopt{auto-tateyoko}を
+ 新設し、これをデフォルトに設定しました。
+ また、「注」「註」以外のタイトル形式を可能になりました。
+\item もし本家パッケージ(\Lpack{endnotes.sty})が存在する場合で、
+ \Lpack{endnotesj.sty}が読み込まれた時点で未読み込みならば、
+ 読み込み済み扱いするようにした(そうしないと、後で意図せず
+ 読み込まれて、日本語対応コードが上書きされるかもしれないため。)
+\item \verb+\linesparpage+の修正(行間の数ではなく行数で割って
+ いたため、行数が合わないことがありました。また、\verb+\topskip+の
+ 分を差し引いておらず、正しい行間隔になっていませんでした。)
+\end{itemize}
+
+\section{実際のスタイル見本(日本語版)}
+
+スタイル見本はGitHubのsamplesディレクトリを参照してください。
+
+\end{document}
diff --git a/language/japanese/endnotesj/endnotesj.sty b/language/japanese/endnotesj/endnotesj.sty
new file mode 100644
index 0000000000..66848a9319
--- /dev/null
+++ b/language/japanese/endnotesj/endnotesj.sty
@@ -0,0 +1,664 @@
+%
+% Package ``endnotesj.sty'' for endnotes in Japanese articles,
+% written by Hirokazu OGAWA and Hironobu YAMASHITA
+%
+% This package is part of the endnotesj bundle.
+% https://github.com/aminophen/endnotesj
+%
+% Authors:
+% * Hirokazu OGAWA (Kumamoto Gakuen University)
+% Mail: herogw at kumagaku.ac.jp
+% Web: http://www2.kumagaku.ac.jp/teacher/herogw/index.html
+% * Hironobu YAMASHITA
+% Mail: h.y.acetaminophen at gmail.com
+% Github: @aminophen
+%
+% This work is based on ``endnotes.sty'' (15 January 2003)
+% written by John Lavagnino.
+%
+% ****************************************
+% * ENDNOTE MACROS *
+% ****************************************
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{endnotesj}
+ [2018/05/13 v3.0 endnotesj (H. Ogawa and H. Yamashita)]
+%
+%% Requirements: engine & format
+%
+% This package supports pTeX/upTeX and LuaTeX-ja only;
+% otherwise, throw an error
+% When the error is ignored, fall back to endnotes.sty and exit
+% (--> unsupported feature, of course)
+\ifx\pfmtname\@undefined
+ \expandafter\ifx\csname ver@luatexja.sty\endcsname\relax
+ \PackageError{endnotesj}{%
+ Unsupported engine detected!\MessageBreak
+ Please use pLaTeX, upLaTeX or LuaTeX-ja instead}{%
+ I will load `endnotes.sty' instead, but
+ the result will be undesired.}
+ \RequirePackage{endnotes}
+ \expandafter\expandafter\expandafter\endinput\expandafter\fi
+\fi
+%
+% Ensure compatibility in units between pTeX/upTeX and LuaTeX-ja
+% * \endnj@zw = width of the current full-width Japanese font
+% (zen-kaku width)
+% * \endnj@zh = height of the current full-width Japanese font
+% (zen-kaku height)
+\ifx\directlua\@undefined
+ % pTeX/upTeX should have `zw' and `zh'
+ \def\endnj@zw{zw}
+ \def\endnj@zh{zh}
+\else
+ % LuaTeX-ja should have `\zw` and `\zh'
+ \def\endnj@zw{\zw}
+ \def\endnj@zh{\zh}
+\fi
+%
+%% Ensure that endnotes.sty is NOT loaded after this package
+%
+\@ifpackageloaded{endnotes}{}{%
+ \IfFileExists{endnotes.sty}{%
+ \expandafter\def\csname ver@endnotes.sty\endcsname{}}{}}
+%
+%% Initialize \notesname
+%
+\def\notesname{} % should be empty by default (endnotesj.sty original)
+%
+%% Package options (endnotesj original)
+%% * Note that the order of declarations is also important, especially
+%% for options which compete with each other (e.g. tate/yoko)
+%% cf. ltclass.dtx
+%% "In the case of \ProcessOptions, they are processed in the
+%% order that they were declared in the class or package."
+%
+% Directions - force yoko (horizontal) or tate (vertical)?
+\newif\if@endnj@tate \@endnj@tatefalse
+\newif\if@endnj@yoko \@endnj@yokofalse
+\newif\if@endnj@autotateyoko \@endnj@autotateyokofalse
+\DeclareOption{tate}{\@endnj@autotateyokofalse\@endnj@tatetrue\@endnj@yokofalse}
+\DeclareOption{yoko}{\@endnj@autotateyokofalse\@endnj@yokotrue\@endnj@tatefalse}
+%
+% Use conditional definitions for switching marks depending on
+% vertical/horizontal Japanese writing direction
+\DeclareOption{auto-tateyoko}{\@endnj@autotateyokotrue\@endnj@tatefalse\@endnj@yokofalse}
+%
+% Brackets - single or twin?
+\newif\if@endnj@single \@endnj@singlefalse
+\DeclareOption{twin}{\@endnj@singlefalse} % => default
+\DeclareOption{single}{\@endnj@singletrue}
+%
+% Use utf/otf package?
+\newif\if@endnj@utf \@endnj@utffalse
+\DeclareOption{utf}{\@endnj@utftrue}
+\DeclareOption{otf}{\@endnj@utftrue}
+%
+% `ver3' mode - Use improved styles of \@makeenmark (endnote marks) and
+% \enoteformat (the endnote format)
+\def\endnj@vermode{3}
+\DeclareOption{ver3}{\def\endnj@vermode{3}} % => future default
+%
+% `ver2' mode - For backward compatibility: use styles of \@makeenmark
+% and \enoteformat which are inherited from previous
+% versions of endnotesj.sty
+\DeclareOption{ver2}{\typeout{*** endnotesj version 2 compatibility mode ***}%
+ \def\endnj@vermode{2}}
+%
+% Other options are unknown, however endnotesj.sty accepts only one
+% unknown option, which is then regarded as \notesname (= endnote section title)
+% If more than one unknown options are requested, the last one is chosen;
+% the others are simply ignored, so throw an error (for fear of misspelling)
+\def\endnj@temp@ptions{}
+\DeclareOption*{\ifx\endnj@temp@ptions\@empty
+ \edef\endnj@temp@ptions{\CurrentOption}%
+ \else
+ \edef\endnj@temp@ptions{\endnj@temp@ptions,\CurrentOption}%
+ \fi
+ \edef\notesname{\CurrentOption}}
+\ExecuteOptions{auto-tateyoko,twin,ver3}
+\ProcessOptions
+%
+%% Option handlings
+%
+% Throw an error for more than one unknown options
+% Also, show info about what will be used as `\notesname'
+\@for\reserved@a:=\endnj@temp@ptions\do{%
+ \ifx\reserved@a\notesname
+ \typeout{*** Package endnotesj will use `\notesname' as \string\notesname. ***}%
+ \else
+ \ifx\reserved@a\@empty\else
+ \PackageError{endnotesj}{%
+ Unknown option `\reserved@a' ignored!\MessageBreak
+ It seems that more than one unknown options\MessageBreak
+ were requested, and `\notesname' was taken as\MessageBreak
+ \string\notesname. Perhaps you misspelled some options}{%
+ The options `\endnj@temp@ptions' were not declared in package endnotesj.\MessageBreak
+ Package endnotesj accepts ONLY ONE unknown option (the last one;\MessageBreak
+ in this case `\notesname'), which is regarded as \string\notesname.\MessageBreak
+ The others will be simply ignored.}
+ \fi
+ \fi}
+%
+% If `single' is specified, `tate' should be false
+\if@endnj@single
+ \if@endnj@tate
+ \PackageWarning{endnotesj}{%
+ Option `single' cannot be used with `tate'.\MessageBreak
+ Please use `auto-tateyoko' or `yoko'.\MessageBreak
+ Entering `auto-tateyoko' mode}
+ \@endnj@autotateyokotrue\@endnj@tatefalse\@endnj@yokofalse
+ \fi
+\fi
+%
+% If `otf'/`utf' options are specified, load either of otf.sty/utf.sty
+\if@endnj@utf
+\ifx\directlua\@undefined
+ \@ifpackageloaded{utf}{}{\@ifpackageloaded{otf}{}{%
+ \IfFileExists{otf.sty}{\RequirePackage{otf}}{%
+ \IfFileExists{utf.sty}{\RequirePackage{utf}}{%
+ \PackageError{endnotesj}{Neither otf.sty nor utf.sty found}\@ehc
+ \@endnj@utffalse}% fall back
+ }}}
+\else
+ \@ifpackageloaded{luatexja-otf}{}{%
+ \IfFileExists{luatexja-otf.sty}{\RequirePackage{luatexja-otf}}{%
+ \PackageError{endnotesj}{luatexja-otf.sty not found}\@ehc
+ \@endnj@utffalse}% fall back
+ }
+\fi
+\fi
+%
+%% Misc helpers
+%
+% fallback from #1 to #2 (tate-single -> tate-twin)
+% once #1 is executed, throw a warning and replace its definition with
+% the definition of #2, and execute it
+\def\endnj@tate@single@unavailable#1#2{%
+ \def#1{%
+ \PackageWarning{endnotesj}{%
+ `single' style is unavailable in `tate' direction.\MessageBreak
+ I'll use `twin' style instead.}%
+ \global\let#1#2%
+ #1}%
+}
+%
+%
+%%%%% Import from endnotes.sty
+%
+\@definecounter{endnote}
+\def\theendnote{\arabic{endnote}}
+%
+%%%%% End
+%
+%
+%% Customized endnote marks inside the main text for Japanese documents
+%
+% [1] `tate' & `twin'
+% Common style for vertical writing with twin full-width round brackets
+% like "Journal of Japanese history" (Nihonshi kenkyu)
+%
+% *** ver 2 ***
+\def\endnj@ii@tate@makeenmark{%
+ \kern -1.2\endnj@zw%
+ \raisebox{.8\endnj@zh}{\tiny \char\jis"214A\relax\hspace{0.2\endnj@zw}%
+ \hbox{\yoko\@theenmark}%
+ \hspace{0.2\endnj@zw}\char\jis"214B\relax
+ }%
+}
+% *** ver 3 ***
+\def\endnj@iii@tate@makeenmark{%
+ \hb@xt@\z@{%
+ \kern -1.2\endnj@zw\hss
+ \raisebox{.8\endnj@zh}{\tiny \char\jis"214A\relax\hspace{0.1\endnj@zw}%
+ \hbox{\yoko\@theenmark}%
+ \hspace{0.1\endnj@zw}\char\jis"214B\relax
+ }%
+ }%
+}
+%
+% [1'] `tate' & `twin' & `utf'
+% More beautiful output using "tsume-suji" requires otf/utf package
+%
+% *** ver 2 ***
+\def\endnj@ii@tate@utf@makeenmark{%
+ \kern -1.2\endnj@zw%
+ \raisebox{.8\endnj@zh}{\tiny \char\jis"214A\relax
+ \hbox{\yoko\expandafter\ajTumesuji\expandafter*\expandafter{\number\@theenmark}}%
+ \char\jis"214B\relax
+ }%
+}
+% *** ver 3 ***
+\def\endnj@iii@tate@utf@makeenmark{%
+ \hb@xt@\z@{%
+ \kern -1.2\endnj@zw\hss
+ \raisebox{.8\endnj@zh}{\tiny \char\jis"214A\relax
+ \hbox{\yoko\expandafter\ajTumesuji\expandafter*\expandafter{\number\@theenmark}}%
+ \char\jis"214B\relax
+ }%
+ }%
+}
+%
+% [2] `yoko' & `twin'
+% Common style for horizontal writing with twin round brackets
+%
+% *** ver 2 ***
+\def\endnj@ii@yoko@makeenmark{%
+ \raisebox{.5\endnj@zh}{\tiny (\hspace{0.2\endnj@zw}%
+ \hbox{\@theenmark}%
+ )%
+ }%
+}
+% *** ver 3 *** (using twin full-width round brackets)
+\def\endnj@iii@yoko@makeenmark{%
+ \raisebox{.5\endnj@zh}{\tiny \char\jis"214A\relax\hspace{0.1\endnj@zw}%
+ \hbox{\@theenmark}%
+ \hspace{0.1\endnj@zw}\char\jis"214B\relax
+ }%
+}
+%
+% [2'] `yoko' & `twin' & `utf'
+% More beautiful output using "tsume-suji" requires otf/utf package
+%
+% *** ver 2 ***
+\def\endnj@ii@yoko@utf@makeenmark{%
+ \raisebox{.5\endnj@zh}{\tiny \char\jis"214A\relax
+ \hbox{\expandafter\ajTumesuji\expandafter*\expandafter{\number\@theenmark}}%
+ \char\jis"214B\relax
+ }%
+}
+% *** ver 3 ***
+\let\endnj@iii@yoko@utf@makeenmark\endnj@ii@yoko@utf@makeenmark
+%
+% [3] `yoko' & `single'
+% Style for horizontal writing with single round bracket
+% like "Journal of historical studies" (Rekishigaku kenkyu)
+%
+% *** ver 2 ***
+\def\endnj@ii@yoko@single@makeenmark{%
+ \raisebox{.5\endnj@zh}{\tiny
+ \hbox{\@theenmark}%
+ )%
+ }%
+}
+% *** ver 3 ***
+\let\endnj@iii@yoko@single@makeenmark\endnj@ii@yoko@single@makeenmark
+%
+% [3'] `yoko' & `single' & `utf'
+% More beautiful output using "tsume-suji" requires otf/utf package
+%
+% *** ver 2 ***
+\def\endnj@ii@yoko@single@utf@makeenmark{%
+ \raisebox{.5\endnj@zh}{\tiny
+ \hbox{\expandafter\ajTumesuji\expandafter*\expandafter{\number\@theenmark}}%
+ \char\jis"214B\relax
+ }%
+}
+% *** ver 3 ***
+\let\endnj@iii@yoko@single@utf@makeenmark\endnj@ii@yoko@single@utf@makeenmark
+%
+% [4] `tate' & `single' (& `utf')
+% Not available! - fallback definitions
+%
+\endnj@tate@single@unavailable\endnj@ii@tate@single@makeenmark\endnj@ii@tate@makeenmark
+\endnj@tate@single@unavailable\endnj@iii@tate@single@makeenmark\endnj@iii@tate@makeenmark
+\endnj@tate@single@unavailable\endnj@ii@tate@single@utf@makeenmark\endnj@ii@tate@utf@makeenmark
+\endnj@tate@single@unavailable\endnj@iii@tate@single@utf@makeenmark\endnj@iii@tate@utf@makeenmark
+%
+% Current names of the commands for `tate' and `yoko'
+%
+\expandafter\def\expandafter\endnj@tate@makeenmark\expandafter{%
+ \csname endnj@%
+ \romannumeral\endnj@vermode @%
+ tate@%
+ \if@endnj@single single@\fi%
+ \if@endnj@utf utf@\fi%
+ makeenmark\endcsname}
+\expandafter\def\expandafter\endnj@yoko@makeenmark\expandafter{%
+ \csname endnj@%
+ \romannumeral\endnj@vermode @%
+ yoko@%
+ \if@endnj@single single@\fi%
+ \if@endnj@utf utf@\fi%
+ makeenmark\endcsname}
+%
+% Now, redefine \@makeenmark using above definitions
+%
+\if@endnj@tate
+ \let\@makeenmark\endnj@tate@makeenmark
+\fi
+\if@endnj@yoko
+ \let\@makeenmark\endnj@tate@makeenmark
+\fi
+%
+%% End
+%
+%
+%%%%% Import from endnotes.sty
+%
+\def\makeenmark{\@makeenmark} % Added in endnotes.sty (JL 12 January 2003)
+\def\theenmark{\@theenmark} % Added in endnotes.sty (JL 12 January 2003)
+%
+\newdimen\endnotesep
+%
+\def\endnote{\@ifnextchar[\@xendnote{\stepcounter{endnote}%
+ \protected@xdef\@theenmark{\theendnote}%
+ \@endnotemark\@endnotetext}}
+%
+\def\@xendnote[#1]{%
+ \begingroup
+ \c@endnote=#1\relax
+ \unrestored@protected@xdef\@theenmark{\theendnote}%
+ \endgroup
+ \@endnotemark\@endnotetext}
+%
+\let\@doanenote=0
+\let\@endanenote=0
+%
+\newwrite\@enotes
+\newif\if@enotesopen \global\@enotesopenfalse
+%
+\def\@openenotes{\immediate\openout\@enotes=\jobname.ent\relax
+ \global\@enotesopentrue}
+%
+\long\def\@endnotetext#1{%
+ \if@enotesopen \else \@openenotes \fi
+ \immediate\write\@enotes{\@doanenote{\@theenmark}}%
+ \begingroup
+ \def\next{#1}%
+ \newlinechar='40
+ \immediate\write\@enotes{\meaning\next}%
+ \endgroup
+ \immediate\write\@enotes{\@endanenote}}
+%
+\long\def\addtoendnotes#1{%
+ \if@enotesopen \else \@openenotes \fi
+ \begingroup
+ \newlinechar='40
+ \let\protect\string
+ \immediate\write\@enotes{#1}%
+ \endgroup}
+%
+\def\endnotemark{%
+ \@ifnextchar[\@xendnotemark
+ {\stepcounter{endnote}%
+ \protected@xdef\@theenmark{\theendnote}%
+ \@endnotemark}}
+%
+\def\@xendnotemark[#1]{%
+ \begingroup
+ \c@endnote #1\relax
+ \unrestored@protected@xdef\@theenmark{\theendnote}%
+ \endgroup
+ \@endnotemark}
+%
+\def\@endnotemark{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ \makeenmark
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax}
+%
+\def\endnotetext{%
+ \@ifnextchar [\@xendnotenext
+ {\protected@xdef\@theenmark{\theendnote}%
+ \@endnotetext}}
+%
+\def\@xendnotenext[#1]{%
+ \begingroup
+ \c@endnote=#1\relax
+ \unrestored@protected@xdef\@theenmark{\theendnote}%
+ \endgroup
+ \@endnotetext}
+%
+\def\enoteheading{\section*{\notesname
+ \@mkboth{\MakeUppercase{\notesname}}{\MakeUppercase{\notesname}}}%
+ \mbox{}\par\vskip-\baselineskip}
+%
+%%%%% End
+%
+%
+%% Settings of endnote formatting at the end of Japanese documents
+%% (The numbering styles and indentation are considered.)
+%
+% [1] `tate' & `twin'
+% Common style for vertical writing with twin full-width round brackets
+% like "Journal of Japanese history" (Nihonshi kenkyu)
+%
+% *** ver 2 ***
+\def\endnj@ii@tate@enoteformat#1{%
+ \parindent 1em\noindent
+ \@hangfrom{\raisebox{.07\endnj@zh}{(}\hspace{0.2\endnj@zw}%
+ \hbox{\yoko\@theenmark}%
+ \hspace{0.2\endnj@zw}\raisebox{.07\endnj@zh}{)}%
+ }#1%
+}
+% *** ver 3 ***
+\def\endnj@iii@tate@enoteformat#1{%
+ \parindent 1em\noindent
+ \@hangfrom{\mbox{}\char\jis"214A\relax\hspace{0.1\endnj@zw}%
+ \hbox{\yoko\@theenmark}%
+ \hspace{0.1\endnj@zw}\char\jis"214B\relax\mbox{}%
+ }#1%
+}
+%
+% [1'] `tate' & `twin' & `utf'
+% More beautiful output using "tsume-suji" requires otf/utf package
+%
+% *** ver 2 ***
+\def\endnj@ii@tate@utf@enoteformat#1{%
+ \parindent 1em\noindent
+ \@hangfrom{\UTF{FE35}%
+ \hbox{\yoko\expandafter\ajTumesuji\expandafter*\expandafter{\number\@theenmark}}%
+ \UTF{FE36}%
+ }#1%
+}
+% *** ver 3 ***
+\def\endnj@iii@tate@utf@enoteformat#1{%
+ \parindent 1em\noindent
+ \@hangfrom{\mbox{}\char\jis"214A\relax
+ \hbox{\yoko\expandafter\ajTumesuji\expandafter*\expandafter{\number\@theenmark}}%
+ \char\jis"214B\relax\mbox{}%
+ }#1%
+}
+%
+% [2] `yoko' & `twin'
+% Common style for horizontal writing with twin round brackets
+%
+% *** ver 2 ***
+\def\endnj@ii@yoko@enoteformat#1{%
+ \parindent 1em\noindent
+ \@hangfrom{(\hspace{0.2\endnj@zw}%
+ \hbox{\@theenmark}%
+ \hspace{0.2\endnj@zw})%
+ }#1%
+}
+% *** ver 3 *** (using twin full-width round brackets)
+\def\endnj@iii@yoko@enoteformat#1{%
+ \parindent 1em\noindent
+ \@hangfrom{\mbox{}\char\jis"214A\relax\hspace{0.1\endnj@zw}%
+ \hbox{\@theenmark}%
+ \hspace{0.1\endnj@zw}\char\jis"214B\relax\mbox{}%
+ }#1%
+}
+%
+% [2'] `yoko' & `twin' & `utf'
+% More beautiful output using "tsume-suji" requires otf/utf package
+%
+% *** ver 2 ***
+\def\endnj@ii@yoko@utf@enoteformat#1{%
+ \parindent 1em\noindent
+ \@hangfrom{\char\jis"214A\relax%
+ \hbox{\expandafter\ajTumesuji\expandafter*\expandafter{\number\@theenmark}}%
+ \char\jis"214B\relax
+ }#1%
+}
+% *** ver 3 ***
+\def\endnj@iii@yoko@utf@enoteformat#1{%
+ \parindent 1em\noindent
+ \@hangfrom{\mbox{}\char\jis"214A\relax%
+ \hbox{\expandafter\ajTumesuji\expandafter*\expandafter{\number\@theenmark}}%
+ \char\jis"214B\relax\mbox{}%
+ }#1%
+}
+%
+% [3] `yoko' & `single'
+% Style for horizontal writing with single round bracket
+% like "Journal of historical studies" (Rekishigaku kenkyu)
+%
+% *** ver 2 ***
+\def\endnj@ii@yoko@single@enoteformat#1{%
+ \parindent 1em\noindent
+ \@hangfrom{%
+ \hbox{\@theenmark}%
+ )%
+ }#1%
+}
+% *** ver 3 ***
+\let\endnj@iii@yoko@single@enoteformat\endnj@ii@yoko@single@enoteformat
+%
+% [3'] `yoko' & `single' & `utf'
+% More beautiful output using "tsume-suji" requires otf/utf package
+%
+% *** ver 2 ***
+\def\endnj@ii@yoko@single@utf@enoteformat#1{%
+ \parindent 1em\noindent
+ \@hangfrom{%
+ \hbox{\expandafter\ajTumesuji\expandafter*\expandafter{\number\@theenmark}}%
+ \char\jis"214B\relax
+ }#1%
+}
+% *** ver 3 ***
+\let\endnj@iii@yoko@single@utf@enoteformat\endnj@ii@yoko@single@utf@enoteformat
+%
+% [4] `tate' & `single' (& `utf')
+% Not available! - fallback definitions
+%
+\endnj@tate@single@unavailable\endnj@ii@tate@single@enoteformat\endnj@ii@tate@enoteformat
+\endnj@tate@single@unavailable\endnj@iii@tate@single@enoteformat\endnj@iii@tate@enoteformat
+\endnj@tate@single@unavailable\endnj@ii@tate@single@utf@enoteformat\endnj@ii@tate@utf@enoteformat
+\endnj@tate@single@unavailable\endnj@iii@tate@single@utf@enoteformat\endnj@iii@tate@utf@enoteformat
+%
+% Current names of the commands for `tate' and `yoko'
+%
+\expandafter\def\expandafter\endnj@tate@enoteformat\expandafter{%
+ \csname endnj@%
+ \romannumeral\endnj@vermode @%
+ tate@%
+ \if@endnj@single single@\fi%
+ \if@endnj@utf utf@\fi%
+ enoteformat\endcsname}
+\expandafter\def\expandafter\endnj@yoko@enoteformat\expandafter{%
+ \csname endnj@%
+ \romannumeral\endnj@vermode @%
+ yoko@%
+ \if@endnj@single single@\fi%
+ \if@endnj@utf utf@\fi%
+ enoteformat\endcsname}
+%
+% Now, redefine \enoteformat using above definitions
+%
+\if@endnj@tate
+ \let\enoteformat\endnj@tate@enoteformat
+\fi
+\if@endnj@yoko
+ \let\enoteformat\endnj@yoko@enoteformat
+\fi
+%
+%% End
+%
+%
+\def\enotesize{\small} % endnotesj.sty original
+%
+%%%%% Import from endnotes.sty
+%
+\def\theendnotes{\immediate\closeout\@enotes \global\@enotesopenfalse
+ \begingroup
+ \makeatletter
+ %
+ % The machinery with \@ResetGT and > here ensures that
+ % \@doanenote works properly even if > is an active character
+ % at the point where \theendnotes is invoked. > needs to have
+ % catcode 12 when the arguments of \@doanenote are scanned, so
+ % that the > in the string "macro:->" is matched. The actual
+ % footnote text is not an argument to \@doanenote, but just
+ % follows it in the .ent file; so \@ResetGT can reset the
+ % category code for > that should be used when processing
+ % that text. That resetting takes place within a
+ % \begingroup-\endgroup block set up by \@doanenote and
+ % \@endanenote, so the catcode for > is back to 12 for the
+ % next note.
+ %
+ \edef\@tempa{`\string >}%
+ \ifnum\catcode\@tempa=12%
+ \let\@ResetGT\relax
+ \else
+ \edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
+ \@makeother\>%
+ \fi
+ \def\@doanenote##1##2>{\def\@theenmark{##1}\par\begingroup
+ \@ResetGT
+ \edef\@currentlabel{\csname p@endnote\endcsname\@theenmark}%
+ \enoteformat}
+ \def\@endanenote{\par\endgroup}%
+ \enoteheading
+ \enotesize
+ \input{\jobname.ent}%
+ \endgroup}
+%
+%%%%% End
+%
+%
+%% Definitions for auto-tateyoko option
+%
+\ifx\directlua\@undefined
+ \catcode`\L=14\relax
+ \catcode`\P=9\relax
+\else
+ \catcode`\L=9\relax
+ \catcode`\P=14\relax
+\fi
+\if@endnj@autotateyoko
+ \def\@makeenmark{%
+P \iftdir
+L \ifnum\numexpr
+L \ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8=3\relax
+ \endnj@tate@makeenmark
+ \else
+ \endnj@yoko@makeenmark
+ \fi}
+ \def\enoteformat{%
+P \iftdir
+L \ifnum\numexpr
+L \ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8=3\relax
+ \endnj@tate@enoteformat
+ \else
+ \endnj@yoko@enoteformat
+ \fi}
+\fi
+\catcode`\L=11\relax
+\catcode`\P=11\relax
+%
+%
+% ****************************************
+% * Lines per page & Characters per line *
+% ****************************************
+%
+% Changes in v3.0:
+% * \linesparpage: the number of interline skip is fewer
+% than the number of lines
+% * \linesparpage: subtract \topskip from \textheight
+% * \kcharparline: add \relax at the end of definition
+%
+\def\linesparpage#1{%
+ \@tempcnta=#1\relax
+ \advance\@tempcnta by \m@ne
+ \baselineskip=\textheight
+ \advance\baselineskip by -\topskip
+ \divide\baselineskip by \@tempcnta\relax}
+\def\kcharparline#1{%
+ \xkanjiskip 0mm plus 0.2mm minus 0.2mm
+ \settowidth{\textwidth}{\char\jis"2422}%
+ \multiply\textwidth by #1\relax}
+%
+\endinput
diff --git a/language/japanese/japanese-otf-uptex/00otf-uptex.txt b/language/japanese/japanese-otf-uptex/00otf-uptex.txt
new file mode 100644
index 0000000000..4247e89f2f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/00otf-uptex.txt
@@ -0,0 +1,384 @@
+[ Title ]
+japanese-otf-uptex Ver.0.23 2019/04/01
+
+
+[ Abstract ]
+This package provides upLaTeX support of
+japanese-otf package "otfbeta (v1.7b8 2019/04/01)" by psitau-san
+( http://psitau.kitunebi.com/otf.html )
+
+
+[ Contents ]
+00otf-uptex.txt : this file
+umakeotf : script to make vf, tfm
+umakeotf_brsg : script to make vf, tfm for burasage option
+umakeotf_jis04 : script to make vf, tfm for jis2004 option
+umakeotf_prop : script to make vf, tfm for proportional kana
+umakeotf_pre : preparation script for umakeotf*
+umkjvf : mkjvf with unicode support
+
+basepl/ubase-h.pl : unicode version of base-h.pl
+basepl/ubase-v.pl : unicode version of base-v.pl
+basepl/ubrsg-h.pl : unicode version of brsg-h.pl
+basepl/ubrsg-v.pl : unicode version of brsg-v.pl
+
+script/mkutf32list.pl : perl script making lists of characters on supplementary planes.
+script/MakeSPList.pm : perl module making data of characters on supplementary planes.
+script/mktfm_sp.pl : perl script making tfm for characters on supplementary planes.
+script/mkutfvf_sp.pl : perl script making vf for characters on supplementary planes.
+script/sp_list_j.txt : a list of characters on supplementary planes in UniJIS-UTF32.
+script/sp_list_c.txt : a list of characters on supplementary planes in UniGB-UTF32.
+script/sp_list_t.txt : a list of characters on supplementary planes in UniCNS-UTF32.
+script/sp_list_k.txt : a list of characters on supplementary planes in UniKS-UTF32.
+script/CheckDVICode.pm : perl module checking category of characters.
+script/umkpkana.pl : perl script making pl, ovp for proportional kana
+script/umkvpkana.pl : perl script making pl, ovp for proportional kana
+
+sty/otf.sty : basic style file
+sty/mlutf.sty : style file for multi option
+
+test/uplatex/* : test samples.
+
+COPYRIGHT : copyright notice of this package.
+
+
+[ Status ]
+Beta version.
+
+
+[ To Build ]
+## From source files
+The source distribution of japanese-otf-uptex does not contain tfm, vf files.
+To ganerate them, uppltotf and ovp2ovf (TeX Live r43143 or later) are required and
+we run scripts as follows:
+ $ ./umakeotf
+ $ ./umakeotf_brsg
+ $ ./umakeotf_jis04
+ $ ./umakeotf_prop
+
+## CTAN distribution
+The CTAN distribution contains tfm, vf files.
+
+
+[ About jis2004 option ]
+otfbeta-uptex (japanese-otf-uptex) Ver.0.12 or later supports
+combination of "jis2004" and "uplatex" option.
+If you run the script "umakeotf_jis04", tfm and vf for jis2004 will be generated.
+They cousumes about 36.1 Mbytes in total.
+You will get expected results by mapping the new fonts
+ up{,brsg}{nml,exp}{minr,gothr,minb,gothb,mgothr,minl,gotheb}n-{h,v}.tfm
+to Adobe standard CMap "UniJIS2004-UTF16-{H,V}".
+
+If you do not use "jis2004" option, you can delete tfm and vf:
+ up{,brsg}{nml,exp}{minr,gothr,minb,gothb,mgothr,minl,gotheb}n-{h,v}.{tfm,vf}
+
+Instead of using "jis2004" option,
+you can get same result by mapping conventional fonts
+ up{,brsg}{nml,exp}{minr,gothr,minb,gothb,mgothr,minl,gotheb}-{h,v}.tfm
+to Adobe standard CMap "UniJIS2004-UTF16-{H,V}".
+
+
+[ About proportional kana ]
+otfbeta-uptex (japanese-otf-uptex) Ver.0.14 or later supports
+proportional kana at deluxe option and \propshape.
+To build tfm files, uppltotf in TeX Live r43143 or TeX Live 2017 or later is required.
+
+
+[ Repository ]
+japanese-otf-uptex is maintained on GitHub:
+https://github.com/t-tk/japanese-otf-uptex
+
+
+[ History ]
+2007.12.09 Ver0.00
+ Initial version.
+ for "otfstable (v1.2.9 2007/3/19)"
+2008.01.12 Ver0.01
+ umakeotf
+ Revise: for upTeX-0.20
+ umkjvf::
+ Bug fix: Ruby glyphs, horizontally- and vertically optimized kana glyphs.
+ Revise: for upTeX-0.20
+ ubase-h.pl::
+ Insert glue between halfwidth kana and others at horizontal writing.
+ test/uplatex::
+ Revise.
+2008.10.01 Ver0.02
+ re-packaged for upTeX-0.24
+ tfm/*.tfm, vf/*.vf::
+ Delete
+ patch/*.patch::
+ Include
+2008.11.08 Ver0.03
+ Revise: for upTeX-0.25
+ umkjvf::
+ Add: Ruby glyphs, horizontally- and vertically optimized kana glyphs
+ in JIS X 0213 (ainu kana, etc.)
+ fontmap/*::
+ Revise.
+ test/uplatex/*::
+ Revise.
+ patch/*.patch::
+ Revise.
+2009.08.01 Ver0.04
+ Revise: for upTeX-0.28
+ umkjvf::
+ Bug fix: SIP option did not work
+ Revise: help message
+2010.03.28 Ver0.05
+ Revise: for "otfstable (v1.2.9.2 2010/3/26)", upTeX-0.30
+ umkjvf::
+ Revise: It may work with C-version ovp2ovf, opl2ofm
+ patch/*.patch::
+ Revise.
+ sty/*::
+ Removed.
+2010.05.xx Ver0.06
+ Test only. Not released.
+2012.01.02 Ver0.07
+ Revise: for "otfbeta (v1.7b3 2011/10/28)", upTeX in TeXLive svn r24922
+ umkjvf::
+ Revise: Based on "mkjvf version 1.0b21 (2010/3/25)"
+ Revise: use ovp2ovf (WEB version) in TeXLive svn r24922 for SIP
+ Bug fix: pTeX mode was not compatible with mkjvf for ruby.
+ umakeotf
+ Revise: Minor update about "mkdir tfm"
+ fontmap/*::
+ Revise.
+ patch/*.patch::
+ Revise.
+ COPYRIGHT::
+ Add.
+2012.01.22 Ver0.08
+ ## Thank Kitagawa san and Norbert san for helpful bug reports.
+ umkjvf::
+ Add: option '-ovp2ovf' and '-dbg'.
+ Revise: hankaku kana in ucs mode base font.
+ Support ovp2ovf (C version) in TeXLive svn r24887 for BMP.
+ Bug fix: combination of '-cp' and '-ucs'.
+ umakeotf::
+ Bug fix: up{exp,ruby}mgothr-{h,v}.vf was broken.
+ Revise: do not use '-chk' for hankaku kana in ucs mode base font.
+ basepl/ubase-{h,v}.pl::
+ Convert from ISO-2022-JP to UTF-8.
+ Add U+2014 as Type 5.
+ Revise hankaku kana.
+ test/uplatex/uotftest-utf8.tex::
+ Revise.
+2012.02.18 Ver0.09
+ For "otfbeta (v1.7b4 2012/01/22)", upTeX in TeXLive svn r24922
+ Enhance: support characters on supplementary planes (SP) in ucs mode base fonts
+ and those in macros \UTF{}, \UTFC{}, \UTFT{}, and \UTFM{}.
+ Not only upLaTeX but also pLaTeX can treat
+ the macros \UTF{}, \UTFC{}, \UTFT{}, and \UTFM{} for characters on SP.
+ To generate vf, we require ovp2ovf with set3 support
+ i.e. ovp2ovf (WEB version) in TeXLive svn r24922.
+ To treat dvi, we require dviware with set3 support
+ i.e. dvipdfmx in TeXLive svn r24509, dvipsk in TeXLive svn r18144.
+ sty/otf.sty ::
+ Support characters on SP in the macro \UTF{}.
+ sty/mlutf.sty ::
+ Support characters on SP in the macros \UTFC{}, \UTFT{}, and \UTFM{}.
+ umkjvf ::
+ Change option from '-sip' to '-sp <0-2>'.
+ Update references Unicode Blocks-6.1.0.txt (Date: 2011-06-14, 18:26:00 GMT [KW, LI])
+ and Adobe-Japan1-6 cid2code.txt (Version 02/04/2012).
+ umakeotf, script/sp_list_{j,c,t,k}.txt,
+ script/MakeSPList.pm, script/{mkutf32list,mktfm_sp,mkutfvf_sp}.pl ::
+ Add: New script to make vf, tfm for characters on SP.
+ test/uplatex/Makefile, test/uplatex/uotftest-utf8.tex ::
+ Revise.
+ test/uplatex/uotf-sp-utf8.tex, test/uplatex/sp_jp_text.tex,
+ test/uplatex/sp_{jp,cns,gb,kr}_utf.tex ::
+ Add.
+ patch/*.patch::
+ Revise.
+2012.04.21 Ver0.10
+ For "otfbeta (v1.7b5 2012/04/11)", upTeX in TeXLive svn r24922 or later
+ Enhance: support burasage on uplatex.
+ umakeotf_brsg, basepl/ubrsg-{h,v}.pl ::
+ Add. The files generate vf and tfm for burasage on uplatex.
+ The vf and tfm consume about 16.7 Mbytes in total.
+ umkjvf ::
+ Refer an environment variable OVP2OVF to set ovp2ovf command.
+ umakeotf ::
+ Revise.
+ sty/otf.sty ::
+ Adopt otf.sty [2012/04/11 v1.7b5 psitau] in otfbeta (v1.7b5 2012/4/11).
+ sty/mlutf.sty ::
+ Update version number.
+ test/uplatex/upbrsgtest.tex ::
+ Add.
+ test/uplatex/Makefile, test/uplatex/uotftest-utf8.tex ::
+ Revise.
+ patch/*.patch::
+ Revise.
+2012.07.09 Ver0.11
+ ## Thank ZR san for great contribution.
+ sty/otf.sty, sty/mlutf.sty ::
+ Apply new code to support surrogate pairs
+ when macros \UTF{}, \UTFT{}, \UTFC{} and/or \UTFM{} are used with hyperref package.
+ The new code is written by ZR san.
+ test/uplatex/uotftest-utf8.tex ::
+ Revise.
+2013.06.02 Ver0.12
+ ## Thank Kitagawa san for helpful reports.
+ script/mktfm_sp.pl, script/mkutfvf_sp.pl, umakeotf, umakeotf_bsrg, umkjvf ::
+ Support Gothic/ExtraBold (gt/eb).
+ script/mkutfvf_sp.pl ::
+ Refer an environment variable OVP2OVF to set ovp2ovf command.
+ umakeotf_jis04 ::
+ Add. The script generates vf and tfm for jis2004 option on uplatex.
+ The vf and tfm consume about 36.1 Mbytes in total.
+ fontmap/hiragino.map(for udvips), fontmap/hiraginox.map(for dvipdfmx) ::
+ Add jis2004 entry.
+ umkjvf ::
+ Revise comment.
+ umakeotf, umakeotf_bsrg ::
+ Clean up.
+ sty/otf.sty, sty/mlutf.sty ::
+ Add jis2004 entry.
+ Increment version number.
+ patch/*.patch::
+ Revise.
+ test/uplatex/upjis2004.tex, test/uplatex/Makefile::
+ Add new test.
+2013.11.21 Ver0.13
+ sty/otf.sty ::
+ Add scale option by following otfbeta v1.7b6.
+ Increment version number.
+ sty/mlutf.sty ::
+ Increment version number.
+ patch/*.patch::
+ Revise.
+ test/uplatex/otfscale.tex, test/uplatex/Makefile::
+ Add new test.
+2014.03.22 Ver0.14
+ umkjvf, sty/otf.sty, sty/mlutf.sty, otfbeta_uptex-0.14.patch ::
+ Increment version number.
+ script/umk{,v}pkana.pl ::
+ Add proportional kana support.
+ umakeotf_prop ::
+ Add. The script generates vf and tfm for proportional kana on uplatex.
+ The vf and tfm consume about 6.4 Mbytes in total.
+ umkjvf, script/CheckDVICode.pm, script/MakeSPList.pm ::
+ Move some subroutines in the new module and tune up.
+ test/uplatex/upkanatest{1,2}.tex, test/uplatex/Makefile ::
+ Add new tests.
+ COPYRIGHT ::
+ Update year.
+2014.03.28 Ver0.15
+ sty/otf.sty, sty/mlutf.sty ::
+ Increment version number.
+ sty/otf.sty ::
+ Apply again update of otf.sty [2012/04/11 v1.7b5 psitau] in otfbeta (v1.7b5 2012/4/11).
+ patch/*.patch::
+ Revise.
+2014.07.26 Ver0.16
+ ## Thank Dora TeX san for helpful reports.
+ sty/otf.sty, sty/mlutf.sty ::
+ Increment version number.
+ sty/otf.sty ::
+ Bug fix for ExtraBold (eb).
+ patch/*.patch::
+ Revise.
+2015.04.10 Ver0.17
+ ## Thank Akira Kakuto san for helpful reports.
+ sty/otf.sty, sty/mlutf.sty ::
+ Increment version number.
+ sty/otf.sty ::
+ Fix bug for ruby.
+ patch/*.patch::
+ Revise.
+ COPYRIGHT ::
+ Update year.
+2017.03.04 Ver0.18
+ umakeotf{,_brsg,_jis04,_prop,_pre} ::
+ Clean up.
+ sty/otf.sty, sty/mlutf.sty ::
+ Increment version number.
+ script/CheckDVICode.pm ::
+ Update reference Unicode Blocks-9.0.0.txt (Date: 2016-02-05, 23:48:00 GMT [KW])
+ script/mkutf32list.pl, script/sp_list_{c,j,k,t}.txt, test/uplatex/sp_{cns,gb,jp}_utf.tex ::
+ Update references: URL of cid2code.txt
+ and Adobe-CNS1-6 cid2code.txt (Version 12/04/2015).
+ script/umk{,v}pkana.pl, test/uplatex/upkanatest1.tex ::
+ Add more proportional kana support:
+ 〃〆ゔゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿヷヸヹヺ (in UTF-8)
+ Latest uppltotf (TeX Live r43143 or later) is required.
+ patch/*.patch::
+ Remove.
+ COPYRIGHT ::
+ Update year.
+2018.02.11 Ver0.19
+ ## Thank @aminophen san for many contributions.
+ sty/otf.sty, sty/mlutf.sty ::
+ Sync with japanese-otf [2018/02/01 v1.7b7].
+ Set default latin font T1.
+ Add {,u}pLaTeX engine check and a package option "autodetect-engine".
+ Increment version number.
+ script/CheckDVICode.pm ::
+ Update reference Unicode Blocks-10.0.0.txt (Date: 2017-04-12, 17:30:00 GMT [KW])
+ Add Block Kana Extended-A, CJK Unified Ideographs Extension F to is_ucs_jpn_range{).
+ script/mk{tfm,utfvf}_sp.pl, sty/otf.sty, sty/mlutf.sty ::
+ Add subfonts for CJK Unified Ideographs Extension F.
+ script/mkutf32list.pl ::
+ Add option -style=list-wo-collec.
+ script/mkutf32list.pl, script/sp_list_{c,j,k,t}.txt, test/uplatex/sp_{cns,gb,jp,kr}_utf.tex,
+ test/uplatex/sp_jp_text.tex ::
+ Update references:
+ Adobe-CNS1-7 cid2code.txt (Version 10/24/2017), and
+ Adobe-Japan1-6 cid2code.txt (Version 10/24/2017).
+ script/CheckDVICode.pm, script/umk{,v}pkana.pl, basepl/u{base,brsg}-{h,v}.pl ::
+ Add U+00B7 to char_type 3.
+ COPYRIGHT ::
+ Update year.
+2018.04.07 Ver0.20
+ sty/otf.sty, sty/mlutf.sty ::
+ Increment version number.
+ script/CheckDVICode.pm, script/umk{,v}pkana.pl, basepl/u{base,brsg}-{h,v}.pl ::
+ Add U+00AB, U+2329, U+301A to char_type 1.
+ Add U+00BB, U+232A, U+301B, U+301E to char_type 2.
+ test/uplatex/{punctuation,punct0,paren0}.tex, test/uplatex/Makefile ::
+ Add a new test for punctuations.
+2018.05.13 Ver0.21
+ sty/otf.sty, sty/mlutf.sty ::
+ Increment version number.
+ script/umk{,v}pkana.pl, basepl/u{base,brsg}-{h,v}.pl ::
+ Add U+203C, U+2047, U+2048, U+2049 to char_type 6.
+ script/umkpkana.pl, umakeotf_prop ::
+ Add -hk option to enable halfwidth katakana letters in hiraprop.
+ script/mkutf32list.pl ::
+ Remove feature 'switch'
+ test/uplatex/{exclam,upkanatest1}.tex, test/uplatex/Makefile ::
+ Add a new test for punctuations and halfwidth katakana.
+2018.12.08 Ver0.22
+ ## Thank @aminophen san, 柳田 Ryo san and @Man-Ting-Fan san for many contributions.
+ sty/otf.sty, sty/mlutf.sty ::
+ Increment version number.
+ script/CheckDVICode.pm ::
+ Bug fix on U+3090..3093.
+ script/mkutf32list.pl ::
+ Replace encoding pragma to binmode.
+ script/mktfm_sp.pl, script/mkutfvf_sp.pl ::
+ Apply FindBin module.
+ script/mkutf32list.pl, script/sp_list_j.txt, test/uplatex/sp_jp_{utf,text}.tex ::
+ Update references:
+ Adobe-Japan1-7 cid2code.txt (Version 07/30/2018).
+ test/uplatex/paren0.tex ::
+ Fix typo.
+2019.04.01 Ver0.23
+ sty/otf.sty, sty/mlutf.sty ::
+ Increment version number.
+ script/CheckDVICode.pm, script/umk{,v}pkana.pl ::
+ Add more proportional kana support:
+ ヿゟ (in UTF-8)
+ Previously, they did not work due to a bug.
+ script/CheckDVICode.pm, test/uplatex/sp_jp_{utf,text}.tex ::
+ Update references:
+ Unicode Blocks-12.0.0.txt (Date: 2018-07-30, 19:40:00 GMT [KW])
+ Adobe-Japan1-7 cid2code.txt (Version 07/30/2018).
+ test/uplatex/era.tex ::
+ Added.
+ COPYRIGHT ::
+ Update year.
diff --git a/language/japanese/japanese-otf-uptex/COPYRIGHT b/language/japanese/japanese-otf-uptex/COPYRIGHT
new file mode 100644
index 0000000000..7ccde031af
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/COPYRIGHT
@@ -0,0 +1,26 @@
+Copyright (C) 2003--2019 SAITO Shuzaburo and INOUE Koichi
+Copyright (C) 2007--2019 TANAKA Takuji
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. Neither the name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/japanese-otf-uptex/README b/language/japanese/japanese-otf-uptex/README
new file mode 100644
index 0000000000..959114ee1f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/README
@@ -0,0 +1,32 @@
+README
+======
+
+From 00otf-uptex.txt:
+[ Title ]
+japanese-otf-uptex Ver.0.23 2019/04/01
+
+
+[ Abstract ]
+This package provides upLaTeX support of
+japanese-otf package "otfbeta (v1.7b8 2019/04/01)" by psitau-san
+( http://psitau.kitunebi.com/otf.html )
+
+--------------------
+
+For copyright and licensing, please see COPYRIGHT
+It is as same as the BSD 3-clause license.
+Ref. http://opensource.org/licenses/BSD-3-Clause
+
+--------------------
+
+The original source has been downloaded from
+ https://github.com/t-tk/japanese-otf-uptex
+as
+ https://github.com/t-tk/japanese-otf-uptex/releases/tag/v0.23
+
+After that the scripts run and the generated tfm and vf files included.
+
+Norbert Preining <preining@logic.at>
+TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+2019-04-02
+
diff --git a/language/japanese/japanese-otf-uptex/basepl/ubase-h.pl b/language/japanese/japanese-otf-uptex/basepl/ubase-h.pl
new file mode 100644
index 0000000000..b0db092336
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/basepl/ubase-h.pl
@@ -0,0 +1,192 @@
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(GLUEKERN
+ (LABEL O 0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 1)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 2)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ (GLUE O 6 R 0.5 R 0.0 R 0.5)
+ (GLUE O 7 R 0.5 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 3)
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ (GLUE O 6 R 0.25 R 0.0 R 0.25)
+ (GLUE O 7 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 4)
+ (GLUE O 0 R 0.5 R 0.0 R 0.0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 0.75 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.0)
+ (GLUE O 6 R 0.5 R 0.0 R 0.0)
+ (GLUE O 7 R 0.5 R 0.0 R 0.0)
+ (STOP)
+ (LABEL O 5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ (STOP)
+ (LABEL O 6)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 7 R 0.5 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 7)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ )
+(CHARSINTYPE O 1
+ ‘ “ ( 〔 [ { 〈 《 「 『 【
+ UFF5F U3018 U3016 U301D U00AB
+ U2329 U301A
+ )
+(CHARSINTYPE O 2
+ 、 , ’ ” ) 〕 ] } 〉 》 」 』 】
+ UFF60 U3019 U3017 U301F U00BB
+ U232A U301B U301E
+ )
+(CHARSINTYPE O 3
+ ・ : ;
+ U00B7
+ )
+(CHARSINTYPE O 4
+ 。 .
+ )
+(CHARSINTYPE O 5
+ — ― … ‥
+ )
+(CHARSINTYPE O 6
+ ? !
+ U203C U2047 U2048 U2049
+ )
+(CHARSINTYPE O 7
+ UFF61 UFF62 UFF63 UFF64 UFF65 UFF66 UFF67
+ UFF68 UFF69 UFF6A UFF6B UFF6C UFF6D UFF6E UFF6F
+ UFF70 UFF71 UFF72 UFF73 UFF74 UFF75 UFF76 UFF77
+ UFF78 UFF79 UFF7A UFF7B UFF7C UFF7D UFF7E UFF7F
+ UFF80 UFF81 UFF82 UFF83 UFF84 UFF85 UFF86 UFF87
+ UFF88 UFF89 UFF8A UFF8B UFF8C UFF8D UFF8E UFF8F
+ UFF90 UFF91 UFF92 UFF93 UFF94 UFF95 UFF96 UFF97
+ UFF98 UFF99 UFF9A UFF9B UFF9C UFF9D UFF9E UFF9F
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 2
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ (GLUE O 6 R 0.5 R 0.0 R 0.5)
+ (GLUE O 7 R 0.5 R 0.0 R 0.5)
+ )
+ )
+(TYPE O 3
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ (GLUE O 6 R 0.25 R 0.0 R 0.25)
+ (GLUE O 7 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 4
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 0 R 0.5 R 0.0 R 0.0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 0.75 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.0)
+ (GLUE O 6 R 0.5 R 0.0 R 0.0)
+ (GLUE O 7 R 0.5 R 0.0 R 0.0)
+ )
+ )
+(TYPE O 5
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ )
+ )
+(TYPE O 6
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 7 R 0.5 R 0.0 R 0.5)
+ )
+ )
+(TYPE O 7
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
diff --git a/language/japanese/japanese-otf-uptex/basepl/ubase-v.pl b/language/japanese/japanese-otf-uptex/basepl/ubase-v.pl
new file mode 100644
index 0000000000..48ef439642
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/basepl/ubase-v.pl
@@ -0,0 +1,156 @@
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(DIRECTION TATE)
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(GLUEKERN
+ (LABEL O 0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 1)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 2)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 3)
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 4)
+ (GLUE O 0 R 0.5 R 0.0 R 0.0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 0.75 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.0)
+ (STOP)
+ (LABEL O 5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ (STOP)
+ (LABEL O 6)
+ (GLUE O 0 R 1.0 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ )
+(CHARSINTYPE O 1
+ ‘ “ ( 〔 [ { 〈 《 「 『 【
+ UFF5F U3018 U3016 U301D U00AB
+ U2329 U301A
+ )
+(CHARSINTYPE O 2
+ 、 , ’ ” ) 〕 ] } 〉 》 」 』 】
+ UFF60 U3019 U3017 U301F U00BB
+ U232A U301B U301E
+ )
+(CHARSINTYPE O 3
+ ・ : ;
+ U00B7
+ )
+(CHARSINTYPE O 4
+ 。 .
+ )
+(CHARSINTYPE O 5
+ — ― … ‥
+ )
+(CHARSINTYPE O 6
+ ? !
+ U203C U2047 U2048 U2049
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 2
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ )
+ )
+(TYPE O 3
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 4
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 0 R 0.5 R 0.0 R 0.0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 0.75 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.0)
+ )
+ )
+(TYPE O 5
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ )
+ )
+(TYPE O 6
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 0 R 1.0 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
diff --git a/language/japanese/japanese-otf-uptex/basepl/ubrsg-h.pl b/language/japanese/japanese-otf-uptex/basepl/ubrsg-h.pl
new file mode 100644
index 0000000000..787bf0a3e5
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/basepl/ubrsg-h.pl
@@ -0,0 +1,167 @@
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(GLUEKERN
+ (LABEL O 0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 1)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 2)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ (GLUE O 6 R 0.5 R 0.0 R 0.5)
+ (GLUE O 7 R 0.5 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 3)
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ (GLUE O 6 R 0.25 R 0.0 R 0.25)
+ (GLUE O 7 R 0.25 R 0.0 R 0.25)
+ (GLUE D 8 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 4)
+ (GLUE O 0 R 1.0 R 0.0 R 0.0)
+ (GLUE O 1 R 1.0 R 0.0 R 0.0)
+ (GLUE O 2 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 1.25 R 0.0 R 0.75)
+ (GLUE O 4 R 1.0 R 0.0 R 0.5)
+ (GLUE O 5 R 1.0 R 0.0 R 0.0)
+ (GLUE O 6 R 1.0 R 0.0 R 0.0)
+ (GLUE O 7 R 0.5 R 0.0 R 0.0)
+ (GLUE D 8 R 1.0 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ (STOP)
+ (LABEL O 6)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 7 R 0.5 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 7)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL D 8)
+ (GLUE O 0 R 1.0 R 0.0 R 0.5)
+ (GLUE O 1 R 1.0 R 0.0 R 0.5)
+ (GLUE O 2 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 1.25 R 0.0 R 0.75)
+ (GLUE O 4 R 1.0 R 0.0 R 0.5)
+ (GLUE O 5 R 1.0 R 0.0 R 0.5)
+ (GLUE O 6 R 1.0 R 0.0 R 0.5)
+ (GLUE O 7 R 0.5 R 0.0 R 0.0)
+ (GLUE D 8 R 1.0 R 0.0 R 0.5)
+ (STOP)
+ )
+(CHARSINTYPE O 1
+ ‘ “ ( 〔 [ { 〈 《 「 『 【
+ UFF5F U3018 U3016 U301D U00AB
+ U2329 U301A
+ )
+(CHARSINTYPE O 2
+ ’ ” ) 〕 ] } 〉 》 」 』 】
+ UFF60 U3019 U3017 U301F U00BB
+ U232A U301B U301E
+ )
+(CHARSINTYPE O 3
+ ・ : ;
+ U00B7
+ )
+(CHARSINTYPE O 4
+ 。 .
+ )
+(CHARSINTYPE O 5
+ — ― … ‥
+ )
+(CHARSINTYPE O 6
+ ? !
+ U203C U2047 U2048 U2049
+ )
+(CHARSINTYPE O 7
+ UFF61 UFF62 UFF63 UFF64 UFF65 UFF66 UFF67
+ UFF68 UFF69 UFF6A UFF6B UFF6C UFF6D UFF6E UFF6F
+ UFF70 UFF71 UFF72 UFF73 UFF74 UFF75 UFF76 UFF77
+ UFF78 UFF79 UFF7A UFF7B UFF7C UFF7D UFF7E UFF7F
+ UFF80 UFF81 UFF82 UFF83 UFF84 UFF85 UFF86 UFF87
+ UFF88 UFF89 UFF8A UFF8B UFF8C UFF8D UFF8E UFF8F
+ UFF90 UFF91 UFF92 UFF93 UFF94 UFF95 UFF96 UFF97
+ UFF98 UFF99 UFF9A UFF9B UFF9C UFF9D UFF9E UFF9F
+ )
+(CHARSINTYPE D 8
+ 、 ,
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 2
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 3
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 4
+ (CHARWD R 0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 5
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 6
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 7
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE D 8
+ (CHARWD R 0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
diff --git a/language/japanese/japanese-otf-uptex/basepl/ubrsg-v.pl b/language/japanese/japanese-otf-uptex/basepl/ubrsg-v.pl
new file mode 100644
index 0000000000..7a5afbf9e3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/basepl/ubrsg-v.pl
@@ -0,0 +1,142 @@
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(DIRECTION TATE)
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(GLUEKERN
+ (LABEL O 0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 1)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 2)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 3)
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ (GLUE O 7 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 4)
+ (GLUE O 0 R 1.0 R 0.0 R 0.0)
+ (GLUE O 1 R 1.0 R 0.0 R 0.0)
+ (GLUE O 2 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 1.25 R 0.0 R 0.75)
+ (GLUE O 4 R 1.0 R 0.0 R 0.5)
+ (GLUE O 5 R 1.0 R 0.0 R 0.0)
+ (GLUE O 6 R 1.0 R 0.0 R 0.0)
+ (GLUE O 7 R 1.0 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ (STOP)
+ (LABEL O 6)
+ (GLUE O 0 R 1.0 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 7)
+ (GLUE O 0 R 1.0 R 0.0 R 0.5)
+ (GLUE O 1 R 1.0 R 0.0 R 0.5)
+ (GLUE O 2 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 1.25 R 0.0 R 0.75)
+ (GLUE O 4 R 1.0 R 0.0 R 0.5)
+ (GLUE O 5 R 1.0 R 0.0 R 0.5)
+ (GLUE O 6 R 1.0 R 0.0 R 0.5)
+ (GLUE O 7 R 1.0 R 0.0 R 0.5)
+ (STOP)
+ )
+(CHARSINTYPE O 1
+ ‘ “ ( 〔 [ { 〈 《 「 『 【
+ UFF5F U3018 U3016 U301D U00AB
+ U2329 U301A
+ )
+(CHARSINTYPE O 2
+ ’ ” ) 〕 ] } 〉 》 」 』 】
+ UFF60 U3019 U3017 U301F U00BB
+ U232A U301B U301E
+ )
+(CHARSINTYPE O 3
+ ・ : ;
+ U00B7
+ )
+(CHARSINTYPE O 4
+ 。 .
+ )
+(CHARSINTYPE O 5
+ — ― … ‥
+ )
+(CHARSINTYPE O 6
+ ? !
+ U203C U2047 U2048 U2049
+ )
+(CHARSINTYPE O 7
+ 、 ,
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 2
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 3
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 4
+ (CHARWD R 0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 5
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 6
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 7
+ (CHARWD R 0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
diff --git a/language/japanese/japanese-otf-uptex/script/CheckDVICode.pm b/language/japanese/japanese-otf-uptex/script/CheckDVICode.pm
new file mode 100644
index 0000000000..6e98ae866f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/CheckDVICode.pm
@@ -0,0 +1,284 @@
+package CheckDVICode;
+
+use strict;
+use Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT = qw(is_dvicode is_ucs_open is_ucs_kigo is_ucs_hira
+ is_ucs_kata is_ucs_hankana is_ucs_jpn_range);
+
+=head1 NAME
+
+CheckDVICode.pm
+
+=head1 NOTE
+
+This software is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+
+=cut
+
+our ($dvicode, $is_ucs);
+
+sub is_dvicode($){
+ my ($key)=@_;
+ my ($code)=($dvicode);
+
+ if (!$is_ucs) {
+ if ($key eq 'hira-a') { return ($code == 0x2421);}
+ if ($key eq 'hira-i') { return ($code == 0x2423);}
+ if ($key eq 'hira-u') { return ($code == 0x2425);}
+ if ($key eq 'hira-e') { return ($code == 0x2427);}
+ if ($key eq 'hira-o') { return ($code == 0x2429);}
+ if ($key eq 'hira-tsu') { return ($code == 0x2443);}
+ if ($key eq 'hira-ya') { return ($code == 0x2463);}
+ if ($key eq 'hira-yu') { return ($code == 0x2465);}
+ if ($key eq 'hira-yo') { return ($code == 0x2467);}
+ if ($key eq 'hira-wa') { return ($code == 0x246E);}
+ if ($key eq 'hira-Vu') { return 0; } # large JIS X 0213
+ if ($key eq 'hira-ka') { return 0; } # small JIS X 0213
+ if ($key eq 'hira-ke') { return 0; } # small JIS X 0213
+ if ($key eq 'kata-a') { return ($code == 0x2521);}
+ if ($key eq 'kata-i') { return ($code == 0x2523);}
+ if ($key eq 'kata-u') { return ($code == 0x2525);}
+ if ($key eq 'kata-e') { return ($code == 0x2527);}
+ if ($key eq 'kata-o') { return ($code == 0x2529);}
+ if ($key eq 'kata-tsu') { return ($code == 0x2543);}
+ if ($key eq 'kata-ya') { return ($code == 0x2563);}
+ if ($key eq 'kata-yu') { return ($code == 0x2565);}
+ if ($key eq 'kata-yo') { return ($code == 0x2567);}
+ if ($key eq 'kata-wa') { return ($code == 0x256E);}
+ if ($key eq 'kata-ka') { return ($code == 0x2575);}
+ if ($key eq 'kata-ke') { return ($code == 0x2576);}
+ if ($key eq 'kata-Va') { return 0; } # large JIS X 0213
+ if ($key eq 'kata-Vi') { return 0; } # : JIS X 0213
+ if ($key eq 'kata-Ve') { return 0; } # : JIS X 0213
+ if ($key eq 'kata-Vo') { return 0; } # large JIS X 0213
+ if ($key eq 'kata-ku') { return 0; } # small JIS X 0213
+ if ($key eq 'kata-mu') { return 0; } # small JIS X 0213
+ if ($key eq 'kata-ku..ro') { return 0; } # small JIS X 0213
+ if ($key eq 'comma') { return ($code == 0x2124);}
+ if ($key eq 'period') { return ($code == 0x2125);}
+ if ($key eq 'odoriji') { return
+ ((0x2133 <= $code && $code <= 0x2136) || $code == 0x213C);}
+ if ($key eq 'hira-odoriji') { return
+ ($code == 0x2135 || $code == 0x2136);}
+ if ($key eq 'kutouten') { return
+ ($code>=0x2122 && $code<=0x2128);}
+ if ($key eq 'burasage') { return
+ ($code>=0x2122 && $code<=0x2125);}
+ if ($key eq 'nakaten' ) { return ($code == 0x2126);}
+ if ($key eq 'colon' ) { return ($code == 0x2127);}
+ if ($key eq 'semicolon') { return ($code == 0x2128);}
+ if ($key eq 'quote') { return
+ ($code >= 0x2146 && $code <= 0x2149);}
+ if ($key eq 's-quote') { return
+ ($code == 0x2146 || $code == 0x2147);}
+ if ($key eq 'd-quote') { return
+ ($code == 0x2148 || $code == 0x2149);}
+ if ($key eq 'kakko') { return
+ (0x214A <= $code && $code <= 0x215B);}
+ if ($key eq 'open') { return ($code%2==0);}
+ if ($key eq 'close') { return ($code%2==1);}
+
+ die "illegal keyname ($key)\n";
+ } else { # ucs
+ if ($key eq 'hira-a') { return ($code == 0x3041);} # small
+ if ($key eq 'hira-i') { return ($code == 0x3043);} # :
+ if ($key eq 'hira-u') { return ($code == 0x3045);} # :
+ if ($key eq 'hira-e') { return ($code == 0x3047);} # :
+ if ($key eq 'hira-o') { return ($code == 0x3049);} # :
+ if ($key eq 'hira-tsu') { return ($code == 0x3063);} # :
+ if ($key eq 'hira-ya') { return ($code == 0x3083);} # :
+ if ($key eq 'hira-yu') { return ($code == 0x3085);} # :
+ if ($key eq 'hira-yo') { return ($code == 0x3087);} # :
+ if ($key eq 'hira-wa') { return ($code == 0x308E);} # small
+ if ($key eq 'hira-Vu') { return ($code == 0x3094);} # large JIS X 0213
+ if ($key eq 'hira-ka') { return ($code == 0x3095);} # small JIS X 0213
+ if ($key eq 'hira-ke') { return ($code == 0x3096);} # small JIS X 0213
+ if ($key eq 'kata-a') { return ($code == 0x30A1);} # small
+ if ($key eq 'kata-i') { return ($code == 0x30A3);} # :
+ if ($key eq 'kata-u') { return ($code == 0x30A5);} # :
+ if ($key eq 'kata-e') { return ($code == 0x30A7);} # :
+ if ($key eq 'kata-o') { return ($code == 0x30A9);} # :
+ if ($key eq 'kata-tsu') { return ($code == 0x30C3);} # :
+ if ($key eq 'kata-ya') { return ($code == 0x30E3);} # :
+ if ($key eq 'kata-yu') { return ($code == 0x30E5);} # :
+ if ($key eq 'kata-yo') { return ($code == 0x30E7);} # :
+ if ($key eq 'kata-wa') { return ($code == 0x30EE);} # :
+ if ($key eq 'kata-ka') { return ($code == 0x30F5);} # :
+ if ($key eq 'kata-ke') { return ($code == 0x30F6);} # small
+ if ($key eq 'kata-Va') { return ($code == 0x30F7);} # large JIS X 0213
+ if ($key eq 'kata-Vi') { return ($code == 0x30F8);} # : JIS X 0213
+ if ($key eq 'kata-Ve') { return ($code == 0x30F9);} # : JIS X 0213
+ if ($key eq 'kata-Vo') { return ($code == 0x30FA);} # large JIS X 0213
+ if ($key eq 'kata-ku') { return ($code == 0x31F0);} # small JIS X 0213
+ if ($key eq 'kata-mu') { return ($code == 0x31FA);} # small JIS X 0213
+ if ($key eq 'kata-ku..ro') { return
+ ($code >= 0x31F0 && $code <= 0x31FF);} # small JIS X 0213
+ if ($key eq 'comma') { return ($code == 0xFF0C);}
+ if ($key eq 'period') { return ($code == 0xFF0E);}
+ if ($key eq 'odoriji') { return
+ ($code == 0x30FD || $code == 0x30FE ||
+ $code == 0x309D || $code == 0x309E ||
+ $code == 0x30FC);}
+ if ($key eq 'hira-odoriji') { return
+ ($code == 0x309D || $code == 0x309E);}
+ if ($key eq 'kutouten') { return
+ ($code == 0x3001 || $code == 0x3002 ||
+ $code == 0xFF0C || $code == 0xFF0E ||
+ $code == 0x30FB ||
+ $code == 0xFF1A || $code == 0xFF1B);}
+ if ($key eq 'burasage') { return
+ ($code == 0x3001 || $code == 0x3002 ||
+ $code == 0xFF0C || $code == 0xFF0E);}
+ if ($key eq 'nakaten' ) { return
+ ($code == 0x30FB || $code == 0x00B7);}
+ if ($key eq 'colon' ) { return ($code == 0xFF1A);}
+ if ($key eq 'semicolon') { return ($code == 0xFF1B);}
+ if ($key eq 'quote') { return
+ ($code == 0x2018 || $code == 0x2019 ||
+ $code == 0x201C || $code == 0x201D);}
+ if ($key eq 's-quote') { return
+ ($code == 0x2018 || $code == 0x2019);}
+ if ($key eq 'd-quote') { return
+ ($code == 0x201C || $code == 0x201D);}
+ if ($key eq 'kakko') { return
+ ((0x3008 <= $code && $code <= 0x3011) ||
+ $code == 0x3014 || $code == 0x3015 ||
+ $code == 0xFF08 || $code == 0xFF09 ||
+ $code == 0xFF3B || $code == 0xFF3D ||
+ $code == 0xFF5B || $code == 0xFF5D ||
+ $code == 0xFF5F || $code == 0xFF60 || # X0213 1-02-54,55
+ $code == 0x3018 || $code == 0x3019 || # X0213 1-02-56,57
+ $code == 0x3016 || $code == 0x3017 || # X0213 1-02-58,59
+ $code == 0x301D || $code == 0x301F || # X0213 1-13-64,65
+ $code == 0x00AB || $code == 0x00BB || # X0213 1-09-08,18
+ $code == 0x2329 || $code == 0x232A ||
+ $code == 0x301A || $code == 0x301B ||
+ $code == 0x301E
+ );}
+ if ($key eq 'open') { return &is_ucs_open; }
+ if ($key eq 'close') { return (!&is_ucs_open); }
+
+ # ucs only
+ if ($key eq 'hira-yori'){ return ($code == 0x309F);} # yori
+ if ($key eq 'kata-koto'){ return ($code == 0x30FF);} # koto
+
+ die "illegal keyname ($key)\n";
+ }
+}
+
+sub is_ucs_open{
+ if ($dvicode == 0x00AB || $dvicode == 0x2329
+ || $dvicode == 0x301D
+ || $dvicode == 0xFF3B || $dvicode == 0xFF5B
+ || $dvicode == 0xFF5F) { return 1;}
+ if ($dvicode == 0x00BB || $dvicode == 0x232A
+ || $dvicode == 0x301E || $dvicode == 0x301F
+ || $dvicode == 0xFF3D || $dvicode == 0xFF5D
+ || $dvicode == 0xFF60) { return 0;}
+ return ($dvicode%2==0);
+}
+
+sub is_ucs_kigo{
+ return 1 if ($dvicode==0x00AB || $dvicode==0x00BB);
+ return 1 if ($dvicode==0x00B7);
+ return 1 if ($dvicode>=0x2018 && $dvicode<=0x2019);
+ return 1 if ($dvicode>=0x201C && $dvicode<=0x201D);
+ return 1 if ($dvicode>=0x2329 && $dvicode<=0x232A);
+ return 1 if ($dvicode>=0x3001 && $dvicode<=0x301F);
+ return 1 if ($dvicode>=0x3097 && $dvicode<=0x309E);
+ return 1 if ($dvicode>=0x30FB && $dvicode<=0x30FE);
+ return 1 if ($dvicode>=0xFF08 && $dvicode<=0xFF60);
+
+ return 0;
+}
+
+sub is_ucs_hira{
+ return 1 if ($dvicode>=0x3041 && $dvicode<=0x3093);
+ return 1 if ($dvicode>=0x3094 && $dvicode<=0x3096); # Vu, small Ka, small Ke
+# return 1 if ($dvicode==0x309F); # Yori :: It is omitted because it is not included in "Tuned" in AJ1-6
+ return 0;
+}
+
+sub is_ucs_kata{
+ return 1 if ($dvicode>=0x30A1 && $dvicode<=0x30F6);
+ return 1 if ($dvicode>=0x30F7 && $dvicode<=0x30FA); # Va, Vi, Ve, Vo
+ return 1 if ($dvicode>=0x31F0 && $dvicode<=0x31FF); # small Ku, small Shi, ... , Small Re, Small Ro
+# return 1 if ($dvicode==0x30FF); # Koto :: It is omitted because it is not included in "Tuned" in AJ1-6
+ return 0;
+}
+
+sub is_ucs_hankana{
+ return 1 if ($dvicode>=0xFF61 && $dvicode<=0xFF9F);
+ return 0;
+}
+
+# Reference:
+# http://www.unicode.org/Public/UNIDATA/Blocks.txt
+# Blocks-12.0.0.txt
+# Date: 2018-07-30, 19:40:00 GMT [KW]
+sub is_ucs_jpn_range{
+ return 1 if ($dvicode<=0x04FF); # Cyrillic
+
+ return 0 if ($dvicode< 0x1E00);
+ return 1 if ($dvicode<=0x243F); # Control Pictures
+
+ return 0 if ($dvicode< 0x2460);
+ return 1 if ($dvicode<=0x27BF); # Dingbats
+
+ return 0 if ($dvicode< 0x2900);
+ return 1 if ($dvicode<=0x29FF); # Miscellaneous Mathematical Symbols-B
+
+ return 0 if ($dvicode< 0x2B00);
+ return 1 if ($dvicode<=0x2BFF); # Miscellaneous Symbols and Arrows
+
+ return 0 if ($dvicode< 0x2E80);
+ return 1 if ($dvicode<=0x2FDF); # Kangxi Radicals
+
+ return 0 if ($dvicode< 0x3000);
+ return 1 if ($dvicode<=0x30FF); # Katakana
+
+ return 0 if ($dvicode< 0x3190);
+ return 1 if ($dvicode<=0x319F); # Kanbun
+
+ return 0 if ($dvicode< 0x31F0);
+ return 1 if ($dvicode<=0x4DBF); # CJK Unified Ideographs Extension A
+
+ return 0 if ($dvicode< 0x4E00);
+ return 1 if ($dvicode<=0x9FFF); # CJK Unified Ideographs
+
+ return 0 if ($dvicode< 0xE000);
+ return 1 if ($dvicode<=0xFB4F); # Alphabetic Presentation Forms
+
+ return 0 if ($dvicode< 0xFE10);
+ return 1 if ($dvicode<=0xFE1F); # Vertical Forms
+
+ return 0 if ($dvicode< 0xFE30);
+ return 1 if ($dvicode<=0xFE4F); # CJK Compatibility Forms
+
+ return 0 if ($dvicode< 0xFF00);
+ return 1 if ($dvicode<=0xFFEF); # Halfwidth and Fullwidth Forms
+
+ return 0 if ($dvicode< 0x1B000);
+ return 1 if ($dvicode<=0x1B0FF); # Kana Supplement
+ return 1 if ($dvicode<=0x1B12F); # Kana Extended-A
+ return 1 if ($dvicode<=0x1B16F); # Small Kana Extension
+
+ return 0 if ($dvicode< 0x1F100);
+ return 1 if ($dvicode<=0x1F1FF); # Enclosed Alphanumeric Supplement
+ return 1 if ($dvicode<=0x1F2FF); # Enclosed Ideographic Supplement
+
+ return 0 if ($dvicode< 0x20000);
+ return 1 if ($dvicode<=0x2A6DF); # CJK Unified Ideographs Extension B
+ return 1 if ($dvicode<=0x2B73F); # CJK Unified Ideographs Extension C
+ return 1 if ($dvicode<=0x2B81F); # CJK Unified Ideographs Extension D
+ return 1 if ($dvicode<=0x2CEAF); # CJK Unified Ideographs Extension E
+ return 1 if ($dvicode<=0x2EBEF); # CJK Unified Ideographs Extension F
+
+ return 0 if ($dvicode< 0x2F800);
+ return 1 if ($dvicode<=0x2FA1F); # CJK Compatibility Ideographs Supplement
+
+ return 0;
+}
+
+1;
diff --git a/language/japanese/japanese-otf-uptex/script/MakeSPList.pm b/language/japanese/japanese-otf-uptex/script/MakeSPList.pm
new file mode 100644
index 0000000000..8dc9ce0e3a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/MakeSPList.pm
@@ -0,0 +1,71 @@
+package MakeSPList;
+
+use strict;
+use Exporter;
+use File::Basename qw/dirname/;
+our @ISA = qw(Exporter);
+our @EXPORT = qw(make_sp_char_list);
+
+=head1 NAME
+
+MakeSPList.pm
+
+=head1 NOTE
+
+This software is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+
+=cut
+
+our ($r_exist_head, $r_exist_char);
+
+my $num = '[12][0-9A-F]{4}';
+
+sub make_sp_char_list(@) {
+ my (@lang)=@_;
+ my (@exist_head_mul, %exist_char_mul)=();
+ my ($lang, $first_hex);
+
+ my $moduledir=dirname(__FILE__);
+
+ foreach $lang (@lang) {
+ open(LIST, "$moduledir/sp_list_$lang.txt") || die "$!";
+ my (@exist_head_each, %exist_char_each)=();
+ while (<LIST>) {
+ chomp;
+ s/\s+//g;
+ next if (/^[#%]/);
+ s/[#%].*$//;
+ s/,$//;
+ my @tmp;
+ foreach $_ (split ',', $_) {
+ if (/^($num)$/io) {
+ @tmp = (hex($1));
+ } elsif (/^($num)-($num)$/io) {
+ @tmp = (hex($1)..hex($2));
+ } else {
+ die "input [$_] is not expected\n";
+ }
+ foreach $_ (@tmp) {
+ my $HEX=sprintf("%X",$_);
+ $first_hex=int($_/0x1000);
+ $exist_head_each[$first_hex]++;
+ $exist_char_each{$HEX}=1;
+ if ($exist_char_mul{$HEX} eq '' && $exist_head_mul[$first_hex]!~/$lang/) {
+ $exist_head_mul[$first_hex].=$lang;
+ }
+ $exist_char_mul{$HEX}.=$lang;
+# warn "$HEX $first_hex ",sprintf("%X",$first_hex),"\n";
+ }
+ }
+ }
+ @{$r_exist_head->{$lang}}=@exist_head_each;
+ %{$r_exist_char->{$lang}}=%exist_char_each;
+ }
+ if (@lang>1) {
+ $lang = join ',', @lang;
+ @{$r_exist_head->{$lang}}=@exist_head_mul;
+ %{$r_exist_char->{$lang}}=%exist_char_mul;
+ }
+}
+
+1;
diff --git a/language/japanese/japanese-otf-uptex/script/mktfm_sp.pl b/language/japanese/japanese-otf-uptex/script/mktfm_sp.pl
new file mode 100755
index 0000000000..99485c83ef
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/mktfm_sp.pl
@@ -0,0 +1,99 @@
+#!/usr/bin/perl
+
+=head1 NAME
+
+mktfm_sp.pl
+
+=head1 USAGE
+
+script/mktfm_sp.pl
+
+=head1 NOTE
+
+This software is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+
+=cut
+
+use FindBin;
+use lib "$FindBin::Bin";
+use MakeSPList;
+
+$multi=3;
+@tex_tfm_h=(0x00, 0x0B, 0x00, 0x01, 0x00, 0x2B, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x0E, 0x54, 0x45, 0x58, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x20, 0x54, 0x45, 0x58, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4F, 0x54, 0x46, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x14, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEB, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x33, 0x33, 0x00, 0x02, 0x00, 0x00);
+@tex_tfm_v=(0x00, 0x09, 0x00, 0x01, 0x00, 0x2B, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x0E, 0x54, 0x45, 0x58, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x20, 0x54, 0x45, 0x58, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4F, 0x54, 0x46, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x33, 0x33, 0x00, 0x02, 0x00, 0x00);
+@dvips_tfm_h=(0x00, 0x0B, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x14, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEB, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+@dvips_tfm_v=(0x00, 0x09, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+
+opendir(TFM, "tfm") || mkdir("tfm",0755) || die "cannot mkdir tfm";
+
+my @face = qw/mr gr mb gb mgr ml ge/;
+my @lang = qw/j t c k/;
+my @dir = qw/h v/;
+my %font_id = qw/1b g 1d h 1e i 1f j
+ 20 k 21 l 22 m 23 n 24 o 25 p 26 q 27 r
+ 28 s 29 t 2a u 2b v 2c w 2d x 2e y 2f z/;
+
+&MakeSPList::make_sp_char_list(@lang);
+
+&make_utf_tfm;
+&make_multi_utf_tfm;
+&make_unified_utf_tfm;
+
+sub make_utf_tfm {
+ foreach $lang ($lang[0]){ #language
+ foreach $face (@face){ #face
+ foreach $dir (@dir){ #direction
+ &maketfm_body($face, $dir, $lang);
+ }
+ }
+ }
+}
+sub make_multi_utf_tfm {
+ foreach $lang (@lang[1..$multi]){ #language
+ foreach $face (@face[0..1]){ #face
+ foreach $dir (@dir){ #direction
+ &maketfm_body($face, $dir, $lang);
+ }
+ }
+ }
+}
+sub make_unified_utf_tfm {
+ foreach $face (@face[0..1]){ #face
+ foreach $dir (@dir){ #direction
+ &maketfm_body($face, $dir, @lang);
+ }
+ }
+}
+
+sub maketfm_body {
+ my ($face, $dir, @ln)=@_;
+=comment
+ ## mktfm.pl does same procedure.
+ $filename="utf$lang$face".sprintf("%x",$first_hex)."-$dir";
+ open(TEXTFM,">tfm/$filename.tfm") || die "Can't make \'tfm/$filename.tfm\'!\n";
+ binmode(TEXTFM);
+ if ($i==0) {
+ foreach $binary(@tex_tfm_h) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@tex_tfm_v) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }
+ close(TEXTFM);
+=cut
+ my $lang = join ',', @ln;
+ my @exist_head=@{$MakeSPList::r_exist_head->{$lang}};
+
+ foreach $first_hex (0x1b, 0x1d .. 0x2f) { # U+1Cxxx : not defined yet
+ next if (!$exist_head[$first_hex]);
+
+ $id = $font_id{sprintf("%x", $first_hex)};
+ $filename= (@ln>1) ? "utf$face$id-$dir" : "utf$lang$face$id-$dir";
+ open(TEXTFM,">tfm/$filename.tfm") || die "Can't make \'tfm/$filename.tfm\'!\n";
+ binmode(TEXTFM);
+ if ($dir eq 'h') {
+ foreach $binary(@tex_tfm_h) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }elsif ($dir eq 'v'){
+ foreach $binary(@tex_tfm_v) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }
+ close(TEXTFM);
+ }
+}
diff --git a/language/japanese/japanese-otf-uptex/script/mkutf32list.pl b/language/japanese/japanese-otf-uptex/script/mkutf32list.pl
new file mode 100755
index 0000000000..377659d398
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/mkutf32list.pl
@@ -0,0 +1,162 @@
+#!/usr/bin/perl -n -s
+
+=head1 NAME
+
+mkutf32list.pl
+
+=head1 USAGE
+
+mkutf32list.pl cid2code.txt > sp_jp_text.tex
+mkutf32list.pl -style=utf cid2code.txt > sp_jp_utf.tex
+mkutf32list.pl -style=kchar cid2code.txt > sp_jp_kchar.tex
+mkutf32list.pl -style=list cid2code.txt > sp_list_j.txt
+mkutf32list.pl -style=list-wo-collec cid2code.txt > sp_list_ja.txt
+mkutf32list.pl -allrange cid2code.txt > sp_jp_text.tex
+
+=head1 AUTHOR
+
+Takuji Tanaka
+
+=head1 NOTE
+
+This software is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+
+=cut
+
+use strict;
+binmode(STDOUT, ":utf8");
+
+our ($style, $allrange);
+our (@count, %reset_ch, $icollec, $cid2code, $line);
+our ($col_utf32, @out);
+our (@cid_max, $collection_n, $collection, $utfmac, $cmap, $source);
+
+BEGIN{
+ $line = 0;
+ @count = ();
+ %reset_ch = ();
+ $icollec = 0;
+ @out = ();
+}
+
+if (/cid2code/) {
+ chomp;
+ s/^# /# in /;
+ $cid2code=$_;
+ $cid2code=~s/^#/%/;
+}
+
+if ($.<8 && /((Adobe-(?:Japan|CNS|GB|Korea).*)-\d)\s/) {
+ $collection_n=$1;
+ $collection=$2;
+ if ($collection =~ /cns/i) {
+ @cid_max = qw/-1 14098 17407 17600 18845 18964 19087 19155 19178/;
+ $utfmac="UTFT"; $cmap="UniCNS-UTF32";
+ $source="Adobe-CNS1-7/cid2code.txt"; }
+ elsif ($collection =~ /gb/i) {
+ @cid_max = qw/-1 7716 9896 22126 22352 29063 30283/;
+ $utfmac="UTFC"; $cmap="UniGB-UTF32";
+ $source="Adobe-GB1-5/cid2code.txt"; }
+ elsif ($collection =~ /kor/i) {
+ @cid_max = qw/-1 9332 18154 18351/;
+ $utfmac="UTFK"; $cmap="UniKS-UTF32";
+ $source="Adobe-Korea1-2/cid2code.txt"; }
+ else {
+ @cid_max = qw/-1 8283 8358 8719 9353 15443 20316 23057 23059/;
+ $utfmac="UTF"; $cmap="UniJIS-UTF32";
+ $source="Adobe-Japan1-7/cid2code.txt"; }
+}
+
+next if (/^#/);
+$line++;
+if ($line == 1) {
+ print <<END;
+%
+% This file is generated from the data of $cmap
+$cid2code
+% for $collection_n
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% $source
+%
+% A newer CMap may be required for some code points.
+%
+END
+}
+if (/^CID/) {
+ my @header = split;
+ my $i=0;
+ foreach (@header) {
+ if (/^Uni(JIS|KS|CNS|GB)-UTF32$/) {
+ $col_utf32 = $i;
+ last;
+ }
+ $i++
+ }
+ next;
+}
+
+my @list = split;
+my $cid = $list[0];
+my @utf32 = split ',', $list[$col_utf32];
+
+foreach (@utf32) {
+ s/^0+//;
+
+ next if ($_ eq '*');
+ next if ($_ =~ '^[1-7][0-9a-f]$|^.$');
+ next if ($_ =~ 'v');
+ tr/a-z/A-Z/;
+ my $ch=hex($_);
+ next if ($ch < 0x10000 && !$allrange);
+
+ while(!($cid_max[$icollec+1]>=$cid && $cid>$cid_max[$icollec])) {
+ $icollec++;
+ if ($icollec>@cid_max) {
+ die "CID:$cid (Character $_) is out of range!!\n";
+ }
+ }
+ if ($count[$icollec]==0) {
+ $reset_ch{$ch}=$icollec;
+ }
+ $count[$icollec]++;
+ push @out, $ch;
+}
+
+
+END {
+ my ($i, $out, $ch);
+
+ if ($style eq "list-wo-collec") { @out = sort(@out); }
+
+ foreach $ch (@out) {
+ if ($style eq "list-wo-collec") {}
+ elsif (defined($reset_ch{$ch})) {
+ $i=0;
+ print "\n\n";
+ print "%" if ($style =~ /list/);
+ print "$collection-$reset_ch{$ch}";
+ print "\\\\" if ($style !~ 'list');
+ print "\n";
+ }
+
+ $i++;
+ if ($style =~ /utf/) { $out=sprintf "\\${utfmac}{%X}", $ch; }
+ elsif ($style =~ /kchar/) { $out=sprintf "\\kchar\"%X", $ch; }
+ elsif ($style =~ /list/) { $out=sprintf "%X", $ch; }
+ else { $out=chr($ch); }
+ my ($newline);
+ $newline = $allrange ? 25 : 10;
+ if ($i % $newline != 1) {
+ print "," if ($style =~ /list/);
+ }
+ print $out;
+ if ($i % $newline == 0) {
+ print "%" if ($style =~ /utf/);
+ print "\n" ;
+ }
+ }
+
+ print "\n\n% end\n";
+}
diff --git a/language/japanese/japanese-otf-uptex/script/mkutfvf_sp.pl b/language/japanese/japanese-otf-uptex/script/mkutfvf_sp.pl
new file mode 100755
index 0000000000..8392b7b686
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/mkutfvf_sp.pl
@@ -0,0 +1,166 @@
+#!/usr/bin/perl -s
+
+=head1 NAME
+
+mkutfvf_sp.pl
+
+=head1 USAGE
+
+script/mkutfvf_sp.pl
+script/mkutfvf_sp.pl -debug
+script/mkutfvf_sp.pl -ovp2ovf='wovp2ovf'
+
+=head1 NOTE
+
+This software is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+
+=cut
+
+use FindBin;
+use lib "$FindBin::Bin";
+use MakeSPList;
+
+if (!defined($ovp2ovf)) { ## check option '-ovp2ovf=????'
+ $ovp2ovf = defined($ENV{'OVP2OVF'}) ? $ENV{'OVP2OVF'} : 'ovp2ovf';
+}
+
+$multi=3;
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+
+my @face = qw/mr gr mb gb mgr ml ge/;
+my @lang = qw/j t c k/; ## priority: j > t > c > k
+my %lang_id; foreach $_ (0..$#lang) { $lang_id{$lang[$_]}=$_; }
+my @dir = qw/h v/;
+my %font_id = qw/1b g 1d h 1e i 1f j
+ 20 k 21 l 22 m 23 n 24 o 25 p 26 q 27 r
+ 28 s 29 t 2a u 2b v 2c w 2d x 2e y 2f z/;
+
+&MakeSPList::make_sp_char_list(@lang);
+
+&makejvf;
+&makemlvf;
+&makeunivf;
+
+sub makejvf {
+ foreach $lang ($lang[0]){ #language
+ foreach $face (@face){ #face
+ foreach $dir (@dir){ #direction
+ &makevf_body($face, $dir, $lang);
+ }
+ }
+ }
+}
+sub makemlvf {
+ foreach $lang (@lang[1..$multi]){ #language
+ foreach $face (@face[0..1]){ #face
+ foreach $dir (@dir){ #direction
+ &makevf_body($face, $dir, $lang);
+ }
+ }
+ }
+}
+sub makeunivf {
+ foreach $face (@face[0..1]){ #face
+ foreach $dir (@dir){ #direction
+ &make_uni_vf_body($face, $dir, @lang);
+ }
+ }
+}
+
+sub makevf_body {
+ my ($face, $dir, $lang)=@_;
+
+ my @exist_head=@{$MakeSPList::r_exist_head->{$lang}};
+ foreach $first_hex (0x1b, 0x1d .. 0x2f) { # U+1Cxxx : not defined yet
+ next if (!$exist_head[$first_hex]);
+
+ $HEX = sprintf("%X", $first_hex);
+ $id = $font_id{sprintf("%x", $first_hex)};
+ warn "now processing (face:$face, dir:$dir, lang:$lang, first_hex:$HEX, ID:$id) ...\n";
+ $filename="utf$lang$face$id-$dir";
+ open(OUT, ">ovp/$filename.ovp")||die "$!";
+ &fonthead;
+ print OUT "(MAPFONT D 0\n (FONTNAME otf-u$lang$face-$dir)\n";
+ &fontfoot;
+ &writechar($first_hex, $lang);
+ close(OUT);
+ unless ($debug){
+ system("$ovp2ovf ovp/$filename.ovp vf/$filename.vf vf/$filename.ofm");
+ unlink "vf/$filename.ofm";
+ }
+ }
+}
+
+sub make_uni_vf_body {
+ my ($face, $dir, @ln)=@_;
+ my $lang = join ',', @ln;
+
+ my @exist_head=@{$MakeSPList::r_exist_head->{$lang}};
+ foreach $first_hex (0x1b, 0x1d .. 0x2f) { # U+1Cxxx : not defined yet
+ next if (!$exist_head[$first_hex]);
+
+ $HEX = sprintf("%X", $first_hex);
+ $id = $font_id{sprintf("%x", $first_hex)};
+ warn "now processing (face:$face, dir:$dir, lang:MULTI, first_hex:$HEX, ID:$id) ...\n";
+ $filename="utf$face$id-$dir";
+ open(OUT, ">ovp/$filename.ovp")||die "$!";
+ &fonthead;
+ foreach $l (0 .. $#ln){
+ next if ($exist_head[$first_hex]!~/$ln[$l]/);
+ print OUT "(MAPFONT D $l\n (FONTNAME otf-u$lang[$l]$face-$dir)\n";
+ &fontfoot;
+ }
+ &writechar($first_hex, @ln);
+ close(OUT);
+ unless ($debug){
+ system("$ovp2ovf ovp/$filename.ovp vf/$filename.vf vf/$filename.ofm");
+ unlink "vf/$filename.ofm";
+ }
+ }
+}
+
+sub fonthead {
+print OUT <<END_OF_DATA;
+(VTITLE JVF for UTF16)
+(OFMLEVEL D 0)
+(DESIGNSIZE R 10.000000)
+(CHECKSUM O 0)
+END_OF_DATA
+}
+
+sub fontfoot {
+print OUT <<END_OF_DATA;
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.000000)
+ )
+END_OF_DATA
+}
+
+sub writechar {
+ my ($hex, @ln) = @_;
+ my $lang = join ',', @ln;
+ my %exist_char=%{$MakeSPList::r_exist_char->{$lang}};
+
+ foreach $ku (16 .. 79){
+ foreach $ten (16 .. 79){
+ $jis=sprintf("%X", $ku*256 + $ten + 0x2020);
+ $uni=sprintf("%X", $hex*0x1000 + ($ku-16)*64 + ($ten-16));
+ my $echr=$exist_char{$uni};
+ if ($echr) {
+ #warn("lang: $lang, jis: $jis, uni: $uni\n");
+ print OUT "(CHARACTER H $jis (CHARWD R 1.0) (MAP \n";
+ if (@ln>1 && $echr !~ $ln[0]) {
+ foreach $l (1 .. $#ln) {
+ if ($echr =~ /$ln[$l]/){
+ print OUT " (SELECTFONT D $lang_id{$ln[$l]})\n";
+ last;
+ }
+ }
+ }
+ print OUT " (SETCHAR H $uni)))\n";
+ }
+ }
+ }
+}
diff --git a/language/japanese/japanese-otf-uptex/script/sp_list_c.txt b/language/japanese/japanese-otf-uptex/script/sp_list_c.txt
new file mode 100644
index 0000000000..a4699d6ea8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/sp_list_c.txt
@@ -0,0 +1,17 @@
+%
+% This file is generated from the data of UniGB-UTF32
+% in cid2code.txt (Version 12/05/2017)
+% for Adobe-GB1-5
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-GB1-5/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+%Adobe-GB1-2
+20087,20089,200CC,215D7,2298F,20509,2099D,241FE
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/script/sp_list_j.txt b/language/japanese/japanese-otf-uptex/script/sp_list_j.txt
new file mode 100644
index 0000000000..a6ab70c194
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/sp_list_j.txt
@@ -0,0 +1,75 @@
+%
+% This file is generated from the data of UniJIS-UTF32
+% in cid2code.txt (Version 07/30/2018)
+% for Adobe-Japan1-7
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-Japan1-7/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+%Adobe-Japan1-0
+28CDD,2F8ED,25874,28EF6,2F8DC,2F884,2F877,2F80F,2F8D3,2F818
+21A1A,243D0,2F920,1F100
+
+%Adobe-Japan1-4
+1F110,1F111,1F112,1F113,1F114,1F115,1F116,1F117,1F118,1F119
+1F11A,1F11B,1F11C,1F11D,1F11E,1F11F,1F120,1F121,1F122,1F123
+1F124,1F125,1F126,1F127,1F128,1F129,1F150,1F151,1F152,1F153
+1F154,1F155,1F156,1F157,1F158,1F159,1F15A,1F15B,1F15C,1F15D
+1F15E,1F15F,1F160,1F161,1F162,1F163,1F164,1F165,1F166,1F167
+1F168,1F169,1F130,1F131,1F132,1F133,1F134,1F135,1F136,1F137
+1F138,1F139,1F13A,1F13B,1F13C,1F13D,1F13E,1F13F,1F140,1F141
+1F142,1F143,1F144,1F145,1F146,1F147,1F148,1F149,1F202,1F237
+1F170,1F171,1F172,1F173,1F174,1F175,1F176,1F177,1F178,1F179
+1F17A,1F17B,1F17C,1F17D,1F17E,1F17F,1F180,1F181,1F182,1F183
+1F184,1F185,1F186,1F187,1F188,1F189,2F945,2090E,26951,2B7D8
+2F8FC,2F995,2F8EA,2F822,26222,20BB7,29D4B,2F833,2B78E,2F8AC
+20A64,2F903,2B746,2B777,2F90B,20B9F,2F828,2F921,2F83F,2F873
+2D544,2000B,2F852,2967F,2F947,201A2,2E569,2B751,2F8B2,27FB7
+23CFE,2F91A,25AD7,2F89A,2F90F,2123D,2F81A,24D14,2F862,2B789
+2F9D0,2F9DF,2567F,266B0,20628,2008A,20984,2F82C,2F86D,2F8B6
+26999,233CC,2F8DB,2A9E6,2B7BD,2F96C,2E278,2053F,2626A,200B0
+2E6EA,28987,28E17,2B81A,242EE,2F8E1,23CBE,20611,2F9F4,2F804
+2363A,233FE,22609
+
+%Adobe-Japan1-5
+2131B,2146E,218BD,216B4,21E34,231C4,235C4,2373F,23763,247F1
+2548E,2550E,25771,259C4,25DA1,26AFF,26E40,270F4,27684,28277
+283CD,2A190,20089,200A2,200A4,20213,2032B,20381,20371,203F9
+2044A,20509,205D6,2074F,20807,2083A,208B9,2097C,2099D,20AD3
+20B1D,20D45,20DE1,20E95,20E6D,20E64,20F5F,21201,21255,2127B
+21274,212E4,212D7,212FD,21336,21344,213C4,2146D,215D7,26C29
+21647,21706,21742,219C3,21C56,21D2D,21D45,21D78,21D62,21DA1
+21D9C,21D92,21DB7,21DE0,21E33,21F1E,21F76,21FFA,2217B,2231E
+223AD,226F3,2285B,228AB,2298F,22AB8,22B4F,22B50,22B46,22C1D
+22BA6,22C24,22DE1,231C3,231F5,231B6,23372,233D3,233D2,233D0
+233E4,233D5,233DA,233DF,2344A,23451,2344B,23465,234E4,2355A
+23594,23639,23647,23638,2371C,2370C,23764,237FF,237E7,23824
+2383D,23A98,23C7F,23D00,23D40,23DFA,23DF9,23DD3,23F7E,24096
+24103,241C6,241FE,243BC,24629,246A5,24896,24A4D,24B56,24B6F
+24C16,24E0E,24E37,24E6A,24E8B,2504A,25055,25122,251A9,251E5
+251CD,2521E,2524C,2542E,254D9,255A7,257A9,257B4,259D4,25AE4
+25AE3,25AF1,25BB2,25C4B,25C64,25E2E,25E56,25E65,25E62,25ED8
+25EC2,25EE8,25F23,25F5C,25FE0,25FD4,2600C,25FFB,26017,26060
+260ED,26270,26286,23D0E,26402,2667E,2671D,268DD,268EA,2696F
+269DD,26A1E,26A58,26A8C,26AB7,26C73,26CDD,26E65,26F94,26FF8
+26FF6,26FF7,2710D,27139,273DB,273DA,273FE,27410,27449,27615
+27614,27631,27693,2770E,27723,27752,27985,27A84,27BB3,27BBE
+27BC7,27CB8,27DA0,27E10,2808A,280BB,28282,282F3,2840C,28455
+2856B,285C8,285C9,286D7,286FA,28949,28946,2896B,28988,289BA
+289BB,28A1E,28A29,28A71,28A43,28A99,28ACD,28AE4,28ADD,28BC1
+28BEF,28D10,28D71,28DFB,28E1F,28E36,28E89,28EEB,28F32,28FF8
+292A0,292B1,29490,295CF,296F0,29719,29750,298C6,29A72,29DDB
+29E15,29E8A,29E49,29EC4,29EE9,29EDB,29FCE,29FD7,2A02F,2A01A
+2A0F9,2A082,22218,2A38C,2A437,2A5F1,2A602,2A6B2,200F5,24E04
+24FF2,27D73,2F815,2F846,2F899,2F8A6,2F8E5,2F9DE,2A2B2,20158
+205B1,206EC,2B753,20D58,2B75A,2B75C,259CC,2B776,22E42,2B77C
+207C8,22FEB,279B4,2B782,2B78B,237F1,2B794,2404B,2B7AC,2B7AF
+2B7C9,2B7CF,2B7D2,26C9E,27C3C,2B7F0,2B765,2B80D,2B817,2634C
+29E3D,2A61A
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/script/sp_list_k.txt b/language/japanese/japanese-otf-uptex/script/sp_list_k.txt
new file mode 100644
index 0000000000..6af3e290ff
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/sp_list_k.txt
@@ -0,0 +1,14 @@
+%
+% This file is generated from the data of UniKS-UTF32
+% in cid2code.txt (Version 01/31/2012)
+% for Adobe-Korea1-2
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-Korea1-2/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/script/sp_list_t.txt b/language/japanese/japanese-otf-uptex/script/sp_list_t.txt
new file mode 100644
index 0000000000..084eac5187
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/sp_list_t.txt
@@ -0,0 +1,204 @@
+%
+% This file is generated from the data of UniCNS-UTF32
+% in cid2code.txt (Version 10/24/2017)
+% for Adobe-CNS1-7
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-CNS1-7/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+%Adobe-CNS1-0
+200CC,2008A,27607
+
+%Adobe-CNS1-1
+23ED7,26ED3,257E0,28BE9,258E1,294D9,259AC,2648D,25C01,2530E
+25CFE,25BB4,26C7F,25D20,25CC1,24882,24578,26E44,26ED6,24057
+26029,217F9,2836D,26121,2615A,262D0,26351,21661,20068,23766
+2833A,26489,2A087,26CC3,22714,26626,23DE3,266E8,28A48,226F6
+26498,2148A,2185E,24A65,24A95,26A52,23D7E,214FD,2F98F,249A7
+23530,21773,23DF8,2F994,20E16,217B4,2317D,2355A,23E8B,26DA3
+26B05,26B97,235CE,26DA5,26ED4,26E42,25BE4,26B96,26E77,26E43
+25C91,25CC0,28625,2863B,27088,21582,270CD,270F0,2F9B2,218A2
+2739A,2A0F8,22C27,275E0,23DB9,275E4,2770F,28A25,27924,27ABD
+27A59,27B3A,27B38,25430,25565,24A7A,216DF,27D54,27D8F,2F9D4
+27D53,27D98,27DBD,21910,2F9D7,28002,21014,2498A,281BC,2710C
+28365,28412,2A29F,20A50,289DE,2853D,23DBB,23262,22325,26ED7
+2853C,27ABE,2856C,2860B,28713,286E6,28933,21E89,255B9,28AC6
+23C9B,28B0C,255DB,20D31,28AE1,28BEB,28AE2,28AE5,28BEC,28C39
+28BFF,286D8,2127C,23E2E,26ED5,28AE0,26CB8,20274,26410,290AF
+290E5,24AD1,21915,2330A,24AE9,291D5,291EB,230B7,230BC,2546C
+29433,2941D,2797A,27175,20630,2415C,25706,26D27,216D3,24A29
+29857,29905,25725,290B1,29BD5,29B05,28600,2307D,29D3E,21863
+29E68,29FB7,2A192,2A1AB,2A0E1,2A123,2A1DF,2A134,2A193,2A220
+2193B,2A233,2A0B9,2A2B4,24364,2A3ED,28C2B,26DA2,2FA1B,2908B
+24975,249BB,249F8,24348,24A51,28BDA,218FA,2897E,28E36,28A44
+2896C,244B9,24473,243F8,217EF,218BE,23599,21885,2542F,217F8
+216FB,21839,21774,218D1,25F4B,216C0,24A25,213FE,212A8,213C6
+214B6,236A6,24994,27165,23E31,2555C,23EFB,27052,236EE,2999D
+26F26,21922,2373F,240E1,2408B,2410F,26C21,266B1,20FDF,20BA8
+20E0D,28B13,24436,20465,25651,201AB,203CB,2030A,20414,202C0
+28EB3,20275,2020C,24A0E,23E8A,23595,23E39,23EBF,21884,23E89
+205E0,204A3,20492,20491,28A9C,2070E,20873,2438C,20C20,249AC
+210E4,20E1D,24ABC,2408D,240C9,20345,20BC6,28A46,216FA,2176F
+21710,25946,219F3,21861,24295,25E83,28BD7,20413,21303,289FB
+21996,2197C,23AEE,21903,21904,218A0,216FE,28A47,21DBA,23472
+289A8,21927,217AB,2173B,275FD,22860,2262B,225AF,225BE,29088
+26F73,2003E,20046,2261B,22C9B,22D07,246D4,2914D,24665,22B6A
+22B22,23450,298EA,22E78,249E3,22D67,22CA1,2308E,232AD,24989
+232AB,232E0,218D9,2943F,23289,231B3,25584,28B22,2558F,216FC
+2555B,25425,23103,2182A,23234,2320F,23182,242C9,26D24,27870
+21DEB,232D2,232E1,25872,2383A,237BC,237A2,233FE,2462A,237D5
+24487,21912,23FC0,23C9A,28BEA,28ACB,2801E,289DC,23F7F,2403C
+2431A,24276,2478F,24725,24AA4,205EB,23EF8,2365F,24A4A,24917
+25FE1,24ADF,28C23,23F35,26DEA,24CD9,24D06,2A5C6,28ACC,249AB
+2498E,24A4E,249C5,248F3,28AE3,21864,25221,251E7,23232,24697
+23781,248F0,24ABA,24AC7,24A96,261AE,25581,27741,256E3,23EFA
+216E6,20D4C,2498C,20299,23DBA,2176E,201D4,20C0D,226F5,25AAF
+25A9C,2025B,25BC6,25BB3,25EBC,25EA6,249F9,217B0,26261,2615C
+27B48,25E82,26B75,20916,2004E,235CF,26412,263F8,2082C,25AE9
+25D43,25E0E,2343F,249F7,265AD,265A0,27127,26CD1,267B4,26A42
+26A51,26DA7,2721B,21840,218A1,218D8,2F9BC,23D8F,27422,25683
+27785,27784,28BF5,28BD9,28B9C,289F9,29448,24284,21845,27DDC
+24C09,22321,217DA,2492F,28A4B,28AFC,28C1D,28C3B,28D34,248FF
+24A42,243EA,23225,28EE7,28E66,28E65,249ED,24A78,23FEE,290B0
+29093,257DF,28989,28C26,28B2F,263BE,2421B,20F26,28BC5,24AB2
+294DA,295D7,28B50,24A67,28B64,28A45,27B06,28B65,258C8,298F1
+29948,21302,249B8,214E8,2271F,23DB8,22781,2296B,29E2D,2A1F5
+2A0FE,24104,2A1B4,2A0ED,2A0F3,2992F,26E12,26FDF,26B82,26DA4
+26E84,26DF0,26E00,237D7,26064,2359C,23640,249DE,202BF,2555D
+21757,231C9,24941,241B5,241AC,26C40,24F97,217B5,28A49,24488
+289FC,218D6,20F1D,26CC0,21413,242FA,22C26,243C1,23DB7,26741
+2615B,260A4,249B9,2498B,289FA,28B63,2189F,24AB3,24A3E,24A94
+217D9,24A66,203A7,21424,249E5,24916,24976,204FE,28ACE,28A16
+28BE7,255D5,28A82,24943,20CFF,2061A,20BEB,20CB8,217FA,216C2
+24A50,21852,28AC0,249AD,218BF,21883,27484,23D5B,28A81,21862
+20AB4,2139C,28218,290E4,27E4F,23FED,23E2D,203F5,28C1C,26BC0
+21452,24362,24A71,22FE3,212B0,223BD,21398,234E5,27BF4,236DF
+28A83,237D6,233FA,24C9F,236AD,26CB7,26D26,26D51,26C82,26FDE
+2173A,26C80,27053,217DB,217B3,21905,241FC,2173C,242A5,24293
+23EF9,27736,2445B,242CA,24259,289E1,26D28,244CE,27E4D,243BD
+24256,21304,243E9,2F825,23300,27AF4,256F6,27B18,27A79,249BA
+20346,27657,25FE2,275FE,2209A,28A9A,2403B,24A45,205CA,20611
+21EA8,23CFF,285E8,299C9,221C3,28B4E,20C78,20779,23F4A,24AA7
+26B52,27632,2493F,233CC,28948,21D90,27C12,24F9A,26BF7,2191C
+249F6,23FEF,2271B,257E1,2F8CD,2F806,24521,24934,26CBD,26411
+290C0,20A11,26469,20021,23519,2258D,2217A,249D0,20EF8,22926
+28473,217B1,24A2A,21820,29CAD,298A4,2160A,2372F,280E8,213C5
+291A8,270AF,289AB,2417A,2A2DF,28318,26E07,2816F,269B5,213ED
+2322F,28C30,28949,24988,24AA5,23F81,21FA1,295E9,2789D,28024
+27A3E,23CB7,26258,29D98,23D40,20E9D,282E2,20C41,20C96,20E76
+22C62,20EA2,21075,22B43,22EB3,20DA7,2688A,20EF9,27FF9,247E0
+29D7C,275A3,26048,24618,29EAC,29FDE,272B2,2048E,20EB6,27F2E
+2A434,243F2,29E06,294D0,26335,20D28,20D71,21F0F,21DD1,2176D
+2B473,28E97,25C21,20CD4,201F2,2A64A,2837D,2A2B2,24ABB,26E05
+2AE67,2251B,2DF3C,28E39,20F3B,25F1A,27486,267CC,24011,2F922
+20547,205DF,23FC5,24942,289E4,219DB,23CC8,24933,289AA,202A0
+26BB3,21305,224ED,26D29,27A84,23600,24AB1,22513,2037E,20380
+20347,2041F,249A4,20487,233B4,20BFF,220FC,202E5,22530,2058E
+23233,21983,205B3,23C99,24AA6,2372D,26B13,2F829,28ADE,23F80
+20954,23FEC,20BE2,21726,216E8,286AB,2F832,21596,21613,28A9B
+25772,20B8F,23FEB,22DA3,20C77,26B53,20D74,2170D,20EDD,20D4D
+289BC,22698,218D7,2403A,24435,210B4,2328A,28B66,2124F,241A5
+26C7E,21416,21454,24363,24BF5,2123C,2A150,24278,2163E,21692
+20D4E,26C81,26D2A,217DC,217FB,217B2,26DA6,21828,216D5,26E45
+249A9,26FA1,22554,21911,216B8,27A0E,20204,21A34,259CC,205A5
+21B44,21CA5,26B28,21DF9,21E37,21EA4,24901,22049,22173,244BC
+20CD3,21771,28482,201C1,2F894,2133A,26888,223D0,22471,26E6E
+28A36,25250,21F6A,270F8,22668,2029E,28A29,227B4,24982,2498F
+27A53,2F8A6,26ED2,20656,23FB7,2285F,28B9D,2995D,22980,228C1
+20118,21770,22E0D,249DF,2138E,217FC,22E36,2571D,24A28,24A23
+24940,21829,23400,231F7,231F8,231A4,231A5,20E75,251E6,23231
+285F4,231C8,25313,228F7,2439C,24A21,237C2,2F8DB,241CD,290ED
+233E6,26DA0,2346F,28ADF,235CD,2363C,28A4A,203C9,23659,2212A
+23703,2919C,20923,227CD,23ADB,21958,23B5A,23EFC,2248B,248F1
+26B51,23DBC,23DBD,241A4,2490C,24900,23CC9,20D32,231F9,22491
+26D25,26DA1,26DEB,2497F,24085,26E72,26F74,28B21,2F908,23E2F
+23F82,2304B,23E30,21497,2403D,29170,24144,24091,24155,24039
+23FF0,23FB4,2413F,24156,24157,24140,261DD,24277,24365,242C1
+2445A,24A27,24A22,28BE8,25605,24974,23044,24823,2882B,28804
+20C3A,26A2E,241E2,216E7,24A24,249B7,2498D,249FB,24A26,2F92F
+228AD,28EB2,24A8C,2415F,24A79,28B8F,28C03,2189E,21988,28ED9
+21A4B,28EAC,24F82,24D13,263F5,26911,2690E,26F9F,2509D,2517D
+21E1C,25220,232AC,28964,28968,216C1,255E0,2760C,2261C,25857
+27B39,27126,2910D,20C42,20D15,2512B,22CC6,20341,24DB8,294E5
+280BE,22C38,2815D,269F2,24DEA,20D7C,20FB4,20CD5,2BAB3,20E96
+20F64,22CA9,28256,244D3,20D46,29A4D,280E9,24EA7,22CC2,295F4
+252C7,297D4,22D44,2BCD7,22BCA,2B977,266DA,26716,279A0,25052
+20C43,28B4C,20731,201A9,22D8D,245C8,204FC,26097,20F4C,22A66
+2109D,20D9C,22775,2A601,20E09,22ACF,2C5F8,210C8,239C2,2829B
+25E49,220C7,22CB2,29720,24E3B,2C9A0,27574,22E8B,22208,2A65B
+28CCD,20E7A,20C34,27639,22BCE,22C51,210C7,2A632,28CD2,28D99
+28CCA,2775E,2F828,2107B,210D3,212FE,247EF,24EA5,24F5C,28189
+2B42C
+
+%Adobe-CNS1-3
+2010C,200D1,200CD,200CB,21FE8,200CA,2010E,21BC1,2F878,20086
+248E9,2626A,2634B,26612,26951,278B2,28E0F,29810,20087,2A3A9
+21145,27735,209E7,29DF6,2700E,2A133,2846C,21DCA,205D0,22AE6
+27D84,210F4,20C0B,278C8,260A5,22D4C,21077,2106F,221A1,20D96
+22CC9,20F31,2681C,210CF,22803,22939,251E3,20E8C,20F8D,20EAA
+20F30,20D47,2114F,20E4C,20EAB,20BA9,20D48,210C0,2113D,22696
+20FAD,233F4,20D7E,20D7F,22C55,20E98,20F2E,26B50,29EC3,22DEE
+26572,280BD,20EFA,20E0F,20E77,20EFB,24DEB,20CD6,227B5,210C9
+20E10,20E78,21078,21148,28207,21455,20E79,24E50,22DA4,2101D
+2101E,210F5,210F6,20E11,27694,282CD,20FB5,20E7B,2517E,20FB6
+21180,252D8,2A2BD,249DA,2183A,24177,2827C,2573D,25B74,2313D
+289C0,23F41,20325,20ED8,25C65,24FB8,20B0D,26B0A,22EEF,23CB5
+26E99,23F8F,24CC9,2A014,286BC,28501,2267A,269A8,2424B,2215B
+2037F,2A45B,249EC,24962,27109,24A4F,24A5D,217DF,23AFA,20214
+208D5,20619,21F9E,2A2B6,2915B,28A59,29420,248F2,25535,20CCF
+27967,21BC2,20094,202B7,203A0,204D7,205D5,20615,20676,216BA
+20AC2,20ACD,20BBF,2F83B,20BCB,20BFB,20C3B,20C53,20C65,20C7C
+20C8D,20CB5,20CDD,20CED,20D6F,20DB2,20DC8,20E04,20E0E,20ED7
+20F90,20F2D,20E73,20FBC,2105C,2104F,21076,21088,21096,210BF
+2112F,2113B,212E3,21375,21336,21577,21619,217C3,217C7,2182D
+2196A,21A2D,21A45,21C2A,21C70,21CAC,21EC8,21ED5,21F15,22045
+2227C,223D7,223FA,2272A,22871,2294F,22967,22993,22AD5,22AE8
+22B0E,22B3F,22C4C,22C88,22CB7,25BE8,22D08,22D12,22DB7,22D95
+22E42,22F74,22FCC,23033,23066,2331F,233DE,23567,235F3,2361A
+23716,23AA7,23E11,23EB9,24119,242EE,2430D,24334,24396,24404
+244D6,24674,2472F,24812,248FB,24A15,24AC0,24F86,2502C,25299
+25419,25446,2546E,2553F,2555E,25562,25566,257C7,2585D,25903
+25AAE,25B89,25C06,26102,261B2,26402,2644A,26484,26488,26512
+265BF,266B5,266FC,26799,2686E,2685E,268C7,26926,26939,269FA
+26A2D,26A34,26B5B,26B9D,26CA4,26DAE,2704B,271CD,27280,27285
+2728B,272E6,27450,277CC,27858,279DD,279FD,27A0A,27B0B,27D66
+28009,28023,28048,28083,28090,280F4,2812E,2814F,281AF,2821A
+28306,2832F,2838A,28468,286AA,28956,289B8,289E7,289E8,28B46
+28BD4,28C09,28FC5,290EC,29110,2913C,2915E,24ACA,294E7,295B0
+295B8,29732,298D1,29949,2996A,299C3,29A28,29B0E,29D5A,29D9B
+29EF8,29F23,2A293,2A2FF,2A5CB,20C9C,224B0,24A93,28B2C,217F5
+28B6C,28B99,266AF,27655,25635,25956,25E81,20E6D,23E88,24C9E
+217F6,2187B,25C4A,25311,25ED8,20FEA,20D49,236BA,25148,210C1
+24706,26893,226F4,27D2F,241A3,27D73,26ED0,272B6,211D9,23CFC
+2A6A9,20EAC,21CA2,24FC2,20FEB,22DA0,20FEC,20E0A,20FED,21187
+24B6E,25A95,20979,22465,23CFE,29F30,24FA9,2959E,23DB6,267B3
+23720,23EF7,23E2C,230DA,212A9,24963,270AE,2176C,27164,26D22
+24AE2,2493E,26D23,203FC,23CFD,24919,24A77,28A5A,2F840,2183B
+26159,233F5,28BC2,21D46,26ED1,28B2D,23CC7,25ED7,27656,25531
+21944,29903,26DDC,270AD,261AD,28A0F,23677,200EE,26846,24F0E
+2634C,2626B,21877,2408C,2307E,21E3D,203B5,205C3,21376,24A12
+28B2B,26083
+
+%Adobe-CNS1-4
+29C73,2414E,251CD,25D30,28A32,23281,2A107,21980,2870F,2A2BA
+29947,28AEA,2207E,289E3,21DB6,22712,233F9,23C63,24505,24A13
+25CA4,25695,28DB9,2143F,2497B,2710D,26D74,26B15,26FBE
+
+%Adobe-CNS1-5
+27267,27CB1,27CC5,242BF,23617,27352,26E8B,270D2,2A351,27C6C
+26B23,25A54,21A63,23E06,23F61,28BB9,27BEF,21D5E,29EB0,29945
+20A6F,23256,22796,23B1A,23551,240EC,21E23,201A4,26C41,20239
+298FA,20B9F,221C1,2896D,29079,2A1B5,26C46,286B2,273FF,2549A
+24B0F
+
+%Adobe-CNS1-6
+21D53,2369E,26021,258DE,24161,2890D,231EA,20A8A,2325E,25DB9
+2368E,27B65,26E88,25D99,224BC,224C1,224C9,224CC,235BB,2ADFF
+
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/script/umkpkana.pl b/language/japanese/japanese-otf-uptex/script/umkpkana.pl
new file mode 100755
index 0000000000..4c14fd4559
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/umkpkana.pl
@@ -0,0 +1,601 @@
+#!/usr/bin/perl -s
+
+=head1 NOTE
+
+This software is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+
+=cut
+
+use Encode;
+use FindBin;
+use lib "$FindBin::Bin";
+use CheckDVICode;
+
+if ($sp==1) { # supplemental plane
+ use MakeSPList;
+ &make_sp_char_list('j');
+ %exist_char=%{$MakeSPList::r_exist_char->{'j'}};
+}
+
+$_=<DATA>;
+while(<DATA>) {
+ chomp($_);
+ my (@data)=split(' ', $_);
+ my ($char);
+ last if (@data<6);
+ $char = shift @data;
+ push @character, $char;
+ $cid {$char}=shift @data;
+ $min_w3 {$char}=shift @data;
+ $min_w6 {$char}=shift @data;
+ $goth_w3{$char}=shift @data;
+ $goth_w6{$char}=shift @data;
+ $maru_w4{$char}=shift @data;
+}
+
+@charwidth=({%min_w3}, {%min_w6}, {%goth_w3}, {%goth_w6}, {%maru_w4});
+@font_name=("phiraminw3-h", "phiraminw6-h", "phirakakuw3-h", "phirakakuw6-h", "phiramaruw4-h");
+@kanji_font_name=("hminr-h", "hminb-h", "hgothr-h", "hgothb-h", "hmgothr-h");
+@kana_font_name=("hiramin-w3-h", "hiramin-w6-h", "hirakaku-w3-h", "hirakaku-w6-h", "hiramaru-w4-h");
+$font_at=1.0;
+$half_width= ($font_at / 2);
+$quater_width= ($font_at / 4);
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+opendir(JPL, "pl") || mkdir("pl",0755) || die "cannot mkdir pl";
+opendir(JFM, "tfm") || mkdir("tfm",0755) || die "cannot mkdir tfm";
+closedir(OVP);
+closedir(VF);
+closedir(JPL);
+closedir(JFM);
+
+$n_fixed=7; ## type 0..6
+$ucs=1; # 1: upphiraXXX or 0: phiraXXX
+if ($ucs) {
+ $CheckDVICode::is_ucs=1;
+ foreach(@font_name, @kanji_font_name) {
+ $_="up$_";
+ }
+ if ($hk) { ## command line option -hk: Enable halfwidth katakana
+ $hk_mode=1;
+ $n_fixed=8; ## type 0..7
+ }
+}
+
+#main
+for ($i=0; $i<=4; $i++){
+ open (JPL, ">pl/$font_name[$i].pl");
+ &tfm_head_h;
+ &chars_in_type_jis;
+ &chars_in_type_prop;
+ &print_type_jis;
+ &print_type_prop;
+ &glue_kern;
+ close(JPL);
+}
+for ($i=0; $i<=4; $i++){
+ @cpm_h=(0x29E, 0x29F, 0x2A0, 0x2A1);
+ open (OVP, ">ovp/$font_name[$i].ovp");
+ &fonthead;
+ &write_char;
+ close(OVP);
+}
+#
+#sub rtn
+#
+sub tfm_head_h {
+ print JPL "(FAMILY PROP KANA)\n";
+ print JPL "(FACE F MRR)\n";
+ print JPL "(CODINGSCHEME TEX KANJI TEXT)\n";
+ print JPL "(DESIGNSIZE R 10.0)\n";
+ print JPL "(CHECKSUM O 0)\n";
+ print JPL "(SEVENBITSAFEFLAG TRUE)\n";
+ print JPL "(FONTDIMEN\n";
+ print JPL " (SLANT R 0.0)\n";
+ print JPL " (SPACE R 0.0)\n";
+ printf JPL " (STRETCH R %f)\n", $font_at/10;
+ print JPL " (SHRINK R 0.0)\n";
+ printf JPL " (XHEIGHT R %f)\n", $font_at;
+ printf JPL " (QUAD R %f)\n", $font_at;
+ printf JPL " (EXTRASPACE R %f)\n", $font_at/4;
+ printf JPL " (EXTRASTRETCH R %f)\n", $font_at/5;
+ printf JPL " (EXTRASHRINK R %f)\n", $font_at/8;
+ print JPL " )\n";
+}
+sub char_foot_h {
+ printf JPL " (CHARHT R %f)\n", $font_at*0.88;
+ printf JPL " (CHARDP R %f)\n", $font_at*0.12;
+ print JPL " )\n";
+}
+sub glue_kern{
+ print JPL "(GLUEKERN\n";
+ print JPL " (LABEL O 5)\n";
+ print JPL " (KRN O 5 R 0.0)\n";
+ print JPL " (LABEL O 0)\n";
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (LABEL H %X)\n",($char+$n_fixed);
+ }
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (LABEL O 1)\n";
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 2)\n";
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 7 R %f R 0.0 R %f)\n", $half_width, $half_width if $hk_mode;
+ print JPL " (STOP)\n";
+ if ($hk_mode) {
+ print JPL " (LABEL O 7)\n";
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ print JPL " (STOP)\n";
+ }
+ print JPL " (LABEL O 6)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+$n_fixed), $half_width, $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 4)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width+$quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 7 R %f R 0.0 R %f)\n", $half_width, $half_width if $hk_mode;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R 0.0)\n",($char+$n_fixed), $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 3)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 2 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width, $quater_width;
+ printf JPL " (GLUE O 4 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 7 R %f R 0.0 R %f)\n", $half_width, $half_width if $hk_mode;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+$n_fixed), $quater_width, $quater_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " )\n";
+}
+sub chars_in_type_jis{
+ my ($type1add, $type2add, $type3add, $type5, $type6add)=();
+ if ($ucs) {
+ $type1add = "UFF5F U3018 U3016 U301D U00AB U2329 U301A";
+ $type2add = "UFF60 U3019 U3017 U301F U00BB U232A U301B U301E";
+ $type3add = "U00B7";
+ $type5 = "— ― … ‥";
+ $type6add = "U203C U2047 U2048 U2049";
+ } else {
+ $type5 = "— … ‥";
+ }
+print JPL <<END_OF_DATA;
+(CHARSINTYPE O 1
+ ‘ “ ( 〔 [ { 〈 《 「 『 【
+ $type1add
+ )
+(CHARSINTYPE O 2
+ 、 , ’ ” ) 〕 ] } 〉 》 」 』 】
+ $type2add
+ )
+(CHARSINTYPE O 3
+ ・ : ;
+ $type3add
+ )
+(CHARSINTYPE O 4
+ 。 .
+ )
+(CHARSINTYPE O 5
+ $type5
+ )
+(CHARSINTYPE O 6
+ ? !
+ $type6add
+ )
+END_OF_DATA
+print JPL <<END_OF_DATA if ($hk_mode) ; ## Halfwidth Katakana
+(CHARSINTYPE O 7
+ UFF61 UFF62 UFF63 UFF64 UFF65 UFF66 UFF67
+ UFF68 UFF69 UFF6A UFF6B UFF6C UFF6D UFF6E UFF6F
+ UFF70 UFF71 UFF72 UFF73 UFF74 UFF75 UFF76 UFF77
+ UFF78 UFF79 UFF7A UFF7B UFF7C UFF7D UFF7E UFF7F
+ UFF80 UFF81 UFF82 UFF83 UFF84 UFF85 UFF86 UFF87
+ UFF88 UFF89 UFF8A UFF8B UFF8C UFF8D UFF8E UFF8F
+ UFF90 UFF91 UFF92 UFF93 UFF94 UFF95 UFF96 UFF97
+ UFF98 UFF99 UFF9A UFF9B UFF9C UFF9D UFF9E UFF9F
+ )
+END_OF_DATA
+}
+sub print_type_jis{
+ @type_width=($font_at, $half_width, $half_width, $half_width, $half_width, $font_at, $font_at);
+ if ($hk_mode) { push @type_width, $half_width; }
+ for ($k=0; $k<$n_fixed; $k++){
+ printf JPL "(TYPE H %x\n", $k;
+ printf JPL " (CHARWD R %f)\n", $type_width[$k];
+ &char_foot_h;
+ }
+}
+sub fonthead {
+ print OVP "(VTITLE Prop Kana)\n";
+ print OVP "(OFMLEVEL D 0)\n";
+ print OVP "(DESIGNSIZE R 10.000000)\n";
+ print OVP "(CHECKSUM O 0)\n";
+ print OVP "(MAPFONT D 1\n";
+ print OVP " (FONTNAME $kanji_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $kana_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+}
+sub write_char {
+ if (!$ucs) {
+ for ($ku=1; $ku<=94; $ku++){
+ for ($ten=1; $ten<=94; $ten++){
+ $dvicode=($ku+32)*256+($ten+32);
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&print_kana_char;}
+ elsif($ku==5){&print_kana_char;}else{&print_char;}
+ }
+ }
+ } else { # ucs
+ $max_ucs= $sp ? 0x2FA1F : 0xFFFF; # U+2FA1F: max of CJK Compatibility Ideographs Supplement
+ for ($ucscode=0; $ucscode<=$max_ucs; $ucscode++){
+ $CheckDVICode::dvicode=$dvicode=$ucscode;
+ next unless (&is_ucs_jpn_range);
+ if ($sp==1 && $ucscode>0xFFFF) {
+ next unless ($exist_char{sprintf("%X",$ucscode)});
+ }
+ if (&is_ucs_kigo){&print_kigo_char;}
+ elsif(&is_ucs_hira || &is_dvicode('hira-yori')){&print_kana_char;}
+ elsif(&is_ucs_kata || &is_dvicode('kata-koto')){&print_kana_char;}
+ elsif(&is_ucs_hankana && $hk_mode){&print_hankana_char;}
+ else{&print_char;}
+ }
+ }
+}
+sub print_char{
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SETCHAR H %X)\n",$dvicode;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kigo_char{
+ my ($width,$cid);
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ if (&is_dvicode('quote') || &is_dvicode('kakko')){#Kakko
+ $width=$half_width;
+ } elsif (&is_dvicode('kutouten')){#Kutouten
+ $width=$half_width;
+ } elsif (&is_dvicode('odoriji')){#odoriji
+ ($width,$cid)=&get_charwidth($i,$dvicode);
+ $width/=10;
+ } else{
+ $width=$font_at;
+ }
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ if (&is_dvicode('odoriji')){#odoriji
+ print OVP " (SELECTFONT D 2)\n";
+ } elsif ($ucs && &is_dvicode('quote')){#Quote
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ if (&is_dvicode('nakaten') || &is_dvicode('colon') || &is_dvicode('semicolon')){#colon, semicolon, nakaten
+ printf OVP " (MOVERIGHT R -%f)\n",$quater_width;}
+ if ((&is_dvicode('quote') || &is_dvicode('kakko')) && &is_dvicode('open')){#Kakko
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ if (&is_dvicode('odoriji')){#odoriji
+ printf OVP " (SETCHAR H %X)\n",$cid;
+ } elsif ($ucs && &is_dvicode('quote')){#Quote
+ $cpmcode= shift(@cpm_h);
+ printf OVP " (SETCHAR H %X)\n",$cpmcode;
+ } else {
+ printf OVP " (SETCHAR H %X)\n",$dvicode;
+ }
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kana_char{
+ my ($width,$cid)=&get_charwidth($i,$dvicode);
+ if ($width==0) {
+ return &print_char;
+ }
+ $width/=10;
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 2)\n";
+ printf OVP " (SETCHAR H %X)\n",$cid;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_hankana_char{
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $half_width;
+ print OVP " (MAP\n";
+ printf OVP " (SETCHAR H %X)\n",$dvicode;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub chars_in_type_prop{
+ %char_width_hash=();
+ for ($j=0; $j<@character; $j++){
+ my ($c0, $c1);
+ $c0=$c1=$character[$j];
+ if (!$ucs) {
+ if (!Encode::from_to($c1,'utf-8','euc-jp', Encode::FB_QUIET)
+ || $c0 eq "〃"
+ || $c0 eq "〆") { next; }
+ }
+ $char_width_hash{$c0}=$charwidth[$i]{$c0}/10;
+ }
+ $x = '-';
+ @uniq_char_width_array = grep( $_ ne $x && ($x = $_), sort values(%char_width_hash));
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ printf JPL "(CHARSINTYPE H %X\n",($j+$n_fixed);
+ print JPL " ";
+ @char_in_this_type = ();
+ while (($name, $value) = each(%char_width_hash)) {
+ if ($value == $uniq_char_width_array[$j]){
+ push(@char_in_this_type, $name);
+ }
+ }
+ @char_in_this_type = sort @char_in_this_type;
+ foreach $char_in_this(@char_in_this_type){
+ print JPL "$char_in_this ";#character
+ }
+ print JPL "\n";
+ print JPL " )\n";
+ }
+}
+sub print_type_prop{
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ $char_width=$uniq_char_width_array[$j];
+ printf JPL "(TYPE H %X\n", ($j+$n_fixed);
+ printf JPL " (CHARWD R %f)\n", $char_width;
+ &char_foot_h;
+ }
+}
+
+sub get_charwidth{
+ my ($i,$dvicode)=@_;
+ my ($char,$u,$l);
+
+ if (!$ucs) {
+ if ($dvicode>=0x2474 && $dvicode<=0x2476) {
+ return 0;
+ }
+ $u = ($dvicode >> 8) & 0xFF | 0x80;
+ $l = $dvicode & 0xFF | 0x80;
+ $char = pack("C*",$u,$l);
+ Encode::from_to($char,'euc-jp','utf-8');
+ } else {
+ $u = ($dvicode >> 8) & 0xFF;
+ $l = $dvicode & 0xFF;
+ $char = pack("C*",$u,$l);
+ Encode::from_to($char,'utf-16be','utf-8');
+ }
+ if (!exists($charwidth[$i]{$char})) {
+ return 0;
+ }
+ return ($charwidth[$i]{$char}, $cid{$char});
+}
+
+
+__DATA__
+character cid min_w3 min_w6 goth_w3 goth_w6 maru_w4
+ヽ 15449 7.11 7.54 7.19 7.49 7.45
+ヾ 15450 7.68 7.95 7.69 8 8.15
+ゝ 15451 7.17 7.43 7.23 7.53 7.63
+ゞ 15452 7.79 7.97 7.72 8.09 8.08
+ー 15455 9.9 10 10 10 10
+ぁ 15517 8.21 8.44 8.56 8.77 8.72
+あ 15518 8.83 9.17 9.18 9.41 9.32
+ぃ 15519 8.56 8.72 8.67 8.95 8.97
+い 15520 9.14 9.46 9.3 9.52 9.58
+ぅ 15521 7.3 7.65 8.08 8.27 8.32
+う 15522 7.68 8.04 8.51 8.74 8.78
+ぇ 15523 7.97 8.2 8.34 8.56 8.61
+え 15524 8.69 8.95 9.14 9.33 9.36
+ぉ 15525 8.59 8.9 8.77 9.02 8.97
+お 15526 9.15 9.52 9.37 9.62 9.54
+か 15527 9.53 9.81 9.49 9.72 9.58
+が 15528 9.69 9.93 9.68 9.82 9.79
+き 15529 8.34 8.64 8.87 9.09 9.15
+ぎ 15530 9.09 9.42 9.49 9.49 9.66
+く 15531 6.76 7.04 7.64 7.92 8.04
+ぐ 15532 8.31 8.52 8.34 8.5 8.72
+け 15533 9.07 9.35 9.16 9.37 9.39
+げ 15534 9.56 9.75 9.66 9.82 9.78
+こ 15535 8.05 8.3 8.37 8.65 8.88
+ご 15536 8.91 9.08 8.9 9 9.27
+さ 15537 8.26 8.61 8.71 9.02 9.03
+ざ 15538 9.19 9.53 8.97 9.3 9.34
+し 15539 8.07 8.51 8.58 8.84 8.91
+じ 15540 8.17 8.62 8.65 8.94 9
+す 15541 9.16 9.44 9.17 9.33 9.41
+ず 15542 9.52 9.63 9.53 9.66 9.72
+せ 15543 9.52 9.76 9.44 9.65 9.61
+ぜ 15544 9.79 9.92 9.73 9.86 9.87
+そ 15545 8.59 8.93 9.27 9.48 9.43
+ぞ 15546 9.25 9.49 9.4 9.64 9.69
+た 15547 8.94 9.25 9.22 9.45 9.37
+だ 15548 9.23 9.44 9.28 9.51 9.57
+ち 15549 8.5 8.77 8.83 9.05 9.11
+ぢ 15550 8.98 9.25 8.92 9.16 9.28
+っ 15551 8.81 8.97 8.66 8.84 8.83
+つ 15552 9.39 9.71 9.26 9.41 9.44
+づ 15553 9.65 9.8 9.54 9.68 9.71
+て 15554 8.91 9.11 8.93 9.12 9.25
+で 15555 9.3 9.5 9.26 9.42 9.5
+と 15556 7.62 7.89 8.3 8.62 8.66
+ど 15557 8.45 8.72 8.56 8.78 8.88
+な 15558 9.08 9.42 9.45 9.66 9.55
+に 15559 8.94 9.18 9.16 9.42 9.38
+ぬ 15560 9.41 9.67 9.51 9.72 9.62
+ね 15561 9.51 9.73 9.67 9.82 9.83
+の 15562 9.29 9.57 9.35 9.69 9.58
+は 15563 9.13 9.45 9.44 9.69 9.56
+ば 15564 9.69 9.79 9.73 9.85 9.8
+ぱ 15565 9.58 9.77 9.66 9.8 9.75
+ひ 15566 8.98 9.33 9.26 9.52 9.52
+び 15567 9.27 9.49 9.48 9.71 9.62
+ぴ 15568 9.33 9.53 9.39 9.63 9.63
+ふ 15569 9.19 9.44 9.4 9.62 9.52
+ぶ 15570 9.33 9.59 9.61 9.78 9.74
+ぷ 15571 9.36 9.59 9.51 9.73 9.74
+へ 15572 9.71 9.97 9.69 9.76 9.73
+べ 15573 9.54 9.84 9.64 9.76 9.72
+ぺ 15574 9.51 9.82 9.5 9.73 9.69
+ほ 15575 9.14 9.49 9.48 9.73 9.62
+ぼ 15576 9.73 9.9 9.79 9.88 9.93
+ぽ 15577 9.77 9.92 9.72 9.9 9.88
+ま 15578 8.32 8.62 8.98 9.24 9.28
+み 15579 9.07 9.38 9.38 9.62 9.57
+む 15580 9.22 9.57 9.33 9.52 9.48
+め 15581 9.03 9.36 9.27 9.54 9.48
+も 15582 8.08 8.34 8.82 9.1 9.15
+ゃ 15583 8.68 8.93 8.72 8.9 8.9
+や 15584 9.38 9.62 9.25 9.49 9.46
+ゅ 15585 8.74 8.95 8.78 8.98 9
+ゆ 15586 9.33 9.64 9.41 9.63 9.62
+ょ 15587 7.64 7.85 8.09 8.36 8.45
+よ 15588 8.1 8.41 8.63 8.95 9.04
+ら 15589 8.14 8.39 8.59 8.81 8.94
+り 15590 7.69 8.09 8.33 8.59 8.71
+る 15591 8.2 8.55 8.86 9.11 9.12
+れ 15592 9.76 9.96 9.62 9.82 9.81
+ろ 15593 8.38 8.63 8.7 8.94 9.09
+ゎ 15594 8.58 8.83 8.82 9.07 9.02
+わ 15595 9.24 9.58 9.46 9.71 9.66
+ゐ 15596 8.77 9.12 9.02 9.29 9.35
+ゑ 15597 9.14 9.32 9.34 9.53 9.5
+を 15598 8.78 9.14 9.05 9.33 9.45
+ん 15599 9.13 9.39 9.2 9.47 9.39
+ァ 15608 8.01 8.28 8.37 8.61 8.5
+ア 15609 8.69 9.01 9 9.24 9.17
+ィ 15610 7.6 7.78 8.26 8.44 8.33
+イ 15611 8.2 8.43 8.91 9.13 8.96
+ゥ 15612 7.89 8.24 8.4 8.61 8.72
+ウ 15613 8.4 8.67 8.81 9.06 9.18
+ェ 15614 8.44 8.63 8.63 8.83 8.73
+エ 15615 9.23 9.5 9.36 9.52 9.36
+ォ 15616 8.34 8.57 8.66 8.88 8.69
+オ 15617 8.94 9.26 9.18 9.39 9.32
+カ 15618 8.64 8.9 9.04 9.33 9.23
+ガ 15619 9.39 9.53 9.37 9.53 9.55
+キ 15620 8.76 9.19 9.27 9.45 9.34
+ギ 15621 9.05 9.4 9.31 9.54 9.55
+ク 15622 8.25 8.6 8.68 8.96 8.9
+グ 15623 9.06 9.37 9.55 9.57 9.67
+ケ 15624 8.84 9.05 9.28 9.43 9.41
+ゲ 15625 9.28 9.42 9.52 9.66 9.69
+コ 15626 8.49 8.83 8.88 9.15 9.16
+ゴ 15627 9.1 9.3 9.4 9.59 9.55
+サ 15628 9.16 9.44 9.26 9.42 9.46
+ザ 15629 9.46 9.68 9.62 9.72 9.8
+シ 15630 9.02 9.22 8.94 9.22 9.32
+ジ 15631 8.99 9.22 9.42 9.5 9.74
+ス 15632 8.68 8.96 9.06 9.32 9.25
+ズ 15633 9.24 9.48 9.5 9.73 9.67
+セ 15634 9.02 9.4 9.17 9.36 9.33
+ゼ 15635 9.44 9.71 9.54 9.63 9.63
+ソ 15636 8.23 8.49 8.47 8.76 8.8
+ゾ 15637 9.13 9.3 9.04 9.19 9.44
+タ 15638 8.41 8.78 8.75 9 8.95
+ダ 15639 9.32 9.56 9.67 9.65 9.73
+チ 15640 8.91 9.27 9.25 9.48 9.36
+ヂ 15641 9.36 9.64 9.55 9.63 9.61
+ッ 15642 7.86 8.12 8.15 8.4 8.48
+ツ 15643 8.44 8.73 8.86 9.13 9.04
+ヅ 15644 9.24 9.43 9.41 9.53 9.57
+テ 15645 8.85 9.2 9.22 9.38 9.33
+デ 15646 9.37 9.58 9.64 9.67 9.74
+ト 15647 7.25 7.6 8.02 8.3 8.57
+ド 15648 7.95 8.16 8.26 8.48 8.7
+ナ 15649 8.84 9.22 9.13 9.32 9.26
+ニ 15650 9.21 9.52 9.23 9.42 9.22
+ヌ 15651 8.11 8.42 8.46 8.7 8.79
+ネ 15652 9 9.27 9.23 9.46 9.4
+ノ 15653 7.81 8.17 8.4 8.7 8.66
+ハ 15654 9.46 9.77 9.45 9.66 9.41
+バ 15655 9.58 9.76 9.63 9.78 9.56
+パ 15656 9.45 9.71 9.53 9.75 9.55
+ヒ 15657 8.14 8.42 8.6 8.88 8.84
+ビ 15658 8.76 9 9.23 9.41 9.46
+ピ 15659 8.66 8.9 9.15 9.33 9.4
+フ 15660 8.12 8.46 8.57 8.81 8.91
+ブ 15661 9.05 9.3 9.27 9.42 9.73
+プ 15662 9.05 9.27 9.11 9.31 9.73
+ヘ 15663 9.68 9.95 9.62 9.77 9.66
+ベ 15664 9.44 9.77 9.56 9.73 9.62
+ペ 15665 9.42 9.77 9.56 9.71 9.59
+ホ 15666 8.85 9.19 9.46 9.67 9.52
+ボ 15667 9.14 9.39 9.51 9.71 9.69
+ポ 15668 8.81 9.24 9.5 9.72 9.71
+マ 15669 8.86 9.17 8.99 9.19 9.17
+ミ 15670 7.57 7.9 8.39 8.64 8.87
+ム 15671 8.56 8.87 9.2 9.4 9.39
+メ 15672 8.2 8.55 8.64 8.92 8.81
+モ 15673 9.09 9.41 9.42 9.61 9.49
+ャ 15674 8.39 8.69 8.49 8.73 8.73
+ヤ 15675 8.95 9.24 9.16 9.39 9.31
+ュ 15676 8.38 8.61 8.43 8.65 8.61
+ユ 15677 9.18 9.57 9.22 9.37 9.35
+ョ 15678 7.94 8.23 8.44 8.72 8.74
+ヨ 15679 8.37 8.74 8.91 9.19 9.22
+ラ 15680 8.08 8.41 8.71 8.97 8.95
+リ 15681 7.6 7.91 8.16 8.43 8.63
+ル 15682 9.27 9.69 9.46 9.64 9.49
+レ 15683 8.46 8.8 8.61 8.9 9.01
+ロ 15684 8.51 8.95 9.26 9.51 9.54
+ヮ 15685 7.77 8.09 8.32 8.51 8.71
+ワ 15686 8.34 8.67 8.71 8.97 9.02
+ヰ 15687 9.19 9.5 9.47 9.64 9.57
+ヱ 15688 9.19 9.51 9.32 9.52 9.35
+ヲ 15689 8.01 8.39 8.49 8.76 8.93
+ン 15690 8.71 9.03 8.85 9.12 9.04
+ヴ 15691 9.06 9.34 9.33 9.51 9.66
+ヵ 15692 8.11 8.33 8.51 8.8 8.74
+ヶ 15693 8.18 8.39 8.63 8.74 8.73
+〃 15453 7.69 8.15 8.29 8.62 8.36
+〆 15454 8.69 9.03 9.09 9.33 9.15
+ヿ 15462 8.09 8.42 8.6 8.83 8.87
+ゟ 15463 8.03 8.27 8.82 9.19 8.93
+ゔ 15600 8.73 9.06 9.27 9.47 9.44
+ゕ 15601 8.75 9.02 8.82 9.06 8.95
+ゖ 15602 8.36 8.64 8.55 8.78 8.73
+ㇰ 15702 7.68 8.03 8.02 8.34 8.43
+ㇱ 15703 8.39 8.58 8.43 8.67 8.66
+ㇲ 15704 8 8.19 8.3 8.59 8.55
+ㇳ 15705 7.02 7.29 7.66 7.9 8.16
+ㇴ 15706 7.65 7.89 8.04 8.35 8.38
+ㇵ 15707 8.6 8.79 8.61 8.84 8.63
+ㇶ 15708 7.83 8.02 8.15 8.43 8.41
+ㇷ 15709 7.61 7.94 8.09 8.3 8.39
+ㇸ 15710 8.81 9.1 8.78 8.94 8.83
+ㇹ 15711 8.27 8.53 8.86 9.09 8.97
+ㇺ 15713 7.92 8.13 8.39 8.61 8.62
+ㇻ 15714 7.8 8.09 8.32 8.54 8.55
+ㇼ 15715 7.39 7.66 7.9 8.13 8.31
+ㇽ 15716 8.59 8.79 8.72 8.9 8.81
+ㇾ 15717 8.06 8.32 8.18 8.41 8.55
+ㇿ 15718 8.13 8.44 8.67 8.93 8.98
+ヷ 15719 9.2 9.51 9.64 9.6 9.81
+ヸ 15720 9.41 9.75 9.6 9.7 9.75
+ヹ 15721 9.47 9.7 9.65 9.7 9.8
+ヺ 15722 8.91 9.32 9.34 9.39 9.73
+end
diff --git a/language/japanese/japanese-otf-uptex/script/umkvpkana.pl b/language/japanese/japanese-otf-uptex/script/umkvpkana.pl
new file mode 100755
index 0000000000..f1ff477518
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/script/umkvpkana.pl
@@ -0,0 +1,568 @@
+#!/usr/bin/perl -s
+
+=head1 NOTE
+
+This software is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+
+=cut
+
+use Encode;
+use FindBin;
+use lib "$FindBin::Bin";
+use CheckDVICode;
+
+if ($sp==1) { # supplemental plane
+ use MakeSPList;
+ &make_sp_char_list('j');
+ %exist_char=%{$MakeSPList::r_exist_char->{'j'}};
+}
+
+$_=<DATA>;
+while(<DATA>) {
+ chomp($_);
+ my (@data)=split(' ', $_);
+ my ($char);
+ last if (@data<6);
+ $char = shift @data;
+ push @character, $char;
+ $cid {$char}=shift @data;
+ $min_w3 {$char}=shift @data;
+ $min_w6 {$char}=shift @data;
+ $goth_w3{$char}=shift @data;
+ $goth_w6{$char}=shift @data;
+ $maru_w4{$char}=shift @data;
+}
+
+@charwidth=({%min_w3}, {%min_w6}, {%goth_w3}, {%goth_w6}, {%maru_w4});
+@font_name=("phiraminw3-v", "phiraminw6-v", "phirakakuw3-v", "phirakakuw6-v", "phiramaruw4-v");
+@kanji_font_name=("hminr-v", "hminb-v", "hgothr-v", "hgothb-v", "hmgothr-v");
+@kana_font_name=("hiramin-w3-v", "hiramin-w6-v", "hirakaku-w3-v", "hirakaku-w6-v", "hiramaru-w4-v");
+$font_at=1.0;
+$half_width= ($font_at / 2);
+$quater_width= ($font_at / 4);
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+opendir(JPL, "pl") || mkdir("pl",0755) || die "cannot mkdir pl";
+opendir(JFM, "tfm") || mkdir("tfm",0755) || die "cannot mkdir tfm";
+closedir(OVP);
+closedir(VF);
+closedir(JPL);
+closedir(JFM);
+
+$ucs=1; # 1: upphiraXXX or 0: phiraXXX
+if ($ucs) {
+ $CheckDVICode::is_ucs=1;
+ foreach(@font_name, @kanji_font_name) {
+ $_="up$_";
+ }
+}
+
+#main
+for ($i=0; $i<=4; $i++){
+ open (JPL, ">pl/$font_name[$i].pl");
+ &tfm_head_v;
+ &chars_in_type_jis;
+ &chars_in_type_prop;
+ &print_type_jis;
+ &print_type_prop;
+ &glue_kern;
+ close(JPL);
+}
+for ($i=0; $i<=4; $i++){
+ @cpm_v= $ucs ? (0x2F8D, 0x2F8E, 0x1F14, 0x1F15, 0x1ECF, 0x1ED0)
+ : (0x1ECF, 0x1ED0, 0x2F8D, 0x2F8E, 0x1F14, 0x1F15);
+ open (OVP, ">ovp/$font_name[$i].ovp");
+ &fonthead;
+ &write_char;
+ close(OVP);
+}
+#
+#sub rtn
+#
+sub tfm_head_v {
+ print JPL "(DIRECTION TATE)\n";
+ print JPL "(FAMILY PROP KANA)\n";
+ print JPL "(FACE F MRR)\n";
+ print JPL "(CODINGSCHEME TEX KANJI TEXT)\n";
+ print JPL "(DESIGNSIZE R 10.0)\n";
+ print JPL "(CHECKSUM O 0)\n";
+ print JPL "(SEVENBITSAFEFLAG TRUE)\n";
+ print JPL "(FONTDIMEN\n";
+ print JPL " (SLANT R 0.0)\n";
+ print JPL " (SPACE R 0.0)\n";
+ printf JPL " (STRETCH R %f)\n", $font_at/10;
+ print JPL " (SHRINK R 0.0)\n";
+ printf JPL " (XHEIGHT R %f)\n", $font_at;
+ printf JPL " (QUAD R %f)\n", $font_at;
+ printf JPL " (EXTRASPACE R %f)\n", $font_at/4;
+ printf JPL " (EXTRASTRETCH R %f)\n", $font_at/5;
+ printf JPL " (EXTRASHRINK R %f)\n", $font_at/8;
+ print JPL " )\n";
+}
+sub char_foot_h {
+ printf JPL " (CHARHT R %f)\n", $font_at*0.88;
+ printf JPL " (CHARDP R %f)\n", $font_at*0.12;
+ print JPL " )\n";
+}
+sub glue_kern{
+ print JPL "(GLUEKERN\n";
+ print JPL " (LABEL O 5)\n";
+ print JPL " (KRN O 5 R 0.0)\n";
+ print JPL " (LABEL O 0)\n";
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (LABEL H %X)\n",($char+7);
+ }
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (LABEL O 1)\n";
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 2)\n";
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 6)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+7), $half_width, $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 4)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width+$quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R 0.0)\n", $half_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R 0.0)\n",($char+7), $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 3)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 2 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width, $quater_width;
+ printf JPL " (GLUE O 4 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+7), $quater_width, $quater_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " )\n";
+}
+sub chars_in_type_jis{
+ my ($type1add, $type2add, $type3add, $type5, $type6add)=();
+ if ($ucs) {
+ $type1add = "UFF5F U3018 U3016 U301D U00AB U2329 U301A";
+ $type2add = "UFF60 U3019 U3017 U301F U00BB U232A U301B U301E";
+ $type3add = "U00B7";
+ $type5 = "— ― … ‥";
+ $type6add = "U203C U2047 U2048 U2049";
+ } else {
+ $type5 = "— … ‥";
+ }
+print JPL <<END_OF_DATA;
+(CHARSINTYPE O 1
+ ‘ “ ( 〔 [ { 〈 《 「 『 【
+ $type1add
+ )
+(CHARSINTYPE O 2
+ 、 , ’ ” ) 〕 ] } 〉 》 」 』 】
+ $type2add
+ )
+(CHARSINTYPE O 3
+ ・ : ;
+ $type3add
+ )
+(CHARSINTYPE O 4
+ 。 .
+ )
+(CHARSINTYPE O 5
+ $type5
+ )
+(CHARSINTYPE O 6
+ ? !
+ $type6add
+ )
+END_OF_DATA
+}
+sub print_type_jis{
+ @type_width=($font_at, $half_width, $half_width, $half_width, $half_width, $font_at, $font_at);
+ for ($k=0; $k<=6; $k++){
+ printf JPL "(TYPE H %x\n", $k;
+ printf JPL " (CHARWD R %f)\n", $type_width[$k];
+ &char_foot_h;
+ }
+}
+sub fonthead {
+ print OVP "(VTITLE Prop Kana)\n";
+ print OVP "(OFMLEVEL D 0)\n";
+ print OVP "(DESIGNSIZE R 10.000000)\n";
+ print OVP "(CHECKSUM O 0)\n";
+ print OVP "(MAPFONT D 1\n";
+ print OVP " (FONTNAME $kanji_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $kana_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+}
+sub write_char {
+ if (!$ucs) {
+ for ($ku=1; $ku<=94; $ku++){
+ for ($ten=1; $ten<=94; $ten++){
+ $dvicode=($ku+32)*256+($ten+32);
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&print_kana_char;}
+ elsif($ku==5){&print_kana_char;}else{&print_char;}
+ }
+ }
+ } else { # ucs
+ $max_ucs= $sp ? 0x2FA1F : 0xFFFF; # U+2FA1F: max of CJK Compatibility Ideographs Supplement
+ for ($ucscode=0; $ucscode<=$max_ucs; $ucscode++){
+ $CheckDVICode::dvicode=$dvicode=$ucscode;
+ next unless (&is_ucs_jpn_range);
+ if ($sp==1 && $ucscode>0xFFFF) {
+ next unless ($exist_char{sprintf("%X",$ucscode)});
+ }
+ if (&is_ucs_kigo){&print_kigo_char;}
+ elsif(&is_ucs_hira || &is_dvicode('hira-yori')){&print_kana_char;}
+ elsif(&is_ucs_kata || &is_dvicode('kata-koto')){&print_kana_char;}
+# elsif(&is_ucs_hankana && $hk_mode){&print_hankana_char;}
+ else{&print_char;}
+ }
+ }
+}
+sub print_char{
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SETCHAR H %X)\n",$dvicode;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kigo_char{
+ my ($width,$cid);
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ if (&is_dvicode('quote') || &is_dvicode('kakko')){#Kakko
+ $width=$half_width;
+ } elsif (&is_dvicode('kutouten')){#Kutouten
+ $width=$half_width;
+ } elsif (&is_dvicode('odoriji')){#odoriji
+ ($width,$cid)=&get_charwidth($i,$dvicode);
+ $width/=10;
+ } else{
+ $width=$font_at;
+ }
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ if (&is_dvicode('odoriji')){#odoriji
+ print OVP " (SELECTFONT D 2)\n";
+ } elsif (&is_dvicode('comma') || &is_dvicode('period') || &is_dvicode('quote')){#Comma, Period, Minute
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ if (&is_dvicode('nakaten') || &is_dvicode('colon') || &is_dvicode('semicolon')){#colon, semicolon, nakaten
+ printf OVP " (MOVERIGHT R -%f)\n",$quater_width;}
+ if ((&is_dvicode('quote') || &is_dvicode('kakko')) && &is_dvicode('open')){#Kakko
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ if (&is_dvicode('odoriji')){#odoriji
+ printf OVP " (SETCHAR H %X)\n",$cid;
+ } elsif (&is_dvicode('comma') || &is_dvicode('period') || &is_dvicode('quote')){#Comma, Period, Minute
+ $cpmcode= shift(@cpm_v);
+ printf OVP " (SETCHAR H %X)\n",$cpmcode;
+ } else {
+ printf OVP " (SETCHAR H %X)\n",$dvicode;
+ }
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kana_char{
+ my ($width,$cid)=&get_charwidth($i,$dvicode);
+ if ($width==0) {
+ return &print_char;
+ }
+ $width/=10;
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 2)\n";
+ printf OVP " (SETCHAR H %X)\n",$cid;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub chars_in_type_prop{
+ %char_width_hash=();
+ for ($j=0; $j<@character; $j++){
+ my ($c0, $c1);
+ $c0=$c1=$character[$j];
+ if (!$ucs) {
+ if (!Encode::from_to($c1,'utf-8','euc-jp', Encode::FB_QUIET)
+ || $c0 eq "〃"
+ || $c0 eq "〆") { next; }
+ }
+ $char_width_hash{$c0}=$charwidth[$i]{$c0}/10;
+ }
+ $x = '-';
+ @uniq_char_width_array = grep( $_ ne $x && ($x = $_), sort values(%char_width_hash));
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ printf JPL "(CHARSINTYPE H %X\n",($j+7);
+ print JPL " ";
+ @char_in_this_type = ();
+ while (($name, $value) = each(%char_width_hash)) {
+ if ($value == $uniq_char_width_array[$j]){
+ push(@char_in_this_type, $name);
+ }
+ }
+ @char_in_this_type = sort @char_in_this_type;
+ foreach $char_in_this(@char_in_this_type){
+ print JPL "$char_in_this ";#character
+ }
+ print JPL "\n";
+ print JPL " )\n";
+ }
+}
+sub print_type_prop{
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ $char_width=$uniq_char_width_array[$j];
+ printf JPL "(TYPE H %X\n", ($j+7);
+ printf JPL " (CHARWD R %f)\n", $char_width;
+ &char_foot_h;
+ }
+}
+
+sub get_charwidth{
+ my ($i,$dvicode)=@_;
+ my ($char,$u,$l);
+
+ if (!$ucs) {
+ if ($dvicode>=0x2474 && $dvicode<=0x2476) {
+ return 0;
+ }
+ $u = ($dvicode >> 8) & 0xFF | 0x80;
+ $l = $dvicode & 0xFF | 0x80;
+ $char = pack("C*",$u,$l);
+ Encode::from_to($char,'euc-jp','utf-8');
+ } else {
+ $u = ($dvicode >> 8) & 0xFF;
+ $l = $dvicode & 0xFF;
+ $char = pack("C*",$u,$l);
+ Encode::from_to($char,'utf-16be','utf-8');
+ }
+ if (!exists($charwidth[$i]{$char})) {
+ return 0;
+ }
+ return ($charwidth[$i]{$char}, $cid{$char});
+}
+
+
+__DATA__
+character cid min_w3 min_w6 goth_w3 goth_w6 maru_w4
+ヽ 15976 7.17 7.46 7.92 8.27 8.13
+ヾ 15977 8.34 8.44 8.46 8.62 8.5
+ゝ 15978 7.77 7.98 8.44 8.69 8.62
+ゞ 15979 8.32 8.54 8.8 8.92 8.98
+ー 15982 9.96 9.98 9.99 9.99 9.98
+ぁ 15985 9.03 9.15 9.01 9.18 9.17
+あ 15986 9.6 9.79 9.6 9.77 9.75
+ぃ 15987 7.75 7.92 8.09 8.4 8.59
+い 15988 8.19 8.47 8.46 8.8 8.83
+ぅ 15989 9.42 9.47 8.97 9.2 9.19
+う 15990 9.98 9.99 9.58 9.8 9.79
+ぇ 15991 8.89 9.12 8.84 9.15 9.05
+え 15992 9.47 9.74 9.42 9.7 9.59
+ぉ 15993 8.65 8.89 8.86 9.06 9.08
+お 15994 9.14 9.48 9.39 9.67 9.61
+か 15995 8.99 9.24 9.26 9.47 9.45
+が 15996 9.1 9.39 9.41 9.67 9.6
+き 15997 9.71 9.93 9.73 9.88 9.82
+ぎ 15998 9.71 9.86 9.8 9.96 9.92
+く 15999 9.99 9.99 9.56 9.77 9.47
+ぐ 16000 9.79 9.98 9.49 9.7 9.5
+け 16001 9.52 9.64 9.54 9.79 9.66
+げ 16002 9.76 9.82 9.56 9.76 9.62
+こ 16003 9.26 9.47 9.38 9.67 9.57
+ご 16004 9.44 9.6 9.23 9.6 9.49
+さ 16005 9.67 9.84 9.67 9.85 9.77
+ざ 16006 9.71 9.85 9.86 9.97 9.95
+し 16007 9.42 9.53 9.38 9.53 9.53
+じ 16008 9.63 9.74 9.71 9.86 9.72
+す 16009 9.39 9.61 9.3 9.55 9.43
+ず 16010 9.61 9.83 9.6 9.84 9.68
+せ 16011 9.18 9.45 9.44 9.7 9.54
+ぜ 16012 9.47 9.66 9.53 9.79 9.63
+そ 16013 9.45 9.66 9.4 9.65 9.57
+ぞ 16014 9.56 9.74 9.43 9.65 9.59
+た 16015 9.23 9.47 9.39 9.59 9.59
+だ 16016 9.48 9.68 9.59 9.81 9.72
+ち 16017 9.61 9.78 9.63 9.81 9.68
+ぢ 16018 9.67 9.8 9.85 9.97 9.92
+っ 16019 7.96 8.04 8.23 8.47 8.6
+つ 16020 8.24 8.42 8.62 8.87 8.98
+づ 16021 8.99 9.15 9.26 9.44 9.42
+て 16022 8.69 8.92 8.89 9.19 9.16
+で 16023 8.76 8.95 8.92 9.19 9.23
+と 16024 9.75 9.89 9.59 9.82 9.65
+ど 16025 9.69 9.89 9.81 9.96 9.93
+な 16026 9.48 9.66 9.48 9.65 9.62
+に 16027 8.95 9.17 9.19 9.42 9.4
+ぬ 16028 8.98 9.23 9.34 9.57 9.49
+ね 16029 9.25 9.54 9.52 9.68 9.62
+の 16030 8.82 8.99 9.02 9.28 9.24
+は 16031 9.28 9.55 9.5 9.75 9.66
+ば 16032 9.57 9.76 9.67 9.82 9.76
+ぱ 16033 9.7 9.82 9.84 9.97 9.92
+ひ 16034 9.19 9.36 9.18 9.4 9.41
+び 16035 9.46 9.64 9.4 9.61 9.61
+ぴ 16036 9.72 9.8 9.71 9.79 9.81
+ふ 16037 9.05 9.39 9.25 9.5 9.46
+ぶ 16038 9.16 9.47 9.29 9.54 9.49
+ぷ 16039 9.15 9.43 9.33 9.53 9.52
+へ 16040 7.21 7.43 7.84 8.2 8.32
+べ 16041 8.13 8.33 8.21 8.52 8.58
+ぺ 16042 8.43 8.58 8.56 8.84 8.78
+ほ 16043 9.23 9.46 9.45 9.71 9.67
+ぼ 16044 9.61 9.74 9.65 9.89 9.79
+ぽ 16045 9.65 9.81 9.7 9.9 9.87
+ま 16046 9.76 9.88 9.57 9.74 9.64
+み 16047 9.17 9.36 9.24 9.48 9.38
+む 16048 9.37 9.58 9.49 9.71 9.64
+め 16049 9.18 9.41 9.38 9.58 9.53
+も 16050 9.76 9.91 9.48 9.68 9.6
+ゃ 16051 8.69 8.83 8.89 9.1 8.99
+や 16052 9.38 9.54 9.52 9.7 9.62
+ゅ 16053 8.73 8.82 8.88 9.08 9.03
+ゆ 16054 9.22 9.4 9.4 9.63 9.58
+ょ 16055 8.95 9.17 9.03 9.28 9.09
+よ 16056 9.63 9.83 9.63 9.82 9.61
+ら 16057 9.66 9.82 9.5 9.74 9.79
+り 16058 9.82 9.85 9.75 9.88 9.79
+る 16059 9.59 9.8 9.55 9.77 9.7
+れ 16060 9.21 9.43 9.4 9.59 9.55
+ろ 16061 9.66 9.79 9.55 9.79 9.73
+ゎ 16062 8.58 8.73 8.71 8.93 8.86
+わ 16063 9.28 9.45 9.38 9.54 9.54
+ゐ 16064 9.37 9.59 9.46 9.68 9.57
+ゑ 16065 9.65 9.82 9.64 9.86 9.8
+を 16066 9.64 9.79 9.62 9.83 9.71
+ん 16067 9.2 9.4 9.32 9.54 9.45
+ァ 16076 8.45 8.5 8.55 8.76 8.92
+ア 16077 8.96 9.2 9.19 9.44 9.41
+ィ 16078 8.81 8.92 8.63 8.88 8.75
+イ 16079 9.29 9.46 9.28 9.48 9.35
+ゥ 16080 8.89 8.93 8.82 9.03 8.94
+ウ 16081 9.38 9.56 9.4 9.59 9.46
+ェ 16082 7.81 8.04 8.33 8.65 8.84
+エ 16083 8.12 8.39 8.77 9.06 9.3
+ォ 16084 8.76 8.84 8.76 8.99 8.9
+オ 16085 9.21 9.41 9.29 9.51 9.38
+カ 16086 9.26 9.48 9.46 9.68 9.52
+ガ 16087 9.27 9.5 9.66 9.79 9.71
+キ 16088 9.25 9.41 9.4 9.6 9.39
+ギ 16089 9.56 9.65 9.78 9.87 9.78
+ク 16090 9.25 9.37 9.33 9.53 9.44
+グ 16091 9.49 9.57 9.39 9.69 9.66
+ケ 16092 9.19 9.32 9.14 9.35 9.37
+ゲ 16093 9.6 9.65 9.47 9.59 9.64
+コ 16094 8.32 8.59 9.13 9.4 9.4
+ゴ 16095 8.83 9.13 9.52 9.78 9.7
+サ 16096 9.17 9.37 9.34 9.53 9.49
+ザ 16097 9.53 9.65 9.39 9.58 9.62
+シ 16098 8.39 8.61 8.88 9.11 9.53
+ジ 16099 9.1 9.21 9.31 9.39 9.84
+ス 16100 8.61 8.85 9 9.3 9.22
+ズ 16101 9.24 9.44 9.44 9.68 9.58
+セ 16102 8.67 8.93 9.17 9.43 9.4
+ゼ 16103 9.26 9.4 9.63 9.78 9.78
+ソ 16104 8.89 9.06 8.98 9.21 9.12
+ゾ 16105 9.52 9.64 9.56 9.63 9.61
+タ 16106 9.31 9.42 9.41 9.6 9.56
+ダ 16107 9.56 9.61 9.53 9.74 9.76
+チ 16108 9.2 9.4 9.14 9.39 9.31
+ヂ 16109 9.35 9.51 9.18 9.4 9.34
+ッ 16110 8.33 8.43 8.55 8.77 8.77
+ツ 16111 8.8 8.97 9.01 9.26 9.2
+ヅ 16112 9.48 9.61 9.5 9.64 9.7
+テ 16113 9.13 9.34 9.28 9.5 9.45
+デ 16114 9.38 9.62 9.27 9.51 9.64
+ト 16115 9.58 9.74 9.35 9.51 9.33
+ド 16116 9.63 9.75 9.45 9.68 9.62
+ナ 16117 9.11 9.35 9.08 9.37 9.31
+ニ 16118 8.01 8.31 8.62 8.93 9.17
+ヌ 16119 9.06 9.33 9.17 9.43 9.44
+ネ 16120 9.45 9.64 9.53 9.73 9.49
+ノ 16121 8.8 9.13 8.77 9.02 8.92
+ハ 16122 7.42 7.65 8.71 9 8.97
+バ 16123 8.16 8.44 8.82 9.07 9.34
+パ 16124 8.55 8.74 9.09 9.23 9.44
+ヒ 16125 8.79 9.06 9.33 9.51 9.46
+ビ 16126 9.2 9.35 9.7 9.83 9.74
+ピ 16127 9.39 9.55 9.83 9.92 9.89
+フ 16128 8.91 9.06 9.01 9.29 9.28
+ブ 16129 9.47 9.63 9.58 9.74 9.61
+プ 16130 9.56 9.67 9.31 9.51 9.72
+ヘ 16131 7.09 7.38 7.79 8.15 8.32
+ベ 16132 8.05 8.32 8.3 8.5 8.59
+ペ 16133 8.35 8.58 8.47 8.85 8.86
+ホ 16134 9.07 9.32 9.47 9.71 9.5
+ボ 16135 9.39 9.58 9.74 9.9 9.8
+ポ 16136 9.64 9.73 9.83 9.98 9.92
+マ 16137 8.1 8.38 8.95 9.19 9.16
+ミ 16138 9.25 9.47 9.25 9.51 9.4
+ム 16139 8.79 9.1 9.19 9.42 9.33
+メ 16140 8.88 9.18 8.95 9.18 9.15
+モ 16141 8.74 9 9.25 9.46 9.47
+ャ 16142 8.52 8.68 8.79 8.94 8.88
+ヤ 16143 8.98 9.19 9.37 9.53 9.41
+ュ 16144 7.76 7.99 8.31 8.62 8.79
+ユ 16145 8.09 8.33 8.7 9.01 9.25
+ョ 16146 8.38 8.55 8.83 9.11 9.19
+ヨ 16147 8.8 9.05 9.38 9.62 9.73
+ラ 16148 9.29 9.47 9.35 9.64 9.61
+リ 16149 9.75 9.89 9.64 9.84 9.69
+ル 16150 8.5 8.83 9.33 9.58 9.42
+レ 16151 8.35 8.71 9 9.18 9.17
+ロ 16152 8.42 8.71 9.23 9.47 9.59
+ヮ 16153 8.56 8.65 8.69 8.91 8.97
+ワ 16154 9.03 9.15 9.21 9.43 9.47
+ヰ 16155 9.35 9.58 9.31 9.59 9.42
+ヱ 16156 8.34 8.65 8.95 9.25 9.41
+ヲ 16157 9.17 9.39 9.27 9.49 9.49
+ン 16158 8.11 8.3 8.51 8.78 8.79
+ヴ 16159 9.47 9.62 9.49 9.69 9.63
+ヵ 16160 8.73 8.9 8.93 9.11 9
+ヶ 16161 8.53 8.64 8.41 8.66 8.69
+〃 15980 8.16 8.40 8.74 8.90 8.88
+〆 15981 8.94 9.09 8.99 9.14 9.04
+ヿ 15983 9.36 9.59 9.59 9.75 9.74
+ゟ 15984 9.81 9.96 9.75 9.82 9.79
+ゔ 16068 9.63 9.72 9.28 9.50 9.50
+ゕ 16069 8.41 8.60 8.61 8.80 8.85
+ゖ 16070 8.90 9.03 8.92 9.13 9.11
+ㇰ 16170 8.65 8.67 8.78 8.94 8.92
+ㇱ 16171 7.86 8.08 8.25 8.46 8.51
+ㇲ 16172 8.22 8.40 8.57 8.80 8.77
+ㇳ 16173 9.01 9.06 8.81 9.03 8.74
+ㇴ 16174 8.51 8.65 8.64 8.94 8.93
+ㇵ 16175 7.14 7.31 8.29 8.56 8.58
+ㇶ 16176 8.29 8.52 8.76 9.00 8.90
+ㇷ 16177 8.42 8.50 8.52 8.75 8.81
+ㇸ 16178 6.79 7.01 7.32 7.65 7.81
+ㇹ 16179 8.57 8.77 8.83 9.04 8.96
+ㇺ 16181 8.34 8.62 8.66 8.90 8.81
+ㇻ 16182 8.80 8.86 8.84 9.09 9.09
+ㇼ 16183 9.13 9.22 8.99 9.23 9.14
+ㇽ 16184 8.02 8.30 8.71 8.97 8.89
+ㇾ 16185 7.89 8.08 8.41 8.66 8.59
+ㇿ 16186 8.11 8.24 8.71 8.98 9.04
+ヷ 16187 9.42 9.66 9.44 9.78 9.75
+ヸ 16188 9.61 9.8 9.73 9.84 9.77
+ヹ 16189 8.94 9.28 9.56 9.80 9.88
+ヺ 16190 9.54 9.71 9.67 9.82 9.74
+end
diff --git a/language/japanese/japanese-otf-uptex/sty/mlutf.sty b/language/japanese/japanese-otf-uptex/sty/mlutf.sty
new file mode 100644
index 0000000000..3cfc9e122e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/sty/mlutf.sty
@@ -0,0 +1,58 @@
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{mlutf}[2004/04/17 v1.1.2 psitau, u0.23 ttk]
+%force catcode of \" be 12
+\count@\catcode`\"
+\catcode`\"=12
+\DeclareRobustCommand{\UTFK}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{utfk}\uppercase{\set@character="#1}%
+ \endgroup%
+}
+\DeclareRobustCommand{\UTFC}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{utfc}\uppercase{\set@character="#1}%
+ \endgroup%
+}
+\DeclareRobustCommand{\UTFT}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{utft}\uppercase{\set@character="#1}%
+ \endgroup%
+}
+\DeclareRobustCommand{\UTFM}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{utf}\uppercase{\set@character="#1}%
+ \endgroup%
+}
+\catcode`\"=\count@
+%end of changing catcode of \"
+\gdef\Redefine@MLUTF{%
+ \@ifpackageloaded{hyperref}{%
+ \def\hyper@UTFC##1{\ifHy@pdfstring\hyper@UTF@{##1}\else\csname UTFC \endcsname{##1}\fi}
+ \def\hyper@UTFK##1{\ifHy@pdfstring\hyper@UTF@{##1}\else\csname UTFK \endcsname{##1}\fi}
+ \def\hyper@UTFT##1{\ifHy@pdfstring\hyper@UTF@{##1}\else\csname UTFT \endcsname{##1}\fi}
+ \def\hyper@UTFM##1{\ifHy@pdfstring\hyper@UTF@{##1}\else\csname UTFM \endcsname{##1}\fi}
+ \def\UTFC{\protect\hyper@UTFC}
+ \def\UTFK{\protect\hyper@UTFK}
+ \def\UTFT{\protect\hyper@UTFT}
+ \def\UTFM{\protect\hyper@UTFM}
+ }{}
+}
+\AtBeginDocument{\Redefine@MLUTF}
+
+\DeclareKanjiFamily{\otf@JYn}{utfk}{}
+\DeclareKanjiFamily{\otf@JTn}{utfk}{}
+\Declare@FontShape{utfk}{m}{0123456789abcdef}{utfkmr}
+\Declare@FontShape{utfk}{bx}{0123456789abcdef}{utfkgr}
+\DeclareKanjiFamily{\otf@JYn}{utfc}{}
+\DeclareKanjiFamily{\otf@JTn}{utfc}{}
+\Declare@FontShape{utfc}{m}{0123456789abcdefklmo}{utfcmr}
+\Declare@FontShape{utfc}{bx}{0123456789abcdefklmo}{utfcgr}
+\DeclareKanjiFamily{\otf@JYn}{utft}{}
+\DeclareKanjiFamily{\otf@JTn}{utft}{}
+\Declare@FontShape{utft}{m}{0123456789abcdefklmnopqrstuvwxz}{utftmr}
+\Declare@FontShape{utft}{bx}{0123456789abcdefklmnopqrstuvwxz}{utftgr}
+\DeclareKanjiFamily{\otf@JYn}{utf}{}
+\DeclareKanjiFamily{\otf@JTn}{utf}{}
+\Declare@FontShape{utf}{m}{0123456789abcdefjklmnopqrstuvwxyz}{utfmr}
+\Declare@FontShape{utf}{bx}{0123456789abcdefjklmnopqrstuvwxyz}{utfgr}
+\endinput
diff --git a/language/japanese/japanese-otf-uptex/sty/otf.sty b/language/japanese/japanese-otf-uptex/sty/otf.sty
new file mode 100644
index 0000000000..fa4decec4b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/sty/otf.sty
@@ -0,0 +1,578 @@
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{otf}[2019/04/01 v1.7b8 psitau, u0.23 ttk]
+\RequirePackage{keyval}
+%for processing options
+\newif\if@kana \@kanafalse
+\newif\if@macro \@macrotrue
+\newif\if@deluxe \@deluxefalse
+\newif\if@replace \@replacetrue
+\newif\if@bold \@boldfalse
+\newif\if@burasage \@burasagefalse
+\newif\if@newglyph \@newglyphfalse
+\newif\if@otf@uplatex \@otf@uplatexfalse
+\newif\if@otf@autodetect \@otf@autodetectfalse
+\newif\if@otf@scale \@otf@scalefalse
+\newif\if@jsclasses \@jsclassesfalse
+
+\DeclareOption{nomacro}{\@macrofalse}
+\DeclareOption{nomacros}{\@macrofalse}
+\DeclareOption{noreplace}{\@replacefalse}
+\DeclareOption{bold}{\@replacetrue\@boldtrue}
+\DeclareOption{expert}{\@replacetrue\@kanatrue}
+\DeclareOption{deluxe}{\@boldfalse\@replacetrue\@deluxetrue}
+\DeclareOption{multi}{\AtEndOfPackage{\RequirePackage{mlutf}\RequirePackage{mlcid}}}
+\DeclareOption{burasage}{\@burasagetrue}
+\DeclareOption{uplatex}{\@otf@uplatextrue}
+\DeclareOption{autodetect-engine}{\@otf@autodetecttrue}
+\DeclareOption{jis2004}{\@newglyphtrue}
+\DeclareOption*{\otfpkg@setkey}
+\def\otfpkg@setkey{\expandafter\otfpkg@setkey@a\expandafter{\CurrentOption}}
+\def\otfpkg@setkey@a{\setkeys{otfpkg}}
+\define@key{otfpkg}{scale}{\@otf@scaletrue\def\utf@sc@le{#1}}
+
+\def\otf@JYn{\if@otf@uplatex JY2\else JY1\fi}
+\def\otf@JTn{\if@otf@uplatex JT2\else JT1\fi}
+\def\otf@OTorT{\if@otf@uplatex T\else OT\fi}
+\def\otf@pfx@{\if@otf@uplatex up\else \fi}
+\def\brsg@pfx@{\if@burasage brsg\else\fi}
+\def\nlck@sfx@{\if@newglyph n\else\fi}
+\ProcessOptions\relax
+
+% Autodetect engine
+\ifnum \ifx\ucs\@undefined\z@\else\ucs"3000 \fi ="3000 %upTeX
+ \if@otf@autodetect
+ \PackageInfo{otf}{Autodetected engine: upLaTeX}
+ \@otf@uplatextrue
+ \fi
+ \if@otf@uplatex\else
+ \PackageError{otf}
+ {You are running upLaTeX.\MessageBreak
+ Please use pLaTeX instead, or add 'uplatex' to\MessageBreak
+ the package option list}
+ {\@ehc}
+ \@otf@uplatextrue
+ \fi
+\else %pTeX
+ \if@otf@autodetect
+ \PackageInfo{otf}{Autodetected engine: pLaTeX}
+ \@otf@uplatexfalse
+ \fi
+ \if@otf@uplatex
+ \PackageError{otf}
+ {You are running pLaTeX.\MessageBreak
+ Please use upLaTeX instead, or remove 'uplatex' from\MessageBreak
+ the package option list}
+ {\@ehc}
+ \@otf@uplatexfalse
+ \fi
+\fi
+%user interface
+%force catcode of \" be 12
+\count@\catcode`\"
+\catcode`\"=12
+\if@deluxe
+ \DeclareRobustCommand{\UTF}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\edef\reserved@b{\mgdefault}%
+ \ifx\k@family\reserved@a \kanjifamily{utfjg}\else\ifx\k@family\reserved@b
+ \kanjifamily{utfjmg}\else\kanjifamily{utfj}\fi\fi%
+ \uppercase{\set@character="#1}%
+ \endgroup%
+ }
+ \DeclareRobustCommand{\CID}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\edef\reserved@b{\mgdefault}%
+ \ifx\k@family\reserved@a \kanjifamily{cidjg}\else\ifx\k@family\reserved@b
+ \kanjifamily{cidjmg}\else\kanjifamily{cidj}\fi\fi%
+ \set@character=#1%
+ \endgroup%
+ }
+\else
+ \DeclareRobustCommand{\UTF}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{utfj}\uppercase{\set@character="#1}%
+ \endgroup%
+ }
+ \DeclareRobustCommand{\CID}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{cidj}\set@character=#1%
+ \endgroup%
+ }
+\fi
+\gdef\Redefine@UTF{\@ifpackageloaded{hyperref}{%
+ \def\hyper@UTF##1{\ifHy@pdfstring\hyper@UTF@{##1}\else\csname UTF \endcsname{##1}\fi}
+ \def\UTF{\protect\hyper@UTF}}{}
+}
+% support surrogate pair in \hyper@UTF@{} by ZR-san
+\def\otf@end{\otf@end@}
+\def\otf@mark{\otf@mark@}
+\def\otf@triexpandafter{%
+ \expandafter\expandafter\expandafter
+}
+\begingroup \catcode`\|=0
+\gdef\otf@cond#1|fi{%
+ #1\expandafter\@firstoftwo
+ |else \expandafter\@secondoftwo
+ |fi
+}
+\endgroup
+\def\otf@next#1#2#3#4#5{%
+ \@namedef{otf@qh/#1#2}{#3}%
+ \@namedef{otf@hq/#3}{#1#2}%
+ \@namedef{otf@lhq/#4#5}{#1#2}%
+}
+\@for\otf@x:={%
+ 00001,01102,02203,03304,10405,11506,12607,13708,%
+ 20809,2190A,22A0B,23B0C,30C0D,31D0E,32E0F,33F10}\do{%
+ \expandafter\otf@next\otf@x
+}
+\def\otf@next#1{%
+ \lowercase{\def\otf@y{#1}}%
+ \@namedef{otf@hd/#1}{#1}%
+ \@namedef{otf@hd/\otf@y}{#1}%
+}
+\@tfor\otf@x:=0123456789ABCDEF\do{%
+ \expandafter\otf@next\otf@x
+}
+\def\hyper@UTF@#1{%
+ \expandafter\otf@hy@utf@pre@a#1\relax{}\otf@mark\otf@end
+}
+\def\otf@hy@utf@pre@a{%
+ \expandafter\otf@hy@utf@pre@b\romannumeral-`>%
+}
+\def\otf@hy@utf@pre@b#1#{%
+ \otf@cond \ifx\otf@end#1\otf@end \fi{%
+ \otf@hy@utf@bombout
+ }{%
+ \otf@hy@utf@pre@c#1%
+ }%
+}
+\def\otf@hy@utf@pre@c#1{%
+ \otf@cond \ifx#1\relax \fi{%
+ \otf@hy@utf@pre@end
+ }{%
+ \otf@triexpandafter\otf@hy@utf@pre@d
+ \csname otf@hd/\string#1\endcsname
+ }%
+}
+\def\otf@hy@utf@pre@d#1{%
+ \otf@cond \ifx#1\relax \fi{%
+ \otf@hy@utf@bombout
+ }{%
+ \otf@hy@utf@pre@e#1%
+ }%
+}
+\def\otf@hy@utf@pre@e#1#2\otf@mark#3\otf@end{%
+ \otf@cond \if 0#1\fi{%
+ \otf@cond \ifx\otf@end#3\otf@end \fi{%
+ \otf@hy@utf@pre@f{#2}{#3}%
+ }{%
+ \otf@hy@utf@pre@f{#2}{#3#1}%
+ }%
+ }{%
+ \otf@hy@utf@pre@f{#2}{#3#1}%
+ }%
+}
+\def\otf@hy@utf@pre@f#1#2{%
+ \otf@hy@utf@pre@a#1\otf@mark#2\otf@end
+}
+\def\otf@hy@utf@pre@end#1\otf@mark#2\otf@end{%
+ \otf@cond \ifx\otf@end#1\otf@end \fi{%
+ \otf@hy@utf@sw{#2}%
+ }{%
+ \otf@hy@utf@error
+ }%
+}
+\def\otf@hy@utf@bombout#1\otf@end{%
+ \otf@hy@utf@error
+}
+
+\def\otf@hy@utf@sw#1{%
+ \otf@cond \ifnum"0#1>"10FFFF \fi{%
+ \otf@hy@utf@error
+ }{%
+ \otf@hy@utf@sw@a{#1}%
+ }%
+}
+\def\otf@hy@utf@sw@a#1{%
+ \otf@cond \ifnum"0#1>"FFFF \fi{%
+ \otf@hy@utf@big#1"000000\otf@end
+ }{%
+ \otf@hy@utf@small#1"0000\otf@end
+ }%
+}
+\def\otf@hy@utf@small#1#2#3#4#5#6\otf@end{%
+ \otf@hy@utf@small@a#1#2#3#4#5\otf@end
+}
+\def\otf@hy@utf@small@a#1"#2\otf@end{%
+ \otf@hy@utf@unit{#2#1}%
+}
+\def\otf@hy@utf@big#1#2#3#4#5#6#7#8\otf@end{%
+ \otf@hy@utf@big@a#1#2#3#4#5#6#7\otf@end
+}
+\def\otf@hy@utf@big@a#1"#2\otf@end{%
+ \otf@hy@utf@big@b#2#1\otf@end
+}
+\def\otf@hy@utf@big@b#1#2#3#4{%
+ \otf@triexpandafter\otf@hy@utf@big@c
+ \csname otf@lhq/#1#2\otf@triexpandafter\endcsname
+ \csname otf@hq/#3\otf@triexpandafter\endcsname
+ \csname otf@hq/#4\endcsname
+}
+\def\otf@hy@utf@big@c#1#2#3#4#5#6{%
+ \otf@triexpandafter\otf@hy@utf@big@d
+ \csname otf@qh/2#1\otf@triexpandafter\endcsname
+ \csname otf@qh/#2#3\otf@triexpandafter\endcsname
+ \csname otf@qh/#4#5\otf@triexpandafter\endcsname
+ \csname otf@qh/3#6\endcsname
+}
+\def\otf@hy@utf@big@d#1#2#3#4#5\otf@end{%
+ \otf@hy@utf@unit{D#1#2#3}%
+ \otf@hy@utf@unit{D#4#5}%
+}
+\def\otf@hy@utf@error{%
+ \otf@hy@utf@unit{FFFD}%
+}
+\def\otf@hy@utf@unit#1{%
+ \0x#1%
+}
+\AtBeginDocument{\Redefine@UTF}
+%internal macros
+%macros by iNOUE Koich!
+\newcommand\set@character{\afterassignment\put@character\@tempcnta}
+\newcommand\put@character{%
+ \@tempcntb=\@tempcnta
+ \divide\@tempcntb by "1000
+ \kanjishape{\ifcase\@tempcntb0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or a\or b\or c\or d\or e\or f\or
+ \or \or \or \or \or \or \or \or \or \or \or g\or \or h\or i\or j\or
+ k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\fi}%
+ \selectfont%
+ \multiply\@tempcntb by "1000
+ \advance\@tempcnta by -\@tempcntb
+ \@tempcntb=\@tempcnta
+ \divide\@tempcntb by "40
+ \multiply\@tempcntb by "C0
+ \advance\@tempcnta by \@tempcntb
+ \if@otf@uplatex
+ \advance\@tempcnta by "113030
+ \char\@tempcnta%
+ \else
+ \advance\@tempcnta by "3030
+ \char\jis\@tempcnta%
+ \fi
+}
+\catcode`\"=\count@
+%end of changing catcode of \"
+\def\Declare@FontShape#1#2#3#4{%
+ \Declare@FontShapeEnc{\otf@JYn}{#1}{#2}{#4}{h}#3\@nil
+ \Declare@FontShapeEnc{\otf@JTn}{#1}{#2}{#4}{v}#3\@nil}
+\def\Declare@FontShapeEnc#1#2#3#4#5#6{\ifx\@nil#6\else
+ \DeclareFontShape{#1}{#2}{#3}{#6}{<->s*[\utf@sc@le]#4#6-#5}{}%
+ \Declare@FontShape@Enc{#1}{#2}{#3}{#4}{#5}\fi}
+\def\Declare@FontShape@Enc#1\fi{\fi\Declare@FontShapeEnc#1}
+\if@otf@scale
+ \relax
+\else
+ \@ifundefined{Cjascale}{%
+ %for jsclasses
+ \@ifclassloaded{jsreport}{\@jsclassestrue}{}
+ \@ifclassloaded{jsarticle}{\@jsclassestrue}{}
+ \@ifclassloaded{jsbook}{\@jsclassestrue}{}
+ \if@jsclasses\def\utf@sc@le{0.92469}\else\def\utf@sc@le{0.962216}\fi
+ }{\edef\utf@sc@le{\Cjascale}}
+\fi
+%definitions of alt-normal font family
+\@ifundefined{if@enablejfam}{%
+ \let\if@jfam@used\iffalse
+}{%
+ \let\if@jfam@used\if@enablejfam
+}
+\if@replace
+ \DeclareErrorKanjiFont{\otf@JYn}{hmc}{m}{n}{10}
+ \DeclareKanjiSubstitution{\otf@JYn}{hmc}{m}{n}
+ \DeclareKanjiSubstitution{\otf@JTn}{hmc}{m}{n}
+ \DeclareKanjiFamily{\otf@JYn}{hmc}{}
+ \DeclareKanjiFamily{\otf@JTn}{hmc}{}
+ \DeclareKanjiFamily{\otf@JYn}{hgt}{}
+ \DeclareKanjiFamily{\otf@JTn}{hgt}{}
+ \DeclareRelationFont{\otf@JYn}{hmc}{m}{}{\otf@OTorT1}{cmr}{m}{}
+ \DeclareRelationFont{\otf@JTn}{hmc}{m}{}{\otf@OTorT1}{cmr}{m}{}
+ \DeclareRelationFont{\otf@JYn}{hmc}{bx}{}{\otf@OTorT1}{cmr}{bx}{}
+ \DeclareRelationFont{\otf@JTn}{hmc}{bx}{}{\otf@OTorT1}{cmr}{bx}{}
+ \if@deluxe
+ \DeclareRelationFont{\otf@JYn}{hgt}{m}{}{\otf@OTorT1}{cmss}{m}{}
+ \DeclareRelationFont{\otf@JTn}{hgt}{m}{}{\otf@OTorT1}{cmss}{m}{}
+ \DeclareRelationFont{\otf@JYn}{hgt}{bx}{}{\otf@OTorT1}{cmss}{bx}{}
+ \DeclareRelationFont{\otf@JTn}{hgt}{bx}{}{\otf@OTorT1}{cmss}{bx}{}
+ \else
+ \DeclareRelationFont{\otf@JYn}{hgt}{m}{}{\otf@OTorT1}{cmr}{bx}{}
+ \DeclareRelationFont{\otf@JTn}{hgt}{m}{}{\otf@OTorT1}{cmr}{bx}{}
+ \DeclareRelationFont{\otf@JYn}{hgt}{bx}{}{\otf@OTorT1}{cmr}{bx}{}
+ \DeclareRelationFont{\otf@JTn}{hgt}{bx}{}{\otf@OTorT1}{cmr}{bx}{}
+ \fi
+ \@ifpackageloaded{jisx0213}{\relax}{\def\mcdefault{hmc}\def\gtdefault{hgt}}
+ \if@jfam@used
+ \if@compatibility\else
+ \DeclareSymbolFont{mincho}{\otf@JYn}{hmc}{m}{n}
+ \DeclareSymbolFontAlphabet{\mathmc}{mincho}
+ \SetSymbolFont{mincho}{bold}{\otf@JYn}{hmc}{bx}{n}
+ \DeclareMathAlphabet{\mathgt}{\otf@JYn}{hgt}{m}{n}
+ \SetMathAlphabet{\mathgt}{bold}{\otf@JYn}{hgt}{bx}{n}
+ \jfam\symmincho
+ \fi
+ \fi
+\fi
+\if@kana
+ \DeclareKanjiFamily{\otf@JYn}{ruby}{}
+ \DeclareKanjiFamily{\otf@JTn}{ruby}{}
+ \newcommand{\rubydefault}{ruby}
+ \if@deluxe
+ \DeclareKanjiFamily{\otf@JYn}{rubyg}{}
+ \DeclareKanjiFamily{\otf@JTn}{rubyg}{}
+ \DeclareRelationFont{\otf@JYn}{rubyg}{m}{}{\otf@OTorT1}{cmss}{m}{}
+ \DeclareRelationFont{\otf@JTn}{rubyg}{m}{}{\otf@OTorT1}{cmss}{m}{}
+ \DeclareRobustCommand\rubyfamily{\edef\reserved@a{\gtdefault}%
+ \edef\reserved@b{\mgdefault}%
+ \ifx\k@family\reserved@a \kanjifamily{rubyg}\else\ifx\k@family\reserved@b
+ \kanjifamily{rubymg}\else \kanjifamily{ruby}\fi\fi%
+ \selectfont}
+ \else
+ \DeclareRobustCommand\rubyfamily{\edef\reserved@a{\gtdefault}%
+ \ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily\rubydefault\selectfont}
+ \fi
+ \AtBeginDocument{\ifx\rubykatuji\@undefined\else\def\rubykatuji{\rubyfamily\tiny}\fi}
+\fi
+%definition of normal font shape
+\if@kana
+ \DeclareFontShape{\otf@JYn}{hmc}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{ruby}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminr-h}{}
+ \DeclareFontShape{\otf@JTn}{ruby}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminr-v}{}
+\else
+ \if@replace
+ \DeclareFontShape{\otf@JYn}{hmc}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlminr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlminr\nlck@sfx@-v}{}
+ \fi
+\fi
+\if@replace\if@deluxe
+ \if@kana
+ \DeclareFontShape{\otf@JYn}{hmc}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminb\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothb\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminb-h}{}
+ \DeclareFontShape{\otf@JTn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminb-v}{}
+ \DeclareFontShape{\otf@JYn}{rubyg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothr-h}{}
+ \DeclareFontShape{\otf@JTn}{rubyg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothr-v}{}
+ \DeclareFontShape{\otf@JYn}{rubyg}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothb-h}{}
+ \DeclareFontShape{\otf@JTn}{rubyg}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothb-v}{}
+ \else
+ \DeclareFontShape{\otf@JYn}{hmc}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlminb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlminb\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothb\nlck@sfx@-v}{}
+ \fi
+\else
+ \if@kana
+ \if@bold
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothb\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothb-h}{}
+ \DeclareFontShape{\otf@JTn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothb-v}{}
+ \else
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothr-h}{}
+ \DeclareFontShape{\otf@JTn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothr-v}{}
+ \fi
+ \else
+ \if@bold
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothb\nlck@sfx@-v}{}
+ \else
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothr\nlck@sfx@-v}{}
+ \fi
+ \fi
+ \DeclareFontShape{\otf@JYn}{hmc}{bx}{n}{<->ssub*hgt/m/n}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{bx}{n}{<->ssub*hgt/m/n}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{bx}{n}{<->ssub*hgt/m/n}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{bx}{n}{<->ssub*hgt/m/n}{}
+\fi\fi
+%definition of extra fonts: maru gothic family, light series, eb series, prop. shape
+\if@deluxe
+ \def\mgdefault{mg}
+ \def\propdefault{prp}
+ \def\ebdefault{eb}
+ \def\ltdefault{l}
+ \DeclareKanjiFamily{\otf@JYn}{mg}{}
+ \DeclareKanjiFamily{\otf@JTn}{mg}{}
+ \DeclareRelationFont{\otf@JYn}{mg}{m}{}{\otf@OTorT1}{cmss}{m}{}
+ \DeclareRelationFont{\otf@JTn}{mg}{m}{}{\otf@OTorT1}{cmss}{m}{}
+ \DeclareMathAlphabet{\mathmg}{\otf@JYn}{mg}{m}{n}
+ \DeclareRobustCommand\mgfamily{\not@math@alphabet\mgfamily\mathmg%
+ \kanjifamily\mgdefault\selectfont}
+ \DeclareTextFontCommand{\textmg}{\mgfamily}
+ \DeclareKanjiFamily{\otf@JYn}{rubymg}{}
+ \DeclareKanjiFamily{\otf@JTn}{rubymg}{}
+ \DeclareRelationFont{\otf@JYn}{rubymg}{m}{}{\otf@OTorT1}{cmss}{m}{}
+ \DeclareRelationFont{\otf@JTn}{rubymg}{m}{}{\otf@OTorT1}{cmss}{m}{}
+ \DeclareRobustCommand\propshape
+ {\not@math@alphabet\propshape\relax
+ \kanjishape\propdefault\selectfont}
+ \DeclareRobustCommand\ebseries
+ {\not@math@alphabet\ebseries\relax
+ \kanjiseries\ebdefault\selectfont}
+ \DeclareRobustCommand\ltseries
+ {\not@math@alphabet\ltseries\relax
+ \kanjiseries\ltdefault\selectfont}
+ \if@kana
+ \DeclareFontShape{\otf@JYn}{mg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expmgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{mg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expmgothr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{rubymg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubymgothr-h}{}
+ \DeclareFontShape{\otf@JTn}{rubymg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubymgothr-v}{}
+ \DeclareFontShape{\otf@JYn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminl\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminl\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{eb}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgotheb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{eb}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgotheb\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{ruby}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminl-h}{}
+ \DeclareFontShape{\otf@JTn}{ruby}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminl-v}{}
+ \else
+ \DeclareFontShape{\otf@JYn}{mg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlmgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{mg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlmgothr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ nmlminl\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ nmlminl\nlck@sfx@-v}{}
+ \fi
+ \DeclareFontShape{\otf@JYn}{hgt}{eb}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgotheb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{eb}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgotheb\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hmc}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiraminw3-h}{}
+ \DeclareFontShape{\otf@JYn}{hmc}{bx}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiraminw6-h}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phirakakuw3-h}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{bx}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phirakakuw6-h}{}
+ \DeclareFontShape{\otf@JYn}{mg}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiramaruw4-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiraminw3-v}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{bx}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiraminw6-v}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phirakakuw3-v}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{bx}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phirakakuw6-v}{}
+ \DeclareFontShape{\otf@JTn}{mg}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiramaruw4-v}{}
+\fi
+%definition of normal utf/cid fonts
+\DeclareKanjiFamily{\otf@JYn}{utfj}{}
+\DeclareKanjiFamily{\otf@JTn}{utfj}{}
+\DeclareKanjiFamily{\otf@JYn}{cidj}{}
+\DeclareKanjiFamily{\otf@JTn}{cidj}{}
+\Declare@FontShape{utfj}{m}{0123456789abcdefjklmnopqrstuvxyz}{utfjmr\nlck@sfx@}
+\Declare@FontShape{cidj}{m}{012345}{cidjmr}
+%definition of other utf/cid fonts
+\if@deluxe
+ \Declare@FontShape{utfj}{bx}{0123456789abcdefjklmnopqrstuvxyz}{utfjmb\nlck@sfx@}
+ \Declare@FontShape{cidj}{bx}{012345}{cidjmb}
+ \DeclareKanjiFamily{\otf@JYn}{utfjg}{}
+ \DeclareKanjiFamily{\otf@JTn}{utfjg}{}
+ \DeclareKanjiFamily{\otf@JYn}{cidjg}{}
+ \DeclareKanjiFamily{\otf@JTn}{cidjg}{}
+ \Declare@FontShape{utfjg}{m}{0123456789abcdefjklmnopqrstuvxyz}{utfjgr\nlck@sfx@}
+ \Declare@FontShape{cidjg}{m}{012345}{cidjgr}
+ \Declare@FontShape{utfjg}{bx}{0123456789abcdefjklmnopqrstuvxyz}{utfjgb\nlck@sfx@}
+ \Declare@FontShape{cidjg}{bx}{012345}{cidjgb}
+ \Declare@FontShape{utfjg}{eb}{0123456789abcdefjklmnopqrstuvxyz}{utfjge\nlck@sfx@}
+ \Declare@FontShape{cidjg}{eb}{012345}{cidjge}
+ \DeclareKanjiFamily{\otf@JYn}{utfjmg}{}
+ \DeclareKanjiFamily{\otf@JTn}{utfjmg}{}
+ \DeclareKanjiFamily{\otf@JYn}{cidjmg}{}
+ \DeclareKanjiFamily{\otf@JTn}{cidjmg}{}
+ \Declare@FontShape{utfjmg}{m}{0123456789abcdefjklmnopqrstuvxyz}{utfjmgr\nlck@sfx@}
+ \Declare@FontShape{cidjmg}{m}{012345}{cidjmgr}
+ \Declare@FontShape{utfj}{l}{0123456789abcdefjklmnopqrstuvxyz}{utfjml\nlck@sfx@}
+ \Declare@FontShape{cidj}{l}{012345}{cidjml}
+\else
+ \if@bold
+ \Declare@FontShape{utfj}{bx}{0123456789abcdefjklmnopqrstuvxyz}{utfjgb\nlck@sfx@}
+ \Declare@FontShape{cidj}{bx}{012345}{cidjgb}
+ \else
+ \Declare@FontShape{utfj}{bx}{0123456789abcdefjklmnopqrstuvxyz}{utfjgr\nlck@sfx@}
+ \Declare@FontShape{cidj}{bx}{012345}{cidjgr}
+ \fi
+\fi
+\if@macro
+ %input ajmacros.sty
+ \IfFileExists{ajmacros.sty}{\RequirePackage{ajmacros}}{\PackageError{otf}{No File ajmacros.sty!}{}}%2003/03/12
+ %for literature
+ \DeclareRobustCommand\ajKunoji{\iftdir\mbox{\UTF{3033}\UTF{3035}}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \DeclareRobustCommand\ajKunojiwithBou{\iftdir\mbox{\bou{\mbox{\UTF{3033}}}\bou{\mbox{\UTF{3035}}}}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \DeclareRobustCommand\ajDKunoji{\iftdir\mbox{\UTF{3034}\UTF{3035}}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \DeclareRobustCommand\ajDKunojiwithBou{\iftdir\mbox{\bou{\mbox{\UTF{3034}}}\bou{\mbox{\UTF{3035}}}}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \newcommand\ajNinoji{\CID{12106}}
+ \newcommand\ajvarNinoji{\iftdir\CID{12107}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \newcommand\ajYusuriten{\iftdir\CID{16193}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \newcommand\ajMasu{\UTF{303c}}
+ \newcommand\ajYori{\UTF{309f}}
+ \newcommand\ajKoto{\UTF{30ff}}
+ \newcommand\ajUta{\UTF{303d}}
+ %dingbats
+ \newcommand\ajCommandKey{\UTF{2318}}
+ \newcommand\ajReturnKey{\UTF{23ce}}
+ \newcommand\ajCheckmark{\UTF{2713}}
+ \newcommand\ajVisibleSpace{\UTF{2423}}
+ \newcommand\ajSenteMark{\UTF{2617}}
+ \newcommand\ajGoteMark{\UTF{2616}}
+ \newcommand\ajClub{\UTF{2663}}
+ \newcommand\ajHeart{\UTF{2661}}
+ \newcommand\ajSpade{\UTF{2660}}
+ \newcommand\ajDiamond{\UTF{2662}}
+ \newcommand\ajvarClub{\UTF{2667}}
+ \newcommand\ajvarHeart{\UTF{2665}}
+ \newcommand\ajvarSpade{\UTF{2664}}
+ \newcommand\ajvarDiamond{\UTF{2666}}
+ \newcommand\ajPhone{\UTF{260e}}
+ \newcommand\ajPostal{\UTF{3020}}
+ \newcommand\ajvarPostal{\UTF{3036}}
+ \newcommand\ajSun{\UTF{2600}}
+ \newcommand\ajCloud{\UTF{2601}}
+ \newcommand\ajUmbrella{\UTF{2602}}
+ \newcommand\ajSnowman{\UTF{2603}}
+ \newcommand\ajJIS{\UTF{3004}}
+ \newcommand\ajJAS{\CID{12088}}
+ \newcommand\ajBall{\CID{12097}}
+ \newcommand\ajHotSpring{\UTF{2668}}
+ \newcommand\ajWhiteSesame{\UTF{fe46}}
+ \newcommand\ajBlackSesame{\UTF{fe45}}
+ \newcommand\ajWhiteFlorette{\UTF{2740}}
+ \newcommand\ajBlackFlorette{\UTF{273f}}
+ \newcommand\ajRightBArrow{\CID{8206}}
+ \newcommand\ajLeftBArrow{\CID{8207}}
+ \newcommand\ajUpBArrow{\CID{8208}}
+ \newcommand\ajDownBArrow{\CID{8209}}
+ \newcommand\ajRightHand{\CID{8219}}
+ \newcommand\ajLeftHand{\CID{8220}}
+ \newcommand\ajUpHand{\CID{8221}}
+ \newcommand\ajDownHand{\CID{8222}}
+ \newcommand\ajRightScissors{\CID{12176}}
+ \newcommand\ajLeftScissors{\CID{12175}}
+ \newcommand\ajUpScissors{\CID{12177}}
+ \newcommand\ajDownScissors{\CID{12178}}
+ \newcommand\ajRightWArrow{\CID{12197}}
+ \newcommand\ajLeftWArrow{\CID{12196}}
+ \newcommand\ajUpWArrow{\CID{12198}}
+ \newcommand\ajDownWArrow{\CID{12199}}
+ \newcommand\ajRightDownArrow{\CID{12202}}
+ \newcommand\ajLeftDownArrow{\CID{12203}}
+ \newcommand\ajLeftUpArrow{\CID{12204}}
+ \newcommand\ajRightUpArrow{\CID{12205}}
+\fi
+\endinput
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/Makefile b/language/japanese/japanese-otf-uptex/test/uplatex/Makefile
new file mode 100644
index 0000000000..78974e127f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/Makefile
@@ -0,0 +1,192 @@
+UPTEX = uptex
+PTEX = ptex
+UPLATEX = uplatex
+PLATEX = platex -kanji=utf8
+DVIPS = dvips
+DVIPDFMX = dvipdfmx
+PDVITYPE = pdvitype
+
+all: otf sp art bsrg jis04 scale prop punct exclam
+
+otf: uplatex-otf platex-otf
+sp: uplatex-sp platex-sp
+art: uplatex-article platex-article
+brsg: uplatex-brsg platex-brsg
+jis04: uplatex-jis04 platex-jis04
+scale: uplatex-scale platex-scale
+prop: uplatex-prop platex-prop
+exclam: uplatex-exclam platex-exclam
+
+uplatex-otf:
+ for opt in default deluxe expert bold noreplace; do \
+ $(UPLATEX) "\def\option{$$opt}\def\class{ujarticle}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-h-uplatex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-h-uplatex.dvi ; \
+ $(UPLATEX) "\def\option{$$opt}\def\class{utarticle}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-v-uplatex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-v-uplatex.dvi ; \
+ done
+
+platex-otf:
+ for opt in default deluxe expert bold noreplace; do \
+ $(PLATEX) "\def\option{$$opt}\def\class{jarticle}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-h-platex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-h-platex.dvi ; \
+ $(PLATEX) "\def\option{$$opt}\def\class{tarticle}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-v-platex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-v-platex.dvi ; \
+ done
+
+uplatex-sp:
+ for opt in default deluxe expert bold noreplace; do \
+ $(UPLATEX) "\def\option{$$opt}\def\class{ujarticle}\input" uotf-sp-utf8.tex ; \
+ mv uotf-sp-utf8.dvi uotf-sp-$$opt-h-uplatex.dvi ; \
+ $(DVIPDFMX) uotf-sp-$$opt-h-uplatex.dvi ; \
+ $(UPLATEX) "\def\option{$$opt}\def\class{utarticle}\input" uotf-sp-utf8.tex ; \
+ mv uotf-sp-utf8.dvi uotf-sp-$$opt-v-uplatex.dvi ; \
+ $(DVIPDFMX) uotf-sp-$$opt-v-uplatex.dvi ; \
+ done
+
+platex-sp:
+ for opt in default deluxe expert bold noreplace; do \
+ $(PLATEX) "\def\option{$$opt}\def\class{jarticle}\input" uotf-sp-utf8.tex ; \
+ mv uotf-sp-utf8.dvi uotf-sp-$$opt-h-platex.dvi ; \
+ $(DVIPDFMX) uotf-sp-$$opt-h-platex.dvi ; \
+ $(PLATEX) "\def\option{$$opt}\def\class{tarticle}\input" uotf-sp-utf8.tex ; \
+ mv uotf-sp-utf8.dvi uotf-sp-$$opt-v-platex.dvi ; \
+ $(DVIPDFMX) uotf-sp-$$opt-v-platex.dvi ; \
+ done
+
+uplatex-article:
+ for opt in noreplace; do \
+ $(UPLATEX) "\def\option{$$opt}\def\class{article}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-a-uplatex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-a-uplatex.dvi ; \
+ done
+
+platex-article:
+ for opt in noreplace; do \
+ $(PLATEX) "\def\option{$$opt}\def\class{article}\input" uotftest-utf8.tex ; \
+ mv uotftest-utf8.dvi uotftest-$$opt-a-platex.dvi ; \
+ $(DVIPDFMX) uotftest-$$opt-a-platex.dvi ; \
+ done
+
+uplatex-brsg:
+ for opt in default expert; do \
+ for burasage in br oi; do \
+ $(UPLATEX) "\def\option{$$opt}\def\burasage{$$burasage}\def\class{ujbook}\input" upbrsgtest.tex ; \
+ mv upbrsgtest.dvi upbrsgtest-$$opt-$$burasage-h-uplatex.dvi ; \
+ $(DVIPDFMX) upbrsgtest-$$opt-$$burasage-h-uplatex.dvi ; \
+ $(UPLATEX) "\def\option{$$opt}\def\burasage{$$burasage}\def\class{utbook}\input" upbrsgtest.tex ; \
+ mv upbrsgtest.dvi upbrsgtest-$$opt-$$burasage-v-uplatex.dvi ; \
+ $(DVIPDFMX) upbrsgtest-$$opt-$$burasage-v-uplatex.dvi ; \
+ done \
+ done
+
+platex-brsg:
+ for opt in default expert; do \
+ for burasage in br oi; do \
+ $(PLATEX) "\def\option{$$opt}\def\burasage{$$burasage}\def\class{jbook}\input" upbrsgtest.tex ; \
+ mv upbrsgtest.dvi upbrsgtest-$$opt-$$burasage-h-platex.dvi ; \
+ $(DVIPDFMX) upbrsgtest-$$opt-$$burasage-h-platex.dvi ; \
+ $(PLATEX) "\def\option{$$opt}\def\burasage{$$burasage}\def\class{tbook}\input" upbrsgtest.tex ; \
+ mv upbrsgtest.dvi upbrsgtest-$$opt-$$burasage-v-platex.dvi ; \
+ $(DVIPDFMX) upbrsgtest-$$opt-$$burasage-v-platex.dvi ; \
+ done \
+ done
+
+uplatex-jis04:
+ for opt in default expert; do \
+ for brsg in br oi; do \
+ for jis in 00 04; do \
+ $(UPLATEX) "\def\option{$$opt}\def\burasage{$$brsg}\def\jisvar{$$jis}\def\class{ujarticle}\input" upjis2004.tex ; \
+ mv upjis2004.dvi upjis2004-$$opt-$$brsg-$$jis-h-uplatex.dvi ; \
+ $(DVIPDFMX) upjis2004-$$opt-$$brsg-$$jis-h-uplatex.dvi ; \
+ $(UPLATEX) "\def\option{$$opt}\def\burasage{$$brsg}\def\jisvar{$$jis}\def\class{utarticle}\input" upjis2004.tex ; \
+ mv upjis2004.dvi upjis2004-$$opt-$$brsg-$$jis-v-uplatex.dvi ; \
+ $(DVIPDFMX) upjis2004-$$opt-$$brsg-$$jis-v-uplatex.dvi ; \
+ done \
+ done \
+ done
+
+platex-jis04:
+ for opt in default expert; do \
+ for brsg in br oi; do \
+ for jis in 00 04; do \
+ $(PLATEX) "\def\option{$$opt}\def\burasage{$$brsg}\def\jisvar{$$jis}\def\class{jarticle}\input" upjis2004.tex ; \
+ mv upjis2004.dvi upjis2004-$$opt-$$brsg-$$jis-h-platex.dvi ; \
+ $(DVIPDFMX) upjis2004-$$opt-$$brsg-$$jis-h-platex.dvi ; \
+ $(PLATEX) "\def\option{$$opt}\def\burasage{$$brsg}\def\jisvar{$$jis}\def\class{tarticle}\input" upjis2004.tex ; \
+ mv upjis2004.dvi upjis2004-$$opt-$$brsg-$$jis-v-platex.dvi ; \
+ $(DVIPDFMX) upjis2004-$$opt-$$brsg-$$jis-v-platex.dvi ; \
+ done \
+ done \
+ done
+
+uplatex-scale:
+ for scl in default 0.5 1.0 1.5 2.0; do \
+ $(UPLATEX) "\def\scale{$$scl}\def\class{ujarticle}\input" otfscale.tex ; \
+ mv otfscale.dvi otfscale-$$scl-uplatex.dvi ; \
+ $(DVIPDFMX) otfscale-$$scl-uplatex.dvi ; \
+ done
+ for scl in default 1.0; do \
+ $(UPLATEX) "\def\scale{$$scl}\def\class{jsarticle}\input" otfscale.tex ; \
+ mv otfscale.dvi otfscale-$$scl-js-uplatex.dvi ; \
+ $(DVIPDFMX) otfscale-$$scl-js-uplatex.dvi ; \
+ done
+
+platex-scale:
+ for scl in default 0.5 1.0 1.5 2.0; do \
+ $(PLATEX) "\def\scale{$$scl}\def\class{jarticle}\input" otfscale.tex ; \
+ mv otfscale.dvi otfscale-$$scl-platex.dvi ; \
+ $(DVIPDFMX) otfscale-$$scl-platex.dvi ; \
+ done
+ for scl in default 1.0; do \
+ $(PLATEX) "\def\scale{$$scl}\def\class{jsarticle}\input" otfscale.tex ; \
+ mv otfscale.dvi otfscale-$$scl-js-platex.dvi ; \
+ $(DVIPDFMX) otfscale-$$scl-js-platex.dvi ; \
+ done
+
+uplatex-prop:
+ for test in 1 2; do \
+ $(UPLATEX) "\def\class{ujarticle}\input" upkanatest$$test.tex ; \
+ mv upkanatest$$test.dvi upkanatest$$test-h-uplatex.dvi ; \
+ $(DVIPDFMX) upkanatest$$test-h-uplatex.dvi ; \
+ $(UPLATEX) "\def\class{utarticle}\input" upkanatest$$test.tex ; \
+ mv upkanatest$$test.dvi upkanatest$$test-v-uplatex.dvi ; \
+ $(DVIPDFMX) -l upkanatest$$test-v-uplatex.dvi ; \
+ done
+
+platex-prop:
+ for test in 1 2; do \
+ $(PLATEX) "\def\class{jarticle}\input" upkanatest$$test.tex ; \
+ mv upkanatest$$test.dvi upkanatest$$test-h-platex.dvi ; \
+ $(DVIPDFMX) upkanatest$$test-h-platex.dvi ; \
+ $(PLATEX) "\def\class{tarticle}\input" upkanatest$$test.tex ; \
+ mv upkanatest$$test.dvi upkanatest$$test-v-platex.dvi ; \
+ $(DVIPDFMX) -l upkanatest$$test-v-platex.dvi ; \
+ done
+
+punct:
+ for opt in default deluxe expert bold noreplace; do \
+ $(UPLATEX) "\def\option{$$opt}\input" punctuation.tex ; \
+ mv punctuation.dvi punctuation-$$opt.dvi ; \
+ $(DVIPDFMX) punctuation-$$opt.dvi ; \
+ done
+
+uplatex-exclam:
+ for opt in default deluxe noreplace; do \
+ $(UPLATEX) "\def\option{$$opt}\input" exclam.tex ; \
+ mv exclam.dvi exclam-$$opt-uplatex.dvi ; \
+ $(DVIPDFMX) exclam-$$opt-uplatex.dvi ; \
+ done
+
+platex-exclam:
+ for opt in default deluxe noreplace; do \
+ $(PLATEX) "\def\option{$$opt}\input" exclam.tex ; \
+ mv exclam.dvi exclam-$$opt-platex.dvi ; \
+ $(DVIPDFMX) exclam-$$opt-platex.dvi ; \
+ done
+
+clean:
+ rm -f *.aux *.log *.dvi *.pdf
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/era.tex b/language/japanese/japanese-otf-uptex/test/uplatex/era.tex
new file mode 100644
index 0000000000..65be6c5245
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/era.tex
@@ -0,0 +1,111 @@
+% -*- coding: utf-8 -*-
+
+%%%%%%%%
+% ①,②,③,④,⑤,⑥ のどれかを実行すればよい。
+% ① platex, 新元号なし
+% $ platex era.tex
+% ② uplatex, 新元号なし
+% $ uplatex era.tex
+% ③ platex, 新元号あり
+% $ platex "\def\era{true}\input" era.tex
+% ④ uplatex, 新元号あり
+% $ uplatex "\def\era{true}\input" era.tex
+% ⑤ platex, 新元号あり、\ajLig{令和}も含む
+% $ platex "\def\era{full}\input" era.tex
+% ⑥ uplatex, 新元号あり、\ajLig{令和}も含む
+% $ uplatex "\def\era{full}\input" era.tex
+%%%%%%
+
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@full{full}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\engine{upLaTeX}
+ \else
+ \def\engine{pLaTeX}
+ \fi
+\fi
+
+\newif\ifnewera\newerafalse
+\ifx\era\@undefined
+ \edef\era{なし}
+\else
+ \neweratrue
+ \ifx\era\@full
+ \def\ligNewEra{\ajLig{令和}}
+ \edef\era{あり (ajLigも含む)}
+ \else
+ \def\ligNewEra{\relax}
+ \edef\era{あり}
+ \fi
+\fi
+\typeout{## 新元号:\era ##}
+
+\documentclass[a4paper,draft,autodetect-engine]{jsarticle}
+
+\usepackage{plext}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+\edef\bs{$\backslash$\kern0em}
+
+\begin{document}
+\parindent0pt
+
+エンジン:\texttt{\engine}\\
+オプション:\texttt{\option}\\
+新元号:\era
+
+\vskip1zh
+
+\bs{}ajLig: \ajLig{明治}\ajLig{大正}\ajLig{昭和}\ajLig{平成}\ifnewera\ligNewEra\fi
+
+\bs{}UTF: \UTF{337E}\UTF{337D}\UTF{337C}\UTF{337B}\ifnewera\UTF{32FF}\fi
+
+\bs{}CID: \CID{7621}\CID{7622}\CID{7623}\CID{8323}\ifnewera\CID{23058}\fi
+
+\ifuptexmode
+
+UTF-8: ㍾㍽㍼㍻\ifnewera ㋿\fi
+
+\bs{}kchar: \kchar"337E\kchar"337D\kchar"337C\kchar"337B\ifnewera\kchar"32FF\fi
+
+\fi
+
+\vskip1zh
+
+\parbox<t>{25.0zw}{
+
+\bs{}ajLig: \ajLig{明治}\ajLig{大正}\ajLig{昭和}\ajLig{平成}\ifnewera\ligNewEra\fi
+
+\bs{}UTF: \UTF{337E}\UTF{337D}\UTF{337C}\UTF{337B}\ifnewera\UTF{32FF}\fi
+
+\bs{}CID: \CID{12041}\CID{12042}\CID{12043}\CID{12044}\ifnewera\CID{23059}\fi
+
+\ifuptexmode
+
+UTF-8: ㍾㍽㍼㍻\ifnewera ㋿\fi
+
+\bs{}kchar: \kchar"337E\kchar"337D\kchar"337C\kchar"337B\ifnewera\kchar"32FF\fi
+
+\fi
+
+}
+
+\end{document}
+
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/exclam.tex b/language/japanese/japanese-otf-uptex/test/uplatex/exclam.tex
new file mode 100644
index 0000000000..2f8f1c3818
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/exclam.tex
@@ -0,0 +1,133 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+
+\documentclass[a4paper,draft]{\class}
+
+\usepackage{plext}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+
+\begin{document}
+\parindent0pt
+
+クラス:\texttt{\class}\\
+オプション:\texttt{\option}
+
+\vskip1zh
+
+あっ!あっ?ああ!ああ?驚いた。\\
+あっ! あっ? ああ! ああ? 驚いた。\\
+あっ!あっ?と驚き、ああ!ああ?と嘆く。\\
+あっ!\inhibitglue あっ?\inhibitglue と驚き、
+ああ!\inhibitglue ああ?\inhibitglue と嘆く。\\
+あっ\,!\inhibitglue\,あっ\,?\inhibitglue\,と驚き、
+ああ\,!\inhibitglue\,ああ\,?\inhibitglue\,と嘆く。\\
+あっ!\<あっ?\<と驚き、
+ああ!\<ああ?\<と嘆く。\\
+あっ\,!\<\,あっ\,?\<\,と驚き、
+ああ\,!\<\,ああ\,?\<\,と嘆く。
+
+\ifuptexmode
+
+あっ‼あっ⁇ああ‼ああ⁇驚いた。\\
+あっ‼ あっ⁇ ああ‼ ああ⁇ 驚いた。\\
+あっ‼あっ⁇と驚き、ああ‼ああ⁇と嘆く。\\
+あっ‼\inhibitglue あっ⁇\inhibitglue と驚き、
+ああ‼\inhibitglue ああ⁇\inhibitglue と嘆く。\\
+あっ\,‼\inhibitglue\,あっ\,⁇\inhibitglue\,と驚き、
+ああ\,‼\inhibitglue\,ああ\,⁇\inhibitglue\,と嘆く。\\
+あっ‼\<あっ⁇\<と驚き、
+ああ‼\<ああ⁇\<と嘆く。\\
+あっ\,‼\<\,あっ\,⁇\<\,と驚き、
+ああ\,‼\<\,ああ\,⁇\<\,と嘆く。
+
+あっ⁈あっ⁉ああ⁈ああ⁉驚いた。\\
+あっ⁈ あっ⁉ ああ⁈ ああ⁉ 驚いた。\\
+あっ⁈あっ⁉と驚き、ああ⁈ああ⁉と嘆く。\\
+あっ⁈\inhibitglue あっ⁉\inhibitglue と驚き、
+ああ⁈\inhibitglue ああ⁉\inhibitglue と嘆く。\\
+あっ\,⁈\inhibitglue\,あっ\,⁉\inhibitglue\,と驚き、
+ああ\,⁈\inhibitglue\,ああ\,⁉\inhibitglue\,と嘆く。\\
+あっ⁈\<あっ⁉\<と驚き、
+ああ⁈\<ああ⁉\<と嘆く。\\
+あっ\,⁈\<\,あっ\,⁉\<\,と驚き、
+ああ\,⁈\<\,ああ\,⁉\<\,と嘆く。
+
+\fi
+
+\vskip1zh
+
+\parbox<t>{25.0zw}{
+
+あっ!あっ?ああ!ああ?驚いた。\\
+あっ! あっ? ああ! ああ? 驚いた。\\
+あっ!あっ?と驚き、ああ!ああ?と嘆く。\\
+あっ!\inhibitglue あっ?\inhibitglue と驚き、
+ああ!\inhibitglue ああ?\inhibitglue と嘆く。\\
+あっ\,!\inhibitglue\,あっ\,?\inhibitglue\,と驚き、
+ああ\,!\inhibitglue\,ああ\,?\inhibitglue\,と嘆く。\\
+あっ!\<あっ?\<と驚き、
+ああ!\<ああ?\<と嘆く。\\
+あっ\,!\<\,あっ\,?\<\,と驚き、
+ああ\,!\<\,ああ\,?\<\,と嘆く。
+
+\ifuptexmode
+
+あっ‼あっ⁇ああ‼ああ⁇驚いた。\\
+あっ‼ あっ⁇ ああ‼ ああ⁇ 驚いた。\\
+あっ‼あっ⁇と驚き、ああ‼ああ⁇と嘆く。\\
+あっ‼\inhibitglue あっ⁇\inhibitglue と驚き、
+ああ‼\inhibitglue ああ⁇\inhibitglue と嘆く。\\
+あっ\,‼\inhibitglue\,あっ\,⁇\inhibitglue\,と驚き、
+ああ\,‼\inhibitglue\,ああ\,⁇\inhibitglue\,と嘆く。\\
+あっ‼\<あっ⁇\<と驚き、
+ああ‼\<ああ⁇\<と嘆く。\\
+あっ\,‼\<\,あっ\,⁇\<\,と驚き、
+ああ\,‼\<\,ああ\,⁇\<\,と嘆く。
+
+あっ⁈あっ⁉ああ⁈ああ⁉驚いた。\\
+あっ⁈ あっ⁉ ああ⁈ ああ⁉ 驚いた。\\
+あっ⁈あっ⁉と驚き、ああ⁈ああ⁉と嘆く。\\
+あっ⁈\inhibitglue あっ⁉\inhibitglue と驚き、
+ああ⁈\inhibitglue ああ⁉\inhibitglue と嘆く。\\
+あっ\,⁈\inhibitglue\,あっ\,⁉\inhibitglue\,と驚き、
+ああ\,⁈\inhibitglue\,ああ\,⁉\inhibitglue\,と嘆く。\\
+あっ⁈\<あっ⁉\<と驚き、
+ああ⁈\<ああ⁉\<と嘆く。\\
+あっ\,⁈\<\,あっ\,⁉\<\,と驚き、
+ああ\,⁈\<\,ああ\,⁉\<\,と嘆く。
+
+\fi
+
+}
+
+\end{document}
+
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/otfscale.tex b/language/japanese/japanese-otf-uptex/test/uplatex/otfscale.tex
new file mode 100644
index 0000000000..49d42eb177
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/otfscale.tex
@@ -0,0 +1,69 @@
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+\def\@tarticle{tarticle}
+\def\@op@cls{}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\scale\@undefined
+ \edef\scale{default}
+\else
+ \ifx\scale\@default
+ \else
+ \edef\@opt@{scale=\scale,\@opt@}
+ \fi
+\fi
+\typeout{## scale: \scale ##}
+
+\ifx\class\@undefined
+ \def\class{jarticle}
+\fi
+\ifx\class\@jarticle
+\else
+ \ifx\class\@tarticle
+ \else
+ \ifnum\jis"2121="3000
+ \edef\@opt@{uplatex,\@opt@}
+ \def\@op@cls{,uplatex}
+ \else
+ \fi
+ \fi
+\fi
+
+\documentclass[a4paper,titlepage,draft\@op@cls]{\class}
+
+\usepackage[\@opt@]{otf}
+\usepackage{color}
+\newcommand{\redframe}[1]{%
+ \textcolor{red}{\frame{\textcolor{black}{#1}}}}
+
+\begin{document}
+\section{見出し}
+
+クラス:\texttt{\class}\\
+オプション:\texttt{\option}\\
+スケール:\texttt{\scale}
+
+\parindent0mm
+\xkanjiskip=0pt plus.1pt minus.1pt
+
+\vbox{\tate
+\hbox{\Large \redframe{HMH}\redframe{回□回}\redframe{HMH}\redframe{回□回}\redframe{HMH}}
+\hbox{\Large HMH回□回HMH回□回HMH}
+}
+
+\vbox{\yoko
+\hbox{\Large \redframe{HMH}\redframe{回□回}\redframe{HMH}\redframe{回□回}\redframe{HMH}}
+\hbox{\Large HMH回□回HMH回□回HMH}
+}
+
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/paren0.tex b/language/japanese/japanese-otf-uptex/test/uplatex/paren0.tex
new file mode 100644
index 0000000000..e12e947fc8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/paren0.tex
@@ -0,0 +1,45 @@
+% -*- coding: utf-8 -*-
+
+%\Bracket{«}{»} \BracketUCS{00AB}{00BB}\\% Adobe-Japan1-6には和文用グリフがない
+\Bracket{‘}{’} \BracketUCS{2018}{2019}\\
+\Bracket{“}{”} \BracketUCS{201C}{201D}\\
+\Bracket{〈}{〉} \BracketUCS{2329}{232A}\\
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300C}{300D}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+\Bracket{〖}{〗} \BracketUCS{3016}{3017}\\
+\Bracket{〘}{〙} \BracketUCS{3018}{3019}\\
+%\Bracket{〚}{〛} \BracketUCS{301A}{301B}\\% Adobe-Japan1-6には無い
+\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\% 日本では標準的ではない
+\Bracket{〝}{〟} \BracketUCS{301D}{301F}\\
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+\Bracket{⦅}{⦆} \BracketUCS{FF5F}{FF60}\\
+
+\parbox<t>{21.0zw}{
+
+%\Bracket{«}{»} \BracketUCS{00AB}{00BB}\\% Adobe-Japan1-6には和文用グリフがない
+%\Bracket{‘}{’} \BracketUCS{2018}{2019}\\% 標準的ではない
+%\Bracket{“}{”} \BracketUCS{201C}{201D}\\% 標準的ではない
+%\Bracket{〈}{〉} \BracketUCS{2329}{232A}\\% 標準的ではない
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300C}{300D}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+\Bracket{〖}{〗} \BracketUCS{3016}{3017}\\
+\Bracket{〘}{〙} \BracketUCS{3018}{3019}\\
+%\Bracket{〚}{〛} \BracketUCS{301A}{301B}\\% Adobe-Japan1-6には無い
+\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\% 日本では標準的ではない。UniJISup-UTF16-Vでは割り当てた。
+\Bracket{〝}{〟} \BracketUCS{301D}{301F}\\
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+\Bracket{⦅}{⦆} \BracketUCS{FF5F}{FF60}\\
+
+}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/punct0.tex b/language/japanese/japanese-otf-uptex/test/uplatex/punct0.tex
new file mode 100644
index 0000000000..1d46dcf910
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/punct0.tex
@@ -0,0 +1,31 @@
+% -*- coding: utf-8 -*-
+
+%\Punct{·} \PunctUCS{00B7}\\% Adobe-Japan1-6には和文用グリフがない
+\Punct{・} \PunctUCS{30FB}\\
+\Punct{:} \PunctUCS{FF1A}\\
+\Punct{;} \PunctUCS{FF1B}\\
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+\Punct{―} \PunctUCS{2015}\\
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+\parbox<t>{15.5zw}{
+
+%\Punct{·} \PunctUCS{00B7}\\% Adobe-Japan1-6には和文用グリフがない
+\Punct{・} \PunctUCS{30FB}\\
+\Punct{:} \PunctUCS{FF1A}\\
+%\Punct{;} \PunctUCS{FF1B}\\% Adobe-Japan1-6には縦組み用グリフがない
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+\Punct{―} \PunctUCS{2015}\\
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/punctuation.tex b/language/japanese/japanese-otf-uptex/test/uplatex/punctuation.tex
new file mode 100644
index 0000000000..72c981b8f3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/punctuation.tex
@@ -0,0 +1,181 @@
+% -*- coding: utf-8 -*-
+\makeatletter
+
+\def\@opt@{uplatex}
+\def\@default{default}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\documentclass[twocolumn]{ujarticle}
+\textwidth 170mm
+\textheight 255mm
+\voffset -10mm
+\topmargin 0mm
+\headheight 0mm
+\headsep 0mm
+\leftmargin 0mm
+\rightmargin 0mm
+
+\usepackage{color}
+\usepackage{plext}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+
+\newcommand{\Bracket}[2]{%
+ \textcolor{green}{\fbox{\textcolor{black}{#1}}}雪%
+ \textcolor{green}{\fbox{\textcolor{black}{#2}}}%
+ \textcolor{green}{\fbox{\textcolor{black}{\inhibitglue #1}}}雪%
+ \textcolor{green}{\fbox{\textcolor{black}{#2\inhibitglue}}}%
+%%% vvv 色無し vvv %%%
+% \fbox{#1}雪\fbox{#2}%
+% \fbox{\inhibitglue #1}雪\fbox{#2\inhibitglue}%
+}
+\newcommand{\BracketUCS}[2]{%
+ \Bracket{\kchar"#1}{\kchar"#2} {\footnotesize U+#1, U+#2}%
+}
+\newcommand{\Punct}[1]{%
+ 雪\textcolor{green}{\fbox{\textcolor{black}{#1}}}雪%
+ \textcolor{green}{\fbox{\textcolor{black}{\inhibitglue #1\inhibitglue}}}雪%
+%%% vvv 色無し vvv %%%
+% 雪\fbox{#1}雪%
+% \fbox{\inhibitglue #1\inhibitglue}雪%
+}
+\newcommand{\PunctUCS}[1]{%
+ \Punct{\kchar"#1} {\footnotesize U+#1}%"
+}
+
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+
+\begin{document}
+\parindent0pt
+\fboxsep0pt
+
+オプション:\texttt{\option}
+
+\section{括弧類}
+{
+[mc/m]
+
+\input{paren0.tex}
+
+{\bfseries%
+[mc/bx]
+
+\input{paren0.tex}
+}}
+
+{\gtfamily
+[gt/m]
+
+\input{paren0.tex}
+
+{\bfseries%
+[gt/bx]
+
+\input{paren0.tex}
+}}
+
+{\mgfamily
+[mg/m]
+
+\input{paren0.tex}
+}
+
+{\rubyfamily%
+[ruby/m]
+
+\input{paren0.tex}
+
+{\bfseries%
+[ruby/bx]
+
+\input{paren0.tex}
+}}
+
+{\gtfamily\rubyfamily%
+[rubyg/m]
+
+\input{paren0.tex}
+
+{\gtfamily\rubyfamily\bfseries%
+[rubyg/bx]
+
+\input{paren0.tex}
+}}
+
+{\mgfamily\rubyfamily%
+[rubymg/m]
+
+\input{paren0.tex}
+}
+
+
+\section{句読点など}
+{
+[mc/m]
+
+\input{punct0.tex}
+
+{\bfseries%
+[mc/bx]
+
+\input{punct0.tex}
+}}
+
+{\gtfamily
+[gt/m]
+
+\input{punct0.tex}
+
+{\bfseries%
+[gt/bx]
+
+\input{punct0.tex}
+}}
+
+{\mgfamily
+[mg/m]
+
+\input{punct0.tex}
+}
+
+{\rubyfamily%
+[ruby/m]
+
+\input{punct0.tex}
+
+{\bfseries%
+[ruby/bx]
+
+\input{punct0.tex}
+}}
+
+{\gtfamily\rubyfamily%
+[rubyg/m]
+
+\input{punct0.tex}
+
+{\gtfamily\rubyfamily\bfseries%
+[rubyg/bx]
+
+\input{punct0.tex}
+}}
+
+{\mgfamily\rubyfamily%
+[rubymg/m]
+
+\input{punct0.tex}
+}
+
+\end{document}
+
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_cns_utf.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_cns_utf.tex
new file mode 100644
index 0000000000..fdd6023915
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_cns_utf.tex
@@ -0,0 +1,204 @@
+%
+% This file is generated from the data of UniCNS-UTF32
+% in cid2code.txt (Version 10/24/2017)
+% for Adobe-CNS1-7
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-CNS1-7/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+Adobe-CNS1-0\\
+\UTFT{200CC}\UTFT{2008A}\UTFT{27607}
+
+Adobe-CNS1-1\\
+\UTFT{23ED7}\UTFT{26ED3}\UTFT{257E0}\UTFT{28BE9}\UTFT{258E1}\UTFT{294D9}\UTFT{259AC}\UTFT{2648D}\UTFT{25C01}\UTFT{2530E}%
+\UTFT{25CFE}\UTFT{25BB4}\UTFT{26C7F}\UTFT{25D20}\UTFT{25CC1}\UTFT{24882}\UTFT{24578}\UTFT{26E44}\UTFT{26ED6}\UTFT{24057}%
+\UTFT{26029}\UTFT{217F9}\UTFT{2836D}\UTFT{26121}\UTFT{2615A}\UTFT{262D0}\UTFT{26351}\UTFT{21661}\UTFT{20068}\UTFT{23766}%
+\UTFT{2833A}\UTFT{26489}\UTFT{2A087}\UTFT{26CC3}\UTFT{22714}\UTFT{26626}\UTFT{23DE3}\UTFT{266E8}\UTFT{28A48}\UTFT{226F6}%
+\UTFT{26498}\UTFT{2148A}\UTFT{2185E}\UTFT{24A65}\UTFT{24A95}\UTFT{26A52}\UTFT{23D7E}\UTFT{214FD}\UTFT{2F98F}\UTFT{249A7}%
+\UTFT{23530}\UTFT{21773}\UTFT{23DF8}\UTFT{2F994}\UTFT{20E16}\UTFT{217B4}\UTFT{2317D}\UTFT{2355A}\UTFT{23E8B}\UTFT{26DA3}%
+\UTFT{26B05}\UTFT{26B97}\UTFT{235CE}\UTFT{26DA5}\UTFT{26ED4}\UTFT{26E42}\UTFT{25BE4}\UTFT{26B96}\UTFT{26E77}\UTFT{26E43}%
+\UTFT{25C91}\UTFT{25CC0}\UTFT{28625}\UTFT{2863B}\UTFT{27088}\UTFT{21582}\UTFT{270CD}\UTFT{270F0}\UTFT{2F9B2}\UTFT{218A2}%
+\UTFT{2739A}\UTFT{2A0F8}\UTFT{22C27}\UTFT{275E0}\UTFT{23DB9}\UTFT{275E4}\UTFT{2770F}\UTFT{28A25}\UTFT{27924}\UTFT{27ABD}%
+\UTFT{27A59}\UTFT{27B3A}\UTFT{27B38}\UTFT{25430}\UTFT{25565}\UTFT{24A7A}\UTFT{216DF}\UTFT{27D54}\UTFT{27D8F}\UTFT{2F9D4}%
+\UTFT{27D53}\UTFT{27D98}\UTFT{27DBD}\UTFT{21910}\UTFT{2F9D7}\UTFT{28002}\UTFT{21014}\UTFT{2498A}\UTFT{281BC}\UTFT{2710C}%
+\UTFT{28365}\UTFT{28412}\UTFT{2A29F}\UTFT{20A50}\UTFT{289DE}\UTFT{2853D}\UTFT{23DBB}\UTFT{23262}\UTFT{22325}\UTFT{26ED7}%
+\UTFT{2853C}\UTFT{27ABE}\UTFT{2856C}\UTFT{2860B}\UTFT{28713}\UTFT{286E6}\UTFT{28933}\UTFT{21E89}\UTFT{255B9}\UTFT{28AC6}%
+\UTFT{23C9B}\UTFT{28B0C}\UTFT{255DB}\UTFT{20D31}\UTFT{28AE1}\UTFT{28BEB}\UTFT{28AE2}\UTFT{28AE5}\UTFT{28BEC}\UTFT{28C39}%
+\UTFT{28BFF}\UTFT{286D8}\UTFT{2127C}\UTFT{23E2E}\UTFT{26ED5}\UTFT{28AE0}\UTFT{26CB8}\UTFT{20274}\UTFT{26410}\UTFT{290AF}%
+\UTFT{290E5}\UTFT{24AD1}\UTFT{21915}\UTFT{2330A}\UTFT{24AE9}\UTFT{291D5}\UTFT{291EB}\UTFT{230B7}\UTFT{230BC}\UTFT{2546C}%
+\UTFT{29433}\UTFT{2941D}\UTFT{2797A}\UTFT{27175}\UTFT{20630}\UTFT{2415C}\UTFT{25706}\UTFT{26D27}\UTFT{216D3}\UTFT{24A29}%
+\UTFT{29857}\UTFT{29905}\UTFT{25725}\UTFT{290B1}\UTFT{29BD5}\UTFT{29B05}\UTFT{28600}\UTFT{2307D}\UTFT{29D3E}\UTFT{21863}%
+\UTFT{29E68}\UTFT{29FB7}\UTFT{2A192}\UTFT{2A1AB}\UTFT{2A0E1}\UTFT{2A123}\UTFT{2A1DF}\UTFT{2A134}\UTFT{2A193}\UTFT{2A220}%
+\UTFT{2193B}\UTFT{2A233}\UTFT{2A0B9}\UTFT{2A2B4}\UTFT{24364}\UTFT{2A3ED}\UTFT{28C2B}\UTFT{26DA2}\UTFT{2FA1B}\UTFT{2908B}%
+\UTFT{24975}\UTFT{249BB}\UTFT{249F8}\UTFT{24348}\UTFT{24A51}\UTFT{28BDA}\UTFT{218FA}\UTFT{2897E}\UTFT{28E36}\UTFT{28A44}%
+\UTFT{2896C}\UTFT{244B9}\UTFT{24473}\UTFT{243F8}\UTFT{217EF}\UTFT{218BE}\UTFT{23599}\UTFT{21885}\UTFT{2542F}\UTFT{217F8}%
+\UTFT{216FB}\UTFT{21839}\UTFT{21774}\UTFT{218D1}\UTFT{25F4B}\UTFT{216C0}\UTFT{24A25}\UTFT{213FE}\UTFT{212A8}\UTFT{213C6}%
+\UTFT{214B6}\UTFT{236A6}\UTFT{24994}\UTFT{27165}\UTFT{23E31}\UTFT{2555C}\UTFT{23EFB}\UTFT{27052}\UTFT{236EE}\UTFT{2999D}%
+\UTFT{26F26}\UTFT{21922}\UTFT{2373F}\UTFT{240E1}\UTFT{2408B}\UTFT{2410F}\UTFT{26C21}\UTFT{266B1}\UTFT{20FDF}\UTFT{20BA8}%
+\UTFT{20E0D}\UTFT{28B13}\UTFT{24436}\UTFT{20465}\UTFT{25651}\UTFT{201AB}\UTFT{203CB}\UTFT{2030A}\UTFT{20414}\UTFT{202C0}%
+\UTFT{28EB3}\UTFT{20275}\UTFT{2020C}\UTFT{24A0E}\UTFT{23E8A}\UTFT{23595}\UTFT{23E39}\UTFT{23EBF}\UTFT{21884}\UTFT{23E89}%
+\UTFT{205E0}\UTFT{204A3}\UTFT{20492}\UTFT{20491}\UTFT{28A9C}\UTFT{2070E}\UTFT{20873}\UTFT{2438C}\UTFT{20C20}\UTFT{249AC}%
+\UTFT{210E4}\UTFT{20E1D}\UTFT{24ABC}\UTFT{2408D}\UTFT{240C9}\UTFT{20345}\UTFT{20BC6}\UTFT{28A46}\UTFT{216FA}\UTFT{2176F}%
+\UTFT{21710}\UTFT{25946}\UTFT{219F3}\UTFT{21861}\UTFT{24295}\UTFT{25E83}\UTFT{28BD7}\UTFT{20413}\UTFT{21303}\UTFT{289FB}%
+\UTFT{21996}\UTFT{2197C}\UTFT{23AEE}\UTFT{21903}\UTFT{21904}\UTFT{218A0}\UTFT{216FE}\UTFT{28A47}\UTFT{21DBA}\UTFT{23472}%
+\UTFT{289A8}\UTFT{21927}\UTFT{217AB}\UTFT{2173B}\UTFT{275FD}\UTFT{22860}\UTFT{2262B}\UTFT{225AF}\UTFT{225BE}\UTFT{29088}%
+\UTFT{26F73}\UTFT{2003E}\UTFT{20046}\UTFT{2261B}\UTFT{22C9B}\UTFT{22D07}\UTFT{246D4}\UTFT{2914D}\UTFT{24665}\UTFT{22B6A}%
+\UTFT{22B22}\UTFT{23450}\UTFT{298EA}\UTFT{22E78}\UTFT{249E3}\UTFT{22D67}\UTFT{22CA1}\UTFT{2308E}\UTFT{232AD}\UTFT{24989}%
+\UTFT{232AB}\UTFT{232E0}\UTFT{218D9}\UTFT{2943F}\UTFT{23289}\UTFT{231B3}\UTFT{25584}\UTFT{28B22}\UTFT{2558F}\UTFT{216FC}%
+\UTFT{2555B}\UTFT{25425}\UTFT{23103}\UTFT{2182A}\UTFT{23234}\UTFT{2320F}\UTFT{23182}\UTFT{242C9}\UTFT{26D24}\UTFT{27870}%
+\UTFT{21DEB}\UTFT{232D2}\UTFT{232E1}\UTFT{25872}\UTFT{2383A}\UTFT{237BC}\UTFT{237A2}\UTFT{233FE}\UTFT{2462A}\UTFT{237D5}%
+\UTFT{24487}\UTFT{21912}\UTFT{23FC0}\UTFT{23C9A}\UTFT{28BEA}\UTFT{28ACB}\UTFT{2801E}\UTFT{289DC}\UTFT{23F7F}\UTFT{2403C}%
+\UTFT{2431A}\UTFT{24276}\UTFT{2478F}\UTFT{24725}\UTFT{24AA4}\UTFT{205EB}\UTFT{23EF8}\UTFT{2365F}\UTFT{24A4A}\UTFT{24917}%
+\UTFT{25FE1}\UTFT{24ADF}\UTFT{28C23}\UTFT{23F35}\UTFT{26DEA}\UTFT{24CD9}\UTFT{24D06}\UTFT{2A5C6}\UTFT{28ACC}\UTFT{249AB}%
+\UTFT{2498E}\UTFT{24A4E}\UTFT{249C5}\UTFT{248F3}\UTFT{28AE3}\UTFT{21864}\UTFT{25221}\UTFT{251E7}\UTFT{23232}\UTFT{24697}%
+\UTFT{23781}\UTFT{248F0}\UTFT{24ABA}\UTFT{24AC7}\UTFT{24A96}\UTFT{261AE}\UTFT{25581}\UTFT{27741}\UTFT{256E3}\UTFT{23EFA}%
+\UTFT{216E6}\UTFT{20D4C}\UTFT{2498C}\UTFT{20299}\UTFT{23DBA}\UTFT{2176E}\UTFT{201D4}\UTFT{20C0D}\UTFT{226F5}\UTFT{25AAF}%
+\UTFT{25A9C}\UTFT{2025B}\UTFT{25BC6}\UTFT{25BB3}\UTFT{25EBC}\UTFT{25EA6}\UTFT{249F9}\UTFT{217B0}\UTFT{26261}\UTFT{2615C}%
+\UTFT{27B48}\UTFT{25E82}\UTFT{26B75}\UTFT{20916}\UTFT{2004E}\UTFT{235CF}\UTFT{26412}\UTFT{263F8}\UTFT{2082C}\UTFT{25AE9}%
+\UTFT{25D43}\UTFT{25E0E}\UTFT{2343F}\UTFT{249F7}\UTFT{265AD}\UTFT{265A0}\UTFT{27127}\UTFT{26CD1}\UTFT{267B4}\UTFT{26A42}%
+\UTFT{26A51}\UTFT{26DA7}\UTFT{2721B}\UTFT{21840}\UTFT{218A1}\UTFT{218D8}\UTFT{2F9BC}\UTFT{23D8F}\UTFT{27422}\UTFT{25683}%
+\UTFT{27785}\UTFT{27784}\UTFT{28BF5}\UTFT{28BD9}\UTFT{28B9C}\UTFT{289F9}\UTFT{29448}\UTFT{24284}\UTFT{21845}\UTFT{27DDC}%
+\UTFT{24C09}\UTFT{22321}\UTFT{217DA}\UTFT{2492F}\UTFT{28A4B}\UTFT{28AFC}\UTFT{28C1D}\UTFT{28C3B}\UTFT{28D34}\UTFT{248FF}%
+\UTFT{24A42}\UTFT{243EA}\UTFT{23225}\UTFT{28EE7}\UTFT{28E66}\UTFT{28E65}\UTFT{249ED}\UTFT{24A78}\UTFT{23FEE}\UTFT{290B0}%
+\UTFT{29093}\UTFT{257DF}\UTFT{28989}\UTFT{28C26}\UTFT{28B2F}\UTFT{263BE}\UTFT{2421B}\UTFT{20F26}\UTFT{28BC5}\UTFT{24AB2}%
+\UTFT{294DA}\UTFT{295D7}\UTFT{28B50}\UTFT{24A67}\UTFT{28B64}\UTFT{28A45}\UTFT{27B06}\UTFT{28B65}\UTFT{258C8}\UTFT{298F1}%
+\UTFT{29948}\UTFT{21302}\UTFT{249B8}\UTFT{214E8}\UTFT{2271F}\UTFT{23DB8}\UTFT{22781}\UTFT{2296B}\UTFT{29E2D}\UTFT{2A1F5}%
+\UTFT{2A0FE}\UTFT{24104}\UTFT{2A1B4}\UTFT{2A0ED}\UTFT{2A0F3}\UTFT{2992F}\UTFT{26E12}\UTFT{26FDF}\UTFT{26B82}\UTFT{26DA4}%
+\UTFT{26E84}\UTFT{26DF0}\UTFT{26E00}\UTFT{237D7}\UTFT{26064}\UTFT{2359C}\UTFT{23640}\UTFT{249DE}\UTFT{202BF}\UTFT{2555D}%
+\UTFT{21757}\UTFT{231C9}\UTFT{24941}\UTFT{241B5}\UTFT{241AC}\UTFT{26C40}\UTFT{24F97}\UTFT{217B5}\UTFT{28A49}\UTFT{24488}%
+\UTFT{289FC}\UTFT{218D6}\UTFT{20F1D}\UTFT{26CC0}\UTFT{21413}\UTFT{242FA}\UTFT{22C26}\UTFT{243C1}\UTFT{23DB7}\UTFT{26741}%
+\UTFT{2615B}\UTFT{260A4}\UTFT{249B9}\UTFT{2498B}\UTFT{289FA}\UTFT{28B63}\UTFT{2189F}\UTFT{24AB3}\UTFT{24A3E}\UTFT{24A94}%
+\UTFT{217D9}\UTFT{24A66}\UTFT{203A7}\UTFT{21424}\UTFT{249E5}\UTFT{24916}\UTFT{24976}\UTFT{204FE}\UTFT{28ACE}\UTFT{28A16}%
+\UTFT{28BE7}\UTFT{255D5}\UTFT{28A82}\UTFT{24943}\UTFT{20CFF}\UTFT{2061A}\UTFT{20BEB}\UTFT{20CB8}\UTFT{217FA}\UTFT{216C2}%
+\UTFT{24A50}\UTFT{21852}\UTFT{28AC0}\UTFT{249AD}\UTFT{218BF}\UTFT{21883}\UTFT{27484}\UTFT{23D5B}\UTFT{28A81}\UTFT{21862}%
+\UTFT{20AB4}\UTFT{2139C}\UTFT{28218}\UTFT{290E4}\UTFT{27E4F}\UTFT{23FED}\UTFT{23E2D}\UTFT{203F5}\UTFT{28C1C}\UTFT{26BC0}%
+\UTFT{21452}\UTFT{24362}\UTFT{24A71}\UTFT{22FE3}\UTFT{212B0}\UTFT{223BD}\UTFT{21398}\UTFT{234E5}\UTFT{27BF4}\UTFT{236DF}%
+\UTFT{28A83}\UTFT{237D6}\UTFT{233FA}\UTFT{24C9F}\UTFT{236AD}\UTFT{26CB7}\UTFT{26D26}\UTFT{26D51}\UTFT{26C82}\UTFT{26FDE}%
+\UTFT{2173A}\UTFT{26C80}\UTFT{27053}\UTFT{217DB}\UTFT{217B3}\UTFT{21905}\UTFT{241FC}\UTFT{2173C}\UTFT{242A5}\UTFT{24293}%
+\UTFT{23EF9}\UTFT{27736}\UTFT{2445B}\UTFT{242CA}\UTFT{24259}\UTFT{289E1}\UTFT{26D28}\UTFT{244CE}\UTFT{27E4D}\UTFT{243BD}%
+\UTFT{24256}\UTFT{21304}\UTFT{243E9}\UTFT{2F825}\UTFT{23300}\UTFT{27AF4}\UTFT{256F6}\UTFT{27B18}\UTFT{27A79}\UTFT{249BA}%
+\UTFT{20346}\UTFT{27657}\UTFT{25FE2}\UTFT{275FE}\UTFT{2209A}\UTFT{28A9A}\UTFT{2403B}\UTFT{24A45}\UTFT{205CA}\UTFT{20611}%
+\UTFT{21EA8}\UTFT{23CFF}\UTFT{285E8}\UTFT{299C9}\UTFT{221C3}\UTFT{28B4E}\UTFT{20C78}\UTFT{20779}\UTFT{23F4A}\UTFT{24AA7}%
+\UTFT{26B52}\UTFT{27632}\UTFT{2493F}\UTFT{233CC}\UTFT{28948}\UTFT{21D90}\UTFT{27C12}\UTFT{24F9A}\UTFT{26BF7}\UTFT{2191C}%
+\UTFT{249F6}\UTFT{23FEF}\UTFT{2271B}\UTFT{257E1}\UTFT{2F8CD}\UTFT{2F806}\UTFT{24521}\UTFT{24934}\UTFT{26CBD}\UTFT{26411}%
+\UTFT{290C0}\UTFT{20A11}\UTFT{26469}\UTFT{20021}\UTFT{23519}\UTFT{2258D}\UTFT{2217A}\UTFT{249D0}\UTFT{20EF8}\UTFT{22926}%
+\UTFT{28473}\UTFT{217B1}\UTFT{24A2A}\UTFT{21820}\UTFT{29CAD}\UTFT{298A4}\UTFT{2160A}\UTFT{2372F}\UTFT{280E8}\UTFT{213C5}%
+\UTFT{291A8}\UTFT{270AF}\UTFT{289AB}\UTFT{2417A}\UTFT{2A2DF}\UTFT{28318}\UTFT{26E07}\UTFT{2816F}\UTFT{269B5}\UTFT{213ED}%
+\UTFT{2322F}\UTFT{28C30}\UTFT{28949}\UTFT{24988}\UTFT{24AA5}\UTFT{23F81}\UTFT{21FA1}\UTFT{295E9}\UTFT{2789D}\UTFT{28024}%
+\UTFT{27A3E}\UTFT{23CB7}\UTFT{26258}\UTFT{29D98}\UTFT{23D40}\UTFT{20E9D}\UTFT{282E2}\UTFT{20C41}\UTFT{20C96}\UTFT{20E76}%
+\UTFT{22C62}\UTFT{20EA2}\UTFT{21075}\UTFT{22B43}\UTFT{22EB3}\UTFT{20DA7}\UTFT{2688A}\UTFT{20EF9}\UTFT{27FF9}\UTFT{247E0}%
+\UTFT{29D7C}\UTFT{275A3}\UTFT{26048}\UTFT{24618}\UTFT{29EAC}\UTFT{29FDE}\UTFT{272B2}\UTFT{2048E}\UTFT{20EB6}\UTFT{27F2E}%
+\UTFT{2A434}\UTFT{243F2}\UTFT{29E06}\UTFT{294D0}\UTFT{26335}\UTFT{20D28}\UTFT{20D71}\UTFT{21F0F}\UTFT{21DD1}\UTFT{2176D}%
+\UTFT{2B473}\UTFT{28E97}\UTFT{25C21}\UTFT{20CD4}\UTFT{201F2}\UTFT{2A64A}\UTFT{2837D}\UTFT{2A2B2}\UTFT{24ABB}\UTFT{26E05}%
+\UTFT{2AE67}\UTFT{2251B}\UTFT{2DF3C}\UTFT{28E39}\UTFT{20F3B}\UTFT{25F1A}\UTFT{27486}\UTFT{267CC}\UTFT{24011}\UTFT{2F922}%
+\UTFT{20547}\UTFT{205DF}\UTFT{23FC5}\UTFT{24942}\UTFT{289E4}\UTFT{219DB}\UTFT{23CC8}\UTFT{24933}\UTFT{289AA}\UTFT{202A0}%
+\UTFT{26BB3}\UTFT{21305}\UTFT{224ED}\UTFT{26D29}\UTFT{27A84}\UTFT{23600}\UTFT{24AB1}\UTFT{22513}\UTFT{2037E}\UTFT{20380}%
+\UTFT{20347}\UTFT{2041F}\UTFT{249A4}\UTFT{20487}\UTFT{233B4}\UTFT{20BFF}\UTFT{220FC}\UTFT{202E5}\UTFT{22530}\UTFT{2058E}%
+\UTFT{23233}\UTFT{21983}\UTFT{205B3}\UTFT{23C99}\UTFT{24AA6}\UTFT{2372D}\UTFT{26B13}\UTFT{2F829}\UTFT{28ADE}\UTFT{23F80}%
+\UTFT{20954}\UTFT{23FEC}\UTFT{20BE2}\UTFT{21726}\UTFT{216E8}\UTFT{286AB}\UTFT{2F832}\UTFT{21596}\UTFT{21613}\UTFT{28A9B}%
+\UTFT{25772}\UTFT{20B8F}\UTFT{23FEB}\UTFT{22DA3}\UTFT{20C77}\UTFT{26B53}\UTFT{20D74}\UTFT{2170D}\UTFT{20EDD}\UTFT{20D4D}%
+\UTFT{289BC}\UTFT{22698}\UTFT{218D7}\UTFT{2403A}\UTFT{24435}\UTFT{210B4}\UTFT{2328A}\UTFT{28B66}\UTFT{2124F}\UTFT{241A5}%
+\UTFT{26C7E}\UTFT{21416}\UTFT{21454}\UTFT{24363}\UTFT{24BF5}\UTFT{2123C}\UTFT{2A150}\UTFT{24278}\UTFT{2163E}\UTFT{21692}%
+\UTFT{20D4E}\UTFT{26C81}\UTFT{26D2A}\UTFT{217DC}\UTFT{217FB}\UTFT{217B2}\UTFT{26DA6}\UTFT{21828}\UTFT{216D5}\UTFT{26E45}%
+\UTFT{249A9}\UTFT{26FA1}\UTFT{22554}\UTFT{21911}\UTFT{216B8}\UTFT{27A0E}\UTFT{20204}\UTFT{21A34}\UTFT{259CC}\UTFT{205A5}%
+\UTFT{21B44}\UTFT{21CA5}\UTFT{26B28}\UTFT{21DF9}\UTFT{21E37}\UTFT{21EA4}\UTFT{24901}\UTFT{22049}\UTFT{22173}\UTFT{244BC}%
+\UTFT{20CD3}\UTFT{21771}\UTFT{28482}\UTFT{201C1}\UTFT{2F894}\UTFT{2133A}\UTFT{26888}\UTFT{223D0}\UTFT{22471}\UTFT{26E6E}%
+\UTFT{28A36}\UTFT{25250}\UTFT{21F6A}\UTFT{270F8}\UTFT{22668}\UTFT{2029E}\UTFT{28A29}\UTFT{227B4}\UTFT{24982}\UTFT{2498F}%
+\UTFT{27A53}\UTFT{2F8A6}\UTFT{26ED2}\UTFT{20656}\UTFT{23FB7}\UTFT{2285F}\UTFT{28B9D}\UTFT{2995D}\UTFT{22980}\UTFT{228C1}%
+\UTFT{20118}\UTFT{21770}\UTFT{22E0D}\UTFT{249DF}\UTFT{2138E}\UTFT{217FC}\UTFT{22E36}\UTFT{2571D}\UTFT{24A28}\UTFT{24A23}%
+\UTFT{24940}\UTFT{21829}\UTFT{23400}\UTFT{231F7}\UTFT{231F8}\UTFT{231A4}\UTFT{231A5}\UTFT{20E75}\UTFT{251E6}\UTFT{23231}%
+\UTFT{285F4}\UTFT{231C8}\UTFT{25313}\UTFT{228F7}\UTFT{2439C}\UTFT{24A21}\UTFT{237C2}\UTFT{2F8DB}\UTFT{241CD}\UTFT{290ED}%
+\UTFT{233E6}\UTFT{26DA0}\UTFT{2346F}\UTFT{28ADF}\UTFT{235CD}\UTFT{2363C}\UTFT{28A4A}\UTFT{203C9}\UTFT{23659}\UTFT{2212A}%
+\UTFT{23703}\UTFT{2919C}\UTFT{20923}\UTFT{227CD}\UTFT{23ADB}\UTFT{21958}\UTFT{23B5A}\UTFT{23EFC}\UTFT{2248B}\UTFT{248F1}%
+\UTFT{26B51}\UTFT{23DBC}\UTFT{23DBD}\UTFT{241A4}\UTFT{2490C}\UTFT{24900}\UTFT{23CC9}\UTFT{20D32}\UTFT{231F9}\UTFT{22491}%
+\UTFT{26D25}\UTFT{26DA1}\UTFT{26DEB}\UTFT{2497F}\UTFT{24085}\UTFT{26E72}\UTFT{26F74}\UTFT{28B21}\UTFT{2F908}\UTFT{23E2F}%
+\UTFT{23F82}\UTFT{2304B}\UTFT{23E30}\UTFT{21497}\UTFT{2403D}\UTFT{29170}\UTFT{24144}\UTFT{24091}\UTFT{24155}\UTFT{24039}%
+\UTFT{23FF0}\UTFT{23FB4}\UTFT{2413F}\UTFT{24156}\UTFT{24157}\UTFT{24140}\UTFT{261DD}\UTFT{24277}\UTFT{24365}\UTFT{242C1}%
+\UTFT{2445A}\UTFT{24A27}\UTFT{24A22}\UTFT{28BE8}\UTFT{25605}\UTFT{24974}\UTFT{23044}\UTFT{24823}\UTFT{2882B}\UTFT{28804}%
+\UTFT{20C3A}\UTFT{26A2E}\UTFT{241E2}\UTFT{216E7}\UTFT{24A24}\UTFT{249B7}\UTFT{2498D}\UTFT{249FB}\UTFT{24A26}\UTFT{2F92F}%
+\UTFT{228AD}\UTFT{28EB2}\UTFT{24A8C}\UTFT{2415F}\UTFT{24A79}\UTFT{28B8F}\UTFT{28C03}\UTFT{2189E}\UTFT{21988}\UTFT{28ED9}%
+\UTFT{21A4B}\UTFT{28EAC}\UTFT{24F82}\UTFT{24D13}\UTFT{263F5}\UTFT{26911}\UTFT{2690E}\UTFT{26F9F}\UTFT{2509D}\UTFT{2517D}%
+\UTFT{21E1C}\UTFT{25220}\UTFT{232AC}\UTFT{28964}\UTFT{28968}\UTFT{216C1}\UTFT{255E0}\UTFT{2760C}\UTFT{2261C}\UTFT{25857}%
+\UTFT{27B39}\UTFT{27126}\UTFT{2910D}\UTFT{20C42}\UTFT{20D15}\UTFT{2512B}\UTFT{22CC6}\UTFT{20341}\UTFT{24DB8}\UTFT{294E5}%
+\UTFT{280BE}\UTFT{22C38}\UTFT{2815D}\UTFT{269F2}\UTFT{24DEA}\UTFT{20D7C}\UTFT{20FB4}\UTFT{20CD5}\UTFT{2BAB3}\UTFT{20E96}%
+\UTFT{20F64}\UTFT{22CA9}\UTFT{28256}\UTFT{244D3}\UTFT{20D46}\UTFT{29A4D}\UTFT{280E9}\UTFT{24EA7}\UTFT{22CC2}\UTFT{295F4}%
+\UTFT{252C7}\UTFT{297D4}\UTFT{22D44}\UTFT{2BCD7}\UTFT{22BCA}\UTFT{2B977}\UTFT{266DA}\UTFT{26716}\UTFT{279A0}\UTFT{25052}%
+\UTFT{20C43}\UTFT{28B4C}\UTFT{20731}\UTFT{201A9}\UTFT{22D8D}\UTFT{245C8}\UTFT{204FC}\UTFT{26097}\UTFT{20F4C}\UTFT{22A66}%
+\UTFT{2109D}\UTFT{20D9C}\UTFT{22775}\UTFT{2A601}\UTFT{20E09}\UTFT{22ACF}\UTFT{2C5F8}\UTFT{210C8}\UTFT{239C2}\UTFT{2829B}%
+\UTFT{25E49}\UTFT{220C7}\UTFT{22CB2}\UTFT{29720}\UTFT{24E3B}\UTFT{2C9A0}\UTFT{27574}\UTFT{22E8B}\UTFT{22208}\UTFT{2A65B}%
+\UTFT{28CCD}\UTFT{20E7A}\UTFT{20C34}\UTFT{27639}\UTFT{22BCE}\UTFT{22C51}\UTFT{210C7}\UTFT{2A632}\UTFT{28CD2}\UTFT{28D99}%
+\UTFT{28CCA}\UTFT{2775E}\UTFT{2F828}\UTFT{2107B}\UTFT{210D3}\UTFT{212FE}\UTFT{247EF}\UTFT{24EA5}\UTFT{24F5C}\UTFT{28189}%
+\UTFT{2B42C}
+
+Adobe-CNS1-3\\
+\UTFT{2010C}\UTFT{200D1}\UTFT{200CD}\UTFT{200CB}\UTFT{21FE8}\UTFT{200CA}\UTFT{2010E}\UTFT{21BC1}\UTFT{2F878}\UTFT{20086}%
+\UTFT{248E9}\UTFT{2626A}\UTFT{2634B}\UTFT{26612}\UTFT{26951}\UTFT{278B2}\UTFT{28E0F}\UTFT{29810}\UTFT{20087}\UTFT{2A3A9}%
+\UTFT{21145}\UTFT{27735}\UTFT{209E7}\UTFT{29DF6}\UTFT{2700E}\UTFT{2A133}\UTFT{2846C}\UTFT{21DCA}\UTFT{205D0}\UTFT{22AE6}%
+\UTFT{27D84}\UTFT{210F4}\UTFT{20C0B}\UTFT{278C8}\UTFT{260A5}\UTFT{22D4C}\UTFT{21077}\UTFT{2106F}\UTFT{221A1}\UTFT{20D96}%
+\UTFT{22CC9}\UTFT{20F31}\UTFT{2681C}\UTFT{210CF}\UTFT{22803}\UTFT{22939}\UTFT{251E3}\UTFT{20E8C}\UTFT{20F8D}\UTFT{20EAA}%
+\UTFT{20F30}\UTFT{20D47}\UTFT{2114F}\UTFT{20E4C}\UTFT{20EAB}\UTFT{20BA9}\UTFT{20D48}\UTFT{210C0}\UTFT{2113D}\UTFT{22696}%
+\UTFT{20FAD}\UTFT{233F4}\UTFT{20D7E}\UTFT{20D7F}\UTFT{22C55}\UTFT{20E98}\UTFT{20F2E}\UTFT{26B50}\UTFT{29EC3}\UTFT{22DEE}%
+\UTFT{26572}\UTFT{280BD}\UTFT{20EFA}\UTFT{20E0F}\UTFT{20E77}\UTFT{20EFB}\UTFT{24DEB}\UTFT{20CD6}\UTFT{227B5}\UTFT{210C9}%
+\UTFT{20E10}\UTFT{20E78}\UTFT{21078}\UTFT{21148}\UTFT{28207}\UTFT{21455}\UTFT{20E79}\UTFT{24E50}\UTFT{22DA4}\UTFT{2101D}%
+\UTFT{2101E}\UTFT{210F5}\UTFT{210F6}\UTFT{20E11}\UTFT{27694}\UTFT{282CD}\UTFT{20FB5}\UTFT{20E7B}\UTFT{2517E}\UTFT{20FB6}%
+\UTFT{21180}\UTFT{252D8}\UTFT{2A2BD}\UTFT{249DA}\UTFT{2183A}\UTFT{24177}\UTFT{2827C}\UTFT{2573D}\UTFT{25B74}\UTFT{2313D}%
+\UTFT{289C0}\UTFT{23F41}\UTFT{20325}\UTFT{20ED8}\UTFT{25C65}\UTFT{24FB8}\UTFT{20B0D}\UTFT{26B0A}\UTFT{22EEF}\UTFT{23CB5}%
+\UTFT{26E99}\UTFT{23F8F}\UTFT{24CC9}\UTFT{2A014}\UTFT{286BC}\UTFT{28501}\UTFT{2267A}\UTFT{269A8}\UTFT{2424B}\UTFT{2215B}%
+\UTFT{2037F}\UTFT{2A45B}\UTFT{249EC}\UTFT{24962}\UTFT{27109}\UTFT{24A4F}\UTFT{24A5D}\UTFT{217DF}\UTFT{23AFA}\UTFT{20214}%
+\UTFT{208D5}\UTFT{20619}\UTFT{21F9E}\UTFT{2A2B6}\UTFT{2915B}\UTFT{28A59}\UTFT{29420}\UTFT{248F2}\UTFT{25535}\UTFT{20CCF}%
+\UTFT{27967}\UTFT{21BC2}\UTFT{20094}\UTFT{202B7}\UTFT{203A0}\UTFT{204D7}\UTFT{205D5}\UTFT{20615}\UTFT{20676}\UTFT{216BA}%
+\UTFT{20AC2}\UTFT{20ACD}\UTFT{20BBF}\UTFT{2F83B}\UTFT{20BCB}\UTFT{20BFB}\UTFT{20C3B}\UTFT{20C53}\UTFT{20C65}\UTFT{20C7C}%
+\UTFT{20C8D}\UTFT{20CB5}\UTFT{20CDD}\UTFT{20CED}\UTFT{20D6F}\UTFT{20DB2}\UTFT{20DC8}\UTFT{20E04}\UTFT{20E0E}\UTFT{20ED7}%
+\UTFT{20F90}\UTFT{20F2D}\UTFT{20E73}\UTFT{20FBC}\UTFT{2105C}\UTFT{2104F}\UTFT{21076}\UTFT{21088}\UTFT{21096}\UTFT{210BF}%
+\UTFT{2112F}\UTFT{2113B}\UTFT{212E3}\UTFT{21375}\UTFT{21336}\UTFT{21577}\UTFT{21619}\UTFT{217C3}\UTFT{217C7}\UTFT{2182D}%
+\UTFT{2196A}\UTFT{21A2D}\UTFT{21A45}\UTFT{21C2A}\UTFT{21C70}\UTFT{21CAC}\UTFT{21EC8}\UTFT{21ED5}\UTFT{21F15}\UTFT{22045}%
+\UTFT{2227C}\UTFT{223D7}\UTFT{223FA}\UTFT{2272A}\UTFT{22871}\UTFT{2294F}\UTFT{22967}\UTFT{22993}\UTFT{22AD5}\UTFT{22AE8}%
+\UTFT{22B0E}\UTFT{22B3F}\UTFT{22C4C}\UTFT{22C88}\UTFT{22CB7}\UTFT{25BE8}\UTFT{22D08}\UTFT{22D12}\UTFT{22DB7}\UTFT{22D95}%
+\UTFT{22E42}\UTFT{22F74}\UTFT{22FCC}\UTFT{23033}\UTFT{23066}\UTFT{2331F}\UTFT{233DE}\UTFT{23567}\UTFT{235F3}\UTFT{2361A}%
+\UTFT{23716}\UTFT{23AA7}\UTFT{23E11}\UTFT{23EB9}\UTFT{24119}\UTFT{242EE}\UTFT{2430D}\UTFT{24334}\UTFT{24396}\UTFT{24404}%
+\UTFT{244D6}\UTFT{24674}\UTFT{2472F}\UTFT{24812}\UTFT{248FB}\UTFT{24A15}\UTFT{24AC0}\UTFT{24F86}\UTFT{2502C}\UTFT{25299}%
+\UTFT{25419}\UTFT{25446}\UTFT{2546E}\UTFT{2553F}\UTFT{2555E}\UTFT{25562}\UTFT{25566}\UTFT{257C7}\UTFT{2585D}\UTFT{25903}%
+\UTFT{25AAE}\UTFT{25B89}\UTFT{25C06}\UTFT{26102}\UTFT{261B2}\UTFT{26402}\UTFT{2644A}\UTFT{26484}\UTFT{26488}\UTFT{26512}%
+\UTFT{265BF}\UTFT{266B5}\UTFT{266FC}\UTFT{26799}\UTFT{2686E}\UTFT{2685E}\UTFT{268C7}\UTFT{26926}\UTFT{26939}\UTFT{269FA}%
+\UTFT{26A2D}\UTFT{26A34}\UTFT{26B5B}\UTFT{26B9D}\UTFT{26CA4}\UTFT{26DAE}\UTFT{2704B}\UTFT{271CD}\UTFT{27280}\UTFT{27285}%
+\UTFT{2728B}\UTFT{272E6}\UTFT{27450}\UTFT{277CC}\UTFT{27858}\UTFT{279DD}\UTFT{279FD}\UTFT{27A0A}\UTFT{27B0B}\UTFT{27D66}%
+\UTFT{28009}\UTFT{28023}\UTFT{28048}\UTFT{28083}\UTFT{28090}\UTFT{280F4}\UTFT{2812E}\UTFT{2814F}\UTFT{281AF}\UTFT{2821A}%
+\UTFT{28306}\UTFT{2832F}\UTFT{2838A}\UTFT{28468}\UTFT{286AA}\UTFT{28956}\UTFT{289B8}\UTFT{289E7}\UTFT{289E8}\UTFT{28B46}%
+\UTFT{28BD4}\UTFT{28C09}\UTFT{28FC5}\UTFT{290EC}\UTFT{29110}\UTFT{2913C}\UTFT{2915E}\UTFT{24ACA}\UTFT{294E7}\UTFT{295B0}%
+\UTFT{295B8}\UTFT{29732}\UTFT{298D1}\UTFT{29949}\UTFT{2996A}\UTFT{299C3}\UTFT{29A28}\UTFT{29B0E}\UTFT{29D5A}\UTFT{29D9B}%
+\UTFT{29EF8}\UTFT{29F23}\UTFT{2A293}\UTFT{2A2FF}\UTFT{2A5CB}\UTFT{20C9C}\UTFT{224B0}\UTFT{24A93}\UTFT{28B2C}\UTFT{217F5}%
+\UTFT{28B6C}\UTFT{28B99}\UTFT{266AF}\UTFT{27655}\UTFT{25635}\UTFT{25956}\UTFT{25E81}\UTFT{20E6D}\UTFT{23E88}\UTFT{24C9E}%
+\UTFT{217F6}\UTFT{2187B}\UTFT{25C4A}\UTFT{25311}\UTFT{25ED8}\UTFT{20FEA}\UTFT{20D49}\UTFT{236BA}\UTFT{25148}\UTFT{210C1}%
+\UTFT{24706}\UTFT{26893}\UTFT{226F4}\UTFT{27D2F}\UTFT{241A3}\UTFT{27D73}\UTFT{26ED0}\UTFT{272B6}\UTFT{211D9}\UTFT{23CFC}%
+\UTFT{2A6A9}\UTFT{20EAC}\UTFT{21CA2}\UTFT{24FC2}\UTFT{20FEB}\UTFT{22DA0}\UTFT{20FEC}\UTFT{20E0A}\UTFT{20FED}\UTFT{21187}%
+\UTFT{24B6E}\UTFT{25A95}\UTFT{20979}\UTFT{22465}\UTFT{23CFE}\UTFT{29F30}\UTFT{24FA9}\UTFT{2959E}\UTFT{23DB6}\UTFT{267B3}%
+\UTFT{23720}\UTFT{23EF7}\UTFT{23E2C}\UTFT{230DA}\UTFT{212A9}\UTFT{24963}\UTFT{270AE}\UTFT{2176C}\UTFT{27164}\UTFT{26D22}%
+\UTFT{24AE2}\UTFT{2493E}\UTFT{26D23}\UTFT{203FC}\UTFT{23CFD}\UTFT{24919}\UTFT{24A77}\UTFT{28A5A}\UTFT{2F840}\UTFT{2183B}%
+\UTFT{26159}\UTFT{233F5}\UTFT{28BC2}\UTFT{21D46}\UTFT{26ED1}\UTFT{28B2D}\UTFT{23CC7}\UTFT{25ED7}\UTFT{27656}\UTFT{25531}%
+\UTFT{21944}\UTFT{29903}\UTFT{26DDC}\UTFT{270AD}\UTFT{261AD}\UTFT{28A0F}\UTFT{23677}\UTFT{200EE}\UTFT{26846}\UTFT{24F0E}%
+\UTFT{2634C}\UTFT{2626B}\UTFT{21877}\UTFT{2408C}\UTFT{2307E}\UTFT{21E3D}\UTFT{203B5}\UTFT{205C3}\UTFT{21376}\UTFT{24A12}%
+\UTFT{28B2B}\UTFT{26083}
+
+Adobe-CNS1-4\\
+\UTFT{29C73}\UTFT{2414E}\UTFT{251CD}\UTFT{25D30}\UTFT{28A32}\UTFT{23281}\UTFT{2A107}\UTFT{21980}\UTFT{2870F}\UTFT{2A2BA}%
+\UTFT{29947}\UTFT{28AEA}\UTFT{2207E}\UTFT{289E3}\UTFT{21DB6}\UTFT{22712}\UTFT{233F9}\UTFT{23C63}\UTFT{24505}\UTFT{24A13}%
+\UTFT{25CA4}\UTFT{25695}\UTFT{28DB9}\UTFT{2143F}\UTFT{2497B}\UTFT{2710D}\UTFT{26D74}\UTFT{26B15}\UTFT{26FBE}
+
+Adobe-CNS1-5\\
+\UTFT{27267}\UTFT{27CB1}\UTFT{27CC5}\UTFT{242BF}\UTFT{23617}\UTFT{27352}\UTFT{26E8B}\UTFT{270D2}\UTFT{2A351}\UTFT{27C6C}%
+\UTFT{26B23}\UTFT{25A54}\UTFT{21A63}\UTFT{23E06}\UTFT{23F61}\UTFT{28BB9}\UTFT{27BEF}\UTFT{21D5E}\UTFT{29EB0}\UTFT{29945}%
+\UTFT{20A6F}\UTFT{23256}\UTFT{22796}\UTFT{23B1A}\UTFT{23551}\UTFT{240EC}\UTFT{21E23}\UTFT{201A4}\UTFT{26C41}\UTFT{20239}%
+\UTFT{298FA}\UTFT{20B9F}\UTFT{221C1}\UTFT{2896D}\UTFT{29079}\UTFT{2A1B5}\UTFT{26C46}\UTFT{286B2}\UTFT{273FF}\UTFT{2549A}%
+\UTFT{24B0F}
+
+Adobe-CNS1-6\\
+\UTFT{21D53}\UTFT{2369E}\UTFT{26021}\UTFT{258DE}\UTFT{24161}\UTFT{2890D}\UTFT{231EA}\UTFT{20A8A}\UTFT{2325E}\UTFT{25DB9}%
+\UTFT{2368E}\UTFT{27B65}\UTFT{26E88}\UTFT{25D99}\UTFT{224BC}\UTFT{224C1}\UTFT{224C9}\UTFT{224CC}\UTFT{235BB}\UTFT{2ADFF}%
+
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_gb_utf.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_gb_utf.tex
new file mode 100644
index 0000000000..f03fc4c969
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_gb_utf.tex
@@ -0,0 +1,17 @@
+%
+% This file is generated from the data of UniGB-UTF32
+% in cid2code.txt (Version 12/05/2017)
+% for Adobe-GB1-5
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-GB1-5/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+Adobe-GB1-2\\
+\UTFC{20087}\UTFC{20089}\UTFC{200CC}\UTFC{215D7}\UTFC{2298F}\UTFC{20509}\UTFC{2099D}\UTFC{241FE}
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex
new file mode 100644
index 0000000000..e77167987b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_text.tex
@@ -0,0 +1,75 @@
+%
+% This file is generated from the data of UniJIS-UTF32
+% in cid2code.txt (Version 02/05/2019)
+% for Adobe-Japan1-7
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-Japan1-7/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+Adobe-Japan1-0\\
+𨳝櫛𥡴𨻶杓巽屠兔冕冤
+𡨚𤏐爨🄀
+
+Adobe-Japan1-4\\
+🄐🄑🄒🄓🄔🄕🄖🄗🄘🄙
+🄚🄛🄜🄝🄞🄟🄠🄡🄢🄣
+🄤🄥🄦🄧🄨🄩🅐🅑🅒🅓
+🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝
+🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧
+🅨🅩🄰🄱🄲🄳🄴🄵🄶🄷
+🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁
+🅂🅃🅄🅅🅆🅇🅈🅉🈂🈷
+🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹
+🅺🅻🅼🅽🅾🅿🆀🆁🆂🆃
+🆄🆅🆆🆇🆈🆉眞𠤎𦥑𫟘
+沿芽槪割𦈢𠮷𩵋卿𫞎憲
+𠩤浩𫝆𫝷滋𠮟勺爵周将
+𭕄𠀋城𩙿真𠆢𮕩𫝑成𧾷
+𣳾炭𥫗彫潮𡈽冬𤴔姬𫞉
+諭輸𥙿𦚰𠘨𠂊𠦄卉寃拔
+𦦙𣏌杞𪧦𫞽絣𮉸𠔿𦉪𠂰
+𮛪𨦇𨸗𫠚𤋮桒𣲾𠘑嶲你
+𣘺𣏾𢘉
+
+Adobe-Japan1-5\\
+𡌛𡑮𡢽𡚴𡸴𣇄𣗄𣜿𣝣𤟱
+𥒎𥔎𥝱𥧄𥶡𦫿𦹀𧃴𧚄𨉷
+𨏍𪆐𠂉𠂢𠂤𠈓𠌫𠎁𠍱𠏹
+𠑊𠔉𠗖𠝏𠠇𠠺𠢹𠥼𠦝𠫓
+𠬝𠵅𠷡𠺕𠹭𠹤𠽟𡈁𡉕𡉻
+𡉴𡋤𡋗𡋽𡌶𡍄𡏄𡑭𡗗𦰩
+𡙇𡜆𡝂𡧃𡱖𡴭𡵅𡵸𡵢𡶡
+𡶜𡶒𡶷𡷠𡸳𡼞𡽶𡿺𢅻𢌞
+𢎭𢛳𢡛𢢫𢦏𢪸𢭏𢭐𢭆𢰝
+𢮦𢰤𢷡𣇃𣇵𣆶𣍲𣏓𣏒𣏐
+𣏤𣏕𣏚𣏟𣑊𣑑𣑋𣑥𣓤𣕚
+𣖔𣘹𣙇𣘸𣜜𣜌𣝤𣟿𣟧𣠤
+𣠽𣪘𣱿𣴀𣵀𣷺𣷹𣷓𣽾𤂖
+𤄃𤇆𤇾𤎼𤘩𤚥𤢖𤩍𤭖𤭯
+𤰖𤸎𤸷𤹪𤺋𥁊𥁕𥄢𥆩𥇥
+𥇍𥈞𥉌𥐮𥓙𥖧𥞩𥞴𥧔𥫤
+𥫣𥫱𥮲𥱋𥱤𥸮𥹖𥹥𥹢𥻘
+𥻂𥻨𥼣𥽜𥿠𥿔𦀌𥿻𦀗𦁠
+𦃭𦉰𦊆𣴎𦐂𦙾𦜝𦣝𦣪𦥯
+𦧝𦨞𦩘𦪌𦪷𦱳𦳝𦹥𦾔𦿸
+𦿶𦿷𧄍𧄹𧏛𧏚𧏾𧐐𧑉𧘕
+𧘔𧘱𧚓𧜎𧜣𧝒𧦅𧪄𧮳𧮾
+𧯇𧲸𧶠𧸐𨂊𨂻𨊂𨋳𨐌𨑕
+𨕫𨗈𨗉𨛗𨛺𨥉𨥆𨥫𨦈𨦺
+𨦻𨨞𨨩𨩱𨩃𨪙𨫍𨫤𨫝𨯁
+𨯯𨴐𨵱𨷻𨸟𨸶𨺉𨻫𨼲𨿸
+𩊠𩊱𩒐𩗏𩛰𩜙𩝐𩣆𩩲𩷛
+𩸕𩺊𩹉𩻄𩻩𩻛𩿎𩿗𪀯𪀚
+𪃹𪂂𢈘𪎌𪐷𪗱𪘂𪚲𠃵𤸄
+𤿲𧵳再善形慈栟軔𪊲𠅘
+𠖱𠛬𫝓𠵘𫝚𫝜𥧌𫝶𢹂𫝼
+𠟈𢿫𧦴𫞂𫞋𣟱𫞔𤁋𫞬𫞯
+𫟉𫟏𫟒𦲞𧰼𫟰𫝥𫠍𫠗𦍌
+𩸽𪘚
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex
new file mode 100644
index 0000000000..b1d08c6c89
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_jp_utf.tex
@@ -0,0 +1,75 @@
+%
+% This file is generated from the data of UniJIS-UTF32
+% in cid2code.txt (Version 02/05/2019)
+% for Adobe-Japan1-7
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-Japan1-7/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+Adobe-Japan1-0\\
+\UTF{28CDD}\UTF{2F8ED}\UTF{25874}\UTF{28EF6}\UTF{2F8DC}\UTF{2F884}\UTF{2F877}\UTF{2F80F}\UTF{2F8D3}\UTF{2F818}%
+\UTF{21A1A}\UTF{243D0}\UTF{2F920}\UTF{1F100}
+
+Adobe-Japan1-4\\
+\UTF{1F110}\UTF{1F111}\UTF{1F112}\UTF{1F113}\UTF{1F114}\UTF{1F115}\UTF{1F116}\UTF{1F117}\UTF{1F118}\UTF{1F119}%
+\UTF{1F11A}\UTF{1F11B}\UTF{1F11C}\UTF{1F11D}\UTF{1F11E}\UTF{1F11F}\UTF{1F120}\UTF{1F121}\UTF{1F122}\UTF{1F123}%
+\UTF{1F124}\UTF{1F125}\UTF{1F126}\UTF{1F127}\UTF{1F128}\UTF{1F129}\UTF{1F150}\UTF{1F151}\UTF{1F152}\UTF{1F153}%
+\UTF{1F154}\UTF{1F155}\UTF{1F156}\UTF{1F157}\UTF{1F158}\UTF{1F159}\UTF{1F15A}\UTF{1F15B}\UTF{1F15C}\UTF{1F15D}%
+\UTF{1F15E}\UTF{1F15F}\UTF{1F160}\UTF{1F161}\UTF{1F162}\UTF{1F163}\UTF{1F164}\UTF{1F165}\UTF{1F166}\UTF{1F167}%
+\UTF{1F168}\UTF{1F169}\UTF{1F130}\UTF{1F131}\UTF{1F132}\UTF{1F133}\UTF{1F134}\UTF{1F135}\UTF{1F136}\UTF{1F137}%
+\UTF{1F138}\UTF{1F139}\UTF{1F13A}\UTF{1F13B}\UTF{1F13C}\UTF{1F13D}\UTF{1F13E}\UTF{1F13F}\UTF{1F140}\UTF{1F141}%
+\UTF{1F142}\UTF{1F143}\UTF{1F144}\UTF{1F145}\UTF{1F146}\UTF{1F147}\UTF{1F148}\UTF{1F149}\UTF{1F202}\UTF{1F237}%
+\UTF{1F170}\UTF{1F171}\UTF{1F172}\UTF{1F173}\UTF{1F174}\UTF{1F175}\UTF{1F176}\UTF{1F177}\UTF{1F178}\UTF{1F179}%
+\UTF{1F17A}\UTF{1F17B}\UTF{1F17C}\UTF{1F17D}\UTF{1F17E}\UTF{1F17F}\UTF{1F180}\UTF{1F181}\UTF{1F182}\UTF{1F183}%
+\UTF{1F184}\UTF{1F185}\UTF{1F186}\UTF{1F187}\UTF{1F188}\UTF{1F189}\UTF{2F945}\UTF{2090E}\UTF{26951}\UTF{2B7D8}%
+\UTF{2F8FC}\UTF{2F995}\UTF{2F8EA}\UTF{2F822}\UTF{26222}\UTF{20BB7}\UTF{29D4B}\UTF{2F833}\UTF{2B78E}\UTF{2F8AC}%
+\UTF{20A64}\UTF{2F903}\UTF{2B746}\UTF{2B777}\UTF{2F90B}\UTF{20B9F}\UTF{2F828}\UTF{2F921}\UTF{2F83F}\UTF{2F873}%
+\UTF{2D544}\UTF{2000B}\UTF{2F852}\UTF{2967F}\UTF{2F947}\UTF{201A2}\UTF{2E569}\UTF{2B751}\UTF{2F8B2}\UTF{27FB7}%
+\UTF{23CFE}\UTF{2F91A}\UTF{25AD7}\UTF{2F89A}\UTF{2F90F}\UTF{2123D}\UTF{2F81A}\UTF{24D14}\UTF{2F862}\UTF{2B789}%
+\UTF{2F9D0}\UTF{2F9DF}\UTF{2567F}\UTF{266B0}\UTF{20628}\UTF{2008A}\UTF{20984}\UTF{2F82C}\UTF{2F86D}\UTF{2F8B6}%
+\UTF{26999}\UTF{233CC}\UTF{2F8DB}\UTF{2A9E6}\UTF{2B7BD}\UTF{2F96C}\UTF{2E278}\UTF{2053F}\UTF{2626A}\UTF{200B0}%
+\UTF{2E6EA}\UTF{28987}\UTF{28E17}\UTF{2B81A}\UTF{242EE}\UTF{2F8E1}\UTF{23CBE}\UTF{20611}\UTF{2F9F4}\UTF{2F804}%
+\UTF{2363A}\UTF{233FE}\UTF{22609}
+
+Adobe-Japan1-5\\
+\UTF{2131B}\UTF{2146E}\UTF{218BD}\UTF{216B4}\UTF{21E34}\UTF{231C4}\UTF{235C4}\UTF{2373F}\UTF{23763}\UTF{247F1}%
+\UTF{2548E}\UTF{2550E}\UTF{25771}\UTF{259C4}\UTF{25DA1}\UTF{26AFF}\UTF{26E40}\UTF{270F4}\UTF{27684}\UTF{28277}%
+\UTF{283CD}\UTF{2A190}\UTF{20089}\UTF{200A2}\UTF{200A4}\UTF{20213}\UTF{2032B}\UTF{20381}\UTF{20371}\UTF{203F9}%
+\UTF{2044A}\UTF{20509}\UTF{205D6}\UTF{2074F}\UTF{20807}\UTF{2083A}\UTF{208B9}\UTF{2097C}\UTF{2099D}\UTF{20AD3}%
+\UTF{20B1D}\UTF{20D45}\UTF{20DE1}\UTF{20E95}\UTF{20E6D}\UTF{20E64}\UTF{20F5F}\UTF{21201}\UTF{21255}\UTF{2127B}%
+\UTF{21274}\UTF{212E4}\UTF{212D7}\UTF{212FD}\UTF{21336}\UTF{21344}\UTF{213C4}\UTF{2146D}\UTF{215D7}\UTF{26C29}%
+\UTF{21647}\UTF{21706}\UTF{21742}\UTF{219C3}\UTF{21C56}\UTF{21D2D}\UTF{21D45}\UTF{21D78}\UTF{21D62}\UTF{21DA1}%
+\UTF{21D9C}\UTF{21D92}\UTF{21DB7}\UTF{21DE0}\UTF{21E33}\UTF{21F1E}\UTF{21F76}\UTF{21FFA}\UTF{2217B}\UTF{2231E}%
+\UTF{223AD}\UTF{226F3}\UTF{2285B}\UTF{228AB}\UTF{2298F}\UTF{22AB8}\UTF{22B4F}\UTF{22B50}\UTF{22B46}\UTF{22C1D}%
+\UTF{22BA6}\UTF{22C24}\UTF{22DE1}\UTF{231C3}\UTF{231F5}\UTF{231B6}\UTF{23372}\UTF{233D3}\UTF{233D2}\UTF{233D0}%
+\UTF{233E4}\UTF{233D5}\UTF{233DA}\UTF{233DF}\UTF{2344A}\UTF{23451}\UTF{2344B}\UTF{23465}\UTF{234E4}\UTF{2355A}%
+\UTF{23594}\UTF{23639}\UTF{23647}\UTF{23638}\UTF{2371C}\UTF{2370C}\UTF{23764}\UTF{237FF}\UTF{237E7}\UTF{23824}%
+\UTF{2383D}\UTF{23A98}\UTF{23C7F}\UTF{23D00}\UTF{23D40}\UTF{23DFA}\UTF{23DF9}\UTF{23DD3}\UTF{23F7E}\UTF{24096}%
+\UTF{24103}\UTF{241C6}\UTF{241FE}\UTF{243BC}\UTF{24629}\UTF{246A5}\UTF{24896}\UTF{24A4D}\UTF{24B56}\UTF{24B6F}%
+\UTF{24C16}\UTF{24E0E}\UTF{24E37}\UTF{24E6A}\UTF{24E8B}\UTF{2504A}\UTF{25055}\UTF{25122}\UTF{251A9}\UTF{251E5}%
+\UTF{251CD}\UTF{2521E}\UTF{2524C}\UTF{2542E}\UTF{254D9}\UTF{255A7}\UTF{257A9}\UTF{257B4}\UTF{259D4}\UTF{25AE4}%
+\UTF{25AE3}\UTF{25AF1}\UTF{25BB2}\UTF{25C4B}\UTF{25C64}\UTF{25E2E}\UTF{25E56}\UTF{25E65}\UTF{25E62}\UTF{25ED8}%
+\UTF{25EC2}\UTF{25EE8}\UTF{25F23}\UTF{25F5C}\UTF{25FE0}\UTF{25FD4}\UTF{2600C}\UTF{25FFB}\UTF{26017}\UTF{26060}%
+\UTF{260ED}\UTF{26270}\UTF{26286}\UTF{23D0E}\UTF{26402}\UTF{2667E}\UTF{2671D}\UTF{268DD}\UTF{268EA}\UTF{2696F}%
+\UTF{269DD}\UTF{26A1E}\UTF{26A58}\UTF{26A8C}\UTF{26AB7}\UTF{26C73}\UTF{26CDD}\UTF{26E65}\UTF{26F94}\UTF{26FF8}%
+\UTF{26FF6}\UTF{26FF7}\UTF{2710D}\UTF{27139}\UTF{273DB}\UTF{273DA}\UTF{273FE}\UTF{27410}\UTF{27449}\UTF{27615}%
+\UTF{27614}\UTF{27631}\UTF{27693}\UTF{2770E}\UTF{27723}\UTF{27752}\UTF{27985}\UTF{27A84}\UTF{27BB3}\UTF{27BBE}%
+\UTF{27BC7}\UTF{27CB8}\UTF{27DA0}\UTF{27E10}\UTF{2808A}\UTF{280BB}\UTF{28282}\UTF{282F3}\UTF{2840C}\UTF{28455}%
+\UTF{2856B}\UTF{285C8}\UTF{285C9}\UTF{286D7}\UTF{286FA}\UTF{28949}\UTF{28946}\UTF{2896B}\UTF{28988}\UTF{289BA}%
+\UTF{289BB}\UTF{28A1E}\UTF{28A29}\UTF{28A71}\UTF{28A43}\UTF{28A99}\UTF{28ACD}\UTF{28AE4}\UTF{28ADD}\UTF{28BC1}%
+\UTF{28BEF}\UTF{28D10}\UTF{28D71}\UTF{28DFB}\UTF{28E1F}\UTF{28E36}\UTF{28E89}\UTF{28EEB}\UTF{28F32}\UTF{28FF8}%
+\UTF{292A0}\UTF{292B1}\UTF{29490}\UTF{295CF}\UTF{296F0}\UTF{29719}\UTF{29750}\UTF{298C6}\UTF{29A72}\UTF{29DDB}%
+\UTF{29E15}\UTF{29E8A}\UTF{29E49}\UTF{29EC4}\UTF{29EE9}\UTF{29EDB}\UTF{29FCE}\UTF{29FD7}\UTF{2A02F}\UTF{2A01A}%
+\UTF{2A0F9}\UTF{2A082}\UTF{22218}\UTF{2A38C}\UTF{2A437}\UTF{2A5F1}\UTF{2A602}\UTF{2A6B2}\UTF{200F5}\UTF{24E04}%
+\UTF{24FF2}\UTF{27D73}\UTF{2F815}\UTF{2F846}\UTF{2F899}\UTF{2F8A6}\UTF{2F8E5}\UTF{2F9DE}\UTF{2A2B2}\UTF{20158}%
+\UTF{205B1}\UTF{206EC}\UTF{2B753}\UTF{20D58}\UTF{2B75A}\UTF{2B75C}\UTF{259CC}\UTF{2B776}\UTF{22E42}\UTF{2B77C}%
+\UTF{207C8}\UTF{22FEB}\UTF{279B4}\UTF{2B782}\UTF{2B78B}\UTF{237F1}\UTF{2B794}\UTF{2404B}\UTF{2B7AC}\UTF{2B7AF}%
+\UTF{2B7C9}\UTF{2B7CF}\UTF{2B7D2}\UTF{26C9E}\UTF{27C3C}\UTF{2B7F0}\UTF{2B765}\UTF{2B80D}\UTF{2B817}\UTF{2634C}%
+\UTF{29E3D}\UTF{2A61A}
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/sp_kr_utf.tex b/language/japanese/japanese-otf-uptex/test/uplatex/sp_kr_utf.tex
new file mode 100644
index 0000000000..6af3e290ff
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/sp_kr_utf.tex
@@ -0,0 +1,14 @@
+%
+% This file is generated from the data of UniKS-UTF32
+% in cid2code.txt (Version 01/31/2012)
+% for Adobe-Korea1-2
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-Korea1-2/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+
+
+% end
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/uotf-sp-utf8.tex b/language/japanese/japanese-otf-uptex/test/uplatex/uotf-sp-utf8.tex
new file mode 100644
index 0000000000..89b4ef4784
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/uotf-sp-utf8.tex
@@ -0,0 +1,313 @@
+% -*- coding: utf-8 -*-
+%%%%%%%%
+% To control hyperref on command line,
+% you can select one of (1),(2a),(2b),(3).
+% (1) do not treat hyperref
+% $ uplatex uotf-sp-utf8.tex
+% (2a) hyperref + dvipdfmx (with CMap conversion)
+% $ uplatex "\def\withhyperref{dvipdfmx}\input" uotf-sp-utf8.tex
+% (2b) hyperref + dvipdfmx + out2uni (without CMap conversion)
+% $ uplatex "\def\withhyperref{dvipdfmx}\nocmap{true}\input" uotf-sp-utf8.tex
+% (3) hyperref + dvips + convbkmk.rb + distiller/ps2pdf
+% $ uplatex "\def\withhyperref{dvips}\input" uotf-sp-utf8.tex
+%%%%%%
+
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000
+ \uptexmodetrue
+ \def\tounicode{pdf:tounicode UTF8-UTF16}
+\else
+ \ifnum\jis"2121="A1A1
+ \def\tounicode{pdf:tounicode EUC-UCS2}
+ \fi
+ \ifnum\jis"2121="8140
+ \def\tounicode{pdf:tounicode 90ms-RKSJ-UCS2}
+ \fi
+\fi
+
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+\def\@tarticle{tarticle}
+\def\@ujarticle{ujarticle}
+\def\@noreplace{noreplace}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@noreplace
+ \ifuptexmode
+ \ifx\class\@ujarticle
+ \def\@enc@{JY2}\def\@dir@{h}
+ \else
+ \def\@enc@{JT2}\def\@dir@{v}
+ \fi
+ \DeclareFontFamily{\@enc@}{mcw}{}
+ \DeclareFontFamily{\@enc@}{gtw}{}
+ \DeclareFontShape{\@enc@}{mcw}{m}{n}{<->s*[0.962216]upjpnrm-\@dir@}{}
+ \DeclareFontShape{\@enc@}{gtw}{m}{n}{<->s*[0.962216]upjpngt-\@dir@}{}
+ \DeclareFontShape{\@enc@}{gt}{m}{n}{<->s*[0.962216]upjpngt-\@dir@}{}
+ \DeclareFontShape{\@enc@}{mcw}{bx}{n}{<->ssub*gt/m/n}{}
+ \DeclareFontShape{\@enc@}{gtw}{bx}{n}{<->ssub*gt/m/n}{}
+ \DeclareFontShape{\@enc@}{gt}{bx}{n}{<->ssub*gt/m/n}{}
+ \DeclareRobustCommand\mcw{\kanjifamily{mcw}\selectfont}
+ \DeclareRobustCommand\gtw{\kanjifamily{gtw}\selectfont}
+ \renewcommand\mcdefault{mcw}
+ \renewcommand\gtdefault{gtw}
+ \fi
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+\ifx\class\@jarticle
+ \documentclass[a4paper,titlepage]{\class}
+\else
+ \ifx\class\@ujarticle
+ \documentclass[a4paper,titlepage]{\class}
+ \else
+ \documentclass[a4paper,titlepage,landscape]{\class}
+ \fi
+\fi
+
+\usepackage[\@opt@]{otf}
+
+\def\@dvipdfmx{dvipdfmx}
+\def\@dvips{dvips}
+
+\ifx\withhyperref\@undefined
+ \def\withhyperref{undefined}
+ \edef\texorpdfstring#1#2{#1}
+\else
+ \ifx\withhyperref\@dvipdfmx
+ \def\@hyperrefkeyval{dvipdfm}
+ \usepackage{atbegshi}
+ \ifx\nocmap\@undefined
+ \AtBeginShipoutFirst{\special{\tounicode}}
+ \fi
+ \fi
+ \ifx\withhyperref\@dvips
+ \def\@hyperrefkeyval{dvips}
+ \fi
+
+\usepackage[\@hyperrefkeyval,%
+bookmarks=true,%
+bookmarksnumbered=true,%
+bookmarkstype=toc,%
+%pdfstartview={FitBH -32768},%
+pdftitle={japanese-otfのテスト},%
+pdfsubject={Unicode supplementary plane編},%
+pdfauthor={upTeXプロジェクト},%
+pdfkeywords={TeX; dvips; dvipdfmx; bookmark; hyperref; しおり; pdf}%
+]{hyperref}
+
+\fi
+
+\makeatother
+
+\usepackage{redeffont}
+
+\ajUTFVarDef{叱}{20B9F}
+\ajUTFVarDef{亭}{20158}
+\ajUTFVarDef{吉}{20bb7}
+\ajUTFVarDef{座}{2B776}
+
+\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\pagestyle{empty}
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+
+\edef\bs{$\backslash$\kern0em}
+\setlength\parindent{0em}
+
+\begin{document}
+\section{見出し}
+
+コンパイラー:\ifuptexmode upLaTeX\else pLaTeX\fi\\
+クラス:\texttt{\class}\\
+オプション:\texttt{\option}
+
+\vspace{\baselineskip}
+\ifuptexmode
+\begin{tabular}{l||ccccccc}
+フォント & 仮名 & 漢字 & UTF-8 & \bs kchar & \bs UTF & \bs CID\\
+\hline
+mc/m & ひらかな & 漢字 & 𠮟𠅘 & \kchar"20B9F\kchar"20158 & \UTF{20B9F}\UTF{20158} & \CID{13803}\CID{20075} \\
+mc/bx & {\bfseries ひらかな} & {\bfseries 漢字} & {\bfseries 𠮟𠅘} & {\bfseries\kchar"20B9F\kchar"20158} & {\bfseries\UTF{20B9F}\UTF{20158}} & {\bfseries\CID{13803}\CID{20075}} \\
+gt/m & {\gtfamily ひらかな} & {\gtfamily 漢字} & {\gtfamily 𠮟𠅘} & {\gtfamily\kchar"20B9F\kchar"20158} & {\gtfamily\UTF{20B9F}\UTF{20158}} & {\gtfamily\CID{13803}\CID{20075}} \\
+gt/bx & {\gtfamily\bfseries ひらかな} & {\gtfamily\bfseries 漢字} & {\gtfamily\bfseries 𠮟𠅘} & {\gtfamily\bfseries\kchar"20B9F\kchar"20158} & {\gtfamily\bfseries\UTF{20B9F}\UTF{20158}} & {\gtfamily\bfseries\CID{13803}\CID{20075}} \\
+mg/m & {\mgfamily ひらかな} & {\mgfamily 漢字} & {\mgfamily 𠮟𠅘} & {\mgfamily\kchar"20B9F\kchar"20158} & {\mgfamily\UTF{20B9F}\UTF{20158}} & {\mgfamily\CID{13803}\CID{20075}} \\
+\end{tabular}
+\else
+\begin{tabular}{l||ccccc}
+フォント & 仮名 & 漢字 & \bs UTF & \bs CID\\
+\hline
+mc/m & ひらかな & 漢字 & \UTF{20B9F}\UTF{20158} & \CID{13803}\CID{20075} \\
+mc/bx & {\bfseries ひらかな} & {\bfseries 漢字} & {\bfseries\UTF{20B9F}\UTF{20158}} & {\bfseries\CID{13803}\CID{20075}} \\
+gt/m & {\gtfamily ひらかな} & {\gtfamily 漢字} & {\gtfamily\UTF{20B9F}\UTF{20158}} & {\gtfamily\CID{13803}\CID{20075}} \\
+gt/bx & {\gtfamily\bfseries ひらかな} & {\gtfamily\bfseries 漢字} & {\gtfamily\bfseries\UTF{20B9F}\UTF{20158}} & {\gtfamily\bfseries\CID{13803}\CID{20075}} \\
+mg/m & {\mgfamily ひらかな} & {\mgfamily 漢字} & {\mgfamily\UTF{20B9F}\UTF{20158}} & {\mgfamily\CID{13803}\CID{20075}} \\
+\end{tabular}
+\fi
+\vspace{\baselineskip}
+
+日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}
+
+日本:\UTF{20b9f}\UTF{26402} 繁體字:\UTFT{20b9f}\UTFT{26402} 多言語:\UTFM{20b9f}\UTFM{26402}
+
+簡体字:\UTFC{20087}\UTFC{200cc} 繁體字:\UTFT{20087}\UTFT{200cc} 多言語:\UTFM{20087}\UTFM{200cc}
+
+\vspace{\baselineskip}
+
+\ifuptexmode
+ \kchar"20B9Fる。
+ 𠮟る。
+\fi
+\ajVar{叱}る。
+叱る。
+
+\ifuptexmode
+ らいおん\kchar"20158。
+ らいおん𠅘。
+\fi
+らいおん\ajVar{亭}。
+らいおん亭。
+
+\ifuptexmode
+ \kchar"20BB7野家。
+ 𠮷野家。
+\fi
+\ajVar{吉}野家。
+吉野家。
+
+\ifuptexmode
+ 銀\kchar"2B776アスター。
+ 銀𫝶アスター。
+\fi
+銀\ajVar{座}アスター。
+銀座アスター。
+
+\makeatletter
+\ifx\withhyperref\@undefined
+\else
+
+\section{見出しに\texorpdfstring{\bs}{\134}UTF, \texorpdfstring{\bs}{\134}UTFC, \texorpdfstring{\bs}{\134}UTFMなど}
+\subsection{日本:\UTF{9aa8}\UTF{6D77} 簡体字:\UTFC{9aa8}\UTFC{6D77} 繁體字:\UTFT{9AA8}\UTFT{6d77} 朝鮮:\UTFK{9AA8}\UTFK{6d77}}
+日本:\UTF{9aa8}\UTF{6D77} 簡体字:\UTFC{9aa8}\UTFC{6D77} 繁體字:\UTFT{9AA8}\UTFT{6d77} 朝鮮:\UTFK{9AA8}\UTFK{6d77}
+
+\subsection{ハングル:\UTFK{c548}\UTFK{b155}\UTFK{d558}\UTFK{C138}\UTFK{C694}}
+ハングル:\UTFK{c548}\UTFK{b155}\UTFK{d558}\UTFK{C138}\UTFK{C694}
+
+\subsection{日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}}
+日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}
+
+\subsection{日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}}
+日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}
+
+\subsection{日本:\UTF{20b9f}\UTF{26402} 繁體字:\UTFT{20b9f}\UTFT{26402} 多言語:\UTFM{20b9f}\UTFM{26402}}
+日本:\UTF{20b9f}\UTF{26402} 繁體字:\UTFT{20b9f}\UTFT{26402} 多言語:\UTFM{20b9f}\UTFM{26402}
+
+\subsection{簡体字:\UTFC{20087}\UTFC{200cc} 繁體字:\UTFT{20087}\UTFT{200cc} 多言語:\UTFM{20087}\UTFM{200cc}}
+簡体字:\UTFC{20087}\UTFC{200cc} 繁體字:\UTFT{20087}\UTFT{200cc} 多言語:\UTFM{20087}\UTFM{200cc}
+\fi
+\makeatother
+
+\clearpage
+[mc/m]
+
+\ifuptexmode
+ \input{sp_jp_text}
+\fi
+\input{sp_jp_utf}
+
+{\bfseries%
+[mc/bx]
+
+\ifuptexmode
+ \input{sp_jp_text}
+\fi
+\input{sp_jp_utf}
+
+}
+
+{\gtfamily
+[gt/m]
+
+\ifuptexmode
+ \input{sp_jp_text}
+\fi
+\input{sp_jp_utf}
+
+{\bfseries%
+[gt/bx]
+
+\ifuptexmode
+ \input{sp_jp_text}
+\fi
+\input{sp_jp_utf}
+
+}}
+
+{\mgfamily
+[mg/m]
+
+\ifuptexmode
+ \input{sp_jp_text}
+\fi
+\input{sp_jp_utf}
+
+}
+
+\clearpage
+[mc/m]
+
+\input{sp_cns_utf}
+
+\input{sp_gb_utf}
+
+%\end{document}
+
+{\bfseries%
+[mc/bx]
+
+\input{sp_cns_utf}
+
+\input{sp_gb_utf}
+
+}
+
+\end{document}
+
+
+{\gtfamily
+[gt/m]
+
+\input{sp_cns_utf}
+
+\input{sp_gb_utf}
+
+{\bfseries%
+[gt/bx]
+
+\input{sp_cns_utf}
+
+\input{sp_gb_utf}
+
+}}
+
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/uotftest-utf8.tex b/language/japanese/japanese-otf-uptex/test/uplatex/uotftest-utf8.tex
new file mode 100644
index 0000000000..b7c8a5f5f5
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/uotftest-utf8.tex
@@ -0,0 +1,291 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+\def\@tarticle{tarticle}
+\def\@utarticle{utarticle}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+
+\def\baseshift{-.12zh}
+\ifx\class\@tarticle\def\baseshift{-.5zh}\fi
+\ifx\class\@utarticle\def\baseshift{-.5zh}\fi
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+\documentclass[a4paper,titlepage, draft]{\class}
+%\documentclass[a4paper,titlepage, draft,landscape]{\class}
+
+\usepackage[\@opt@]{otf}
+
+%
+% furikana.sty があれば読み込む
+\newread\@istheresuchafile
+\openin\@istheresuchafile furikana.sty
+\ifeof\@istheresuchafile\relax
+\else\closein\@istheresuchafile\relax
+\usepackage{furikana}% found
+\fi
+
+\makeatother
+
+\usepackage{redeffont}
+
+
+\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\ajCIDVarDef{り}{12746}
+\ajCIDVarDef{高}{8705}
+\ajUTFVarDef{鴎}{9DD7}
+\pagestyle{empty}
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+\begin{document}
+\section{見出し}
+
+クラス:\texttt{\class}\\
+オプション:\texttt{\option}
+
+\vspace{\baselineskip}
+\begin{tabular}{l||ccccc}
+フォント & 仮名 & 漢字 & UTF & CID & ルビ\\
+\hline
+mc/m & ひらかな & 漢字 & \UTF{9DD7} & \CID{8705} & {\rubyfamily 振りかな}\\
+mc/bx & {\bfseries ひらかな} & {\bfseries 漢字} & {\bfseries\UTF{9DD7}} & {\bfseries\CID{8705}} & {\bfseries\rubyfamily 振りかな}\\
+gt/m & {\gtfamily ひらかな} & {\gtfamily 漢字} & {\gtfamily\UTF{9DD7}} & {\gtfamily\CID{8705}} & {\gtfamily\rubyfamily 振りかな}\\
+gt/bx & {\gtfamily\bfseries ひらかな} & {\gtfamily\bfseries 漢字} & {\gtfamily\bfseries\UTF{9DD7}} & {\gtfamily\bfseries\CID{8705}} & {\gtfamily\bfseries\rubyfamily 振りかな}\\
+mg/m & {\mgfamily ひらかな} & {\mgfamily 漢字} & {\mgfamily\UTF{9DD7}} & {\mgfamily\CID{8705}} & {\mgfamily\rubyfamily 振りかな}\\
+\end{tabular}
+\vspace{\baselineskip}
+
+日本:\UTF{9aa8} 簡体字:\UTFC{9aa8} 繁體字:\UTFT{9aa8} 朝鮮:\UTFK{9aa8}
+
+日本:\UTF{6d77} 簡体字:\UTFC{6d77} 繁體字:\UTFT{6d77} 朝鮮:\UTFK{6d77}
+
+% with furikana.sty
+\makeatletter
+\ifx\kana\@undefined
+\else
+\kana{漢字}{振りかな}{\bfseries \kana{漢字}{振りかな}}%
+{\gtfamily\kana{漢字}{振りかな}\bfseries \kana{漢字}{振りかな}}
+{\mgfamily\kana{漢字}{振りかな}}
+
+\kana{\UTF{9DD7}}{かな}\kana{鴎}{かな}
+
+\Kana[3]{\UTFK{c548},\UTFK{b155},\UTFK{d558},\UTFK{c138},\UTFK{c694}}{アン,ニョン,ハ,セ,ヨ}
+\fi
+\makeatother
+
+\vspace{\baselineskip}
+
+アイウエオ\raisebox\baseshift{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}
+
+アイウエオ\raisebox\baseshift{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}
+
+
+\clearpage
+[mc/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+
+{\bfseries%
+[mc/bx]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}
+
+{\gtfamily
+[gt/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+
+{\bfseries%
+[gt/bx]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}}
+
+{\mgfamily
+[mg/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}
+
+{\rubyfamily%
+[ruby/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+
+\fbox{\hbox{\tate\Huge ㇰ}}
+
+\fbox{\hbox{\yoko\Huge ㇰ}}
+
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+
+{\bfseries%
+[ruby/bx]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}}
+
+{\gtfamily\rubyfamily%
+[rubyg/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+
+{\gtfamily\rubyfamily\bfseries%
+[rubyg/bx]
+
+\fbox{\hbox{\tate\Huge ぁ}}
+
+\fbox{\hbox{\yoko\Huge ぁ}}
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}}
+
+{\mgfamily\rubyfamily%
+[rubymg/m]
+
+ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのは
+ばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんヽヾゝゞー
+\ifuptexmode
+ゔゕゖ
+\fi
+
+ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハ
+バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+\ifuptexmode
+ヷヸヹヺㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ
+\fi
+
+“回”、‘回’。“回”,‘回’.
+}
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/uotftest.tex b/language/japanese/japanese-otf-uptex/test/uplatex/uotftest.tex
new file mode 100644
index 0000000000..afe549dd0e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/uotftest.tex
@@ -0,0 +1,191 @@
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+\def\@tarticle{tarticle}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\class\@undefined
+ \def\class{jarticle}
+\fi
+\ifx\class\@jarticle
+\else
+ \ifx\class\@tarticle
+ \else
+ \edef\@opt@{uplatex,\@opt@}
+ \fi
+\fi
+
+\documentclass[a4paper,titlepage, draft]{\class}
+%\documentclass[a4paper,titlepage, draft,landscape]{\class}
+
+\usepackage[\@opt@]{otf}
+
+%
+% furikana.sty $B$,$"$l$PFI$_9~$`(B
+\newread\@istheresuchafile
+\openin\@istheresuchafile furikana.sty
+\ifeof\@istheresuchafile\relax
+\else\closein\@istheresuchafile\relax
+\usepackage{furikana}% found
+\fi
+
+\makeatother
+
+\usepackage{redeffont}
+
+
+\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\ajCIDVarDef{$B$j(B}{12746}
+\ajCIDVarDef{$B9b(B}{8705}
+\ajUTFVarDef{$B2*(B}{9DD7}
+\pagestyle{empty}
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+\begin{document}
+\section{$B8+=P$7(B}
+
+$B%/%i%9!'(B\texttt{\class}\\
+$B%*%W%7%g%s!'(B\texttt{\option}
+
+\vspace{\baselineskip}
+\begin{tabular}{l||ccccc}
+$B%U%)%s%H(B & $B2>L>(B & $B4A;z(B & UTF & CID & $B%k%S(B\\
+\hline
+mc/m & $B$R$i$+$J(B & $B4A;z(B & \UTF{9DD7} & \CID{8705} & {\rubyfamily $B?6$j$+$J(B}\\
+mc/bx & {\bfseries $B$R$i$+$J(B} & {\bfseries $B4A;z(B} & {\bfseries\UTF{9DD7}} & {\bfseries\CID{8705}} & {\bfseries\rubyfamily $B?6$j$+$J(B}\\
+gt/m & {\gtfamily $B$R$i$+$J(B} & {\gtfamily $B4A;z(B} & {\gtfamily\UTF{9DD7}} & {\gtfamily\CID{8705}} & {\gtfamily\rubyfamily $B?6$j$+$J(B}\\
+gt/bx & {\gtfamily\bfseries $B$R$i$+$J(B} & {\gtfamily\bfseries $B4A;z(B} & {\gtfamily\bfseries\UTF{9DD7}} & {\gtfamily\bfseries\CID{8705}} & {\gtfamily\bfseries\rubyfamily $B?6$j$+$J(B}\\
+mg/m & {\mgfamily $B$R$i$+$J(B} & {\mgfamily $B4A;z(B} & {\mgfamily\UTF{9DD7}} & {\mgfamily\CID{8705}} & {\mgfamily\rubyfamily $B?6$j$+$J(B}\\
+\end{tabular}
+\vspace{\baselineskip}
+
+$BF|K\!'(B\UTF{9aa8}$B!!4JBN;z!'(B\UTFC{9aa8}$B!!HKqs;z!'(B\UTFT{9aa8}$B!!D+A/!'(B\UTFK{9aa8}
+
+$BF|K\!'(B\UTF{6d77}$B!!4JBN;z!'(B\UTFC{6d77}$B!!HKqs;z!'(B\UTFT{6d77}$B!!D+A/!'(B\UTFK{6d77}
+
+% with furikana.sty
+\makeatletter
+\ifx\kana\@undefined
+\else
+\kana{$B4A;z(B}{$B?6$j$+$J(B}{\bfseries \kana{$B4A;z(B}{$B?6$j$+$J(B}}%
+{\gtfamily\kana{$B4A;z(B}{$B?6$j$+$J(B}\bfseries \kana{$B4A;z(B}{$B?6$j$+$J(B}}
+{\mgfamily\kana{$B4A;z(B}{$B?6$j$+$J(B}}
+
+\kana{\UTF{9DD7}}{$B$+$J(B}\kana{$B2*(B}{$B$+$J(B}
+
+\Kana[3]{\UTFK{c548},\UTFK{b155},\UTFK{d558},\UTFK{c138},\UTFK{c694}}{$B%"%s(B,$B%K%g%s(B,$B%O(B,$B%;(B,$B%h(B}
+\fi
+\makeatother
+
+
+\clearpage
+[mc/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\bfseries%
+[mc/bx]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+
+{\gtfamily
+[gt/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\bfseries%
+[gt/bx]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}}
+
+{\mgfamily
+[mg/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+
+{\rubyfamily%
+[ruby/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\bfseries%
+[ruby/bx]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}}
+
+{\gtfamily\rubyfamily%
+[rubyg/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\gtfamily\rubyfamily\bfseries%
+[rubyg/bx]
+
+\fbox{\hbox{\tate\Huge $B$!(B}}
+
+\fbox{\hbox{\yoko\Huge $B$!(B}}
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}}
+
+{\mgfamily\rubyfamily%
+[rubymg/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/upbrsgtest.tex b/language/japanese/japanese-otf-uptex/test/uplatex/upbrsgtest.tex
new file mode 100644
index 0000000000..e901822def
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/upbrsgtest.tex
@@ -0,0 +1,293 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{deluxe}
+\def\@default{default}
+\def\@br@{br}
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\burasage\@br@
+ \edef\@opt@{\@opt@,burasage}
+ \def\burasage{yes}
+\else
+ \def\burasage{no}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{utbook}
+ \else
+ \def\class{tbook}
+ \fi
+\fi
+
+\documentclass[twocolumn]{\class}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+
+\textwidth 13zw
+\columnsep 3zw
+\columnseprule 1pt
+\linewidth 5zw
+\parindent 0zw
+\pagestyle{empty}
+%\parskip \baselineskip
+\begin{document}
+class: \texttt{\class}\\
+option: \texttt{\option}\\
+burasage: \texttt{\burasage}
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+
+\newpage
+
+\textgt{タイプ別の、組み合わせ。}
+
+□ああ□
+
+□あ(□
+
+□あ)□
+
+□あ・□
+
+□あ。□
+
+□あ―□
+
+□あ?□
+
+□あ、□
+
+□(あ□
+
+□((□
+
+□()□
+
+□(・□
+
+□(。□
+
+□(―□
+
+□(?□
+
+□(、□
+
+□)あ□
+
+□)(□
+
+□))□
+
+□)・□
+
+□)。□
+
+□)―□
+
+□)?□
+
+□)、□
+
+□・あ□
+
+□・(□
+
+□・)□
+
+□・・□
+
+□・。□
+
+□・―□
+
+□・?□
+
+□・、□
+
+□。あ□
+
+□。(□
+
+□。)□
+
+□。・□
+
+□。。□
+
+□。―□
+
+□。?□
+
+□。、□
+
+□―あ□
+
+□―(□
+
+□―)□
+
+□―・□
+
+□―。□
+
+□――□
+
+□―?□
+
+□―、□
+
+□?あ□
+
+□?(□
+
+□?)□
+
+□?・□
+
+□?。□
+
+□?―□
+
+□??□
+
+□?、□
+
+□、あ□
+
+□、(□
+
+□、)□
+
+□、・□
+
+□、。□
+
+□、―□
+
+□、?□
+
+□、、□
+
+\newpage
+{\bfseries%
+[mc/bx]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+}
+
+\if0
+{\ltseries%
+[mc/l]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+}
+\fi
+
+{\gtfamily
+[gt/m]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+
+{\bfseries%
+[gt/bx]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+}
+
+\if0
+{\ebseries%
+[gt/eb]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+}
+\fi
+}
+
+{\mgfamily
+[mg/m]
+
+□□□□◆□□□□◆□□□□◆□□□□◆,
+□□□□◆□□□□◆□□□□◆□□□□◆.
+
+□□,□□,□□□□◆,□□,□□.
+
+□□,□□,□□□□◆,□□□□.
+
+□□□□◆,□□.□□□□□□◆.
+
+□□□□◆。」「□□◆
+}
+
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/upjis2004.tex b/language/japanese/japanese-otf-uptex/test/uplatex/upjis2004.tex
new file mode 100644
index 0000000000..65a235f946
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/upjis2004.tex
@@ -0,0 +1,158 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{deluxe}
+\def\@default{default}
+\def\@br@{br}
+\def\@newjis@{04}
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+\else
+ \edef\@opt@{\option,\@opt@}
+\fi
+
+\ifx\burasage\@br@
+ \edef\@opt@{\@opt@,burasage}
+ \def\burasage{yes}
+\else
+ \def\burasage{no}
+\fi
+
+\ifx\jisvar\@newjis@
+ \edef\@opt@{\@opt@,jis2004}
+ \def\jisvar{2004}
+\else
+ \def\jisvar{conventional}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+
+\documentclass[a4paper,titlepage,draft]{\class}
+%\documentclass[a4paper,titlepage,draft,landscape]{\class}
+
+\usepackage[\@opt@]{otf}
+
+\makeatother
+
+\usepackage{redeffont}
+\parindent 0zw
+\pagestyle{empty}
+%\parskip \baselineskip
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+
+\def\testglyph{%
+逢芦飴溢茨鰯淫迂厩噂餌襖迦牙廻恢晦蟹葛鞄
+釜翰翫徽祇汲灸笈卿饗僅喰櫛屑粂祁隙倦捲牽
+鍵諺巷梗膏鵠甑叉榊薩鯖錆鮫餐杓灼酋楯薯藷
+哨鞘杖蝕訊逗摺撰煎煽穿箭詮噌遡揃遜腿蛸辿
+樽歎註瀦捗槌鎚辻挺鄭擢溺兎堵屠賭瀞遁謎灘
+楢禰牌這秤駁箸叛挽誹樋稗逼謬豹廟瀕斧蔽瞥
+蔑篇娩鞭庖蓬鱒迄儲餅籾爺鑓愈猷漣煉簾榔冤
+叟咬嘲囀徘扁棘橙狡甕甦疼祟竈筵篝腱艘芒虔
+蜃蠅訝靄靱騙鴉
+\ifuptexmode
+ 俱剝吞噓姸屛幷瘦繫摯懲蘒譿悞煒驊夆暵屢
+\fi
+}
+\def\testutf{%
+\UTF{9022}\UTF{82A6}\UTF{98F4}\UTF{6EA2}\UTF{8328}\UTF{9C2F}\UTF{6DEB}\UTF{8FC2}\UTF{53A9}\UTF{5642}%
+\UTF{990C}\UTF{8956}\UTF{8FE6}\UTF{7259}\UTF{5EFB}\UTF{6062}\UTF{6666}\UTF{87F9}\UTF{845B}\UTF{9784}%
+\UTF{91DC}\UTF{7FF0}\UTF{7FEB}\UTF{5FBD}\UTF{7947}\UTF{6C72}\UTF{7078}\UTF{7B08}\UTF{537F}\UTF{9957}%
+\UTF{50C5}\UTF{55B0}\UTF{6ADB}\UTF{5C51}\UTF{7C82}\UTF{7941}\UTF{9699}\UTF{5026}\UTF{6372}\UTF{727D}%
+\UTF{9375}\UTF{8AFA}\UTF{5DF7}\UTF{6897}\UTF{818F}\UTF{9D60}\UTF{7511}\UTF{53C9}\UTF{698A}\UTF{85A9}%
+\UTF{9BD6}\UTF{9306}\UTF{9BAB}\UTF{9910}\UTF{6753}\UTF{707C}\UTF{914B}\UTF{696F}\UTF{85AF}\UTF{85F7}%
+\UTF{54E8}\UTF{9798}\UTF{6756}\UTF{8755}\UTF{8A0A}\UTF{9017}\UTF{647A}\UTF{64B0}\UTF{714E}\UTF{717D}%
+\UTF{7A7F}\UTF{7BAD}\UTF{8A6E}\UTF{564C}\UTF{9061}\UTF{63C3}\UTF{905C}\UTF{817F}\UTF{86F8}\UTF{8FBF}%
+\UTF{6A3D}\UTF{6B4E}\UTF{8A3B}\UTF{7026}\UTF{6357}\UTF{69CC}\UTF{939A}\UTF{8FBB}\UTF{633A}\UTF{912D}%
+\UTF{64E2}\UTF{6EBA}\UTF{514E}\UTF{5835}\UTF{5C60}\UTF{8CED}\UTF{701E}\UTF{9041}\UTF{8B0E}\UTF{7058}%
+\UTF{6962}\UTF{79B0}\UTF{724C}\UTF{9019}\UTF{79E4}\UTF{99C1}\UTF{7BB8}\UTF{53DB}\UTF{633D}\UTF{8AB9}%
+\UTF{6A0B}\UTF{7A17}\UTF{903C}\UTF{8B2C}\UTF{8C79}\UTF{5EDF}\UTF{7015}\UTF{65A7}\UTF{853D}\UTF{77A5}%
+\UTF{8511}\UTF{7BC7}\UTF{5A29}\UTF{97AD}\UTF{5E96}\UTF{84EC}\UTF{9C52}\UTF{8FC4}\UTF{5132}\UTF{9905}%
+\UTF{7C7E}\UTF{723A}\UTF{9453}\UTF{6108}\UTF{7337}\UTF{6F23}\UTF{7149}\UTF{7C3E}\UTF{6994}\UTF{51A4}%
+\UTF{53DF}\UTF{54AC}\UTF{5632}\UTF{56C0}\UTF{5F98}\UTF{6241}\UTF{68D8}\UTF{6A59}\UTF{72E1}\UTF{7515}%
+\UTF{7526}\UTF{75BC}\UTF{795F}\UTF{7AC8}\UTF{7B75}\UTF{7BDD}\UTF{8171}\UTF{8258}\UTF{8292}\UTF{8654}%
+\UTF{8703}\UTF{8805}\UTF{8A1D}\UTF{9744}\UTF{9771}\UTF{9A19}\UTF{9D09}%
+\UTF{4FF1}\UTF{525D}\UTF{541E}\UTF{5653}\UTF{59F8}\UTF{5C5B}\UTF{5E77}\UTF{7626}\UTF{7E6B}\UTF{646F}%
+\UTF{FA40}\UTF{FA20}\UTF{8B7F}\UTF{609E}\UTF{7152}\UTF{9A4A}\UTF{5906}\UTF{66B5}\UTF{5C62}}
+
+\begin{document}
+class: \texttt{\class}\\
+option: \texttt{\option}\\
+burasage: \texttt{\burasage}\\
+jis version: \texttt{\jisvar}\\
+
+[mc/m]
+
+\testglyph
+
+\testutf
+
+{\bfseries%
+[mc/bx]
+
+\testglyph
+
+\testutf
+}
+
+{\gtfamily
+[gt/m]
+
+\testglyph
+
+\testutf
+
+{\bfseries%
+[gt/bx]
+
+\testglyph
+
+\testutf
+}}
+
+{\mgfamily
+[mg/m]
+
+\testglyph
+
+\testutf
+}
+
+%%% extra font
+{\ltseries%
+[mc/lt]
+
+\testglyph
+
+\testutf
+}
+
+{\gtfamily
+{\ebseries%
+[gt/eb]
+
+\testglyph
+
+\testutf
+}}
+
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest1.tex b/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest1.tex
new file mode 100644
index 0000000000..087bcbcece
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest1.tex
@@ -0,0 +1,103 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{deluxe}
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+\documentclass[a4paper,titlepage, draft]{\class}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+
+\pagestyle{empty}
+%\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\textwidth=115mm
+\textheight=210mm
+\begin{document}
+
+クラス:\texttt{\class}
+
+\vspace{\baselineskip}
+\huge
+\kanjiskip 0pt plus 1sp minus 1sp
+\xkanjiskip 0.25zw plus 1sp minus 1sp
+{\propshape
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+
+\bfseries
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+}
+
+{\gtfamily\mdseries\propshape
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+
+\bfseries\propshape
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+}
+
+{\mgfamily\propshape
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ}
+
+{\gtfamily\ebseries
+\noindent ヽヾゝゞーぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+}
+
+\ifuptexmode
+otfbeta-uptex (japanese-otf-uptex) Ver.0.18でProportional仮名を、
+Ver.0.21で半角片仮名を拡張しました。
+
+\long\def\testA{〃〆ヿゟゔゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿヷヸヹヺ
+𨳝櫛𥡴𨻶杓巽屠兔冕冤𡨚𤏐爨🄀
+🄐🄑🄒🄓🄔🄕🄖🄗🄘🄙🄚🄛🄜🄝🄞🄟🄠🄡🄢🄣
+🄤🄥🄦🄧🄨🄩🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝
+🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩🄰🄱🄲🄳🄴🄵🄶🄷
+🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃🅄🅅🅆🅇🅈🅉🈂🈷
+🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹🅺🅻🅼🅽🅾🅿🆀🆁🆂🆃
+🆄🆅🆆🆇🆈🆉眞𠤎𦥑𫟘沿芽槪割𦈢𠮷𩵋卿𫞎憲
+𠩤浩𫝆𫝷滋𠮟勺爵周将𠀋城𩙿真𠆢𫝑成𧾷𣳾炭
+𥫗彫潮𡈽冬𤴔姬𫞉諭輸𥙿𦚰𠘨𠂊𠦄卉寃拔𦦙𣏌
+杞𪧦𫞽絣𠔿𦉪𠂰𨦇𨸗𫠚𤋮桒𣲾𠘑嶲你𣘺𣏾𢘉
+。「」、・ヲァィゥェォャュョッ
+ーアイウエオカキクケコサシスセソ
+タチツテトナニヌネノハヒフヘホマ
+ミムメモヤユヨラリルレロワン゙゚
+}
+
+{\propshape
+\noindent\testA
+
+\bfseries
+\noindent\testA
+}
+
+{\gtfamily\mdseries\propshape
+\noindent\testA
+
+\bfseries\propshape
+\noindent\testA
+}
+
+{\mgfamily\propshape
+\noindent\testA
+}
+
+{\gtfamily\ebseries
+\noindent\testA
+}
+\fi
+
+
+\end{document}
+
diff --git a/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest2.tex b/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest2.tex
new file mode 100644
index 0000000000..a0b9bfcb6e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/test/uplatex/upkanatest2.tex
@@ -0,0 +1,75 @@
+% -*- coding: utf-8 -*-
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000 \uptexmodetrue\fi
+
+\makeatletter
+
+\def\@opt@{deluxe}
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+\documentclass[a4paper,draft,twocolumn]{\class}
+\usepackage[\@opt@]{otf}
+
+\makeatother
+\pagestyle{empty}
+%\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\parindent=0zw
+\textwidth=25zw
+\textheight=200mm
+\columnsep=1zw
+\makeatletter
+\long\def\test{ひらかな「ひらかな」ひらかな「ひら」「かな」\par
+漢字漢字「漢字漢字」漢字漢字「漢字」「漢字」\par
+ひらかな「ひらかな」漢字漢字「漢字」ひらかな\par
+次は“引用符”の‘テスト’です,ね.\par
+行末の区点は全角ドリに。なります。
+□□□□□□□□□□□□
+□□□□、□□□、□□□。\par
+行末の読点は半角ドリに、なります。\par
+□□□□□□□□□□□□
+□□□□、□□□、□□□、□□□。□□□。\par
+疑問符の後に空白は入るでしょうか?入った!オッケイです.\par
+\hbox to 2.5zw{漢:字}
+\setbox1=\hbox{あ}
+\dimen1=\wd1 \advance\dimen1 by .5zw
+\advance\dimen1 by \wd1
+\hbox to \dimen1{あ:あ}
+\dimen1=\wd1 \advance\dimen1 by 1.75zw
+\hbox to \dimen1{漢:あ}
+%\hbox to \dimen1{漢\hfil あ}
+\hbox to 7zw{漢字「漢字」漢字}
+\setbox1=\hbox{ひら}
+\dimen1=\wd1 \multiply\dimen1 by 3
+\advance\dimen1 by 1zw
+\hbox to \dimen1{ひら「ひら」ひら}
+}
+\makeatother
+\begin{document}
+
+クラス:\texttt{\class}
+
+\vspace{\baselineskip}
+%\kanjiskip 0pt plus 1sp minus 1sp
+\begingroup
+\propshape
+{\bfseries プロポーショナル組の例}
+
+\test
+\endgroup
+\newpage
+\phantom{クラス}
+
+\vspace{\baselineskip}
+{\bfseries べた組みの例}
+
+\test
+\end{document}
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothb-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothb-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothbn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothbn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgotheb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgotheb-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgotheb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgotheb-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothebn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothebn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothebn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothebn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothr-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothr-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothrn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothrn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothr-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothr-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothrn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothrn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminb-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminb-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminbn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminbn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminl-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminl-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminln-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminln-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminln-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminln-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminr-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminr-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminrn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminrn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgexpminrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothb-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothb-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothbn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothbn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgotheb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgotheb-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgotheb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgotheb-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothebn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothebn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothebn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothebn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothr-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothr-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothrn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothrn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothr-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothr-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothrn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothrn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminb-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminb-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminbn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminbn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminl-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminl-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminln-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminln-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminln-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminln-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminr-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminr-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminrn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminrn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upbrsgnmlminrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgothb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgothb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgothb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgothb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgothbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgothbn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgothbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgothbn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgotheb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgotheb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgotheb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgotheb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgothebn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgothebn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgothebn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgothebn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgothr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgothr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgothrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgothrn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpgothrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpgothrn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpmgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpmgothr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpmgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpmgothr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpmgothrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpmgothrn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpmgothrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpmgothrn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminbn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminbn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminl-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminl-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminln-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminln-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminln-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminln-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminrn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upexpminrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upexpminrn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upexpminrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgothb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgothb-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgothb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgothb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgothbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgothbn-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgothbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgothbn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgotheb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgotheb-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgotheb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgotheb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgothebn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgothebn-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgothebn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgothebn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgothr-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgothr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgothrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgothrn-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphgothrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphgothrn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphmgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphmgothr-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphmgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphmgothr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphmgothrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphmgothrn-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphmgothrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphmgothrn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminb-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminbn-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminbn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminl-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminl-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminln-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminln-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminln-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminln-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminr-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminrn-h.tfm
new file mode 100644
index 0000000000..be90188003
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uphminrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uphminrn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uphminrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgothb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgothb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgothb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgothb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgothbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgothbn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgothbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgothbn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgotheb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgotheb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgotheb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgotheb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgothebn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgothebn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgothebn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgothebn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgothr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgothr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgothrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgothrn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlgothrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlgothrn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlmgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlmgothr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlmgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlmgothr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlmgothrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlmgothrn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlmgothrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlmgothrn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminbn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminbn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminl-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminl-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminln-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminln-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminln-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminln-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminrn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/upnmlminrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/upnmlminrn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/upnmlminrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubygothb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubygothb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubygothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubygothb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubygothb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubygothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubygotheb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubygotheb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubygotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubygotheb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubygotheb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubygotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubygothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubygothr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubygothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubygothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubygothr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubygothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubymgothr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubymgothr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubymgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubymgothr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubymgothr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubymgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubyminb-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubyminb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubyminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubyminb-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubyminb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubyminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubyminl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubyminl-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubyminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubyminl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubyminl-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubyminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubyminr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubyminr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubyminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/uprubyminr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/uprubyminr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/uprubyminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcgrk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcgrk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcgrk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcgrk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcgrk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcgrk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcgrl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcgrl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcgrl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcgrl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcgrl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcgrl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcgrm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcgrm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcgrm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcgrm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcgrm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcgrm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcgro-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcgro-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcgro-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcgro-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcgro-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcgro-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcmrk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcmrk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcmrk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcmrk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcmrk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcmrk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcmrl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcmrl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcmrl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcmrl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcmrl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcmrl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcmrm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcmrm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcmrm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcmrm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcmrm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcmrm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcmro-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcmro-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcmro-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfcmro-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfcmro-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfcmro-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrj-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrj-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrj-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrj-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrj-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrj-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrn-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrn-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgro-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgro-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgro-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgro-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgro-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgro-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrp-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrp-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrp-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrp-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrp-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrp-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrr-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrr-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrs-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrs-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrs-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrs-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrs-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrs-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrt-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrt-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrt-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrt-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrt-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrt-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgru-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgru-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgru-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgru-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgru-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgru-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrv-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrv-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrv-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrv-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrv-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrv-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrw-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrw-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrw-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrw-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrw-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrw-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrx-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrx-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrx-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrx-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrx-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrx-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgry-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgry-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgry-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgry-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgry-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgry-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrz-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrz-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrz-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfgrz-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfgrz-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfgrz-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbj-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbj-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbj-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbj-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbj-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbj-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbn-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbn-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbo-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbo-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbo-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbo-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbo-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbo-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbp-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbp-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbp-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbp-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbp-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbp-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbr-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbr-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbs-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbs-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbs-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbs-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbs-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbs-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbt-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbt-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbt-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbt-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbt-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbt-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbu-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbu-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbu-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbu-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbu-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbu-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbv-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbv-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbv-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbv-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbv-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbv-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbx-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbx-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbx-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbx-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbx-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbx-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgby-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgby-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgby-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgby-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgby-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgby-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbz-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbz-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbz-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgbz-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgbz-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgbz-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgej-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgej-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgej-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgej-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgej-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgej-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgek-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgek-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgek-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgek-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgek-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgek-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgel-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgel-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgel-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgel-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgel-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgel-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgem-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgem-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgem-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgem-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgem-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgem-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgen-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgen-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgen-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgen-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgen-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgen-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgeo-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgeo-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgeo-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgeo-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgeo-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgeo-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgep-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgep-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgep-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgep-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgep-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgep-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgeq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgeq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgeq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgeq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgeq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgeq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjger-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjger-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjger-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjger-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjger-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjger-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjges-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjges-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjges-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjges-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjges-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjges-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjget-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjget-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjget-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjget-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjget-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjget-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgeu-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgeu-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgeu-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgeu-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgeu-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgeu-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgev-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgev-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgev-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgev-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgev-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgev-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgex-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgex-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgex-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgex-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgex-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgex-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgey-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgey-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgey-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgey-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgey-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgey-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgez-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgez-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgez-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgez-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgez-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgez-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrj-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrj-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrj-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrj-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrj-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrj-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrn-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrn-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgro-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgro-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgro-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgro-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgro-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgro-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrp-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrp-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrp-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrp-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrp-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrp-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrr-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrr-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrs-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrs-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrs-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrs-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrs-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrs-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrt-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrt-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrt-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrt-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrt-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrt-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgru-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgru-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgru-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgru-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgru-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgru-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrv-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrv-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrv-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrv-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrv-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrv-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrx-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrx-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrx-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrx-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrx-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrx-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgry-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgry-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgry-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgry-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgry-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgry-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrz-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrz-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrz-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjgrz-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjgrz-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjgrz-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbj-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbj-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbj-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbj-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbj-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbj-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbn-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbn-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbo-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbo-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbo-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbo-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbo-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbo-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbp-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbp-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbp-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbp-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbp-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbp-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbr-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbr-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbs-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbs-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbs-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbs-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbs-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbs-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbt-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbt-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbt-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbt-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbt-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbt-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbu-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbu-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbu-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbu-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbu-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbu-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbv-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbv-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbv-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbv-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbv-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbv-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbx-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbx-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbx-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbx-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbx-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbx-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmby-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmby-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmby-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmby-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmby-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmby-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbz-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbz-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbz-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmbz-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmbz-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmbz-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrj-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrj-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrj-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrj-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrj-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrj-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrn-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrn-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgro-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgro-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgro-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgro-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgro-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgro-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrp-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrp-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrp-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrp-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrp-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrp-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrr-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrr-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrs-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrs-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrs-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrs-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrs-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrs-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrt-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrt-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrt-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrt-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrt-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrt-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgru-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgru-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgru-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgru-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgru-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgru-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrv-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrv-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrv-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrv-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrv-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrv-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrx-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrx-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrx-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrx-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrx-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrx-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgry-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgry-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgry-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgry-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgry-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgry-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrz-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrz-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrz-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmgrz-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmgrz-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmgrz-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlj-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlj-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlj-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlj-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlj-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlj-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmll-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmll-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmll-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmll-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmll-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmll-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmln-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmln-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmln-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmln-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlo-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlo-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlo-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlo-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlo-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlo-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlp-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlp-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlp-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlp-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlp-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlp-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlr-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlr-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmls-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmls-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmls-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmls-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmls-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmls-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlt-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlt-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlt-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlt-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlt-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlt-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlu-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlu-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlu-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlu-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlu-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlu-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlv-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlv-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlv-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlv-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlv-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlv-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlx-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlx-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlx-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlx-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlx-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlx-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmly-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmly-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmly-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmly-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmly-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmly-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlz-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlz-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlz-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmlz-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmlz-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmlz-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrj-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrj-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrj-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrj-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrj-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrj-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrn-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrn-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmro-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmro-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmro-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmro-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmro-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmro-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrp-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrp-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrp-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrp-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrp-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrp-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrr-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrr-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrs-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrs-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrs-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrs-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrs-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrs-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrt-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrt-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrt-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrt-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrt-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrt-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmru-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmru-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmru-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmru-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmru-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmru-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrv-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrv-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrv-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrv-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrv-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrv-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrx-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrx-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrx-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrx-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrx-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrx-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmry-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmry-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmry-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmry-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmry-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmry-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrz-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrz-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrz-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfjmrz-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfjmrz-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfjmrz-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrj-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrj-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrj-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrj-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrj-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrj-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrn-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrn-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmro-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmro-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmro-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmro-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmro-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmro-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrp-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrp-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrp-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrp-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrp-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrp-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrr-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrr-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrs-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrs-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrs-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrs-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrs-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrs-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrt-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrt-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrt-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrt-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrt-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrt-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmru-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmru-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmru-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmru-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmru-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmru-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrv-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrv-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrv-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrv-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrv-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrv-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrw-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrw-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrw-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrw-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrw-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrw-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrx-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrx-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrx-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrx-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrx-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrx-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmry-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmry-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmry-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmry-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmry-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmry-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrz-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrz-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrz-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utfmrz-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utfmrz-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utfmrz-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrn-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrn-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgro-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgro-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgro-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgro-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgro-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgro-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrp-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrp-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrp-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrp-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrp-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrp-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrr-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrr-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrs-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrs-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrs-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrs-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrs-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrs-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrt-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrt-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrt-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrt-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrt-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrt-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgru-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgru-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgru-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgru-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgru-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgru-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrv-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrv-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrv-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrv-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrv-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrv-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrw-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrw-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrw-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrw-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrw-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrw-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrx-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrx-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrx-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrx-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrx-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrx-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrz-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrz-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrz-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftgrz-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftgrz-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftgrz-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrk-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrk-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrk-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrk-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrk-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrk-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrl-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrl-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrl-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrl-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrm-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrm-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrm-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrm-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrm-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrm-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrn-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrn-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrn-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrn-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmro-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmro-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmro-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmro-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmro-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmro-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrp-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrp-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrp-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrp-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrp-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrp-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrq-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrq-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrq-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrq-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrq-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrq-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrr-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrr-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrr-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrr-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrs-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrs-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrs-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrs-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrs-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrs-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrt-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrt-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrt-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrt-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrt-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrt-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmru-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmru-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmru-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmru-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmru-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmru-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrv-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrv-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrv-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrv-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrv-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrv-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrw-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrw-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrw-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrw-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrw-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrw-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrx-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrx-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrx-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrx-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrx-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrx-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrz-h.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrz-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrz-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/tfm/utftmrz-v.tfm b/language/japanese/japanese-otf-uptex/tfm/utftmrz-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/tfm/utftmrz-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/umakeotf b/language/japanese/japanese-otf-uptex/umakeotf
new file mode 100755
index 0000000000..5acab5eb18
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/umakeotf
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+#
+# This script is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+#
+
+# setting for ovp2ovf & uppltotf
+. ./umakeotf_pre
+
+if test ! -d tfm; then
+mkdir tfm
+fi
+
+
+echo "making tfm ..."
+for series in nml exp ruby
+do
+for face in minr gothr minb gothb mgothr
+do
+$UPPLTOTF -kanji=uptex basepl/ubase-h.pl tfm/up${series}${face}-h.tfm
+$UPPLTOTF -kanji=uptex basepl/ubase-v.pl tfm/up${series}${face}-v.tfm
+done
+done
+#for extra fonts
+for series in nml exp ruby
+do
+for face in gotheb minl
+do
+$UPPLTOTF -kanji=uptex basepl/ubase-h.pl tfm/up${series}${face}-h.tfm
+$UPPLTOTF -kanji=uptex basepl/ubase-v.pl tfm/up${series}${face}-v.tfm
+done
+done
+
+
+echo "making vf (wait a while)..."
+for face in minr gothr minb gothb mgothr
+do
+./umkjvf -ucs -sp 1 -cq upnml${face}-h uph${face}-h
+./umkjvf -ucs -sp 1 -cm -cp upnml${face}-v uph${face}-v
+done
+#extra fonts
+for face in gotheb minl
+do
+./umkjvf -ucs -sp 1 -cq upnml${face}-h uph${face}-h
+./umkjvf -ucs -sp 1 -cm -cp upnml${face}-v uph${face}-v
+done
+
+echo "making alt. kana ..."
+for face in minr gothr minb gothb mgothr
+do
+./umkjvf -ucs -sp 1 -cq -expert upexp${face}-h uph${face}-h cidj${face}
+./umkjvf -ucs -sp 1 -cm -cp -expert upexp${face}-v uph${face}-v cidj${face}
+./umkjvf -ucs -sp 1 -cq -ruby upruby${face}-h uph${face}-h cidj${face}
+./umkjvf -ucs -sp 1 -cm -cp -ruby upruby${face}-v uph${face}-v cidj${face}
+done
+#extra fonts
+for face in gotheb minl
+do
+./umkjvf -ucs -sp 1 -cq -expert upexp${face}-h uph${face}-h cidj${face}
+./umkjvf -ucs -sp 1 -cm -cp -expert upexp${face}-v uph${face}-v cidj${face}
+./umkjvf -ucs -sp 1 -cq -ruby upruby${face}-h uph${face}-h cidj${face}
+./umkjvf -ucs -sp 1 -cm -cp -ruby upruby${face}-v uph${face}-v cidj${face}
+done
+
+
+echo "making tfm for supplementary plane ..."
+perl script/mktfm_sp.pl
+echo "making vf for supplementary plane ..."
+perl script/mkutfvf_sp.pl
+
+
+echo "finishing ..."
+if test ! -d vf; then
+mkdir vf
+fi
+mv *.vf vf/
+mv *.tfm tfm/
+rm -rf ovp
diff --git a/language/japanese/japanese-otf-uptex/umakeotf_brsg b/language/japanese/japanese-otf-uptex/umakeotf_brsg
new file mode 100755
index 0000000000..f2c878285c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/umakeotf_brsg
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+#
+# This script is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+#
+
+# setting for ovp2ovf & uppltotf
+. ./umakeotf_pre
+
+if test ! -d tfm; then
+mkdir tfm
+fi
+
+
+echo "making tfm for burasage ..."
+for series in nml exp
+do
+for face in minr gothr minb gothb mgothr
+do
+$UPPLTOTF -kanji=uptex basepl/ubrsg-h.pl tfm/upbrsg${series}${face}-h.tfm
+$UPPLTOTF -kanji=uptex basepl/ubrsg-v.pl tfm/upbrsg${series}${face}-v.tfm
+done
+done
+#extra fonts
+for series in nml exp
+do
+for face in gotheb minl
+do
+$UPPLTOTF -kanji=uptex basepl/ubrsg-h.pl tfm/upbrsg${series}${face}-h.tfm
+$UPPLTOTF -kanji=uptex basepl/ubrsg-v.pl tfm/upbrsg${series}${face}-v.tfm
+done
+done
+
+
+echo "making vf for burasage ..."
+for face in minr gothr minb gothb mgothr
+do
+./umkjvf -ucs -sp 1 -sage -cq upbrsgnml${face}-h uph${face}-h
+./umkjvf -ucs -sp 1 -sage -cm -cp upbrsgnml${face}-v uph${face}-v
+done
+#extra fonts
+for face in gotheb minl
+do
+./umkjvf -ucs -sp 1 -sage -cq upbrsgnml${face}-h uph${face}-h
+./umkjvf -ucs -sp 1 -sage -cm -cp upbrsgnml${face}-v uph${face}-v
+done
+for face in minr gothr minb gothb mgothr
+do
+./umkjvf -ucs -sp 1 -sage -cq -expert upbrsgexp${face}-h uph${face}-h cidj${face}
+./umkjvf -ucs -sp 1 -sage -cm -cp -expert upbrsgexp${face}-v uph${face}-v cidj${face}
+done
+#extra fonts
+for face in gotheb minl
+do
+./umkjvf -ucs -sp 1 -sage -cq -expert upbrsgexp${face}-h uph${face}-h cidj${face}
+./umkjvf -ucs -sp 1 -sage -cm -cp -expert upbrsgexp${face}-v uph${face}-v cidj${face}
+done
+
+
+echo "finishing ..."
+if test ! -d vf; then
+mkdir vf
+fi
+mv *.vf vf/
+mv *.tfm tfm/
diff --git a/language/japanese/japanese-otf-uptex/umakeotf_jis04 b/language/japanese/japanese-otf-uptex/umakeotf_jis04
new file mode 100755
index 0000000000..6001bf2c62
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/umakeotf_jis04
@@ -0,0 +1,112 @@
+#!/bin/sh
+
+#
+# This script is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+#
+
+# setting for ovp2ovf & uppltotf
+. ./umakeotf_pre
+
+if test ! -d tfm; then
+mkdir tfm
+fi
+
+
+echo "making tfm for jis2004 ..."
+for series in nml exp
+do
+for face in minr gothr minb gothb mgothr
+do
+$UPPLTOTF -kanji=uptex basepl/ubase-h.pl tfm/up${series}${face}n-h.tfm
+$UPPLTOTF -kanji=uptex basepl/ubase-v.pl tfm/up${series}${face}n-v.tfm
+done
+done
+#for extra fonts
+for series in nml exp
+do
+for face in gotheb minl
+do
+$UPPLTOTF -kanji=uptex basepl/ubase-h.pl tfm/up${series}${face}n-h.tfm
+$UPPLTOTF -kanji=uptex basepl/ubase-v.pl tfm/up${series}${face}n-v.tfm
+done
+done
+
+
+echo "making tfm for burasage & jis2004 ..."
+for series in nml exp
+do
+for face in minr gothr minb gothb mgothr
+do
+$UPPLTOTF -kanji=uptex basepl/ubrsg-h.pl tfm/upbrsg${series}${face}n-h.tfm
+$UPPLTOTF -kanji=uptex basepl/ubrsg-v.pl tfm/upbrsg${series}${face}n-v.tfm
+done
+done
+#for extra fonts
+for series in nml exp
+do
+for face in gotheb minl
+do
+$UPPLTOTF -kanji=uptex basepl/ubrsg-h.pl tfm/upbrsg${series}${face}n-h.tfm
+$UPPLTOTF -kanji=uptex basepl/ubrsg-v.pl tfm/upbrsg${series}${face}n-v.tfm
+done
+done
+
+
+echo "making vf for jis2004 ..."
+for face in minr gothr minb gothb mgothr
+do
+./umkjvf -ucs -sp 1 -cq upnml${face}n-h uph${face}n-h
+./umkjvf -ucs -sp 1 -cm -cp upnml${face}n-v uph${face}n-v
+done
+#extra fonts
+for face in gotheb minl
+do
+./umkjvf -ucs -sp 1 -cq upnml${face}n-h uph${face}n-h
+./umkjvf -ucs -sp 1 -cm -cp upnml${face}n-v uph${face}n-v
+done
+
+for face in minr gothr minb gothb mgothr
+do
+./umkjvf -ucs -sp 1 -cq -expert upexp${face}n-h uph${face}n-h cidj${face}
+./umkjvf -ucs -sp 1 -cm -cp -expert upexp${face}n-v uph${face}n-v cidj${face}
+done
+#extra fonts
+for face in gotheb minl
+do
+./umkjvf -ucs -sp 1 -cq -expert upexp${face}n-h uph${face}n-h cidj${face}
+./umkjvf -ucs -sp 1 -cm -cp -expert upexp${face}n-v uph${face}n-v cidj${face}
+done
+
+
+echo "making vf for burasage & jis2004 ..."
+for face in minr gothr minb gothb mgothr
+do
+./umkjvf -ucs -sp 1 -sage -cq upbrsgnml${face}n-h uph${face}n-h
+./umkjvf -ucs -sp 1 -sage -cm -cp upbrsgnml${face}n-v uph${face}n-v
+done
+#extra fonts
+for face in gotheb minl
+do
+./umkjvf -ucs -sp 1 -sage -cq upbrsgnml${face}n-h uph${face}n-h
+./umkjvf -ucs -sp 1 -sage -cm -cp upbrsgnml${face}n-v uph${face}n-v
+done
+
+for face in minr gothr minb gothb mgothr
+do
+./umkjvf -ucs -sp 1 -sage -cq -expert upbrsgexp${face}n-h uph${face}n-h cidj${face}
+./umkjvf -ucs -sp 1 -sage -cm -cp -expert upbrsgexp${face}n-v uph${face}n-v cidj${face}
+done
+#extra fonts
+for face in gotheb minl
+do
+./umkjvf -ucs -sp 1 -sage -cq -expert upbrsgexp${face}n-h uph${face}n-h cidj${face}
+./umkjvf -ucs -sp 1 -sage -cm -cp -expert upbrsgexp${face}n-v uph${face}n-v cidj${face}
+done
+
+
+echo "finishing ..."
+if test ! -d vf; then
+mkdir vf
+fi
+mv *.vf vf/
+mv *.tfm tfm/
diff --git a/language/japanese/japanese-otf-uptex/umakeotf_pre b/language/japanese/japanese-otf-uptex/umakeotf_pre
new file mode 100644
index 0000000000..1336cc2182
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/umakeotf_pre
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+#
+# This script is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+#
+
+# setting for ovp2ovf & uppltotf
+#OVP2OVF='omfonts -ovp2ovf'
+OVP2OVF=ovp2ovf
+export OVP2OVF
+UPPLTOTF=uppltotf
+
diff --git a/language/japanese/japanese-otf-uptex/umakeotf_prop b/language/japanese/japanese-otf-uptex/umakeotf_prop
new file mode 100755
index 0000000000..378429ed44
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/umakeotf_prop
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+#
+# This script is a part of otfbeta-uptex (a.k.a. japanese-otf-uptex).
+#
+
+# setting for ovp2ovf & uppltotf
+. ./umakeotf_pre
+
+if test ! -d tfm; then
+mkdir tfm
+fi
+if test ! -d vf; then
+mkdir vf
+fi
+if test ! -d ovp; then
+mkdir ovp
+fi
+
+echo "making proportional kana tfm/vf ..."
+perl -s script/umkpkana.pl -sp=1 -hk
+perl -s script/umkvpkana.pl -sp=1
+
+for face in minw3 minw6 kakuw3 kakuw6 maruw4
+do
+$UPPLTOTF -kanji=uptex pl/upphira${face}-h.pl tfm/upphira${face}-h.tfm
+$UPPLTOTF -kanji=uptex pl/upphira${face}-v.pl tfm/upphira${face}-v.tfm
+done
+
+for face in minw3 minw6 kakuw3 kakuw6 maruw4
+do
+$OVP2OVF ovp/upphira${face}-h.ovp vf/upphira${face}-h.vf vf/upphira${face}-h.ofm
+$OVP2OVF ovp/upphira${face}-v.ovp vf/upphira${face}-v.vf vf/upphira${face}-v.ofm
+done
+
+rm vf/*.ofm
+rm -rf ovp
+rm -rf pl
diff --git a/language/japanese/japanese-otf-uptex/umkjvf b/language/japanese/japanese-otf-uptex/umkjvf
new file mode 100755
index 0000000000..39973e0999
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/umkjvf
@@ -0,0 +1,953 @@
+#!/usr/bin/perl
+###################
+### main part ###
+###################
+use FindBin;
+use lib "$FindBin::Bin/script";
+use CheckDVICode;
+#initialize
+&initialize_constant;
+#processing arguments
+&proc_arg;
+if ($sp==1) { # supplemental plane
+ use MakeSPList;
+ &make_sp_char_list('j');
+ %exist_char=%{$MakeSPList::r_exist_char->{'j'}};
+}
+#make ovp
+&font_header;
+&write_char;
+#make vf & tfm
+&make_vf;
+&make_tfm;
+
+##########################
+#### dfn of sub rtns ###
+##########################
+sub initialize_constant{
+ $unknown=0;
+ $burasage=0;
+ $jis2004=0;
+ $minute_option=0;
+ $alt_kana_true=0;
+ $ruby_hira_code=0x356F;
+ $ruby_kata_code=0x3751;
+ $exp_hira_code_h=0x6F63;
+ $exp_kata_code_h=0x313D;
+ $exp_hira_code_v=0x325a;
+ $exp_kata_code_v=0x3434;
+ $ruby_font_map=2;
+ $exp_font_map=2;
+ @yoko_tfm_binary=(0x00, 0x0B, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x14, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEB, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+ @tate_tfm_binary=(0x00, 0x09, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+ @yoko_ucs_tfm_binary=map{ hex($_) } qw/
+ 00 0b 00 40 00 6c 00 12 00 00 00 01 00 03 00 02
+ 00 02 00 01 00 00 00 00 00 00 00 09 00 00 00 00
+ 00 a0 00 00 0b 55 4e 53 50 45 43 49 46 49 45 44
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 0b 55 4e 53
+ 50 45 43 49 46 49 45 44 00 00 00 00 00 00 00 00
+ 80 00 00 00 00 00 00 00 ff 61 00 01 ff 62 00 01
+ ff 63 00 01 ff 64 00 01 ff 65 00 01 ff 66 00 01
+ ff 67 00 01 ff 68 00 01 ff 69 00 01 ff 6a 00 01
+ ff 6b 00 01 ff 6c 00 01 ff 6d 00 01 ff 6e 00 01
+ ff 6f 00 01 ff 70 00 01 ff 71 00 01 ff 72 00 01
+ ff 73 00 01 ff 74 00 01 ff 75 00 01 ff 76 00 01
+ ff 77 00 01 ff 78 00 01 ff 79 00 01 ff 7a 00 01
+ ff 7b 00 01 ff 7c 00 01 ff 7d 00 01 ff 7e 00 01
+ ff 7f 00 01 ff 80 00 01 ff 81 00 01 ff 82 00 01
+ ff 83 00 01 ff 84 00 01 ff 85 00 01 ff 86 00 01
+ ff 87 00 01 ff 88 00 01 ff 89 00 01 ff 8a 00 01
+ ff 8b 00 01 ff 8c 00 01 ff 8d 00 01 ff 8e 00 01
+ ff 8f 00 01 ff 90 00 01 ff 91 00 01 ff 92 00 01
+ ff 93 00 01 ff 94 00 01 ff 95 00 01 ff 96 00 01
+ ff 97 00 01 ff 98 00 01 ff 99 00 01 ff 9a 00 01
+ ff 9b 00 01 ff 9c 00 01 ff 9d 00 01 ff 9e 00 01
+ ff 9f 00 01 02 11 00 00 01 11 00 00 00 00 00 00
+ 00 08 00 00 00 10 00 00 00 00 00 00 00 0e 14 7b
+ 00 00 00 00 00 01 eb 85 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00
+ 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ /;
+ @minute_code=(0x216C, 0x216C, 0x216D, 0x216D);
+ @shift_minute_code=(0x818C, 0x818C, 0x818D, 0x818D);
+ @cid_minute_code=(0x6E3D, 0x6E3E, 0x6C44, 0x6C45);
+ @cid_hquote_code=(0x3A4E, 0x3A4F, 0x3A50, 0x3A51); # CID: 670 .. 673
+ @cid_vquote_code=(0x314A, 0x3143, 0x3148, 0x3145); # CID: 8282, 8275, 8280, 8277
+ @ruby_odori_h=(0x3559, 0x355a, 0x355b, 0x355c, 0x3933);
+ @ruby_odori_v=(0x3559, 0x355a, 0x355b, 0x355c, 0x3934);
+ @exp_odori_h=(0x313a, 0x313b, 0x6f61, 0x6f62, 0x313c); # CID: 12362, 12363, 12273, 12274, 12364
+ @exp_odori_v=(0x3431, 0x3432, 0x3258, 0x3259, 0x3433); # CID: 12545, 12456, 12457, 12274, 12547
+ @cid_hkana_code=(0x3537 .. 0x356F, 0x3630 .. 0x3635); # CID: 327 .. 389
+ %kaisei_jikei = (0x3029 => 8266, 0x3032 => 7961, 0x303B => 7634, 0x306E => 7635, 0x3071 => 7962, 0x3073 => 7636, 0x307C => 7637, 0x312A => 7638, 0x3139 => 20271, 0x313D => 7642, 0x3142 => 13650, 0x3228 => 7645, 0x3260 => 7647, 0x3267 => 7965, 0x3276 => 13673, 0x327A => 20269, 0x3322 => 7650, 0x336B => 7652, 0x3373 => 7653, 0x3378 => 20290, 0x344D => 7656, 0x3465 => 7657, 0x352B => 7658, 0x3540 => 7659, 0x3562 => 7966, 0x3564 => 20270, 0x3568 => 20263, 0x362A => 7661, 0x3642 => 7968, 0x364F => 7662, 0x3674 => 7664, 0x367B => 7665, 0x367D => 7666, 0x3729 => 20272, 0x3737 => 7668, 0x3764 => 20273, 0x3771 => 7674, 0x377E => 7676, 0x3830 => 20276, 0x3841 => 7678, 0x392B => 7679, 0x393C => 20279, 0x3974 => 7683, 0x3979 => 20284, 0x3A35 => 20281, 0x3A67 => 7686, 0x3B27 => 7688, 0x3B2A => 7689, 0x3B2C => 7690, 0x3B2D => 20280, 0x3B41 => 7970, 0x3C5D => 7695, 0x3C5E => 7696, 0x3D36 => 7698, 0x3D5D => 13460, 0x3D72 => 7701, 0x3D73 => 7702, 0x3E25 => 7703, 0x3E64 => 7708, 0x3E73 => 20282, 0x3F2A => 7709, 0x3F56 => 13860, 0x3F60 => 7711, 0x4022 => 7713, 0x4071 => 7716, 0x4079 => 7718, 0x407A => 7972, 0x407C => 7973, 0x407D => 7974, 0x4127 => 7720, 0x4139 => 7721, 0x414C => 7722, 0x4237 => 7975, 0x423D => 7726, 0x425C => 7728, 0x427D => 7733, 0x4329 => 7735, 0x432E => 7738, 0x4337 => 13915, 0x4370 => 7740, 0x4375 => 7741, 0x443D => 7743, 0x4448 => 7744, 0x444A => 7745, 0x4454 => 8267, 0x4472 => 20286, 0x4522 => 7748, 0x4527 => 7749, 0x452E => 7750, 0x4546 => 13949, 0x4548 => 7753, 0x454B => 7754, 0x4552 => 7756, 0x4654 => 7761, 0x465B => 20287, 0x4666 => 7766, 0x4667 => 7767, 0x466A => 7768, 0x4729 => 7769, 0x4757 => 7771, 0x4767 => 7772, 0x4769 => 7773, 0x477D => 20288, 0x4824 => 7775, 0x4840 => 7978, 0x4854 => 7778, 0x4870 => 13495, 0x4875 => 7780, 0x4923 => 7782, 0x492F => 7783, 0x4935 => 7785, 0x493F => 20222, 0x4940 => 7786, 0x494E => 7787, 0x4960 => 20289, 0x4A43 => 7789, 0x4A4D => 7790, 0x4A4E => 14013, 0x4A53 => 7979, 0x4A5A => 7791, 0x4A5C => 20291, 0x4A79 => 7792, 0x4B29 => 7794, 0x4B70 => 7796, 0x4B78 => 7980, 0x4C59 => 7798, 0x4C5F => 7799, 0x4C62 => 20293, 0x4C6C => 20294, 0x4C7A => 7801, 0x4C7C => 7802, 0x4D32 => 14074, 0x4E7A => 7809, 0x4E7B => 7810, 0x4E7C => 20265, 0x4F31 => 7812, 0x514D => 7817, 0x5257 => 14111, 0x527B => 20277, 0x535E => 7821, 0x5373 => 14116, 0x5751 => 13538, 0x5928 => 7991, 0x6044 => 20278, 0x6131 => 20267, 0x6134 => 20283, 0x6156 => 20175, 0x635E => 20285, 0x6427 => 20266, 0x6440 => 7997, 0x6727 => 20275, 0x675B => 14196, 0x676A => 20292, 0x694A => 20274, 0x6967 => 20296, 0x6A24 => 20295, 0x6B43 => 20268, 0x7057 => 13624, 0x7159 => 8003, 0x726D => 14272);
+}
+sub reorder_odoriji {
+=comment
+The order of odorijis in UCS is different from that in JIS
+JIS UCS
+0x2133 U+30FD # KATAKANA ITERATION MARK
+0x2134 U+30FE # KATAKANA VOICED ITERATION MARK
+0x2135 U+309D # HIRAGANA ITERATION MARK
+0x2136 U+309E # HIRAGANA VOICED ITERATION MARK
+0x213C U+30FC # KATAKANA-HIRAGANA PROLONGED SOUND MARK
+=cut
+ my $ref;
+ foreach $ref (\@ruby_odori_h, \@ruby_odori_v, \@exp_odori_h, \@exp_odori_v) {
+ @$ref = @$ref[2..4, 0, 1];
+ }
+}
+sub proc_arg {
+ if ($#ARGV == -1) {&print_help;}
+ GetOptions(\@ARGV, ['^-b', \$baseline_shift, 1], ['^-m', \$minute_option, 0], ['^-cm', \$cid_minute, 0], ['^-cq', \$cid_quote, 0], ['^-cp', \$comma_period, 0], ['^-chk', \$cid_hankana, 0], ['^-SJIS', \$sjis, 0], ['^-scale', \$scale, 1], ['^-notfm', \$without_tfm, 1], ['^-expert', \$expert, 0], ['^-ruby', \$ruby, 0], ['^-sage', \$burasage, 0], ['^-jp04', \$jis2004, 0], ['^-ucs', \$ucs, 0], ['^-sp', \$sp, 1], ['^-ovp2ovf', \$ovp2ovf_command, 1], ['^-h(e|el|elp)?', \$help, 0], ['^-dbg', \$debug_mode, 0], ['^-(.+)', \$unknown, 0]);
+ if ($unknown == 1){
+ print "mkjvf: Unknown options!\n";
+ &print_help;
+ }
+ if ($help == 1){&print_help;}
+ if (($expert == 0) && ($ruby == 0)){
+ if ($#ARGV <= 0) {
+ print "mkjvf: Need two to three file arguments.\n";
+ &print_help;
+ }
+ } elsif (($expert != 0) && ($ruby != 0)){
+ print "mkjvf: You can't use \"-ruby\" and \"-expert\" at same time.\n";
+ &print_help;
+ } elsif (($scale != 0) && ($ruby != 0)){
+ print "mkjvf: You can't use \"-ruby\" and \"-scale\" at same time.\n";
+ &print_help;
+ } elsif (($jis2004 != 0) && ($ruby != 0)){
+ print "mkjvf: You can't use \"-ruby\" and \"-jp04\" at same time.\n";
+ &print_help;
+ } elsif (($jis2004 != 0) && ($sjis != 0)){
+ print "mkjvf: You can't use \"-sjis\" and \"-jp04\" at same time.\n";
+ &print_help;
+ } elsif (($jis2004 != 0) && ($ucs != 0)){
+ print "mkjvf: You can't use \"-ucs\" and \"-jp04\" at same time.\n";
+ &print_help;
+ } else {
+ if ($#ARGV <= 1) {
+ print "mkjvf: Need three file arguments for this option.\n";
+ &print_help;
+ }
+ $alt_kana_true=1;
+ }
+ if ($scale < 0 || $scale >= 1){
+ print "mkjvf: Invalid Scale!!\n";
+ &print_help;
+ }
+ if ($scale == 0){$scale = 1;}
+ if ($sjis != 0){$max_ku=120;}else{$max_ku=94;}
+ if ($cid_minute != 0){$minute_option = 1;}
+ if ($ucs){&reorder_odoriji; $CheckDVICode::is_ucs=$ucs;}
+ $tfm_name = shift(@ARGV);
+ $tfm_name =~ s/\.tfm//;
+ $kanji_font = shift(@ARGV);
+ $kanji_font =~ s/\.tfm//;
+ $kana_font = shift(@ARGV);
+ $kana_font =~ s/\.tfm//;
+ &get_metric;
+ $half_width= ($font_at / 2);
+ $quater_width= ($font_at / 4);
+ @minute_right=($font_at*0.1, $font_at*0.4, $font_at*0.1, $font_at*0.4);
+ @minute_down=(-$font_at*0.65, $font_at*0.65, -$font_at*0.6, $font_at*0.6);
+ #open output file
+ open(OVP,">$tfm_name.ovp") || die "Can't make \'$tfm_name.ovp\'!\n";
+ binmode(OVP);
+}
+sub font_header {
+ print OVP "(VTITLE )\n";
+ print OVP "(OFMLEVEL D 0)\n";
+ print OVP "(DESIGNSIZE R 10.000000)\n";
+ print OVP "(CHECKSUM O 0)\n";
+ print OVP "(MAPFONT D 1\n";
+ print OVP " (FONTNAME $kanji_font)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$font_at;
+ printf OVP " (FONTDSIZE R %f)\n",$design_size;
+ print OVP " )\n";
+ if ($ruby == 1){
+ &get_face;
+ if ($direction eq "y"){
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $face"."3-h)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ if ($ucs) {
+ print OVP "(MAPFONT D 3\n";
+ print OVP " (FONTNAME $face"."4-h)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ }elsif ($direction eq "t"){
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $face"."3-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ if ($ucs) {
+ print OVP "(MAPFONT D 3\n";
+ print OVP " (FONTNAME $face"."4-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ }
+ } elsif ($expert == 1) {
+ &get_face;
+ if ($direction eq "y"){
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $face"."2-h)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$scale;
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 3\n";
+ print OVP " (FONTNAME $face"."3-h)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$scale;
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }elsif ($direction eq "t"){
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $face"."3-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$scale;
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ if ($ucs) {
+ print OVP "(MAPFONT D 3\n";
+ print OVP " (FONTNAME $face"."4-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$scale;
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ }
+ } else {
+ if ($kana_font ne ""){
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $kana_font)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$scale*$font_at;
+ printf OVP " (FONTDSIZE R %f)\n",$design_size;
+ print OVP " )\n";
+ }
+ }
+ if ($cid_minute == 1){
+ &get_face;
+ if ($direction eq "t"){
+ print OVP "(MAPFONT D 4\n";
+ print OVP " (FONTNAME $face"."1-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 5\n";
+ print OVP " (FONTNAME $face"."2-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ }
+ elsif ($cid_quote == 1){
+ &get_face;
+ if ($direction eq "y"){
+ print OVP "(MAPFONT D 4\n";
+ print OVP " (FONTNAME $face"."0-h)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ elsif ($direction eq "t"){
+ print OVP "(MAPFONT D 4\n";
+ print OVP " (FONTNAME $face"."2-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ }
+ if ($jis2004 == 1){
+ if($direction eq "y"){$temp_dir = "h"}elsif($direction eq "t"){$temp_dir = "v"}
+ &get_face;
+ print OVP "(MAPFONT D 4\n";
+ print OVP " (FONTNAME $face"."1-$temp_dir)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 5\n";
+ print OVP " (FONTNAME $face"."2-$temp_dir)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 6\n";
+ print OVP " (FONTNAME $face"."3-$temp_dir)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 7\n";
+ print OVP " (FONTNAME $face"."4-$temp_dir)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 8\n";
+ print OVP " (FONTNAME $face"."5-$temp_dir)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ if ($cid_hankana == 1){
+ &get_face;
+ if ($direction eq "y"){
+ print OVP "(MAPFONT D 6\n";
+ print OVP " (FONTNAME $face"."0-h)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ }
+}
+sub write_char {
+ if (!$ucs) {
+ for ($ku=1; $ku<=$max_ku; $ku++){
+ for ($ten=1; $ten<=94; $ten++){
+ $jiscode=($ku+32)*256+($ten+32);
+ $CheckDVICode::dvicode=$dvicode=$jiscode;
+ if($sjis == 1){
+ &get_shift_jiscode;
+ $char_code=$shift_jiscode;
+ }else{
+ $char_code=$jiscode;
+ }
+ if ($ruby==1){
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&print_ruby_hira_char;}
+ elsif($ku==5){&print_ruby_kata_char;}else{&print_char;}
+ }elsif ($expert==1){
+ if ($direction eq "y"){
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&exp_hira_h_char;}
+ elsif($ku==5){&exp_kata_h_char;}else{&print_char;}
+ }elsif ($direction eq "t"){
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&exp_hira_v_char;}
+ elsif($ku==5){&exp_kata_v_char;}else{&print_char;}
+ }
+ }else{
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&print_kana_char;}
+ elsif($ku==5){&print_kana_char;}else{&print_char;}
+ }
+ }
+ }
+ } else { # ucs
+ $max_ucs= $sp ? 0x2FA1F : 0xFFFF; # U+2FA1F: max of CJK Compatibility Ideographs Supplement
+ for ($ucscode=0; $ucscode<=$max_ucs; $ucscode++){
+ $CheckDVICode::dvicode=$dvicode=$ucscode;
+ $char_code=$ucscode;
+ next unless (&is_ucs_jpn_range);
+ if ($sp==1 && $ucscode>0xFFFF) {
+ next unless ($exist_char{sprintf("%X",$ucscode)});
+ }
+ if(&is_ucs_hankana && $direction eq "y"){
+ &print_hankana_char;
+ next;
+ }
+ if ($ruby==1){
+ if (&is_ucs_kigo){&print_kigo_char;}
+ elsif(&is_ucs_hira){&print_ruby_hira_char;}
+ elsif(&is_ucs_kata){&print_ruby_kata_char;}
+ else{&print_char;}
+ }elsif ($expert==1){
+ if ($direction eq "y"){
+ if (&is_ucs_kigo){&print_kigo_char;}
+ elsif(&is_ucs_hira){&exp_hira_h_char;}
+ elsif(&is_ucs_kata){&exp_kata_h_char;}
+ else{&print_char;}
+ }elsif ($direction eq "t"){
+ if (&is_ucs_kigo){&print_kigo_char;}
+ elsif(&is_ucs_hira){&exp_hira_v_char;}
+ elsif(&is_ucs_kata){&exp_kata_v_char;}
+ else{&print_char;}
+ }
+ }else{
+ if (&is_ucs_kigo){&print_kigo_char;}
+ elsif(&is_ucs_hira){&print_kana_char;}
+ elsif(&is_ucs_kata){&print_kana_char;}
+ else{&print_char;}
+ }
+ }
+ }
+}
+sub make_vf {
+ my ($ovp2ovf);
+
+ close(OVP);
+ exit if $debug_mode;
+
+ $ovp2ovf = 'ovp2ovf'; # use ovp2ovf WEB version in TeXLive svn r24922 or later if you use SP
+ if (defined($ENV{'OVP2OVF'})) {
+ $ovp2ovf = $ENV{'OVP2OVF'};
+ }
+ if ($ovp2ovf_command ne '') {
+ $ovp2ovf = $ovp2ovf_command;
+ }
+ system("$ovp2ovf $tfm_name.ovp $tfm_name.vf $tfm_name.ofm");
+ unlink "$tfm_name.ovp";
+ unlink "$tfm_name.ofm";
+}
+sub make_tfm {
+ open(KANJITFM,">$kanji_font.tfm") || die "Can't make \'$kanji_font.tfm\'!\n";
+ binmode(KANJITFM);
+ if ($direction eq "y") {
+ my (@tfm) = $ucs ? @yoko_ucs_tfm_binary : @yoko_tfm_binary;
+ foreach $binary(@tfm) {
+ $_ = pack("C", $binary);
+ print KANJITFM "$_";
+ }
+ } elsif ($direction eq "t") {
+ foreach $binary(@tate_tfm_binary) {
+ $_ = pack("C", $binary);
+ print KANJITFM "$_";
+ }
+ } else {die "Unknown Direction!!\n";}
+ if ($ruby==0 && $expert==0){
+ if ($kana_font ne ""){
+ open(KANATFM,">$kana_font.tfm") || die "Can't make \'$kana_font.tfm\'!\n";
+ binmode(KANATFM);
+ if ($direction eq "y") {
+ foreach $binary(@yoko_tfm_binary) {
+ $_ = pack("C", $binary);
+ print KANATFM "$_";
+ }
+ } else {
+ foreach $binary(@tate_tfm_binary) {
+ $_ = pack("C", $binary);
+ print KANATFM "$_";
+ }
+ }
+ }
+ }
+}
+##############################
+#### dfn of sub sub rtns ###
+##############################
+sub print_help {
+ print "This is umkjvf version 0.14 (2014/3/22) by ttk\n";
+ print "Based on mkjvf version 1.0b21 (2010/3/25) by psitau\n";
+ print "Usage: umkjvf [option] <TFMfile> <PSfontTFM> [<PSfontTFM>]\n";
+ print " -b <number> baseline shift\n";
+ print " -m translate quotation mark to minute\n";
+ print " -cm translate quotation mark to CID minute\n";
+ print " -cq translate quotation mark to CID quotation (umkjvf extention)\n";
+ print " -cp translate comma & period to KuTohTen\n";
+ print " -chk translate hankaku kana to CID hankaku kana (umkjvf extention)\n";
+ print " -notfm (h|v) don't read tfm\n";
+ print " -ruby use ruby glyph for kana (for utf package)\n";
+ print " -expert use alt. kana glyph for kana (for utf package)\n";
+ print " -burasage make the width of kutoh-ten zero for burasage\n";
+ print " -jp04 make a font mapped JIS X 0213:2004 glyphs\n";
+ print " -ucs make ucs mapped vf (umkjvf extention)\n";
+ print " -sp <0--2> include supplemental plane (umkjvf extention)\n";
+ print " -SJIS make shift jis mapped vf (experimental)\n";
+ print " -scale <0--1> make kokana vf\n";
+ print " -ovp2ovf <command> use ovp2ovf command\n";
+ print " -dbg debug mode\n";
+ print " -help print this message\n";
+ exit;
+}
+sub GetOptions {
+ my ($argv,@options)=@_;
+ foreach (@options) {
+ my ($regex,$ref,$takesarg)=@{$_};
+ my @args=@{$argv};
+ @{$argv}=();
+ my $arg;
+ argloop:
+ while (($arg=shift @args) ne "") {
+ if ($arg=~/$regex/) {
+ my $val=1;
+ if ($takesarg) { $val=shift @args; }
+ if (ref($ref) eq 'CODE') { &$ref($val); }
+ else { ${$ref}=$val; last argloop;}
+ }
+ else {
+ push @{$argv},$arg;
+ if ($arg eq '--') { last argloop; }
+ }
+ }
+ push @{$argv},@args;
+ }
+}
+sub get_metric{
+ if ($without_tfm eq ""){
+ &read_tfm;
+ } elsif ($without_tfm eq "h") {
+ $direction="y";
+ $design_size=10;
+ $font_at = 0.962216;
+ if ($minute_option == 1){$minute_option = 0;}
+ if ($comma_period == 1){$comma_period = 0;}
+ } elsif ($without_tfm eq "v") {
+ $direction="t";
+ $design_size=10;
+ $font_at = 0.962216;
+ } else{
+ die "Unknown Direction!!\n";
+ }
+# print STDOUT "$design_size, $font_at\n";#debug
+}
+sub read_tfm{
+ $alt_tfm_name=`kpsewhich $tfm_name.tfm`;
+ chomp($alt_tfm_name);
+ open (TFM, "<$tfm_name.tfm") || open (TFM, "<tfm/$tfm_name.tfm") || open (TFM, "<$alt_tfm_name") || die "Can't read tfm file!!\n";
+ binmode(TFM);
+ my($jfm_id, $nt, $lf, $lh, $bc, $ec, $nw, $nh, $nd, $ni, $nl, $nk, $ng, $np);
+ my($data,$d_size,$data_length, @param);
+ #first 7 word
+ read(TFM, $_, 2);
+ $jfm_id = unpack('n', $_);
+# printf STDOUT "JFM ID= %d\n",$jfm_id;#debug
+ if ($jfm_id==0x0B) {
+ $direction="y";
+ if ($minute_option == 1){$minute_option = 0;}
+# print STDOUT "Direction is YOKO!!\n";#debug
+ }elsif ($jfm_id==0x09){
+ $direction="t";
+# print STDOUT "Direction is TATE!!\n";#debug
+ }else{
+ die "Unknown Direction!!\n";
+ }
+ read(TFM, $_, 26);
+ ($nt, $lf, $lh, $bc, $ec, $nw, $nh, $nd, $ni, $nl, $nk, $ng, $np)= unpack('nnnnnnnnnnnnn', $_);
+ #header
+ read(TFM, $_, (4*$lh));
+ ($data,$d_size)= unpack('NN',$_);
+ $d_size=$d_size/(1<<20);;
+ $data_length = ($nt+$ec-$bc+1+$nw+$nh+$nd+$ni+$nl+$nk+$ng)*4;
+ read(TFM, $_, $data_length);
+ read(TFM, $_, (4*$np));
+ @param=unpack('NNNNNNNNN',$_);
+ $zh = $param[4]/(1<<20);
+ $zw = $param[5]/(1<<20);
+ $design_size=$d_size;
+ $font_at=$zw;
+# printf STDOUT "Design Size: %f, zw: %f, zh: %f\n",$d_size, $zw, $zh;#debug
+}
+sub get_face{
+ if($kana_font eq "cidjminr"){
+ $face="cidjmr";
+ }elsif($kana_font eq "cidjgothr"){
+ $face="cidjgr";
+ }elsif($kana_font eq "cidjminb"){
+ $face="cidjmb";
+ }elsif($kana_font eq "cidjgothb"){
+ $face="cidjgb";
+ }elsif($kana_font eq "cidjmgothr"){
+ $face="cidjmgr";
+ }elsif($kana_font eq "cidjminl"){
+ $face="cidjml";
+ }elsif($kana_font eq "cidjgotheb"){
+ $face="cidjge";
+ }elsif($kana_font eq "cidmin"){
+ $face="cidm";
+ }elsif($kana_font eq "cidgoth"){
+ $face="cidg";
+ }elsif($kana_font eq ""){
+ if($kanji_font =~ /hminr/){
+ $face="cidjmr";
+ }elsif($kanji_font =~ /hgothr/){
+ $face="cidjgr";
+ }elsif($kanji_font =~ /hminb/){
+ $face="cidjmb";
+ }elsif($kanji_font =~ /hgothb/){
+ $face="cidjgb";
+ }elsif($kanji_font =~ /hmgothr/){
+ $face="cidjmgr";
+ }elsif($kanji_font =~ /hminl/){
+ $face="cidjml";
+ }elsif($kanji_font =~ /hgotheb/){
+ $face="cidjge";
+ }
+ }
+}
+sub baseline_shift{
+ if ($baseline_shift != 0){
+ $baseline_shift_amount=-($baseline_shift/1000)*$zh;
+ printf OVP " (MOVEUP R %f)\n",$baseline_shift_amount;
+ }
+}
+sub print_kigo_char{
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ if (&is_dvicode('quote') || &is_dvicode('kakko')){#Kakko
+ $width=$half_width;
+ } elsif (&is_dvicode('kutouten')){#Kutouten
+ if (($burasage eq 1) && &is_dvicode('burasage')){#burasage
+ $width=0;
+ }else{
+ $width=$half_width;
+ }
+ } else{
+ $width=$font_at;
+ }
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ if (&is_dvicode('odoriji')){#odoriji
+ if ($ruby==1){
+ print OVP " (SELECTFONT D 2)\n";
+ }elsif($expert==1){
+ if ($direction eq "y"){
+ if (&is_dvicode('hira-odoriji')){
+ print OVP " (SELECTFONT D 2)\n";
+ }else{
+ print OVP " (SELECTFONT D 3)\n";
+ }
+ }else{
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ }elsif($kana_font ne ""){
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ }
+ if ($cid_minute == 1){#cid_minute
+ if (&is_dvicode('d-quote')){#double quatation->double minute
+ print OVP " (SELECTFONT D 4)\n";
+ }elsif (&is_dvicode('s-quote')){#single quatation->single minute
+ print OVP " (SELECTFONT D 5)\n";
+ }
+ }
+ elsif ($cid_quote == 1){#cid_quote
+ if (&is_dvicode('quote')){
+ print OVP " (SELECTFONT D 4)\n";
+ }
+ }
+ &baseline_shift;
+ if (&is_dvicode('odoriji')){#odoriji
+ &scaled_shift;
+ }
+ if (&is_dvicode('colon') || &is_dvicode('semicolon') || &is_dvicode('nakaten')){#colon, semicolon, nakaten
+ printf OVP " (MOVERIGHT R -%f)\n",$quater_width;}
+ if (&is_dvicode('kakko') && &is_dvicode('open')){#Kakko
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ if (&is_dvicode('quote')){#quatation
+ if ($minute_option == 1){#quatation -> minute
+ if ($cid_minute == 1){
+ if (&is_dvicode('open')){
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ $minute_char_code= shift(@cid_minute_code);
+ printf OVP " (SETCHAR H %X)\n", $minute_char_code;
+ }else{
+ $minute_right_shift= shift(@minute_right);
+ $minute_down_shift= shift(@minute_down);
+ printf OVP " (MOVERIGHT R %f)\n", $minute_right_shift;
+ printf OVP " (MOVEDOWN R %f)\n", $minute_down_shift;
+ if (&is_dvicode('close')){
+ print OVP " (SPECIAL ps: gsave currentpoint currentpoint translate 180 neg rotate neg exch neg exch translate)\n";
+ }
+ if ($sjis == 1){
+ $minute_char_code= shift(@shift_minute_code);
+ }else{
+ $minute_char_code= shift(@minute_code);
+ }
+ printf OVP " (SETCHAR H %X)\n", $minute_char_code;
+ if (&is_dvicode('close')){
+ print OVP " (SPECIAL ps: currentpoint grestore moveto)\n";
+ }
+ }
+ } elsif ($cid_quote == 1){
+ if (&is_dvicode('open')){
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ if ($direction eq "y"){
+ $quote_char_code= shift(@cid_hquote_code);
+ }else{
+ $quote_char_code= shift(@cid_vquote_code);
+ }
+ printf OVP " (SETCHAR H %X)\n", $quote_char_code;
+ } else {
+ if (&is_dvicode('open')){
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ printf OVP " (SETCHAR H %X)\n", $char_code;
+ }
+ } elsif (&is_dvicode('odoriji')){#odoriji
+ if ($ruby==1){
+ if ($direction eq "y"){
+ $odorijicode= shift(@ruby_odori_h);
+ }else{
+ $odorijicode= shift(@ruby_odori_v);
+ }
+ }elsif($expert==1){
+ if ($direction eq "y"){
+ $odorijicode= shift(@exp_odori_h);
+ }else{
+ $odorijicode= shift(@exp_odori_v);
+ }
+ }elsif ($sjis==1){
+ $odorijicode= $shift_jiscode;
+ }else{
+ $odorijicode= $dvicode;
+ }
+ printf OVP " (SETCHAR H %X)\n",$odorijicode;
+ } elsif (&is_dvicode('comma') && $comma_period == 1){
+ printf OVP " (SETCHAR H %X)\n", ($ucs ? 0x3001 : $char_code-2);
+ } elsif (&is_dvicode('period') && $comma_period == 1){
+ printf OVP " (SETCHAR H %X)\n", ($ucs ? 0x3002 : $char_code-2);
+ }else {
+ printf OVP " (SETCHAR H %X)\n",$char_code;
+ }
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_char{
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $font_at;
+ print OVP " (MAP\n";
+ if (($jis2004 == 1) && (0x3029 <= $jiscode && $jiscode <= 0x726D)){
+ if (exists $kaisei_jikei{$jiscode}){
+ $cid = $kaisei_jikei{$jiscode};
+ $fontmap = int($cid/4096)+3;
+ printf OVP " (SELECTFONT D %d)\n", $fontmap;
+ $upper = int(($cid%4096)/64)+16;
+ $lower = (($cid%4096)%64)+16;
+# printf STDOUT "%d, %d\n",$upper,$lower;
+ $char_code = $upper*256+$lower+0x2020;
+ }
+ }
+ &baseline_shift;
+ printf OVP " (SETCHAR H %X)\n",$char_code;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kana_char{
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $font_at;
+ print OVP " (MAP\n";
+ if ($kana_font ne ""){
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ &baseline_shift;
+ &scaled_shift;
+ printf OVP " (SETCHAR H %X)\n",$char_code;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_hankana_char{
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n", $font_at/2.0;
+ print OVP " (MAP\n";
+ if ($cid_hankana == 1){
+ print OVP " (SELECTFONT D 6)\n";
+ }
+ &baseline_shift;
+ &scaled_shift;
+ if ($cid_hankana == 1){
+ $hkana_char_code= shift(@cid_hkana_code);
+ printf OVP " (SETCHAR H %X)\n",$hkana_char_code;
+ } else {
+ printf OVP " (SETCHAR H %X)\n",$char_code;
+ }
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_ruby_hira_char{
+ if (&is_dvicode('hira-Vu')){$ruby_hira_code=0x3744;}
+ if (&is_dvicode('hira-ka')){$ruby_hira_code=0x363A;}
+ if (&is_dvicode('hira-ke')){$ruby_hira_code=0x3641;}
+ $ruby_hira_code_orig=$ruby_hira_code;
+ if ($direction eq "t"){&fix_ruby_hira_code;}
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SELECTFONT D %d)\n",$ruby_font_map;
+ &baseline_shift;
+ printf OVP " (SETCHAR H %X)\n", $ruby_hira_code;
+ print OVP " )\n";
+ print OVP " )\n";
+ $ruby_hira_code=$ruby_hira_code_orig;
+ $ruby_hira_code++;
+ if ($ruby_hira_code == 0x3570){$ruby_hira_code=0x3630;}
+ if ($ruby_hira_code == 0x3670){$ruby_hira_code=0x3730;}
+ if ($ruby_hira_code == 0x363A){$ruby_hira_code=0x363B;}
+ if ($ruby_hira_code == 0x3641){$ruby_hira_code=0x3642;}
+}
+sub print_ruby_kata_char{
+ $ruby_kata_code_orig=$ruby_kata_code;
+ if (&is_dvicode('kata-ka')){$ruby_kata_code=0x375C;}
+ if (&is_dvicode('kata-ke')){$ruby_kata_code=0x3763;}
+ if (&is_dvicode('kata-Va')){$ruby_kata_code_orig=$ruby_kata_code=0x306C;
+ $ruby_font_map=3;} # JIS X 0213
+ if (&is_dvicode('kata-ku')){$ruby_kata_code_orig=$ruby_kata_code=0x305B;} # JIS X 0213
+ if (&is_dvicode('kata-mu')){$ruby_kata_code_orig=$ruby_kata_code=0x3066;} # JIS X 0213
+ if ($direction eq "t"){&fix_ruby_kata_code;}
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SELECTFONT D %d)\n",$ruby_font_map;
+ &baseline_shift;
+ printf OVP " (SETCHAR H %X)\n", $ruby_kata_code;
+ print OVP " )\n";
+ print OVP " )\n";
+ $ruby_kata_code=$ruby_kata_code_orig;
+ $ruby_kata_code++;
+ if ($ruby_kata_code == 0x3770){$ruby_kata_code=0x3830;}
+ if ($ruby_kata_code == 0x375C){$ruby_kata_code=0x375D;}
+ if ($ruby_kata_code == 0x3763){$ruby_kata_code=0x3764;}
+}
+sub exp_hira_h_char{
+ if (&is_dvicode('hira-Vu')){$exp_hira_code_h=0x3139;$exp_font_map=3;} # JIS X 0213
+ if (&is_dvicode('hira-ka')){$exp_hira_code_h=0x6f6d;$exp_font_map=2;} # JIS X 0213
+ if (&is_dvicode('hira-ke')){$exp_hira_code_h=0x3034;$exp_font_map=3;} # JIS X 0213
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SELECTFONT D %d)\n", $exp_font_map;
+ &baseline_shift;
+ &scaled_shift;
+ printf OVP " (SETCHAR H %X)\n", $exp_hira_code_h;
+ print OVP " )\n";
+ print OVP " )\n";
+ $exp_hira_code_h++;
+ if ($exp_hira_code_h == 0x6F70){$exp_hira_code_h=0x3030;$exp_font_map=3;}
+ if ($exp_hira_code_h == 0x3070){$exp_hira_code_h=0x3130;}
+ if ($exp_hira_code_h == 0x6f6d){$exp_hira_code_h++;}
+ if ($exp_hira_code_h == 0x3034){$exp_hira_code_h++;}
+ if ($exp_hira_code_h == 0x3037){$exp_hira_code_h++;}
+}
+sub exp_kata_h_char{
+ if (&is_dvicode('kata-ka')){$exp_kata_code_h=0x3147;}
+ if (&is_dvicode('kata-ke')){$exp_kata_code_h=0x314e;}
+ if (&is_dvicode('kata-Va')){$exp_kata_code_h=0x3254;} # JIS X 0213
+ if (&is_dvicode('kata-ku')){$exp_kata_code_h=0x6f5d;} # JIS X 0213
+ if (&is_dvicode('kata-mu')){$exp_kata_code_h=0x6f68;} # JIS X 0213
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 3)\n";
+ &baseline_shift;
+ &scaled_shift;
+ printf OVP " (SETCHAR H %X)\n", $exp_kata_code_h;
+ print OVP " )\n";
+ print OVP " )\n";
+ $exp_kata_code_h++;
+ if ($exp_kata_code_h == 0x3170){$exp_kata_code_h=0x3230;}
+ if ($exp_kata_code_h == 0x3147){$exp_kata_code_h++;}
+ if ($exp_kata_code_h == 0x314e){$exp_kata_code_h++;}
+ if ($exp_kata_code_h == 0x3151){$exp_kata_code_h++;}
+}
+sub exp_hira_v_char{
+ if (&is_dvicode('hira-Vu')){$exp_hira_code_v=0x3430;$exp_font_map=2;} # JIS X 0213
+ if (&is_dvicode('hira-ka')){$exp_hira_code_v=0x3264;$exp_font_map=2;} # JIS X 0213
+ if (&is_dvicode('hira-ke')){$exp_hira_code_v=0x326b;$exp_font_map=2;} # JIS X 0213
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SELECTFONT D %d)\n", $exp_font_map;
+ &baseline_shift;
+ &scaled_shift;
+ printf OVP " (SETCHAR H %X)\n", $exp_hira_code_v;
+ print OVP " )\n";
+ print OVP " )\n";
+ $exp_hira_code_v++;
+ if ($exp_hira_code_v == 0x3270){$exp_hira_code_v=0x3330;}
+ if ($exp_hira_code_v == 0x3264){$exp_hira_code_v++;}
+ if ($exp_hira_code_v == 0x326b){$exp_hira_code_v++;}
+ if ($exp_hira_code_v == 0x326e){$exp_hira_code_v++;}
+}
+sub exp_kata_v_char{
+ if (&is_dvicode('kata-ka')){$exp_kata_code_v=0x343e;}
+ if (&is_dvicode('kata-ke')){$exp_kata_code_v=0x3445;}
+ if (&is_dvicode('kata-Va')){$exp_kata_code_v=0x354b;} # JIS X 0213
+ if (&is_dvicode('kata-ku')){$exp_kata_code_v=0x303b;$exp_font_map=3;} # JIS X 0213
+ if (&is_dvicode('kata-mu')){$exp_kata_code_v=0x3046;} # JIS X 0213
+ printf OVP "(CHARACTER H %X\n", $dvicode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SELECTFONT D %d)\n", $exp_font_map;
+ &baseline_shift;
+ &scaled_shift;
+ printf OVP " (SETCHAR H %X)\n", $exp_kata_code_v;
+ print OVP " )\n";
+ print OVP " )\n";
+ $exp_kata_code_v++;
+ if ($exp_kata_code_v == 0x3470){$exp_kata_code_v=0x3530;}
+ if ($exp_kata_code_v == 0x343e){$exp_kata_code_v++;}
+ if ($exp_kata_code_v == 0x3445){$exp_kata_code_v++;}
+ if ($exp_kata_code_v == 0x3448){$exp_kata_code_v++;}
+}
+sub fix_ruby_hira_code{
+ if (&is_dvicode('hira-a' )){$ruby_hira_code=0x3745;}#a
+ if (&is_dvicode('hira-i' )){$ruby_hira_code=0x3746;}#i
+ if (&is_dvicode('hira-u' )){$ruby_hira_code=0x3747;}#u
+ if (&is_dvicode('hira-e' )){$ruby_hira_code=0x3748;}#e
+ if (&is_dvicode('hira-o' )){$ruby_hira_code=0x3749;}#o
+ if (&is_dvicode('hira-tsu')){$ruby_hira_code=0x374c;}#tsu
+ if (&is_dvicode('hira-ya' )){$ruby_hira_code=0x374d;}#ya
+ if (&is_dvicode('hira-yu' )){$ruby_hira_code=0x374e;}#yu
+ if (&is_dvicode('hira-yo' )){$ruby_hira_code=0x374f;}#yo
+ if (&is_dvicode('hira-wa' )){$ruby_hira_code=0x3750;}#wa
+ if (&is_dvicode('hira-ka' )){$ruby_hira_code=0x374a;} # JIS X 0213
+ if (&is_dvicode('hira-ke' )){$ruby_hira_code=0x374b;} # JIS X 0213
+}
+sub fix_ruby_kata_code{
+ if (&is_dvicode('kata-a' )){$ruby_kata_code=0x3867;}#a
+ if (&is_dvicode('kata-i' )){$ruby_kata_code=0x3868;}#i
+ if (&is_dvicode('kata-u' )){$ruby_kata_code=0x3869;}#u
+ if (&is_dvicode('kata-e' )){$ruby_kata_code=0x386a;}#e
+ if (&is_dvicode('kata-o' )){$ruby_kata_code=0x386b;}#o
+ if (&is_dvicode('kata-tsu')){$ruby_kata_code=0x386e;}#tsu
+ if (&is_dvicode('kata-ya' )){$ruby_kata_code=0x386f;}#ya
+ if (&is_dvicode('kata-yu' )){$ruby_kata_code=0x3930;}#yu
+ if (&is_dvicode('kata-yo' )){$ruby_kata_code=0x3931;}#yo
+ if (&is_dvicode('kata-wa' )){$ruby_kata_code=0x3932;}#wa
+ if (&is_dvicode('kata-ka' )){$ruby_kata_code=0x386c;}#ka
+ if (&is_dvicode('kata-ke' )){$ruby_kata_code=0x386d;}#ke
+ if (&is_dvicode('kata-ku..ro')){$ruby_kata_code+=215;} # JIS X 0213
+}
+sub get_shift_jiscode{
+ $c1=$ku+32;
+ $c2=$ten+32;
+ if ($c1 % 2) {
+ $c1 = (($c1 + 1) / 2) + 0x70;
+ $c2 = $c2 + 0x1f;
+ } else {
+ $c1 = ($c1 / 2) + 0x70;
+ $c2 = $c2 + 0x7d;
+ }
+ if ($c1 >= 0xa0) {$c1 = $c1 + 0x40;}
+ if ($c2 >= 0x7f) {$c2 = $c2 + 1;}
+ $shift_jiscode=$c1*256+$c2;
+}
+sub scaled_shift{
+ if ($scale != 1){
+ $scaled_shift_amount=(1-$scale)*$font_at/2;
+ printf OVP " (MOVERIGHT R %f)\n",$scaled_shift_amount;
+ if ($direction eq "y"){
+ $scaled_v_shift_amount=(1-$scale)*$font_at*0.38;
+ printf OVP " (MOVEUP R %f)\n",$scaled_v_shift_amount;
+ }
+ }
+}
+
+
+__END__
+0xFF5F: JIS X 0213 1-02-54 FULLWIDTH LEFT WHITE PARENTHESIS 始め二重バーレーン
+0x3018: JIS X 0213 1-02-56 LEFT WHITE TORTOISE SHELL BRACKET 始め二重亀甲括弧
+0x3016: JIS X 0213 1-02-58 LEFT WHITE LENTICULAR BRACKET 始めすみ付き括弧(白)
+0x301D: JIS X 0213 1-13-64 REVERSED DOUBLE PRIME QUOTATION MARK 始めダブルミニュート
+0xFF60: JIS X 0213 1-02-55 FULLWIDTH RIGHT WHITE PARENTHESIS 終わり二重バーレーン
+0x3019: JIS X 0213 1-02-57 RIGHT WHITE TORTOISE SHELL BRACKET 終わり二重亀甲括弧
+0x3017: JIS X 0213 1-02-59 RIGHT WHITE LENTICULAR BRACKET 終わりすみ付き括弧(白)
+0x301F: JIS X 0213 1-13-65 LOW DOUBLE PRIME QUOTATION MARK 終わりダブルミニュート
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-h.vf
new file mode 100644
index 0000000000..f293f4fab9
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-v.vf
new file mode 100644
index 0000000000..9037e9972a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-h.vf
new file mode 100644
index 0000000000..f7fdb25b09
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-v.vf
new file mode 100644
index 0000000000..eb9e021a91
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-h.vf
new file mode 100644
index 0000000000..ba3965eee8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-v.vf
new file mode 100644
index 0000000000..197836b0ff
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgotheb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-h.vf
new file mode 100644
index 0000000000..6d4f79fb30
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-v.vf
new file mode 100644
index 0000000000..37bbe5d717
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothebn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-h.vf
new file mode 100644
index 0000000000..8db83512c3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-v.vf
new file mode 100644
index 0000000000..0b8aa2b4d3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-h.vf
new file mode 100644
index 0000000000..7e84fe65cb
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-v.vf
new file mode 100644
index 0000000000..76219bfb30
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-h.vf
new file mode 100644
index 0000000000..43aa2c1719
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-v.vf
new file mode 100644
index 0000000000..25aecc6b9e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-h.vf
new file mode 100644
index 0000000000..6139b2a18f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-v.vf
new file mode 100644
index 0000000000..42ee230313
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-h.vf
new file mode 100644
index 0000000000..a781d8ba37
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-v.vf
new file mode 100644
index 0000000000..f597da0cf3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-h.vf
new file mode 100644
index 0000000000..f658b524d4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-v.vf
new file mode 100644
index 0000000000..b7d041aaef
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-h.vf
new file mode 100644
index 0000000000..12a9d18f97
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-v.vf
new file mode 100644
index 0000000000..dbdb250d5c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-h.vf
new file mode 100644
index 0000000000..e7d6f4bb89
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-v.vf
new file mode 100644
index 0000000000..d815fb2c40
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminln-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-h.vf
new file mode 100644
index 0000000000..f3f1061557
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-v.vf
new file mode 100644
index 0000000000..462c9eb20b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-h.vf
new file mode 100644
index 0000000000..c097b7daea
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-v.vf
new file mode 100644
index 0000000000..38c7dd3ade
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgexpminrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-h.vf
new file mode 100644
index 0000000000..3d75a4d1b1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-v.vf
new file mode 100644
index 0000000000..aec0690d7a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-h.vf
new file mode 100644
index 0000000000..12a762b633
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-v.vf
new file mode 100644
index 0000000000..7f6078f688
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-h.vf
new file mode 100644
index 0000000000..5a239c6964
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-v.vf
new file mode 100644
index 0000000000..b21f6c74ee
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgotheb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-h.vf
new file mode 100644
index 0000000000..13c465266d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-v.vf
new file mode 100644
index 0000000000..37129bbaad
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothebn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-h.vf
new file mode 100644
index 0000000000..f1a323829c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-v.vf
new file mode 100644
index 0000000000..f52deab8e9
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-h.vf
new file mode 100644
index 0000000000..9b35bebccd
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-v.vf
new file mode 100644
index 0000000000..e88b55c8e0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-h.vf
new file mode 100644
index 0000000000..12860e0c83
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-v.vf
new file mode 100644
index 0000000000..e41f629648
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-h.vf
new file mode 100644
index 0000000000..6355fa441a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-v.vf
new file mode 100644
index 0000000000..0fd9a900b7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-h.vf
new file mode 100644
index 0000000000..e6dfd064e0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-v.vf
new file mode 100644
index 0000000000..ea8d985498
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-h.vf
new file mode 100644
index 0000000000..5602305b05
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-v.vf
new file mode 100644
index 0000000000..44cd873eb0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-h.vf
new file mode 100644
index 0000000000..dd3d3d96be
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-v.vf
new file mode 100644
index 0000000000..2344536dcb
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-h.vf
new file mode 100644
index 0000000000..503377083b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-v.vf
new file mode 100644
index 0000000000..5861167655
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminln-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-h.vf
new file mode 100644
index 0000000000..5fbe95603f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-v.vf
new file mode 100644
index 0000000000..abfae1c648
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-h.vf
new file mode 100644
index 0000000000..22952ef075
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-v.vf
new file mode 100644
index 0000000000..9b28a51994
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upbrsgnmlminrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothb-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothb-h.vf
new file mode 100644
index 0000000000..b1ffb25cf7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgothb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothb-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothb-v.vf
new file mode 100644
index 0000000000..81873330db
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgothb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothbn-h.vf
new file mode 100644
index 0000000000..6628c834cc
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgothbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothbn-v.vf
new file mode 100644
index 0000000000..622dc47e38
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgothbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgotheb-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgotheb-h.vf
new file mode 100644
index 0000000000..c67dc486e3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgotheb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgotheb-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgotheb-v.vf
new file mode 100644
index 0000000000..36d913cbf8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgotheb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothebn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothebn-h.vf
new file mode 100644
index 0000000000..3f8f857f9c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgothebn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothebn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothebn-v.vf
new file mode 100644
index 0000000000..6ca834a541
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgothebn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothr-h.vf
new file mode 100644
index 0000000000..331a7d436d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothr-v.vf
new file mode 100644
index 0000000000..f0aeb5ced3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothrn-h.vf
new file mode 100644
index 0000000000..11e331b479
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpgothrn-v.vf
new file mode 100644
index 0000000000..5678c1d276
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpmgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpmgothr-h.vf
new file mode 100644
index 0000000000..018ddc5048
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpmgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpmgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpmgothr-v.vf
new file mode 100644
index 0000000000..22086d1250
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpmgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-h.vf
new file mode 100644
index 0000000000..c92e29b737
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-v.vf
new file mode 100644
index 0000000000..1d853c40d2
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminb-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminb-h.vf
new file mode 100644
index 0000000000..77efae0b24
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminb-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminb-v.vf
new file mode 100644
index 0000000000..686401b92d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminbn-h.vf
new file mode 100644
index 0000000000..0b98dd15b0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminbn-v.vf
new file mode 100644
index 0000000000..f0b34e66c1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminl-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminl-h.vf
new file mode 100644
index 0000000000..4350335eba
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminl-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminl-v.vf
new file mode 100644
index 0000000000..03e3b49fb4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminln-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminln-h.vf
new file mode 100644
index 0000000000..c6140c5bf8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminln-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminln-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminln-v.vf
new file mode 100644
index 0000000000..d253c3ff09
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminln-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminr-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminr-h.vf
new file mode 100644
index 0000000000..2101db2ce1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminr-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminr-v.vf
new file mode 100644
index 0000000000..e052e2750c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upexpminrn-h.vf
new file mode 100644
index 0000000000..fc1fc2a594
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upexpminrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upexpminrn-v.vf
new file mode 100644
index 0000000000..8b536c18f8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upexpminrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothb-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothb-h.vf
new file mode 100644
index 0000000000..786b4d0f68
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgothb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothb-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothb-v.vf
new file mode 100644
index 0000000000..78abecf1fb
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgothb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-h.vf
new file mode 100644
index 0000000000..3b9e9559a4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-v.vf
new file mode 100644
index 0000000000..4d080648ee
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgothbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-h.vf
new file mode 100644
index 0000000000..cd3f97fd5e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-v.vf
new file mode 100644
index 0000000000..42bf0cfca4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgotheb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-h.vf
new file mode 100644
index 0000000000..2aaec28601
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-v.vf
new file mode 100644
index 0000000000..6aede6f574
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgothebn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothr-h.vf
new file mode 100644
index 0000000000..9b6c08570a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothr-v.vf
new file mode 100644
index 0000000000..c2a71df996
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-h.vf
new file mode 100644
index 0000000000..22b1d95d20
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-v.vf
new file mode 100644
index 0000000000..423f65e9a9
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-h.vf
new file mode 100644
index 0000000000..f131f68e7e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-v.vf
new file mode 100644
index 0000000000..1a68d04295
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlmgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-h.vf
new file mode 100644
index 0000000000..976344691c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-v.vf
new file mode 100644
index 0000000000..ae016f97f4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminb-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminb-h.vf
new file mode 100644
index 0000000000..8a4232250d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminb-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminb-v.vf
new file mode 100644
index 0000000000..c98d0691fa
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminbn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminbn-h.vf
new file mode 100644
index 0000000000..2b0347363f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminbn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminbn-v.vf
new file mode 100644
index 0000000000..adee451a82
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminl-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminl-h.vf
new file mode 100644
index 0000000000..332e3ce480
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminl-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminl-v.vf
new file mode 100644
index 0000000000..19f571f3c4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminln-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminln-h.vf
new file mode 100644
index 0000000000..d985bcf35d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminln-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminln-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminln-v.vf
new file mode 100644
index 0000000000..f69f73dec4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminln-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminr-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminr-h.vf
new file mode 100644
index 0000000000..44e7c8fb0e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminr-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminr-v.vf
new file mode 100644
index 0000000000..bc9dbf1b86
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminrn-h.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminrn-h.vf
new file mode 100644
index 0000000000..2fc2f30dcd
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/upnmlminrn-v.vf b/language/japanese/japanese-otf-uptex/vf/upnmlminrn-v.vf
new file mode 100644
index 0000000000..e151a801a2
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/upnmlminrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygothb-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubygothb-h.vf
new file mode 100644
index 0000000000..d6819f2742
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubygothb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygothb-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubygothb-v.vf
new file mode 100644
index 0000000000..7b2c6f00ea
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubygothb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygotheb-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubygotheb-h.vf
new file mode 100644
index 0000000000..7f0157b6d4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubygotheb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygotheb-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubygotheb-v.vf
new file mode 100644
index 0000000000..93b3a88786
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubygotheb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygothr-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubygothr-h.vf
new file mode 100644
index 0000000000..d4e95ec8d9
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubygothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubygothr-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubygothr-v.vf
new file mode 100644
index 0000000000..6ea78829b4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubygothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubymgothr-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubymgothr-h.vf
new file mode 100644
index 0000000000..e33e74eb12
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubymgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubymgothr-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubymgothr-v.vf
new file mode 100644
index 0000000000..437d7c6ada
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubymgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminb-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminb-h.vf
new file mode 100644
index 0000000000..acfb745b39
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubyminb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminb-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminb-v.vf
new file mode 100644
index 0000000000..291bfe3d16
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubyminb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminl-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminl-h.vf
new file mode 100644
index 0000000000..7f6369506b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubyminl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminl-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminl-v.vf
new file mode 100644
index 0000000000..d99381a35c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubyminl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminr-h.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminr-h.vf
new file mode 100644
index 0000000000..2eea1f7c11
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubyminr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/uprubyminr-v.vf b/language/japanese/japanese-otf-uptex/vf/uprubyminr-v.vf
new file mode 100644
index 0000000000..8598e21931
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/uprubyminr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcgrk-h.vf b/language/japanese/japanese-otf-uptex/vf/utfcgrk-h.vf
new file mode 100644
index 0000000000..8ae56ae5e3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcgrk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcgrk-v.vf b/language/japanese/japanese-otf-uptex/vf/utfcgrk-v.vf
new file mode 100644
index 0000000000..afb7e68758
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcgrk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcgrl-h.vf b/language/japanese/japanese-otf-uptex/vf/utfcgrl-h.vf
new file mode 100644
index 0000000000..6caf8f8335
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcgrl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcgrl-v.vf b/language/japanese/japanese-otf-uptex/vf/utfcgrl-v.vf
new file mode 100644
index 0000000000..fd799e8546
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcgrl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcgrm-h.vf b/language/japanese/japanese-otf-uptex/vf/utfcgrm-h.vf
new file mode 100644
index 0000000000..5c677a7a8f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcgrm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcgrm-v.vf b/language/japanese/japanese-otf-uptex/vf/utfcgrm-v.vf
new file mode 100644
index 0000000000..e2893c1a75
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcgrm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcgro-h.vf b/language/japanese/japanese-otf-uptex/vf/utfcgro-h.vf
new file mode 100644
index 0000000000..07eab72c95
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcgro-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcgro-v.vf b/language/japanese/japanese-otf-uptex/vf/utfcgro-v.vf
new file mode 100644
index 0000000000..d443cc0d85
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcgro-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcmrk-h.vf b/language/japanese/japanese-otf-uptex/vf/utfcmrk-h.vf
new file mode 100644
index 0000000000..2a394e6895
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcmrk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcmrk-v.vf b/language/japanese/japanese-otf-uptex/vf/utfcmrk-v.vf
new file mode 100644
index 0000000000..4752755ac9
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcmrk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcmrl-h.vf b/language/japanese/japanese-otf-uptex/vf/utfcmrl-h.vf
new file mode 100644
index 0000000000..5c46f29124
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcmrl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcmrl-v.vf b/language/japanese/japanese-otf-uptex/vf/utfcmrl-v.vf
new file mode 100644
index 0000000000..0d2e7d4026
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcmrl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcmrm-h.vf b/language/japanese/japanese-otf-uptex/vf/utfcmrm-h.vf
new file mode 100644
index 0000000000..d14f22619c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcmrm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcmrm-v.vf b/language/japanese/japanese-otf-uptex/vf/utfcmrm-v.vf
new file mode 100644
index 0000000000..5e468d10c8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcmrm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcmro-h.vf b/language/japanese/japanese-otf-uptex/vf/utfcmro-h.vf
new file mode 100644
index 0000000000..589b67627b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcmro-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfcmro-v.vf b/language/japanese/japanese-otf-uptex/vf/utfcmro-v.vf
new file mode 100644
index 0000000000..b87e58b9e1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfcmro-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrj-h.vf
new file mode 100644
index 0000000000..2456e34946
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrj-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrj-v.vf
new file mode 100644
index 0000000000..61234a1974
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrj-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrk-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrk-h.vf
new file mode 100644
index 0000000000..af719a0772
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrk-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrk-v.vf
new file mode 100644
index 0000000000..c3daed745b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrl-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrl-h.vf
new file mode 100644
index 0000000000..0a96b35a2a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrl-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrl-v.vf
new file mode 100644
index 0000000000..9794421c7d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrm-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrm-h.vf
new file mode 100644
index 0000000000..6371932f18
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrm-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrm-v.vf
new file mode 100644
index 0000000000..ab4780b2d4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrn-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrn-h.vf
new file mode 100644
index 0000000000..5668e5c4c1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrn-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrn-v.vf
new file mode 100644
index 0000000000..22ed269a08
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgro-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgro-h.vf
new file mode 100644
index 0000000000..7d74e4954c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgro-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgro-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgro-v.vf
new file mode 100644
index 0000000000..f1198712ed
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgro-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrp-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrp-h.vf
new file mode 100644
index 0000000000..cb21e8e019
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrp-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrp-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrp-v.vf
new file mode 100644
index 0000000000..86d783811c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrp-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrq-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrq-h.vf
new file mode 100644
index 0000000000..20481206d3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrq-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrq-v.vf
new file mode 100644
index 0000000000..6775cc4208
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrr-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrr-h.vf
new file mode 100644
index 0000000000..0c9e6b486a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrr-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrr-v.vf
new file mode 100644
index 0000000000..cf32c43403
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrs-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrs-h.vf
new file mode 100644
index 0000000000..3edb7faeac
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrs-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrs-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrs-v.vf
new file mode 100644
index 0000000000..4f8e4aa71e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrs-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrt-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrt-h.vf
new file mode 100644
index 0000000000..8e30ea8539
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrt-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrt-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrt-v.vf
new file mode 100644
index 0000000000..f18e4d2eee
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrt-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgru-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgru-h.vf
new file mode 100644
index 0000000000..7d80de2665
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgru-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgru-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgru-v.vf
new file mode 100644
index 0000000000..108f1ba5c5
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgru-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrv-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrv-h.vf
new file mode 100644
index 0000000000..fbda381b54
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrv-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrv-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrv-v.vf
new file mode 100644
index 0000000000..955e6936b7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrv-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrw-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrw-h.vf
new file mode 100644
index 0000000000..3d7f69b8b3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrw-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrw-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrw-v.vf
new file mode 100644
index 0000000000..d6ac632a4d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrw-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrx-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrx-h.vf
new file mode 100644
index 0000000000..b4fea3f362
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrx-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrx-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrx-v.vf
new file mode 100644
index 0000000000..46f8084da9
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrx-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgry-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgry-h.vf
new file mode 100644
index 0000000000..6a0df6c138
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgry-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgry-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgry-v.vf
new file mode 100644
index 0000000000..ff1f2ff3aa
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgry-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrz-h.vf b/language/japanese/japanese-otf-uptex/vf/utfgrz-h.vf
new file mode 100644
index 0000000000..ef0ba0eb77
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrz-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfgrz-v.vf b/language/japanese/japanese-otf-uptex/vf/utfgrz-v.vf
new file mode 100644
index 0000000000..00fe7954dc
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfgrz-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbj-h.vf
new file mode 100644
index 0000000000..90bd3a0fa4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbj-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbj-v.vf
new file mode 100644
index 0000000000..739e3531f3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbj-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbk-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbk-h.vf
new file mode 100644
index 0000000000..4bf9636ec3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbk-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbk-v.vf
new file mode 100644
index 0000000000..f1cd2aebe1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbl-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbl-h.vf
new file mode 100644
index 0000000000..0314af4473
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbl-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbl-v.vf
new file mode 100644
index 0000000000..515d3f8efd
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbm-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbm-h.vf
new file mode 100644
index 0000000000..f48c50388f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbm-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbm-v.vf
new file mode 100644
index 0000000000..a09ba47bc8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbn-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbn-h.vf
new file mode 100644
index 0000000000..67fb661a8d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbn-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbn-v.vf
new file mode 100644
index 0000000000..1afe9bec06
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbo-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbo-h.vf
new file mode 100644
index 0000000000..4999586f85
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbo-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbo-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbo-v.vf
new file mode 100644
index 0000000000..a57cdbed1d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbo-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbp-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbp-h.vf
new file mode 100644
index 0000000000..2d12f9ea51
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbp-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbp-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbp-v.vf
new file mode 100644
index 0000000000..28950e29a0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbp-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbq-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbq-h.vf
new file mode 100644
index 0000000000..5f62399d82
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbq-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbq-v.vf
new file mode 100644
index 0000000000..cebd38f0e3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbr-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbr-h.vf
new file mode 100644
index 0000000000..efe3ca8173
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbr-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbr-v.vf
new file mode 100644
index 0000000000..47321cc697
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbs-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbs-h.vf
new file mode 100644
index 0000000000..7ffa5c5e3c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbs-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbs-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbs-v.vf
new file mode 100644
index 0000000000..f7778d45be
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbs-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbt-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbt-h.vf
new file mode 100644
index 0000000000..4a8c9aea13
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbt-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbt-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbt-v.vf
new file mode 100644
index 0000000000..d6adee3527
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbt-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbu-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbu-h.vf
new file mode 100644
index 0000000000..e317dc541c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbu-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbu-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbu-v.vf
new file mode 100644
index 0000000000..9b8ec2c2d1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbu-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbv-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbv-h.vf
new file mode 100644
index 0000000000..b51f99b11a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbv-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbv-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbv-v.vf
new file mode 100644
index 0000000000..5545a9aa9a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbv-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbx-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbx-h.vf
new file mode 100644
index 0000000000..7dcfc347ba
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbx-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbx-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbx-v.vf
new file mode 100644
index 0000000000..5ef1e1177a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbx-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgby-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgby-h.vf
new file mode 100644
index 0000000000..73ca4976ec
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgby-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgby-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgby-v.vf
new file mode 100644
index 0000000000..3926c0d66a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgby-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbz-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbz-h.vf
new file mode 100644
index 0000000000..95095da553
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbz-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgbz-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgbz-v.vf
new file mode 100644
index 0000000000..1a16053a88
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgbz-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgej-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgej-h.vf
new file mode 100644
index 0000000000..9b43d009ee
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgej-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgej-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgej-v.vf
new file mode 100644
index 0000000000..ec29536dc5
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgej-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgek-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgek-h.vf
new file mode 100644
index 0000000000..edb5b6d8e8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgek-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgek-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgek-v.vf
new file mode 100644
index 0000000000..1998f22a73
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgek-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgel-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgel-h.vf
new file mode 100644
index 0000000000..ed630b9289
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgel-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgel-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgel-v.vf
new file mode 100644
index 0000000000..38a04f5092
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgel-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgem-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgem-h.vf
new file mode 100644
index 0000000000..98d6ca60d8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgem-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgem-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgem-v.vf
new file mode 100644
index 0000000000..a0b1bdfe62
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgem-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgen-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgen-h.vf
new file mode 100644
index 0000000000..b13b6e7b45
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgen-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgen-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgen-v.vf
new file mode 100644
index 0000000000..3486db06ae
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgen-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgeo-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgeo-h.vf
new file mode 100644
index 0000000000..2629ebbeb0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgeo-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgeo-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgeo-v.vf
new file mode 100644
index 0000000000..bbad1ca66c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgeo-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgep-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgep-h.vf
new file mode 100644
index 0000000000..ed1a65e91d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgep-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgep-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgep-v.vf
new file mode 100644
index 0000000000..62be282271
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgep-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgeq-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgeq-h.vf
new file mode 100644
index 0000000000..648b0ffe81
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgeq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgeq-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgeq-v.vf
new file mode 100644
index 0000000000..33c6088a76
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgeq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjger-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjger-h.vf
new file mode 100644
index 0000000000..c71f89852b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjger-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjger-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjger-v.vf
new file mode 100644
index 0000000000..b5b315ae1a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjger-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjges-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjges-h.vf
new file mode 100644
index 0000000000..1da35b8cd9
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjges-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjges-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjges-v.vf
new file mode 100644
index 0000000000..61d22f26e1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjges-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjget-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjget-h.vf
new file mode 100644
index 0000000000..f9bc854cc9
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjget-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjget-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjget-v.vf
new file mode 100644
index 0000000000..7ed041d6f5
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjget-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgeu-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgeu-h.vf
new file mode 100644
index 0000000000..98eb74d119
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgeu-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgeu-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgeu-v.vf
new file mode 100644
index 0000000000..a3d2419d3d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgeu-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgev-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgev-h.vf
new file mode 100644
index 0000000000..501756b65c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgev-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgev-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgev-v.vf
new file mode 100644
index 0000000000..26aa43efb2
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgev-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgex-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgex-h.vf
new file mode 100644
index 0000000000..b4bf7fc09c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgex-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgex-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgex-v.vf
new file mode 100644
index 0000000000..b10a7da8d6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgex-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgey-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgey-h.vf
new file mode 100644
index 0000000000..d7d7ee8da6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgey-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgey-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgey-v.vf
new file mode 100644
index 0000000000..520f1e890c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgey-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgez-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgez-h.vf
new file mode 100644
index 0000000000..56a01ad0aa
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgez-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgez-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgez-v.vf
new file mode 100644
index 0000000000..ad4aab3fb4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgez-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrj-h.vf
new file mode 100644
index 0000000000..2456e34946
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrj-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrj-v.vf
new file mode 100644
index 0000000000..61234a1974
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrj-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrk-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrk-h.vf
new file mode 100644
index 0000000000..086c81fe48
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrk-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrk-v.vf
new file mode 100644
index 0000000000..67342255ce
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrl-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrl-h.vf
new file mode 100644
index 0000000000..41745590f7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrl-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrl-v.vf
new file mode 100644
index 0000000000..1823682232
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrm-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrm-h.vf
new file mode 100644
index 0000000000..be3b3b2246
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrm-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrm-v.vf
new file mode 100644
index 0000000000..db65e8ab6b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrn-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrn-h.vf
new file mode 100644
index 0000000000..c33c498616
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrn-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrn-v.vf
new file mode 100644
index 0000000000..bee2b88cf4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgro-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgro-h.vf
new file mode 100644
index 0000000000..c9942b2410
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgro-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgro-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgro-v.vf
new file mode 100644
index 0000000000..369595e62c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgro-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrp-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrp-h.vf
new file mode 100644
index 0000000000..75600661e0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrp-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrp-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrp-v.vf
new file mode 100644
index 0000000000..9ccb3bf54e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrp-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrq-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrq-h.vf
new file mode 100644
index 0000000000..17069260f2
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrq-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrq-v.vf
new file mode 100644
index 0000000000..d46cf0515a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrr-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrr-h.vf
new file mode 100644
index 0000000000..ed47945a48
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrr-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrr-v.vf
new file mode 100644
index 0000000000..76aa91bc43
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrs-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrs-h.vf
new file mode 100644
index 0000000000..e09721d36c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrs-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrs-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrs-v.vf
new file mode 100644
index 0000000000..09f577cf64
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrs-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrt-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrt-h.vf
new file mode 100644
index 0000000000..d758acf060
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrt-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrt-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrt-v.vf
new file mode 100644
index 0000000000..1792e42ec6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrt-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgru-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgru-h.vf
new file mode 100644
index 0000000000..ae063a9cb1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgru-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgru-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgru-v.vf
new file mode 100644
index 0000000000..1b6ca7eda2
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgru-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrv-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrv-h.vf
new file mode 100644
index 0000000000..d73615333b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrv-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrv-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrv-v.vf
new file mode 100644
index 0000000000..a2237aafb4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrv-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrx-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrx-h.vf
new file mode 100644
index 0000000000..c816958398
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrx-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrx-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrx-v.vf
new file mode 100644
index 0000000000..d9e230b55d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrx-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgry-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgry-h.vf
new file mode 100644
index 0000000000..6a0df6c138
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgry-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgry-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgry-v.vf
new file mode 100644
index 0000000000..ff1f2ff3aa
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgry-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrz-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrz-h.vf
new file mode 100644
index 0000000000..68908f4c78
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrz-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjgrz-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjgrz-v.vf
new file mode 100644
index 0000000000..b8e50e9bb0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjgrz-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbj-h.vf
new file mode 100644
index 0000000000..3b0e2e4a33
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbj-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbj-v.vf
new file mode 100644
index 0000000000..0f2208ed50
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbj-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbk-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbk-h.vf
new file mode 100644
index 0000000000..eaedbded5d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbk-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbk-v.vf
new file mode 100644
index 0000000000..3ad21af46e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbl-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbl-h.vf
new file mode 100644
index 0000000000..84f4211b1f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbl-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbl-v.vf
new file mode 100644
index 0000000000..2a0df04f5f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbm-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbm-h.vf
new file mode 100644
index 0000000000..70f56deade
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbm-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbm-v.vf
new file mode 100644
index 0000000000..2106b60ad4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbn-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbn-h.vf
new file mode 100644
index 0000000000..6c5efede99
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbn-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbn-v.vf
new file mode 100644
index 0000000000..0c12904265
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbo-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbo-h.vf
new file mode 100644
index 0000000000..29134495a2
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbo-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbo-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbo-v.vf
new file mode 100644
index 0000000000..8850f969c7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbo-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbp-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbp-h.vf
new file mode 100644
index 0000000000..cc47f3f218
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbp-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbp-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbp-v.vf
new file mode 100644
index 0000000000..c909f02f42
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbp-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbq-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbq-h.vf
new file mode 100644
index 0000000000..17c2e38fda
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbq-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbq-v.vf
new file mode 100644
index 0000000000..b334582107
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbr-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbr-h.vf
new file mode 100644
index 0000000000..bac3c6e5d4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbr-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbr-v.vf
new file mode 100644
index 0000000000..d60402a613
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbs-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbs-h.vf
new file mode 100644
index 0000000000..3b5c5a61c6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbs-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbs-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbs-v.vf
new file mode 100644
index 0000000000..e3f0c5bab7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbs-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbt-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbt-h.vf
new file mode 100644
index 0000000000..a3db32ddad
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbt-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbt-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbt-v.vf
new file mode 100644
index 0000000000..2bfef9545f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbt-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbu-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbu-h.vf
new file mode 100644
index 0000000000..8fe17d1511
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbu-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbu-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbu-v.vf
new file mode 100644
index 0000000000..3d7777ba76
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbu-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbv-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbv-h.vf
new file mode 100644
index 0000000000..fb741b4eee
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbv-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbv-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbv-v.vf
new file mode 100644
index 0000000000..8133cdd30d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbv-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbx-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbx-h.vf
new file mode 100644
index 0000000000..1857510c43
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbx-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbx-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbx-v.vf
new file mode 100644
index 0000000000..a70b9f2cd4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbx-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmby-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmby-h.vf
new file mode 100644
index 0000000000..4ffefc5857
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmby-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmby-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmby-v.vf
new file mode 100644
index 0000000000..372b4c2442
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmby-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbz-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbz-h.vf
new file mode 100644
index 0000000000..dbd6587c13
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbz-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmbz-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmbz-v.vf
new file mode 100644
index 0000000000..183234a760
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmbz-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrj-h.vf
new file mode 100644
index 0000000000..93116ce704
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrj-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrj-v.vf
new file mode 100644
index 0000000000..97031da703
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrj-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrk-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrk-h.vf
new file mode 100644
index 0000000000..f3fda90dc8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrk-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrk-v.vf
new file mode 100644
index 0000000000..abf3c00eda
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrl-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrl-h.vf
new file mode 100644
index 0000000000..8f0597221b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrl-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrl-v.vf
new file mode 100644
index 0000000000..c7edc134f0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrm-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrm-h.vf
new file mode 100644
index 0000000000..e4d18b2c9c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrm-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrm-v.vf
new file mode 100644
index 0000000000..58b6a27c61
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrn-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrn-h.vf
new file mode 100644
index 0000000000..b9b6072939
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrn-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrn-v.vf
new file mode 100644
index 0000000000..fd1d665b2d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgro-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgro-h.vf
new file mode 100644
index 0000000000..b2148167a7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgro-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgro-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgro-v.vf
new file mode 100644
index 0000000000..ef0e9d7cfd
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgro-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrp-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrp-h.vf
new file mode 100644
index 0000000000..30dadbc2c0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrp-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrp-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrp-v.vf
new file mode 100644
index 0000000000..d60aa41317
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrp-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrq-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrq-h.vf
new file mode 100644
index 0000000000..2855ba8749
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrq-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrq-v.vf
new file mode 100644
index 0000000000..91d70ae004
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrr-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrr-h.vf
new file mode 100644
index 0000000000..151fc728dd
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrr-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrr-v.vf
new file mode 100644
index 0000000000..fa63768e54
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrs-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrs-h.vf
new file mode 100644
index 0000000000..4eb3d5984a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrs-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrs-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrs-v.vf
new file mode 100644
index 0000000000..76207cbf4c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrs-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrt-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrt-h.vf
new file mode 100644
index 0000000000..1a80ccab30
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrt-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrt-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrt-v.vf
new file mode 100644
index 0000000000..af88a94237
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrt-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgru-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgru-h.vf
new file mode 100644
index 0000000000..e040be6526
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgru-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgru-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgru-v.vf
new file mode 100644
index 0000000000..f5522cee4d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgru-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrv-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrv-h.vf
new file mode 100644
index 0000000000..5200c5bf48
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrv-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrv-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrv-v.vf
new file mode 100644
index 0000000000..bd9766a649
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrv-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrx-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrx-h.vf
new file mode 100644
index 0000000000..fb3e2d49cc
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrx-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrx-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrx-v.vf
new file mode 100644
index 0000000000..1d500a2188
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrx-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgry-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgry-h.vf
new file mode 100644
index 0000000000..8b21f263ed
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgry-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgry-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgry-v.vf
new file mode 100644
index 0000000000..fb6819db14
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgry-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrz-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrz-h.vf
new file mode 100644
index 0000000000..bb8422a8de
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrz-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmgrz-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmgrz-v.vf
new file mode 100644
index 0000000000..50477a8823
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmgrz-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlj-h.vf
new file mode 100644
index 0000000000..386d6c310a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlj-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlj-v.vf
new file mode 100644
index 0000000000..fa1de2cde5
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlj-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlk-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlk-h.vf
new file mode 100644
index 0000000000..f64e8aa6aa
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlk-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlk-v.vf
new file mode 100644
index 0000000000..dc5013611e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmll-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmll-h.vf
new file mode 100644
index 0000000000..77c76856ba
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmll-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmll-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmll-v.vf
new file mode 100644
index 0000000000..f808eb24ab
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmll-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlm-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlm-h.vf
new file mode 100644
index 0000000000..e17449a7f3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlm-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlm-v.vf
new file mode 100644
index 0000000000..2758d13fa8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmln-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmln-h.vf
new file mode 100644
index 0000000000..e915897a21
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmln-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmln-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmln-v.vf
new file mode 100644
index 0000000000..eab558da14
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmln-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlo-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlo-h.vf
new file mode 100644
index 0000000000..9b77ca19f3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlo-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlo-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlo-v.vf
new file mode 100644
index 0000000000..ef98b1df10
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlo-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlp-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlp-h.vf
new file mode 100644
index 0000000000..0070537fb6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlp-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlp-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlp-v.vf
new file mode 100644
index 0000000000..170e8f6310
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlp-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlq-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlq-h.vf
new file mode 100644
index 0000000000..8e23b3b2b3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlq-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlq-v.vf
new file mode 100644
index 0000000000..cfb1185a66
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlr-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlr-h.vf
new file mode 100644
index 0000000000..9da3bafde4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlr-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlr-v.vf
new file mode 100644
index 0000000000..bf6ff6cb6b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmls-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmls-h.vf
new file mode 100644
index 0000000000..73879598ee
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmls-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmls-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmls-v.vf
new file mode 100644
index 0000000000..a01e70e20f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmls-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlt-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlt-h.vf
new file mode 100644
index 0000000000..2611f77cc2
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlt-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlt-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlt-v.vf
new file mode 100644
index 0000000000..7c89471e5e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlt-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlu-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlu-h.vf
new file mode 100644
index 0000000000..ff78022856
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlu-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlu-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlu-v.vf
new file mode 100644
index 0000000000..1cb7b6ad51
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlu-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlv-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlv-h.vf
new file mode 100644
index 0000000000..e0afc6336b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlv-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlv-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlv-v.vf
new file mode 100644
index 0000000000..c8156110d4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlv-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlx-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlx-h.vf
new file mode 100644
index 0000000000..ff57ddc4b1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlx-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlx-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlx-v.vf
new file mode 100644
index 0000000000..11af42833a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlx-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmly-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmly-h.vf
new file mode 100644
index 0000000000..a8a1f36f86
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmly-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmly-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmly-v.vf
new file mode 100644
index 0000000000..bb5d4ccaa5
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmly-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlz-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlz-h.vf
new file mode 100644
index 0000000000..f940ad4c7c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlz-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmlz-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmlz-v.vf
new file mode 100644
index 0000000000..f96215c78c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmlz-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrj-h.vf
new file mode 100644
index 0000000000..61a2db2b03
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrj-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrj-v.vf
new file mode 100644
index 0000000000..717795c3fa
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrj-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrk-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrk-h.vf
new file mode 100644
index 0000000000..50ba6797a7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrk-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrk-v.vf
new file mode 100644
index 0000000000..773a713435
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrl-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrl-h.vf
new file mode 100644
index 0000000000..461304b13e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrl-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrl-v.vf
new file mode 100644
index 0000000000..a38c13ab9f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrm-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrm-h.vf
new file mode 100644
index 0000000000..192f04f59a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrm-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrm-v.vf
new file mode 100644
index 0000000000..463a7d3a5d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrn-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrn-h.vf
new file mode 100644
index 0000000000..776f3c4ae0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrn-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrn-v.vf
new file mode 100644
index 0000000000..c9e245cf40
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmro-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmro-h.vf
new file mode 100644
index 0000000000..81acf68e44
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmro-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmro-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmro-v.vf
new file mode 100644
index 0000000000..48fd73289d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmro-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrp-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrp-h.vf
new file mode 100644
index 0000000000..a79cef5322
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrp-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrp-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrp-v.vf
new file mode 100644
index 0000000000..e9b52791ad
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrp-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrq-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrq-h.vf
new file mode 100644
index 0000000000..5cb21b8324
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrq-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrq-v.vf
new file mode 100644
index 0000000000..9eb07534b6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrr-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrr-h.vf
new file mode 100644
index 0000000000..eefa93df41
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrr-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrr-v.vf
new file mode 100644
index 0000000000..90fa62670d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrs-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrs-h.vf
new file mode 100644
index 0000000000..a0d0daf897
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrs-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrs-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrs-v.vf
new file mode 100644
index 0000000000..c61c8ac763
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrs-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrt-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrt-h.vf
new file mode 100644
index 0000000000..d34272c41d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrt-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrt-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrt-v.vf
new file mode 100644
index 0000000000..b1bc281f4f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrt-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmru-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmru-h.vf
new file mode 100644
index 0000000000..f0c6467a58
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmru-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmru-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmru-v.vf
new file mode 100644
index 0000000000..40f6d638be
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmru-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrv-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrv-h.vf
new file mode 100644
index 0000000000..51de2fe52e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrv-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrv-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrv-v.vf
new file mode 100644
index 0000000000..d4a05dcfe2
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrv-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrx-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrx-h.vf
new file mode 100644
index 0000000000..2d9b3722fe
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrx-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrx-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrx-v.vf
new file mode 100644
index 0000000000..8c96ba52de
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrx-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmry-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmry-h.vf
new file mode 100644
index 0000000000..5c6320bb07
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmry-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmry-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmry-v.vf
new file mode 100644
index 0000000000..2587061965
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmry-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrz-h.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrz-h.vf
new file mode 100644
index 0000000000..f2597b5a25
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrz-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfjmrz-v.vf b/language/japanese/japanese-otf-uptex/vf/utfjmrz-v.vf
new file mode 100644
index 0000000000..f1fb6ed7cd
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfjmrz-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrj-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrj-h.vf
new file mode 100644
index 0000000000..61a2db2b03
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrj-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrj-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrj-v.vf
new file mode 100644
index 0000000000..717795c3fa
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrj-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrk-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrk-h.vf
new file mode 100644
index 0000000000..7b2a2935c8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrk-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrk-v.vf
new file mode 100644
index 0000000000..dfb85d1ac7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrl-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrl-h.vf
new file mode 100644
index 0000000000..75cceec250
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrl-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrl-v.vf
new file mode 100644
index 0000000000..f518cef397
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrm-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrm-h.vf
new file mode 100644
index 0000000000..15ba968db7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrm-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrm-v.vf
new file mode 100644
index 0000000000..702fefb577
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrn-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrn-h.vf
new file mode 100644
index 0000000000..6fb29d9cc5
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrn-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrn-v.vf
new file mode 100644
index 0000000000..0a832b421f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmro-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmro-h.vf
new file mode 100644
index 0000000000..67b5aa4d9b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmro-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmro-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmro-v.vf
new file mode 100644
index 0000000000..9bb466dcf6
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmro-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrp-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrp-h.vf
new file mode 100644
index 0000000000..5c730d75b0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrp-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrp-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrp-v.vf
new file mode 100644
index 0000000000..1fafb3eff7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrp-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrq-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrq-h.vf
new file mode 100644
index 0000000000..cee3d0c7e2
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrq-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrq-v.vf
new file mode 100644
index 0000000000..aba15b1aea
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrr-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrr-h.vf
new file mode 100644
index 0000000000..a3166f3552
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrr-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrr-v.vf
new file mode 100644
index 0000000000..2220a0ced1
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrs-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrs-h.vf
new file mode 100644
index 0000000000..b136918ae4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrs-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrs-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrs-v.vf
new file mode 100644
index 0000000000..d6ab67cfe8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrs-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrt-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrt-h.vf
new file mode 100644
index 0000000000..c65e3ec576
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrt-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrt-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrt-v.vf
new file mode 100644
index 0000000000..c60a162e82
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrt-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmru-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmru-h.vf
new file mode 100644
index 0000000000..50cfb26565
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmru-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmru-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmru-v.vf
new file mode 100644
index 0000000000..f3fbe2eefb
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmru-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrv-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrv-h.vf
new file mode 100644
index 0000000000..288ae7bb12
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrv-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrv-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrv-v.vf
new file mode 100644
index 0000000000..385502dfa0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrv-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrw-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrw-h.vf
new file mode 100644
index 0000000000..1b3039506b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrw-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrw-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrw-v.vf
new file mode 100644
index 0000000000..e5756dc04c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrw-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrx-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrx-h.vf
new file mode 100644
index 0000000000..278038671e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrx-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrx-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrx-v.vf
new file mode 100644
index 0000000000..294e5b8ec9
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrx-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmry-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmry-h.vf
new file mode 100644
index 0000000000..5c6320bb07
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmry-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmry-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmry-v.vf
new file mode 100644
index 0000000000..2587061965
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmry-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrz-h.vf b/language/japanese/japanese-otf-uptex/vf/utfmrz-h.vf
new file mode 100644
index 0000000000..775b1dc773
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrz-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utfmrz-v.vf b/language/japanese/japanese-otf-uptex/vf/utfmrz-v.vf
new file mode 100644
index 0000000000..e57b8c613e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utfmrz-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrk-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrk-h.vf
new file mode 100644
index 0000000000..a3c5534c6e
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrk-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrk-v.vf
new file mode 100644
index 0000000000..fa19815a4b
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrl-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrl-h.vf
new file mode 100644
index 0000000000..808d156c34
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrl-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrl-v.vf
new file mode 100644
index 0000000000..2d4c8ad4a8
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrm-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrm-h.vf
new file mode 100644
index 0000000000..aa74c9178c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrm-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrm-v.vf
new file mode 100644
index 0000000000..6477bf5f5d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrn-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrn-h.vf
new file mode 100644
index 0000000000..33b0e83dc5
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrn-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrn-v.vf
new file mode 100644
index 0000000000..073b20a586
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgro-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgro-h.vf
new file mode 100644
index 0000000000..ea56080e76
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgro-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgro-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgro-v.vf
new file mode 100644
index 0000000000..9d9f50b86c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgro-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrp-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrp-h.vf
new file mode 100644
index 0000000000..400c487b72
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrp-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrp-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrp-v.vf
new file mode 100644
index 0000000000..ea23e18ab4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrp-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrq-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrq-h.vf
new file mode 100644
index 0000000000..d4223aa931
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrq-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrq-v.vf
new file mode 100644
index 0000000000..249180409d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrr-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrr-h.vf
new file mode 100644
index 0000000000..f832cf0e31
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrr-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrr-v.vf
new file mode 100644
index 0000000000..0345d797bb
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrs-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrs-h.vf
new file mode 100644
index 0000000000..bbf5a324dc
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrs-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrs-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrs-v.vf
new file mode 100644
index 0000000000..1019051d7d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrs-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrt-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrt-h.vf
new file mode 100644
index 0000000000..60455696b2
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrt-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrt-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrt-v.vf
new file mode 100644
index 0000000000..b0fd36856a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrt-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgru-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgru-h.vf
new file mode 100644
index 0000000000..e45f908c7d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgru-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgru-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgru-v.vf
new file mode 100644
index 0000000000..7b09604b7a
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgru-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrv-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrv-h.vf
new file mode 100644
index 0000000000..5bb5596c2d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrv-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrv-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrv-v.vf
new file mode 100644
index 0000000000..b133bb5fd4
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrv-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrw-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrw-h.vf
new file mode 100644
index 0000000000..c52e0b77ca
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrw-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrw-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrw-v.vf
new file mode 100644
index 0000000000..87cc1d3d16
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrw-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrx-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrx-h.vf
new file mode 100644
index 0000000000..0bc9f48ada
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrx-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrx-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrx-v.vf
new file mode 100644
index 0000000000..8ef612046d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrx-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrz-h.vf b/language/japanese/japanese-otf-uptex/vf/utftgrz-h.vf
new file mode 100644
index 0000000000..159366182c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrz-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftgrz-v.vf b/language/japanese/japanese-otf-uptex/vf/utftgrz-v.vf
new file mode 100644
index 0000000000..cc4358afb3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftgrz-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrk-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrk-h.vf
new file mode 100644
index 0000000000..8674e250a3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrk-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrk-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrk-v.vf
new file mode 100644
index 0000000000..1327b4937f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrk-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrl-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrl-h.vf
new file mode 100644
index 0000000000..08724bf4fb
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrl-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrl-v.vf
new file mode 100644
index 0000000000..9242a7ca80
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrm-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrm-h.vf
new file mode 100644
index 0000000000..09e589b844
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrm-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrm-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrm-v.vf
new file mode 100644
index 0000000000..de4ea21924
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrm-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrn-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrn-h.vf
new file mode 100644
index 0000000000..cf4f1d07ba
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrn-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrn-v.vf
new file mode 100644
index 0000000000..8fbc651fab
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmro-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmro-h.vf
new file mode 100644
index 0000000000..e832ea1fe0
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmro-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmro-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmro-v.vf
new file mode 100644
index 0000000000..7535439734
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmro-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrp-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrp-h.vf
new file mode 100644
index 0000000000..6807bd69b3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrp-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrp-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrp-v.vf
new file mode 100644
index 0000000000..398601919f
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrp-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrq-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrq-h.vf
new file mode 100644
index 0000000000..7b1b59c714
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrq-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrq-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrq-v.vf
new file mode 100644
index 0000000000..ec4156df9d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrq-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrr-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrr-h.vf
new file mode 100644
index 0000000000..89663f7bc3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrr-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrr-v.vf
new file mode 100644
index 0000000000..8fccd64cbe
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrs-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrs-h.vf
new file mode 100644
index 0000000000..2ba4679a82
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrs-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrs-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrs-v.vf
new file mode 100644
index 0000000000..3bfaf150aa
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrs-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrt-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrt-h.vf
new file mode 100644
index 0000000000..987d1ce1fb
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrt-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrt-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrt-v.vf
new file mode 100644
index 0000000000..e84ead070c
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrt-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmru-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmru-h.vf
new file mode 100644
index 0000000000..ddb5e7ff64
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmru-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmru-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmru-v.vf
new file mode 100644
index 0000000000..162f259a16
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmru-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrv-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrv-h.vf
new file mode 100644
index 0000000000..eed779dfb7
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrv-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrv-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrv-v.vf
new file mode 100644
index 0000000000..a377088396
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrv-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrw-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrw-h.vf
new file mode 100644
index 0000000000..3b225cfbe3
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrw-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrw-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrw-v.vf
new file mode 100644
index 0000000000..31ebcf6940
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrw-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrx-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrx-h.vf
new file mode 100644
index 0000000000..772cabe508
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrx-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrx-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrx-v.vf
new file mode 100644
index 0000000000..ffce0b0994
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrx-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrz-h.vf b/language/japanese/japanese-otf-uptex/vf/utftmrz-h.vf
new file mode 100644
index 0000000000..7954ad021d
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrz-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf-uptex/vf/utftmrz-v.vf b/language/japanese/japanese-otf-uptex/vf/utftmrz-v.vf
new file mode 100644
index 0000000000..ffbfc14dc9
--- /dev/null
+++ b/language/japanese/japanese-otf-uptex/vf/utftmrz-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/COPYRIGHT b/language/japanese/japanese-otf/COPYRIGHT
new file mode 100644
index 0000000000..e9e3cee8f8
--- /dev/null
+++ b/language/japanese/japanese-otf/COPYRIGHT
@@ -0,0 +1,25 @@
+Copyright (C) 2003--2019 SAITO Shuzaburo and INOUE Koichi
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. Neither the name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/japanese-otf/README b/language/japanese/japanese-otf/README
new file mode 100644
index 0000000000..6c2571b320
--- /dev/null
+++ b/language/japanese/japanese-otf/README
@@ -0,0 +1,37 @@
+package name: otf or japanese-otf
+
+This is the file README written in English by Norbert Preining
+for the upload to CTAN. More information in Japanese can be
+found in readme-ja.txt. (written by Saito Shuzaburo, originally
+named readme.txt)
+
+This package is originally named "otf", but for the sake of not
+choosing to general names on CTAN (and in TeX Live) it will be
+called "japanese-otf". This change has been discussed with
+the author of the package, Saito Shuzaburo. The version of
+the package used is
+ otfbeta.zip v1.7b8 2019/04/01
+
+In addition a patch by Hironori Kitagawa was applied
+ otf-script-gteb.diff
+(included) to build tfm/vf/ofm for gteb font series.
+
+The map file in TeXLive-maps/otf-cktx.map was generated from the
+provided font maps.
+
+The original source has been downloaded from
+ http://psitau.kitunebi.com/otf.html
+as
+ http://psitau.kitunebi.com/otf1.7b8.zip
+
+This package provides advanced typesetting options for platex and
+friends.
+
+After downloading the script makeotf has been run and the generated
+vf/tfm/ofm files have been included in the upload to CTAN.
+
+The contents of this package is under the license given in the
+COPYRIGHT file, which is more or less BSD license.
+
+Norbert Preining
+20190402.0
diff --git a/language/japanese/japanese-otf/TeXLive-maps/otf-cktx.map b/language/japanese/japanese-otf/TeXLive-maps/otf-cktx.map
new file mode 100644
index 0000000000..853615003a
--- /dev/null
+++ b/language/japanese/japanese-otf/TeXLive-maps/otf-cktx.map
@@ -0,0 +1,35 @@
+%%%%% Traditional Chinese -- serif %%%%%
+otf-utmr-h UniCNS-UCS2-H MSung-Light
+otf-utmr-v UniCNS-UCS2-V MSung-Light
+otf-ctmr-h Identity-H MSung-Light
+otf-ctmr-v Identity-V MSung-Light
+
+%%%%% Traditional Chinese -- sans serif %%%%%
+otf-utgr-h UniCNS-UCS2-H MHei-Medium
+otf-utgr-v UniCNS-UCS2-V MHei-Medium
+otf-ctgr-h Identity-H MHei-Medium
+otf-ctgr-v Identity-V MHei-Medium
+
+%%%%% Simplified Chinese -- serif %%%%%
+otf-ucmr-h UniGB-UCS2-H STSong-Light
+otf-ucmr-v UniGB-UCS2-V STSong-Light
+otf-ccmr-h Identity-H STSong-Light
+otf-ccmr-v Identity-V STSong-Light
+
+%%%%% Simplified Chinese -- sans serif %%%%%
+otf-ucgr-h UniGB-UCS2-H STHeiti-Regular
+otf-ucgr-v UniGB-UCS2-V STHeiti-Regular
+otf-ccgr-h Identity-H STHeiti-Regular
+otf-ccgr-v Identity-V STHeiti-Regular
+
+%%%%% Korean -- serif %%%%%
+otf-ukmr-h UniKS-UCS2-H HYSMyeongJo-Medium
+otf-ukmr-v UniKS-UCS2-V HYSMyeongJo-Medium
+otf-ckmr-h Identity-H HYSMyeongJo-Medium
+otf-ckmr-v Identity-V HYSMyeongJo-Medium
+
+%%%%% Korean -- sans serif %%%%%
+otf-ukgr-h UniKS-UCS2-H HYGoThic-Medium
+otf-ukgr-v UniKS-UCS2-V HYGoThic-Medium
+otf-ckgr-h Identity-H HYGoThic-Medium
+otf-ckgr-v Identity-V HYGoThic-Medium
diff --git a/language/japanese/japanese-otf/basepl/base-h.pl b/language/japanese/japanese-otf/basepl/base-h.pl
new file mode 100644
index 0000000000..5a47ee0760
--- /dev/null
+++ b/language/japanese/japanese-otf/basepl/base-h.pl
@@ -0,0 +1,155 @@
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(GLUEKERN
+ (LABEL O 0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 1)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 2)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ (GLUE O 6 R 0.5 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 3)
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ (GLUE O 6 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 4)
+ (GLUE O 0 R 0.5 R 0.0 R 0.0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 0.75 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.0)
+ (GLUE O 6 R 0.5 R 0.0 R 0.0)
+ (STOP)
+ (LABEL O 5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ (STOP)
+ (LABEL O 6)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ )
+(CHARSINTYPE O 1
+ $B!F(B $B!H(B $B!J(B $B!L(B $B!N(B $B!P(B $B!R(B $B!T(B $B!V(B $B!X(B $B!Z(B
+ )
+(CHARSINTYPE O 2
+ $B!"(B $B!$(B $B!G(B $B!I(B $B!K(B $B!M(B $B!O(B $B!Q(B $B!S(B $B!U(B $B!W(B $B!Y(B $B![(B
+ )
+(CHARSINTYPE O 3
+ $B!&(B $B!'(B $B!((B
+ )
+(CHARSINTYPE O 4
+ $B!#(B $B!%(B
+ )
+(CHARSINTYPE O 5
+ $B!=(B $B!D(B $B!E(B
+ )
+(CHARSINTYPE O 6
+ $B!)(B $B!*(B
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 2
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ (GLUE O 6 R 0.5 R 0.0 R 0.5)
+ )
+ )
+(TYPE O 3
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ (GLUE O 6 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 4
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 0 R 0.5 R 0.0 R 0.0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 0.75 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.0)
+ (GLUE O 6 R 0.5 R 0.0 R 0.0)
+ )
+ )
+(TYPE O 5
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ )
+ )
+(TYPE O 6
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ (COMMENT
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
diff --git a/language/japanese/japanese-otf/basepl/base-v.pl b/language/japanese/japanese-otf/basepl/base-v.pl
new file mode 100644
index 0000000000..5d9ce14dc3
--- /dev/null
+++ b/language/japanese/japanese-otf/basepl/base-v.pl
@@ -0,0 +1,150 @@
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(DIRECTION TATE)
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(GLUEKERN
+ (LABEL O 0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 1)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 2)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 3)
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 4)
+ (GLUE O 0 R 0.5 R 0.0 R 0.0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 0.75 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.0)
+ (STOP)
+ (LABEL O 5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ (STOP)
+ (LABEL O 6)
+ (GLUE O 0 R 1.0 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ )
+(CHARSINTYPE O 1
+ $B!F(B $B!H(B $B!J(B $B!L(B $B!N(B $B!P(B $B!R(B $B!T(B $B!V(B $B!X(B $B!Z(B
+ )
+(CHARSINTYPE O 2
+ $B!"(B $B!$(B $B!G(B $B!I(B $B!K(B $B!M(B $B!O(B $B!Q(B $B!S(B $B!U(B $B!W(B $B!Y(B $B![(B
+ )
+(CHARSINTYPE O 3
+ $B!&(B $B!'(B $B!((B
+ )
+(CHARSINTYPE O 4
+ $B!#(B $B!%(B
+ )
+(CHARSINTYPE O 5
+ $B!=(B $B!D(B $B!E(B
+ )
+(CHARSINTYPE O 6
+ $B!)(B $B!*(B
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 2
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ )
+ )
+(TYPE O 3
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ )
+ )
+(TYPE O 4
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 0 R 0.5 R 0.0 R 0.0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 0.75 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.0)
+ )
+ )
+(TYPE O 5
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ )
+ )
+(TYPE O 6
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ (COMMENT
+ (GLUE O 0 R 1.0 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ )
+ )
diff --git a/language/japanese/japanese-otf/basepl/base0-h.pl b/language/japanese/japanese-otf/basepl/base0-h.pl
new file mode 100644
index 0000000000..6362d41028
--- /dev/null
+++ b/language/japanese/japanese-otf/basepl/base0-h.pl
@@ -0,0 +1,30 @@
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(CHARSINTYPE O 1
+ $B3W(B $B3X(B $B3Y(B $B3Z(B $B3[(B $B3\(B $B3](B $B3^(B $B3_(B $B3`(B $B3a(B $B3b(B $B3c(B $B3d(B $B3e(B $B3f(B $B3g(B $B3h(B $B3i(B $B3j(B $B3k(B $B3l(B $B3m(B $B3n(B $B3o(B $B3p(B $B3q(B $B3r(B $B3s(B $B3t(B $B3u(B $B3v(B $B3w(B $B3x(B $B3y(B $B3z(B $B3{(B $B3|(B $B3}(B $B3~(B $B4!(B $B4"(B $B4#(B $B4$(B $B4%(B $B4&(B $B4'(B $B4((B $B4)(B $B4*(B $B4+(B $B4,(B $B4-(B $B4.(B $B4/(B $B40(B $B41(B $B42(B $B43(B $B44(B $B45(B $B46(B $B47(B $B48(B $B49(B $B4:(B $B4;(B $B4<(B $B4=(B $B4>(B $B4?(B $B4@(B $B4A(B $B4B(B $B4C(B $B4D(B $B4E(B $B4F(B $B4G(B $B4H(B $B4I(B $B4J(B $B4K(B $B4L(B $B4M(B $B4N(B $B4O(B $B4P(B $B4Q(B $B4R(B $B4S(B $B4T(B $B4U(B $B4V(B $B4W(B $B4X(B $B4Y(B $B4Z(B $B4[(B $B4\(B $B4](B $B4^(B $B4_(B $B4`(B $B4a(B $B4b(B $B4c(B $B4d(B $B4e(B $B4f(B $B4g(B $B4h(B $B4i(B $B4j(B $B4k(B $B4l(B $B4m(B $B4n(B $B4o(B $B4p(B $B4q(B $B4r(B $B4s(B $B4t(B $B4u(B $B4v(B $B4w(B $B4x(B $B4y(B $B4z(B $B4{(B $B4|(B $B4}(B $B4~(B $B5!(B $B5"(B $B5#(B $B5$(B $B5%(B $B5&(B $B5'(B $B5((B $B5)(B $B5*(B $B5+(B $B5,(B $B5-(B $B5.(B $B5/(B $B50(B $B51(B $B52(B $B53(B $B54(B $B55(B $B56(B $B57(B $B58(B $B59(B $B5:(B $B5;(B $B5<(B $B5=(B $B5>(B $B5?(B $B5@(B $B5A(B $B5B(B $B5C(B $B5D(B $B5E(B $B5F(B $B5G(B $B5H(B $B5I(B $B5J(B $B5K(B $B5L(B $B5M(B $B5N(B $B5O(B $B5P(B $B5Q(B $B5R(B $B5S(B $B5T(B $B5U(B $B5V(B $B5W(B $B5X(B $B5Y(B $B5Z(B $B5[(B $B5\(B $B5](B $B5^(B $B5_(B $B5`(B $B5a(B $B5b(B $B5c(B $B5d(B $B5e(B $B5f(B $B5g(B $B5h(B $B5i(B $B5j(B $B5k(B $B5l(B $B5m(B $B5n(B $B5o(B $B5p(B $B5q(B $B5r(B $B5s(B $B5t(B $B5u(B $B5v(B $B5w(B $B5x(B $B5y(B $B5z(B $B5{(B $B5|(B $B5}(B $B5~(B $B6!(B $B6"(B $B6#(B $B6$(B $B6%(B $B6&(B $B6'(B $B6((B $B6)(B $B6*(B $B6+(B $B6,(B $B6-(B $B6.(B $B6/(B $B60(B $B61(B $B62(B $B63(B $B64(B $B65(B $B66(B $B67(B $B68(B $B69(B $B6:(B $B6;(B $B6<(B $B6=(B $B6>(B $B6?(B $B6@(B $B6A(B $B6B(B $B6C(B $B6D(B $B6E(B $B6F(B $B6G(B $B6H(B $B6I(B $B6J(B $B6K(B $B6L(B $B6M(B $B6N(B $B6O(B $B6P(B $B6Q(B $B6R(B $B6S(B $B6T(B $B6U(B $B6V(B $B6W(B $B6X(B $B6Y(B $B6Z(B $B6[(B $B6\(B $B6](B $B6^(B $B6_(B $B6`(B $B6a(B $B6b(B $B6c(B $B6d(B $B6e(B $B6f(B $B6g(B $B6h(B $B6i(B $B6j(B $B6k(B $B6l(B $B6m(B $B6n(B $B6o(B $B6p(B $B6q(B $B6r(B $B6s(B $B6t(B $B6u(B $B6v(B $B6w(B $B6x(B $B6y(B $B6z(B $B6{(B $B6|(B $B6}(B $B6~(B $B7!(B $B7"(B $B7#(B $B7$(B $B7%(B $B7&(B $B7'(B $B7((B $B7)(B $B7*(B $B7+(B $B7,(B $B7-(B $B7.(B $B7/(B $B70(B $B71(B $B72(B $B73(B $B74(B $B75(B $B76(B $B77(B $B78(B $B79(B $B7:(B $B7;(B $B7<(B $B7=(B $B7>(B $B7?(B $B7@(B $B7A(B $B7B(B $B7C(B $B7D(B $B7E(B $B7F(B $B7G(B $B7H(B $B7I(B $B7J(B $B7K(B $B7L(B $B7M(B $B7N(B $B7O(B $B7P(B $B7Q(B $B7R(B $B7S(B $B7T(B $B7U(B $B7V(B $B7W(B $B7X(B $B7Y(B $B7Z(B $B7[(B $B7\(B $B7](B $B7^(B $B7_(B $B7`(B $B7a(B $B7b(B $B7c(B $B7d(B $B7e(B $B7f(B $B7g(B $B7h(B $B7i(B $B7j(B $B7k(B $B7l(B $B7m(B $B7n(B $B7o(B $B7p(B $B7q(B $B7r(B $B7s(B $B7t(B $B7u(B $B7v(B $B7w(B $B7x(B $B7y(B $B7z(B $B7{(B $B7|(B $B7}(B $B7~(B $B8!(B $B8"(B $B8#(B $B8$(B $B8%(B $B8&(B $B8'(B $B8((B $B8)(B $B8*(B $B8+(B $B8,(B $B8-(B $B8.(B $B8/(B $B80(B $B81(B $B82(B $B83(B $B84(B $B85(B $B86(B $B87(B $B88(B $B89(B $B8:(B $B8;(B $B8<(B $B8=(B $B8>(B $B8?(B $B8@(B $B8A(B $B8B(B $B8C(B $B8D(B $B8E(B $B8F(B $B8G(B $B8H(B $B8I(B $B8J(B $B8K(B $B8L(B $B8M(B $B8N(B $B8O(B $B8P(B $B8Q(B $B8R(B $B8S(B $B8T(B $B8U(B $B8V(B $B8W(B $B8X(B $B8Y(B $B8Z(B $B8[(B $B8\(B $B8](B $B8^(B $B8_(B $B8`(B $B8a(B $B8b(B $B8c(B $B8d(B $B8e(B $B8f(B $B8g(B $B8h(B $B8i(B $B8j(B $B8k(B $B8l(B $B8m(B $B8n(B $B8o(B $B8p(B $B8q(B $B8r(B $B8s(B $B8t(B $B8u(B $B8v(B $B8w(B $B8x(B $B8y(B $B8z(B $B8{(B $B8|(B $B8}(B $B8~(B $B9!(B $B9"(B $B9#(B $B9$(B $B9%(B $B9&(B $B9'(B $B9((B $B9)(B $B9*(B $B9+(B $B9,(B $B9-(B $B9.(B $B9/(B $B90(B $B91(B $B92(B $B93(B $B94(B $B95(B $B96(B $B97(B $B98(B $B99(B $B9:(B $B9;(B $B9<(B $B9=(B $B9>(B $B9?(B $B9@(B $B9A(B $B9B(B $B9C(B $B9D(B $B9E(B $B9F(B $B9G(B $B9H(B $B9I(B $B9J(B $B9K(B $B9L(B $B9M(B $B9N(B $B9O(B $B9P(B $B9Q(B $B9R(B $B9S(B $B9T(B $B9U(B $B9V(B $B9W(B $B9X(B $B9Y(B $B9Z(B $B9[(B $B9\(B $B9](B $B9^(B $B9_(B $B9`(B $B9a(B $B9b(B $B9c(B $B9d(B $B9e(B $B9f(B $B9g(B $B9h(B
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
diff --git a/language/japanese/japanese-otf/basepl/base2-h.pl b/language/japanese/japanese-otf/basepl/base2-h.pl
new file mode 100644
index 0000000000..e5352fe7c5
--- /dev/null
+++ b/language/japanese/japanese-otf/basepl/base2-h.pl
@@ -0,0 +1,47 @@
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(CHARSINTYPE O 1
+ $B8>(B $B8?(B $BlO(B $BlP(B $BlQ(B $BlR(B $BlS(B $BlT(B $BlU(B $BlV(B $BlW(B $BlX(B $BlY(B $BlZ(B $Bl[(B $Bl\(B $Bl](B $Bl^(B $Bl_(B $Bl`(B $Bla(B $Blb(B $Blc(B $Bld(B $Ble(B $Blf(B $Blg(B
+ )
+(CHARSINTYPE O 2
+ $BH:(B $BH;(B $BH<(B $BH=(B $BH>(B $BH?(B $BH@(B $BHA(B $BHB(B $BHC(B $BHD(B $BHE(B $BHF(B $BHG(B $BHH(B $BHI(B $BHJ(B $BHK(B $BHL(B $BHM(B
+ )
+(CHARSINTYPE O 3
+ $BHN(B $BHO(B $BHP(B $BHQ(B $BHR(B $BHS(B $BHT(B $BHU(B $BHV(B $BHW(B $BHX(B $BHY(B $BHZ(B $BH[(B $BH\(B $BH](B $BH^(B $BH_(B $BH`(B $BHa(B $BHb(B
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 2
+ (CHARWD R 0.25)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 3
+ (CHARWD R 0.333333)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+ \ No newline at end of file
diff --git a/language/japanese/japanese-otf/basepl/base2-v.pl b/language/japanese/japanese-otf/basepl/base2-v.pl
new file mode 100644
index 0000000000..46b9b974c9
--- /dev/null
+++ b/language/japanese/japanese-otf/basepl/base2-v.pl
@@ -0,0 +1,31 @@
+(DIRECTION TATE)
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(CHARSINTYPE O 1
+ $B;f(B $B;g(B $B;h(B $B;i(B $B;j(B $B;k(B $B;l(B $B;m(B $B;n(B $B;o(B $B;p(B $B;q(B $B;r(B $B;s(B $B;t(B $B;u(B $B;v(B $B;w(B $B;x(B $B;y(B $B;z(B $B;{(B $B;|(B $B;}(B $B;~(B $B<!(B $B<"(B $B<#(B $B<$(B $B<%(B $B<&(B $B<'(B $B<((B $B<)(B $B<*(B $B<+(B $B<,(B $B<-(B $B<.(B $B</(B $B<0(B $B<1(B $B<2(B $B<3(B $B<4(B $B<5(B $B<6(B $B<7(B $B<8(B $B<9(B $B<:(B $B<;(B $B<<(B $B<=(B $B<>(B $B<?(B $B<@(B $B<A(B $B<B(B $B<C(B $B<D(B $B<E(B $B<F(B $B<G(B $B<H(B $B<I(B $B<J(B $B<K(B $B<L(B $B<M(B $B<N(B $B<O(B $B<P(B $B<Q(B $B<R(B $B<S(B $B<T(B $B<U(B $B<V(B $B<W(B $B<X(B $B<Y(B $B<Z(B $B<[(B $B<\(B $B<](B $B<^(B $B<_(B $B<`(B $B<a(B $B<b(B $B<c(B $B<d(B $B<e(B $B<f(B $B<g(B $B<h(B $B<i(B $B<j(B $B<k(B $B<l(B $B<m(B $B<n(B $B<o(B $B<p(B $B<q(B $B<r(B $B<s(B $B<t(B $B<u(B $B<v(B $B<w(B $B<x(B $B<y(B $B<z(B $B<{(B $B<|(B $B<}(B $B<~(B $B=!(B $B="(B $B=#(B $B=$(B $B=%(B $B=&(B $B='(B $B=((B $B=)(B $B=*(B $B=+(B $B=,(B $B=-(B $B=.(B $B=/(B $B=0(B $B=1(B $B=2(B $B=3(B $B=4(B $B=5(B $B=6(B $B=7(B $B=8(B $B=9(B $B=:(B $B=;(B $B=<(B $B==(B $B=>(B $B=?(B $B=@(B $B=A(B $B=B(B $B=C(B $B=D(B $B=E(B $B=F(B $B=G(B $B=H(B $B=I(B $B=J(B $B=K(B $B=L(B $B=M(B $B=N(B $B=O(B $B=P(B $B=Q(B $B=R(B $B=S(B $B=T(B $B=U(B $B=V(B $B=W(B $B=X(B $B=Y(B $B=Z(B $B=[(B $B=\(B $B=](B $B=^(B $B=_(B $B=`(B $B=a(B $B=b(B $B=c(B $B=d(B $B=e(B $B=f(B $B=g(B $B=h(B $B=i(B $B=j(B $B=k(B $B=l(B $B=m(B $B=n(B $B=o(B $B=p(B $B=q(B $B=r(B $B=s(B $B=t(B $B=u(B $B=v(B $B=w(B $B=x(B $B=y(B $B=z(B $B={(B $B=|(B $B=}(B $B=~(B $B>!(B $B>"(B $B>#(B $B>$(B $B>%(B $B>&(B $B>'(B $B>((B $B>)(B $B>*(B $B>+(B $B>,(B $B>-(B $B>.(B $B>/(B $B>0(B $B>1(B $B>2(B $B>3(B $B>4(B $B>5(B $B>6(B $B>7(B $B>8(B $B>9(B $B>:(B $B>;(B $B><(B $B>=(B $B>>(B $B>?(B $B>@(B $B>A(B $B>B(B $B>C(B $B>D(B $B>E(B $B>F(B $B>G(B $B>H(B $B>I(B $B>J(B $B>K(B $B>L(B $B>M(B $B>N(B $B>O(B $B>P(B $B>Q(B $B>R(B $B>S(B $B>T(B $B>U(B $B>V(B $B>W(B $B>X(B $B>Y(B $B>Z(B $B>[(B $B>\(B $B>](B $B>^(B $B>_(B $B>`(B $B>a(B $B>b(B $B>c(B $B>d(B $B>e(B $B>f(B $B>g(B $B>h(B $B>i(B $B>j(B $B>k(B $B>l(B $B>m(B $B>n(B $B>o(B $B>p(B $B>q(B $B>r(B $B>s(B $B>t(B $B>u(B $B>v(B $B>w(B $B>x(B $B>y(B $B>z(B $B>{(B $B>|(B $B>}(B $B>~(B $B?!(B $B?"(B $B?#(B $B?$(B $B?%(B $B?&(B $B?'(B $B?((B $B?)(B $B?*(B $B?+(B $B?,(B $B?-(B $B?.(B $B?/(B $B?0(B $B?1(B $B?2(B $B?3(B $B?4(B $B?5(B $B?6(B $B?7(B $B?8(B $B?9(B $B?:(B $B?;(B $B?<(B $B?=(B $B?>(B $B??(B $B?@(B $B?A(B $B?B(B $B?C(B $B?D(B $B?E(B $B?F(B $B?G(B $B?H(B $B?I(B $B?J(B $B?K(B $B?L(B $B?M(B $B?N(B $B?O(B $B?P(B $B?Q(B $B?R(B $B?S(B $B?T(B $B?U(B $B?V(B $B?W(B $B?X(B $B?Y(B $B?Z(B $B?[(B $B?\(B $B?](B $B?^(B $B?_(B $B?`(B $B?a(B $B?b(B $B?c(B $B?d(B $B?e(B $B?f(B $B?g(B $B?h(B $B?i(B $B?j(B $B?k(B $B?l(B $B?m(B $B?n(B $B?o(B $B?p(B $B?q(B $B?r(B $B?s(B $B?t(B $B?u(B $B?v(B $B?w(B $B?x(B $B?y(B $B?z(B $B?{(B $B?|(B $B?}(B $B?~(B $B@!(B $B@"(B $B@#(B $B@$(B $B@%(B $B@&(B $B@'(B $B@((B $B@)(B $B@*(B $B@+(B $B@,(B $B@-(B $B@.(B $B@/(B $B@0(B $B@1(B $B@2(B $B@3(B $B@4(B $B@5(B $B@6(B $B@7(B $B@8(B $B@9(B $B@:(B $B@;(B $B@<(B $B@=(B $B@>(B $B@?(B $B@@(B $B@A(B $B@B(B $B@C(B $B@D(B $B@E(B $B@F(B $B@G(B $B@H(B $B@I(B $B@J(B $B@K(B $B@L(B $B@M(B $B@N(B $B@O(B $B@P(B $B@Q(B $B@R(B $B@S(B $B@T(B $B@U(B $B@V(B $B@W(B $B@X(B $B@Y(B $B@Z(B $B@[(B $B@\(B $B@](B $B@^(B $B@_(B $B@`(B $B@a(B $B@b(B $B@c(B $B@d(B $B@e(B $B@f(B $B@g(B $B@h(B $B@i(B $B@j(B $B@k(B $B@l(B $B@m(B $B@n(B $B@o(B $B@p(B $B@q(B $B@r(B $B@s(B $B@t(B $B@u(B $B@v(B $B@w(B $B@x(B $B@y(B $B@z(B $B@{(B $B@|(B $B@}(B $B@~(B $BA!(B $BA"(B $BA#(B $BA$(B $BA%(B $BA&(B $BA'(B $BA((B $BA)(B $BA*(B $BA+(B $BA,(B $BA-(B $BA.(B $BA/(B $BA0(B $BA1(B $BA2(B $BA3(B $BA4(B $BA5(B $BA6(B $BA7(B $BA8(B $BA9(B $BA:(B $BA;(B $BA<(B $BA=(B $BA>(B $BA?(B $BA@(B $BAA(B $BAB(B $BAC(B $BAD(B $BAE(B $BAF(B $BAG(B $BAH(B $BAI(B $BAJ(B $BAK(B $BAL(B $BAM(B $BAN(B $BAO(B $BAP(B $BAQ(B $BAR(B $BAS(B $BAT(B $BAU(B $BAV(B $BAW(B $BAX(B $BAY(B $BAZ(B $BA[(B $BA\(B $BA](B $BA^(B $BA_(B $BA`(B $BAa(B $BAb(B $BAc(B $BAd(B $BAe(B $BAf(B $BAg(B $BAh(B $BAi(B $BAj(B $BAk(B $BAl(B $BAm(B $BAn(B $BAo(B $BAp(B $BAq(B $BAr(B $BAs(B $BAt(B $BAu(B $BAv(B $BAw(B $BAx(B $BAy(B $BAz(B $BA{(B $BA|(B $BA}(B $BA~(B $BB!(B $BB"(B $BB#(B $BB$(B $BB%(B $BB&(B $BB'(B $BB((B $BB)(B $BB*(B $BB+(B $BB,(B $BB-(B $BB.(B $BB/(B $BB0(B $BB1(B $BB2(B $BB3(B $BB4(B $BB5(B $BB6(B $BB7(B $BB8(B $BB9(B $BO9(B $BO:(B $BO;(B $BO<(B $BO=(B $BO>(B $BO?(B $BO@(B $BOA(B $BOB(B $BOC(B
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
diff --git a/language/japanese/japanese-otf/basepl/base3-v.pl b/language/japanese/japanese-otf/basepl/base3-v.pl
new file mode 100644
index 0000000000..3f79fbf01d
--- /dev/null
+++ b/language/japanese/japanese-otf/basepl/base3-v.pl
@@ -0,0 +1,47 @@
+(DIRECTION TATE)
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(CHARSINTYPE O 1
+ $B?_(B $B?`(B $B?a(B $B?b(B $B?c(B $B?d(B $B?e(B $B?f(B $B?g(B $B?h(B $B?i(B $B?j(B $B?k(B $B?l(B $B?m(B $B?n(B $B?o(B $B?p(B $B?q(B $B?r(B $B?s(B $B?t(B $B?u(B $B?v(B $B?w(B $B?x(B $B?y(B $B?z(B $B?{(B $B?|(B $B?}(B $B?~(B $B@!(B $B@"(B $B@#(B $B@$(B $B@%(B $B@&(B $B@'(B $B@((B $B@)(B $B@*(B $B@+(B $B@,(B $B@-(B $B@.(B $B@/(B $B@0(B $B@1(B
+ )
+(CHARSINTYPE O 2
+ $B?6(B $B?7(B $B?8(B $B?9(B $B?:(B $B?;(B $B?<(B $B?=(B $B?>(B $B??(B $B?@(B $B?A(B $B?B(B $B?C(B $B?D(B $B?E(B $B?F(B $B?G(B $B?H(B $B?I(B
+ )
+(CHARSINTYPE O 3
+ $B?J(B $B?K(B $B?L(B $B?M(B $B?N(B $B?O(B $B?P(B $B?Q(B $B?R(B $B?S(B $B?T(B $B?U(B $B?V(B $B?W(B $B?X(B $B?Y(B $B?Z(B $B?[(B $B?\(B $B?](B $B?^(B
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 2
+ (CHARWD R 0.25)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 3
+ (CHARWD R 0.333333)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
diff --git a/language/japanese/japanese-otf/basepl/brsg-h.pl b/language/japanese/japanese-otf/basepl/brsg-h.pl
new file mode 100644
index 0000000000..bddf82c58c
--- /dev/null
+++ b/language/japanese/japanese-otf/basepl/brsg-h.pl
@@ -0,0 +1,137 @@
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(GLUEKERN
+ (LABEL O 0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 1)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 2)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ (GLUE O 6 R 0.5 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 3)
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ (GLUE O 6 R 0.25 R 0.0 R 0.25)
+ (GLUE O 7 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 4)
+ (GLUE O 0 R 1.0 R 0.0 R 0.0)
+ (GLUE O 1 R 1.0 R 0.0 R 0.0)
+ (GLUE O 2 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 1.25 R 0.0 R 0.75)
+ (GLUE O 4 R 1.0 R 0.0 R 0.5)
+ (GLUE O 5 R 1.0 R 0.0 R 0.0)
+ (GLUE O 6 R 1.0 R 0.0 R 0.0)
+ (GLUE O 7 R 1.0 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ (STOP)
+ (LABEL O 6)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 7)
+ (GLUE O 0 R 1.0 R 0.0 R 0.5)
+ (GLUE O 1 R 1.0 R 0.0 R 0.5)
+ (GLUE O 2 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 1.25 R 0.0 R 0.75)
+ (GLUE O 4 R 1.0 R 0.0 R 0.5)
+ (GLUE O 5 R 1.0 R 0.0 R 0.5)
+ (GLUE O 6 R 1.0 R 0.0 R 0.5)
+ (GLUE O 7 R 1.0 R 0.0 R 0.5)
+ (STOP)
+ )
+(CHARSINTYPE O 1
+ $B!F(B $B!H(B $B!J(B $B!L(B $B!N(B $B!P(B $B!R(B $B!T(B $B!V(B $B!X(B $B!Z(B
+ )
+(CHARSINTYPE O 2
+ $B!G(B $B!I(B $B!K(B $B!M(B $B!O(B $B!Q(B $B!S(B $B!U(B $B!W(B $B!Y(B $B![(B
+ )
+(CHARSINTYPE O 3
+ $B!&(B $B!'(B $B!((B
+ )
+(CHARSINTYPE O 4
+ $B!#(B $B!%(B
+ )
+(CHARSINTYPE O 5
+ $B!=(B $B!D(B $B!E(B
+ )
+(CHARSINTYPE O 6
+ $B!)(B $B!*(B
+ )
+(CHARSINTYPE O 7
+ $B!"(B $B!$(B
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 2
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 3
+ (CHARWD R 0.5)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 4
+ (CHARWD R 0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 5
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 6
+ (CHARWD R 1.0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
+(TYPE O 7
+ (CHARWD R 0)
+ (CHARHT R 0.88)
+ (CHARDP R 0.12)
+ )
diff --git a/language/japanese/japanese-otf/basepl/brsg-v.pl b/language/japanese/japanese-otf/basepl/brsg-v.pl
new file mode 100644
index 0000000000..a92ac79362
--- /dev/null
+++ b/language/japanese/japanese-otf/basepl/brsg-v.pl
@@ -0,0 +1,136 @@
+(COMMENT THIS IS A KANJI FORMAT FILE)
+(DIRECTION TATE)
+(FAMILY OTF KANJI)
+(FACE F MRR)
+(CODINGSCHEME TEX KANJI TEXT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 0)
+(SEVENBITSAFEFLAG TRUE)
+(FONTDIMEN
+ (SLANT R 0.0)
+ (SPACE R 0.0)
+ (STRETCH R 0.1)
+ (SHRINK R 0.0)
+ (XHEIGHT R 1.0)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.25)
+ (EXTRASTRETCH R 0.2)
+ (EXTRASHRINK R 0.125)
+ )
+(GLUEKERN
+ (LABEL O 0)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 1)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 2)
+ (GLUE O 0 R 0.5 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.5 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 3)
+ (GLUE O 0 R 0.25 R 0.0 R 0.25)
+ (GLUE O 1 R 0.25 R 0.0 R 0.25)
+ (GLUE O 2 R 0.25 R 0.0 R 0.25)
+ (GLUE O 3 R 0.5 R 0.0 R 0.25)
+ (GLUE O 4 R 0.25 R 0.0 R 0.25)
+ (GLUE O 5 R 0.25 R 0.0 R 0.25)
+ (GLUE O 7 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 4)
+ (GLUE O 0 R 1.0 R 0.0 R 0.0)
+ (GLUE O 1 R 1.0 R 0.0 R 0.0)
+ (GLUE O 2 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 1.25 R 0.0 R 0.75)
+ (GLUE O 4 R 1.0 R 0.0 R 0.5)
+ (GLUE O 5 R 1.0 R 0.0 R 0.0)
+ (GLUE O 6 R 1.0 R 0.0 R 0.0)
+ (GLUE O 7 R 1.0 R 0.0 R 0.5)
+ (STOP)
+ (LABEL O 5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (KRN O 5 R 0.0)
+ (STOP)
+ (LABEL O 6)
+ (GLUE O 0 R 1.0 R 0.0 R 0.5)
+ (GLUE O 1 R 0.5 R 0.0 R 0.5)
+ (GLUE O 3 R 0.25 R 0.0 R 0.25)
+ (STOP)
+ (LABEL O 7)
+ (GLUE O 0 R 1.0 R 0.0 R 0.5)
+ (GLUE O 1 R 1.0 R 0.0 R 0.5)
+ (GLUE O 2 R 0.5 R 0.0 R 0.0)
+ (GLUE O 3 R 1.25 R 0.0 R 0.75)
+ (GLUE O 4 R 1.0 R 0.0 R 0.5)
+ (GLUE O 5 R 1.0 R 0.0 R 0.5)
+ (GLUE O 6 R 1.0 R 0.0 R 0.5)
+ (GLUE O 7 R 1.0 R 0.0 R 0.5)
+ (STOP)
+ )
+(CHARSINTYPE O 1
+ $B!F(B $B!H(B $B!J(B $B!L(B $B!N(B $B!P(B $B!R(B $B!T(B $B!V(B $B!X(B $B!Z(B
+ )
+(CHARSINTYPE O 2
+ $B!G(B $B!I(B $B!K(B $B!M(B $B!O(B $B!Q(B $B!S(B $B!U(B $B!W(B $B!Y(B $B![(B
+ )
+(CHARSINTYPE O 3
+ $B!&(B $B!'(B $B!((B
+ )
+(CHARSINTYPE O 4
+ $B!#(B $B!%(B
+ )
+(CHARSINTYPE O 5
+ $B!=(B $B!D(B $B!E(B
+ )
+(CHARSINTYPE O 6
+ $B!)(B $B!*(B
+ )
+(CHARSINTYPE O 7
+ $B!"(B $B!$(B
+ )
+(TYPE O 0
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 1
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 2
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 3
+ (CHARWD R 0.5)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 4
+ (CHARWD R 0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 5
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 6
+ (CHARWD R 1.0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
+(TYPE O 7
+ (CHARWD R 0)
+ (CHARHT R 0.5)
+ (CHARDP R 0.5)
+ )
diff --git a/language/japanese/japanese-otf/makeotf b/language/japanese/japanese-otf/makeotf
new file mode 100755
index 0000000000..7b134c9fd4
--- /dev/null
+++ b/language/japanese/japanese-otf/makeotf
@@ -0,0 +1,342 @@
+#!/bin/sh
+echo "making tfm ..."
+perl script/mktfm.pl
+ppltotf basepl/base-h.pl tfm/nmlminr-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlminr-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlgothr-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlgothr-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlminb-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlminb-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlgothb-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlgothb-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlmgothr-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlmgothr-v.tfm
+ppltotf basepl/base-h.pl tfm/expminr-h.tfm
+ppltotf basepl/base-v.pl tfm/expminr-v.tfm
+ppltotf basepl/base-h.pl tfm/expgothr-h.tfm
+ppltotf basepl/base-v.pl tfm/expgothr-v.tfm
+ppltotf basepl/base-h.pl tfm/expminb-h.tfm
+ppltotf basepl/base-v.pl tfm/expminb-v.tfm
+ppltotf basepl/base-h.pl tfm/expgothb-h.tfm
+ppltotf basepl/base-v.pl tfm/expgothb-v.tfm
+ppltotf basepl/base-h.pl tfm/expmgothr-h.tfm
+ppltotf basepl/base-v.pl tfm/expmgothr-v.tfm
+ppltotf basepl/base-v.pl tfm/rubyminr-v.tfm
+ppltotf basepl/base-h.pl tfm/rubyminr-h.tfm
+ppltotf basepl/base-h.pl tfm/rubygothr-h.tfm
+ppltotf basepl/base-v.pl tfm/rubygothr-v.tfm
+ppltotf basepl/base-v.pl tfm/rubyminb-v.tfm
+ppltotf basepl/base-h.pl tfm/rubyminb-h.tfm
+ppltotf basepl/base-h.pl tfm/rubygothb-h.tfm
+ppltotf basepl/base-v.pl tfm/rubygothb-v.tfm
+ppltotf basepl/base-h.pl tfm/rubymgothr-h.tfm
+ppltotf basepl/base-v.pl tfm/rubymgothr-v.tfm
+ppltotf basepl/base0-h.pl tfm/cidjmr0-h.tfm
+ppltotf basepl/base2-h.pl tfm/cidjmr2-h.tfm
+ppltotf basepl/base2-v.pl tfm/cidjmr2-v.tfm
+ppltotf basepl/base3-v.pl tfm/cidjmr3-v.tfm
+ppltotf basepl/base0-h.pl tfm/cidjgr0-h.tfm
+ppltotf basepl/base2-h.pl tfm/cidjgr2-h.tfm
+ppltotf basepl/base2-v.pl tfm/cidjgr2-v.tfm
+ppltotf basepl/base3-v.pl tfm/cidjgr3-v.tfm
+ppltotf basepl/base0-h.pl tfm/cidjmb0-h.tfm
+ppltotf basepl/base2-h.pl tfm/cidjmb2-h.tfm
+ppltotf basepl/base2-v.pl tfm/cidjmb2-v.tfm
+ppltotf basepl/base3-v.pl tfm/cidjmb3-v.tfm
+ppltotf basepl/base0-h.pl tfm/cidjgb0-h.tfm
+ppltotf basepl/base2-h.pl tfm/cidjgb2-h.tfm
+ppltotf basepl/base2-v.pl tfm/cidjgb2-v.tfm
+ppltotf basepl/base3-v.pl tfm/cidjgb3-v.tfm
+ppltotf basepl/base0-h.pl tfm/cidjmgr0-h.tfm
+ppltotf basepl/base2-h.pl tfm/cidjmgr2-h.tfm
+ppltotf basepl/base2-v.pl tfm/cidjmgr2-v.tfm
+ppltotf basepl/base3-v.pl tfm/cidjmgr3-v.tfm
+#for extra fonts
+ppltotf basepl/base-h.pl tfm/nmlgotheb-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlgotheb-v.tfm
+ppltotf basepl/base-h.pl tfm/expgotheb-h.tfm
+ppltotf basepl/base-v.pl tfm/expgotheb-v.tfm
+ppltotf basepl/base-v.pl tfm/rubygotheb-v.tfm
+ppltotf basepl/base-h.pl tfm/rubygotheb-h.tfm
+ppltotf basepl/base0-h.pl tfm/cidjge0-h.tfm
+ppltotf basepl/base2-h.pl tfm/cidjge2-h.tfm
+ppltotf basepl/base2-v.pl tfm/cidjge2-v.tfm
+ppltotf basepl/base3-v.pl tfm/cidjge3-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlminl-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlminl-v.tfm
+ppltotf basepl/base-h.pl tfm/expminl-h.tfm
+ppltotf basepl/base-v.pl tfm/expminl-v.tfm
+ppltotf basepl/base-v.pl tfm/rubyminl-v.tfm
+ppltotf basepl/base-h.pl tfm/rubyminl-h.tfm
+ppltotf basepl/base0-h.pl tfm/cidjml0-h.tfm
+ppltotf basepl/base2-h.pl tfm/cidjml2-h.tfm
+ppltotf basepl/base2-v.pl tfm/cidjml2-v.tfm
+ppltotf basepl/base3-v.pl tfm/cidjml3-v.tfm
+echo "making vf (wait a while)..."
+perl script/mkutfvf.pl
+echo "vf for utf finished. making vf for cid..."
+perl script/mkcidvf.pl
+perl script/mkmlcidvf.pl
+echo "vf for cid finished. making vf for alt. utf..."
+perl script/mkaltutfvf.pl
+./mkjvf nmlminr-h hminr-h
+./mkjvf -cm -cp nmlminr-v hminr-v
+./mkjvf nmlgothr-h hgothr-h
+./mkjvf -cm -cp nmlgothr-v hgothr-v
+./mkjvf nmlminb-h hminb-h
+./mkjvf -cm -cp nmlminb-v hminb-v
+./mkjvf nmlgothb-h hgothb-h
+./mkjvf -cm -cp nmlgothb-v hgothb-v
+./mkjvf nmlmgothr-h hmgothr-h
+./mkjvf -cm -cp nmlmgothr-v hmgothr-v
+#extra fonts
+./mkjvf nmlgotheb-h hgotheb-h
+./mkjvf -cm -cp nmlgotheb-v hgotheb-v
+./mkjvf nmlminl-h hminl-h
+./mkjvf -cm -cp nmlminl-v hminl-v
+echo "making alt. kana ..."
+./mkjvf -expert expminr-h hminr-h cidjminr
+./mkjvf -cm -cp -expert expminr-v hminr-v cidjminr
+./mkjvf -expert expgothr-h hgothr-h cidjgothr
+./mkjvf -cm -cp -expert expgothr-v hgothr-v cidjgothr
+./mkjvf -expert expminb-h hminb-h cidjminb
+./mkjvf -cm -cp -expert expminb-v hminb-v cidjminb
+./mkjvf -expert expgothb-h hgothb-h cidjgothb
+./mkjvf -cm -cp -expert expgothb-v hgothb-v cidjgothb
+./mkjvf -expert expmgothr-h hmgothr-h cidjmgothr
+./mkjvf -cm -cp -expert expmgothr-v hmgothr-v cidjmgothr
+./mkjvf -ruby rubyminr-h hminr-h cidjminr
+./mkjvf -cm -cp -ruby rubyminr-v hminr-v cidjminr
+./mkjvf -ruby rubygothr-h hgothr-h cidjgothr
+./mkjvf -cm -cp -ruby rubygothr-v hgothr-v cidjgothr
+./mkjvf -ruby rubyminb-h hminb-h cidjminb
+./mkjvf -cm -cp -ruby rubyminb-v hminb-v cidjminb
+./mkjvf -ruby rubygothb-h hgothb-h cidjgothb
+./mkjvf -cm -cp -ruby rubygothb-v hgothb-v cidjgothb
+./mkjvf -ruby rubymgothr-h hmgothr-h cidjmgothr
+./mkjvf -cm -cp -ruby rubymgothr-v hmgothr-v cidjmgothr
+./mkjvf -expert expminl-h hminl-h cidjminl
+./mkjvf -cm -cp -expert expminl-v hminl-v cidjminl
+./mkjvf -ruby rubyminl-h hminl-h cidjminl
+./mkjvf -cm -cp -ruby rubyminl-v hminl-v cidjminl
+./mkjvf -expert expgotheb-h hgotheb-h cidjgotheb
+./mkjvf -cm -cp -expert expgotheb-v hgotheb-v cidjgotheb
+./mkjvf -ruby rubygotheb-h hgotheb-h cidjgotheb
+./mkjvf -cm -cp -ruby rubygotheb-v hgotheb-v cidjgotheb
+echo "making proportional kana tfm/vf"
+perl script/mkpkana.pl
+ppltotf -kanji=euc pl/phiraminw6-h.pl tfm/phiraminw6-h.tfm
+ppltotf -kanji=euc pl/phirakakuw3-h.pl tfm/phirakakuw3-h.tfm
+ppltotf -kanji=euc pl/phiraminw3-h.pl tfm/phiraminw3-h.tfm
+ppltotf -kanji=euc pl/phiramaruw4-h.pl tfm/phiramaruw4-h.tfm
+ppltotf -kanji=euc pl/phirakakuw6-h.pl tfm/phirakakuw6-h.tfm
+ovp2ovf ovp/phirakakuw3-h.ovp vf/phirakakuw3-h.vf vf/phirakakuw3-h.ofm
+ovp2ovf ovp/phiraminw6-h.ovp vf/phiraminw6-h.vf vf/phiraminw6-h.ofm
+ovp2ovf ovp/phiraminw3-h.ovp vf/phiraminw3-h.vf vf/phiraminw3-h.ofm
+ovp2ovf ovp/phirakakuw6-h.ovp vf/phirakakuw6-h.vf vf/phirakakuw6-h.ofm
+ovp2ovf ovp/phiramaruw4-h.ovp vf/phiramaruw4-h.vf vf/phiramaruw4-h.ofm
+perl script/mkvpkana.pl
+ppltotf -kanji=euc pl/phiraminw6-v.pl tfm/phiraminw6-v.tfm
+ppltotf -kanji=euc pl/phirakakuw3-v.pl tfm/phirakakuw3-v.tfm
+ppltotf -kanji=euc pl/phiraminw3-v.pl tfm/phiraminw3-v.tfm
+ppltotf -kanji=euc pl/phiramaruw4-v.pl tfm/phiramaruw4-v.tfm
+ppltotf -kanji=euc pl/phirakakuw6-v.pl tfm/phirakakuw6-v.tfm
+ovp2ovf ovp/phirakakuw3-v.ovp vf/phirakakuw3-v.vf vf/phirakakuw3-v.ofm
+ovp2ovf ovp/phiraminw6-v.ovp vf/phiraminw6-v.vf vf/phiraminw6-v.ofm
+ovp2ovf ovp/phiraminw3-v.ovp vf/phiraminw3-v.vf vf/phiraminw3-v.ofm
+ovp2ovf ovp/phirakakuw6-v.ovp vf/phirakakuw6-v.vf vf/phirakakuw6-v.ofm
+ovp2ovf ovp/phiramaruw4-v.ovp vf/phiramaruw4-v.vf vf/phiramaruw4-v.ofm
+cp hminr-h.tfm tfm/hiramin-w3-h.tfm
+cp hminr-h.tfm tfm/hiramin-w6-h.tfm
+cp hminr-h.tfm tfm/hirakaku-w3-h.tfm
+cp hminr-h.tfm tfm/hirakaku-w6-h.tfm
+cp hminr-h.tfm tfm/hiramaru-w4-h.tfm
+cp hminr-v.tfm tfm/hiramin-w3-v.tfm
+cp hminr-v.tfm tfm/hiramin-w6-v.tfm
+cp hminr-v.tfm tfm/hirakaku-w3-v.tfm
+cp hminr-v.tfm tfm/hirakaku-w6-v.tfm
+cp hminr-v.tfm tfm/hiramaru-w4-v.tfm
+echo "making ofm file for dvipdfmx in CVS"
+perl script/mkcidofm.pl
+perl script/mkpropofm.pl
+#burasage
+echo "making tfm/vf for burasage ..."
+ppltotf basepl/brsg-h.pl tfm/brsgnmlminr-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlminr-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlgothr-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlgothr-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlminb-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlminb-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlgothb-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlgothb-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlmgothr-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlmgothr-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpminr-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpminr-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpgothr-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpgothr-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpminb-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpminb-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpgothb-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpgothb-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpmgothr-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpmgothr-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlgotheb-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlgotheb-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpgotheb-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpgotheb-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlminl-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlminl-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpminl-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpminl-v.tfm
+./mkjvf -sage brsgnmlminr-h hminr-h
+./mkjvf -sage -cm -cp brsgnmlminr-v hminr-v
+./mkjvf -sage brsgnmlgothr-h hgothr-h
+./mkjvf -sage -cm -cp brsgnmlgothr-v hgothr-v
+./mkjvf -sage brsgnmlminb-h hminb-h
+./mkjvf -sage -cm -cp brsgnmlminb-v hminb-v
+./mkjvf -sage brsgnmlgothb-h hgothb-h
+./mkjvf -sage -cm -cp brsgnmlgothb-v hgothb-v
+./mkjvf -sage brsgnmlmgothr-h hmgothr-h
+./mkjvf -sage -cm -cp brsgnmlmgothr-v hmgothr-v
+./mkjvf -sage brsgnmlgotheb-h hgotheb-h
+./mkjvf -sage -cm -cp brsgnmlgotheb-v hgotheb-v
+./mkjvf -sage brsgnmlminl-h hminl-h
+./mkjvf -sage -cm -cp brsgnmlminl-v hminl-v
+./mkjvf -sage -expert brsgexpminr-h hminr-h cidjminr
+./mkjvf -sage -cm -cp -expert brsgexpminr-v hminr-v cidjminr
+./mkjvf -sage -expert brsgexpgothr-h hgothr-h cidjgothr
+./mkjvf -sage -cm -cp -expert brsgexpgothr-v hgothr-v cidjgothr
+./mkjvf -sage -expert brsgexpminb-h hminb-h cidjminb
+./mkjvf -sage -cm -cp -expert brsgexpminb-v hminb-v cidjminb
+./mkjvf -sage -expert brsgexpgothb-h hgothb-h cidjgothb
+./mkjvf -sage -cm -cp -expert brsgexpgothb-v hgothb-v cidjgothb
+./mkjvf -sage -expert brsgexpmgothr-h hmgothr-h cidjmgothr
+./mkjvf -sage -cm -cp -expert brsgexpmgothr-v hmgothr-v cidjmgothr
+./mkjvf -sage -expert brsgexpgotheb-h hgotheb-h cidjgotheb
+./mkjvf -sage -cm -cp -expert brsgexpgotheb-v hgotheb-v cidjgotheb
+./mkjvf -sage -expert brsgexpminl-h hminl-h cidjminl
+./mkjvf -sage -cm -cp -expert brsgexpminl-v hminl-v cidjminl
+echo "making tfm/vf for UTF jp04 (wait a while)..."
+perl script/mkjp04tfmvf.pl
+echo "making tfm for jp04 ..."
+ppltotf basepl/base-h.pl tfm/nmlminrn-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlminrn-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlgothrn-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlgothrn-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlminbn-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlminbn-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlgothbn-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlgothbn-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlmgothrn-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlmgothrn-v.tfm
+ppltotf basepl/base-h.pl tfm/expminrn-h.tfm
+ppltotf basepl/base-v.pl tfm/expminrn-v.tfm
+ppltotf basepl/base-h.pl tfm/expgothrn-h.tfm
+ppltotf basepl/base-v.pl tfm/expgothrn-v.tfm
+ppltotf basepl/base-h.pl tfm/expminbn-h.tfm
+ppltotf basepl/base-v.pl tfm/expminbn-v.tfm
+ppltotf basepl/base-h.pl tfm/expgothbn-h.tfm
+ppltotf basepl/base-v.pl tfm/expgothbn-v.tfm
+ppltotf basepl/base-h.pl tfm/expmgothrn-h.tfm
+ppltotf basepl/base-v.pl tfm/expmgothrn-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlminln-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlminln-v.tfm
+ppltotf basepl/base-h.pl tfm/expminln-h.tfm
+ppltotf basepl/base-v.pl tfm/expminln-v.tfm
+ppltotf basepl/base-h.pl tfm/nmlgothebn-h.tfm
+ppltotf basepl/base-v.pl tfm/nmlgothebn-v.tfm
+ppltotf basepl/base-h.pl tfm/expgothebn-h.tfm
+ppltotf basepl/base-v.pl tfm/expgothebn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlminrn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlminrn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlgothrn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlgothrn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlminbn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlminbn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlgothbn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlgothbn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlmgothrn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlmgothrn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpminrn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpminrn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpgothrn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpgothrn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpminbn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpminbn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpgothbn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpgothbn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpmgothrn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpmgothrn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlminln-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlminln-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpminln-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpminln-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgnmlgothebn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgnmlgothebn-v.tfm
+ppltotf basepl/brsg-h.pl tfm/brsgexpgothebn-h.tfm
+ppltotf basepl/brsg-v.pl tfm/brsgexpgothebn-v.tfm
+echo "making jvf for jp04 ..."
+./mkjvf -jp04 nmlminrn-h hminrn-h
+./mkjvf -jp04 -cm -cp nmlminrn-v hminrn-v
+./mkjvf -jp04 nmlgothrn-h hgothrn-h
+./mkjvf -jp04 -cm -cp nmlgothrn-v hgothrn-v
+./mkjvf -jp04 nmlminbn-h hminbn-h
+./mkjvf -jp04 -cm -cp nmlminbn-v hminbn-v
+./mkjvf -jp04 nmlgothbn-h hgothbn-h
+./mkjvf -jp04 -cm -cp nmlgothbn-v hgothbn-v
+./mkjvf -jp04 nmlmgothrn-h hmgothrn-h
+./mkjvf -jp04 -cm -cp nmlmgothrn-v hmgothrn-v
+./mkjvf -jp04 nmlminln-h hminln-h
+./mkjvf -jp04 -cm -cp nmlminln-v hminln-v
+./mkjvf -jp04 nmlgothebn-h hgothebn-h
+./mkjvf -jp04 -cm -cp nmlgothebn-v hgothebn-v
+./mkjvf -jp04 -expert expminrn-h hminrn-h cidjminr
+./mkjvf -jp04 -cm -cp -expert expminrn-v hminrn-v cidjminr
+./mkjvf -jp04 -expert expgothrn-h hgothrn-h cidjgothr
+./mkjvf -jp04 -cm -cp -expert expgothrn-v hgothrn-v cidjgothr
+./mkjvf -jp04 -expert expminbn-h hminbn-h cidjminb
+./mkjvf -jp04 -cm -cp -expert expminbn-v hminbn-v cidjminb
+./mkjvf -jp04 -expert expgothbn-h hgothbn-h cidjgothb
+./mkjvf -jp04 -cm -cp -expert expgothbn-v hgothbn-v cidjgothb
+./mkjvf -jp04 -expert expmgothrn-h hmgothrn-h cidjmgothr
+./mkjvf -jp04 -cm -cp -expert expmgothrn-v hmgothrn-v cidjmgothr
+./mkjvf -jp04 -expert expgothebn-h hgothebn-h cidjgotheb
+./mkjvf -jp04 -cm -cp -expert expgothebn-v hgothebn-v cidjgotheb
+./mkjvf -jp04 -expert expminln-h hminln-h cidjminl
+./mkjvf -jp04 -cm -cp -expert expminln-v hminln-v cidjminl
+./mkjvf -jp04 -sage brsgnmlminrn-h hminrn-h
+./mkjvf -jp04 -sage -cm -cp brsgnmlminrn-v hminrn-v
+./mkjvf -jp04 -sage brsgnmlgothrn-h hgothrn-h
+./mkjvf -jp04 -sage -cm -cp brsgnmlgothrn-v hgothrn-v
+./mkjvf -jp04 -sage brsgnmlminbn-h hminbn-h
+./mkjvf -jp04 -sage -cm -cp brsgnmlminbn-v hminbn-v
+./mkjvf -jp04 -sage brsgnmlgothbn-h hgothbn-h
+./mkjvf -jp04 -sage -cm -cp brsgnmlgothbn-v hgothbn-v
+./mkjvf -jp04 -sage brsgnmlmgothrn-h hmgothrn-h
+./mkjvf -jp04 -sage -cm -cp brsgnmlmgothrn-v hmgothrn-v
+./mkjvf -jp04 -sage brsgnmlgothebn-h hgothebn-h
+./mkjvf -jp04 -sage -cm -cp brsgnmlgothebn-v hgothebn-v
+./mkjvf -jp04 -sage brsgnmlminln-h hminln-h
+./mkjvf -jp04 -sage -cm -cp brsgnmlminln-v hminln-v
+./mkjvf -jp04 -sage -expert brsgexpminrn-h hminrn-h cidjminr
+./mkjvf -jp04 -sage -cm -cp -expert brsgexpminrn-v hminrn-v cidjminr
+./mkjvf -jp04 -sage -expert brsgexpgothrn-h hgothrn-h cidjgothr
+./mkjvf -jp04 -sage -cm -cp -expert brsgexpgothrn-v hgothrn-v cidjgothr
+./mkjvf -jp04 -sage -expert brsgexpminbn-h hminbn-h cidjminb
+./mkjvf -jp04 -sage -cm -cp -expert brsgexpminbn-v hminbn-v cidjminb
+./mkjvf -jp04 -sage -expert brsgexpgothbn-h hgothbn-h cidjgothb
+./mkjvf -jp04 -sage -cm -cp -expert brsgexpgothbn-v hgothbn-v cidjgothb
+./mkjvf -jp04 -sage -expert brsgexpmgothrn-h hmgothrn-h cidjmgothr
+./mkjvf -jp04 -sage -cm -cp -expert brsgexpmgothrn-v hmgothrn-v cidjmgothr
+./mkjvf -jp04 -sage -expert brsgexpgothebn-h hgothebn-h cidjgotheb
+./mkjvf -jp04 -sage -cm -cp -expert brsgexpgothebn-v hgothebn-v cidjgotheb
+./mkjvf -jp04 -sage -expert brsgexpminln-h hminln-h cidjminl
+./mkjvf -jp04 -sage -cm -cp -expert brsgexpminln-v hminln-v cidjminl
+echo "finishing ..."
+mv *.vf vf/
+mv *.tfm tfm/
+rm vf/*.ofm
+rm -rf ovp
+rm -rf pl
+rm -rf opl
diff --git a/language/japanese/japanese-otf/mkjvf b/language/japanese/japanese-otf/mkjvf
new file mode 100755
index 0000000000..35c3b44393
--- /dev/null
+++ b/language/japanese/japanese-otf/mkjvf
@@ -0,0 +1,713 @@
+#!/usr/bin/perl
+###################
+### main part ###
+###################
+#initialize
+&initialize_constant;
+#processing arguments
+&proc_arg;
+#make ovp
+&font_header;
+&write_char;
+#make vf & tfm
+&make_vf;
+&make_tfm;
+
+##########################
+#### dfn of sub rtns ###
+##########################
+sub initialize_constant{
+ $unknown=0;
+ $burasage=0;
+ $jis2004=0;
+ $minute_option=0;
+ $alt_kana_true=0;
+ $ruby_hira_code=0x356F;
+ $ruby_kata_code=0x3751;
+ $exp_hira_code_h=0x6F63;
+ $exp_kata_code_h=0x313D;
+ $exp_hira_code_v=0x325a;
+ $exp_kata_code_v=0x3434;
+ $ruby_font_map=2;
+ $exp_font_map=2;
+ @yoko_tfm_binary=(0x00, 0x0B, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x14, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEB, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+ @tate_tfm_binary=(0x00, 0x09, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+ @minute_code=(0x216C, 0x216C, 0x216D, 0x216D);
+ @shift_minute_code=(0x818C, 0x818C, 0x818D, 0x818D);
+ @cid_minute_code=(0x6E3D, 0x6E3E, 0x6C44, 0x6C45);
+ @ruby_odori_h=(0x3559, 0x355a, 0x355b, 0x355c, 0x3933);
+ @ruby_odori_v=(0x3559, 0x355a, 0x355b, 0x355c, 0x3934);
+ @exp_odori_h=(0x313a, 0x313b, 0x6f61, 0x6f62, 0x313c);
+ @exp_odori_v=(0x3431, 0x3432, 0x3258, 0x3259, 0x3433);
+ %kaisei_jikei = (0x3029 => 8266, 0x3032 => 7961, 0x303B => 7634, 0x306E => 7635, 0x3071 => 7962, 0x3073 => 7636, 0x307C => 7637, 0x312A => 7638, 0x3139 => 20271, 0x313D => 7642, 0x3142 => 13650, 0x3228 => 7645, 0x3260 => 7647, 0x3267 => 7965, 0x3276 => 13673, 0x327A => 20269, 0x3322 => 7650, 0x336B => 7652, 0x3373 => 7653, 0x3378 => 20290, 0x344D => 7656, 0x3465 => 7657, 0x352B => 7658, 0x3540 => 7659, 0x3562 => 7966, 0x3564 => 20270, 0x3568 => 20263, 0x362A => 7661, 0x3642 => 7968, 0x364F => 7662, 0x3674 => 7664, 0x367B => 7665, 0x367D => 7666, 0x3729 => 20272, 0x3737 => 7668, 0x3764 => 20273, 0x3771 => 7674, 0x377E => 7676, 0x3830 => 20276, 0x3841 => 7678, 0x392B => 7679, 0x393C => 20279, 0x3974 => 7683, 0x3979 => 20284, 0x3A35 => 20281, 0x3A67 => 7686, 0x3B27 => 7688, 0x3B2A => 7689, 0x3B2C => 7690, 0x3B2D => 20280, 0x3B41 => 7970, 0x3C5D => 7695, 0x3C5E => 7696, 0x3D36 => 7698, 0x3D5D => 13460, 0x3D72 => 7701, 0x3D73 => 7702, 0x3E25 => 7703, 0x3E64 => 7708, 0x3E73 => 20282, 0x3F2A => 7709, 0x3F56 => 13860, 0x3F60 => 7711, 0x4022 => 7713, 0x4071 => 7716, 0x4079 => 7718, 0x407A => 7972, 0x407C => 7973, 0x407D => 7974, 0x4127 => 7720, 0x4139 => 7721, 0x414C => 7722, 0x4237 => 7975, 0x423D => 7726, 0x425C => 7728, 0x427D => 7733, 0x4329 => 7735, 0x432E => 7738, 0x4337 => 13915, 0x4370 => 7740, 0x4375 => 7741, 0x443D => 7743, 0x4448 => 7744, 0x444A => 7745, 0x4454 => 8267, 0x4472 => 20286, 0x4522 => 7748, 0x4527 => 7749, 0x452E => 7750, 0x4546 => 13949, 0x4548 => 7753, 0x454B => 7754, 0x4552 => 7756, 0x4654 => 7761, 0x465B => 20287, 0x4666 => 7766, 0x4667 => 7767, 0x466A => 7768, 0x4729 => 7769, 0x4757 => 7771, 0x4767 => 7772, 0x4769 => 7773, 0x477D => 20288, 0x4824 => 7775, 0x4840 => 7978, 0x4854 => 7778, 0x4870 => 13495, 0x4875 => 7780, 0x4923 => 7782, 0x492F => 7783, 0x4935 => 7785, 0x493F => 20222, 0x4940 => 7786, 0x494E => 7787, 0x4960 => 20289, 0x4A43 => 7789, 0x4A4D => 7790, 0x4A4E => 14013, 0x4A53 => 7979, 0x4A5A => 7791, 0x4A5C => 20291, 0x4A79 => 7792, 0x4B29 => 7794, 0x4B70 => 7796, 0x4B78 => 7980, 0x4C59 => 7798, 0x4C5F => 7799, 0x4C62 => 20293, 0x4C6C => 20294, 0x4C7A => 7801, 0x4C7C => 7802, 0x4D32 => 14074, 0x4E7A => 7809, 0x4E7B => 7810, 0x4E7C => 20265, 0x4F31 => 7812, 0x514D => 7817, 0x5257 => 14111, 0x527B => 20277, 0x535E => 7821, 0x5373 => 14116, 0x5751 => 13538, 0x5928 => 7991, 0x6044 => 20278, 0x6131 => 20267, 0x6134 => 20283, 0x6156 => 20175, 0x635E => 20285, 0x6427 => 20266, 0x6440 => 7997, 0x6727 => 20275, 0x675B => 14196, 0x676A => 20292, 0x694A => 20274, 0x6967 => 20296, 0x6A24 => 20295, 0x6B43 => 20268, 0x7057 => 13624, 0x7159 => 8003, 0x726D => 14272);
+}
+sub proc_arg {
+ if ($#ARGV == -1) {&print_help;}
+ GetOptions(\@ARGV, ['^-b', \$baseline_shift, 1], ['^-m', \$minute_option, 0], ['^-cm', \$cid_minute, 0], ['^-cp', \$comma_period, 0], ['^-SJIS', \$sjis, 0], ['^-scale', \$scale, 1], ['^-notfm', \$without_tfm, 1], ['^-expert', \$expert, 0], ['^-ruby', \$ruby, 0], ['^-sage', \$burasage, 0], ['^-jp04', \$jis2004, 0], ['^-h(e|el|elp)?', \$help, 0], ['^-(.+)', \$unknown, 0]);
+ if ($unknown == 1){
+ print "mkjvf: Unknown options!\n";
+ &print_help;
+ }
+ if ($help == 1){&print_help;}
+ if (($expert == 0) && ($ruby == 0)){
+ if ($#ARGV <= 0) {
+ print "mkjvf: Need two to three file arguments.\n";
+ &print_help;
+ }
+ } elsif (($expert != 0) && ($ruby != 0)){
+ print "mkjvf: You can't use \"-ruby\" and \"-expert\" at same time.\n";
+ &print_help;
+ } elsif (($scale != 0) && ($ruby != 0)){
+ print "mkjvf: You can't use \"-ruby\" and \"-scale\" at same time.\n";
+ &print_help;
+ } elsif (($jis2004 != 0) && ($ruby != 0)){
+ print "mkjvf: You can't use \"-ruby\" and \"-jp04\" at same time.\n";
+ &print_help;
+ } elsif (($jis2004 != 0) && ($sjis != 0)){
+ print "mkjvf: You can't use \"-sjis\" and \"-jp04\" at same time.\n";
+ &print_help;
+ } else {
+ if ($#ARGV <= 1) {
+ print "mkjvf: Need three file arguments for this option.\n";
+ &print_help;
+ }
+ $alt_kana_true=1;
+ }
+ if ($scale < 0 || $scale >= 1){
+ print "mkjvf: Invalid Scale!!\n";
+ &print_help;
+ }
+ if ($scale == 0){$scale = 1;}
+ if ($sjis != 0){$max_ku=120;}else{$max_ku=94;}
+ if ($cid_minute != 0){$minute_option = 1;}
+ $tfm_name = shift(@ARGV);
+ $tfm_name =~ s/\.tfm//;
+ $kanji_font = shift(@ARGV);
+ $kanji_font =~ s/\.tfm//;
+ $kana_font = shift(@ARGV);
+ $kana_font =~ s/\.tfm//;
+ &get_metric;
+ $half_width= ($font_at / 2);
+ $quater_width= ($font_at / 4);
+ @minute_right=($font_at*0.1, $font_at*0.4, $font_at*0.1, $font_at*0.4);
+ @minute_down=(-$font_at*0.65, $font_at*0.65, -$font_at*0.6, $font_at*0.6);
+ #open output file
+ open(OVP,">$tfm_name.ovp") || die "Can't make \'$tfm_name.ovp\'!\n";
+ binmode(OVP);
+}
+sub font_header {
+ print OVP "(VTITLE )\n";
+ print OVP "(OFMLEVEL D 0)";
+ print OVP "(DESIGNSIZE R 10.000000)\n";
+ print OVP "(CHECKSUM O 0)\n";
+ print OVP "(MAPFONT D 1\n";
+ print OVP " (FONTNAME $kanji_font)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$font_at;
+ printf OVP " (FONTDSIZE R %f)\n",$design_size;
+ print OVP " )\n";
+ if ($ruby == 1){
+ &get_face;
+ if ($direction eq "y"){
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $face"."3-h)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }elsif ($direction eq "t"){
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $face"."3-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ } elsif ($expert == 1) {
+ &get_face;
+ if ($direction eq "y"){
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $face"."2-h)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$scale;
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 3\n";
+ print OVP " (FONTNAME $face"."3-h)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$scale;
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }elsif ($direction eq "t"){
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $face"."3-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$scale;
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ } else {
+ if ($kana_font ne ""){
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $kana_font)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n",$scale*$font_at;
+ printf OVP " (FONTDSIZE R %f)\n",$design_size;
+ print OVP " )\n";
+ }
+ }
+ if (($cid_minute == 1) && ($jis2004 == 0)){
+ &get_face;
+ if ($direction eq "t"){
+ print OVP "(MAPFONT D 4\n";
+ print OVP " (FONTNAME $face"."1-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 5\n";
+ print OVP " (FONTNAME $face"."2-v)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+ }
+ if ($jis2004 == 1){
+ if($direction eq "y"){$temp_dir = "h"}elsif($direction eq "t"){$temp_dir = "v"}
+ &get_face;
+ print OVP "(MAPFONT D 4\n";
+ print OVP " (FONTNAME $face"."1-$temp_dir)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 5\n";
+ print OVP " (FONTNAME $face"."2-$temp_dir)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 6\n";
+ print OVP " (FONTNAME $face"."3-$temp_dir)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 7\n";
+ print OVP " (FONTNAME $face"."4-$temp_dir)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 8\n";
+ print OVP " (FONTNAME $face"."5-$temp_dir)\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ print OVP " (FONTAT R 1.0)\n";
+ print OVP " (FONTDSIZE R 10.0)\n";
+ print OVP " )\n";
+ }
+}
+sub write_char {
+ for ($ku=1; $ku<=$max_ku; $ku++){
+ for ($ten=1; $ten<=94; $ten++){
+ $jiscode=($ku+32)*256+($ten+32);
+ if($sjis == 1){
+ &get_shift_jiscode;
+ $char_code=$shift_jiscode;
+ }else{
+ $char_code=$jiscode;
+ }
+ if ($ruby==1){
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&print_ruby_hira_char;}
+ elsif($ku==5){&print_ruby_kata_char;}else{&print_char;}
+ }elsif ($expert==1){
+ if ($direction eq "y"){
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&exp_hira_h_char;}
+ elsif($ku==5){&exp_kata_h_char;}else{&print_char;}
+ }elsif ($direction eq "t"){
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&exp_hira_v_char;}
+ elsif($ku==5){&exp_kata_v_char;}else{&print_char;}
+ }
+ }else{
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&print_kana_char;}
+ elsif($ku==5){&print_kana_char;}else{&print_char;}
+ }
+ }
+ }
+}
+sub make_vf {
+ close(OVP);
+ system("ovp2ovf $tfm_name.ovp $tfm_name.vf $tfm_name.ofm");
+ unlink "$tfm_name.ovp";
+ unlink "$tfm_name.ofm";
+}
+sub make_tfm {
+ open(KANJITFM,">$kanji_font.tfm") || die "Can't make \'$kanji_font.tfm\'!\n";
+ binmode(KANJITFM);
+ if ($direction eq "y") {
+ foreach $binary(@yoko_tfm_binary) {
+ $_ = pack("C", $binary);
+ print KANJITFM "$_";
+ }
+ } elsif ($direction eq "t") {
+ foreach $binary(@tate_tfm_binary) {
+ $_ = pack("C", $binary);
+ print KANJITFM "$_";
+ }
+ } else {die "Unknown Direction!!\n";}
+ if ($ruby==0 && $expert==0){
+ if ($kana_font ne ""){
+ open(KANATFM,">$kana_font.tfm") || die "Can't make \'$kana_font.tfm\'!\n";
+ binmode(KANATFM);
+ if ($direction eq "y") {
+ foreach $binary(@yoko_tfm_binary) {
+ $_ = pack("C", $binary);
+ print KANATFM "$_";
+ }
+ } else {
+ foreach $binary(@tate_tfm_binary) {
+ $_ = pack("C", $binary);
+ print KANATFM "$_";
+ }
+ }
+ }
+ }
+}
+##############################
+#### dfn of sub sub rtns ###
+##############################
+sub print_help {
+ print "This is mkjvf version 1.0b21 (2010/3/25) by psitau\n";
+ print "Usage: mkjvf [option] <TFMfile> <PSfontTFM> [<PSfontTFM>]\n";
+ print " -b <number> baseline shift\n";
+ print " -m translate quotation mark to minute\n";
+ print " -cm translate quotation mark to CID minute\n";
+ print " -cp translate comma & period to KuTohTen\n";
+ print " -notfm (h|v) don't read tfm\n";
+ print " -ruby use ruby glyph for kana (for utf package)\n";
+ print " -expert use alt. kana glyph for kana (for utf package)\n";
+ print " -burasage make the width of kutoh-ten zero for burasage\n";
+ print " -jp04 make a font mapped JIS X 0213:2004 glyphs\n";
+ print " -SJIS make shift jis mapped vf (experimental)\n";
+ print " -scale <0--1> make kokana vf\n";
+ print " -help print this message\n";
+ exit;
+}
+sub GetOptions {
+ my ($argv,@options)=@_;
+ foreach (@options) {
+ my ($regex,$ref,$takesarg)=@{$_};
+ my @args=@{$argv};
+ @{$argv}=();
+ my $arg;
+ argloop:
+ while (($arg=shift @args) ne "") {
+ if ($arg=~/$regex/) {
+ my $val=1;
+ if ($takesarg) { $val=shift @args; }
+ if (ref($ref) eq 'CODE') { &$ref($val); }
+ else { ${$ref}=$val; last argloop;}
+ }
+ else {
+ push @{$argv},$arg;
+ if ($arg eq '--') { last argloop; }
+ }
+ }
+ push @{$argv},@args;
+ }
+}
+sub get_metric{
+ if ($without_tfm eq ""){
+ &read_tfm;
+ } elsif ($without_tfm eq "h") {
+ $direction="y";
+ $design_size=10;
+ $font_at = 0.962216;
+ if ($minute_option == 1){$minute_option = 0;}
+ if ($comma_period == 1){$comma_period = 0;}
+ } elsif ($without_tfm eq "v") {
+ $direction="t";
+ $design_size=10;
+ $font_at = 0.962216;
+ } else{
+ die "Unknown Direction!!\n";
+ }
+# print STDOUT "$design_size, $font_at\n";#debug
+}
+sub read_tfm{
+ $alt_tfm_name=`kpsewhich $tfm_name.tfm`;
+ chomp($alt_tfm_name);
+ open (TFM, "<$tfm_name.tfm") || open (TFM, "<tfm/$tfm_name.tfm") || open (TFM, "<$alt_tfm_name") || die "Can't read tfm file!!\n";
+ binmode(TFM);
+ my($jfm_id, $nt, $lf, $lh, $bc, $ec, $nw, $nh, $nd, $ni, $nl, $nk, $ng, $np);
+ my($data,$d_size,$data_length, @param);
+ #first 7 word
+ read(TFM, $_, 2);
+ $jfm_id = unpack('n', $_);
+# printf STDOUT "JFM ID= %d\n",$jfm_id;#debug
+ if ($jfm_id==0x0B) {
+ $direction="y";
+ if ($minute_option == 1){$minute_option = 0;}
+# print STDOUT "Direction is YOKO!!\n";#debug
+ }elsif ($jfm_id==0x09){
+ $direction="t";
+# print STDOUT "Direction is TATE!!\n";#debug
+ }else{
+ die "Unknown Direction!!\n";
+ }
+ read(TFM, $_, 26);
+ ($nt, $lf, $lh, $bc, $ec, $nw, $nh, $nd, $ni, $nl, $nk, $ng, $np)= unpack('nnnnnnnnnnnnn', $_);
+ #header
+ read(TFM, $_, (4*$lh));
+ ($data,$d_size)= unpack('NN',$_);
+ $d_size=$d_size/(1<<20);;
+ $data_length = ($nt+$ec-$bc+1+$nw+$nh+$nd+$ni+$nl+$nk+$ng)*4;
+ read(TFM, $_, $data_length);
+ read(TFM, $_, (4*$np));
+ @param=unpack('NNNNNNNNN',$_);
+ $zh = $param[4]/(1<<20);
+ $zw = $param[5]/(1<<20);
+ $design_size=$d_size;
+ $font_at=$zw;
+# printf STDOUT "Design Size: %f, zw: %f, zh: %f\n",$d_size, $zw, $zh;#debug
+}
+sub get_face{
+ if($kana_font eq "cidjminr"){
+ $face="cidjmr";
+ }elsif($kana_font eq "cidjgothr"){
+ $face="cidjgr";
+ }elsif($kana_font eq "cidjminb"){
+ $face="cidjmb";
+ }elsif($kana_font eq "cidjgothb"){
+ $face="cidjgb";
+ }elsif($kana_font eq "cidjgotheb"){
+ $face="cidjge";
+ }elsif($kana_font eq "cidjmgothr"){
+ $face="cidjmgr";
+ }elsif($kana_font eq "cidjminl"){
+ $face="cidjml";
+ }elsif($kana_font eq "cidmin"){
+ $face="cidm";
+ }elsif($kana_font eq "cidgoth"){
+ $face="cidg";
+ }elsif($kana_font eq ""){
+ if($kanji_font =~ /hminr/){
+ $face="cidjmr";
+ }elsif($kanji_font =~ /hgothr/){
+ $face="cidjgr";
+ }elsif($kanji_font =~ /hminb/){
+ $face="cidjmb";
+ }elsif($kanji_font =~ /hgothb/){
+ $face="cidjgb";
+ }elsif($kanji_font =~ /hgotheb/){
+ $face="cidjge";
+ }elsif($kanji_font =~ /hmgothr/){
+ $face="cidjmgr";
+ }elsif($kanji_font =~ /hminl/){
+ $face="cidjml";
+ }
+ }
+}
+sub baseline_shift{
+ if ($baseline_shift != 0){
+ $baseline_shift_amount=-($baseline_shift/1000)*$zh;
+ printf OVP " (MOVEUP R %f)\n",$baseline_shift_amount;
+ }
+}
+sub print_kigo_char{
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ if ($jiscode>=0x2146 && $jiscode<=0x215B){#Kakko
+ $width=$half_width;
+ } elsif ($jiscode>=0x2122 && $jiscode<=0x2128){#Kutouten
+ if (($burasage eq 1) && ($jiscode>=0x2122 && $jiscode<=0x2125)){#burasage
+ $width=0;
+ }else{
+ $width=$half_width;
+ }
+ } else{
+ $width=$font_at;
+ }
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ if ((0x2133 <= $jiscode && $jiscode <= 0x2136) || $jiscode == 0x213c){
+ if ($ruby==1){
+ print OVP " (SELECTFONT D 2)\n";
+ }elsif($expert==1){
+ if ($direction eq "y"){
+ if ($jiscode==0x2135 || $jiscode == 0x2136){
+ print OVP " (SELECTFONT D 2)\n";
+ }else{
+ print OVP " (SELECTFONT D 3)\n";
+ }
+ }else{
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ }elsif($kana_font ne ""){
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ }
+ if ($cid_minute == 1){#cid_minute
+ if ($jiscode == 0x2148 || $jiscode == 0x2149){#double quatation->double minute
+ print OVP " (SELECTFONT D 4)\n";
+ }elsif ($jiscode == 0x2146 || $jiscode == 0x2147){#single quatation->single minute
+ print OVP " (SELECTFONT D 5)\n";
+ }
+ }
+ &baseline_shift;
+ if ((0x2133 <= $jiscode && $jiscode <= 0x2136) || $jiscode == 0x213c){#odoriji
+ &scaled_shift;
+ }
+ if (0x2126 <= $jiscode && $jiscode <= 0x2128){#colon, semicolon, nakaten
+ printf OVP " (MOVERIGHT R -%f)\n",$quater_width;}
+ if (0x214A <= $jiscode && $jiscode <= 0x215B && ($jiscode%2)==0){#Kakko
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ if (0x2146 <= $jiscode && $jiscode <=0x2149){#quatation
+ if ($minute_option == 1){#quatation -> minute
+ if ($cid_minute == 1){
+ if (($jiscode%2)==0){
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ $minute_char_code= shift(@cid_minute_code);
+ printf OVP " (SETCHAR H %X)\n", $minute_char_code;
+ }else{
+ $minute_right_shift= shift(@minute_right);
+ $minute_down_shift= shift(@minute_down);
+ printf OVP " (MOVERIGHT R %f)\n", $minute_right_shift;
+ printf OVP " (MOVEDOWN R %f)\n", $minute_down_shift;
+ if (($jiscode%2)==1){
+ print OVP " (SPECIAL ps: gsave currentpoint currentpoint translate 180 neg rotate neg exch neg exch translate)\n";
+ }
+ if ($sjis == 1){
+ $minute_char_code= shift(@shift_minute_code);
+ }else{
+ $minute_char_code= shift(@minute_code);
+ }
+ printf OVP " (SETCHAR H %X)\n", $minute_char_code;
+ if (($jiscode%2)==1){
+ print OVP " (SPECIAL ps: currentpoint grestore moveto)\n";
+ }
+ }
+ } else {
+ if (($jiscode%2)==0){
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ printf OVP " (SETCHAR H %X)\n", $char_code;
+ }
+ } elsif ((0x2133 <= $jiscode && $jiscode <= 0x2136) || $jiscode == 0x213c){#odoriji
+ if ($ruby==1){
+ if ($direction eq "y"){
+ $odorijicode= shift(@ruby_odori_h);
+ }else{
+ $odorijicode= shift(@ruby_odori_v);
+ }
+ }elsif($expert==1){
+ if ($direction eq "y"){
+ $odorijicode= shift(@exp_odori_h);
+ }else{
+ $odorijicode= shift(@exp_odori_v);
+ }
+ }elsif ($sjis==1){
+ $odorijicode= $shift_jiscode;
+ }else{
+ $odorijicode= $jiscode;
+ }
+ printf OVP " (SETCHAR H %X)\n",$odorijicode;
+ } elsif (($jiscode== 0x2124 || $jiscode== 0x2125) && $comma_period == 1){
+ printf OVP " (SETCHAR H %X)\n",$char_code-2;
+ }else {
+ printf OVP " (SETCHAR H %X)\n",$char_code;
+ }
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_char{
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n", $font_at;
+ print OVP " (MAP\n";
+ if (($jis2004 == 1) && (0x3029 <= $jiscode && $jiscode <= 0x726D)){
+ if (exists $kaisei_jikei{$jiscode}){
+ $cid = $kaisei_jikei{$jiscode};
+ $fontmap = int($cid/4096)+3;
+ printf OVP " (SELECTFONT D %d)\n", $fontmap;
+ $upper = int(($cid%4096)/64)+16;
+ $lower = (($cid%4096)%64)+16;
+# printf STDOUT "%d, %d\n",$upper,$lower;
+ $char_code = $upper*256+$lower+0x2020;
+ }
+ }
+ &baseline_shift;
+ printf OVP " (SETCHAR H %X)\n",$char_code;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kana_char{
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n", $font_at;
+ print OVP " (MAP\n";
+ if ($kana_font ne ""){
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ &baseline_shift;
+ &scaled_shift;
+ printf OVP " (SETCHAR H %X)\n",$char_code;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_ruby_hira_char{
+ $ruby_hira_code_orig=$ruby_hira_code;
+ if ($direction eq "t"){&fix_ruby_hira_code;}
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SELECTFONT D %d)\n",$ruby_font_map;
+ &baseline_shift;
+ printf OVP " (SETCHAR H %X)\n", $ruby_hira_code;
+ print OVP " )\n";
+ print OVP " )\n";
+ $ruby_hira_code=$ruby_hira_code_orig;
+ $ruby_hira_code++;
+ if ($ruby_hira_code == 0x3570){$ruby_hira_code=0x3630;}
+ if ($ruby_hira_code == 0x3670){$ruby_hira_code=0x3730;}
+ if ($ruby_hira_code == 0x363A){$ruby_hira_code=0x363B;}
+ if ($ruby_hira_code == 0x3641){$ruby_hira_code=0x3642;}
+}
+sub print_ruby_kata_char{
+ $ruby_kata_code_orig=$ruby_kata_code;
+ if ($jiscode == 0x2575){$ruby_kata_code=0x375C;}
+ if ($jiscode == 0x2576){$ruby_kata_code=0x3763;}
+ if ($direction eq "t"){&fix_ruby_kata_code;}
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 2)\n";
+ &baseline_shift;
+ printf OVP " (SETCHAR H %X)\n", $ruby_kata_code;
+ print OVP " )\n";
+ print OVP " )\n";
+ $ruby_kata_code=$ruby_kata_code_orig;
+ $ruby_kata_code++;
+ if ($ruby_kata_code == 0x3770){$ruby_kata_code=0x3830;}
+ if ($ruby_kata_code == 0x375C){$ruby_kata_code=0x375D;}
+ if ($ruby_kata_code == 0x3763){$ruby_kata_code=0x3764;}
+}
+sub exp_hira_h_char{
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SELECTFONT D %d)\n", $exp_font_map;
+ &baseline_shift;
+ &scaled_shift;
+ printf OVP " (SETCHAR H %X)\n", $exp_hira_code_h;
+ print OVP " )\n";
+ print OVP " )\n";
+ $exp_hira_code_h++;
+ if ($exp_hira_code_h == 0x6F70){$exp_hira_code_h=0x3030;$exp_font_map=3;}
+ if ($exp_hira_code_h == 0x3070){$exp_hira_code_h=0x3130;}
+ if ($exp_hira_code_h == 0x6f6d){$exp_hira_code_h++;}
+ if ($exp_hira_code_h == 0x3034){$exp_hira_code_h++;}
+ if ($exp_hira_code_h == 0x3037){$exp_hira_code_h++;}
+}
+sub exp_kata_h_char{
+ if ($jiscode == 0x2575){$exp_kata_code_h=0x3147;}
+ if ($jiscode == 0x2576){$exp_kata_code_h=0x314e;}
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 3)\n";
+ &baseline_shift;
+ &scaled_shift;
+ printf OVP " (SETCHAR H %X)\n", $exp_kata_code_h;
+ print OVP " )\n";
+ print OVP " )\n";
+ $exp_kata_code_h++;
+ if ($exp_kata_code_h == 0x3170){$exp_kata_code_h=0x3230;}
+ if ($exp_kata_code_h == 0x3147){$exp_kata_code_h++;}
+ if ($exp_kata_code_h == 0x314e){$exp_kata_code_h++;}
+ if ($exp_kata_code_h == 0x3151){$exp_kata_code_h++;}
+}
+sub exp_hira_v_char{
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SELECTFONT D 2)\n";
+ &baseline_shift;
+ &scaled_shift;
+ printf OVP " (SETCHAR H %X)\n", $exp_hira_code_v;
+ print OVP " )\n";
+ print OVP " )\n";
+ $exp_hira_code_v++;
+ if ($exp_hira_code_v == 0x3270){$exp_hira_code_v=0x3330;}
+ if ($exp_hira_code_v == 0x3264){$exp_hira_code_v++;}
+ if ($exp_hira_code_v == 0x326b){$exp_hira_code_v++;}
+ if ($exp_hira_code_v == 0x326e){$exp_hira_code_v++;}
+}
+sub exp_kata_v_char{
+ if ($jiscode == 0x2575){$exp_kata_code_v=0x343e;}
+ if ($jiscode == 0x2576){$exp_kata_code_v=0x3445;}
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n",$font_at;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 2)\n";
+ &baseline_shift;
+ &scaled_shift;
+ printf OVP " (SETCHAR H %X)\n", $exp_kata_code_v;
+ print OVP " )\n";
+ print OVP " )\n";
+ $exp_kata_code_v++;
+ if ($exp_kata_code_v == 0x3470){$exp_kata_code_v=0x3530;}
+ if ($exp_kata_code_v == 0x343e){$exp_kata_code_v++;}
+ if ($exp_kata_code_v == 0x3445){$exp_kata_code_v++;}
+ if ($exp_kata_code_v == 0x3448){$exp_kata_code_v++;}
+}
+sub fix_ruby_hira_code{
+ if ($jiscode == 0x2421){$ruby_hira_code=0x3745;}#a
+ if ($jiscode == 0x2423){$ruby_hira_code=0x3746;}#i
+ if ($jiscode == 0x2425){$ruby_hira_code=0x3747;}#u
+ if ($jiscode == 0x2427){$ruby_hira_code=0x3748;}#e
+ if ($jiscode == 0x2429){$ruby_hira_code=0x3749;}#o
+ if ($jiscode == 0x2443){$ruby_hira_code=0x374c;}#tsu
+ if ($jiscode == 0x2463){$ruby_hira_code=0x374d;}#ya
+ if ($jiscode == 0x2465){$ruby_hira_code=0x374e;}#yu
+ if ($jiscode == 0x2467){$ruby_hira_code=0x374f;}#yo
+ if ($jiscode == 0x246E){$ruby_hira_code=0x3750;}#wa
+}
+sub fix_ruby_kata_code{
+ if ($jiscode == 0x2521){$ruby_kata_code=0x3867;}#a
+ if ($jiscode == 0x2523){$ruby_kata_code=0x3868;}#i
+ if ($jiscode == 0x2525){$ruby_kata_code=0x3869;}#u
+ if ($jiscode == 0x2527){$ruby_kata_code=0x386a;}#e
+ if ($jiscode == 0x2529){$ruby_kata_code=0x386b;}#o
+ if ($jiscode == 0x2543){$ruby_kata_code=0x386e;}#tsu
+ if ($jiscode == 0x2563){$ruby_kata_code=0x386f;}#ya
+ if ($jiscode == 0x2565){$ruby_kata_code=0x3930;}#yu
+ if ($jiscode == 0x2567){$ruby_kata_code=0x3931;}#yo
+ if ($jiscode == 0x256E){$ruby_kata_code=0x3932;}#wa
+ if ($jiscode == 0x2575){$ruby_kata_code=0x386c;}#ka
+ if ($jiscode == 0x2576){$ruby_kata_code=0x386d;}#ke
+}
+sub get_shift_jiscode{
+ $c1=$ku+32;
+ $c2=$ten+32;
+ if ($c1 % 2) {
+ $c1 = (($c1 + 1) / 2) + 0x70;
+ $c2 = $c2 + 0x1f;
+ } else {
+ $c1 = ($c1 / 2) + 0x70;
+ $c2 = $c2 + 0x7d;
+ }
+ if ($c1 >= 0xa0) {$c1 = $c1 + 0x40;}
+ if ($c2 >= 0x7f) {$c2 = $c2 + 1;}
+ $shift_jiscode=$c1*256+$c2;
+}
+sub scaled_shift{
+ if ($scale != 1){
+ $scaled_shift_amount=(1-$scale)*$font_at/2;
+ printf OVP " (MOVERIGHT R %f)\n",$scaled_shift_amount;
+ if ($direction eq "y"){
+ $scaled_v_shift_amount=(1-$scale)*$font_at*0.38;
+ printf OVP " (MOVEUP R %f)\n",$scaled_v_shift_amount;
+ }
+ }
+}
diff --git a/language/japanese/japanese-otf/ofm/otf-cjgb-h.ofm b/language/japanese/japanese-otf/ofm/otf-cjgb-h.ofm
new file mode 100644
index 0000000000..ee31393e06
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjgb-h.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjgb-v.ofm b/language/japanese/japanese-otf/ofm/otf-cjgb-v.ofm
new file mode 100644
index 0000000000..e25e786ffa
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjgb-v.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjge-h.ofm b/language/japanese/japanese-otf/ofm/otf-cjge-h.ofm
new file mode 100644
index 0000000000..ee31393e06
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjge-h.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjge-v.ofm b/language/japanese/japanese-otf/ofm/otf-cjge-v.ofm
new file mode 100644
index 0000000000..e25e786ffa
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjge-v.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjgr-h.ofm b/language/japanese/japanese-otf/ofm/otf-cjgr-h.ofm
new file mode 100644
index 0000000000..ee31393e06
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjgr-h.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjgr-v.ofm b/language/japanese/japanese-otf/ofm/otf-cjgr-v.ofm
new file mode 100644
index 0000000000..e25e786ffa
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjgr-v.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjmb-h.ofm b/language/japanese/japanese-otf/ofm/otf-cjmb-h.ofm
new file mode 100644
index 0000000000..ee31393e06
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjmb-h.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjmb-v.ofm b/language/japanese/japanese-otf/ofm/otf-cjmb-v.ofm
new file mode 100644
index 0000000000..e25e786ffa
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjmb-v.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjmgr-h.ofm b/language/japanese/japanese-otf/ofm/otf-cjmgr-h.ofm
new file mode 100644
index 0000000000..ee31393e06
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjmgr-h.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjmgr-v.ofm b/language/japanese/japanese-otf/ofm/otf-cjmgr-v.ofm
new file mode 100644
index 0000000000..e25e786ffa
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjmgr-v.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjml-h.ofm b/language/japanese/japanese-otf/ofm/otf-cjml-h.ofm
new file mode 100644
index 0000000000..ee31393e06
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjml-h.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjml-v.ofm b/language/japanese/japanese-otf/ofm/otf-cjml-v.ofm
new file mode 100644
index 0000000000..e25e786ffa
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjml-v.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjmr-h.ofm b/language/japanese/japanese-otf/ofm/otf-cjmr-h.ofm
new file mode 100644
index 0000000000..ee31393e06
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjmr-h.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/ofm/otf-cjmr-v.ofm b/language/japanese/japanese-otf/ofm/otf-cjmr-v.ofm
new file mode 100644
index 0000000000..e25e786ffa
--- /dev/null
+++ b/language/japanese/japanese-otf/ofm/otf-cjmr-v.ofm
Binary files differ
diff --git a/language/japanese/japanese-otf/otf-script-gteb.diff b/language/japanese/japanese-otf/otf-script-gteb.diff
new file mode 100644
index 0000000000..5b124ed742
--- /dev/null
+++ b/language/japanese/japanese-otf/otf-script-gteb.diff
@@ -0,0 +1,268 @@
+diff -ur japanese-otf.orig/makeotf japanese-otf/makeotf
+--- japanese-otf.orig/makeotf 2010-03-27 09:48:06.000000000 +0900
++++ japanese-otf/makeotf 2018-01-31 21:52:00.000000000 +0900
+@@ -54,6 +54,14 @@
+ #for extra fonts
+ ppltotf basepl/base-h.pl tfm/nmlgotheb-h.tfm
+ ppltotf basepl/base-v.pl tfm/nmlgotheb-v.tfm
++ppltotf basepl/base-h.pl tfm/expgotheb-h.tfm
++ppltotf basepl/base-v.pl tfm/expgotheb-v.tfm
++ppltotf basepl/base-v.pl tfm/rubygotheb-v.tfm
++ppltotf basepl/base-h.pl tfm/rubygotheb-h.tfm
++ppltotf basepl/base0-h.pl tfm/cidjge0-h.tfm
++ppltotf basepl/base2-h.pl tfm/cidjge2-h.tfm
++ppltotf basepl/base2-v.pl tfm/cidjge2-v.tfm
++ppltotf basepl/base3-v.pl tfm/cidjge3-v.tfm
+ ppltotf basepl/base-h.pl tfm/nmlminl-h.tfm
+ ppltotf basepl/base-v.pl tfm/nmlminl-v.tfm
+ ppltotf basepl/base-h.pl tfm/expminl-h.tfm
+@@ -83,7 +91,7 @@
+ ./mkjvf -cm -cp nmlmgothr-v hmgothr-v
+ #extra fonts
+ ./mkjvf nmlgotheb-h hgotheb-h
+-./mkjvf -cp nmlgotheb-v hgotheb-v
++./mkjvf -cm -cp nmlgotheb-v hgotheb-v
+ ./mkjvf nmlminl-h hminl-h
+ ./mkjvf -cm -cp nmlminl-v hminl-v
+ echo "making alt. kana ..."
+@@ -111,6 +119,10 @@
+ ./mkjvf -cm -cp -expert expminl-v hminl-v cidjminl
+ ./mkjvf -ruby rubyminl-h hminl-h cidjminl
+ ./mkjvf -cm -cp -ruby rubyminl-v hminl-v cidjminl
++./mkjvf -expert expgotheb-h hgotheb-h cidjgotheb
++./mkjvf -cm -cp -expert expgotheb-v hgotheb-v cidjgotheb
++./mkjvf -ruby rubygotheb-h hgotheb-h cidjgotheb
++./mkjvf -cm -cp -ruby rubygotheb-v hgotheb-v cidjgotheb
+ echo "making proportional kana tfm/vf"
+ perl script/mkpkana.pl
+ ppltotf -kanji=euc pl/phiraminw6-h.pl tfm/phiraminw6-h.tfm
+@@ -171,6 +183,8 @@
+ ppltotf basepl/brsg-v.pl tfm/brsgexpmgothr-v.tfm
+ ppltotf basepl/brsg-h.pl tfm/brsgnmlgotheb-h.tfm
+ ppltotf basepl/brsg-v.pl tfm/brsgnmlgotheb-v.tfm
++ppltotf basepl/brsg-h.pl tfm/brsgexpgotheb-h.tfm
++ppltotf basepl/brsg-v.pl tfm/brsgexpgotheb-v.tfm
+ ppltotf basepl/brsg-h.pl tfm/brsgnmlminl-h.tfm
+ ppltotf basepl/brsg-v.pl tfm/brsgnmlminl-v.tfm
+ ppltotf basepl/brsg-h.pl tfm/brsgexpminl-h.tfm
+@@ -186,7 +200,7 @@
+ ./mkjvf -sage brsgnmlmgothr-h hmgothr-h
+ ./mkjvf -sage -cm -cp brsgnmlmgothr-v hmgothr-v
+ ./mkjvf -sage brsgnmlgotheb-h hgotheb-h
+-./mkjvf -sage -cp brsgnmlgotheb-v hgotheb-v
++./mkjvf -sage -cm -cp brsgnmlgotheb-v hgotheb-v
+ ./mkjvf -sage brsgnmlminl-h hminl-h
+ ./mkjvf -sage -cm -cp brsgnmlminl-v hminl-v
+ ./mkjvf -sage -expert brsgexpminr-h hminr-h cidjminr
+@@ -199,6 +213,8 @@
+ ./mkjvf -sage -cm -cp -expert brsgexpgothb-v hgothb-v cidjgothb
+ ./mkjvf -sage -expert brsgexpmgothr-h hmgothr-h cidjmgothr
+ ./mkjvf -sage -cm -cp -expert brsgexpmgothr-v hmgothr-v cidjmgothr
++./mkjvf -sage -expert brsgexpgotheb-h hgotheb-h cidjgotheb
++./mkjvf -sage -cm -cp -expert brsgexpgotheb-v hgotheb-v cidjgotheb
+ ./mkjvf -sage -expert brsgexpminl-h hminl-h cidjminl
+ ./mkjvf -sage -cm -cp -expert brsgexpminl-v hminl-v cidjminl
+ echo "making tfm/vf for UTF jp04 (wait a while)..."
+@@ -228,6 +244,10 @@
+ ppltotf basepl/base-v.pl tfm/nmlminln-v.tfm
+ ppltotf basepl/base-h.pl tfm/expminln-h.tfm
+ ppltotf basepl/base-v.pl tfm/expminln-v.tfm
++ppltotf basepl/base-h.pl tfm/nmlgothebn-h.tfm
++ppltotf basepl/base-v.pl tfm/nmlgothebn-v.tfm
++ppltotf basepl/base-h.pl tfm/expgothebn-h.tfm
++ppltotf basepl/base-v.pl tfm/expgothebn-v.tfm
+ ppltotf basepl/brsg-h.pl tfm/brsgnmlminrn-h.tfm
+ ppltotf basepl/brsg-v.pl tfm/brsgnmlminrn-v.tfm
+ ppltotf basepl/brsg-h.pl tfm/brsgnmlgothrn-h.tfm
+@@ -252,6 +272,10 @@
+ ppltotf basepl/brsg-v.pl tfm/brsgnmlminln-v.tfm
+ ppltotf basepl/brsg-h.pl tfm/brsgexpminln-h.tfm
+ ppltotf basepl/brsg-v.pl tfm/brsgexpminln-v.tfm
++ppltotf basepl/brsg-h.pl tfm/brsgnmlgothebn-h.tfm
++ppltotf basepl/brsg-v.pl tfm/brsgnmlgothebn-v.tfm
++ppltotf basepl/brsg-h.pl tfm/brsgexpgothebn-h.tfm
++ppltotf basepl/brsg-v.pl tfm/brsgexpgothebn-v.tfm
+ echo "making jvf for jp04 ..."
+ ./mkjvf -jp04 nmlminrn-h hminrn-h
+ ./mkjvf -jp04 -cm -cp nmlminrn-v hminrn-v
+@@ -265,6 +289,8 @@
+ ./mkjvf -jp04 -cm -cp nmlmgothrn-v hmgothrn-v
+ ./mkjvf -jp04 nmlminln-h hminln-h
+ ./mkjvf -jp04 -cm -cp nmlminln-v hminln-v
++./mkjvf -jp04 nmlgothebn-h hgothebn-h
++./mkjvf -jp04 -cm -cp nmlgothebn-v hgothebn-v
+ ./mkjvf -jp04 -expert expminrn-h hminrn-h cidjminr
+ ./mkjvf -jp04 -cm -cp -expert expminrn-v hminrn-v cidjminr
+ ./mkjvf -jp04 -expert expgothrn-h hgothrn-h cidjgothr
+@@ -275,6 +301,8 @@
+ ./mkjvf -jp04 -cm -cp -expert expgothbn-v hgothbn-v cidjgothb
+ ./mkjvf -jp04 -expert expmgothrn-h hmgothrn-h cidjmgothr
+ ./mkjvf -jp04 -cm -cp -expert expmgothrn-v hmgothrn-v cidjmgothr
++./mkjvf -jp04 -expert expgothebn-h hgothebn-h cidjgotheb
++./mkjvf -jp04 -cm -cp -expert expgothebn-v hgothebn-v cidjgotheb
+ ./mkjvf -jp04 -expert expminln-h hminln-h cidjminl
+ ./mkjvf -jp04 -cm -cp -expert expminln-v hminln-v cidjminl
+ ./mkjvf -jp04 -sage brsgnmlminrn-h hminrn-h
+@@ -287,6 +315,8 @@
+ ./mkjvf -jp04 -sage -cm -cp brsgnmlgothbn-v hgothbn-v
+ ./mkjvf -jp04 -sage brsgnmlmgothrn-h hmgothrn-h
+ ./mkjvf -jp04 -sage -cm -cp brsgnmlmgothrn-v hmgothrn-v
++./mkjvf -jp04 -sage brsgnmlgothebn-h hgothebn-h
++./mkjvf -jp04 -sage -cm -cp brsgnmlgothebn-v hgothebn-v
+ ./mkjvf -jp04 -sage brsgnmlminln-h hminln-h
+ ./mkjvf -jp04 -sage -cm -cp brsgnmlminln-v hminln-v
+ ./mkjvf -jp04 -sage -expert brsgexpminrn-h hminrn-h cidjminr
+@@ -299,6 +329,8 @@
+ ./mkjvf -jp04 -sage -cm -cp -expert brsgexpgothbn-v hgothbn-v cidjgothb
+ ./mkjvf -jp04 -sage -expert brsgexpmgothrn-h hmgothrn-h cidjmgothr
+ ./mkjvf -jp04 -sage -cm -cp -expert brsgexpmgothrn-v hmgothrn-v cidjmgothr
++./mkjvf -jp04 -sage -expert brsgexpgothebn-h hgothebn-h cidjgotheb
++./mkjvf -jp04 -sage -cm -cp -expert brsgexpgothebn-v hgothebn-v cidjgotheb
+ ./mkjvf -jp04 -sage -expert brsgexpminln-h hminln-h cidjminl
+ ./mkjvf -jp04 -sage -cm -cp -expert brsgexpminln-v hminln-v cidjminl
+ echo "finishing ..."
+diff -ur japanese-otf.orig/mkjvf japanese-otf/mkjvf
+--- japanese-otf.orig/mkjvf 2010-03-27 08:18:50.000000000 +0900
++++ japanese-otf/mkjvf 2018-01-31 21:52:00.000000000 +0900
+@@ -381,6 +381,8 @@
+ $face="cidjmb";
+ }elsif($kana_font eq "cidjgothb"){
+ $face="cidjgb";
++ }elsif($kana_font eq "cidjgotheb"){
++ $face="cidjge";
+ }elsif($kana_font eq "cidjmgothr"){
+ $face="cidjmgr";
+ }elsif($kana_font eq "cidjminl"){
+@@ -398,6 +400,8 @@
+ $face="cidjmb";
+ }elsif($kanji_font =~ /hgothb/){
+ $face="cidjgb";
++ }elsif($kanji_font =~ /hgotheb/){
++ $face="cidjge";
+ }elsif($kanji_font =~ /hmgothr/){
+ $face="cidjmgr";
+ }elsif($kanji_font =~ /hminl/){
+diff -ur japanese-otf.orig/script/mkaltutfvf.pl japanese-otf/script/mkaltutfvf.pl
+--- japanese-otf.orig/script/mkaltutfvf.pl 2010-03-23 07:49:34.000000000 +0900
++++ japanese-otf/script/mkaltutfvf.pl 2018-01-31 22:08:50.000000000 +0900
+@@ -3,6 +3,8 @@
+ @glyph_sub_table=();
+ opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+ opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
++closedir(OVP);
++closedir(VF);
+
+ &make_glyph_substitute_array;
+ &make_uni_vf;
+@@ -24,6 +26,7 @@
+ for ($k=0; $k<=1; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
++ elsif ($k==6){$face="ge";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ for ($first_hex=0x0; $first_hex <= 0xf; $first_hex++){
+diff -ur japanese-otf.orig/script/mkcidofm.pl japanese-otf/script/mkcidofm.pl
+--- japanese-otf.orig/script/mkcidofm.pl 2010-03-24 00:37:16.000000000 +0900
++++ japanese-otf/script/mkcidofm.pl 2018-01-31 22:08:50.000000000 +0900
+@@ -1,7 +1,7 @@
+ opendir(OPLD, "opl") || mkdir("opl",0755) || die "cannot mkdir opl";
+ opendir(OFMD, "ofm") || mkdir("ofm",0755) || die "cannot mkdir ofm";
+ $font_at=1.0;
+-@font_base_name=("cjmr", "cjgr", "cjmb", "cjgb", "cjmgr", "cjml");
++@font_base_name=("cjmr", "cjgr", "cjmb", "cjgb", "cjmgr", "cjml", "cjge");
+ for ($d=0; $d<=1; $d++){
+ if ($d==0){$dir="h";}elsif($d==1){$dir="v";}
+ foreach $base_name(@font_base_name){
+diff -ur japanese-otf.orig/script/mkcidvf.pl japanese-otf/script/mkcidvf.pl
+--- japanese-otf.orig/script/mkcidvf.pl 2010-03-23 07:50:02.000000000 +0900
++++ japanese-otf/script/mkcidvf.pl 2018-01-31 22:08:50.000000000 +0900
+@@ -4,9 +4,10 @@
+ &makevf;
+
+ sub makevf {
+- for ($k=0; $k<=5; $k++){#face
++ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
++ elsif ($k==6){$face="ge";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ $cidcode=0;
+diff -ur japanese-otf.orig/script/mkjp04tfmvf.pl japanese-otf/script/mkjp04tfmvf.pl
+--- japanese-otf.orig/script/mkjp04tfmvf.pl 2010-03-26 11:36:32.000000000 +0900
++++ japanese-otf/script/mkjp04tfmvf.pl 2018-01-31 22:08:50.000000000 +0900
+@@ -11,9 +11,10 @@
+ &makejvf;
+
+ sub make_utf_tfm {
+- for ($k=0; $k<=5; $k++){#face
++ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
++ elsif ($k==6){$face="ge";}
+ for ($l=0; $l<=0; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+@@ -43,9 +44,10 @@
+ }
+
+ sub makejvf {
+- for ($k=0; $k<=5; $k++){#face
++ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
++ elsif ($k==6){$face="ge";}
+ for ($l=0; $l<=0; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+diff -ur japanese-otf.orig/script/mktfm.pl japanese-otf/script/mktfm.pl
+--- japanese-otf.orig/script/mktfm.pl 2004-12-23 22:50:06.000000000 +0900
++++ japanese-otf/script/mktfm.pl 2018-01-31 22:08:50.000000000 +0900
+@@ -13,9 +13,10 @@
+ &make_multi_cid_tfm;
+
+ sub make_utf_tfm {
+- for ($k=0; $k<=5; $k++){#face
++ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
++ elsif ($k==6){$face="ge";}
+ for ($l=0; $l<=0; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+@@ -45,9 +46,10 @@
+ }
+
+ sub make_cid_tfm {
+- for ($k=0; $k<=5; $k++){#face
++ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
++ elsif ($k==6){$face="ge";}
+ for ($l=0; $l<=0; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+diff -ur japanese-otf.orig/script/mkutfvf.pl japanese-otf/script/mkutfvf.pl
+--- japanese-otf.orig/script/mkutfvf.pl 2010-03-26 11:23:42.000000000 +0900
++++ japanese-otf/script/mkutfvf.pl 2018-01-31 22:08:50.000000000 +0900
+@@ -6,9 +6,10 @@
+ &makemlvf;
+
+ sub makejvf {
+- for ($k=0; $k<=5; $k++){#face
++ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
++ elsif ($k==6){$face="ge";}
+ for ($l=0; $l<=0; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+@@ -33,6 +34,7 @@
+ for ($k=0; $k<=1; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
++ elsif ($k==6){$face="ge";}
+ for ($l=1; $l<=$multi; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
diff --git a/language/japanese/japanese-otf/readme-ja.txt b/language/japanese/japanese-otf/readme-ja.txt
new file mode 100644
index 0000000000..9dccfbae8d
--- /dev/null
+++ b/language/japanese/japanese-otf/readme-ja.txt
@@ -0,0 +1,227 @@
+OTFパッケージ開発版(v1.7b8 2019/04/01)
+齋藤修三郎
+
+【ライセンス】
+修正 BSDとします.
+
+【必要な物】
+・ovp2ovf:WEB版のものだと確実にうまくいきます.C版の場合、2011年12月以降のVersionでしたらうまくいきます.
+・opl2ofm:WEB版のものだと確実にうまくいきます.C版の場合、2011年12月以降のVersionでしたらうまくいきます.
+・perl
+・ppltotf
+
+【インストール】
+1)シェルスクリプトmakeotfを実行してください(必要なら実行属性を付けてください).
+  (mkjvfにも実行属性が付いている必要があります)
+
+2)処理が終わると同じ階層にvf, tfm, ofmというフォルダが作成されます.適切な場所に移動させてください.
+
+3)styファイル等を適当な場所に移動させてください.必要が有れば,mktexlsrを実行してください.
+
+4)divpsのマップファイルに(例えば)hiragino.map(for udvips)に書かれたエントリを追加します.
+
+5)dvipdfmxのマップファイルに(例えば)hiraginox.map(for dvipdfmx)に書かれたエントリを追加します.
+
+6)繁體字,簡体字,ハングルなどを使用する場合,ckt.map(for udvips), ckt.map(for dvipdfmx)に
+  書かれたエントリを追加して下さい.
+  Distillerの「フォントの場所」にMSungStd-Light-Acroなどが入っているフォルダを追加すれば,
+  繁體字,簡体字,ハングルなども埋め込めます(明朝体のみ).
+
+アジアンフォントパックは下記のURLから入手出来ます.
+http://www.adobe.com/products/acrobat/acrrasianfontpack.html
+
+
+【使用法】
+otf.styになって追加されたオプションとして,deluxe, multi, bold, noreplaceがあります.
+
+deluxeを指定すると,mc/m/n, mc/bx/n, gt/m/n, gt/bx/nを別々のフォントに割り当てるようにします.
+丸ゴシックも使えるようになります.\mgfamilyを宣言すると丸ゴシックになります.(勿論割り当てられたフォント次第です)
+
+【注意】
+アスキーの標準クラスファイルでは見出しなどのフォントに\bfseriesが指定されているだけです.処理結果で(太字の)ゴシック
+で表示されていたのはmc/bx --> gt/mに代替されていたからです.同様の結果を得るためには\bfseriesを\gtfamily\bfseries
+に変更する必要があります.これを行うためのスタイルファイルがredeffont.styです.deluxeオプションを使用するときは,
+このスタイルファイルを読み込んでください.(自動では読み込まれません)
+redeffont.styでは,見出しがgt/bxに割り当てられているフォントになります.これを例えばgt/mにしたい場合,\headfontを
+書き換えることで可能です.プリアンブルで
+\let\headfont=\gtfamily
+としてください.
+
+multiを指定すると,Unicodeの漢字の部分を簡体字,繁體字,朝鮮語のそれぞれのフォントを利用することが
+出來ます.簡体字は\UTFCを,繁體字は\UTFTを,朝鮮語は\UTFKを,それぞれ使います.
+(残念乍ら,deluxeオプションを指定しても,効果は及びません)
+また,\UTFMを用いると,もし日本語のフォントにグリフがない場合,繁體字>簡体字>ハングルの順番で
+グリフがないかを調べ,何れかにグリフがある場合,そのフォントのグリフが用いられます.
+CIDによる指定は,簡体字は\CIDCを,繁體字は\CIDTを,朝鮮語は\CIDKを,それぞれ使います.
+
+【注意】otf.styはデフォルトの明朝体,ゴシック体を置き換えます.
+◇gt/mをどのように置き換えるかを変更するオプションがboldオプションです.デフォルトではgt/mには
+レギュラーのゴシックを割り当てますが,boldオプションを指定するとボールドのゴシックを割り当てます.
+
+◇noreplaceを指定すると,デフォルトの明朝体,ゴシック体を置き換えないようになります.
+ただし,deluxe, expertオプションが指定されるとnoreplaceは無効になります.
+
+\usepackage[deluxe, expert, multi]{otf}
+でオプションが全て有効になります.(フォントのshapeがたくさん定義され無駄が増えます.)
+
+◇burasageオプションが指定されると,ぶら下げ組をするようになります.但し,ちょうど行末に来た句読点は全角取りになります.
+ルビ用のフォントには適用されません.
+
+◇jis2004オプションが指定されると,JIS X 0213:2004で行われた例示字形の変更による字形を表示するようになります.
+ルビ用のフォントおよび\ebseriesには適用されません.
+また,実際に使用するフォントによっては字形の変更が行われないことがあります.
+
+◇scaleオプション[v1.7b6以降]
+フォントを宣言するときに明示的にscaleを指定したい場合に使用します.
+\usepackage[scale=1.0]{otf}
+で,欧文10ptに対して,和文も10ptになります.
+尚,宣言しない場合,jsクラスを使用していればscale=0.92469,それ以外のクラスファイルの場合,scale=0.962216となります.
+
+
+【おまけ】mkjvfについて
+生成スクリプトの中で使っているmkjvfはovp2ovfを利用してVFを作成するperlスクリプトです.
+それ自体でも使えますので,ご利用戴ければ幸いです.
+makejvfとの違いは,
+・TFMをちゃんと読み込まない.
+・長体/平体には対応していない.
+・UTF/OTFパッケージ用ですが,仮名のフォントにルビ用かな,縦組/横組専用かなを割り当てたVFを作成可能
+・マッピングのカスタマイズが比較的簡単
+です.TFMをちゃんと読み込まないので,生成出来るのはJIS TFMベースです,min10のような複雑な
+文字幅には対応していません.
+
+【使用許諾】
+本パッケージのインストールまたは使用に関連して使用者に直接的または間接的に発生する一切の損害
+(ハードウェア、他のソフトウェアの破損、不具合等を含む。また、通常損害、特別損害、結果損害を
+問わない)および第三者からなされる請求について著作権者は一切責任を負担しません。
+本パッケージを使用して得られる結果は、商用、非商用に関わらず無償で使用することが可能です。
+自己責任で使用してください。本パッケージを使用した場合、上記の記載事項に同意したものと見なし
+ます。
+
+【変更履歴】
+v1.7b7-->v1.7b8(2019/04/01)
+・新元号に対応.[ajmacros.sty]
+・typoを修正.[redeffont.sty]
+・vfのfontheadをAdobe-Japan1-7, Adobe-GB1-5, Adobe-CNS1-7に変更.[mkcidvf.pl, mkmlcidvf.pl]
+・OFMをCID23059まで出力されるように変更.[mkcidofm.pl]
+v1.7b6-->v1.7b7(2018/02/01)
+・jsreportを使用した場合もscale=0.92469となるようにしました.[otf.sty]
+・クラスファイルで\Cjascaleが定義されている場合,scale=\Cjascaleとなるようにしました.[otf.sty]
+・ajmacros.styに\NeedsTeXFormat{pLaTeX2e}を追加.[ajmacros.sty]
+v1.7b5-->v1.7b6(2013/11/17)
+・scaleオプションの追加.[otf.sty]
+(実装は,Z.R.さんのBXjsclsパッケージを参考にさせていただききました)
+v1.7b4-->v1.7b5(2012/4/11)
+・noreplaceオプション使用時で,\if@enablejfamが定義されていない場合,エラーとなる不具合を修正.Z.R.さんによる修正を取り込ませていただきました(上田さん,前田さん,山本さん,Z.R.さんありがとうございます).[otf.sty]
+v1.7b3-->v1.7b4(2012/1/22)
+・黒木裕介さんによる,朝鮮語の組版するための補助ファイルの追加.詳しくはhttp://ptetexwin.sourceforge.jp/jkexample/を参照のこと.
+ [otf-hangul.dfuの追加, koreanexample.texの追加]
+v1.7b1-->v1.7b3(2011/10/28)
+・修正 BSDライセンスを適用[COPYRIGHTの追加]
+v1.7b1-->v1.7b2(2010/7/30)
+・mkjvfから作成されるVFが,新しいovp2ovf (ver. 2.1)で作った場合,上手く作成されない不具合を修正しようとしたが上手くいかなったため没に[mkjvf]
+v1.5.6.1-->v1.7b1(2010/3/27)
+・ぶら下げ組に対応[otf.sty, makeotf, mkjvf, brsg-h.plおよびbrsg-v.pl追加, brsgtest.texの追加]
+・JIS X 0213:2004の字形改正に対応
+ [otf.sty, makeotf, mkjvf, hiragino.map(for udvips), hiraginox.map(for dvipdfmx), jis2004.texの追加]
+v1.5.6-->v1.5.6.1(2010/3/26)
+・mkutfvf.plにspeed up patchを適用が上手くいっていなかったのを修正[mkutfvf.pl]
+v1.5.5-->v1.5.6(2010/3/22)
+・シェルスクリプト内のpltotfをppltotfに変更[makeotf]
+・Windows用のバッチファイル(mkotf.bat)を削除
+・新しいovp2ovf, opl2ofmでovf, ofmが作成できるようにOFMLEVELエントリを追加
+ [mkvpkana.pl, mkutfvf.pl, mkcidvf.pl, mkpkana.pl, mkcidofm.pl, mkaltutfvf.pl,
+ mkmlcidvf.pl, mkpropofm.pl, mkjvf]
+・mkutfvf.plに土村展之さんのspeed up patchを適用させて戴く[mkutfvf.pl]
+・uplatexに対応するようスタイルファイルを修正[otf.sty, mlcid.sty, mlutf.sty]
+・山本和義さんのご指摘により,disablejfamを使用しない場合の定義を修正[otf.sty]
+v1.5.4-->v1.5.5(2010/3/20)
+・クラスファイルのオプションにてdisablejfam使用時の不具合を修正[otf.sty]
+v1.5.3-->v1.5.4(2007/3/19)
+・縦書き用のOFMのメトリックが間違っていたのを修正[mkcidofm.pl]
+v1.5.2.1-->v1.5.3(2006/9/6)
+・プロポーショナル仮名用tfmの作成方法がおかしかったのを修正[mkotf, mkotf.bat]
+v1.5.1-->v1.5.2.1(2005/12/31)
+・マクロ集の修正(\ajSlantedと\ajSlanted*の定義の入れ換え)[ajmacros.sty]
+v1.5.1-->v1.5.2(2005/5/11)
+・縦書きCID用のVF, OFMのメトリックがおかしかったのを修正[mkcidvf.pl, mkofm.pl]
+v1.5-->v1.5.1(2005/1/27)
+・マクロ集の修正[ajmacros.sty]
+v1.3.4-->v1.5(2005/1/16)
+・Adobe-Japan1-6に対応[otf.sty, ajmacros.sty, mktfm.pl, mkcidvf.pl, mkcidofm.pl, kozuka.map, kozukax.map]
+v1.3.3-->v1.3.4(2004/8/17)
+・ajmacros.styを読み込まないオプションをnomacrosに修正[otf.sty]
+v1.3.2-->v1.3.3(2004/4/17)
+・"のcatcodeを強制的に12にするように変更[otf.sty, mlcid.sty, mlutf.sty]
+v1.3.1.1-->v1.3.2(2004/3/5)
+・マクロ集に合字マクロの追加[ajmacros.sty]
+v1.3.1-->v1.3.1.1(2004/2/25)
+・VF生成スクリプトを修正[mkutfvf.pl, mkcidvf.pl, mkaltutfvf.pl, mkmlcidvf.pl, mkjvf, mkotf.bat]
+v1.3.0-->v1.3.1(2004/2/18)
+・CVS版のdvipdfmxに対応するためOFMファイルを作成するようにした[makeotf, mkotf.bat, mkofm.pl, mkofm2.pl]
+・プロポーショナル仮名のVFを変更[mkpkana.pl, mkvpkana.pl]
+・上記の変更により,マップファイルをエントリを追加[hiraginox.map(for dvipdfmx), hiragino.map(for udvips)]
+v1.1.6-->v1.3.0(2004/2/7)
+・明朝体,ゴシック体の置き換え用のフォントのファミリをmc, gtからhmc, hgtに変更[otf.sty]
+v1.1.5-->v1.1.6(2004/2/2)
+・縦書き用プロポーショナル仮名の追加[mkotf, mkotf.bat, mkvpkana.pl, tfm, vf, otf.sty]
+v1.1.4-->v1.1.5(2004/1/19)
+・redeffont.styのJIS X 0213パッケージに対する対応[redeffont.sty]
+・フォント定義用の内部マクロの(井上浩一氏による)改良[otf.sty]
+v1.1.3-->v1.1.4(2003/12/19)
+・フォント定義用の内部マクロの(井上浩一氏による)改良[otf.sty, mlotf.sty, mlcid.sty]
+・dvipdfmx用のフォントマップファイルを20031207版のものに変更[各種マップファイル]
+v1.1.2-->v1.1.3(2003/12/17)
+・CIDによる指定を多言語に対応させました(とりあえず,全て全角幅にしています)
+ [makeotf, mkotf.bat, mktfm.pl, mkmlcidvf.pl, tfm, vf, mlcid.sty, fontmap]
+v1.1.1-->v1.1.2(2003/11/27)
+・プロポーショナル仮名用のJFM, VFをOTFパッケージ標準のメトリックに準拠するようにした[mkpkana.pl, tfm, vf]
+v1.1-->v1.1.1(2003/11/25)
+・redeffont.styにおいて{j, t}book.clsを使った場合にコンパイルできなかった不具合を修正[redeffont.sty]
+v1.1b8-->v1.1(2003/11/17)
+・丸ゴシックのファミリーに切り替える\textmgコマンドを追加[otf.sty]
+v1.1b8-->v1.1b9, v1.0.4-->v1.0.5(2003/11/3)
+・フォント名を実際の物に合わせた[morisawax.map(for dvipdfmx)]
+・ヒラギノ明朝体W2のエントリを追加[hiraginox.map(for dvipdfmx), hiragino.map(for udvips)]
+v1.1b7-->v1.1b8, v1.0.3-->v1.0.4(2003/11/2)
+・redeffont.styで\headfontを再定義しても,正しく置き変わらなかった不具合を修正[redeffont.sty]
+v1.1b6-->v1.1b7(2003/10/31)
+・縦組み用のVFでコンマ,ピリオドを句読点に変更する機能の修正[mkjvf, vf]
+v1.1b5-->v1.1b6(2003/10/27)
+・nmlminr-vなどでミニュートへの変換の際のフォント名を取得できていなかったのを修正[mkjvf, vf]
+v1.1b4-->v1.1b5(2003/10/27)
+・property list filesの文字コードをJISに変更[basepl]
+縦組み用のVFでクォーテーションマークをミニュートに変更する機能の修正[mkjvf, vf]
+v1.1b3-->v1.1b4(2003/10/25)
+・縦組み用のVFでクォーテーションマークをミニュートに変更する機能の修正[mkjvf, vf]
+・縦組み用のVFでコンマ,ピリオドを句読点に変更[mkjvf, vf]
+v1.1b2-->v1.1b3(2003/10/25)
+・mkjvfを小仮名が作成できるように変更[mkjvf]
+v1.1b-->v1.1b2(2003/10/24)
+・縦組み用のVFでクォーテーションマークをミニュートに変更[mkjvf, vf]
+v1.0.2-->v1.1b(2003/10/22)
+・JFMにおいて0.962216倍していたのをスタイルファイル側でスケールするように修正[mkjvf, vf, tfm]
+・多言語用のフォントがjsclassesに対応しわすれていたのを修正[mlutf.sty]
+・extrafontsを取り込んだ,ヒラギノ明朝W2用のvf, tfmを追加[otf.sty, vf, tfm]
+v1.0-->v1.0.2(2003/9/03)
+・横/縱組専用仮名,およびルビ専用仮名が縮小されてしまっていたバグを修正.[mkjvf, vf]
+v1.0-->v1.0.1(2003/8/18)
+・クォーテーションマークがずれるバグを修正.[mkjvf, vf]
+v1.0b5-->v1.0(2003/5/1)
+・windows用のバッチファイルの名称を変更
+・mkjvfを最新の物にアップデート
+v1.0b4-->v1.0b5(2003/3/25)
+・hyperref.styが読み込まれている場合,\UTFコマンドなどで指定された文字に対してoutlineファイルへの
+ 書き出しが\0xXXXXという形で書き出されるようになりました.[ajmacros.sty, otf.sty, mlutf.sty]
+v1.0b3-->v1.0b4(2003/3/25)
+・hyperref.styが読み込まれている場合の変更を取りやめました.[ajmacros.sty, otf.sty]
+v1.0b2-->v1.0b3(2003/3/24)
+・hyperref.styが読み込まれている場合,\UTF{XXXX}で指定された部分を
+ $XXXXという形式でoutlineファイルに書き出すように変更[otf.sty]
+・\UTFMコマンドを新設,\UTFM用のVF, TFMを生成するようにしました.
+ それに伴い,フォントマップの例を変更しました.[mlutf.sty, vf, tfm, fontmap]
+・hyperref.styが読み込まれている場合,\ajVarがoutファイルに書き出されるとき
+ 引数が書き出されるようになりました.[ajmacro.sty]
+v1.0b1-->v1.0b2(2003/3/17)
+・mkutfvf.plのバグを修正.日本語以外には必要ないVFまで作成していました.[mkutfvf.pl]
+v1.0b0-->v1.0b1(2003/3/17)
+・mkjvfの余分なコードを消去[mkjvf]
diff --git a/language/japanese/japanese-otf/script/glyphdata b/language/japanese/japanese-otf/script/glyphdata
new file mode 100644
index 0000000000..4963799176
--- /dev/null
+++ b/language/japanese/japanese-otf/script/glyphdata
Binary files differ
diff --git a/language/japanese/japanese-otf/script/mkaltutfvf.pl b/language/japanese/japanese-otf/script/mkaltutfvf.pl
new file mode 100644
index 0000000000..44e78e1fe3
--- /dev/null
+++ b/language/japanese/japanese-otf/script/mkaltutfvf.pl
@@ -0,0 +1,118 @@
+open(GLYPH, "<glyphdata")||open(GLYPH, "<script/glyphdata");
+binmode(GLYPH);
+@glyph_sub_table=();
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+closedir(OVP);
+closedir(VF);
+
+&make_glyph_substitute_array;
+&make_uni_vf;
+
+#
+# dfn of sub rtns.
+#
+sub make_glyph_substitute_array {
+ for ($j=0x0000; $j<=0xffff; $j=$j+2){
+ read(GLYPH, $hex_data, 1);
+ $hex_data= unpack("C", $hex_data);
+ $high=$hex_data >> 4;
+ $low=$hex_data-($high*16);
+ &write_cjkt($high);
+ &write_cjkt($low);
+ }
+}
+sub make_uni_vf {
+ for ($k=0; $k<=1; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
+ elsif ($k==6){$face="ge";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ for ($first_hex=0x0; $first_hex <= 0xf; $first_hex++){
+ $filename="utf$face".sprintf("%x",$first_hex)."-$dir";
+ open(OVP, ">ovp/$filename.ovp")||die "$!";
+ &fonthead;
+ for ($l=0; $l<=3; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";} elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+ print OVP "(MAPFONT D $l\n (FONTNAME otf-u$lang$face-$dir)\n";
+ &fontfoot;
+ }
+ &writechar;
+ close(OVP);
+ system("ovp2ovf ovp/$filename.ovp vf/$filename.vf vf/$filename.ofm");
+ unlink "vf/$filename.ofm";
+ }
+ }
+ }
+}
+sub fonthead {
+print OVP <<END_OF_DATA;
+(VTITLE JVF for UTF16)
+(OFMLEVEL D 0)
+(DESIGNSIZE R 10.000000)
+(CHECKSUM O 0)
+END_OF_DATA
+}
+
+sub fontfoot {
+print OVP <<END_OF_DATA;
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.000000)
+ )
+END_OF_DATA
+}#2003/10/22 FONTAT 0.962216->1.0
+sub writechar {
+ for ($ku=1; $ku <= 79; $ku++){#2002/1/27 120->79
+ for ($ten=1; $ten <= 94; $ten++){
+ if ($ku>=16 && $ku<=79 && $ten>=16 && $ten<=79){
+ &printchar($first_hex,$ku,$ten);
+ } else {
+ &printgeta($first_hex,$ku,$ten);
+ }
+ }
+ }
+}
+
+sub printchar {
+ $jiscode=($_[1]+0x20)*256+($_[2]+0x20);
+ $unicode=$_[0]*4096+($_[1]-16)*64+($_[2]-16);
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ print OUT " (CHARWD R 1.0)\n";#2003/10/22 CHARWD 0.962216->1.0
+ print OVP " (MAP\n";
+ &write_map_font;
+ printf OVP " (SETCHAR H %X)\n", $unicode;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+
+sub printgeta {
+ $jiscode=($_[1]+0x20)*256+($_[2]+0x20);
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ print OUT " (CHARWD R 1.0)\n";#2003/10/22 CHARWD 0.962216->1.0
+ print OVP " (MAP\n";
+ print OVP " (SETCHAR H 3013)\n";
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub write_map_font{
+ if ($glyph_sub_table[$unicode] eq "c"){
+ print OVP " (SELECTFONT D 2)\n";
+ }elsif($glyph_sub_table[$unicode] eq "t"){
+ print OVP " (SELECTFONT D 3)\n";
+ }elsif($glyph_sub_table[$unicode] eq "k"){
+ print OVP " (SELECTFONT D 1)\n";
+ }
+}
+sub write_cjkt{
+ if ($_[0]>=8 || $_[0]==0){
+ push(@glyph_sub_table,"j");
+ }elsif(4<=$_[0] && $_[0]<8){
+ push(@glyph_sub_table,"c");
+ }elsif(2<=$_[0] && $_[0]<4){
+ push(@glyph_sub_table,"t");
+ }elsif($_[0]==1){
+ push(@glyph_sub_table,"k");
+ }
+}
diff --git a/language/japanese/japanese-otf/script/mkcidofm.pl b/language/japanese/japanese-otf/script/mkcidofm.pl
new file mode 100644
index 0000000000..5938984b2f
--- /dev/null
+++ b/language/japanese/japanese-otf/script/mkcidofm.pl
@@ -0,0 +1,66 @@
+opendir(OPLD, "opl") || mkdir("opl",0755) || die "cannot mkdir opl";
+opendir(OFMD, "ofm") || mkdir("ofm",0755) || die "cannot mkdir ofm";
+$font_at=1.0;
+@font_base_name=("cjmr", "cjgr", "cjmb", "cjgb", "cjmgr", "cjml", "cjge");
+for ($d=0; $d<=1; $d++){
+ if ($d==0){$dir="h";}elsif($d==1){$dir="v";}
+ foreach $base_name(@font_base_name){
+ $font_name="otf-$base_name-$dir";
+ open(OPL, ">opl/$font_name.opl") || die "cannot make file";
+ print OPL "(OFMLEVEL D 1)\n";
+ print OPL "(FONTDIR TL)\n";
+ print OPL "(FAMILY HIRAMIN)\n";
+ print OPL "(FACE F MRR)\n";
+ print OPL "(CODINGSCHEME UNSPECIFIED)\n";
+ print OPL "(DESIGNSIZE R 10.0)\n";
+ print OPL "(COMMENT DESIGNSIZE IS IN POINTS)\n";
+ print OPL "(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)\n";
+ print OPL "(CHECKSUM H 0)\n";
+ print OPL "(SEVENBITSAFEFLAG FALSE)\n";
+ print OPL "(FONTDIMEN\n";
+ print OPL " (SLANT R 0.0)\n";
+ print OPL " (SPACE R 0.0)\n";
+ printf OPL " (STRETCH R %f)\n", $font_at/10;
+ print OPL " (SHRINK R 0.0)\n";
+ printf OPL " (XHEIGHT R %f)\n", $font_at;
+ printf OPL " (QUAD R %f)\n", $font_at;
+ print OPL " )\n";
+ for($cidcode=0; $cidcode<=23059; $cidcode++){
+ if ($dir eq "h"){
+ if (($cidcode >= 231) && ($cidcode <= 632)){
+ $width=0.5;
+ }elsif(($cidcode == 8718) || ($cidcode == 8719)){
+ $width=0.5;
+ }elsif((12063 <= $cidcode) && ($cidcode <= 12087)){
+ $width=0.5;
+ }elsif((9738 <= $cidcode) && ($cidcode <= 9757)){
+ $width=0.25;
+ }elsif((9758 <= $cidcode) && ($cidcode <= 9778)){
+ $width=0.333333;
+ }else{$width=1.0;}
+ }elsif($dir eq "v"){
+ if ((8950 <= $cidcode) && ($cidcode <= 9353)){
+ $width=0.5;
+ }elsif((13254 <= $cidcode) && ($cidcode <= 13273)){
+ $width=0.25;
+ }elsif((13274 <= $cidcode) && ($cidcode <= 13294)){
+ $width=0.333333;
+ }else{$width=1.0;}
+ }
+ if ($dir eq "h"){
+ $accender=0.88;
+ $decender=0.12;
+ }elsif($dir eq "v"){
+ $accender=0.5;
+ $decender=0.5;
+ }
+ printf OPL "(CHARACTER D %d\n", $cidcode;
+ printf OPL " (CHARWD R %f)\n", $width*$font_at;
+ printf OPL " (CHARHT R %f)\n", $font_at*$accender ;
+ printf OPL " (CHARDP R %f)\n", $font_at*$decender;
+ print OPL " )\n";
+ }
+ close(OPL);
+ system("opl2ofm opl/$font_name.opl ofm/$font_name.ofm")
+ }
+}
diff --git a/language/japanese/japanese-otf/script/mkcidvf.pl b/language/japanese/japanese-otf/script/mkcidvf.pl
new file mode 100644
index 0000000000..1bf1cd222e
--- /dev/null
+++ b/language/japanese/japanese-otf/script/mkcidvf.pl
@@ -0,0 +1,105 @@
+#!/usr/bin/perl
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+&makevf;
+
+sub makevf {
+ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
+ elsif ($k==6){$face="ge";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ $cidcode=0;
+ for ($first_hex=0x0; $first_hex <= 0x5; $first_hex++){
+ $filename="cidj$face".sprintf("%x",$first_hex)."-$dir";
+ open(OUT, ">ovp/$filename.ovp")||die "$!";
+ &fonthead;
+ print OUT " (FONTNAME otf-cj$face-$dir)\n";
+ &fontfoot;
+ &writechar;
+ close(OUT);
+ system("ovp2ovf ovp/$filename.ovp vf/$filename.vf vf/$filename.ofm");
+ unlink "vf/$filename.ofm";
+ }
+ }
+ }
+}
+
+sub fonthead {
+print OUT <<END_OF_DATA;
+(VTITLE JVF for Adobe-Japan1-7)
+(OFMLEVEL D 0)
+(DESIGNSIZE R 10.000000)
+(CHECKSUM O 0)
+(MAPFONT D 0
+END_OF_DATA
+}
+
+sub fontfoot {
+print OUT <<END_OF_DATA;
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.000000)
+ )
+END_OF_DATA
+}#2003/10/22 FONTAT 1.0->1.0
+sub printchar {
+ $jiscode=($_[1]+0x20)*256+($_[2]+0x20);
+ if ($dir eq "h"){
+ if (($cidcode >= 231) && ($cidcode <= 632)){
+ $width=0.5;
+ }elsif(($cidcode == 8718) || ($cidcode == 8719)){
+ $width=0.5;
+ }elsif((12063 <= $cidcode) && ($cidcode <= 12087)){
+ $width=0.5;
+ }elsif((9738 <= $cidcode) && ($cidcode <= 9757)){
+ $width=0.25;
+ }elsif((9758 <= $cidcode) && ($cidcode <= 9778)){
+ $width=0.333333;
+ }else{$width=1.0;}
+ }elsif($dir eq "v"){
+ if (((8950 <= $cidcode) && ($cidcode <= 9353)) || ((13295 <= $cidcode) && ($cidcode <= 13319))){
+ $width=0.5;
+ }elsif((10185 <= $cidcode) && ($cidcode <= 10195)){
+ $width=0.5;
+ }elsif((13254 <= $cidcode) && ($cidcode <= 13273)){
+ $width=0.25;
+ }elsif((13274 <= $cidcode) && ($cidcode <= 13294)){
+ $width=0.333333;
+ }else{$width=1.0;}
+ }
+ printf OUT "(CHARACTER H %X\n", $jiscode;
+ printf OUT " (CHARWD R %f)\n", $width;
+ print OUT " (MAP\n";
+ printf OUT " (SETCHAR H %X)\n", $cidcode;
+ if (($dir eq "v")&&($width!=1.0)){
+ $correction=1.0-$width;
+ printf OUT " (MOVERIGHT R -%f)\n", $correction;
+ }
+ print OUT " )\n";
+ print OUT " )\n";
+}
+
+sub printgeta {
+ $jiscode=($_[1]+0x20)*256+($_[2]+0x20);
+ printf OUT "(CHARACTER H %X\n", $jiscode;
+ print OUT " (CHARWD R 1.0)\n";
+ print OUT " (MAP\n";
+ print OUT " (SETCHAR H 0)\n";
+ print OUT " )\n";
+ print OUT " )\n";
+}
+
+sub writechar {
+ for ($ku=1; $ku <= 79; $ku++){
+ for ($ten=1; $ten <= 94; $ten++){
+ if ($ku>=16 && $ku<=79 && $ten>=16 && $ten<=79){
+ &printchar($first_hex,$ku,$ten);
+ $cidcode++;
+ } else {
+ &printgeta($first_hex,$ku,$ten);
+ }
+ }
+ }
+}
diff --git a/language/japanese/japanese-otf/script/mkjp04tfmvf.pl b/language/japanese/japanese-otf/script/mkjp04tfmvf.pl
new file mode 100644
index 0000000000..5e09925da4
--- /dev/null
+++ b/language/japanese/japanese-otf/script/mkjp04tfmvf.pl
@@ -0,0 +1,104 @@
+#!/usr/bin/perl
+@tex_tfm_h=(0x00, 0x0B, 0x00, 0x01, 0x00, 0x2B, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x0E, 0x54, 0x45, 0x58, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x20, 0x54, 0x45, 0x58, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4F, 0x54, 0x46, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x14, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEB, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x33, 0x33, 0x00, 0x02, 0x00, 0x00);
+@tex_tfm_v=(0x00, 0x09, 0x00, 0x01, 0x00, 0x2B, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x0E, 0x54, 0x45, 0x58, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x20, 0x54, 0x45, 0x58, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4F, 0x54, 0x46, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x33, 0x33, 0x00, 0x02, 0x00, 0x00);
+@dvips_tfm_h=(0x00, 0x0B, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x14, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEB, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+@dvips_tfm_v=(0x00, 0x09, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+
+opendir(TFM, "tfm") || mkdir("tfm",0755) || die "cannot mkdir tfm";
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+&make_utf_tfm;
+&makejvf;
+
+sub make_utf_tfm {
+ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
+ elsif ($k==6){$face="ge";}
+ for ($l=0; $l<=0; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ $varfilename="otf-u$lang$face"."n-$dir";
+ open(DVIPSTFM,">tfm/$varfilename.tfm") || die "Can't make \'tfm/$varfilename.tfm\'!\n";
+ if ($i==0) {
+ foreach $binary(@dvips_tfm_h) {$_ = pack("C", $binary);print DVIPSTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@dvips_tfm_v) {$_ = pack("C", $binary);print DVIPSTFM "$_";}
+ }
+ close(DVIPSTFM);
+ for ($first_hex=0x0; $first_hex <= 0xf; $first_hex++){
+ $filename="utf$lang$face"."n".sprintf("%x",$first_hex)."-$dir";
+ open(TEXTFM,">tfm/$filename.tfm") || die "Can't make \'tfm/$filename.tfm\'!\n";
+ if ($i==0) {
+ foreach $binary(@tex_tfm_h) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@tex_tfm_v) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }
+ close(TEXTFM);
+ }
+ }
+ }
+ }
+}
+
+sub makejvf {
+ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
+ elsif ($k==6){$face="ge";}
+ for ($l=0; $l<=0; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ for ($first_hex=0x0; $first_hex <= 0xf; $first_hex++){
+ $filename="utf$lang$face"."n".sprintf("%x",$first_hex)."-$dir";
+ open(OUT, ">ovp/$filename.ovp")||die "$!";
+ &fonthead;
+ print OUT " (FONTNAME otf-u$lang$face"."n-$dir)\n";
+ &fontfoot;
+ &writechar($first_hex);
+ close(OUT);
+ system("ovp2ovf ovp/$filename.ovp vf/$filename.vf vf/$filename.ofm");
+ unlink "vf/$filename.ofm";
+ }
+ }
+ }
+ }
+}
+
+sub fonthead {
+print OUT <<END_OF_DATA;
+(VTITLE JVF for UTF16)
+(OFMLEVEL D 0)
+(DESIGNSIZE R 10.000000)
+(CHECKSUM O 0)
+(MAPFONT D 0
+END_OF_DATA
+}
+
+sub fontfoot {
+print OUT <<END_OF_DATA;
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.000000)
+ )
+END_OF_DATA
+}
+
+sub writechar {
+ ($hex) = @_;
+ for ($ku=1; $ku <= 79; $ku++){
+ for ($ten=1; $ten <= 94; $ten++){
+ $jis=sprintf("%X", $ku*256 + $ten + 0x2020);
+ if ($ku>=16 && $ku<=79 && $ten>=16 && $ten<=79){
+ $uni=sprintf("%X", $hex*4096 + ($ku-16)*64 + ($ten-16));
+ } else {
+ $uni="3013";
+ }
+ print OUT "(CHARACTER H $jis (CHARWD R 1.0) (MAP (SETCHAR H $uni)))\n";
+ }
+ }
+}
diff --git a/language/japanese/japanese-otf/script/mkmlcidvf.pl b/language/japanese/japanese-otf/script/mkmlcidvf.pl
new file mode 100644
index 0000000000..2019b020cb
--- /dev/null
+++ b/language/japanese/japanese-otf/script/mkmlcidvf.pl
@@ -0,0 +1,114 @@
+#!/usr/bin/perl
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+&makevf;
+
+sub makevf {
+ for ($l=1; $l<=3; $l++){
+ if ($l==1){$lang="c";$max_hex=7;}elsif ($l==2){$lang="k";$max_hex=4;}elsif ($l==3){$lang="t";$max_hex=4;}
+ for ($k=0; $k<=1; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ $cidcode=0;
+ for ($first_hex=0x0; $first_hex <= $max_hex; $first_hex++){
+ $filename="cid$lang$face".sprintf("%x",$first_hex)."-$dir";
+ open(OUT, ">ovp/$filename.ovp")||die "$!";
+ &fonthead;
+ print OUT " (FONTNAME otf-c$lang$face-$dir)\n";
+ &fontfoot;
+ &writechar;
+ close(OUT);
+ system("ovp2ovf ovp/$filename.ovp vf/$filename.vf vf/$filename.ofm");
+ unlink "vf/$filename.ofm";
+ }
+ }
+ }
+ }
+}
+
+sub fonthead {
+if ($lang eq "c"){
+ print OUT "(VTITLE JVF for Adobe-GB1-5)\n"
+}elsif ($lang eq "t"){
+ print OUT "(VTITLE JVF for Adobe-CNS1-7)\n"
+}elsif ($lang eq "k"){
+ print OUT "(VTITLE JVF for Adobe-Korea1-2)\n"
+}
+print OUT <<END_OF_DATA;
+(OFMLEVEL D 0)
+(DESIGNSIZE R 10.000000)
+(CHECKSUM O 0)
+(MAPFONT D 0
+END_OF_DATA
+}
+
+sub fontfoot {
+print OUT <<END_OF_DATA;
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.000000)
+ )
+END_OF_DATA
+}#2003/10/22 FONTAT 1.0->1.0
+sub printchar {
+ $jiscode=($_[1]+0x20)*256+($_[2]+0x20);
+# &determine_width;
+ $width=1.0;
+ printf OUT "(CHARACTER H %X\n", $jiscode;
+ printf OUT " (CHARWD R %f)\n", $width;
+ print OUT " (MAP\n";
+ printf OUT " (SETCHAR H %X)\n", $cidcode;
+ if (($dir eq "v")&&($width!=1.0)){
+ $correction=1.0-$width;
+ printf OUT " (MOVERIGHT R -%f)\n", $correction;
+ }
+ print OUT " )\n";
+ print OUT " )\n";
+}
+
+sub determine_width{
+ if ($lang eq "c"){#simplified chinese
+ if ($dir eq "h"){
+ if ($cidcode==0){$width=0.5;}
+ }elsif($dir eq "v"){
+ if ($cidcode==0){$width=0.5;}
+ }
+ }elsif ($lang eq "t"){#traditional chinese
+ if ($dir eq "h"){
+ if ($cidcode==0){$width=0.5;}
+ }elsif($dir eq "v"){
+ if ($cidcode==0){$width=0.5;}
+ }
+ }elsif ($lang eq "k"){#korean
+ if ($dir eq "h"){
+ if ($cidcode==0){$width=0.5;}
+ }elsif($dir eq "v"){
+ if ($cidcode==0){$width=0.5;}
+ }
+ }
+ if($width==0){$width=1.0;}
+}
+
+sub printgeta {
+ $jiscode=($_[1]+0x20)*256+($_[2]+0x20);
+ printf OUT "(CHARACTER H %X\n", $jiscode;
+ print OUT " (CHARWD R 1.0)\n";
+ print OUT " (MAP\n";
+ print OUT " (SETCHAR H 0)\n";
+ print OUT " )\n";
+ print OUT " )\n";
+}
+
+sub writechar {
+ for ($ku=1; $ku <= 79; $ku++){
+ for ($ten=1; $ten <= 94; $ten++){
+ if ($ku>=16 && $ku<=79 && $ten>=16 && $ten<=79){
+ &printchar($first_hex,$ku,$ten);
+ $cidcode++;
+ } else {
+ &printgeta($first_hex,$ku,$ten);
+ }
+ }
+ }
+}
diff --git a/language/japanese/japanese-otf/script/mkpkana.pl b/language/japanese/japanese-otf/script/mkpkana.pl
new file mode 100644
index 0000000000..a0f188818e
--- /dev/null
+++ b/language/japanese/japanese-otf/script/mkpkana.pl
@@ -0,0 +1,272 @@
+@min_w3=(7.11, 7.68, 7.17, 7.79, 9.90, 8.21, 8.83, 8.56, 9.14, 7.30, 7.68, 7.97, 8.69, 8.59, 9.15, 9.53, 9.69, 8.34, 9.09, 6.76, 8.31, 9.07, 9.56, 8.05, 8.91, 8.26, 9.19, 8.07, 8.17, 9.16, 9.52, 9.52, 9.79, 8.59, 9.25, 8.94, 9.23, 8.50, 8.98, 8.81, 9.39, 9.65, 8.91, 9.30, 7.62, 8.45, 9.08, 8.94, 9.41, 9.51, 9.29, 9.13, 9.69, 9.58, 8.98, 9.27, 9.33, 9.19, 9.33, 9.36, 9.71, 9.54, 9.51, 9.14, 9.73, 9.77, 8.32, 9.07, 9.22, 9.03, 8.08, 8.68, 9.38, 8.74, 9.33, 7.64, 8.10, 8.14, 7.69, 8.20, 9.76, 8.38, 8.58, 9.24, 8.77, 9.14, 8.78, 9.13, 8.01, 8.69, 7.60, 8.20, 7.89, 8.40, 8.44, 9.23, 8.34, 8.94, 8.64, 9.39, 8.76, 9.05, 8.25, 9.06, 8.84, 9.28, 8.49, 9.10, 9.16, 9.46, 9.02, 8.99, 8.68, 9.24, 9.02, 9.44, 8.23, 9.13, 8.41, 9.32, 8.91, 9.36, 7.86, 8.44, 9.24, 8.85, 9.37, 7.25, 7.95, 8.84, 9.21, 8.11, 9.00, 7.81, 9.46, 9.58, 9.45, 8.14, 8.76, 8.66, 8.12, 9.05, 9.05, 9.68, 9.44, 9.42, 8.85, 9.14, 8.81, 8.86, 7.57, 8.56, 8.20, 9.09, 8.39, 8.95, 8.38, 9.18, 7.94, 8.37, 8.08, 7.60, 9.27, 8.46, 8.51, 7.77, 8.34, 9.19, 9.19, 8.01, 8.71, 9.06, 8.11, 8.18);
+#change : 8.82-->8.83 : 8.08-->8.09
+@min_w6=(7.54, 7.95, 7.43, 7.97, 10.00, 8.44, 9.17, 8.72, 9.46, 7.65, 8.04, 8.20, 8.95, 8.90, 9.52, 9.81, 9.93, 8.64, 9.42, 7.04, 8.52, 9.35, 9.75, 8.30, 9.08, 8.61, 9.53, 8.51, 8.62, 9.44, 9.63, 9.76, 9.92, 8.93, 9.49, 9.25, 9.44, 8.77, 9.25, 8.97, 9.71, 9.80, 9.11, 9.50, 7.89, 8.72, 9.42, 9.18, 9.67, 9.73, 9.57, 9.45, 9.79, 9.77, 9.33, 9.49, 9.53, 9.44, 9.59, 9.59, 9.97, 9.84, 9.82, 9.49, 9.90, 9.92, 8.62, 9.38, 9.57, 9.36, 8.34, 8.93, 9.62, 8.95, 9.64, 7.85, 8.41, 8.39, 8.09, 8.55, 9.96, 8.63, 8.83, 9.58, 9.12, 9.32, 9.14, 9.39, 8.28, 9.01, 7.78, 8.43, 8.24, 8.67, 8.63, 9.50, 8.57, 9.26, 8.90, 9.53, 9.19, 9.40, 8.60, 9.37, 9.05, 9.42, 8.83, 9.30, 9.44, 9.68, 9.22, 9.22, 8.96, 9.48, 9.40, 9.71, 8.49, 9.30, 8.78, 9.56, 9.27, 9.64, 8.12, 8.73, 9.43, 9.20, 9.58, 7.60, 8.16, 9.22, 9.52, 8.42, 9.27, 8.17, 9.77, 9.76, 9.71, 8.42, 9.00, 8.90, 8.46, 9.30, 9.27, 9.95, 9.77, 9.77, 9.19, 9.39, 9.24, 9.17, 7.90, 8.87, 8.55, 9.41, 8.69, 9.24, 8.61, 9.57, 8.23, 8.74, 8.41, 7.91, 9.69, 8.80, 8.95, 8.09, 8.67, 9.50, 9.51, 8.39, 9.03, 9.34, 8.33, 8.39);
+#@min_w6_orig=(7.54, 7.95, 7.43, 7.97, 10.00, 8.44, 9.17, 8.72, 9.46, 7.65, 8.04, 8.20, 8.95, 8.90, 9.52, 9.81, 9.93, 8.64, 9.42, 7.04, 8.52, 9.35, 9.75, 8.30, 9.08, 8.61, 9.53, 8.51, 8.62, 9.44, 9.63, 9.76, 9.92, 8.93, 9.49, 9.25, 9.44, 8.77, 9.25, 8.97, 9.71, 9.80, 9.11, 9.50, 7.89, 8.72, 9.42, 9.18, 9.67, 9.73, 9.57, 9.45, 9.79, 9.77, 9.33, 9.49, 9.53, 9.44, 9.59, 9.59, 9.97, 9.84, 9.82, 9.49, 9.90, 9.92, 8.62, 9.38, 9.57, 9.36, 8.34, 8.93, 9.62, 8.95, 9.64, 7.85, 8.41, 8.39, 8.09, 8.55, 9.96, 8.63, 8.82, 9.58, 9.12, 9.32, 9.14, 9.39, 8.28, 9.01, 7.78, 8.43, 8.24, 8.67, 8.63, 9.50, 8.57, 9.26, 8.90, 9.53, 9.19, 9.40, 8.60, 9.37, 9.05, 9.42, 8.83, 9.30, 9.44, 9.68, 9.22, 9.22, 8.96, 9.48, 9.40, 9.71, 8.49, 9.30, 8.78, 9.56, 9.27, 9.64, 8.12, 8.73, 9.43, 9.20, 9.58, 7.60, 8.16, 9.22, 9.52, 8.42, 9.27, 8.17, 9.77, 9.76, 9.71, 8.42, 9.00, 8.90, 8.46, 9.30, 9.27, 9.95, 9.77, 9.77, 9.19, 9.39, 9.24, 9.17, 7.90, 8.87, 8.55, 9.41, 8.69, 9.24, 8.61, 9.57, 8.23, 8.74, 8.41, 7.91, 9.69, 8.80, 8.95, 8.08, 8.67, 9.50, 9.51, 8.39, 9.03, 9.34, 8.33, 8.39);
+@goth_w3=(7.19, 7.69, 7.23, 7.72, 10.00, 8.56, 9.18, 8.67, 9.30, 8.08, 8.51, 8.34, 9.14, 8.77, 9.37, 9.49, 9.68, 8.87, 9.49, 7.64, 8.34, 9.16, 9.66, 8.37, 8.90, 8.71, 8.97, 8.58, 8.65, 9.17, 9.53, 9.44, 9.73, 9.27, 9.40, 9.22, 9.28, 8.83, 8.92, 8.66, 9.26, 9.54, 8.93, 9.26, 8.30, 8.56, 9.45, 9.16, 9.51, 9.67, 9.35, 9.44, 9.73, 9.66, 9.26, 9.48, 9.39, 9.40, 9.61, 9.51, 9.69, 9.64, 9.50, 9.48, 9.79, 9.72, 8.98, 9.38, 9.33, 9.27, 8.82, 8.72, 9.25, 8.78, 9.41, 8.09, 8.63, 8.59, 8.33, 8.86, 9.62, 8.70, 8.82, 9.46, 9.02, 9.34, 9.05, 9.20, 8.37, 9.00, 8.26, 8.91, 8.40, 8.81, 8.63, 9.36, 8.66, 9.18, 9.04, 9.37, 9.27, 9.31, 8.68, 9.55, 9.28, 9.52, 8.88, 9.40, 9.26, 9.62, 8.94, 9.42, 9.06, 9.50, 9.17, 9.54, 8.47, 9.04, 8.75, 9.67, 9.25, 9.55, 8.15, 8.86, 9.41, 9.22, 9.64, 8.02, 8.26, 9.13, 9.23, 8.46, 9.23, 8.40, 9.45, 9.63, 9.53, 8.60, 9.23, 9.15, 8.57, 9.27, 9.11, 9.62, 9.56, 9.56, 9.46, 9.51, 9.50, 8.99, 8.39, 9.20, 8.64, 9.42, 8.49, 9.16, 8.43, 9.22, 8.44, 8.91, 8.71, 8.16, 9.46, 8.61, 9.26, 8.32, 8.71, 9.47, 9.32, 8.49, 8.85, 9.33, 8.51, 8.63);
+@goth_w6=(7.49, 8.00, 7.53, 8.09, 10.00, 8.77, 9.41, 8.95, 9.52, 8.27, 8.74, 8.56, 9.33, 9.02, 9.62, 9.72, 9.82, 9.09, 9.49, 7.92, 8.50, 9.37, 9.82, 8.65, 9.00, 9.02, 9.30, 8.84, 8.94, 9.33, 9.66, 9.65, 9.86, 9.48, 9.64, 9.45, 9.51, 9.05, 9.16, 8.84, 9.41, 9.68, 9.12, 9.42, 8.62, 8.78, 9.66, 9.42, 9.72, 9.82, 9.69, 9.69, 9.85, 9.80, 9.52, 9.71, 9.63, 9.62, 9.78, 9.73, 9.76, 9.76, 9.73, 9.73, 9.88, 9.90, 9.24, 9.62, 9.52, 9.54, 9.10, 8.90, 9.49, 8.98, 9.63, 8.36, 8.95, 8.81, 8.59, 9.11, 9.82, 8.94, 9.07, 9.71, 9.29, 9.53, 9.33, 9.47, 8.61, 9.24, 8.44, 9.13, 8.61, 9.06, 8.83, 9.52, 8.88, 9.39, 9.33, 9.53, 9.45, 9.54, 8.96, 9.57, 9.43, 9.66, 9.15, 9.59, 9.42, 9.72, 9.22, 9.50, 9.32, 9.73, 9.36, 9.63, 8.76, 9.19, 9.00, 9.65, 9.48, 9.63, 8.40, 9.13, 9.53, 9.38, 9.67, 8.30, 8.48, 9.32, 9.42, 8.70, 9.46, 8.70, 9.66, 9.78, 9.75, 8.88, 9.41, 9.33, 8.81, 9.42, 9.31, 9.77, 9.73, 9.71, 9.67, 9.71, 9.72, 9.19, 8.64, 9.40, 8.92, 9.61, 8.73, 9.39, 8.65, 9.37, 8.72, 9.19, 8.97, 8.43, 9.64, 8.90, 9.51, 8.51, 8.97, 9.64, 9.52, 8.76, 9.12, 9.51, 8.80, 8.74);
+@maru_w4=(7.45, 8.15, 7.63, 8.08, 10.00, 8.72, 9.32, 8.97, 9.58, 8.32, 8.78, 8.61, 9.36, 8.97, 9.54, 9.58, 9.79, 9.15, 9.66, 8.04, 8.72, 9.39, 9.78, 8.88, 9.27, 9.03, 9.34, 8.91, 9.00, 9.41, 9.72, 9.61, 9.87, 9.43, 9.69, 9.37, 9.57, 9.11, 9.28, 8.83, 9.44, 9.71, 9.25, 9.50, 8.66, 8.88, 9.55, 9.38, 9.62, 9.83, 9.58, 9.56, 9.80, 9.75, 9.52, 9.62, 9.63, 9.52, 9.74, 9.74, 9.73, 9.72, 9.69, 9.62, 9.93, 9.88, 9.28, 9.57, 9.48, 9.48, 9.15, 8.90, 9.46, 9.00, 9.62, 8.45, 9.04, 8.94, 8.71, 9.12, 9.81, 9.09, 9.02, 9.66, 9.35, 9.50, 9.45, 9.39, 8.50, 9.17, 8.33, 8.96, 8.72, 9.18, 8.73, 9.36, 8.69, 9.32, 9.23, 9.55, 9.34, 9.55, 8.90, 9.67, 9.41, 9.69, 9.16, 9.55, 9.46, 9.80, 9.32, 9.74, 9.25, 9.67, 9.33, 9.63, 8.80, 9.44, 8.95, 9.73, 9.36, 9.61, 8.48, 9.04, 9.57, 9.33, 9.74, 8.57, 8.70, 9.26, 9.22, 8.79, 9.40, 8.66, 9.41, 9.56, 9.55, 8.84, 9.46, 9.40, 8.91, 9.73, 9.73, 9.66, 9.62, 9.59, 9.52, 9.69, 9.71, 9.17, 8.87, 9.39, 8.81, 9.49, 8.73, 9.31, 8.61, 9.35, 8.74, 9.22, 8.95, 8.63, 9.49, 9.01, 9.54, 8.71, 9.02, 9.57, 9.35, 8.93, 9.04, 9.66, 8.74, 8.73);
+@charwidth=([@min_w3], [@min_w6], [@goth_w3], [@goth_w6], [@maru_w4]);
+@character=("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
+@font_name=("phiraminw3-h", "phiraminw6-h", "phirakakuw3-h", "phirakakuw6-h", "phiramaruw4-h");
+@kanji_font_name=("hminr-h", "hminb-h", "hgothr-h", "hgothb-h", "hmgothr-h");
+@kana_font_name=("hiramin-w3-h", "hiramin-w6-h", "hirakaku-w3-h", "hirakaku-w6-h", "hiramaru-w4-h");
+$font_at=1.0;
+$half_width= ($font_at / 2);
+$quater_width= ($font_at / 4);
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+opendir(JPL, "pl") || mkdir("pl",0755) || die "cannot mkdir pl";
+opendir(JFM, "tfm") || mkdir("tfm",0755) || die "cannot mkdir tfm";
+closedir(OVP);
+closedir(VF);
+closedir(JPL);
+closedir(JFM);
+
+#main
+for ($i=0; $i<=4; $i++){
+ open (JPL, ">pl/$font_name[$i].pl");
+ &tfm_head_h;
+ &chars_in_type_jis;
+ &chars_in_type_prop;
+ &print_type_jis;
+ &print_type_prop;
+ &glue_kern;
+ close(JPL);
+}
+for ($i=0; $i<=4; $i++){
+ @prop_odori_h=(0x3C59, 0x3C5A, 0x3C5B, 0x3C5C, 0x3C5F);
+ $hiracode=15517;
+ $katacode=15608;
+ $prop_char_num=0;
+ open (OVP, ">ovp/$font_name[$i].ovp");
+ &fonthead;
+ &write_char;
+ close(OVP);
+}
+#
+#sub rtn
+#
+sub tfm_head_h {
+ print JPL "(FAMILY PROP KANA)\n";
+ print JPL "(FACE F MRR)\n";
+ print JPL "(CODINGSCHEME TEX KANJI TEXT)\n";
+ print JPL "(DESIGNSIZE R 10.0)\n";
+ print JPL "(CHECKSUM O 0)\n";
+ print JPL "(SEVENBITSAFEFLAG TRUE)\n";
+ print JPL "(FONTDIMEN\n";
+ print JPL " (SLANT R 0.0)\n";
+ print JPL " (SPACE R 0.0)\n";
+ printf JPL " (STRETCH R %f)\n", $font_at/10;
+ print JPL " (SHRINK R 0.0)\n";
+ printf JPL " (XHEIGHT R %f)\n", $font_at;
+ printf JPL " (QUAD R %f)\n", $font_at;
+ printf JPL " (EXTRASPACE R %f)\n", $font_at/4;
+ printf JPL " (EXTRASTRETCH R %f)\n", $font_at/5;
+ printf JPL " (EXTRASHRINK R %f)\n", $font_at/8;
+ print JPL " )\n";
+}
+sub char_foot_h {
+ printf JPL " (CHARHT R %f)\n", $font_at*0.88;
+ printf JPL " (CHARDP R %f)\n", $font_at*0.12;
+ print JPL " )\n";
+}
+sub glue_kern{
+ print JPL "(GLUEKERN\n";
+ print JPL " (LABEL O 5)\n";
+ print JPL " (KRN O 5 R 0.0)\n";
+ print JPL " (LABEL O 0)\n";
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (LABEL H %X)\n",($char+7);
+ }
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (LABEL O 1)\n";
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 2)\n";
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (LABEL O 6)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+7), $half_width, $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 4)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width+$quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R 0.0)\n", $half_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R 0.0)\n",($char+7), $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 3)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 2 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width, $quater_width;
+ printf JPL " (GLUE O 4 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+7), $quater_width, $quater_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " )\n";
+}
+sub chars_in_type_jis{
+print JPL <<END_OF_DATA;
+(CHARSINTYPE O 1
+
+ )
+(CHARSINTYPE O 2
+
+ )
+(CHARSINTYPE O 3
+
+ )
+(CHARSINTYPE O 4
+
+ )
+(CHARSINTYPE O 5
+
+ )
+(CHARSINTYPE O 6
+
+ )
+END_OF_DATA
+}
+sub print_type_jis{
+ @type_width=($font_at, $half_width, $half_width, $half_width, $half_width, $font_at, $font_at);
+ for ($k=0; $k<=6; $k++){
+ printf JPL "(TYPE H %x\n", $k;
+ printf JPL " (CHARWD R %f)\n", $type_width[$k];
+ &char_foot_h;
+ }
+}
+sub fonthead {
+ print OVP "(VTITLE Prop Kana)\n";
+ print OVP "(OFMLEVEL D 0)\n";
+ print OVP "(DESIGNSIZE R 10.000000)\n";
+ print OVP "(CHECKSUM O 0)\n";
+ print OVP "(MAPFONT D 1\n";
+ print OVP " (FONTNAME $kanji_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $kana_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+}
+sub write_char {
+ for ($ku=1; $ku<=94; $ku++){
+ for ($ten=1; $ten<=94; $ten++){
+ $jiscode=($ku+32)*256+($ten+32);
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&print_hira_char;}
+ elsif($ku==5){&print_kata_char;}else{&print_char;}
+ }
+ }
+}
+sub print_char{
+ $jiscode=($ku+32)*256+($ten+32);
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n", $font_at;
+ print OVP " (MAP\n";
+ printf OVP " (SETCHAR H %X)\n",$jiscode;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kigo_char{
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ if ($jiscode>=0x2146 && $jiscode<=0x215B){#Kakko
+ $width=$half_width;
+ } elsif ($jiscode>=0x2122 && $jiscode<=0x2128){#Kutouten
+ $width=$half_width;
+ } elsif ((0x2133 <= $jiscode && $jiscode <= 0x2136) || $jiscode == 0x213c){#odoriji
+ $width=($charwidth[$i][$prop_char_num]/10);
+ $prop_char_num++;
+ } else{
+ $width=$font_at;
+ }
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ if ((0x2133 <= $jiscode && $jiscode <= 0x2136) || $jiscode == 0x213c){#Odoriji, Cho-on
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ if (0x2126 <= $jiscode && $jiscode <= 0x2128){#colon, semicolon, nakaten
+ printf OVP " (MOVERIGHT R -%f)\n",$quater_width;}
+ if (0x2146 <= $jiscode && $jiscode <= 0x215B && ($jiscode%2)==0){#Kakko
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ if ((0x2133 <= $jiscode && $jiscode <= 0x2136) || $jiscode == 0x213c){#odoriji
+ $odorijicode= shift(@prop_odori_h);
+ printf OVP " (SETCHAR H %X)\n",$odorijicode;
+ } else {
+ printf OVP " (SETCHAR H %X)\n",$jiscode;
+ }
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_hira_char{
+ $width=($charwidth[$i][$prop_char_num]/10);
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 2)\n";
+ printf OVP " (SETCHAR H %X)\n",$hiracode;
+ print OVP " )\n";
+ print OVP " )\n";
+ $hiracode++;
+ if($ten<=83){$prop_char_num++;}
+}
+sub print_kata_char{
+ $width=($charwidth[$i][$prop_char_num]/10);
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 2)\n";
+ printf OVP " (SETCHAR H %X)\n",$katacode;
+ print OVP " )\n";
+ print OVP " )\n";
+ $katacode++;
+ $prop_char_num++;
+}
+sub chars_in_type_prop{
+ %char_width_hash=();
+ for ($j=0; $j<=$#min_w3; $j++){
+ $char_width_hash{$character[$j]}=$charwidth[$i][$j]/10;
+ }
+ $x = '-';
+ @uniq_char_width_array = grep( $_ ne $x && ($x = $_), sort values(%char_width_hash));
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ printf JPL "(CHARSINTYPE H %X\n",($j+7);
+ print JPL " ";
+ @char_in_this_type = ();
+ while (($name, $value) = each(%char_width_hash)) {
+ if ($value == $uniq_char_width_array[$j]){
+ push(@char_in_this_type, $name);
+ }
+ }
+ @char_in_this_type = sort @char_in_this_type;
+ foreach $char_in_this(@char_in_this_type){
+ print JPL "$char_in_this ";#character
+ }
+ print JPL "\n";
+ print JPL " )\n";
+ }
+}
+sub print_type_prop{
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ $char_width=$uniq_char_width_array[$j];
+ printf JPL "(TYPE H %X\n", ($j+7);
+ printf JPL " (CHARWD R %f)\n", $char_width;
+ &char_foot_h;
+ }
+} \ No newline at end of file
diff --git a/language/japanese/japanese-otf/script/mkpropofm.pl b/language/japanese/japanese-otf/script/mkpropofm.pl
new file mode 100644
index 0000000000..b697cd5192
--- /dev/null
+++ b/language/japanese/japanese-otf/script/mkpropofm.pl
@@ -0,0 +1,86 @@
+%min_w3=("1" => 3.33, "2" => 3.32, "3" => 3.39, "4" => 6.78, "5" => 6.27, "6" => 8.27, "7" => 8.05, "8" => 1.88, "9" => 3.14, "10" => 3.14, "11" => 3.92, "12" => 6.78, "13" => 3.14, "14" => 3.30, "15" => 3.14, "16" => 3.92, "17" => 5.88, "18" => 5.88, "19" => 5.88, "20" => 5.88, "21" => 5.88, "22" => 5.88, "23" => 5.88, "24" => 5.88, "25" => 5.88, "26" => 5.88, "27" => 3.14, "28" => 3.14, "29" => 5.00, "30" => 6.78, "31" => 5.00, "32" => 5.95, "33" => 8.42, "34" => 7.38, "35" => 6.64, "36" => 7.059999, "37" => 7.61, "38" => 6.33, "39" => 5.92, "40" => 7.60, "41" => 7.97, "42" => 3.52, "43" => 4.76, "44" => 7.01, "45" => 5.90, "46" => 9.29, "47" => 7.96, "48" => 7.98, "49" => 6.18, "50" => 7.98, "51" => 6.81, "52" => 5.63, "53" => 6.57, "54" => 7.69, "55" => 7.32, "56" => 10.01, "57" => 7.20, "58" => 7.17, "59" => 6.59, "60" => 3.14, "61" => 6.50, "62" => 3.14, "63" => 5.00, "64" => 5.00, "65" => 5.00, "66" => 5.45, "67" => 6.01, "68" => 5.26, "69" => 6.07, "70" => 5.35, "71" => 3.28, "72" => 5.33, "73" => 6.19, "74" => 2.95, "75" => 2.91, "76" => 5.54, "77" => 2.96, "78" => 8.99, "79" => 6.16, "80" => 5.83, "81" => 5.97, "82" => 5.93, "83" => 4.11, "84" => 4.45, "85" => 3.36, "86" => 5.93, "87" => 5.60, "88" => 7.93, "89" => 5.39, "90" => 5.47, "91" => 4.92, "92" => 3.14, "93" => 5.00, "94" => 3.14, "95" => 5.00, "96" => 2.94, "97" => 3.92, "98" => 2.94, "99" => 5.00, "100" => 5.00, "101" => 3.32, "102" => 6.27, "103" => 6.50, "104" => 1.52, "105" => 6.27, "106" => 6.27, "107" => 5.45, "108" => 4.90, "109" => 4.18, "110" => 2.55, "111" => 2.55, "112" => 5.78, "113" => 5.78, "114" => 5.00, "115" => 6.27, "116" => 6.27, "117" => 3.14, "118" => 5.98, "119" => 6.27, "120" => 2.94, "121" => 4.90, "122" => 4.90, "123" => 4.18, "124" => 9.41, "125" => 12.11, "126" => 5.95, "127" => 5.00, "128" => 5.00, "129" => 5.00, "130" => 5.00, "131" => 5.00, "132" => 5.00, "133" => 5.00, "134" => 5.00, "135" => 5.00, "136" => 5.00, "137" => 5.00, "139" => 9.69, "140" => 3.92, "141" => 5.90, "142" => 7.98, "143" => 10.21, "144" => 3.92, "145" => 8.23, "146" => 2.95, "147" => 2.96, "148" => 5.83, "149" => 8.83, "150" => 5.95, "151" => 6.78, "152" => 7.13, "153" => 6.78, "154" => 7.13, "155" => 3.55, "156" => 6.78, "157" => 3.92, "158" => 3.92, "159" => 6.27, "160" => 3.14, "161" => 9.41, "162" => 9.41, "163" => 9.41, "164" => 7.38, "165" => 7.38, "166" => 7.38, "167" => 7.38, "168" => 7.38, "169" => 7.38, "170" => 7.059999, "171" => 6.33, "172" => 6.33, "173" => 6.33, "174" => 6.33, "175" => 3.52, "176" => 3.52, "177" => 3.52, "178" => 3.52, "179" => 7.61, "180" => 7.96, "181" => 7.98, "182" => 7.98, "183" => 7.98, "184" => 7.98, "185" => 7.98, "186" => 6.78, "187" => 7.69, "188" => 7.69, "189" => 7.69, "190" => 7.69, "191" => 7.17, "192" => 6.37, "193" => 5.45, "194" => 5.45, "195" => 5.45, "196" => 5.45, "197" => 5.45, "198" => 5.45, "199" => 5.26, "200" => 5.35, "201" => 5.35, "202" => 5.35, "203" => 5.35, "204" => 2.95, "205" => 2.95, "206" => 2.95, "207" => 2.95, "208" => 5.809999, "209" => 6.16, "210" => 5.83, "211" => 5.83, "212" => 5.83, "213" => 5.83, "214" => 5.83, "215" => 6.78, "216" => 5.93, "217" => 5.93, "218" => 5.93, "219" => 5.93, "220" => 5.47, "221" => 5.97, "222" => 5.47, "223" => 5.63, "224" => 7.17, "225" => 6.59, "226" => 5.00, "227" => 4.45, "228" => 9.89, "229" => 4.92, "230" => 5.88, "231" => 5.00, "232" => 5.00, "233" => 5.00, "234" => 5.00, "235" => 5.00, "236" => 5.00, "237" => 5.00, "238" => 5.00, "239" => 5.00, "240" => 5.00, "241" => 5.00, "242" => 5.00, "243" => 5.00, "244" => 5.00, "245" => 5.00, "246" => 5.00, "247" => 5.00, "248" => 5.00, "249" => 5.00, "250" => 5.00, "251" => 5.00, "252" => 5.00, "253" => 5.00, "254" => 5.00, "255" => 5.00, "256" => 5.00, "257" => 5.00, "258" => 5.00, "259" => 5.00, "260" => 5.00, "261" => 5.00, "262" => 5.00, "263" => 5.00, "264" => 5.00, "265" => 5.00, "266" => 5.00, "267" => 5.00, "268" => 5.00, "269" => 5.00, "270" => 5.00, "271" => 5.00, "272" => 5.00, "273" => 5.00, "274" => 5.00, "275" => 5.00, "276" => 5.00, "277" => 5.00, "278" => 5.00, "279" => 5.00, "280" => 5.00, "281" => 5.00, "282" => 5.00, "283" => 5.00, "284" => 5.00, "285" => 5.00, "286" => 5.00, "287" => 5.00, "288" => 5.00, "289" => 5.00, "290" => 5.00, "291" => 5.00, "292" => 5.00, "293" => 5.00, "294" => 5.00, "295" => 5.00, "296" => 5.00, "297" => 5.00, "298" => 5.00, "299" => 5.00, "300" => 5.00, "301" => 5.00, "302" => 5.00, "303" => 5.00, "304" => 5.00, "305" => 5.00, "306" => 5.00, "307" => 5.00, "308" => 5.00, "309" => 5.00, "310" => 5.00, "311" => 5.00, "312" => 5.00, "313" => 5.00, "314" => 5.00, "315" => 5.00, "316" => 5.00, "317" => 5.00, "318" => 5.00, "319" => 5.00, "320" => 5.00, "321" => 5.00, "322" => 5.00, "323" => 5.00, "324" => 5.00, "325" => 5.00, "326" => 5.00, "327" => 5.00, "328" => 5.00, "329" => 5.00, "330" => 5.00, "331" => 5.00, "332" => 5.00, "333" => 5.00, "334" => 5.00, "335" => 5.00, "336" => 5.00, "337" => 5.00, "338" => 5.00, "339" => 5.00, "340" => 5.00, "341" => 5.00, "342" => 5.00, "343" => 5.00, "344" => 5.00, "345" => 5.00, "346" => 5.00, "347" => 5.00, "348" => 5.00, "349" => 5.00, "350" => 5.00, "351" => 5.00, "352" => 5.00, "353" => 5.00, "354" => 5.00, "355" => 5.00, "356" => 5.00, "357" => 5.00, "358" => 5.00, "359" => 5.00, "360" => 5.00, "361" => 5.00, "362" => 5.00, "363" => 5.00, "364" => 5.00, "365" => 5.00, "366" => 5.00, "367" => 5.00, "368" => 5.00, "369" => 5.00, "370" => 5.00, "371" => 5.00, "372" => 5.00, "373" => 5.00, "374" => 5.00, "375" => 5.00, "376" => 5.00, "377" => 5.00, "378" => 5.00, "379" => 5.00, "380" => 5.00, "381" => 5.00, "382" => 5.00, "383" => 5.00, "384" => 5.00, "385" => 5.00, "386" => 5.00, "387" => 5.00, "388" => 5.00, "389" => 5.00, "390" => 5.00, "391" => 5.00, "392" => 5.00, "393" => 5.00, "394" => 5.00, "395" => 5.00, "396" => 5.00, "397" => 5.00, "398" => 5.00, "399" => 5.00, "400" => 5.00, "401" => 5.00, "402" => 5.00, "403" => 5.00, "404" => 5.00, "405" => 5.00, "406" => 5.00, "407" => 5.00, "408" => 5.00, "409" => 5.00, "410" => 5.00, "411" => 5.00, "412" => 5.00, "413" => 5.00, "414" => 5.00, "415" => 5.00, "416" => 5.00, "417" => 5.00, "418" => 5.00, "419" => 5.00, "420" => 5.00, "421" => 5.00, "422" => 5.00, "423" => 5.00, "424" => 5.00, "425" => 5.00, "426" => 5.00, "427" => 5.00, "428" => 5.00, "429" => 5.00, "430" => 5.00, "431" => 5.00, "432" => 5.00, "433" => 5.00, "434" => 5.00, "435" => 5.00, "436" => 5.00, "437" => 5.00, "438" => 5.00, "439" => 5.00, "440" => 5.00, "441" => 5.00, "442" => 5.00, "443" => 5.00, "444" => 5.00, "445" => 5.00, "446" => 5.00, "447" => 5.00, "448" => 5.00, "449" => 5.00, "450" => 5.00, "451" => 5.00, "452" => 5.00, "453" => 5.00, "454" => 5.00, "455" => 5.00, "456" => 5.00, "457" => 5.00, "458" => 5.00, "459" => 5.00, "460" => 5.00, "461" => 5.00, "462" => 5.00, "463" => 5.00, "464" => 5.00, "465" => 5.00, "466" => 5.00, "467" => 5.00, "468" => 5.00, "469" => 5.00, "470" => 5.00, "471" => 5.00, "472" => 5.00, "473" => 5.00, "474" => 5.00, "475" => 5.00, "476" => 5.00, "477" => 5.00, "478" => 5.00, "479" => 5.00, "480" => 5.00, "481" => 5.00, "482" => 5.00, "483" => 5.00, "484" => 5.00, "485" => 5.00, "486" => 5.00, "487" => 5.00, "488" => 5.00, "489" => 5.00, "490" => 5.00, "491" => 5.00, "492" => 5.00, "493" => 5.00, "494" => 5.00, "495" => 5.00, "496" => 5.00, "497" => 5.00, "498" => 5.00, "499" => 5.00, "500" => 5.00, "501" => 5.00, "502" => 5.00, "503" => 5.00, "504" => 5.00, "505" => 5.00, "506" => 5.00, "507" => 5.00, "508" => 5.00, "509" => 5.00, "510" => 5.00, "511" => 5.00, "512" => 5.00, "513" => 5.00, "514" => 5.00, "515" => 5.00, "516" => 5.00, "517" => 5.00, "518" => 5.00, "519" => 5.00, "520" => 5.00, "521" => 5.00, "522" => 5.00, "523" => 5.00, "524" => 5.00, "525" => 5.00, "526" => 5.00, "527" => 5.00, "528" => 5.00, "529" => 5.00, "530" => 5.00, "531" => 5.00, "532" => 5.00, "533" => 5.00, "534" => 5.00, "535" => 5.00, "536" => 5.00, "537" => 5.00, "538" => 5.00, "539" => 5.00, "540" => 5.00, "541" => 5.00, "542" => 5.00, "543" => 5.00, "544" => 5.00, "545" => 5.00, "546" => 5.00, "547" => 5.00, "548" => 5.00, "549" => 5.00, "550" => 5.00, "551" => 5.00, "552" => 5.00, "553" => 5.00, "554" => 5.00, "555" => 5.00, "556" => 5.00, "557" => 5.00, "558" => 5.00, "559" => 5.00, "560" => 5.00, "561" => 5.00, "562" => 5.00, "563" => 5.00, "564" => 5.00, "565" => 5.00, "566" => 5.00, "567" => 5.00, "568" => 5.00, "569" => 5.00, "570" => 5.00, "571" => 5.00, "572" => 5.00, "573" => 5.00, "574" => 5.00, "575" => 5.00, "576" => 5.00, "577" => 5.00, "578" => 5.00, "579" => 5.00, "580" => 5.00, "581" => 5.00, "582" => 5.00, "583" => 5.00, "584" => 5.00, "585" => 5.00, "586" => 5.00, "587" => 5.00, "588" => 5.00, "589" => 5.00, "590" => 5.00, "591" => 5.00, "592" => 5.00, "593" => 5.00, "594" => 5.00, "595" => 5.00, "596" => 5.00, "597" => 5.00, "598" => 5.00, "599" => 5.00, "600" => 5.00, "601" => 5.00, "602" => 5.00, "603" => 5.00, "604" => 5.00, "605" => 5.00, "606" => 5.00, "607" => 5.00, "608" => 5.00, "609" => 5.00, "610" => 5.00, "611" => 5.00, "612" => 5.00, "613" => 5.00, "614" => 5.00, "615" => 5.00, "616" => 5.00, "617" => 5.00, "618" => 5.00, "619" => 5.00, "620" => 5.00, "621" => 5.00, "622" => 5.00, "623" => 5.00, "624" => 5.00, "625" => 5.00, "626" => 5.00, "627" => 5.00, "628" => 5.00, "629" => 5.00, "630" => 5.00, "631" => 5.00, "632" => 5.00, "8718" => 5.00, "8719" => 5.00, "9354" => 6.50, "9355" => 8.53, "9356" => 2.13, "9357" => 3.61, "9358" => 6.13, "9359" => 8.63, "9360" => 8.63, "9361" => 5.45, "9362" => 2.95, "9363" => 5.93, "9364" => 5.35, "9365" => 5.83, "9366" => 7.38, "9367" => 3.52, "9368" => 7.69, "9369" => 6.33, "9370" => 7.98, "9371" => 9.41, "9372" => 9.41, "9373" => 9.41, "9374" => 9.41, "9375" => 9.41, "9376" => 9.41, "9377" => 3.92, "9378" => 3.92, "9379" => 3.92, "9380" => 3.92, "9381" => 3.92, "9382" => 3.92, "9383" => 3.92, "9384" => 3.92, "9385" => 3.14, "9386" => 3.92, "9387" => 3.92, "9388" => 3.92, "9389" => 3.92, "9390" => 3.92, "9391" => 3.92, "9392" => 3.92, "9393" => 3.92, "9394" => 7.38, "9395" => 6.33, "9396" => 6.33, "9397" => 6.33, "9398" => 3.52, "9399" => 3.52, "9400" => 3.52, "9401" => 7.98, "9402" => 7.98, "9403" => 7.69, "9404" => 7.69, "9405" => 7.69, "9406" => 5.45, "9407" => 5.35, "9408" => 5.35, "9409" => 5.35, "9410" => 2.95, "9411" => 2.95, "9412" => 2.95, "9413" => 5.83, "9414" => 5.83, "9415" => 5.93, "9416" => 5.93, "9417" => 5.93, "9418" => 5.98, "9419" => 5.98, "9420" => 5.98, "9421" => 8.23, "9422" => 8.23, "9423" => 5.26, "9424" => 5.26, "9425" => 5.26, "9426" => 5.35, "9427" => 5.35, "9428" => 5.35, "9429" => 6.94, "9430" => 6.94, "9431" => 6.94, "9432" => 4.90, "9433" => 4.90, "9434" => 4.90, "9435" => 2.91, "9436" => 6.06, "9437" => 5.83, "9438" => 5.60, "9439" => 5.60, "9440" => 5.60, "9441" => 5.04, "9442" => 3.34, "9443" => 3.00, "9444" => 3.33, "9445" => 3.30, "9446" => 3.34, "9447" => 6.03, "9448" => 6.03, "9449" => 8.10, "9450" => 8.20, "9451" => 1.87, "9452" => 3.10, "9453" => 3.10, "9454" => 3.85, "9455" => 6.78, "9456" => 3.10, "9457" => 3.62, "9458" => 3.10, "9459" => 3.83, "9460" => 6.03, "9461" => 6.03, "9462" => 6.03, "9463" => 6.03, "9464" => 6.03, "9465" => 6.03, "9466" => 6.03, "9467" => 6.03, "9468" => 6.03, "9469" => 6.03, "9470" => 3.10, "9471" => 3.10, "9472" => 5.47, "9473" => 6.78, "9474" => 5.47, "9475" => 5.86, "9476" => 8.25, "9477" => 7.45, "9478" => 6.52, "9479" => 6.91, "9480" => 7.46, "9481" => 6.21, "9482" => 5.809999, "9483" => 7.45, "9484" => 7.81, "9485" => 3.46, "9486" => 4.67, "9487" => 6.95, "9488" => 5.82, "9489" => 9.09, "9490" => 7.79, "9491" => 7.82, "9492" => 6.07, "9493" => 7.81, "9494" => 6.86, "9495" => 5.52, "9496" => 6.52, "9497" => 7.53, "9498" => 7.29, "9499" => 9.969999, "9500" => 7.11, "9501" => 7.12, "9502" => 6.45, "9503" => 3.10, "9504" => 6.41, "9505" => 3.10, "9506" => 5.00, "9507" => 4.85, "9508" => 5.00, "9509" => 5.80, "9510" => 5.38, "9511" => 4.67, "9512" => 5.82, "9513" => 5.01, "9514" => 3.39, "9515" => 5.41, "9516" => 6.04, "9517" => 2.96, "9518" => 2.84, "9519" => 5.47, "9520" => 2.91, "9521" => 8.87, "9522" => 6.28, "9523" => 5.56, "9524" => 5.79, "9525" => 5.440001, "9526" => 4.51, "9527" => 4.34, "9528" => 3.33, "9529" => 5.95, "9530" => 5.32, "9531" => 7.96, "9532" => 5.96, "9533" => 5.70, "9534" => 4.47, "9535" => 3.10, "9536" => 5.00, "9537" => 3.10, "9538" => 5.00, "9539" => 2.91, "9540" => 3.83, "9541" => 2.91, "9542" => 5.00, "9543" => 5.02, "9544" => 3.29, "9545" => 6.03, "9546" => 6.03, "9547" => 1.44, "9548" => 4.94, "9549" => 6.17, "9550" => 5.45, "9551" => 4.83, "9552" => 4.23, "9553" => 2.64, "9554" => 2.64, "9555" => 5.94, "9556" => 5.97, "9557" => 5.00, "9558" => 6.15, "9559" => 6.16, "9560" => 3.10, "9561" => 5.80, "9562" => 6.03, "9563" => 2.91, "9564" => 4.83, "9565" => 4.83, "9566" => 4.23, "9567" => 9.309999, "9568" => 11.849999, "9569" => 5.83, "9570" => 5.00, "9571" => 5.00, "9572" => 5.00, "9573" => 5.00, "9574" => 5.00, "9575" => 5.00, "9576" => 5.00, "9577" => 5.00, "9578" => 5.00, "9579" => 5.00, "9580" => 5.00, "9582" => 9.53, "9583" => 3.80, "9584" => 5.82, "9585" => 7.82, "9586" => 9.89, "9587" => 3.80, "9588" => 8.09, "9589" => 2.96, "9590" => 3.03, "9591" => 5.56, "9592" => 8.679999, "9593" => 5.76, "9594" => 6.78, "9595" => 7.13, "9596" => 6.78, "9597" => 7.13, "9598" => 3.55, "9599" => 6.78, "9600" => 3.80, "9601" => 3.80, "9602" => 5.91, "9603" => 3.80, "9604" => 8.99, "9605" => 8.99, "9606" => 8.99, "9607" => 7.45, "9608" => 7.45, "9609" => 7.45, "9610" => 7.45, "9611" => 7.45, "9612" => 7.45, "9613" => 6.91, "9614" => 6.21, "9615" => 6.21, "9616" => 6.21, "9617" => 6.21, "9618" => 3.46, "9619" => 3.46, "9620" => 3.46, "9621" => 3.46, "9622" => 7.46, "9623" => 7.79, "9624" => 7.82, "9625" => 7.82, "9626" => 7.82, "9627" => 7.82, "9628" => 7.82, "9629" => 6.78, "9630" => 7.53, "9631" => 7.53, "9632" => 7.53, "9633" => 7.53, "9634" => 7.12, "9635" => 6.31, "9636" => 5.80, "9637" => 5.80, "9638" => 5.80, "9639" => 5.80, "9640" => 5.80, "9641" => 5.80, "9642" => 4.65, "9643" => 5.01, "9644" => 5.01, "9645" => 5.01, "9646" => 5.01, "9647" => 2.96, "9648" => 2.96, "9649" => 2.96, "9650" => 2.96, "9651" => 5.56, "9652" => 6.28, "9653" => 5.56, "9654" => 5.56, "9655" => 5.56, "9656" => 5.56, "9657" => 5.56, "9658" => 6.78, "9659" => 5.95, "9660" => 5.95, "9661" => 5.95, "9662" => 5.95, "9663" => 5.70, "9664" => 5.80, "9665" => 5.70, "9666" => 5.52, "9667" => 7.12, "9668" => 6.45, "9669" => 4.85, "9670" => 4.34, "9671" => 10.039999, "9672" => 4.47, "9673" => 6.03, "9674" => 6.35, "9675" => 8.61, "9676" => 2.13, "9677" => 3.61, "9678" => 6.35, "9679" => 8.93, "9680" => 8.94, "9681" => 5.80, "9682" => 2.96, "9683" => 5.95, "9684" => 5.01, "9685" => 5.56, "9686" => 7.45, "9687" => 3.46, "9688" => 7.53, "9689" => 6.21, "9690" => 7.82, "9691" => 9.00, "9692" => 8.99, "9693" => 8.99, "9694" => 8.99, "9695" => 8.99, "9696" => 8.99, "9697" => 3.80, "9698" => 3.80, "9699" => 3.80, "9700" => 3.80, "9701" => 3.80, "9702" => 3.80, "9703" => 3.80, "9704" => 3.80, "9705" => 3.80, "9706" => 3.80, "9707" => 3.80, "9708" => 3.80, "9709" => 3.80, "9710" => 3.80, "9711" => 3.80, "9712" => 3.80, "9713" => 3.80, "9714" => 7.45, "9715" => 6.21, "9716" => 6.21, "9717" => 6.21, "9718" => 3.46, "9719" => 3.46, "9720" => 3.46, "9721" => 7.82, "9722" => 7.82, "9723" => 7.53, "9724" => 7.53, "9725" => 7.53, "9726" => 5.80, "9727" => 5.01, "9728" => 5.01, "9729" => 5.01, "9730" => 2.96, "9731" => 2.96, "9732" => 2.96, "9733" => 5.56, "9734" => 5.56, "9735" => 5.95, "9736" => 5.95, "9737" => 5.95, "9738" => 2.50, "9739" => 2.50, "9740" => 2.50, "9741" => 2.50, "9742" => 2.50, "9743" => 2.50, "9744" => 2.50, "9745" => 2.50, "9746" => 2.50, "9747" => 2.50, "9748" => 2.50, "9749" => 2.50, "9750" => 2.50, "9751" => 2.50, "9752" => 2.50, "9753" => 2.50, "9754" => 2.50, "9755" => 2.50, "9756" => 2.50, "9757" => 2.50, "9758" => 3.33, "9759" => 3.33, "9760" => 3.33, "9761" => 3.33, "9762" => 3.33, "9763" => 3.33, "9764" => 3.33, "9765" => 3.33, "9766" => 3.33, "9767" => 3.33, "9768" => 3.33, "9769" => 3.33, "9770" => 3.33, "9771" => 3.33, "9772" => 3.33, "9773" => 3.33, "9774" => 3.33, "9775" => 3.33, "9776" => 3.33, "9777" => 3.33, "9778" => 3.33, "12063" => 5.00, "12064" => 5.00, "12065" => 5.00, "12066" => 5.00, "12067" => 5.00, "12068" => 5.00, "12069" => 5.00, "12070" => 5.00, "12071" => 5.00, "12072" => 5.00, "12073" => 5.00, "12074" => 5.00, "12075" => 5.00, "12076" => 5.00, "12077" => 5.00, "12078" => 5.00, "12079" => 5.00, "12080" => 5.00, "12081" => 5.00, "12082" => 5.00, "12083" => 5.00, "12084" => 5.00, "12085" => 5.00, "12086" => 5.00, "12087" => 5.00, "15444" => 3.33, "15445" => 3.33, "15446" => 3.33, "15447" => 3.33, "15448" => 3.33, "15449" => 7.11, "15450" => 7.68, "15451" => 7.17, "15452" => 7.79, "15453" => 7.69, "15454" => 8.690001, "15455" => 9.90, "15456" => 6.78, "15457" => 6.78, "15458" => 6.78, "15459" => 6.78, "15460" => 6.78, "15461" => 10.43, "15462" => 8.09, "15463" => 8.03, "15464" => 6.78, "15465" => 6.78, "15466" => 6.78, "15467" => 6.78, "15468" => 6.78, "15469" => 6.78, "15470" => 6.78, "15471" => 6.78, "15472" => 6.78, "15473" => 6.78, "15474" => 6.78, "15475" => 6.78, "15476" => 6.78, "15477" => 8.08, "15478" => 6.78, "15479" => 6.78, "15480" => 6.78, "15481" => 6.78, "15482" => 8.67, "15483" => 8.67, "15484" => 7.18, "15485" => 7.18, "15486" => 8.67, "15487" => 8.67, "15488" => 8.67, "15489" => 6.78, "15490" => 6.78, "15491" => 6.78, "15492" => 6.78, "15493" => 6.03, "15494" => 7.45, "15495" => 6.78, "15496" => 6.78, "15497" => 6.78, "15498" => 6.78, "15499" => 5.71, "15500" => 6.78, "15501" => 6.78, "15502" => 6.78, "15503" => 3.83, "15504" => 6.29, "15505" => 6.78, "15506" => 6.78, "15507" => 6.78, "15508" => 6.78, "15509" => 6.78, "15510" => 6.78, "15511" => 8.67, "15512" => 6.78, "15513" => 6.97, "15514" => 6.04, "15515" => 8.53, "15516" => 5.00, "15517" => 8.21, "15518" => 8.83, "15519" => 8.56, "15520" => 9.139999, "15521" => 7.30, "15522" => 7.68, "15523" => 7.97, "15524" => 8.690001, "15525" => 8.59, "15526" => 9.150001, "15527" => 9.53, "15528" => 9.69, "15529" => 8.34, "15530" => 9.09, "15531" => 6.76, "15532" => 8.309999, "15533" => 9.07, "15534" => 9.559999, "15535" => 8.05, "15536" => 8.91, "15537" => 8.26, "15538" => 9.190001, "15539" => 8.07, "15540" => 8.17, "15541" => 9.16, "15542" => 9.52, "15543" => 9.52, "15544" => 9.79, "15545" => 8.59, "15546" => 9.25, "15547" => 8.94, "15548" => 9.23, "15549" => 8.50, "15550" => 8.98, "15551" => 8.809999, "15552" => 9.39, "15553" => 9.65, "15554" => 8.91, "15555" => 9.30, "15556" => 7.62, "15557" => 8.450001, "15558" => 9.08, "15559" => 8.94, "15560" => 9.41, "15561" => 9.51, "15562" => 9.29, "15563" => 9.13, "15564" => 9.599999, "15565" => 9.58, "15566" => 8.98, "15567" => 9.27, "15568" => 9.33, "15569" => 9.190001, "15570" => 9.33, "15571" => 9.36, "15572" => 9.700001, "15573" => 9.54, "15574" => 9.51, "15575" => 9.139999, "15576" => 9.73, "15577" => 9.77, "15578" => 8.32, "15579" => 9.07, "15580" => 9.22, "15581" => 9.03, "15582" => 8.08, "15583" => 8.679999, "15584" => 9.38, "15585" => 8.74, "15586" => 9.33, "15587" => 7.64, "15588" => 8.10, "15589" => 8.14, "15590" => 7.69, "15591" => 8.20, "15592" => 9.76, "15593" => 8.38, "15594" => 8.58, "15595" => 9.24, "15596" => 8.77, "15597" => 9.139999, "15598" => 8.780001, "15599" => 9.13, "15600" => 8.73, "15601" => 8.75, "15602" => 8.360001, "15603" => 9.67, "15604" => 9.06, "15605" => 8.190001, "15606" => 9.49, "15607" => 8.83, "15608" => 8.01, "15609" => 8.690001, "15610" => 7.60, "15611" => 8.20, "15612" => 7.89, "15613" => 8.40, "15614" => 8.44, "15615" => 9.23, "15616" => 8.34, "15617" => 8.94, "15618" => 8.64, "15619" => 9.39, "15620" => 8.76, "15621" => 9.049999, "15622" => 8.25, "15623" => 9.06, "15624" => 8.84, "15625" => 9.28, "15626" => 8.49, "15627" => 9.10, "15628" => 9.16, "15629" => 9.46, "15630" => 9.02, "15631" => 8.99, "15632" => 8.679999, "15633" => 9.24, "15634" => 9.02, "15635" => 9.440001, "15636" => 8.23, "15637" => 9.13, "15638" => 8.41, "15639" => 9.32, "15640" => 8.91, "15641" => 9.36, "15642" => 7.86, "15643" => 8.44, "15644" => 9.24, "15645" => 8.85, "15646" => 9.37, "15647" => 7.25, "15648" => 7.95, "15649" => 8.84, "15650" => 9.21, "15651" => 8.11, "15652" => 9.00, "15653" => 7.81, "15654" => 9.46, "15655" => 9.58, "15656" => 9.45, "15657" => 8.14, "15658" => 8.76, "15659" => 8.66, "15660" => 8.12, "15661" => 9.049999, "15662" => 9.049999, "15663" => 9.68, "15664" => 9.440001, "15665" => 9.42, "15666" => 8.85, "15667" => 9.139999, "15668" => 8.809999, "15669" => 8.86, "15670" => 7.57, "15671" => 8.56, "15672" => 8.20, "15673" => 9.09, "15674" => 8.389999, "15675" => 8.95, "15676" => 8.38, "15677" => 9.18, "15678" => 7.940001, "15679" => 8.37, "15680" => 8.08, "15681" => 7.60, "15682" => 9.27, "15683" => 8.46, "15684" => 8.51, "15685" => 7.77, "15686" => 8.34, "15687" => 9.190001, "15688" => 9.190001, "15689" => 8.01, "15690" => 8.71, "15691" => 9.06, "15692" => 8.11, "15693" => 8.18, "15694" => 9.35, "15695" => 9.00, "15696" => 9.02, "15697" => 9.21, "15698" => 9.01, "15699" => 9.36, "15700" => 9.150001, "15701" => 7.73, "15702" => 7.68, "15703" => 8.389999, "15704" => 8.00, "15705" => 7.02, "15706" => 7.65, "15707" => 8.60, "15708" => 7.83, "15709" => 7.61, "15710" => 8.809999, "15711" => 8.27, "15712" => 8.40, "15713" => 7.92, "15714" => 7.80, "15715" => 7.39, "15716" => 8.59, "15717" => 8.059999, "15718" => 8.13, "15719" => 9.20, "15720" => 9.41, "15721" => 9.47, "15722" => 8.91, "15723" => 7.53, "15724" => 8.04, "15725" => 6.78, "15726" => 6.78, "15727" => 9.41, "15728" => 8.32, "15729" => 9.29, "15730" => 8.99, "15731" => 7.96, "15732" => 6.16, "15733" => 5.93, "15734" => 5.93, "15735" => 5.93, "15736" => 5.93, "15737" => 7.38, "15738" => 5.00, "15739" => 5.90, "15740" => 5.63, "15741" => 5.63, "15742" => 6.57, "15743" => 6.59, "15744" => 6.59, "15745" => 5.45, "15746" => 5.00, "15747" => 2.96, "15748" => 4.45, "15749" => 5.00, "15750" => 4.45, "15751" => 3.36, "15752" => 4.92, "15753" => 5.00, "15754" => 4.92, "15755" => 6.81, "15756" => 7.38, "15757" => 5.90, "15758" => 7.059999, "15759" => 7.059999, "15760" => 6.33, "15761" => 7.61, "15762" => 7.96, "15763" => 7.96, "15764" => 7.98, "15765" => 6.81, "15766" => 7.69, "15767" => 6.57, "15768" => 4.11, "15769" => 5.45, "15770" => 2.96, "15771" => 5.26, "15772" => 5.26, "15773" => 5.35, "15774" => 6.07, "15775" => 6.07, "15776" => 6.16, "15777" => 6.16, "15778" => 5.83, "15779" => 4.11, "15780" => 5.93, "15781" => 3.36, "15782" => 5.00, "15783" => 7.059999, "15784" => 7.60, "15785" => 7.97, "15786" => 4.76, "15787" => 5.63, "15788" => 7.69, "15789" => 5.26, "15790" => 5.33, "15791" => 6.19, "15792" => 2.91, "15793" => 4.45, "15794" => 5.93, "15795" => 8.88, "15796" => 5.40, "15797" => 3.73, "15798" => 4.27, "15799" => 6.12, "15800" => 4.11, "15801" => 3.36, "15802" => 6.10, "15803" => 6.13, "15804" => 4.03, "15805" => 4.45, "15806" => 5.22, "15807" => 4.11, "15808" => 2.76, "15809" => 3.28, "15810" => 6.16, "15811" => 3.51, "15812" => 5.47, "15813" => 5.93, "15814" => 8.87, "15815" => 5.47, "15816" => 6.21, "15817" => 4.65, "15818" => 4.65, "15819" => 6.19, "15820" => 7.98, "15821" => 4.45, "15822" => 6.01, "15823" => 6.19, "15824" => 3.42, "15825" => 6.12, "15826" => 7.60, "15827" => 3.02, "15828" => 6.00, "15829" => 5.35, "15830" => 4.90, "15831" => 5.83, "15832" => 5.45, "15833" => 8.99, "15834" => 5.97, "15835" => 5.65, "15836" => 5.98, "15837" => 7.93, "15838" => 6.19, "15839" => 4.65, "15840" => 4.65, "15841" => 5.26, "15842" => 5.05, "15843" => 4.14, "15844" => 6.09, "15845" => 0.00, "15846" => 1.45, "15847" => 1.45, "15848" => 3.00, "15849" => 0.00, "15850" => 5.00, "15851" => 4.07, "15852" => 4.07, "15853" => 4.07, "15854" => 4.07, "15855" => 4.07, "15856" => 4.15, "15857" => 4.15, "15858" => 5.00, "15859" => 5.00, "15860" => 5.00, "15861" => 5.00, "15862" => 5.00, "15863" => 5.00, "15864" => 5.00, "15865" => 5.00, "15866" => 5.00, "15867" => 1.62, "15868" => 5.00, "15869" => 5.00, "15870" => 5.00, "15871" => 5.00, "15872" => 5.00, "15873" => 5.00, "15874" => 5.00, "15875" => 5.00, "15876" => 5.00, "15877" => 5.00, "15878" => 5.00, "15879" => 3.81, "15880" => 3.83, "15881" => 6.78, "15882" => 6.78, "15883" => 5.61, "15884" => 5.63, "15885" => 2.95, "15886" => 5.90, "15887" => 8.26, "15888" => 6.55, "15889" => 5.47, "15890" => 5.35, "15891" => 5.46, "15892" => 6.37, "15893" => 4.73, "15894" => 3.71, "15895" => 2.53, "15896" => 4.72, "15897" => 2.81, "15898" => 3.32, "15899" => 1.84, "15900" => 4.91, "15901" => 6.79, "15902" => 8.75, "15903" => 6.78, "15904" => 6.78, "15905" => 8.67, "15906" => 9.049999, "15907" => 9.04, "15908" => 3.66, "15909" => 5.94, "15910" => 5.39, "15911" => 5.16, "15912" => 8.61, "15913" => 5.00, "15914" => 8.99, "15915" => 9.09, "15916" => 8.87, "15917" => 7.79, "15918" => 6.28, "15919" => 5.95, "15920" => 5.95, "15921" => 5.95, "15922" => 5.95, "15923" => 7.45, "15924" => 5.82, "15925" => 5.52, "15926" => 5.52, "15927" => 6.52, "15928" => 6.45, "15929" => 6.45, "15930" => 5.80, "15931" => 2.91, "15932" => 4.34, "15933" => 4.34, "15934" => 3.33, "15935" => 4.47, "15936" => 4.47, "15937" => 6.86, "15938" => 7.45, "15939" => 5.82, "15940" => 6.91, "15941" => 6.91, "15942" => 6.21, "15943" => 7.46, "15944" => 7.79, "15945" => 7.79, "15946" => 7.82, "15947" => 6.86, "15948" => 7.53, "15949" => 6.52, "15950" => 4.51, "15951" => 5.80, "15952" => 2.91, "15953" => 4.67, "15954" => 4.67, "15955" => 5.01, "15956" => 5.82, "15957" => 5.82, "15958" => 6.28, "15959" => 6.28, "15960" => 5.56, "15961" => 4.51, "15962" => 5.95, "15963" => 3.33, "15964" => 6.91, "15965" => 7.45, "15966" => 7.81, "15967" => 4.67, "15968" => 5.52, "15969" => 7.53, "15970" => 4.67, "15971" => 5.41, "15972" => 6.04, "15973" => 2.84, "15974" => 4.34, "15975" => 5.95);
+%min_w6=("1" => 3.33, "2" => 3.28, "3" => 3.79, "4" => 6.85, "5" => 6.40, "6" => 8.63, "7" => 8.190001, "8" => 2.07, "9" => 3.20, "10" => 3.20, "11" => 4.02, "12" => 6.85, "13" => 3.20, "14" => 3.39, "15" => 3.20, "16" => 3.94, "17" => 6.14, "18" => 6.14, "19" => 6.14, "20" => 6.14, "21" => 6.14, "22" => 6.14, "23" => 6.14, "24" => 6.14, "25" => 6.14, "26" => 6.14, "27" => 3.20, "28" => 3.20, "29" => 5.00, "30" => 6.85, "31" => 5.00, "32" => 6.26, "33" => 8.75, "34" => 7.87, "35" => 7.04, "36" => 7.41, "37" => 7.97, "38" => 6.60, "39" => 6.24, "40" => 7.85, "41" => 8.33, "42" => 3.89, "43" => 5.07, "44" => 7.58, "45" => 6.14, "46" => 9.75, "47" => 8.05, "48" => 8.15, "49" => 6.53, "50" => 8.15, "51" => 7.26, "52" => 5.94, "53" => 6.98, "54" => 7.91, "55" => 7.82, "56" => 10.50, "57" => 7.52, "58" => 7.59, "59" => 6.67, "60" => 3.20, "61" => 7.29, "62" => 3.20, "63" => 5.00, "64" => 5.00, "65" => 5.00, "66" => 5.75, "67" => 6.29, "68" => 5.440001, "69" => 6.26, "70" => 5.60, "71" => 3.61, "72" => 5.48, "73" => 6.66, "74" => 3.33, "75" => 3.25, "76" => 6.07, "77" => 3.35, "78" => 9.71, "79" => 6.63, "80" => 6.06, "81" => 6.33, "82" => 6.29, "83" => 4.55, "84" => 4.74, "85" => 3.68, "86" => 6.27, "87" => 5.94, "88" => 8.34, "89" => 5.72, "90" => 5.89, "91" => 5.08, "92" => 3.20, "93" => 5.00, "94" => 3.20, "95" => 5.00, "96" => 3.11, "97" => 3.94, "98" => 3.11, "99" => 5.00, "100" => 5.00, "101" => 3.28, "102" => 6.40, "103" => 6.90, "104" => 1.55, "105" => 6.40, "106" => 6.40, "107" => 5.65, "108" => 5.35, "109" => 4.44, "110" => 2.71, "111" => 2.71, "112" => 6.53, "113" => 6.52, "114" => 5.00, "115" => 6.40, "116" => 6.40, "117" => 3.20, "118" => 6.14, "119" => 6.40, "120" => 3.11, "121" => 5.35, "122" => 5.35, "123" => 4.44, "124" => 9.599999, "125" => 12.78, "126" => 6.26, "127" => 5.00, "128" => 5.00, "129" => 5.00, "130" => 5.00, "131" => 5.00, "132" => 5.00, "133" => 5.00, "134" => 5.00, "135" => 5.00, "136" => 5.00, "137" => 5.00, "139" => 10.26, "140" => 4.02, "141" => 6.14, "142" => 8.15, "143" => 10.83, "144" => 4.02, "145" => 8.55, "146" => 3.33, "147" => 3.35, "148" => 6.06, "149" => 9.26, "150" => 6.65, "151" => 6.85, "152" => 7.39, "153" => 6.85, "154" => 7.39, "155" => 3.57, "156" => 6.85, "157" => 4.02, "158" => 4.02, "159" => 6.40, "160" => 3.66, "161" => 9.599999, "162" => 9.599999, "163" => 9.599999, "164" => 7.87, "165" => 7.87, "166" => 7.87, "167" => 7.87, "168" => 7.87, "169" => 7.87, "170" => 7.41, "171" => 6.60, "172" => 6.60, "173" => 6.60, "174" => 6.60, "175" => 3.89, "176" => 3.89, "177" => 3.89, "178" => 3.89, "179" => 7.97, "180" => 8.05, "181" => 8.15, "182" => 8.15, "183" => 8.15, "184" => 8.15, "185" => 8.15, "186" => 6.85, "187" => 7.91, "188" => 7.91, "189" => 7.91, "190" => 7.91, "191" => 7.59, "192" => 6.86, "193" => 5.75, "194" => 5.75, "195" => 5.75, "196" => 5.75, "197" => 5.75, "198" => 5.75, "199" => 5.440001, "200" => 5.60, "201" => 5.60, "202" => 5.60, "203" => 5.60, "204" => 3.33, "205" => 3.33, "206" => 3.33, "207" => 3.33, "208" => 6.05, "209" => 6.63, "210" => 6.06, "211" => 6.06, "212" => 6.06, "213" => 6.06, "214" => 6.06, "215" => 6.85, "216" => 6.27, "217" => 6.27, "218" => 6.27, "219" => 6.27, "220" => 5.89, "221" => 6.37, "222" => 5.89, "223" => 5.94, "224" => 7.59, "225" => 6.67, "226" => 5.00, "227" => 4.74, "228" => 10.440001, "229" => 5.08, "230" => 6.12, "231" => 5.00, "232" => 5.00, "233" => 5.00, "234" => 5.00, "235" => 5.00, "236" => 5.00, "237" => 5.00, "238" => 5.00, "239" => 5.00, "240" => 5.00, "241" => 5.00, "242" => 5.00, "243" => 5.00, "244" => 5.00, "245" => 5.00, "246" => 5.00, "247" => 5.00, "248" => 5.00, "249" => 5.00, "250" => 5.00, "251" => 5.00, "252" => 5.00, "253" => 5.00, "254" => 5.00, "255" => 5.00, "256" => 5.00, "257" => 5.00, "258" => 5.00, "259" => 5.00, "260" => 5.00, "261" => 5.00, "262" => 5.00, "263" => 5.00, "264" => 5.00, "265" => 5.00, "266" => 5.00, "267" => 5.00, "268" => 5.00, "269" => 5.00, "270" => 5.00, "271" => 5.00, "272" => 5.00, "273" => 5.00, "274" => 5.00, "275" => 5.00, "276" => 5.00, "277" => 5.00, "278" => 5.00, "279" => 5.00, "280" => 5.00, "281" => 5.00, "282" => 5.00, "283" => 5.00, "284" => 5.00, "285" => 5.00, "286" => 5.00, "287" => 5.00, "288" => 5.00, "289" => 5.00, "290" => 5.00, "291" => 5.00, "292" => 5.00, "293" => 5.00, "294" => 5.00, "295" => 5.00, "296" => 5.00, "297" => 5.00, "298" => 5.00, "299" => 5.00, "300" => 5.00, "301" => 5.00, "302" => 5.00, "303" => 5.00, "304" => 5.00, "305" => 5.00, "306" => 5.00, "307" => 5.00, "308" => 5.00, "309" => 5.00, "310" => 5.00, "311" => 5.00, "312" => 5.00, "313" => 5.00, "314" => 5.00, "315" => 5.00, "316" => 5.00, "317" => 5.00, "318" => 5.00, "319" => 5.00, "320" => 5.00, "321" => 5.00, "322" => 5.00, "323" => 5.00, "324" => 5.00, "325" => 5.00, "326" => 5.00, "327" => 5.00, "328" => 5.00, "329" => 5.00, "330" => 5.00, "331" => 5.00, "332" => 5.00, "333" => 5.00, "334" => 5.00, "335" => 5.00, "336" => 5.00, "337" => 5.00, "338" => 5.00, "339" => 5.00, "340" => 5.00, "341" => 5.00, "342" => 5.00, "343" => 5.00, "344" => 5.00, "345" => 5.00, "346" => 5.00, "347" => 5.00, "348" => 5.00, "349" => 5.00, "350" => 5.00, "351" => 5.00, "352" => 5.00, "353" => 5.00, "354" => 5.00, "355" => 5.00, "356" => 5.00, "357" => 5.00, "358" => 5.00, "359" => 5.00, "360" => 5.00, "361" => 5.00, "362" => 5.00, "363" => 5.00, "364" => 5.00, "365" => 5.00, "366" => 5.00, "367" => 5.00, "368" => 5.00, "369" => 5.00, "370" => 5.00, "371" => 5.00, "372" => 5.00, "373" => 5.00, "374" => 5.00, "375" => 5.00, "376" => 5.00, "377" => 5.00, "378" => 5.00, "379" => 5.00, "380" => 5.00, "381" => 5.00, "382" => 5.00, "383" => 5.00, "384" => 5.00, "385" => 5.00, "386" => 5.00, "387" => 5.00, "388" => 5.00, "389" => 5.00, "390" => 5.00, "391" => 5.00, "392" => 5.00, "393" => 5.00, "394" => 5.00, "395" => 5.00, "396" => 5.00, "397" => 5.00, "398" => 5.00, "399" => 5.00, "400" => 5.00, "401" => 5.00, "402" => 5.00, "403" => 5.00, "404" => 5.00, "405" => 5.00, "406" => 5.00, "407" => 5.00, "408" => 5.00, "409" => 5.00, "410" => 5.00, "411" => 5.00, "412" => 5.00, "413" => 5.00, "414" => 5.00, "415" => 5.00, "416" => 5.00, "417" => 5.00, "418" => 5.00, "419" => 5.00, "420" => 5.00, "421" => 5.00, "422" => 5.00, "423" => 5.00, "424" => 5.00, "425" => 5.00, "426" => 5.00, "427" => 5.00, "428" => 5.00, "429" => 5.00, "430" => 5.00, "431" => 5.00, "432" => 5.00, "433" => 5.00, "434" => 5.00, "435" => 5.00, "436" => 5.00, "437" => 5.00, "438" => 5.00, "439" => 5.00, "440" => 5.00, "441" => 5.00, "442" => 5.00, "443" => 5.00, "444" => 5.00, "445" => 5.00, "446" => 5.00, "447" => 5.00, "448" => 5.00, "449" => 5.00, "450" => 5.00, "451" => 5.00, "452" => 5.00, "453" => 5.00, "454" => 5.00, "455" => 5.00, "456" => 5.00, "457" => 5.00, "458" => 5.00, "459" => 5.00, "460" => 5.00, "461" => 5.00, "462" => 5.00, "463" => 5.00, "464" => 5.00, "465" => 5.00, "466" => 5.00, "467" => 5.00, "468" => 5.00, "469" => 5.00, "470" => 5.00, "471" => 5.00, "472" => 5.00, "473" => 5.00, "474" => 5.00, "475" => 5.00, "476" => 5.00, "477" => 5.00, "478" => 5.00, "479" => 5.00, "480" => 5.00, "481" => 5.00, "482" => 5.00, "483" => 5.00, "484" => 5.00, "485" => 5.00, "486" => 5.00, "487" => 5.00, "488" => 5.00, "489" => 5.00, "490" => 5.00, "491" => 5.00, "492" => 5.00, "493" => 5.00, "494" => 5.00, "495" => 5.00, "496" => 5.00, "497" => 5.00, "498" => 5.00, "499" => 5.00, "500" => 5.00, "501" => 5.00, "502" => 5.00, "503" => 5.00, "504" => 5.00, "505" => 5.00, "506" => 5.00, "507" => 5.00, "508" => 5.00, "509" => 5.00, "510" => 5.00, "511" => 5.00, "512" => 5.00, "513" => 5.00, "514" => 5.00, "515" => 5.00, "516" => 5.00, "517" => 5.00, "518" => 5.00, "519" => 5.00, "520" => 5.00, "521" => 5.00, "522" => 5.00, "523" => 5.00, "524" => 5.00, "525" => 5.00, "526" => 5.00, "527" => 5.00, "528" => 5.00, "529" => 5.00, "530" => 5.00, "531" => 5.00, "532" => 5.00, "533" => 5.00, "534" => 5.00, "535" => 5.00, "536" => 5.00, "537" => 5.00, "538" => 5.00, "539" => 5.00, "540" => 5.00, "541" => 5.00, "542" => 5.00, "543" => 5.00, "544" => 5.00, "545" => 5.00, "546" => 5.00, "547" => 5.00, "548" => 5.00, "549" => 5.00, "550" => 5.00, "551" => 5.00, "552" => 5.00, "553" => 5.00, "554" => 5.00, "555" => 5.00, "556" => 5.00, "557" => 5.00, "558" => 5.00, "559" => 5.00, "560" => 5.00, "561" => 5.00, "562" => 5.00, "563" => 5.00, "564" => 5.00, "565" => 5.00, "566" => 5.00, "567" => 5.00, "568" => 5.00, "569" => 5.00, "570" => 5.00, "571" => 5.00, "572" => 5.00, "573" => 5.00, "574" => 5.00, "575" => 5.00, "576" => 5.00, "577" => 5.00, "578" => 5.00, "579" => 5.00, "580" => 5.00, "581" => 5.00, "582" => 5.00, "583" => 5.00, "584" => 5.00, "585" => 5.00, "586" => 5.00, "587" => 5.00, "588" => 5.00, "589" => 5.00, "590" => 5.00, "591" => 5.00, "592" => 5.00, "593" => 5.00, "594" => 5.00, "595" => 5.00, "596" => 5.00, "597" => 5.00, "598" => 5.00, "599" => 5.00, "600" => 5.00, "601" => 5.00, "602" => 5.00, "603" => 5.00, "604" => 5.00, "605" => 5.00, "606" => 5.00, "607" => 5.00, "608" => 5.00, "609" => 5.00, "610" => 5.00, "611" => 5.00, "612" => 5.00, "613" => 5.00, "614" => 5.00, "615" => 5.00, "616" => 5.00, "617" => 5.00, "618" => 5.00, "619" => 5.00, "620" => 5.00, "621" => 5.00, "622" => 5.00, "623" => 5.00, "624" => 5.00, "625" => 5.00, "626" => 5.00, "627" => 5.00, "628" => 5.00, "629" => 5.00, "630" => 5.00, "631" => 5.00, "632" => 5.00, "8718" => 5.00, "8719" => 5.00, "9354" => 6.52, "9355" => 8.64, "9356" => 2.34, "9357" => 4.05, "9358" => 6.88, "9359" => 9.71, "9360" => 9.77, "9361" => 5.75, "9362" => 3.33, "9363" => 6.27, "9364" => 5.60, "9365" => 6.06, "9366" => 7.87, "9367" => 3.89, "9368" => 7.91, "9369" => 6.60, "9370" => 8.15, "9371" => 9.599999, "9372" => 9.599999, "9373" => 9.599999, "9374" => 9.599999, "9375" => 9.599999, "9376" => 9.599999, "9377" => 4.02, "9378" => 4.02, "9379" => 4.02, "9380" => 4.02, "9381" => 4.02, "9382" => 4.02, "9383" => 4.02, "9384" => 4.02, "9385" => 3.66, "9386" => 4.02, "9387" => 4.02, "9388" => 4.02, "9389" => 4.02, "9390" => 4.02, "9391" => 4.02, "9392" => 4.02, "9393" => 4.02, "9394" => 7.87, "9395" => 6.60, "9396" => 6.60, "9397" => 6.60, "9398" => 3.89, "9399" => 3.89, "9400" => 3.89, "9401" => 8.15, "9402" => 8.15, "9403" => 7.91, "9404" => 7.91, "9405" => 7.91, "9406" => 5.75, "9407" => 5.60, "9408" => 5.60, "9409" => 5.60, "9410" => 3.33, "9411" => 3.33, "9412" => 3.33, "9413" => 6.06, "9414" => 6.06, "9415" => 6.27, "9416" => 6.27, "9417" => 6.27, "9418" => 6.25, "9419" => 6.25, "9420" => 6.25, "9421" => 8.55, "9422" => 8.55, "9423" => 5.440001, "9424" => 5.440001, "9425" => 5.440001, "9426" => 5.60, "9427" => 5.60, "9428" => 5.60, "9429" => 7.73, "9430" => 7.73, "9431" => 7.73, "9432" => 5.08, "9433" => 5.08, "9434" => 5.08, "9435" => 3.25, "9436" => 6.52, "9437" => 6.06, "9438" => 5.94, "9439" => 5.94, "9440" => 5.94, "9441" => 5.24, "9442" => 3.73, "9443" => 3.20, "9444" => 3.33, "9445" => 3.28, "9446" => 3.79, "9447" => 6.85, "9448" => 6.40, "9449" => 8.64, "9450" => 8.29, "9451" => 2.07, "9452" => 3.20, "9453" => 3.20, "9454" => 4.02, "9455" => 6.85, "9456" => 3.20, "9457" => 3.39, "9458" => 3.20, "9459" => 3.94, "9460" => 6.14, "9461" => 6.14, "9462" => 6.14, "9463" => 6.14, "9464" => 6.14, "9465" => 6.14, "9466" => 6.14, "9467" => 6.14, "9468" => 6.14, "9469" => 6.14, "9470" => 3.20, "9471" => 3.20, "9472" => 5.54, "9473" => 6.85, "9474" => 5.54, "9475" => 6.26, "9476" => 8.75, "9477" => 7.82, "9478" => 7.04, "9479" => 7.07, "9480" => 7.98, "9481" => 6.81, "9482" => 6.19, "9483" => 7.73, "9484" => 8.29, "9485" => 3.95, "9486" => 4.98, "9487" => 7.76, "9488" => 6.06, "9489" => 9.53, "9490" => 7.75, "9491" => 8.09, "9492" => 6.51, "9493" => 8.08, "9494" => 7.43, "9495" => 5.97, "9496" => 6.82, "9497" => 7.84, "9498" => 7.79, "9499" => 10.43, "9500" => 7.52, "9501" => 7.55, "9502" => 6.31, "9503" => 3.20, "9504" => 7.29, "9505" => 3.20, "9506" => 5.00, "9507" => 5.00, "9508" => 5.00, "9509" => 6.17, "9510" => 5.87, "9511" => 4.91, "9512" => 6.34, "9513" => 5.54, "9514" => 3.73, "9515" => 5.86, "9516" => 6.46, "9517" => 3.46, "9518" => 3.16, "9519" => 6.08, "9520" => 3.54, "9521" => 9.639999, "9522" => 6.78, "9523" => 5.809999, "9524" => 6.40, "9525" => 5.85, "9526" => 4.74, "9527" => 4.82, "9528" => 3.63, "9529" => 6.50, "9530" => 5.78, "9531" => 8.679999, "9532" => 6.35, "9533" => 6.13, "9534" => 5.16, "9535" => 3.20, "9536" => 5.00, "9537" => 3.20, "9538" => 5.00, "9539" => 3.11, "9540" => 3.94, "9541" => 3.11, "9542" => 5.00, "9543" => 6.14, "9544" => 3.28, "9545" => 6.40, "9546" => 6.90, "9547" => 1.57, "9548" => 5.809999, "9549" => 6.40, "9550" => 5.65, "9551" => 5.35, "9552" => 4.44, "9553" => 2.71, "9554" => 2.71, "9555" => 6.73, "9556" => 6.86, "9557" => 5.00, "9558" => 6.40, "9559" => 6.40, "9560" => 3.20, "9561" => 6.14, "9562" => 6.40, "9563" => 3.11, "9564" => 5.35, "9565" => 5.35, "9566" => 4.44, "9567" => 9.48, "9568" => 12.790001, "9569" => 6.26, "9570" => 5.00, "9571" => 5.00, "9572" => 5.00, "9573" => 5.00, "9574" => 5.00, "9575" => 5.00, "9576" => 5.00, "9577" => 5.00, "9578" => 5.00, "9579" => 5.00, "9580" => 5.00, "9582" => 10.06, "9583" => 4.06, "9584" => 6.06, "9585" => 8.09, "9586" => 10.82, "9587" => 4.06, "9588" => 8.40, "9589" => 3.46, "9590" => 3.60, "9591" => 5.809999, "9592" => 8.97, "9593" => 6.34, "9594" => 6.85, "9595" => 7.39, "9596" => 6.85, "9597" => 7.39, "9598" => 3.57, "9599" => 6.85, "9600" => 3.86, "9601" => 3.86, "9602" => 6.61, "9603" => 3.86, "9604" => 9.43, "9605" => 9.43, "9606" => 9.43, "9607" => 7.82, "9608" => 7.82, "9609" => 7.82, "9610" => 7.82, "9611" => 7.82, "9612" => 7.82, "9613" => 7.07, "9614" => 6.81, "9615" => 6.81, "9616" => 6.81, "9617" => 6.81, "9618" => 3.95, "9619" => 3.95, "9620" => 3.95, "9621" => 3.95, "9622" => 7.98, "9623" => 7.75, "9624" => 8.09, "9625" => 8.09, "9626" => 8.09, "9627" => 8.09, "9628" => 8.09, "9629" => 6.85, "9630" => 7.84, "9631" => 7.84, "9632" => 7.84, "9633" => 7.84, "9634" => 7.55, "9635" => 6.78, "9636" => 6.17, "9637" => 6.17, "9638" => 6.17, "9639" => 6.17, "9640" => 6.17, "9641" => 6.17, "9642" => 4.91, "9643" => 5.54, "9644" => 5.54, "9645" => 5.54, "9646" => 5.54, "9647" => 3.46, "9648" => 3.46, "9649" => 3.46, "9650" => 3.46, "9651" => 5.809999, "9652" => 6.78, "9653" => 5.809999, "9654" => 5.809999, "9655" => 5.809999, "9656" => 5.809999, "9657" => 5.809999, "9658" => 6.85, "9659" => 6.50, "9660" => 6.50, "9661" => 6.50, "9662" => 6.50, "9663" => 6.13, "9664" => 6.24, "9665" => 6.13, "9666" => 5.97, "9667" => 7.55, "9668" => 6.31, "9669" => 5.00, "9670" => 4.82, "9671" => 10.369999, "9672" => 5.16, "9673" => 6.14, "9674" => 6.80, "9675" => 8.809999, "9676" => 2.34, "9677" => 4.05, "9678" => 7.04, "9679" => 9.88, "9680" => 10.17, "9681" => 6.17, "9682" => 3.46, "9683" => 6.50, "9684" => 5.54, "9685" => 5.809999, "9686" => 7.82, "9687" => 3.95, "9688" => 7.84, "9689" => 6.81, "9690" => 8.09, "9691" => 9.43, "9692" => 9.43, "9693" => 9.43, "9694" => 9.43, "9695" => 9.43, "9696" => 9.43, "9697" => 3.86, "9698" => 3.86, "9699" => 3.86, "9700" => 3.86, "9701" => 3.86, "9702" => 3.86, "9703" => 3.86, "9704" => 3.86, "9705" => 3.86, "9706" => 3.86, "9707" => 3.86, "9708" => 3.86, "9709" => 3.86, "9710" => 3.86, "9711" => 3.86, "9712" => 3.86, "9713" => 3.86, "9714" => 7.82, "9715" => 6.81, "9716" => 6.81, "9717" => 6.81, "9718" => 3.95, "9719" => 3.95, "9720" => 3.95, "9721" => 8.09, "9722" => 8.09, "9723" => 7.84, "9724" => 7.84, "9725" => 7.84, "9726" => 6.17, "9727" => 5.54, "9728" => 5.54, "9729" => 5.54, "9730" => 3.46, "9731" => 3.46, "9732" => 3.46, "9733" => 5.809999, "9734" => 5.809999, "9735" => 6.50, "9736" => 6.50, "9737" => 6.50, "9738" => 2.50, "9739" => 2.50, "9740" => 2.50, "9741" => 2.50, "9742" => 2.50, "9743" => 2.50, "9744" => 2.50, "9745" => 2.50, "9746" => 2.50, "9747" => 2.50, "9748" => 2.50, "9749" => 2.50, "9750" => 2.50, "9751" => 2.50, "9752" => 2.50, "9753" => 2.50, "9754" => 2.50, "9755" => 2.50, "9756" => 2.50, "9757" => 2.50, "9758" => 3.33, "9759" => 3.33, "9760" => 3.33, "9761" => 3.33, "9762" => 3.33, "9763" => 3.33, "9764" => 3.33, "9765" => 3.33, "9766" => 3.33, "9767" => 3.33, "9768" => 3.33, "9769" => 3.33, "9770" => 3.33, "9771" => 3.33, "9772" => 3.33, "9773" => 3.33, "9774" => 3.33, "9775" => 3.33, "9776" => 3.33, "9777" => 3.33, "9778" => 3.33, "12063" => 5.00, "12064" => 5.00, "12065" => 5.00, "12066" => 5.00, "12067" => 5.00, "12068" => 5.00, "12069" => 5.00, "12070" => 5.00, "12071" => 5.00, "12072" => 5.00, "12073" => 5.00, "12074" => 5.00, "12075" => 5.00, "12076" => 5.00, "12077" => 5.00, "12078" => 5.00, "12079" => 5.00, "12080" => 5.00, "12081" => 5.00, "12082" => 5.00, "12083" => 5.00, "12084" => 5.00, "12085" => 5.00, "12086" => 5.00, "12087" => 5.00, "15444" => 3.33, "15445" => 3.33, "15446" => 3.33, "15447" => 3.33, "15448" => 3.33, "15449" => 7.54, "15450" => 7.95, "15451" => 7.43, "15452" => 7.97, "15453" => 8.15, "15454" => 9.03, "15456" => 6.85, "15457" => 6.85, "15458" => 6.85, "15459" => 6.85, "15460" => 6.85, "15461" => 10.690001, "15462" => 8.42, "15463" => 8.27, "15464" => 6.85, "15465" => 6.85, "15466" => 6.85, "15467" => 6.85, "15468" => 6.85, "15469" => 6.85, "15470" => 6.85, "15471" => 6.85, "15472" => 6.85, "15473" => 6.85, "15474" => 6.85, "15475" => 6.85, "15476" => 6.85, "15477" => 8.25, "15478" => 6.85, "15479" => 6.85, "15480" => 6.85, "15481" => 6.85, "15482" => 9.07, "15483" => 9.07, "15484" => 7.40, "15485" => 7.40, "15486" => 8.90, "15487" => 8.90, "15488" => 8.90, "15489" => 6.85, "15490" => 6.85, "15491" => 6.85, "15492" => 6.85, "15493" => 6.48, "15494" => 7.72, "15495" => 6.85, "15496" => 6.85, "15497" => 6.85, "15498" => 6.85, "15499" => 5.71, "15500" => 6.85, "15501" => 6.85, "15502" => 6.85, "15503" => 3.83, "15504" => 6.29, "15505" => 6.85, "15506" => 6.85, "15507" => 6.85, "15508" => 6.85, "15509" => 6.85, "15510" => 6.85, "15511" => 9.07, "15512" => 6.85, "15513" => 7.41, "15514" => 6.46, "15515" => 8.64, "15516" => 5.00, "15517" => 8.44, "15518" => 9.17, "15519" => 8.719999, "15520" => 9.46, "15521" => 7.65, "15522" => 8.04, "15523" => 8.20, "15524" => 8.95, "15525" => 8.90, "15526" => 9.52, "15527" => 9.81, "15528" => 9.929999, "15529" => 8.64, "15530" => 9.42, "15531" => 7.04, "15532" => 8.52, "15533" => 9.35, "15534" => 9.75, "15535" => 8.30, "15536" => 9.08, "15537" => 8.61, "15538" => 9.53, "15539" => 8.51, "15540" => 8.62, "15541" => 9.440001, "15542" => 9.63, "15543" => 9.76, "15544" => 9.92, "15545" => 8.93, "15546" => 9.49, "15547" => 9.25, "15548" => 9.440001, "15549" => 8.77, "15550" => 9.25, "15551" => 8.97, "15552" => 9.71, "15553" => 9.80, "15554" => 9.110001, "15555" => 9.50, "15556" => 7.89, "15557" => 8.719999, "15558" => 9.42, "15559" => 9.18, "15560" => 9.67, "15561" => 9.73, "15562" => 9.57, "15563" => 9.45, "15564" => 9.79, "15565" => 9.77, "15566" => 9.33, "15567" => 9.49, "15568" => 9.53, "15569" => 9.440001, "15570" => 9.59, "15571" => 9.59, "15572" => 9.969999, "15573" => 9.84, "15574" => 9.82, "15575" => 9.49, "15576" => 9.90, "15577" => 9.92, "15578" => 8.62, "15579" => 9.38, "15580" => 9.57, "15581" => 9.36, "15582" => 8.34, "15583" => 8.93, "15584" => 9.62, "15585" => 8.95, "15586" => 9.639999, "15587" => 7.85, "15588" => 8.41, "15589" => 8.389999, "15590" => 8.09, "15591" => 8.55, "15592" => 9.96, "15593" => 8.63, "15594" => 8.820001, "15595" => 9.58, "15596" => 9.12, "15597" => 9.32, "15598" => 9.139999, "15599" => 9.39, "15600" => 9.06, "15601" => 9.02, "15602" => 8.64, "15603" => 9.91, "15604" => 9.32, "15605" => 8.389999, "15606" => 9.72, "15607" => 9.049999, "15608" => 8.28, "15609" => 9.01, "15610" => 7.78, "15611" => 8.43, "15612" => 8.24, "15613" => 8.67, "15614" => 8.63, "15615" => 9.50, "15616" => 8.57, "15617" => 9.26, "15618" => 8.90, "15619" => 9.53, "15620" => 9.190001, "15621" => 9.40, "15622" => 8.60, "15623" => 9.37, "15624" => 9.049999, "15625" => 9.42, "15626" => 8.83, "15627" => 9.30, "15628" => 9.440001, "15629" => 9.68, "15630" => 9.22, "15631" => 9.22, "15632" => 8.96, "15633" => 9.48, "15634" => 9.40, "15635" => 9.71, "15636" => 8.49, "15637" => 9.30, "15638" => 8.780001, "15639" => 9.559999, "15640" => 9.27, "15641" => 9.639999, "15642" => 8.12, "15643" => 8.73, "15644" => 9.43, "15645" => 9.20, "15646" => 9.58, "15647" => 7.60, "15648" => 8.16, "15649" => 9.22, "15650" => 9.52, "15651" => 8.42, "15652" => 9.27, "15653" => 8.17, "15654" => 9.77, "15655" => 9.76, "15656" => 9.71, "15657" => 8.42, "15658" => 9.00, "15659" => 8.90, "15660" => 8.46, "15661" => 9.30, "15662" => 9.27, "15663" => 9.95, "15664" => 9.77, "15665" => 9.77, "15666" => 9.190001, "15667" => 9.39, "15668" => 9.24, "15669" => 9.17, "15670" => 7.90, "15671" => 8.87, "15672" => 8.55, "15673" => 9.41, "15674" => 8.690001, "15675" => 9.24, "15676" => 8.61, "15677" => 9.57, "15678" => 8.23, "15679" => 8.74, "15680" => 8.41, "15681" => 7.91, "15682" => 9.599999, "15683" => 8.80, "15684" => 8.95, "15685" => 8.08, "15686" => 8.67, "15687" => 9.50, "15688" => 9.51, "15689" => 8.389999, "15690" => 9.03, "15691" => 9.34, "15692" => 8.33, "15693" => 8.389999, "15694" => 9.49, "15695" => 9.39, "15696" => 9.32, "15697" => 9.40, "15698" => 9.27, "15699" => 9.66, "15700" => 9.39, "15701" => 8.01, "15702" => 8.03, "15703" => 8.58, "15704" => 8.190001, "15705" => 7.29, "15706" => 7.89, "15707" => 8.79, "15708" => 8.02, "15709" => 7.940001, "15710" => 9.10, "15711" => 8.53, "15712" => 8.71, "15713" => 8.13, "15714" => 8.09, "15715" => 7.66, "15716" => 8.79, "15717" => 8.32, "15718" => 8.44, "15719" => 9.51, "15720" => 9.75, "15721" => 9.700001, "15722" => 9.32, "15723" => 7.76, "15724" => 8.349999, "15725" => 6.85, "15726" => 6.85, "15727" => 9.599999, "15728" => 8.67, "15729" => 9.75, "15730" => 9.71, "15731" => 8.05, "15732" => 6.63, "15733" => 6.27, "15734" => 6.27, "15735" => 6.27, "15736" => 6.27, "15737" => 7.87, "15738" => 5.00, "15739" => 6.14, "15740" => 5.94, "15741" => 5.94, "15742" => 6.98, "15743" => 6.67, "15744" => 6.67, "15745" => 5.75, "15746" => 5.00, "15747" => 3.35, "15748" => 4.74, "15749" => 5.00, "15750" => 4.74, "15751" => 3.55, "15752" => 5.08, "15753" => 5.00, "15754" => 5.08, "15755" => 7.26, "15756" => 7.87, "15757" => 6.14, "15758" => 7.41, "15759" => 7.41, "15760" => 6.60, "15761" => 7.97, "15762" => 8.05, "15763" => 8.05, "15764" => 8.15, "15765" => 7.26, "15766" => 7.91, "15767" => 6.98, "15768" => 4.55, "15769" => 5.75, "15770" => 3.35, "15771" => 5.440001, "15772" => 5.440001, "15773" => 5.60, "15774" => 6.26, "15775" => 6.26, "15776" => 6.63, "15777" => 6.63, "15778" => 6.06, "15779" => 4.55, "15780" => 6.27, "15781" => 3.55, "15782" => 5.00, "15783" => 7.41, "15784" => 7.85, "15785" => 8.33, "15786" => 5.07, "15787" => 5.94, "15788" => 7.91, "15789" => 5.440001, "15790" => 5.48, "15791" => 6.66, "15792" => 3.25, "15793" => 4.74, "15794" => 6.27, "15795" => 9.599999, "15796" => 5.63, "15797" => 4.28, "15798" => 4.57, "15799" => 6.39, "15800" => 4.55, "15801" => 3.61, "15802" => 6.26, "15803" => 6.59, "15804" => 4.51, "15805" => 4.74, "15806" => 5.26, "15807" => 4.55, "15808" => 3.21, "15809" => 3.61, "15810" => 6.63, "15811" => 3.81, "15812" => 5.89, "15813" => 6.29, "15814" => 9.58, "15815" => 6.14, "15816" => 6.66, "15817" => 4.98, "15818" => 4.98, "15819" => 6.66, "15820" => 8.15, "15821" => 4.84, "15822" => 6.29, "15823" => 6.26, "15824" => 3.67, "15825" => 6.29, "15826" => 7.85, "15827" => 3.33, "15828" => 6.27, "15829" => 5.60, "15830" => 5.08, "15831" => 6.12, "15832" => 5.75, "15833" => 9.71, "15834" => 6.11, "15835" => 6.14, "15836" => 6.25, "15837" => 8.34, "15838" => 6.66, "15839" => 4.98, "15840" => 4.98, "15841" => 5.440001, "15842" => 5.29, "15843" => 4.59, "15844" => 6.54, "15845" => 0.00, "15846" => 1.60, "15847" => 1.60, "15848" => 3.20, "15849" => 0.00, "15850" => 5.00, "15851" => 4.41, "15852" => 4.41, "15853" => 4.41, "15854" => 4.41, "15855" => 4.41, "15856" => 4.55, "15857" => 4.55, "15858" => 5.00, "15859" => 5.00, "15860" => 5.00, "15861" => 5.00, "15862" => 5.00, "15863" => 5.00, "15864" => 5.00, "15865" => 5.00, "15866" => 5.00, "15867" => 2.06, "15868" => 5.00, "15869" => 5.00, "15870" => 5.00, "15871" => 5.00, "15872" => 5.00, "15873" => 5.00, "15874" => 5.00, "15875" => 5.00, "15876" => 5.00, "15877" => 5.00, "15878" => 5.00, "15879" => 4.05, "15880" => 3.83, "15881" => 6.85, "15882" => 6.85, "15883" => 5.94, "15884" => 5.89, "15885" => 3.20, "15886" => 6.01, "15887" => 8.50, "15888" => 6.95, "15889" => 6.14, "15890" => 5.78, "15891" => 5.67, "15892" => 6.64, "15893" => 4.96, "15894" => 4.19, "15895" => 3.15, "15896" => 5.04, "15897" => 2.99, "15898" => 3.54, "15899" => 2.17, "15900" => 5.19, "15901" => 6.93, "15902" => 8.75, "15903" => 6.85, "15904" => 6.85, "15905" => 8.90, "15906" => 9.22, "15907" => 9.22, "15908" => 4.14, "15909" => 6.29, "15910" => 5.82, "15911" => 5.74, "15912" => 8.809999, "15913" => 5.00, "15914" => 9.43, "15915" => 9.53, "15916" => 9.639999, "15917" => 7.75, "15918" => 6.78, "15919" => 6.50, "15920" => 6.50, "15921" => 6.50, "15922" => 6.50, "15923" => 7.82, "15924" => 6.06, "15925" => 5.97, "15926" => 5.97, "15927" => 6.82, "15928" => 6.31, "15929" => 6.31, "15930" => 6.17, "15931" => 3.54, "15932" => 4.82, "15933" => 4.82, "15934" => 3.63, "15935" => 5.16, "15936" => 5.16, "15937" => 7.43, "15938" => 7.82, "15939" => 6.06, "15940" => 7.07, "15941" => 7.07, "15942" => 6.81, "15943" => 7.98, "15944" => 7.75, "15945" => 7.75, "15946" => 8.09, "15947" => 7.43, "15948" => 7.84, "15949" => 6.82, "15950" => 4.74, "15951" => 6.17, "15952" => 3.54, "15953" => 4.91, "15954" => 4.91, "15955" => 5.54, "15956" => 6.34, "15957" => 6.34, "15958" => 6.78, "15959" => 6.78, "15960" => 5.809999, "15961" => 4.74, "15962" => 6.50, "15963" => 3.63, "15964" => 7.07, "15965" => 7.73, "15966" => 8.29, "15967" => 4.98, "15968" => 5.97, "15969" => 7.84, "15970" => 4.91, "15971" => 5.86, "15972" => 6.46, "15973" => 3.16, "15974" => 4.82, "15975" => 6.50);
+%goth_w3=("1" => 3.33, "2" => 3.11, "3" => 3.56, "4" => 6.57, "5" => 6.50, "6" => 8.79, "7" => 7.97, "8" => 1.95, "9" => 3.56, "10" => 3.56, "11" => 3.46, "12" => 6.56, "13" => 2.40, "14" => 3.58, "15" => 2.40, "16" => 4.74, "17" => 6.57, "18" => 6.57, "19" => 6.57, "20" => 6.57, "21" => 6.61, "22" => 6.57, "23" => 6.57, "24" => 6.57, "25" => 6.57, "26" => 6.57, "27" => 2.40, "28" => 2.40, "29" => 5.12, "30" => 6.56, "31" => 5.12, "32" => 5.71, "33" => 9.049999, "34" => 7.50, "35" => 7.12, "36" => 7.56, "37" => 7.58, "38" => 6.43, "39" => 6.02, "40" => 7.54, "41" => 7.78, "42" => 2.49, "43" => 5.08, "44" => 7.07, "45" => 6.02, "46" => 9.45, "47" => 7.74, "48" => 7.95, "49" => 6.62, "50" => 7.95, "51" => 7.26, "52" => 6.690001, "53" => 6.49, "54" => 7.73, "55" => 7.17, "56" => 10.06, "57" => 7.22, "58" => 6.88, "59" => 6.690001, "60" => 3.46, "61" => 6.91, "62" => 3.46, "63" => 5.33, "64" => 5.01, "65" => 5.00, "66" => 5.75, "67" => 6.46, "68" => 5.78, "69" => 6.46, "70" => 5.88, "71" => 4.17, "72" => 6.41, "73" => 6.17, "74" => 2.38, "75" => 2.65, "76" => 5.75, "77" => 2.32, "78" => 9.309999, "79" => 6.18, "80" => 6.25, "81" => 6.47, "82" => 6.46, "83" => 4.30, "84" => 5.37, "85" => 3.92, "86" => 6.18, "87" => 5.440001, "88" => 7.70, "89" => 5.36, "90" => 5.54, "91" => 4.98, "92" => 3.47, "93" => 3.72, "94" => 3.47, "95" => 5.43, "96" => 2.40, "97" => 4.74, "98" => 2.40, "99" => 3.75, "100" => 5.43, "101" => 3.11, "102" => 5.86, "103" => 6.55, "104" => 1.45, "105" => 5.86, "106" => 6.39, "107" => 5.65, "108" => 3.84, "109" => 4.66, "110" => 3.03, "111" => 3.03, "112" => 6.20, "113" => 6.16, "114" => 5.00, "115" => 6.00, "116" => 6.00, "117" => 2.40, "118" => 5.87, "119" => 4.79, "120" => 2.40, "121" => 3.84, "122" => 3.84, "123" => 4.66, "124" => 7.21, "125" => 12.75, "126" => 5.71, "127" => 5.00, "128" => 5.00, "129" => 5.00, "130" => 5.00, "131" => 5.00, "132" => 5.00, "133" => 5.00, "134" => 7.56, "135" => 5.00, "136" => 7.59, "137" => 5.00, "139" => 10.570001, "140" => 3.94, "141" => 6.39, "142" => 7.95, "143" => 10.39, "144" => 4.30, "145" => 9.69, "146" => 2.38, "147" => 3.00, "148" => 6.25, "149" => 10.21, "150" => 6.27, "151" => 6.56, "152" => 5.70, "153" => 6.56, "154" => 5.70, "155" => 3.00, "156" => 6.56, "157" => 3.94, "158" => 3.94, "159" => 6.19, "160" => 3.94, "161" => 8.54, "162" => 8.51, "163" => 8.84, "164" => 7.50, "165" => 7.50, "166" => 7.50, "167" => 7.50, "168" => 7.50, "169" => 7.50, "170" => 7.56, "171" => 6.43, "172" => 6.43, "173" => 6.43, "174" => 6.43, "175" => 2.49, "176" => 2.49, "177" => 2.49, "178" => 2.49, "179" => 7.66, "180" => 7.74, "181" => 7.95, "182" => 7.95, "183" => 7.95, "184" => 7.95, "185" => 7.95, "186" => 6.56, "187" => 7.73, "188" => 7.73, "189" => 7.73, "190" => 7.73, "191" => 6.88, "192" => 6.45, "193" => 5.75, "194" => 5.75, "195" => 5.75, "196" => 5.75, "197" => 5.75, "198" => 5.75, "199" => 5.78, "200" => 5.88, "201" => 5.88, "202" => 5.88, "203" => 5.88, "204" => 3.08, "205" => 3.04, "206" => 3.04, "207" => 2.74, "208" => 6.44, "209" => 6.18, "210" => 6.25, "211" => 6.25, "212" => 6.25, "213" => 6.25, "214" => 6.25, "215" => 6.56, "216" => 6.18, "217" => 6.18, "218" => 6.18, "219" => 6.18, "220" => 5.54, "221" => 6.47, "222" => 5.54, "223" => 6.690001, "224" => 6.88, "225" => 6.690001, "226" => 5.00, "227" => 5.37, "228" => 10.039999, "229" => 4.98, "230" => 6.57, "231" => 5.00, "232" => 5.00, "233" => 5.00, "234" => 5.00, "235" => 5.00, "236" => 5.00, "237" => 5.00, "238" => 5.00, "239" => 5.00, "240" => 5.00, "241" => 5.00, "242" => 5.00, "243" => 5.00, "244" => 5.00, "245" => 5.00, "246" => 5.00, "247" => 5.00, "248" => 5.00, "249" => 5.00, "250" => 5.00, "251" => 5.00, "252" => 5.00, "253" => 5.00, "254" => 5.00, "255" => 5.00, "256" => 5.00, "257" => 5.00, "258" => 5.00, "259" => 5.00, "260" => 5.00, "261" => 5.00, "262" => 5.00, "263" => 5.00, "264" => 5.00, "265" => 5.00, "266" => 5.00, "267" => 5.00, "268" => 5.00, "269" => 5.00, "270" => 5.00, "271" => 5.00, "272" => 5.00, "273" => 5.00, "274" => 5.00, "275" => 5.00, "276" => 5.00, "277" => 5.00, "278" => 5.00, "279" => 5.00, "280" => 5.00, "281" => 5.00, "282" => 5.00, "283" => 5.00, "284" => 5.00, "285" => 5.00, "286" => 5.00, "287" => 5.00, "288" => 5.00, "289" => 5.00, "290" => 5.00, "291" => 5.00, "292" => 5.00, "293" => 5.00, "294" => 5.00, "295" => 5.00, "296" => 5.00, "297" => 5.00, "298" => 5.00, "299" => 5.00, "300" => 5.00, "301" => 5.00, "302" => 5.00, "303" => 5.00, "304" => 5.00, "305" => 5.00, "306" => 5.00, "307" => 5.00, "308" => 5.00, "309" => 5.00, "310" => 5.00, "311" => 5.00, "312" => 5.00, "313" => 5.00, "314" => 5.00, "315" => 5.00, "316" => 5.00, "317" => 5.00, "318" => 5.00, "319" => 5.00, "320" => 5.00, "321" => 5.00, "322" => 5.00, "323" => 5.00, "324" => 5.00, "325" => 5.00, "326" => 5.00, "327" => 5.00, "328" => 5.00, "329" => 5.00, "330" => 5.00, "331" => 5.00, "332" => 5.00, "333" => 5.00, "334" => 5.00, "335" => 5.00, "336" => 5.00, "337" => 5.00, "338" => 5.00, "339" => 5.00, "340" => 5.00, "341" => 5.00, "342" => 5.00, "343" => 5.00, "344" => 5.00, "345" => 5.00, "346" => 5.00, "347" => 5.00, "348" => 5.00, "349" => 5.00, "350" => 5.00, "351" => 5.00, "352" => 5.00, "353" => 5.00, "354" => 5.00, "355" => 5.00, "356" => 5.00, "357" => 5.00, "358" => 5.00, "359" => 5.00, "360" => 5.00, "361" => 5.00, "362" => 5.00, "363" => 5.00, "364" => 5.00, "365" => 5.00, "366" => 5.00, "367" => 5.00, "368" => 5.00, "369" => 5.00, "370" => 5.00, "371" => 5.00, "372" => 5.00, "373" => 5.00, "374" => 5.00, "375" => 5.00, "376" => 5.00, "377" => 5.00, "378" => 5.00, "379" => 5.00, "380" => 5.00, "381" => 5.00, "382" => 5.00, "383" => 5.00, "384" => 5.00, "385" => 5.00, "386" => 5.00, "387" => 5.00, "388" => 5.00, "389" => 5.00, "390" => 5.00, "391" => 5.00, "392" => 5.00, "393" => 5.00, "394" => 5.00, "395" => 5.00, "396" => 5.00, "397" => 5.00, "398" => 5.00, "399" => 5.00, "400" => 5.00, "401" => 5.00, "402" => 5.00, "403" => 5.00, "404" => 5.00, "405" => 5.00, "406" => 5.00, "407" => 5.00, "408" => 5.00, "409" => 5.00, "410" => 5.00, "411" => 5.00, "412" => 5.00, "413" => 5.00, "414" => 5.00, "415" => 5.00, "416" => 5.00, "417" => 5.00, "418" => 5.00, "419" => 5.00, "420" => 5.00, "421" => 5.00, "422" => 5.00, "423" => 5.00, "424" => 5.00, "425" => 5.00, "426" => 5.00, "427" => 5.00, "428" => 5.00, "429" => 5.00, "430" => 5.00, "431" => 5.00, "432" => 5.00, "433" => 5.00, "434" => 5.00, "435" => 5.00, "436" => 5.00, "437" => 5.00, "438" => 5.00, "439" => 5.00, "440" => 5.00, "441" => 5.00, "442" => 5.00, "443" => 5.00, "444" => 5.00, "445" => 5.00, "446" => 5.00, "447" => 5.00, "448" => 5.00, "449" => 5.00, "450" => 5.00, "451" => 5.00, "452" => 5.00, "453" => 5.00, "454" => 5.00, "455" => 5.00, "456" => 5.00, "457" => 5.00, "458" => 5.00, "459" => 5.00, "460" => 5.00, "461" => 5.00, "462" => 5.00, "463" => 5.00, "464" => 5.00, "465" => 5.00, "466" => 5.00, "467" => 5.00, "468" => 5.00, "469" => 5.00, "470" => 5.00, "471" => 5.00, "472" => 5.00, "473" => 5.00, "474" => 5.00, "475" => 5.00, "476" => 5.00, "477" => 5.00, "478" => 5.00, "479" => 5.00, "480" => 5.00, "481" => 5.00, "482" => 5.00, "483" => 5.00, "484" => 5.00, "485" => 5.00, "486" => 5.00, "487" => 5.00, "488" => 5.00, "489" => 5.00, "490" => 5.00, "491" => 5.00, "492" => 5.00, "493" => 5.00, "494" => 5.00, "495" => 5.00, "496" => 5.00, "497" => 5.00, "498" => 5.00, "499" => 5.00, "500" => 5.00, "501" => 5.00, "502" => 5.00, "503" => 5.00, "504" => 5.00, "505" => 5.00, "506" => 5.00, "507" => 5.00, "508" => 5.00, "509" => 5.00, "510" => 5.00, "511" => 5.00, "512" => 5.00, "513" => 5.00, "514" => 5.00, "515" => 5.00, "516" => 5.00, "517" => 5.00, "518" => 5.00, "519" => 5.00, "520" => 5.00, "521" => 5.00, "522" => 5.00, "523" => 5.00, "524" => 5.00, "525" => 5.00, "526" => 5.00, "527" => 5.00, "528" => 5.00, "529" => 5.00, "530" => 5.00, "531" => 5.00, "532" => 5.00, "533" => 5.00, "534" => 5.00, "535" => 5.00, "536" => 5.00, "537" => 5.00, "538" => 5.00, "539" => 5.00, "540" => 5.00, "541" => 5.00, "542" => 5.00, "543" => 5.00, "544" => 5.00, "545" => 5.00, "546" => 5.00, "547" => 5.00, "548" => 5.00, "549" => 5.00, "550" => 5.00, "551" => 5.00, "552" => 5.00, "553" => 5.00, "554" => 5.00, "555" => 5.00, "556" => 5.00, "557" => 5.00, "558" => 5.00, "559" => 5.00, "560" => 5.00, "561" => 5.00, "562" => 5.00, "563" => 5.00, "564" => 5.00, "565" => 5.00, "566" => 5.00, "567" => 5.00, "568" => 5.00, "569" => 5.00, "570" => 5.00, "571" => 5.00, "572" => 5.00, "573" => 5.00, "574" => 5.00, "575" => 5.00, "576" => 5.00, "577" => 5.00, "578" => 5.00, "579" => 5.00, "580" => 5.00, "581" => 5.00, "582" => 5.00, "583" => 5.00, "584" => 5.00, "585" => 5.00, "586" => 5.00, "587" => 5.00, "588" => 5.00, "589" => 5.00, "590" => 5.00, "591" => 5.00, "592" => 5.00, "593" => 5.00, "594" => 5.00, "595" => 5.00, "596" => 5.00, "597" => 5.00, "598" => 5.00, "599" => 5.00, "600" => 5.00, "601" => 5.00, "602" => 5.00, "603" => 5.00, "604" => 5.00, "605" => 5.00, "606" => 5.00, "607" => 5.00, "608" => 5.00, "609" => 5.00, "610" => 5.00, "611" => 5.00, "612" => 5.00, "613" => 5.00, "614" => 5.00, "615" => 5.00, "616" => 5.00, "617" => 5.00, "618" => 5.00, "619" => 5.00, "620" => 5.00, "621" => 5.00, "622" => 5.00, "623" => 5.00, "624" => 5.00, "625" => 5.00, "626" => 5.00, "627" => 5.00, "628" => 5.00, "629" => 5.00, "630" => 5.00, "631" => 5.00, "632" => 5.00, "8718" => 5.00, "8719" => 5.00, "9354" => 7.14, "9355" => 8.03, "9356" => 2.15, "9357" => 3.70, "9358" => 7.37, "9359" => 9.39, "9360" => 9.33, "9361" => 5.75, "9362" => 2.92, "9363" => 6.18, "9364" => 5.88, "9365" => 6.25, "9366" => 7.50, "9367" => 2.49, "9368" => 7.73, "9369" => 6.43, "9370" => 7.95, "9371" => 8.84, "9372" => 8.84, "9373" => 8.84, "9374" => 8.84, "9375" => 8.84, "9376" => 8.84, "9377" => 3.94, "9378" => 3.94, "9379" => 3.94, "9380" => 3.94, "9381" => 3.94, "9382" => 3.94, "9383" => 3.94, "9384" => 3.94, "9385" => 3.94, "9386" => 3.94, "9387" => 3.94, "9388" => 3.94, "9389" => 3.94, "9390" => 3.94, "9391" => 3.94, "9392" => 3.94, "9393" => 3.94, "9394" => 7.50, "9395" => 6.43, "9396" => 6.43, "9397" => 6.43, "9398" => 2.49, "9399" => 2.49, "9400" => 2.49, "9401" => 7.95, "9402" => 7.95, "9403" => 7.73, "9404" => 7.73, "9405" => 7.73, "9406" => 5.75, "9407" => 5.88, "9408" => 5.88, "9409" => 5.88, "9410" => 3.04, "9411" => 2.38, "9412" => 3.25, "9413" => 6.25, "9414" => 6.25, "9415" => 6.18, "9416" => 6.18, "9417" => 6.18, "9418" => 6.46, "9419" => 6.46, "9420" => 6.46, "9421" => 9.69, "9422" => 9.69, "9423" => 5.78, "9424" => 5.78, "9425" => 5.78, "9426" => 5.88, "9427" => 5.88, "9428" => 5.88, "9429" => 7.48, "9430" => 7.48, "9431" => 7.48, "9432" => 5.26, "9433" => 5.26, "9434" => 5.26, "9435" => 2.65, "9436" => 6.15, "9437" => 6.25, "9438" => 5.440001, "9439" => 5.440001, "9440" => 5.440001, "9441" => 5.33, "9442" => 3.88, "9443" => 2.56, "9444" => 3.33, "9445" => 2.97, "9446" => 3.43, "9447" => 6.57, "9448" => 6.57, "9449" => 8.64, "9450" => 7.85, "9451" => 1.88, "9452" => 3.65, "9453" => 3.65, "9454" => 3.50, "9455" => 6.56, "9456" => 2.48, "9457" => 3.63, "9458" => 2.48, "9459" => 4.73, "9460" => 6.57, "9461" => 6.57, "9462" => 6.57, "9463" => 6.57, "9464" => 6.57, "9465" => 6.57, "9466" => 6.57, "9467" => 6.57, "9468" => 6.57, "9469" => 6.57, "9470" => 2.48, "9471" => 2.48, "9472" => 5.43, "9473" => 6.57, "9474" => 5.43, "9475" => 5.67, "9476" => 8.89, "9477" => 7.25, "9478" => 6.98, "9479" => 7.04, "9480" => 7.40, "9481" => 6.39, "9482" => 5.99, "9483" => 7.48, "9484" => 7.75, "9485" => 2.66, "9486" => 4.91, "9487" => 7.01, "9488" => 6.03, "9489" => 9.36, "9490" => 7.69, "9491" => 7.84, "9492" => 6.40, "9493" => 7.84, "9494" => 7.03, "9495" => 6.64, "9496" => 6.39, "9497" => 7.65, "9498" => 7.059999, "9499" => 9.84, "9500" => 7.09, "9501" => 6.78, "9502" => 6.61, "9503" => 3.45, "9504" => 6.57, "9505" => 3.45, "9506" => 5.33, "9507" => 4.56, "9508" => 5.00, "9509" => 5.68, "9510" => 6.21, "9511" => 5.31, "9512" => 6.24, "9513" => 5.80, "9514" => 3.84, "9515" => 6.20, "9516" => 6.15, "9517" => 2.50, "9518" => 2.61, "9519" => 5.73, "9520" => 2.45, "9521" => 9.16, "9522" => 6.16, "9523" => 6.22, "9524" => 6.21, "9525" => 6.18, "9526" => 4.32, "9527" => 5.35, "9528" => 3.77, "9529" => 6.04, "9530" => 5.43, "9531" => 7.57, "9532" => 5.33, "9533" => 5.40, "9534" => 4.97, "9535" => 3.45, "9536" => 3.72, "9537" => 3.45, "9538" => 5.00, "9539" => 2.15, "9540" => 4.73, "9541" => 2.15, "9542" => 3.75, "9543" => 5.70, "9544" => 2.97, "9545" => 5.80, "9546" => 6.57, "9547" => 0.91, "9548" => 5.89, "9549" => 6.36, "9550" => 5.65, "9551" => 3.53, "9552" => 4.67, "9553" => 3.11, "9554" => 3.11, "9555" => 6.06, "9556" => 6.00, "9557" => 5.00, "9558" => 5.95, "9559" => 5.95, "9560" => 2.48, "9561" => 5.73, "9562" => 4.79, "9563" => 2.15, "9564" => 3.53, "9565" => 3.53, "9566" => 4.67, "9567" => 7.44, "9568" => 12.56, "9569" => 5.67, "9570" => 5.00, "9571" => 5.00, "9572" => 5.00, "9573" => 5.00, "9574" => 5.00, "9575" => 5.00, "9576" => 5.00, "9577" => 5.00, "9578" => 5.00, "9579" => 5.00, "9580" => 5.00, "9582" => 10.28, "9583" => 4.12, "9584" => 6.03, "9585" => 7.84, "9586" => 10.20, "9587" => 4.12, "9588" => 9.32, "9589" => 2.50, "9590" => 2.45, "9591" => 6.21, "9592" => 10.01, "9593" => 6.30, "9594" => 6.56, "9595" => 5.70, "9596" => 6.56, "9597" => 5.70, "9598" => 3.00, "9599" => 6.56, "9600" => 3.94, "9601" => 3.94, "9602" => 6.57, "9603" => 3.94, "9604" => 8.79, "9605" => 8.79, "9606" => 8.79, "9607" => 7.25, "9608" => 7.25, "9609" => 7.25, "9610" => 7.25, "9611" => 7.25, "9612" => 7.25, "9613" => 7.04, "9614" => 6.39, "9615" => 6.39, "9616" => 6.39, "9617" => 6.39, "9618" => 2.66, "9619" => 2.66, "9620" => 2.66, "9621" => 2.66, "9622" => 7.40, "9623" => 7.69, "9624" => 7.84, "9625" => 7.84, "9626" => 7.84, "9627" => 7.84, "9628" => 7.84, "9629" => 6.56, "9630" => 7.65, "9631" => 7.65, "9632" => 7.65, "9633" => 7.65, "9634" => 6.78, "9635" => 6.45, "9636" => 5.68, "9637" => 5.68, "9638" => 5.68, "9639" => 5.68, "9640" => 5.68, "9641" => 5.68, "9642" => 5.31, "9643" => 5.80, "9644" => 5.80, "9645" => 5.80, "9646" => 5.80, "9647" => 2.50, "9648" => 2.50, "9649" => 2.50, "9650" => 2.50, "9651" => 6.39, "9652" => 6.16, "9653" => 6.22, "9654" => 6.22, "9655" => 6.22, "9656" => 6.22, "9657" => 6.22, "9658" => 6.56, "9659" => 6.04, "9660" => 6.04, "9661" => 6.04, "9662" => 6.04, "9663" => 5.40, "9664" => 6.42, "9665" => 5.40, "9666" => 6.64, "9667" => 6.78, "9668" => 6.61, "9669" => 4.56, "9670" => 5.36, "9671" => 10.190001, "9672" => 4.97, "9673" => 6.57, "9674" => 7.00, "9675" => 8.15, "9676" => 2.15, "9677" => 3.70, "9678" => 6.89, "9679" => 9.10, "9680" => 9.049999, "9681" => 5.68, "9682" => 2.50, "9683" => 6.04, "9684" => 5.80, "9685" => 6.22, "9686" => 7.25, "9687" => 2.66, "9688" => 7.65, "9689" => 6.39, "9690" => 7.84, "9691" => 8.79, "9692" => 8.79, "9693" => 8.79, "9694" => 8.79, "9695" => 8.79, "9696" => 8.79, "9697" => 3.94, "9698" => 3.94, "9699" => 3.94, "9700" => 3.94, "9701" => 3.94, "9702" => 3.94, "9703" => 3.94, "9704" => 3.94, "9705" => 3.94, "9706" => 3.94, "9707" => 3.94, "9708" => 3.94, "9709" => 3.94, "9710" => 3.94, "9711" => 3.94, "9712" => 3.94, "9713" => 3.94, "9714" => 7.25, "9715" => 6.39, "9716" => 6.39, "9717" => 6.39, "9718" => 2.66, "9719" => 2.66, "9720" => 2.66, "9721" => 7.84, "9722" => 7.84, "9723" => 7.65, "9724" => 7.65, "9725" => 7.65, "9726" => 5.68, "9727" => 5.80, "9728" => 5.80, "9729" => 5.80, "9730" => 2.50, "9731" => 2.50, "9732" => 2.50, "9733" => 6.22, "9734" => 6.22, "9735" => 6.04, "9736" => 6.04, "9737" => 6.04, "9738" => 2.50, "9739" => 2.50, "9740" => 2.50, "9741" => 2.50, "9742" => 2.50, "9743" => 2.50, "9744" => 2.50, "9745" => 2.50, "9746" => 2.50, "9747" => 2.50, "9748" => 2.50, "9749" => 2.50, "9750" => 2.50, "9751" => 2.50, "9752" => 2.50, "9753" => 2.50, "9754" => 2.50, "9755" => 2.50, "9756" => 2.50, "9757" => 2.50, "9758" => 3.33, "9759" => 3.33, "9760" => 3.33, "9761" => 3.33, "9762" => 3.33, "9763" => 3.33, "9764" => 3.33, "9765" => 3.33, "9766" => 3.33, "9767" => 3.33, "9768" => 3.33, "9769" => 3.33, "9770" => 3.33, "9771" => 3.33, "9772" => 3.33, "9773" => 3.33, "9774" => 3.33, "9775" => 3.33, "9776" => 3.33, "9777" => 3.33, "9778" => 3.33, "12063" => 5.00, "12064" => 5.00, "12065" => 5.00, "12066" => 5.00, "12067" => 5.00, "12068" => 5.00, "12069" => 5.00, "12070" => 5.00, "12071" => 5.00, "12072" => 5.00, "12073" => 5.00, "12074" => 5.00, "12075" => 5.00, "12076" => 5.00, "12077" => 5.00, "12078" => 5.00, "12079" => 5.00, "12080" => 5.00, "12081" => 5.00, "12082" => 5.00, "12083" => 5.00, "12084" => 5.00, "12085" => 5.00, "12086" => 5.00, "12087" => 5.00, "15444" => 3.33, "15445" => 3.33, "15446" => 3.33, "15447" => 3.33, "15448" => 3.33, "15449" => 7.19, "15450" => 7.69, "15451" => 7.23, "15452" => 7.72, "15453" => 8.29, "15454" => 9.09, "15456" => 6.56, "15457" => 6.56, "15458" => 6.56, "15459" => 6.56, "15460" => 6.56, "15461" => 10.39, "15462" => 8.60, "15463" => 8.820001, "15464" => 6.56, "15465" => 6.56, "15466" => 6.56, "15467" => 6.56, "15468" => 6.56, "15469" => 6.56, "15470" => 6.56, "15471" => 6.56, "15472" => 6.56, "15473" => 6.56, "15474" => 6.56, "15475" => 6.56, "15476" => 6.56, "15477" => 8.71, "15478" => 6.56, "15479" => 6.56, "15480" => 6.56, "15481" => 6.56, "15482" => 9.16, "15483" => 9.16, "15484" => 7.48, "15485" => 7.48, "15486" => 8.70, "15487" => 8.70, "15488" => 8.70, "15489" => 6.56, "15490" => 6.56, "15491" => 6.56, "15492" => 6.56, "15493" => 6.03, "15494" => 7.87, "15495" => 6.56, "15496" => 6.56, "15497" => 6.56, "15498" => 6.56, "15499" => 5.71, "15500" => 6.56, "15501" => 6.56, "15502" => 6.56, "15503" => 3.83, "15504" => 6.29, "15505" => 6.56, "15506" => 6.56, "15507" => 6.56, "15508" => 6.56, "15509" => 6.56, "15510" => 6.56, "15511" => 9.16, "15512" => 6.56, "15513" => 6.97, "15514" => 6.04, "15515" => 8.03, "15516" => 5.00, "15517" => 8.56, "15518" => 9.18, "15519" => 8.67, "15520" => 9.30, "15521" => 8.08, "15522" => 8.51, "15523" => 8.34, "15524" => 9.139999, "15525" => 8.77, "15526" => 9.37, "15527" => 9.49, "15528" => 9.68, "15529" => 8.87, "15530" => 9.49, "15531" => 7.64, "15532" => 8.34, "15533" => 9.16, "15534" => 9.66, "15535" => 8.37, "15536" => 8.90, "15537" => 8.71, "15538" => 8.97, "15539" => 8.58, "15540" => 8.65, "15541" => 9.17, "15542" => 9.53, "15543" => 9.440001, "15544" => 9.73, "15545" => 9.27, "15546" => 9.40, "15547" => 9.22, "15548" => 9.28, "15549" => 8.83, "15550" => 8.92, "15551" => 8.66, "15552" => 9.26, "15553" => 9.54, "15554" => 8.93, "15555" => 9.26, "15556" => 8.30, "15557" => 8.56, "15558" => 9.45, "15559" => 9.16, "15560" => 9.51, "15561" => 9.67, "15562" => 9.35, "15563" => 9.440001, "15564" => 9.73, "15565" => 9.66, "15566" => 9.26, "15567" => 9.48, "15568" => 9.39, "15569" => 9.40, "15570" => 9.610001, "15571" => 9.51, "15572" => 9.599999, "15573" => 9.639999, "15574" => 9.50, "15575" => 9.48, "15576" => 9.79, "15577" => 9.72, "15578" => 8.98, "15579" => 9.38, "15580" => 9.33, "15581" => 9.27, "15582" => 8.820001, "15583" => 8.719999, "15584" => 9.25, "15585" => 8.780001, "15586" => 9.41, "15587" => 8.09, "15588" => 8.63, "15589" => 8.59, "15590" => 8.33, "15591" => 8.86, "15592" => 9.62, "15593" => 8.70, "15594" => 8.820001, "15595" => 9.46, "15596" => 9.02, "15597" => 9.34, "15598" => 9.049999, "15599" => 9.20, "15600" => 9.27, "15601" => 8.820001, "15602" => 8.55, "15603" => 9.65, "15604" => 9.47, "15605" => 8.29, "15606" => 9.610001, "15607" => 8.89, "15608" => 8.37, "15609" => 9.00, "15610" => 8.26, "15611" => 8.91, "15612" => 8.40, "15613" => 8.809999, "15614" => 8.63, "15615" => 9.36, "15616" => 8.66, "15617" => 9.18, "15618" => 9.04, "15619" => 9.37, "15620" => 9.27, "15621" => 9.309999, "15622" => 8.679999, "15623" => 9.55, "15624" => 9.28, "15625" => 9.52, "15626" => 8.88, "15627" => 9.40, "15628" => 9.26, "15629" => 9.62, "15630" => 8.94, "15631" => 9.42, "15632" => 9.06, "15633" => 9.50, "15634" => 9.17, "15635" => 9.54, "15636" => 8.47, "15637" => 9.04, "15638" => 8.75, "15639" => 9.67, "15640" => 9.25, "15641" => 9.55, "15642" => 8.15, "15643" => 8.86, "15644" => 9.41, "15645" => 9.22, "15646" => 9.639999, "15647" => 8.02, "15648" => 8.26, "15649" => 9.13, "15650" => 9.23, "15651" => 8.46, "15652" => 9.23, "15653" => 8.40, "15654" => 9.45, "15655" => 9.63, "15656" => 9.53, "15657" => 8.60, "15658" => 9.23, "15659" => 9.150001, "15660" => 8.57, "15661" => 9.27, "15662" => 9.110001, "15663" => 9.62, "15664" => 9.559999, "15665" => 9.559999, "15666" => 9.46, "15667" => 9.51, "15668" => 9.50, "15669" => 8.99, "15670" => 8.389999, "15671" => 9.20, "15672" => 8.64, "15673" => 9.42, "15674" => 8.49, "15675" => 9.16, "15676" => 8.43, "15677" => 9.22, "15678" => 8.44, "15679" => 8.91, "15680" => 8.71, "15681" => 8.16, "15682" => 9.46, "15683" => 8.61, "15684" => 9.26, "15685" => 8.32, "15686" => 8.71, "15687" => 9.47, "15688" => 9.32, "15689" => 8.49, "15690" => 8.85, "15691" => 9.33, "15692" => 8.51, "15693" => 8.63, "15694" => 9.29, "15695" => 9.309999, "15696" => 9.57, "15697" => 9.45, "15698" => 9.43, "15699" => 9.45, "15700" => 9.33, "15701" => 8.18, "15702" => 8.02, "15703" => 8.43, "15704" => 8.30, "15705" => 7.66, "15706" => 8.04, "15707" => 8.61, "15708" => 8.15, "15709" => 8.09, "15710" => 8.780001, "15711" => 8.86, "15712" => 8.50, "15713" => 8.389999, "15714" => 8.32, "15715" => 7.90, "15716" => 8.719999, "15717" => 8.18, "15718" => 8.67, "15719" => 9.639999, "15720" => 9.599999, "15721" => 9.65, "15722" => 9.34, "15723" => 7.90, "15724" => 8.40, "15725" => 6.56, "15726" => 6.56, "15727" => 8.84, "15728" => 8.42, "15729" => 9.45, "15730" => 9.309999, "15731" => 7.74, "15732" => 6.18, "15733" => 6.18, "15734" => 6.18, "15735" => 6.18, "15736" => 6.18, "15737" => 7.50, "15738" => 5.00, "15739" => 6.02, "15740" => 6.690001, "15741" => 6.690001, "15742" => 6.49, "15743" => 6.690001, "15744" => 6.690001, "15745" => 5.75, "15746" => 7.59, "15747" => 3.04, "15748" => 5.37, "15749" => 5.00, "15750" => 5.37, "15751" => 3.92, "15752" => 4.98, "15753" => 5.00, "15754" => 4.98, "15755" => 7.26, "15756" => 7.50, "15757" => 6.02, "15758" => 7.56, "15759" => 7.56, "15760" => 6.43, "15761" => 7.58, "15762" => 7.74, "15763" => 7.74, "15764" => 7.95, "15765" => 7.26, "15766" => 7.73, "15767" => 6.49, "15768" => 4.30, "15769" => 5.75, "15770" => 3.04, "15771" => 5.78, "15772" => 5.78, "15773" => 5.88, "15774" => 6.81, "15775" => 6.46, "15776" => 6.18, "15777" => 6.18, "15778" => 6.25, "15779" => 4.30, "15780" => 6.18, "15781" => 3.92, "15782" => 5.00, "15783" => 7.56, "15784" => 7.54, "15785" => 7.78, "15786" => 5.08, "15787" => 6.690001, "15788" => 7.73, "15789" => 5.78, "15790" => 6.41, "15791" => 6.53, "15792" => 3.04, "15793" => 5.37, "15794" => 6.18, "15795" => 9.27, "15796" => 5.78, "15797" => 3.89, "15798" => 4.37, "15799" => 6.09, "15800" => 4.30, "15801" => 3.92, "15802" => 6.52, "15803" => 6.25, "15804" => 4.30, "15805" => 5.37, "15806" => 5.00, "15807" => 4.36, "15808" => 2.39, "15809" => 4.17, "15810" => 6.25, "15811" => 3.85, "15812" => 5.54, "15813" => 6.39, "15814" => 9.309999, "15815" => 5.62, "15816" => 6.17, "15817" => 5.19, "15818" => 5.19, "15819" => 6.17, "15820" => 7.95, "15821" => 4.96, "15822" => 6.46, "15823" => 6.92, "15824" => 4.12, "15825" => 6.86, "15826" => 7.61, "15827" => 2.51, "15828" => 6.31, "15829" => 5.88, "15830" => 5.26, "15831" => 6.07, "15832" => 5.75, "15833" => 9.309999, "15834" => 6.17, "15835" => 6.11, "15836" => 6.46, "15837" => 7.70, "15838" => 6.17, "15839" => 5.19, "15840" => 5.19, "15841" => 5.72, "15842" => 5.51, "15843" => 4.30, "15844" => 6.10, "15845" => 0.00, "15846" => 1.45, "15847" => 1.45, "15848" => 2.56, "15849" => 0.00, "15850" => 5.00, "15851" => 4.57, "15852" => 4.57, "15853" => 4.57, "15854" => 4.57, "15855" => 4.57, "15856" => 4.73, "15857" => 4.73, "15858" => 5.00, "15859" => 5.00, "15860" => 5.00, "15861" => 5.00, "15862" => 5.00, "15863" => 5.00, "15864" => 5.00, "15865" => 5.00, "15866" => 5.00, "15867" => 1.51, "15868" => 5.00, "15869" => 5.00, "15870" => 5.00, "15871" => 5.00, "15872" => 5.00, "15873" => 5.00, "15874" => 5.00, "15875" => 5.00, "15876" => 5.00, "15877" => 5.00, "15878" => 5.00, "15879" => 4.20, "15880" => 3.83, "15881" => 6.56, "15882" => 6.56, "15883" => 6.06, "15884" => 5.54, "15885" => 2.32, "15886" => 6.17, "15887" => 8.349999, "15888" => 6.74, "15889" => 5.62, "15890" => 5.48, "15891" => 5.70, "15892" => 6.23, "15893" => 4.62, "15894" => 3.74, "15895" => 2.67, "15896" => 4.63, "15897" => 3.04, "15898" => 3.34, "15899" => 1.65, "15900" => 5.84, "15901" => 6.72, "15902" => 8.75, "15903" => 6.56, "15904" => 6.56, "15905" => 8.70, "15906" => 8.75, "15907" => 8.75, "15908" => 3.74, "15909" => 6.21, "15910" => 5.75, "15911" => 5.61, "15912" => 8.15, "15913" => 5.00, "15914" => 8.79, "15915" => 9.36, "15916" => 9.16, "15917" => 7.69, "15918" => 6.16, "15919" => 6.04, "15920" => 6.04, "15921" => 6.04, "15922" => 6.04, "15923" => 7.25, "15924" => 6.03, "15925" => 6.64, "15926" => 6.64, "15927" => 6.39, "15928" => 6.61, "15929" => 6.61, "15930" => 5.68, "15931" => 2.45, "15932" => 5.35, "15933" => 5.35, "15934" => 3.77, "15935" => 4.97, "15936" => 4.97, "15937" => 7.03, "15938" => 7.25, "15939" => 6.03, "15940" => 7.04, "15941" => 7.04, "15942" => 6.39, "15943" => 7.40, "15944" => 7.69, "15945" => 7.69, "15946" => 7.84, "15947" => 7.03, "15948" => 7.65, "15949" => 6.39, "15950" => 4.32, "15951" => 5.68, "15952" => 2.45, "15953" => 5.31, "15954" => 5.31, "15955" => 5.80, "15956" => 6.24, "15957" => 6.24, "15958" => 6.16, "15959" => 6.16, "15960" => 6.22, "15961" => 4.32, "15962" => 6.04, "15963" => 3.77, "15964" => 7.04, "15965" => 7.48, "15966" => 7.75, "15967" => 4.91, "15968" => 6.64, "15969" => 7.65, "15970" => 5.31, "15971" => 6.20, "15972" => 6.15, "15973" => 2.61, "15974" => 5.35, "15975" => 6.04);
+%goth_w6=("1" => 3.33, "2" => 3.39, "3" => 4.06, "4" => 7.19, "5" => 7.12, "6" => 9.35, "7" => 8.60, "8" => 2.34, "9" => 4.06, "10" => 4.06, "11" => 3.82, "12" => 6.85, "13" => 2.70, "14" => 4.12, "15" => 2.70, "16" => 5.20, "17" => 7.12, "18" => 7.12, "19" => 7.12, "20" => 7.12, "21" => 7.12, "22" => 7.12, "23" => 7.12, "24" => 7.12, "25" => 7.12, "26" => 7.12, "27" => 2.70, "28" => 2.70, "29" => 5.40, "30" => 6.85, "31" => 5.40, "32" => 6.17, "33" => 9.37, "34" => 8.08, "35" => 7.54, "36" => 7.93, "37" => 8.059999, "38" => 6.85, "39" => 6.44, "40" => 7.90, "41" => 8.26, "42" => 2.93, "43" => 5.91, "44" => 7.80, "45" => 6.43, "46" => 9.87, "47" => 8.21, "48" => 8.38, "49" => 7.11, "50" => 8.38, "51" => 7.73, "52" => 7.15, "53" => 7.09, "54" => 8.29, "55" => 7.84, "56" => 10.58, "57" => 8.11, "58" => 7.58, "59" => 7.07, "60" => 4.06, "61" => 7.67, "62" => 4.06, "63" => 5.88, "64" => 5.04, "65" => 5.00, "66" => 6.34, "67" => 7.059999, "68" => 6.25, "69" => 7.07, "70" => 6.37, "71" => 4.77, "72" => 6.92, "73" => 6.73, "74" => 2.71, "75" => 3.09, "76" => 6.52, "77" => 2.71, "78" => 10.10, "79" => 6.73, "80" => 6.70, "81" => 7.08, "82" => 7.059999, "83" => 4.92, "84" => 5.93, "85" => 4.34, "86" => 6.73, "87" => 6.21, "88" => 8.50, "89" => 6.17, "90" => 6.28, "91" => 5.41, "92" => 4.11, "93" => 4.15, "94" => 4.11, "95" => 6.09, "96" => 2.70, "97" => 5.20, "98" => 2.70, "99" => 4.24, "100" => 6.09, "101" => 3.39, "102" => 6.52, "103" => 7.25, "104" => 1.41, "105" => 6.63, "106" => 7.08, "107" => 5.97, "108" => 4.72, "109" => 5.71, "110" => 3.61, "111" => 3.61, "112" => 7.16, "113" => 7.15, "114" => 5.00, "115" => 6.40, "116" => 6.40, "117" => 2.70, "118" => 6.28, "119" => 5.32, "120" => 2.70, "121" => 4.72, "122" => 4.72, "123" => 5.71, "124" => 8.10, "125" => 13.660001, "126" => 6.17, "127" => 5.00, "128" => 5.00, "129" => 5.00, "130" => 5.00, "131" => 5.00, "132" => 5.00, "133" => 5.00, "134" => 7.93, "135" => 5.00, "136" => 8.04, "137" => 5.00, "139" => 11.53, "140" => 4.40, "141" => 6.86, "142" => 8.38, "143" => 11.17, "144" => 4.65, "145" => 10.39, "146" => 2.71, "147" => 2.71, "148" => 6.70, "149" => 10.809999, "150" => 6.60, "151" => 6.85, "152" => 5.71, "153" => 6.85, "154" => 5.71, "155" => 3.39, "156" => 6.85, "157" => 4.23, "158" => 4.23, "159" => 6.75, "160" => 4.23, "161" => 8.97, "162" => 8.95, "163" => 9.29, "164" => 8.08, "165" => 8.08, "166" => 8.08, "167" => 8.08, "168" => 8.08, "169" => 8.08, "170" => 7.93, "171" => 6.85, "172" => 6.85, "173" => 6.85, "174" => 6.85, "175" => 2.93, "176" => 2.93, "177" => 2.93, "178" => 2.93, "179" => 8.13, "180" => 8.21, "181" => 8.38, "182" => 8.38, "183" => 8.38, "184" => 8.38, "185" => 8.38, "186" => 6.85, "187" => 8.29, "188" => 8.29, "189" => 8.29, "190" => 8.29, "191" => 7.58, "192" => 6.98, "193" => 6.34, "194" => 6.34, "195" => 6.34, "196" => 6.34, "197" => 6.34, "198" => 6.34, "199" => 6.25, "200" => 6.37, "201" => 6.37, "202" => 6.37, "203" => 6.37, "204" => 3.35, "205" => 3.33, "206" => 3.49, "207" => 3.36, "208" => 6.99, "209" => 6.73, "210" => 6.70, "211" => 6.70, "212" => 6.70, "213" => 6.70, "214" => 6.70, "215" => 6.85, "216" => 6.73, "217" => 6.73, "218" => 6.73, "219" => 6.73, "220" => 6.28, "221" => 7.11, "222" => 6.28, "223" => 7.15, "224" => 7.58, "225" => 7.07, "226" => 5.00, "227" => 5.93, "228" => 10.700001, "229" => 5.41, "230" => 7.12, "231" => 5.00, "232" => 5.00, "233" => 5.00, "234" => 5.00, "235" => 5.00, "236" => 5.00, "237" => 5.00, "238" => 5.00, "239" => 5.00, "240" => 5.00, "241" => 5.00, "242" => 5.00, "243" => 5.00, "244" => 5.00, "245" => 5.00, "246" => 5.00, "247" => 5.00, "248" => 5.00, "249" => 5.00, "250" => 5.00, "251" => 5.00, "252" => 5.00, "253" => 5.00, "254" => 5.00, "255" => 5.00, "256" => 5.00, "257" => 5.00, "258" => 5.00, "259" => 5.00, "260" => 5.00, "261" => 5.00, "262" => 5.00, "263" => 5.00, "264" => 5.00, "265" => 5.00, "266" => 5.00, "267" => 5.00, "268" => 5.00, "269" => 5.00, "270" => 5.00, "271" => 5.00, "272" => 5.00, "273" => 5.00, "274" => 5.00, "275" => 5.00, "276" => 5.00, "277" => 5.00, "278" => 5.00, "279" => 5.00, "280" => 5.00, "281" => 5.00, "282" => 5.00, "283" => 5.00, "284" => 5.00, "285" => 5.00, "286" => 5.00, "287" => 5.00, "288" => 5.00, "289" => 5.00, "290" => 5.00, "291" => 5.00, "292" => 5.00, "293" => 5.00, "294" => 5.00, "295" => 5.00, "296" => 5.00, "297" => 5.00, "298" => 5.00, "299" => 5.00, "300" => 5.00, "301" => 5.00, "302" => 5.00, "303" => 5.00, "304" => 5.00, "305" => 5.00, "306" => 5.00, "307" => 5.00, "308" => 5.00, "309" => 5.00, "310" => 5.00, "311" => 5.00, "312" => 5.00, "313" => 5.00, "314" => 5.00, "315" => 5.00, "316" => 5.00, "317" => 5.00, "318" => 5.00, "319" => 5.00, "320" => 5.00, "321" => 5.00, "322" => 5.00, "323" => 5.00, "324" => 5.00, "325" => 5.00, "326" => 5.00, "327" => 5.00, "328" => 5.00, "329" => 5.00, "330" => 5.00, "331" => 5.00, "332" => 5.00, "333" => 5.00, "334" => 5.00, "335" => 5.00, "336" => 5.00, "337" => 5.00, "338" => 5.00, "339" => 5.00, "340" => 5.00, "341" => 5.00, "342" => 5.00, "343" => 5.00, "344" => 5.00, "345" => 5.00, "346" => 5.00, "347" => 5.00, "348" => 5.00, "349" => 5.00, "350" => 5.00, "351" => 5.00, "352" => 5.00, "353" => 5.00, "354" => 5.00, "355" => 5.00, "356" => 5.00, "357" => 5.00, "358" => 5.00, "359" => 5.00, "360" => 5.00, "361" => 5.00, "362" => 5.00, "363" => 5.00, "364" => 5.00, "365" => 5.00, "366" => 5.00, "367" => 5.00, "368" => 5.00, "369" => 5.00, "370" => 5.00, "371" => 5.00, "372" => 5.00, "373" => 5.00, "374" => 5.00, "375" => 5.00, "376" => 5.00, "377" => 5.00, "378" => 5.00, "379" => 5.00, "380" => 5.00, "381" => 5.00, "382" => 5.00, "383" => 5.00, "384" => 5.00, "385" => 5.00, "386" => 5.00, "387" => 5.00, "388" => 5.00, "389" => 5.00, "390" => 5.00, "391" => 5.00, "392" => 5.00, "393" => 5.00, "394" => 5.00, "395" => 5.00, "396" => 5.00, "397" => 5.00, "398" => 5.00, "399" => 5.00, "400" => 5.00, "401" => 5.00, "402" => 5.00, "403" => 5.00, "404" => 5.00, "405" => 5.00, "406" => 5.00, "407" => 5.00, "408" => 5.00, "409" => 5.00, "410" => 5.00, "411" => 5.00, "412" => 5.00, "413" => 5.00, "414" => 5.00, "415" => 5.00, "416" => 5.00, "417" => 5.00, "418" => 5.00, "419" => 5.00, "420" => 5.00, "421" => 5.00, "422" => 5.00, "423" => 5.00, "424" => 5.00, "425" => 5.00, "426" => 5.00, "427" => 5.00, "428" => 5.00, "429" => 5.00, "430" => 5.00, "431" => 5.00, "432" => 5.00, "433" => 5.00, "434" => 5.00, "435" => 5.00, "436" => 5.00, "437" => 5.00, "438" => 5.00, "439" => 5.00, "440" => 5.00, "441" => 5.00, "442" => 5.00, "443" => 5.00, "444" => 5.00, "445" => 5.00, "446" => 5.00, "447" => 5.00, "448" => 5.00, "449" => 5.00, "450" => 5.00, "451" => 5.00, "452" => 5.00, "453" => 5.00, "454" => 5.00, "455" => 5.00, "456" => 5.00, "457" => 5.00, "458" => 5.00, "459" => 5.00, "460" => 5.00, "461" => 5.00, "462" => 5.00, "463" => 5.00, "464" => 5.00, "465" => 5.00, "466" => 5.00, "467" => 5.00, "468" => 5.00, "469" => 5.00, "470" => 5.00, "471" => 5.00, "472" => 5.00, "473" => 5.00, "474" => 5.00, "475" => 5.00, "476" => 5.00, "477" => 5.00, "478" => 5.00, "479" => 5.00, "480" => 5.00, "481" => 5.00, "482" => 5.00, "483" => 5.00, "484" => 5.00, "485" => 5.00, "486" => 5.00, "487" => 5.00, "488" => 5.00, "489" => 5.00, "490" => 5.00, "491" => 5.00, "492" => 5.00, "493" => 5.00, "494" => 5.00, "495" => 5.00, "496" => 5.00, "497" => 5.00, "498" => 5.00, "499" => 5.00, "500" => 5.00, "501" => 5.00, "502" => 5.00, "503" => 5.00, "504" => 5.00, "505" => 5.00, "506" => 5.00, "507" => 5.00, "508" => 5.00, "509" => 5.00, "510" => 5.00, "511" => 5.00, "512" => 5.00, "513" => 5.00, "514" => 5.00, "515" => 5.00, "516" => 5.00, "517" => 5.00, "518" => 5.00, "519" => 5.00, "520" => 5.00, "521" => 5.00, "522" => 5.00, "523" => 5.00, "524" => 5.00, "525" => 5.00, "526" => 5.00, "527" => 5.00, "528" => 5.00, "529" => 5.00, "530" => 5.00, "531" => 5.00, "532" => 5.00, "533" => 5.00, "534" => 5.00, "535" => 5.00, "536" => 5.00, "537" => 5.00, "538" => 5.00, "539" => 5.00, "540" => 5.00, "541" => 5.00, "542" => 5.00, "543" => 5.00, "544" => 5.00, "545" => 5.00, "546" => 5.00, "547" => 5.00, "548" => 5.00, "549" => 5.00, "550" => 5.00, "551" => 5.00, "552" => 5.00, "553" => 5.00, "554" => 5.00, "555" => 5.00, "556" => 5.00, "557" => 5.00, "558" => 5.00, "559" => 5.00, "560" => 5.00, "561" => 5.00, "562" => 5.00, "563" => 5.00, "564" => 5.00, "565" => 5.00, "566" => 5.00, "567" => 5.00, "568" => 5.00, "569" => 5.00, "570" => 5.00, "571" => 5.00, "572" => 5.00, "573" => 5.00, "574" => 5.00, "575" => 5.00, "576" => 5.00, "577" => 5.00, "578" => 5.00, "579" => 5.00, "580" => 5.00, "581" => 5.00, "582" => 5.00, "583" => 5.00, "584" => 5.00, "585" => 5.00, "586" => 5.00, "587" => 5.00, "588" => 5.00, "589" => 5.00, "590" => 5.00, "591" => 5.00, "592" => 5.00, "593" => 5.00, "594" => 5.00, "595" => 5.00, "596" => 5.00, "597" => 5.00, "598" => 5.00, "599" => 5.00, "600" => 5.00, "601" => 5.00, "602" => 5.00, "603" => 5.00, "604" => 5.00, "605" => 5.00, "606" => 5.00, "607" => 5.00, "608" => 5.00, "609" => 5.00, "610" => 5.00, "611" => 5.00, "612" => 5.00, "613" => 5.00, "614" => 5.00, "615" => 5.00, "616" => 5.00, "617" => 5.00, "618" => 5.00, "619" => 5.00, "620" => 5.00, "621" => 5.00, "622" => 5.00, "623" => 5.00, "624" => 5.00, "625" => 5.00, "626" => 5.00, "627" => 5.00, "628" => 5.00, "629" => 5.00, "630" => 5.00, "631" => 5.00, "632" => 5.00, "8718" => 5.00, "8719" => 5.00, "9354" => 7.72, "9355" => 8.37, "9356" => 2.46, "9357" => 4.32, "9358" => 8.40, "9359" => 10.73, "9360" => 10.72, "9361" => 6.34, "9362" => 3.13, "9363" => 6.73, "9364" => 6.37, "9365" => 6.70, "9366" => 8.08, "9367" => 2.93, "9368" => 8.29, "9369" => 6.85, "9370" => 8.38, "9371" => 9.29, "9372" => 9.49, "9373" => 9.49, "9374" => 9.29, "9375" => 9.29, "9376" => 9.49, "9377" => 4.23, "9378" => 4.23, "9379" => 4.23, "9380" => 4.23, "9381" => 4.23, "9382" => 4.23, "9383" => 4.23, "9384" => 4.23, "9385" => 4.23, "9386" => 4.23, "9387" => 4.23, "9388" => 4.23, "9389" => 4.23, "9390" => 4.23, "9391" => 4.23, "9392" => 4.23, "9393" => 4.23, "9394" => 8.08, "9395" => 6.85, "9396" => 6.85, "9397" => 6.85, "9398" => 2.93, "9399" => 2.93, "9400" => 2.93, "9401" => 8.38, "9402" => 8.38, "9403" => 8.29, "9404" => 8.29, "9405" => 8.29, "9406" => 6.34, "9407" => 6.37, "9408" => 6.37, "9409" => 6.37, "9410" => 3.49, "9411" => 2.71, "9412" => 3.71, "9413" => 6.70, "9414" => 6.70, "9415" => 6.73, "9416" => 6.73, "9417" => 6.73, "9418" => 7.13, "9419" => 7.13, "9420" => 7.13, "9421" => 10.39, "9422" => 10.39, "9423" => 6.25, "9424" => 6.25, "9425" => 6.25, "9426" => 6.37, "9427" => 6.37, "9428" => 6.37, "9429" => 8.32, "9430" => 8.32, "9431" => 8.32, "9432" => 5.84, "9433" => 5.84, "9434" => 5.84, "9435" => 3.09, "9436" => 6.70, "9437" => 6.70, "9438" => 6.21, "9439" => 6.21, "9440" => 6.21, "9441" => 5.87, "9442" => 4.64, "9443" => 2.34, "9444" => 3.33, "9445" => 3.39, "9446" => 4.06, "9447" => 7.13, "9448" => 7.12, "9449" => 9.35, "9450" => 8.47, "9451" => 2.20, "9452" => 4.06, "9453" => 4.06, "9454" => 3.82, "9455" => 6.85, "9456" => 2.70, "9457" => 4.11, "9458" => 2.70, "9459" => 5.20, "9460" => 7.13, "9461" => 7.12, "9462" => 7.12, "9463" => 7.13, "9464" => 7.12, "9465" => 7.12, "9466" => 7.12, "9467" => 7.12, "9468" => 7.12, "9469" => 7.12, "9470" => 2.70, "9471" => 2.70, "9472" => 5.77, "9473" => 6.85, "9474" => 5.77, "9475" => 6.17, "9476" => 9.37, "9477" => 7.96, "9478" => 7.48, "9479" => 7.63, "9480" => 7.98, "9481" => 6.82, "9482" => 6.42, "9483" => 7.82, "9484" => 8.18, "9485" => 3.07, "9486" => 5.90, "9487" => 7.49, "9488" => 6.39, "9489" => 9.73, "9490" => 8.13, "9491" => 8.27, "9492" => 6.87, "9493" => 8.28, "9494" => 7.63, "9495" => 7.10, "9496" => 6.94, "9497" => 8.20, "9498" => 7.73, "9499" => 10.31, "9500" => 7.99, "9501" => 7.48, "9502" => 7.00, "9503" => 4.06, "9504" => 7.67, "9505" => 4.06, "9506" => 5.88, "9507" => 5.80, "9508" => 5.00, "9509" => 6.44, "9510" => 6.87, "9511" => 5.97, "9512" => 6.90, "9513" => 6.54, "9514" => 4.18, "9515" => 6.73, "9516" => 6.690001, "9517" => 2.85, "9518" => 2.96, "9519" => 6.25, "9520" => 2.85, "9521" => 9.92, "9522" => 6.690001, "9523" => 6.56, "9524" => 6.90, "9525" => 6.87, "9526" => 4.61, "9527" => 5.66, "9528" => 4.24, "9529" => 6.52, "9530" => 6.16, "9531" => 8.360001, "9532" => 6.13, "9533" => 6.24, "9534" => 5.49, "9535" => 4.06, "9536" => 4.15, "9537" => 4.06, "9538" => 5.00, "9539" => 2.70, "9540" => 5.20, "9541" => 2.70, "9542" => 4.24, "9543" => 6.85, "9544" => 3.39, "9545" => 7.12, "9546" => 7.25, "9547" => 0.95, "9548" => 7.12, "9549" => 7.08, "9550" => 5.97, "9551" => 4.68, "9552" => 5.71, "9553" => 3.61, "9554" => 3.61, "9555" => 6.89, "9556" => 6.88, "9557" => 5.00, "9558" => 6.40, "9559" => 6.40, "9560" => 2.70, "9561" => 6.28, "9562" => 5.20, "9563" => 2.70, "9564" => 4.68, "9565" => 4.68, "9566" => 5.71, "9567" => 8.10, "9568" => 13.52, "9569" => 6.17, "9570" => 5.00, "9571" => 5.00, "9572" => 5.00, "9573" => 5.00, "9574" => 5.00, "9575" => 5.00, "9576" => 5.00, "9577" => 5.00, "9578" => 5.00, "9579" => 5.00, "9580" => 5.00, "9582" => 11.280001, "9583" => 4.65, "9584" => 6.39, "9585" => 8.28, "9586" => 10.959999, "9587" => 4.65, "9588" => 10.43, "9589" => 2.85, "9590" => 3.58, "9591" => 6.66, "9592" => 10.80, "9593" => 6.84, "9594" => 6.85, "9595" => 5.71, "9596" => 6.85, "9597" => 5.71, "9598" => 3.39, "9599" => 6.85, "9600" => 4.30, "9601" => 4.30, "9602" => 6.85, "9603" => 4.30, "9604" => 9.55, "9605" => 9.55, "9606" => 9.55, "9607" => 7.96, "9608" => 7.96, "9609" => 7.96, "9610" => 7.96, "9611" => 7.96, "9612" => 7.96, "9613" => 7.63, "9614" => 6.82, "9615" => 6.82, "9616" => 6.82, "9617" => 6.82, "9618" => 3.07, "9619" => 3.07, "9620" => 3.07, "9621" => 3.07, "9622" => 7.98, "9623" => 8.13, "9624" => 8.27, "9625" => 8.27, "9626" => 8.27, "9627" => 8.27, "9628" => 8.27, "9629" => 6.85, "9630" => 8.20, "9631" => 8.20, "9632" => 8.20, "9633" => 8.20, "9634" => 7.48, "9635" => 6.94, "9636" => 6.44, "9637" => 6.44, "9638" => 6.44, "9639" => 6.44, "9640" => 6.44, "9641" => 6.44, "9642" => 5.97, "9643" => 6.54, "9644" => 6.54, "9645" => 6.54, "9646" => 6.54, "9647" => 2.86, "9648" => 2.85, "9649" => 2.85, "9650" => 2.85, "9651" => 6.95, "9652" => 6.690001, "9653" => 6.56, "9654" => 6.56, "9655" => 6.56, "9656" => 6.56, "9657" => 6.56, "9658" => 6.85, "9659" => 6.52, "9660" => 6.52, "9661" => 6.52, "9662" => 6.52, "9663" => 6.24, "9664" => 7.03, "9665" => 6.24, "9666" => 7.10, "9667" => 7.48, "9668" => 7.00, "9669" => 5.80, "9670" => 5.66, "9671" => 10.39, "9672" => 5.49, "9673" => 7.12, "9674" => 7.71, "9675" => 8.57, "9676" => 2.46, "9677" => 4.32, "9678" => 7.83, "9679" => 10.54, "9680" => 10.54, "9681" => 6.44, "9682" => 2.85, "9683" => 6.52, "9684" => 6.54, "9685" => 6.56, "9686" => 7.96, "9687" => 3.07, "9688" => 8.20, "9689" => 6.82, "9690" => 8.27, "9691" => 9.55, "9692" => 9.55, "9693" => 9.55, "9694" => 9.55, "9695" => 9.55, "9696" => 9.55, "9697" => 4.30, "9698" => 4.30, "9699" => 4.30, "9700" => 4.30, "9701" => 4.30, "9702" => 4.30, "9703" => 4.30, "9704" => 4.30, "9705" => 4.30, "9706" => 4.30, "9707" => 4.30, "9708" => 4.30, "9709" => 4.30, "9710" => 4.30, "9711" => 4.30, "9712" => 4.30, "9713" => 4.30, "9714" => 7.96, "9715" => 6.82, "9716" => 6.82, "9717" => 6.82, "9718" => 3.07, "9719" => 3.07, "9720" => 3.07, "9721" => 8.27, "9722" => 8.27, "9723" => 8.20, "9724" => 8.20, "9725" => 8.20, "9726" => 6.44, "9727" => 6.54, "9728" => 6.54, "9729" => 6.54, "9730" => 2.85, "9731" => 2.85, "9732" => 2.85, "9733" => 6.56, "9734" => 6.56, "9735" => 6.52, "9736" => 6.52, "9737" => 6.52, "9738" => 2.50, "9739" => 2.50, "9740" => 2.50, "9741" => 2.50, "9742" => 2.50, "9743" => 2.50, "9744" => 2.50, "9745" => 2.50, "9746" => 2.50, "9747" => 2.50, "9748" => 2.50, "9749" => 2.50, "9750" => 2.50, "9751" => 2.50, "9752" => 2.50, "9753" => 2.50, "9754" => 2.50, "9755" => 2.50, "9756" => 2.50, "9757" => 2.50, "9758" => 3.33, "9759" => 3.33, "9760" => 3.33, "9761" => 3.33, "9762" => 3.33, "9763" => 3.33, "9764" => 3.33, "9765" => 3.33, "9766" => 3.33, "9767" => 3.33, "9768" => 3.33, "9769" => 3.33, "9770" => 3.33, "9771" => 3.33, "9772" => 3.33, "9773" => 3.33, "9774" => 3.33, "9775" => 3.33, "9776" => 3.33, "9777" => 3.33, "9778" => 3.33, "12063" => 5.00, "12064" => 5.00, "12065" => 5.00, "12066" => 5.00, "12067" => 5.00, "12068" => 5.00, "12069" => 5.00, "12070" => 5.00, "12071" => 5.00, "12072" => 5.00, "12073" => 5.00, "12074" => 5.00, "12075" => 5.00, "12076" => 5.00, "12077" => 5.00, "12078" => 5.00, "12079" => 5.00, "12080" => 5.00, "12081" => 5.00, "12082" => 5.00, "12083" => 5.00, "12084" => 5.00, "12085" => 5.00, "12086" => 5.00, "12087" => 5.00, "15444" => 3.33, "15445" => 3.33, "15446" => 3.33, "15447" => 3.33, "15448" => 3.33, "15449" => 7.49, "15450" => 8.00, "15451" => 7.53, "15452" => 8.09, "15453" => 8.62, "15454" => 9.33, "15456" => 6.85, "15457" => 6.85, "15458" => 6.85, "15459" => 6.85, "15460" => 6.85, "15461" => 11.139999, "15462" => 8.83, "15463" => 9.190001, "15464" => 6.85, "15465" => 6.85, "15466" => 6.85, "15467" => 6.85, "15468" => 6.85, "15469" => 6.85, "15470" => 6.85, "15471" => 6.85, "15472" => 6.85, "15473" => 6.85, "15474" => 6.85, "15475" => 6.85, "15476" => 6.85, "15477" => 9.23, "15478" => 6.85, "15479" => 6.85, "15480" => 6.85, "15481" => 6.85, "15482" => 9.75, "15483" => 9.75, "15484" => 7.92, "15485" => 7.92, "15486" => 9.09, "15487" => 9.09, "15488" => 9.09, "15489" => 6.85, "15490" => 6.85, "15491" => 6.85, "15492" => 6.85, "15493" => 6.48, "15494" => 8.26, "15495" => 6.85, "15496" => 6.85, "15497" => 6.85, "15498" => 6.85, "15499" => 5.71, "15500" => 6.86, "15501" => 6.86, "15502" => 6.85, "15503" => 3.83, "15504" => 6.29, "15505" => 6.85, "15506" => 6.85, "15507" => 6.85, "15508" => 6.85, "15509" => 6.85, "15510" => 6.85, "15511" => 9.75, "15512" => 6.85, "15513" => 7.38, "15514" => 6.46, "15515" => 8.37, "15516" => 5.00, "15517" => 8.77, "15518" => 9.41, "15519" => 8.95, "15520" => 9.52, "15521" => 8.27, "15522" => 8.74, "15523" => 8.56, "15524" => 9.33, "15525" => 9.02, "15526" => 9.62, "15527" => 9.72, "15528" => 9.82, "15529" => 9.09, "15530" => 9.49, "15531" => 7.92, "15532" => 8.50, "15533" => 9.37, "15534" => 9.82, "15535" => 8.65, "15536" => 9.00, "15537" => 9.02, "15538" => 9.30, "15539" => 8.84, "15540" => 8.94, "15541" => 9.33, "15542" => 9.66, "15543" => 9.65, "15544" => 9.86, "15545" => 9.48, "15546" => 9.639999, "15547" => 9.45, "15548" => 9.51, "15549" => 9.049999, "15550" => 9.16, "15551" => 8.84, "15552" => 9.41, "15553" => 9.68, "15554" => 9.12, "15555" => 9.42, "15556" => 8.62, "15557" => 8.780001, "15558" => 9.66, "15559" => 9.42, "15560" => 9.72, "15561" => 9.82, "15562" => 9.599999, "15563" => 9.69, "15564" => 9.85, "15565" => 9.80, "15566" => 9.52, "15567" => 9.700001, "15568" => 9.63, "15569" => 9.62, "15570" => 9.78, "15571" => 9.73, "15572" => 9.76, "15573" => 9.76, "15574" => 9.73, "15575" => 9.73, "15576" => 9.88, "15577" => 9.90, "15578" => 9.24, "15579" => 9.62, "15580" => 9.52, "15581" => 9.54, "15582" => 9.10, "15583" => 8.90, "15584" => 9.49, "15585" => 8.98, "15586" => 9.63, "15587" => 8.360001, "15588" => 8.95, "15589" => 8.809999, "15590" => 8.59, "15591" => 9.110001, "15592" => 9.82, "15593" => 8.94, "15594" => 9.07, "15595" => 9.700001, "15596" => 9.29, "15597" => 9.53, "15598" => 9.33, "15599" => 9.47, "15600" => 9.47, "15601" => 9.06, "15602" => 8.780001, "15603" => 9.83, "15604" => 9.66, "15605" => 8.50, "15606" => 9.83, "15607" => 9.110001, "15608" => 8.61, "15609" => 9.24, "15610" => 8.44, "15611" => 9.13, "15612" => 8.61, "15613" => 9.06, "15614" => 8.83, "15615" => 9.52, "15616" => 8.88, "15617" => 9.39, "15618" => 9.33, "15619" => 9.53, "15620" => 9.45, "15621" => 9.54, "15622" => 8.96, "15623" => 9.57, "15624" => 9.43, "15625" => 9.66, "15626" => 9.150001, "15627" => 9.59, "15628" => 9.42, "15629" => 9.72, "15630" => 9.22, "15631" => 9.50, "15632" => 9.32, "15633" => 9.73, "15634" => 9.36, "15635" => 9.63, "15636" => 8.76, "15637" => 9.190001, "15638" => 9.00, "15639" => 9.65, "15640" => 9.48, "15641" => 9.63, "15642" => 8.40, "15643" => 9.13, "15644" => 9.53, "15645" => 9.38, "15646" => 9.67, "15647" => 8.30, "15648" => 8.48, "15649" => 9.32, "15650" => 9.42, "15651" => 8.70, "15652" => 9.46, "15653" => 8.70, "15654" => 9.66, "15655" => 9.78, "15656" => 9.75, "15657" => 8.88, "15658" => 9.41, "15659" => 9.33, "15660" => 8.809999, "15661" => 9.42, "15662" => 9.309999, "15663" => 9.77, "15664" => 9.73, "15665" => 9.700001, "15666" => 9.67, "15667" => 9.71, "15668" => 9.72, "15669" => 9.190001, "15670" => 8.64, "15671" => 9.40, "15672" => 8.92, "15673" => 9.610001, "15674" => 8.73, "15675" => 9.39, "15676" => 8.65, "15677" => 9.37, "15678" => 8.719999, "15679" => 9.190001, "15680" => 8.97, "15681" => 8.43, "15682" => 9.639999, "15683" => 8.90, "15684" => 9.51, "15685" => 8.51, "15686" => 8.97, "15687" => 9.639999, "15688" => 9.52, "15689" => 8.76, "15690" => 9.12, "15691" => 9.51, "15692" => 8.80, "15693" => 8.74, "15694" => 9.610001, "15695" => 9.73, "15696" => 9.66, "15697" => 9.599999, "15698" => 9.54, "15699" => 9.52, "15700" => 9.47, "15701" => 8.44, "15702" => 8.34, "15703" => 8.67, "15704" => 8.59, "15705" => 7.90, "15706" => 8.349999, "15707" => 8.84, "15708" => 8.43, "15709" => 8.30, "15710" => 8.94, "15711" => 9.09, "15712" => 8.71, "15713" => 8.61, "15714" => 8.54, "15715" => 8.13, "15716" => 8.90, "15717" => 8.41, "15718" => 8.93, "15719" => 9.599999, "15720" => 9.700001, "15721" => 9.700001, "15722" => 9.39, "15723" => 8.18, "15724" => 8.65, "15725" => 6.85, "15726" => 6.85, "15727" => 9.29, "15728" => 8.780001, "15729" => 9.87, "15730" => 10.10, "15731" => 8.21, "15732" => 6.73, "15733" => 6.73, "15734" => 6.73, "15735" => 6.73, "15736" => 6.73, "15737" => 8.08, "15738" => 5.00, "15739" => 6.43, "15740" => 7.15, "15741" => 7.15, "15742" => 7.09, "15743" => 7.07, "15744" => 7.07, "15745" => 6.34, "15746" => 8.04, "15747" => 3.49, "15748" => 5.93, "15749" => 5.00, "15750" => 5.93, "15751" => 4.34, "15752" => 5.41, "15753" => 5.00, "15754" => 5.41, "15755" => 7.73, "15756" => 8.08, "15757" => 6.43, "15758" => 7.93, "15759" => 7.93, "15760" => 6.85, "15761" => 8.059999, "15762" => 8.21, "15763" => 8.21, "15764" => 8.38, "15765" => 7.73, "15766" => 8.29, "15767" => 7.09, "15768" => 4.92, "15769" => 6.34, "15770" => 3.33, "15771" => 6.25, "15772" => 6.25, "15773" => 6.37, "15774" => 7.49, "15775" => 7.19, "15776" => 6.73, "15777" => 6.73, "15778" => 6.70, "15779" => 4.92, "15780" => 6.73, "15781" => 4.34, "15782" => 5.00, "15783" => 7.93, "15784" => 7.90, "15785" => 8.26, "15786" => 5.91, "15787" => 7.15, "15788" => 8.29, "15789" => 6.25, "15790" => 6.92, "15791" => 7.11, "15792" => 3.49, "15793" => 5.93, "15794" => 6.73, "15795" => 10.07, "15796" => 6.15, "15797" => 4.72, "15798" => 5.01, "15799" => 6.93, "15800" => 4.92, "15801" => 4.34, "15802" => 7.07, "15803" => 6.73, "15804" => 4.92, "15805" => 5.93, "15806" => 5.45, "15807" => 4.92, "15808" => 2.71, "15809" => 4.77, "15810" => 6.73, "15811" => 4.86, "15812" => 6.28, "15813" => 6.90, "15814" => 10.10, "15815" => 6.14, "15816" => 6.87, "15817" => 5.93, "15818" => 5.93, "15819" => 6.73, "15820" => 8.38, "15821" => 5.64, "15822" => 7.05, "15823" => 7.74, "15824" => 4.68, "15825" => 7.59, "15826" => 7.90, "15827" => 2.98, "15828" => 7.00, "15829" => 6.37, "15830" => 5.84, "15831" => 6.62, "15832" => 6.34, "15833" => 10.10, "15834" => 6.74, "15835" => 6.48, "15836" => 7.13, "15837" => 8.50, "15838" => 6.73, "15839" => 5.93, "15840" => 5.93, "15841" => 6.16, "15842" => 6.20, "15843" => 4.92, "15844" => 6.70, "15845" => 0.00, "15846" => 1.82, "15847" => 1.82, "15848" => 2.34, "15849" => 0.00, "15850" => 5.00, "15851" => 5.11, "15852" => 5.11, "15853" => 5.11, "15854" => 5.11, "15855" => 5.11, "15856" => 5.38, "15857" => 5.38, "15858" => 5.00, "15859" => 5.00, "15860" => 5.00, "15861" => 5.00, "15862" => 5.00, "15863" => 5.00, "15864" => 5.00, "15865" => 5.00, "15866" => 5.00, "15867" => 1.84, "15868" => 5.00, "15869" => 5.00, "15870" => 5.00, "15871" => 5.00, "15872" => 5.00, "15873" => 5.00, "15874" => 5.00, "15875" => 5.00, "15876" => 5.00, "15877" => 5.00, "15878" => 5.00, "15879" => 4.37, "15880" => 3.83, "15881" => 6.85, "15882" => 6.85, "15883" => 6.62, "15884" => 6.28, "15885" => 2.65, "15886" => 6.58, "15887" => 8.95, "15888" => 7.34, "15889" => 6.14, "15890" => 6.15, "15891" => 6.12, "15892" => 6.73, "15893" => 5.18, "15894" => 3.88, "15895" => 3.03, "15896" => 5.13, "15897" => 3.49, "15898" => 3.83, "15899" => 1.72, "15900" => 6.46, "15901" => 7.07, "15902" => 8.75, "15903" => 6.85, "15904" => 6.85, "15905" => 9.09, "15906" => 9.110001, "15907" => 9.110001, "15908" => 3.88, "15909" => 6.63, "15910" => 6.54, "15911" => 6.31, "15912" => 8.57, "15913" => 5.00, "15914" => 9.55, "15915" => 9.73, "15916" => 9.92, "15917" => 8.13, "15918" => 6.690001, "15919" => 6.52, "15920" => 6.52, "15921" => 6.52, "15922" => 6.52, "15923" => 7.96, "15924" => 6.39, "15925" => 7.10, "15926" => 7.10, "15927" => 6.94, "15928" => 7.00, "15929" => 7.00, "15930" => 6.44, "15931" => 2.85, "15932" => 5.66, "15933" => 5.66, "15934" => 4.24, "15935" => 5.49, "15936" => 5.49, "15937" => 7.63, "15938" => 7.96, "15939" => 6.39, "15940" => 7.63, "15941" => 7.63, "15942" => 6.82, "15943" => 7.98, "15944" => 8.13, "15945" => 8.13, "15946" => 8.27, "15947" => 7.63, "15948" => 8.20, "15949" => 6.94, "15950" => 4.61, "15951" => 6.44, "15952" => 2.85, "15953" => 5.97, "15954" => 5.97, "15955" => 6.54, "15956" => 6.90, "15957" => 6.90, "15958" => 6.690001, "15959" => 6.690001, "15960" => 6.56, "15961" => 4.61, "15962" => 6.52, "15963" => 4.24, "15964" => 7.63, "15965" => 7.82, "15966" => 8.18, "15967" => 5.90, "15968" => 7.10, "15969" => 8.20, "15970" => 5.97, "15971" => 6.73, "15972" => 6.690001, "15973" => 2.96, "15974" => 5.66, "15975" => 6.52);
+%maru_w4=("1" => 3.33, "2" => 3.02, "3" => 3.74, "4" => 6.44, "5" => 6.39, "6" => 8.89, "7" => 7.71, "8" => 2.90, "9" => 3.66, "10" => 3.66, "11" => 4.03, "12" => 6.690001, "13" => 3.01, "14" => 4.44, "15" => 3.01, "16" => 4.74, "17" => 6.52, "18" => 6.52, "19" => 6.52, "20" => 6.52, "21" => 6.52, "22" => 6.52, "23" => 6.52, "24" => 6.52, "25" => 6.52, "26" => 6.52, "27" => 3.06, "28" => 3.06, "29" => 5.45, "30" => 6.690001, "31" => 5.45, "32" => 5.79, "33" => 9.08, "34" => 7.60, "35" => 7.26, "36" => 7.42, "37" => 7.71, "38" => 6.47, "39" => 6.53, "40" => 7.65, "41" => 7.93, "42" => 2.70, "43" => 5.23, "44" => 6.92, "45" => 6.30, "46" => 9.54, "47" => 7.79, "48" => 8.05, "49" => 6.99, "50" => 8.03, "51" => 7.20, "52" => 6.71, "53" => 6.76, "54" => 7.74, "55" => 7.26, "56" => 10.33, "57" => 7.20, "58" => 7.08, "59" => 6.81, "60" => 3.81, "61" => 6.70, "62" => 3.81, "63" => 5.69, "64" => 5.00, "65" => 5.00, "66" => 5.73, "67" => 6.24, "68" => 5.54, "69" => 6.25, "70" => 5.74, "71" => 4.00, "72" => 6.18, "73" => 6.01, "74" => 2.34, "75" => 2.81, "76" => 5.36, "77" => 2.33, "78" => 8.77, "79" => 6.00, "80" => 6.03, "81" => 6.24, "82" => 6.24, "83" => 4.32, "84" => 5.35, "85" => 4.03, "86" => 5.97, "87" => 5.50, "88" => 8.07, "89" => 5.25, "90" => 5.51, "91" => 5.16, "92" => 3.96, "93" => 3.72, "94" => 3.97, "95" => 6.49, "96" => 2.96, "97" => 4.74, "98" => 2.96, "99" => 3.72, "100" => 6.49, "101" => 3.02, "102" => 5.54, "103" => 6.46, "104" => 1.28, "105" => 5.39, "106" => 6.10, "107" => 5.74, "108" => 4.30, "109" => 4.82, "110" => 3.09, "111" => 3.09, "112" => 6.34, "113" => 6.34, "114" => 5.00, "115" => 5.94, "116" => 5.94, "117" => 3.01, "118" => 6.14, "119" => 4.94, "120" => 3.01, "121" => 4.30, "122" => 4.30, "123" => 4.82, "124" => 9.04, "125" => 12.940001, "126" => 5.79, "127" => 5.00, "128" => 5.00, "129" => 5.00, "130" => 5.00, "131" => 5.00, "132" => 5.00, "133" => 5.00, "134" => 7.42, "135" => 5.00, "136" => 7.42, "137" => 5.00, "139" => 10.80, "140" => 4.15, "141" => 6.60, "142" => 8.05, "143" => 10.809999, "144" => 4.37, "145" => 9.34, "146" => 2.34, "147" => 3.20, "148" => 6.03, "149" => 9.90, "150" => 6.33, "151" => 6.690001, "152" => 5.70, "153" => 6.690001, "154" => 5.71, "155" => 2.77, "156" => 6.690001, "157" => 4.03, "158" => 4.03, "159" => 6.03, "160" => 4.03, "161" => 8.29, "162" => 8.29, "163" => 8.29, "164" => 7.60, "165" => 7.60, "166" => 7.60, "167" => 7.60, "168" => 7.60, "169" => 7.60, "170" => 7.42, "171" => 6.47, "172" => 6.47, "173" => 6.47, "174" => 6.47, "175" => 2.70, "176" => 2.70, "177" => 3.08, "178" => 2.95, "179" => 7.81, "180" => 7.79, "181" => 8.05, "182" => 8.05, "183" => 8.05, "184" => 8.05, "185" => 8.05, "186" => 6.690001, "187" => 7.74, "188" => 7.74, "189" => 7.74, "190" => 7.74, "191" => 7.08, "192" => 6.95, "193" => 5.73, "194" => 5.73, "195" => 5.73, "196" => 5.73, "197" => 5.73, "198" => 5.73, "199" => 5.54, "200" => 5.74, "201" => 5.74, "202" => 5.74, "203" => 5.74, "204" => 2.34, "205" => 2.34, "206" => 2.78, "207" => 2.88, "208" => 5.92, "209" => 6.00, "210" => 6.03, "211" => 6.03, "212" => 6.03, "213" => 6.03, "214" => 6.03, "215" => 6.690001, "216" => 5.97, "217" => 5.97, "218" => 5.97, "219" => 5.97, "220" => 5.51, "221" => 6.24, "222" => 5.51, "223" => 6.71, "224" => 7.08, "225" => 6.81, "226" => 5.00, "227" => 5.35, "228" => 9.559999, "229" => 5.16, "230" => 6.52, "231" => 5.00, "232" => 5.00, "233" => 5.00, "234" => 5.00, "235" => 5.00, "236" => 5.00, "237" => 5.00, "238" => 5.00, "239" => 5.00, "240" => 5.00, "241" => 5.00, "242" => 5.00, "243" => 5.00, "244" => 5.00, "245" => 5.00, "246" => 5.00, "247" => 5.00, "248" => 5.00, "249" => 5.00, "250" => 5.00, "251" => 5.00, "252" => 5.00, "253" => 5.00, "254" => 5.00, "255" => 5.00, "256" => 5.00, "257" => 5.00, "258" => 5.00, "259" => 5.00, "260" => 5.00, "261" => 5.00, "262" => 5.00, "263" => 5.00, "264" => 5.00, "265" => 5.00, "266" => 5.00, "267" => 5.00, "268" => 5.00, "269" => 5.00, "270" => 5.00, "271" => 5.00, "272" => 5.00, "273" => 5.00, "274" => 5.00, "275" => 5.00, "276" => 5.00, "277" => 5.00, "278" => 5.00, "279" => 5.00, "280" => 5.00, "281" => 5.00, "282" => 5.00, "283" => 5.00, "284" => 5.00, "285" => 5.00, "286" => 5.00, "287" => 5.00, "288" => 5.00, "289" => 5.00, "290" => 5.00, "291" => 5.00, "292" => 5.00, "293" => 5.00, "294" => 5.00, "295" => 5.00, "296" => 5.00, "297" => 5.00, "298" => 5.00, "299" => 5.00, "300" => 5.00, "301" => 5.00, "302" => 5.00, "303" => 5.00, "304" => 5.00, "305" => 5.00, "306" => 5.00, "307" => 5.00, "308" => 5.00, "309" => 5.00, "310" => 5.00, "311" => 5.00, "312" => 5.00, "313" => 5.00, "314" => 5.00, "315" => 5.00, "316" => 5.00, "317" => 5.00, "318" => 5.00, "319" => 5.00, "320" => 5.00, "321" => 5.00, "322" => 5.00, "323" => 5.00, "324" => 5.00, "325" => 5.00, "326" => 5.00, "327" => 5.00, "328" => 5.00, "329" => 5.00, "330" => 5.00, "331" => 5.00, "332" => 5.00, "333" => 5.00, "334" => 5.00, "335" => 5.00, "336" => 5.00, "337" => 5.00, "338" => 5.00, "339" => 5.00, "340" => 5.00, "341" => 5.00, "342" => 5.00, "343" => 5.00, "344" => 5.00, "345" => 5.00, "346" => 5.00, "347" => 5.00, "348" => 5.00, "349" => 5.00, "350" => 5.00, "351" => 5.00, "352" => 5.00, "353" => 5.00, "354" => 5.00, "355" => 5.00, "356" => 5.00, "357" => 5.00, "358" => 5.00, "359" => 5.00, "360" => 5.00, "361" => 5.00, "362" => 5.00, "363" => 5.00, "364" => 5.00, "365" => 5.00, "366" => 5.00, "367" => 5.00, "368" => 5.00, "369" => 5.00, "370" => 5.00, "371" => 5.00, "372" => 5.00, "373" => 5.00, "374" => 5.00, "375" => 5.00, "376" => 5.00, "377" => 5.00, "378" => 5.00, "379" => 5.00, "380" => 5.00, "381" => 5.00, "382" => 5.00, "383" => 5.00, "384" => 5.00, "385" => 5.00, "386" => 5.00, "387" => 5.00, "388" => 5.00, "389" => 5.00, "390" => 5.00, "391" => 5.00, "392" => 5.00, "393" => 5.00, "394" => 5.00, "395" => 5.00, "396" => 5.00, "397" => 5.00, "398" => 5.00, "399" => 5.00, "400" => 5.00, "401" => 5.00, "402" => 5.00, "403" => 5.00, "404" => 5.00, "405" => 5.00, "406" => 5.00, "407" => 5.00, "408" => 5.00, "409" => 5.00, "410" => 5.00, "411" => 5.00, "412" => 5.00, "413" => 5.00, "414" => 5.00, "415" => 5.00, "416" => 5.00, "417" => 5.00, "418" => 5.00, "419" => 5.00, "420" => 5.00, "421" => 5.00, "422" => 5.00, "423" => 5.00, "424" => 5.00, "425" => 5.00, "426" => 5.00, "427" => 5.00, "428" => 5.00, "429" => 5.00, "430" => 5.00, "431" => 5.00, "432" => 5.00, "433" => 5.00, "434" => 5.00, "435" => 5.00, "436" => 5.00, "437" => 5.00, "438" => 5.00, "439" => 5.00, "440" => 5.00, "441" => 5.00, "442" => 5.00, "443" => 5.00, "444" => 5.00, "445" => 5.00, "446" => 5.00, "447" => 5.00, "448" => 5.00, "449" => 5.00, "450" => 5.00, "451" => 5.00, "452" => 5.00, "453" => 5.00, "454" => 5.00, "455" => 5.00, "456" => 5.00, "457" => 5.00, "458" => 5.00, "459" => 5.00, "460" => 5.00, "461" => 5.00, "462" => 5.00, "463" => 5.00, "464" => 5.00, "465" => 5.00, "466" => 5.00, "467" => 5.00, "468" => 5.00, "469" => 5.00, "470" => 5.00, "471" => 5.00, "472" => 5.00, "473" => 5.00, "474" => 5.00, "475" => 5.00, "476" => 5.00, "477" => 5.00, "478" => 5.00, "479" => 5.00, "480" => 5.00, "481" => 5.00, "482" => 5.00, "483" => 5.00, "484" => 5.00, "485" => 5.00, "486" => 5.00, "487" => 5.00, "488" => 5.00, "489" => 5.00, "490" => 5.00, "491" => 5.00, "492" => 5.00, "493" => 5.00, "494" => 5.00, "495" => 5.00, "496" => 5.00, "497" => 5.00, "498" => 5.00, "499" => 5.00, "500" => 5.00, "501" => 5.00, "502" => 5.00, "503" => 5.00, "504" => 5.00, "505" => 5.00, "506" => 5.00, "507" => 5.00, "508" => 5.00, "509" => 5.00, "510" => 5.00, "511" => 5.00, "512" => 5.00, "513" => 5.00, "514" => 5.00, "515" => 5.00, "516" => 5.00, "517" => 5.00, "518" => 5.00, "519" => 5.00, "520" => 5.00, "521" => 5.00, "522" => 5.00, "523" => 5.00, "524" => 5.00, "525" => 5.00, "526" => 5.00, "527" => 5.00, "528" => 5.00, "529" => 5.00, "530" => 5.00, "531" => 5.00, "532" => 5.00, "533" => 5.00, "534" => 5.00, "535" => 5.00, "536" => 5.00, "537" => 5.00, "538" => 5.00, "539" => 5.00, "540" => 5.00, "541" => 5.00, "542" => 5.00, "543" => 5.00, "544" => 5.00, "545" => 5.00, "546" => 5.00, "547" => 5.00, "548" => 5.00, "549" => 5.00, "550" => 5.00, "551" => 5.00, "552" => 5.00, "553" => 5.00, "554" => 5.00, "555" => 5.00, "556" => 5.00, "557" => 5.00, "558" => 5.00, "559" => 5.00, "560" => 5.00, "561" => 5.00, "562" => 5.00, "563" => 5.00, "564" => 5.00, "565" => 5.00, "566" => 5.00, "567" => 5.00, "568" => 5.00, "569" => 5.00, "570" => 5.00, "571" => 5.00, "572" => 5.00, "573" => 5.00, "574" => 5.00, "575" => 5.00, "576" => 5.00, "577" => 5.00, "578" => 5.00, "579" => 5.00, "580" => 5.00, "581" => 5.00, "582" => 5.00, "583" => 5.00, "584" => 5.00, "585" => 5.00, "586" => 5.00, "587" => 5.00, "588" => 5.00, "589" => 5.00, "590" => 5.00, "591" => 5.00, "592" => 5.00, "593" => 5.00, "594" => 5.00, "595" => 5.00, "596" => 5.00, "597" => 5.00, "598" => 5.00, "599" => 5.00, "600" => 5.00, "601" => 5.00, "602" => 5.00, "603" => 5.00, "604" => 5.00, "605" => 5.00, "606" => 5.00, "607" => 5.00, "608" => 5.00, "609" => 5.00, "610" => 5.00, "611" => 5.00, "612" => 5.00, "613" => 5.00, "614" => 5.00, "615" => 5.00, "616" => 5.00, "617" => 5.00, "618" => 5.00, "619" => 5.00, "620" => 5.00, "621" => 5.00, "622" => 5.00, "623" => 5.00, "624" => 5.00, "625" => 5.00, "626" => 5.00, "627" => 5.00, "628" => 5.00, "629" => 5.00, "630" => 5.00, "631" => 5.00, "632" => 5.00, "8718" => 5.00, "8719" => 5.00, "9354" => 7.09, "9355" => 8.46, "9356" => 2.55, "9357" => 4.25, "9358" => 7.29, "9359" => 9.63, "9360" => 9.63, "9361" => 5.73, "9362" => 2.78, "9363" => 5.97, "9364" => 5.74, "9365" => 6.03, "9366" => 7.60, "9367" => 2.70, "9368" => 7.74, "9369" => 6.47, "9370" => 8.05, "9371" => 8.29, "9372" => 8.690001, "9373" => 8.690001, "9374" => 8.29, "9375" => 8.29, "9376" => 8.690001, "9377" => 4.03, "9378" => 4.03, "9379" => 4.03, "9380" => 4.03, "9381" => 4.03, "9382" => 4.03, "9383" => 4.03, "9384" => 4.03, "9385" => 4.03, "9386" => 4.03, "9387" => 4.03, "9388" => 4.03, "9389" => 4.03, "9390" => 4.03, "9391" => 4.03, "9392" => 4.03, "9393" => 4.03, "9394" => 7.60, "9395" => 6.47, "9396" => 6.47, "9397" => 6.47, "9398" => 3.08, "9399" => 2.70, "9400" => 3.06, "9401" => 8.05, "9402" => 8.05, "9403" => 7.74, "9404" => 7.74, "9405" => 7.74, "9406" => 5.73, "9407" => 5.74, "9408" => 5.74, "9409" => 5.74, "9410" => 2.78, "9411" => 2.34, "9412" => 2.99, "9413" => 6.03, "9414" => 6.03, "9415" => 5.97, "9416" => 5.97, "9417" => 5.97, "9418" => 6.25, "9419" => 6.25, "9420" => 6.25, "9421" => 9.34, "9422" => 9.34, "9423" => 5.54, "9424" => 5.54, "9425" => 5.54, "9426" => 5.74, "9427" => 5.74, "9428" => 5.74, "9429" => 7.47, "9430" => 7.47, "9431" => 7.47, "9432" => 5.54, "9433" => 5.54, "9434" => 5.54, "9435" => 2.81, "9436" => 6.00, "9437" => 6.03, "9438" => 5.50, "9439" => 5.50, "9440" => 5.50, "9441" => 5.33, "9442" => 4.08, "9443" => 3.06, "9444" => 3.33, "9445" => 3.02, "9446" => 3.86, "9447" => 6.52, "9448" => 6.52, "9449" => 8.89, "9450" => 7.71, "9451" => 2.15, "9452" => 3.74, "9453" => 3.74, "9454" => 4.03, "9455" => 6.690001, "9456" => 3.01, "9457" => 4.44, "9458" => 3.01, "9459" => 4.35, "9460" => 6.52, "9461" => 6.52, "9462" => 6.52, "9463" => 6.52, "9464" => 6.52, "9465" => 6.52, "9466" => 6.52, "9467" => 6.52, "9468" => 6.52, "9469" => 6.52, "9470" => 3.01, "9471" => 3.01, "9472" => 5.45, "9473" => 6.690001, "9474" => 5.45, "9475" => 5.79, "9476" => 9.04, "9477" => 7.56, "9478" => 7.25, "9479" => 7.41, "9480" => 7.71, "9481" => 6.46, "9482" => 6.52, "9483" => 7.65, "9484" => 7.90, "9485" => 2.68, "9486" => 5.20, "9487" => 6.88, "9488" => 6.30, "9489" => 9.52, "9490" => 7.75, "9491" => 8.05, "9492" => 6.97, "9493" => 8.05, "9494" => 7.08, "9495" => 6.64, "9496" => 6.74, "9497" => 7.72, "9498" => 7.15, "9499" => 10.34, "9500" => 7.12, "9501" => 6.85, "9502" => 6.81, "9503" => 3.74, "9504" => 6.52, "9505" => 3.74, "9506" => 5.69, "9507" => 5.00, "9508" => 5.00, "9509" => 5.62, "9510" => 6.24, "9511" => 5.46, "9512" => 6.25, "9513" => 5.80, "9514" => 4.00, "9515" => 6.16, "9516" => 6.00, "9517" => 2.32, "9518" => 2.47, "9519" => 5.26, "9520" => 2.31, "9521" => 8.76, "9522" => 6.00, "9523" => 6.03, "9524" => 6.25, "9525" => 6.25, "9526" => 4.30, "9527" => 5.35, "9528" => 4.03, "9529" => 5.93, "9530" => 5.440001, "9531" => 7.98, "9532" => 5.25, "9533" => 5.51, "9534" => 5.12, "9535" => 3.74, "9536" => 3.72, "9537" => 3.74, "9538" => 5.00, "9539" => 3.01, "9540" => 4.35, "9541" => 3.01, "9542" => 3.72, "9543" => 6.52, "9544" => 3.02, "9545" => 5.84, "9546" => 6.52, "9547" => 0.77, "9548" => 5.84, "9549" => 6.10, "9550" => 5.74, "9551" => 4.30, "9552" => 4.82, "9553" => 3.09, "9554" => 3.09, "9555" => 6.34, "9556" => 6.33, "9557" => 5.00, "9558" => 5.94, "9559" => 5.93, "9560" => 3.01, "9561" => 6.14, "9562" => 4.94, "9563" => 3.01, "9564" => 4.30, "9565" => 4.30, "9566" => 4.82, "9567" => 9.03, "9568" => 12.92, "9569" => 5.79, "9570" => 5.00, "9571" => 5.00, "9572" => 5.00, "9573" => 5.00, "9574" => 5.00, "9575" => 5.00, "9576" => 5.00, "9577" => 5.00, "9578" => 5.00, "9579" => 5.00, "9580" => 5.00, "9582" => 10.80, "9583" => 4.15, "9584" => 6.30, "9585" => 8.09, "9586" => 10.83, "9587" => 4.37, "9588" => 9.34, "9589" => 2.31, "9590" => 3.20, "9591" => 6.07, "9592" => 9.940001, "9593" => 6.29, "9594" => 6.690001, "9595" => 5.70, "9596" => 6.690001, "9597" => 5.71, "9598" => 2.77, "9599" => 6.690001, "9600" => 4.03, "9601" => 4.03, "9602" => 6.52, "9603" => 4.03, "9604" => 8.71, "9605" => 8.71, "9606" => 8.71, "9607" => 7.56, "9608" => 7.56, "9609" => 7.56, "9610" => 7.57, "9611" => 7.56, "9612" => 7.56, "9613" => 7.41, "9614" => 6.46, "9615" => 6.46, "9616" => 6.46, "9617" => 6.46, "9618" => 2.68, "9619" => 2.68, "9620" => 2.68, "9621" => 2.68, "9622" => 7.71, "9623" => 7.75, "9624" => 8.05, "9625" => 8.05, "9626" => 8.05, "9627" => 8.05, "9628" => 8.05, "9629" => 6.690001, "9630" => 7.72, "9631" => 7.72, "9632" => 7.72, "9633" => 7.72, "9634" => 6.85, "9635" => 6.94, "9636" => 5.62, "9637" => 5.62, "9638" => 5.62, "9639" => 5.62, "9640" => 5.62, "9641" => 5.62, "9642" => 5.46, "9643" => 5.80, "9644" => 5.80, "9645" => 5.80, "9646" => 5.80, "9647" => 2.31, "9648" => 2.31, "9649" => 2.31, "9650" => 2.31, "9651" => 5.93, "9652" => 6.00, "9653" => 6.03, "9654" => 6.03, "9655" => 6.03, "9656" => 6.03, "9657" => 6.03, "9658" => 6.690001, "9659" => 5.93, "9660" => 5.93, "9661" => 5.93, "9662" => 5.93, "9663" => 5.51, "9664" => 6.30, "9665" => 5.51, "9666" => 6.64, "9667" => 6.85, "9668" => 6.81, "9669" => 5.00, "9670" => 5.35, "9671" => 9.55, "9672" => 5.12, "9673" => 6.52, "9674" => 6.97, "9675" => 8.57, "9676" => 2.55, "9677" => 4.25, "9678" => 7.37, "9679" => 9.71, "9680" => 9.71, "9681" => 5.62, "9682" => 2.31, "9683" => 5.93, "9684" => 5.80, "9685" => 6.03, "9686" => 7.57, "9687" => 2.68, "9688" => 7.72, "9689" => 6.46, "9690" => 8.05, "9691" => 8.71, "9692" => 8.71, "9693" => 8.71, "9694" => 8.71, "9695" => 8.71, "9696" => 8.71, "9697" => 4.03, "9698" => 4.03, "9699" => 4.03, "9700" => 4.03, "9701" => 4.03, "9702" => 4.03, "9703" => 4.03, "9704" => 4.03, "9705" => 4.03, "9706" => 4.03, "9707" => 4.03, "9708" => 4.03, "9709" => 4.03, "9710" => 4.03, "9711" => 4.03, "9712" => 4.03, "9713" => 4.03, "9714" => 7.56, "9715" => 6.46, "9716" => 6.46, "9717" => 6.46, "9718" => 2.68, "9719" => 2.68, "9720" => 2.68, "9721" => 8.05, "9722" => 8.05, "9723" => 7.72, "9724" => 7.72, "9725" => 7.72, "9726" => 5.62, "9727" => 5.80, "9728" => 5.80, "9729" => 5.80, "9730" => 2.32, "9731" => 2.32, "9732" => 2.32, "9733" => 6.03, "9734" => 6.03, "9735" => 5.93, "9736" => 5.93, "9737" => 5.93, "9738" => 2.50, "9739" => 2.50, "9740" => 2.50, "9741" => 2.50, "9742" => 2.50, "9743" => 2.50, "9744" => 2.50, "9745" => 2.50, "9746" => 2.50, "9747" => 2.50, "9748" => 2.50, "9749" => 2.50, "9750" => 2.50, "9751" => 2.50, "9752" => 2.50, "9753" => 2.50, "9754" => 2.50, "9755" => 2.50, "9756" => 2.50, "9757" => 2.50, "9758" => 3.33, "9759" => 3.33, "9760" => 3.33, "9761" => 3.33, "9762" => 3.33, "9763" => 3.33, "9764" => 3.33, "9765" => 3.33, "9766" => 3.33, "9767" => 3.33, "9768" => 3.33, "9769" => 3.33, "9770" => 3.33, "9771" => 3.33, "9772" => 3.33, "9773" => 3.33, "9774" => 3.33, "9775" => 3.33, "9776" => 3.33, "9777" => 3.33, "9778" => 3.33, "12063" => 5.00, "12064" => 5.00, "12065" => 5.00, "12066" => 5.00, "12067" => 5.00, "12068" => 5.00, "12069" => 5.00, "12070" => 5.00, "12071" => 5.00, "12072" => 5.00, "12073" => 5.00, "12074" => 5.00, "12075" => 5.00, "12076" => 5.00, "12077" => 5.00, "12078" => 5.00, "12079" => 5.00, "12080" => 5.00, "12081" => 5.00, "12082" => 5.00, "12083" => 5.00, "12084" => 5.00, "12085" => 5.00, "12086" => 5.00, "12087" => 5.00, "15444" => 3.33, "15445" => 3.33, "15446" => 3.33, "15447" => 3.33, "15448" => 3.33, "15449" => 7.45, "15450" => 8.15, "15451" => 7.63, "15452" => 8.08, "15453" => 8.360001, "15454" => 9.150001, "15456" => 6.690001, "15457" => 6.690001, "15458" => 6.690001, "15459" => 6.690001, "15460" => 6.690001, "15461" => 10.02, "15462" => 8.87, "15463" => 8.93, "15464" => 6.690001, "15465" => 6.690001, "15466" => 6.690001, "15467" => 6.690001, "15468" => 6.690001, "15469" => 6.690001, "15470" => 6.690001, "15471" => 6.690001, "15472" => 6.690001, "15473" => 6.690001, "15474" => 6.690001, "15475" => 6.690001, "15476" => 6.690001, "15477" => 9.10, "15478" => 6.690001, "15479" => 6.690001, "15480" => 6.690001, "15481" => 6.690001, "15482" => 9.25, "15483" => 9.25, "15484" => 7.78, "15485" => 7.77, "15486" => 9.12, "15487" => 9.12, "15488" => 9.12, "15489" => 6.690001, "15490" => 6.690001, "15491" => 6.690001, "15492" => 6.690001, "15493" => 6.17, "15494" => 7.95, "15495" => 6.690001, "15496" => 6.690001, "15497" => 6.690001, "15498" => 6.690001, "15499" => 6.39, "15500" => 6.690001, "15501" => 6.690001, "15502" => 6.690001, "15503" => 3.83, "15504" => 6.29, "15505" => 6.690001, "15506" => 6.690001, "15507" => 6.690001, "15508" => 6.690001, "15509" => 6.690001, "15510" => 6.690001, "15511" => 9.25, "15512" => 6.690001, "15513" => 7.10, "15514" => 6.17, "15515" => 8.46, "15516" => 5.00, "15517" => 8.719999, "15518" => 9.32, "15519" => 8.97, "15520" => 9.58, "15521" => 8.32, "15522" => 8.780001, "15523" => 8.61, "15524" => 9.36, "15525" => 8.97, "15526" => 9.54, "15527" => 9.58, "15528" => 9.79, "15529" => 9.150001, "15530" => 9.66, "15531" => 8.04, "15532" => 8.719999, "15533" => 9.39, "15534" => 9.78, "15535" => 8.88, "15536" => 9.27, "15537" => 9.03, "15538" => 9.34, "15539" => 8.91, "15540" => 9.00, "15541" => 9.41, "15542" => 9.72, "15543" => 9.610001, "15544" => 9.87, "15545" => 9.43, "15546" => 9.69, "15547" => 9.37, "15548" => 9.57, "15549" => 9.110001, "15550" => 9.28, "15551" => 8.83, "15552" => 9.440001, "15553" => 9.71, "15554" => 9.25, "15555" => 9.50, "15556" => 8.66, "15557" => 8.88, "15558" => 9.55, "15559" => 9.38, "15560" => 9.62, "15561" => 9.83, "15562" => 9.58, "15563" => 9.559999, "15564" => 9.80, "15565" => 9.75, "15566" => 9.52, "15567" => 9.62, "15568" => 9.63, "15569" => 9.52, "15570" => 9.74, "15571" => 9.74, "15572" => 9.73, "15573" => 9.72, "15574" => 9.69, "15575" => 9.62, "15576" => 9.929999, "15577" => 9.88, "15578" => 9.28, "15579" => 9.57, "15580" => 9.48, "15581" => 9.48, "15582" => 9.150001, "15583" => 8.90, "15584" => 9.46, "15585" => 9.00, "15586" => 9.62, "15587" => 8.450001, "15588" => 9.04, "15589" => 8.94, "15590" => 8.71, "15591" => 9.12, "15592" => 9.81, "15593" => 9.09, "15594" => 9.02, "15595" => 9.66, "15596" => 9.35, "15597" => 9.50, "15598" => 9.45, "15599" => 9.39, "15600" => 9.440001, "15601" => 8.95, "15602" => 8.73, "15603" => 9.78, "15604" => 9.63, "15605" => 8.65, "15606" => 9.78, "15607" => 9.22, "15608" => 8.50, "15609" => 9.17, "15610" => 8.33, "15611" => 8.96, "15612" => 8.719999, "15613" => 9.18, "15614" => 8.73, "15615" => 9.36, "15616" => 8.690001, "15617" => 9.32, "15618" => 9.23, "15619" => 9.55, "15620" => 9.34, "15621" => 9.55, "15622" => 8.90, "15623" => 9.67, "15624" => 9.41, "15625" => 9.69, "15626" => 9.16, "15627" => 9.55, "15628" => 9.46, "15629" => 9.80, "15630" => 9.32, "15631" => 9.74, "15632" => 9.25, "15633" => 9.67, "15634" => 9.33, "15635" => 9.63, "15636" => 8.80, "15637" => 9.440001, "15638" => 8.95, "15639" => 9.73, "15640" => 9.36, "15641" => 9.610001, "15642" => 8.48, "15643" => 9.04, "15644" => 9.57, "15645" => 9.33, "15646" => 9.74, "15647" => 8.57, "15648" => 8.70, "15649" => 9.26, "15650" => 9.22, "15651" => 8.79, "15652" => 9.40, "15653" => 8.66, "15654" => 9.41, "15655" => 9.559999, "15656" => 9.55, "15657" => 8.84, "15658" => 9.46, "15659" => 9.40, "15660" => 8.91, "15661" => 9.73, "15662" => 9.73, "15663" => 9.66, "15664" => 9.62, "15665" => 9.59, "15666" => 9.52, "15667" => 9.69, "15668" => 9.700001, "15669" => 9.17, "15670" => 8.87, "15671" => 9.39, "15672" => 8.809999, "15673" => 9.49, "15674" => 8.73, "15675" => 9.309999, "15676" => 8.61, "15677" => 9.35, "15678" => 8.74, "15679" => 9.22, "15680" => 8.95, "15681" => 8.63, "15682" => 9.49, "15683" => 9.01, "15684" => 9.54, "15685" => 8.71, "15686" => 9.02, "15687" => 9.57, "15688" => 9.35, "15689" => 8.93, "15690" => 9.04, "15691" => 9.66, "15692" => 8.74, "15693" => 8.73, "15694" => 9.610001, "15695" => 9.610001, "15696" => 9.66, "15697" => 9.66, "15698" => 9.55, "15699" => 9.58, "15700" => 9.57, "15701" => 8.679999, "15702" => 8.43, "15703" => 8.66, "15704" => 8.55, "15705" => 8.16, "15706" => 8.38, "15707" => 8.63, "15708" => 8.41, "15709" => 8.389999, "15710" => 8.83, "15711" => 8.97, "15712" => 9.01, "15713" => 8.62, "15714" => 8.55, "15715" => 8.309999, "15716" => 8.809999, "15717" => 8.55, "15718" => 8.98, "15719" => 9.81, "15720" => 9.75, "15721" => 9.80, "15722" => 9.73, "15723" => 8.33, "15724" => 8.65, "15725" => 6.690001, "15726" => 6.690001, "15727" => 8.29, "15728" => 8.62, "15729" => 9.54, "15730" => 8.77, "15731" => 7.79, "15732" => 6.00, "15733" => 5.97, "15734" => 5.97, "15735" => 5.97, "15736" => 5.97, "15737" => 7.60, "15738" => 5.00, "15739" => 6.46, "15740" => 6.71, "15741" => 6.71, "15742" => 6.76, "15743" => 6.81, "15744" => 6.81, "15745" => 5.73, "15746" => 7.42, "15747" => 2.78, "15748" => 5.35, "15749" => 5.00, "15750" => 5.35, "15751" => 4.03, "15752" => 5.16, "15753" => 5.00, "15754" => 5.16, "15755" => 7.20, "15756" => 7.60, "15757" => 6.30, "15758" => 7.42, "15759" => 7.42, "15760" => 6.47, "15761" => 7.71, "15762" => 7.79, "15763" => 7.79, "15764" => 8.05, "15765" => 7.20, "15766" => 7.74, "15767" => 6.76, "15768" => 4.32, "15769" => 5.73, "15770" => 2.34, "15771" => 5.54, "15772" => 5.54, "15773" => 5.74, "15774" => 6.45, "15775" => 6.31, "15776" => 6.00, "15777" => 6.00, "15778" => 6.03, "15779" => 4.32, "15780" => 5.97, "15781" => 4.03, "15782" => 5.00, "15783" => 7.42, "15784" => 7.65, "15785" => 7.93, "15786" => 5.39, "15787" => 6.71, "15788" => 7.74, "15789" => 5.54, "15790" => 6.18, "15791" => 6.19, "15792" => 2.94, "15793" => 5.35, "15794" => 5.97, "15795" => 8.780001, "15796" => 5.74, "15797" => 3.65, "15798" => 4.62, "15799" => 6.23, "15800" => 4.32, "15801" => 4.01, "15802" => 6.26, "15803" => 6.04, "15804" => 4.30, "15805" => 5.35, "15806" => 5.24, "15807" => 4.30, "15808" => 2.33, "15809" => 4.00, "15810" => 6.03, "15811" => 3.95, "15812" => 5.51, "15813" => 6.15, "15814" => 8.780001, "15815" => 5.69, "15816" => 6.06, "15817" => 5.37, "15818" => 5.37, "15819" => 6.00, "15820" => 8.05, "15821" => 4.90, "15822" => 6.22, "15823" => 7.03, "15824" => 4.20, "15825" => 6.96, "15826" => 7.65, "15827" => 2.54, "15828" => 6.17, "15829" => 5.74, "15830" => 5.48, "15831" => 6.14, "15832" => 5.73, "15833" => 8.77, "15834" => 6.09, "15835" => 6.23, "15836" => 6.25, "15837" => 8.07, "15838" => 6.01, "15839" => 5.37, "15840" => 5.37, "15841" => 5.54, "15842" => 5.61, "15843" => 4.32, "15844" => 6.00, "15845" => 0.00, "15846" => 1.60, "15847" => 1.60, "15848" => 3.06, "15849" => 0.00, "15850" => 5.00, "15851" => 4.35, "15852" => 4.35, "15853" => 4.35, "15854" => 4.35, "15855" => 4.35, "15856" => 4.50, "15857" => 4.50, "15858" => 5.00, "15859" => 5.00, "15860" => 5.00, "15861" => 5.00, "15862" => 5.00, "15863" => 5.00, "15864" => 5.00, "15865" => 5.00, "15866" => 5.00, "15867" => 1.65, "15868" => 5.00, "15869" => 5.00, "15870" => 5.00, "15871" => 5.00, "15872" => 5.00, "15873" => 5.00, "15874" => 5.00, "15875" => 5.00, "15876" => 5.00, "15877" => 5.00, "15878" => 5.00, "15879" => 3.81, "15880" => 3.83, "15881" => 6.690001, "15882" => 6.690001, "15883" => 5.76, "15884" => 5.51, "15885" => 2.32, "15886" => 5.92, "15887" => 8.30, "15888" => 6.82, "15889" => 5.69, "15890" => 5.38, "15891" => 5.82, "15892" => 5.98, "15893" => 4.90, "15894" => 3.48, "15895" => 2.14, "15896" => 4.69, "15897" => 3.17, "15898" => 3.10, "15899" => 1.47, "15900" => 5.67, "15901" => 6.89, "15902" => 8.75, "15903" => 6.690001, "15904" => 6.690001, "15905" => 9.12, "15906" => 9.47, "15907" => 9.47, "15908" => 3.49, "15909" => 6.33, "15910" => 5.70, "15911" => 5.63, "15912" => 8.57, "15913" => 5.00, "15914" => 8.71, "15915" => 9.52, "15916" => 8.76, "15917" => 7.75, "15918" => 6.00, "15919" => 5.93, "15920" => 5.93, "15921" => 5.93, "15922" => 5.93, "15923" => 7.56, "15924" => 6.30, "15925" => 6.64, "15926" => 6.64, "15927" => 6.74, "15928" => 6.81, "15929" => 6.81, "15930" => 5.62, "15931" => 2.31, "15932" => 5.35, "15933" => 5.35, "15934" => 4.03, "15935" => 5.12, "15936" => 5.12, "15937" => 7.08, "15938" => 7.56, "15939" => 6.30, "15940" => 7.41, "15941" => 7.41, "15942" => 6.46, "15943" => 7.71, "15944" => 7.75, "15945" => 7.75, "15946" => 8.05, "15947" => 7.08, "15948" => 7.72, "15949" => 6.74, "15950" => 4.30, "15951" => 5.62, "15952" => 2.31, "15953" => 5.46, "15954" => 5.46, "15955" => 5.80, "15956" => 6.25, "15957" => 6.25, "15958" => 6.00, "15959" => 6.00, "15960" => 6.03, "15961" => 4.30, "15962" => 5.93, "15963" => 4.03, "15964" => 7.41, "15965" => 7.65, "15966" => 7.90, "15967" => 5.20, "15968" => 6.64, "15969" => 7.72, "15970" => 5.46, "15971" => 6.16, "15972" => 6.00, "15973" => 2.47, "15974" => 5.35, "15975" => 5.93, "16194" => 9.99);
+%min_w3_v=("8720" => 333, "8721" => 332, "8722" => 339, "8723" => 678, "8724" => 627, "8725" => 827, "8726" => 805, "8727" => 188, "8728" => 314, "8729" => 314, "8730" => 392, "8731" => 678, "8732" => 314, "8733" => 330, "8734" => 314, "8735" => 392, "8736" => 588, "8737" => 588, "8738" => 588, "8739" => 588, "8740" => 588, "8741" => 588, "8742" => 588, "8743" => 588, "8744" => 588, "8745" => 588, "8746" => 314, "8747" => 314, "8748" => 500, "8749" => 678, "8750" => 500, "8751" => 595, "8752" => 842, "8753" => 738, "8754" => 664, "8755" => 706, "8756" => 761, "8757" => 633, "8758" => 592, "8759" => 760, "8760" => 797, "8761" => 352, "8762" => 476, "8763" => 701, "8764" => 590, "8765" => 929, "8766" => 796, "8767" => 798, "8768" => 618, "8769" => 798, "8770" => 681, "8771" => 563, "8772" => 657, "8773" => 769, "8774" => 732, "8775" => 1001, "8776" => 720, "8777" => 717, "8778" => 659, "8779" => 314, "8780" => 650, "8781" => 314, "8782" => 500, "8783" => 500, "8784" => 500, "8785" => 545, "8786" => 601, "8787" => 526, "8788" => 607, "8789" => 535, "8790" => 328, "8791" => 533, "8792" => 619, "8793" => 295, "8794" => 291, "8795" => 554, "8796" => 296, "8797" => 899, "8798" => 616, "8799" => 583, "8800" => 597, "8801" => 593, "8802" => 411, "8803" => 445, "8804" => 336, "8805" => 593, "8806" => 560, "8807" => 793, "8808" => 539, "8809" => 547, "8810" => 492, "8811" => 314, "8812" => 500, "8813" => 314, "8814" => 500, "8815" => 294, "8816" => 392, "8817" => 294, "8818" => 500, "8819" => 500, "8820" => 332, "8821" => 627, "8822" => 650, "8823" => 152, "8824" => 627, "8825" => 627, "8826" => 545, "8827" => 490, "8828" => 418, "8829" => 255, "8830" => 255, "8831" => 578, "8832" => 578, "8833" => 500, "8834" => 627, "8835" => 627, "8836" => 314, "8837" => 598, "8838" => 627, "8839" => 294, "8840" => 490, "8841" => 490, "8842" => 418, "8843" => 941, "8844" => 1211, "8845" => 595, "8846" => 500, "8847" => 500, "8848" => 500, "8849" => 500, "8850" => 500, "8851" => 500, "8852" => 500, "8853" => 500, "8854" => 500, "8855" => 500, "8856" => 500, "8858" => 969, "8859" => 392, "8860" => 590, "8861" => 798, "8862" => 1021, "8863" => 392, "8864" => 823, "8865" => 295, "8866" => 296, "8867" => 583, "8868" => 883, "8869" => 595, "8870" => 678, "8871" => 713, "8872" => 678, "8873" => 713, "8874" => 355, "8875" => 678, "8876" => 392, "8877" => 392, "8878" => 627, "8879" => 314, "8880" => 941, "8881" => 941, "8882" => 941, "8883" => 738, "8884" => 738, "8885" => 738, "8886" => 738, "8887" => 738, "8888" => 738, "8889" => 706, "8890" => 633, "8891" => 633, "8892" => 633, "8893" => 633, "8894" => 352, "8895" => 352, "8896" => 352, "8897" => 352, "8898" => 761, "8899" => 796, "8900" => 798, "8901" => 798, "8902" => 798, "8903" => 798, "8904" => 798, "8905" => 678, "8906" => 769, "8907" => 769, "8908" => 769, "8909" => 769, "8910" => 717, "8911" => 637, "8912" => 545, "8913" => 545, "8914" => 545, "8915" => 545, "8916" => 545, "8917" => 545, "8918" => 526, "8919" => 535, "8920" => 535, "8921" => 535, "8922" => 535, "8923" => 295, "8924" => 295, "8925" => 295, "8926" => 295, "8927" => 581, "8928" => 616, "8929" => 583, "8930" => 583, "8931" => 583, "8932" => 583, "8933" => 583, "8934" => 678, "8935" => 593, "8936" => 593, "8937" => 593, "8938" => 593, "8939" => 547, "8940" => 597, "8941" => 547, "8942" => 563, "8943" => 717, "8944" => 659, "8945" => 500, "8946" => 445, "8947" => 989, "8948" => 492, "8949" => 588, "8950" => 500, "8951" => 500, "8952" => 500, "8953" => 500, "8954" => 500, "8955" => 500, "8956" => 500, "8957" => 500, "8958" => 500, "8959" => 500, "8960" => 500, "8961" => 500, "8962" => 500, "8963" => 500, "8964" => 500, "8965" => 500, "8966" => 500, "8967" => 500, "8968" => 500, "8969" => 500, "8970" => 500, "8971" => 500, "8972" => 500, "8973" => 500, "8974" => 500, "8975" => 500, "8976" => 500, "8977" => 500, "8978" => 500, "8979" => 500, "8980" => 500, "8981" => 500, "8982" => 500, "8983" => 500, "8984" => 500, "8985" => 500, "8986" => 500, "8987" => 500, "8988" => 500, "8989" => 500, "8990" => 500, "8991" => 500, "8992" => 500, "8993" => 500, "8994" => 500, "8995" => 500, "8996" => 500, "8997" => 500, "8998" => 500, "8999" => 500, "9000" => 500, "9001" => 500, "9002" => 500, "9003" => 500, "9004" => 500, "9005" => 500, "9006" => 500, "9007" => 500, "9008" => 500, "9009" => 500, "9010" => 500, "9011" => 500, "9012" => 500, "9013" => 500, "9014" => 500, "9015" => 500, "9016" => 500, "9017" => 500, "9018" => 500, "9019" => 500, "9020" => 500, "9021" => 500, "9022" => 500, "9023" => 500, "9024" => 500, "9025" => 500, "9026" => 500, "9027" => 500, "9028" => 500, "9029" => 500, "9030" => 500, "9031" => 500, "9032" => 500, "9033" => 500, "9034" => 500, "9035" => 500, "9036" => 500, "9037" => 500, "9038" => 500, "9039" => 500, "9040" => 500, "9041" => 500, "9042" => 500, "9043" => 500, "9044" => 500, "9045" => 500, "9046" => 500, "9047" => 500, "9048" => 500, "9049" => 500, "9050" => 500, "9051" => 500, "9052" => 500, "9053" => 500, "9054" => 500, "9055" => 500, "9056" => 500, "9057" => 500, "9058" => 500, "9059" => 500, "9060" => 500, "9061" => 500, "9062" => 500, "9063" => 500, "9064" => 500, "9065" => 500, "9066" => 500, "9067" => 500, "9068" => 500, "9069" => 500, "9070" => 500, "9071" => 500, "9072" => 500, "9073" => 500, "9074" => 500, "9075" => 500, "9076" => 500, "9077" => 500, "9078" => 500, "9079" => 500, "9080" => 500, "9081" => 500, "9082" => 500, "9083" => 500, "9084" => 500, "9085" => 500, "9086" => 500, "9087" => 500, "9088" => 500, "9089" => 500, "9090" => 500, "9091" => 500, "9092" => 500, "9093" => 500, "9094" => 500, "9095" => 500, "9096" => 500, "9097" => 500, "9098" => 500, "9099" => 500, "9100" => 500, "9101" => 500, "9102" => 500, "9103" => 500, "9104" => 500, "9105" => 500, "9106" => 500, "9107" => 500, "9108" => 500, "9109" => 500, "9110" => 500, "9111" => 500, "9112" => 500, "9113" => 500, "9114" => 500, "9115" => 500, "9116" => 500, "9117" => 500, "9118" => 500, "9119" => 500, "9120" => 500, "9121" => 500, "9122" => 500, "9123" => 500, "9124" => 500, "9125" => 500, "9126" => 500, "9127" => 500, "9128" => 500, "9129" => 500, "9130" => 500, "9131" => 500, "9132" => 500, "9133" => 500, "9134" => 500, "9135" => 500, "9136" => 500, "9137" => 500, "9138" => 500, "9139" => 500, "9140" => 500, "9141" => 500, "9142" => 500, "9143" => 500, "9144" => 500, "9145" => 500, "9146" => 500, "9147" => 500, "9148" => 500, "9149" => 500, "9150" => 500, "9151" => 500, "9152" => 500, "9153" => 500, "9154" => 500, "9155" => 500, "9156" => 500, "9157" => 500, "9158" => 500, "9159" => 500, "9160" => 500, "9161" => 500, "9162" => 500, "9163" => 500, "9164" => 500, "9165" => 500, "9166" => 500, "9167" => 500, "9168" => 500, "9169" => 500, "9170" => 500, "9171" => 500, "9172" => 500, "9173" => 500, "9174" => 500, "9175" => 500, "9176" => 500, "9177" => 500, "9178" => 500, "9179" => 500, "9180" => 500, "9181" => 500, "9182" => 500, "9183" => 500, "9184" => 500, "9185" => 500, "9186" => 500, "9187" => 500, "9188" => 500, "9189" => 500, "9190" => 500, "9191" => 500, "9192" => 500, "9193" => 500, "9194" => 500, "9195" => 500, "9196" => 500, "9197" => 500, "9198" => 500, "9199" => 500, "9200" => 500, "9201" => 500, "9202" => 500, "9203" => 500, "9204" => 500, "9205" => 500, "9206" => 500, "9207" => 500, "9208" => 500, "9209" => 500, "9210" => 500, "9211" => 500, "9212" => 500, "9213" => 500, "9214" => 500, "9215" => 500, "9216" => 500, "9217" => 500, "9218" => 500, "9219" => 500, "9220" => 500, "9221" => 500, "9222" => 500, "9223" => 500, "9224" => 500, "9225" => 500, "9226" => 500, "9227" => 500, "9228" => 500, "9229" => 500, "9230" => 500, "9231" => 500, "9232" => 500, "9233" => 500, "9234" => 500, "9235" => 500, "9236" => 500, "9237" => 500, "9238" => 500, "9239" => 500, "9240" => 500, "9241" => 500, "9242" => 500, "9243" => 500, "9244" => 500, "9245" => 500, "9246" => 500, "9247" => 500, "9248" => 500, "9249" => 500, "9250" => 500, "9251" => 500, "9252" => 500, "9253" => 500, "9254" => 500, "9255" => 500, "9256" => 500, "9257" => 500, "9258" => 500, "9259" => 500, "9260" => 500, "9261" => 500, "9262" => 500, "9263" => 500, "9264" => 500, "9265" => 500, "9266" => 500, "9267" => 500, "9268" => 500, "9269" => 500, "9270" => 500, "9271" => 500, "9272" => 500, "9273" => 500, "9274" => 500, "9275" => 500, "9276" => 500, "9277" => 500, "9278" => 500, "9279" => 500, "9280" => 500, "9281" => 500, "9282" => 500, "9283" => 500, "9284" => 500, "9285" => 500, "9286" => 500, "9287" => 500, "9288" => 500, "9289" => 500, "9290" => 500, "9291" => 500, "9292" => 500, "9293" => 500, "9294" => 500, "9295" => 500, "9296" => 500, "9297" => 500, "9298" => 500, "9299" => 500, "9300" => 500, "9301" => 500, "9302" => 500, "9303" => 500, "9304" => 500, "9305" => 500, "9306" => 500, "9307" => 500, "9308" => 500, "9309" => 500, "9310" => 500, "9311" => 500, "9312" => 500, "9313" => 500, "9314" => 500, "9315" => 500, "9316" => 500, "9317" => 500, "9318" => 500, "9319" => 500, "9320" => 500, "9321" => 500, "9322" => 500, "9323" => 500, "9324" => 500, "9325" => 500, "9326" => 500, "9327" => 500, "9328" => 500, "9329" => 500, "9330" => 500, "9331" => 500, "9332" => 500, "9333" => 500, "9334" => 500, "9335" => 500, "9336" => 500, "9337" => 500, "9338" => 500, "9339" => 500, "9340" => 500, "9341" => 500, "9342" => 500, "9343" => 500, "9344" => 500, "9345" => 500, "9346" => 500, "9347" => 500, "9348" => 500, "9349" => 500, "9350" => 500, "9351" => 500, "9352" => 500, "9353" => 500, "12870" => 650, "12871" => 853, "12872" => 213, "12873" => 361, "12874" => 613, "12875" => 863, "12876" => 863, "12877" => 545, "12878" => 295, "12879" => 593, "12880" => 535, "12881" => 583, "12882" => 738, "12883" => 352, "12884" => 769, "12885" => 633, "12886" => 798, "12887" => 941, "12888" => 941, "12889" => 941, "12890" => 941, "12891" => 941, "12892" => 941, "12893" => 392, "12894" => 392, "12895" => 392, "12896" => 392, "12897" => 392, "12898" => 392, "12899" => 392, "12900" => 392, "12901" => 314, "12902" => 392, "12903" => 392, "12904" => 392, "12905" => 392, "12906" => 392, "12907" => 392, "12908" => 392, "12909" => 392, "12910" => 738, "12911" => 633, "12912" => 633, "12913" => 633, "12914" => 352, "12915" => 352, "12916" => 352, "12917" => 798, "12918" => 798, "12919" => 769, "12920" => 769, "12921" => 769, "12922" => 545, "12923" => 535, "12924" => 535, "12925" => 535, "12926" => 295, "12927" => 295, "12928" => 295, "12929" => 583, "12930" => 583, "12931" => 593, "12932" => 593, "12933" => 593, "12934" => 598, "12935" => 598, "12936" => 598, "12937" => 823, "12938" => 823, "12939" => 526, "12940" => 526, "12941" => 526, "12942" => 535, "12943" => 535, "12944" => 535, "12945" => 694, "12946" => 694, "12947" => 694, "12948" => 490, "12949" => 490, "12950" => 490, "12951" => 291, "12952" => 606, "12953" => 583, "12954" => 560, "12955" => 560, "12956" => 560, "12957" => 504, "12958" => 334, "12959" => 300, "12960" => 333, "12961" => 330, "12962" => 334, "12963" => 603, "12964" => 603, "12965" => 810, "12966" => 820, "12967" => 187, "12968" => 310, "12969" => 310, "12970" => 385, "12971" => 678, "12972" => 310, "12973" => 362, "12974" => 310, "12975" => 383, "12976" => 603, "12977" => 603, "12978" => 603, "12979" => 603, "12980" => 603, "12981" => 603, "12982" => 603, "12983" => 603, "12984" => 603, "12985" => 603, "12986" => 310, "12987" => 310, "12988" => 547, "12989" => 678, "12990" => 547, "12991" => 586, "12992" => 825, "12993" => 745, "12994" => 652, "12995" => 691, "12996" => 746, "12997" => 621, "12998" => 581, "12999" => 745, "13000" => 781, "13001" => 346, "13002" => 467, "13003" => 695, "13004" => 582, "13005" => 909, "13006" => 779, "13007" => 782, "13008" => 607, "13009" => 781, "13010" => 686, "13011" => 552, "13012" => 652, "13013" => 753, "13014" => 729, "13015" => 997, "13016" => 711, "13017" => 712, "13018" => 645, "13019" => 310, "13020" => 641, "13021" => 310, "13022" => 500, "13023" => 485, "13024" => 500, "13025" => 580, "13026" => 538, "13027" => 467, "13028" => 582, "13029" => 501, "13030" => 339, "13031" => 541, "13032" => 604, "13033" => 296, "13034" => 284, "13035" => 547, "13036" => 291, "13037" => 887, "13038" => 628, "13039" => 556, "13040" => 579, "13041" => 544, "13042" => 451, "13043" => 434, "13044" => 333, "13045" => 595, "13046" => 532, "13047" => 796, "13048" => 596, "13049" => 570, "13050" => 447, "13051" => 310, "13052" => 500, "13053" => 310, "13054" => 500, "13055" => 291, "13056" => 383, "13057" => 291, "13058" => 500, "13059" => 502, "13060" => 329, "13061" => 603, "13062" => 603, "13063" => 144, "13064" => 494, "13065" => 617, "13066" => 545, "13067" => 483, "13068" => 423, "13069" => 264, "13070" => 264, "13071" => 594, "13072" => 597, "13073" => 500, "13074" => 615, "13075" => 616, "13076" => 310, "13077" => 580, "13078" => 603, "13079" => 291, "13080" => 483, "13081" => 483, "13082" => 423, "13083" => 931, "13084" => 1185, "13085" => 583, "13086" => 500, "13087" => 500, "13088" => 500, "13089" => 500, "13090" => 500, "13091" => 500, "13092" => 500, "13093" => 500, "13094" => 500, "13095" => 500, "13096" => 500, "13098" => 953, "13099" => 380, "13100" => 582, "13101" => 782, "13102" => 989, "13103" => 380, "13104" => 809, "13105" => 296, "13106" => 303, "13107" => 556, "13108" => 868, "13109" => 576, "13110" => 678, "13111" => 713, "13112" => 678, "13113" => 713, "13114" => 355, "13115" => 678, "13116" => 380, "13117" => 380, "13118" => 591, "13119" => 380, "13120" => 899, "13121" => 899, "13122" => 899, "13123" => 745, "13124" => 745, "13125" => 745, "13126" => 745, "13127" => 745, "13128" => 745, "13129" => 691, "13130" => 621, "13131" => 621, "13132" => 621, "13133" => 621, "13134" => 346, "13135" => 346, "13136" => 346, "13137" => 346, "13138" => 746, "13139" => 779, "13140" => 782, "13141" => 782, "13142" => 782, "13143" => 782, "13144" => 782, "13145" => 678, "13146" => 753, "13147" => 753, "13148" => 753, "13149" => 753, "13150" => 712, "13151" => 631, "13152" => 580, "13153" => 580, "13154" => 580, "13155" => 580, "13156" => 580, "13157" => 580, "13158" => 465, "13159" => 501, "13160" => 501, "13161" => 501, "13162" => 501, "13163" => 296, "13164" => 296, "13165" => 296, "13166" => 296, "13167" => 556, "13168" => 628, "13169" => 556, "13170" => 556, "13171" => 556, "13172" => 556, "13173" => 556, "13174" => 678, "13175" => 595, "13176" => 595, "13177" => 595, "13178" => 595, "13179" => 570, "13180" => 580, "13181" => 570, "13182" => 552, "13183" => 712, "13184" => 645, "13185" => 485, "13186" => 434, "13187" => 1004, "13188" => 447, "13189" => 603, "13190" => 635, "13191" => 861, "13192" => 213, "13193" => 361, "13194" => 635, "13195" => 893, "13196" => 894, "13197" => 580, "13198" => 296, "13199" => 595, "13200" => 501, "13201" => 556, "13202" => 745, "13203" => 346, "13204" => 753, "13205" => 621, "13206" => 782, "13207" => 900, "13208" => 899, "13209" => 899, "13210" => 899, "13211" => 899, "13212" => 899, "13213" => 380, "13214" => 380, "13215" => 380, "13216" => 380, "13217" => 380, "13218" => 380, "13219" => 380, "13220" => 380, "13221" => 380, "13222" => 380, "13223" => 380, "13224" => 380, "13225" => 380, "13226" => 380, "13227" => 380, "13228" => 380, "13229" => 380, "13230" => 745, "13231" => 621, "13232" => 621, "13233" => 621, "13234" => 346, "13235" => 346, "13236" => 346, "13237" => 782, "13238" => 782, "13239" => 753, "13240" => 753, "13241" => 753, "13242" => 580, "13243" => 501, "13244" => 501, "13245" => 501, "13246" => 296, "13247" => 296, "13248" => 296, "13249" => 556, "13250" => 556, "13251" => 595, "13252" => 595, "13253" => 595, "13254" => 250, "13255" => 250, "13256" => 250, "13257" => 250, "13258" => 250, "13259" => 250, "13260" => 250, "13261" => 250, "13262" => 250, "13263" => 250, "13264" => 250, "13265" => 250, "13266" => 250, "13267" => 250, "13268" => 250, "13269" => 250, "13270" => 250, "13271" => 250, "13272" => 250, "13273" => 250, "13274" => 333, "13275" => 333, "13276" => 333, "13277" => 333, "13278" => 333, "13279" => 333, "13280" => 333, "13281" => 333, "13282" => 333, "13283" => 333, "13284" => 333, "13285" => 333, "13286" => 333, "13287" => 333, "13288" => 333, "13289" => 333, "13290" => 333, "13291" => 333, "13292" => 333, "13293" => 333, "13294" => 333, "13295" => 500, "13296" => 500, "13297" => 500, "13298" => 500, "13299" => 500, "13300" => 500, "13301" => 500, "13302" => 500, "13303" => 500, "13304" => 500, "13305" => 500, "13306" => 500, "13307" => 500, "13308" => 500, "13309" => 500, "13310" => 500, "13311" => 500, "13312" => 500, "13313" => 500, "13314" => 500, "13315" => 500, "13316" => 500, "13317" => 500, "13318" => 500, "13319" => 500, "15976" => 717, "15977" => 834, "15978" => 777, "15979" => 832, "15980" => 816, "15981" => 894, "15982" => 996, "15983" => 936, "15984" => 981, "15985" => 903, "15986" => 960, "15987" => 775, "15988" => 819, "15989" => 942, "15990" => 998, "15991" => 889, "15992" => 947, "15993" => 865, "15994" => 914, "15995" => 899, "15996" => 910, "15997" => 971, "15998" => 971, "15999" => 999, "16000" => 979, "16001" => 952, "16002" => 976, "16003" => 926, "16004" => 944, "16005" => 967, "16006" => 971, "16007" => 942, "16008" => 963, "16009" => 939, "16010" => 961, "16011" => 918, "16012" => 947, "16013" => 945, "16014" => 956, "16015" => 923, "16016" => 948, "16017" => 961, "16018" => 967, "16019" => 796, "16020" => 824, "16021" => 899, "16022" => 869, "16023" => 876, "16024" => 975, "16025" => 969, "16026" => 948, "16027" => 895, "16028" => 898, "16029" => 925, "16030" => 882, "16031" => 928, "16032" => 957, "16033" => 970, "16034" => 919, "16035" => 946, "16036" => 972, "16037" => 905, "16038" => 916, "16039" => 915, "16040" => 721, "16041" => 813, "16042" => 843, "16043" => 923, "16044" => 961, "16045" => 965, "16046" => 976, "16047" => 917, "16048" => 937, "16049" => 918, "16050" => 976, "16051" => 869, "16052" => 938, "16053" => 873, "16054" => 922, "16055" => 895, "16056" => 963, "16057" => 966, "16058" => 982, "16059" => 959, "16060" => 921, "16061" => 966, "16062" => 858, "16063" => 928, "16064" => 937, "16065" => 965, "16066" => 964, "16067" => 920, "16068" => 963, "16069" => 841, "16070" => 890, "16071" => 933, "16072" => 988, "16073" => 971, "16074" => 991, "16075" => 967, "16076" => 845, "16077" => 896, "16078" => 881, "16079" => 929, "16080" => 889, "16081" => 938, "16082" => 781, "16083" => 812, "16084" => 876, "16085" => 921, "16086" => 926, "16087" => 927, "16088" => 925, "16089" => 956, "16090" => 925, "16091" => 949, "16092" => 919, "16093" => 960, "16094" => 832, "16095" => 883, "16096" => 917, "16097" => 953, "16098" => 839, "16099" => 910, "16100" => 861, "16101" => 924, "16102" => 867, "16103" => 926, "16104" => 889, "16105" => 952, "16106" => 931, "16107" => 956, "16108" => 920, "16109" => 935, "16110" => 833, "16111" => 880, "16112" => 948, "16113" => 913, "16114" => 938, "16115" => 958, "16116" => 963, "16117" => 911, "16118" => 801, "16119" => 906, "16120" => 945, "16121" => 880, "16122" => 742, "16123" => 816, "16124" => 855, "16125" => 879, "16126" => 920, "16127" => 939, "16128" => 891, "16129" => 947, "16130" => 956, "16131" => 709, "16132" => 805, "16133" => 835, "16134" => 907, "16135" => 939, "16136" => 964, "16137" => 810, "16138" => 925, "16139" => 879, "16140" => 888, "16141" => 874, "16142" => 852, "16143" => 898, "16144" => 776, "16145" => 809, "16146" => 838, "16147" => 880, "16148" => 929, "16149" => 975, "16150" => 850, "16151" => 835, "16152" => 842, "16153" => 856, "16154" => 903, "16155" => 935, "16156" => 834, "16157" => 917, "16158" => 811, "16159" => 947, "16160" => 873, "16161" => 853, "16162" => 944, "16163" => 962, "16164" => 964, "16165" => 974, "16166" => 913, "16167" => 935, "16168" => 958, "16169" => 982, "16170" => 865, "16171" => 786, "16172" => 822, "16173" => 901, "16174" => 851, "16175" => 714, "16176" => 829, "16177" => 842, "16178" => 679, "16179" => 857, "16180" => 896, "16181" => 834, "16182" => 880, "16183" => 913, "16184" => 802, "16185" => 789, "16186" => 811, "16187" => 942, "16188" => 961, "16189" => 894, "16190" => 954, "16191" => 872, "16192" => 800, "16469" => 678, "16470" => 678, "16471" => 678, "16472" => 678, "16473" => 678, "16474" => 1043, "16475" => 678, "16476" => 678, "16477" => 678, "16478" => 678, "16479" => 678, "16480" => 678, "16481" => 678, "16482" => 678, "16483" => 678, "16484" => 678, "16485" => 678, "16486" => 678, "16487" => 678, "16488" => 808, "16489" => 678, "16490" => 678, "16491" => 678, "16492" => 678, "16493" => 867, "16494" => 867, "16495" => 718, "16496" => 718, "16497" => 867, "16498" => 867, "16499" => 867, "16500" => 678, "16501" => 678, "16502" => 678, "16503" => 678, "16504" => 603, "16505" => 745, "16506" => 678, "16507" => 678, "16508" => 678, "16509" => 678, "16510" => 571, "16511" => 678, "16512" => 678, "16513" => 678, "16514" => 383, "16515" => 629, "16516" => 678, "16517" => 678, "16518" => 678, "16519" => 678, "16520" => 678, "16521" => 678, "16522" => 867, "16523" => 678, "16524" => 697, "16525" => 604, "16526" => 853, "16527" => 500, "16528" => 678, "16529" => 678, "16530" => 941, "16531" => 832, "16532" => 929, "16533" => 899, "16534" => 796, "16535" => 616, "16536" => 593, "16537" => 593, "16538" => 593, "16539" => 593, "16540" => 738, "16541" => 500, "16542" => 590, "16543" => 563, "16544" => 563, "16545" => 657, "16546" => 659, "16547" => 659, "16548" => 545, "16549" => 500, "16550" => 296, "16551" => 445, "16552" => 500, "16553" => 445, "16554" => 336, "16555" => 492, "16556" => 500, "16557" => 492, "16558" => 681, "16559" => 738, "16560" => 590, "16561" => 706, "16562" => 706, "16563" => 633, "16564" => 761, "16565" => 796, "16566" => 796, "16567" => 798, "16568" => 681, "16569" => 769, "16570" => 657, "16571" => 411, "16572" => 545, "16573" => 296, "16574" => 526, "16575" => 526, "16576" => 535, "16577" => 607, "16578" => 607, "16579" => 616, "16580" => 616, "16581" => 583, "16582" => 411, "16583" => 593, "16584" => 336, "16585" => 500, "16586" => 706, "16587" => 760, "16588" => 797, "16589" => 476, "16590" => 563, "16591" => 769, "16592" => 526, "16593" => 533, "16594" => 619, "16595" => 291, "16596" => 445, "16597" => 593, "16598" => 888, "16599" => 540, "16600" => 373, "16601" => 427, "16602" => 612, "16603" => 411, "16604" => 336, "16605" => 610, "16606" => 613, "16607" => 403, "16608" => 445, "16609" => 522, "16610" => 411, "16611" => 276, "16612" => 328, "16613" => 616, "16614" => 351, "16615" => 547, "16616" => 593, "16617" => 887, "16618" => 547, "16619" => 621, "16620" => 465, "16621" => 465, "16622" => 619, "16623" => 798, "16624" => 445, "16625" => 601, "16626" => 619, "16627" => 342, "16628" => 612, "16629" => 760, "16630" => 302, "16631" => 600, "16632" => 535, "16633" => 490, "16634" => 583, "16635" => 545, "16636" => 899, "16637" => 597, "16638" => 565, "16639" => 598, "16640" => 793, "16641" => 619, "16642" => 465, "16643" => 465, "16644" => 526, "16645" => 505, "16646" => 414, "16647" => 609, "16648" => 0, "16649" => 145, "16650" => 145, "16651" => 300, "16652" => 0, "16653" => 500, "16654" => 407, "16655" => 407, "16656" => 407, "16657" => 407, "16658" => 407, "16659" => 415, "16660" => 415, "16661" => 500, "16662" => 500, "16663" => 500, "16664" => 500, "16665" => 500, "16666" => 500, "16667" => 500, "16668" => 500, "16669" => 500, "16670" => 162, "16671" => 500, "16672" => 500, "16673" => 500, "16674" => 500, "16675" => 500, "16676" => 500, "16677" => 500, "16678" => 500, "16679" => 500, "16680" => 500, "16681" => 500, "16682" => 381, "16683" => 383, "16684" => 678, "16685" => 678, "16686" => 561, "16687" => 563, "16688" => 295, "16689" => 590, "16690" => 826, "16691" => 655, "16692" => 547, "16693" => 535, "16694" => 546, "16695" => 637, "16696" => 473, "16697" => 371, "16698" => 253, "16699" => 472, "16700" => 281, "16701" => 332, "16702" => 184, "16703" => 491, "16704" => 679, "16705" => 875, "16706" => 678, "16707" => 678, "16708" => 867, "16709" => 905, "16710" => 904, "16711" => 366, "16712" => 594, "16713" => 539, "16714" => 516, "16715" => 861, "16716" => 500, "16717" => 899, "16718" => 909, "16719" => 887, "16720" => 779, "16721" => 628, "16722" => 595, "16723" => 595, "16724" => 595, "16725" => 595, "16726" => 745, "16727" => 582, "16728" => 552, "16729" => 552, "16730" => 652, "16731" => 645, "16732" => 645, "16733" => 580, "16734" => 291, "16735" => 434, "16736" => 434, "16737" => 333, "16738" => 447, "16739" => 447, "16740" => 686, "16741" => 745, "16742" => 582, "16743" => 691, "16744" => 691, "16745" => 621, "16746" => 746, "16747" => 779, "16748" => 779, "16749" => 782, "16750" => 686, "16751" => 753, "16752" => 652, "16753" => 451, "16754" => 580, "16755" => 291, "16756" => 467, "16757" => 467, "16758" => 501, "16759" => 582, "16760" => 582, "16761" => 628, "16762" => 628, "16763" => 556, "16764" => 451, "16765" => 595, "16766" => 333, "16767" => 691, "16768" => 745, "16769" => 781, "16770" => 467, "16771" => 552, "16772" => 753, "16773" => 467, "16774" => 541, "16775" => 604, "16776" => 284, "16777" => 434, "16778" => 595);
+%min_w6_v=("8720" => 333, "8721" => 328, "8722" => 379, "8723" => 685, "8724" => 640, "8725" => 863, "8726" => 819, "8727" => 207, "8728" => 320, "8729" => 320, "8730" => 402, "8731" => 685, "8732" => 320, "8733" => 339, "8734" => 320, "8735" => 394, "8736" => 614, "8737" => 614, "8738" => 614, "8739" => 614, "8740" => 614, "8741" => 614, "8742" => 614, "8743" => 614, "8744" => 614, "8745" => 614, "8746" => 320, "8747" => 320, "8748" => 500, "8749" => 685, "8750" => 500, "8751" => 626, "8752" => 875, "8753" => 787, "8754" => 704, "8755" => 741, "8756" => 797, "8757" => 660, "8758" => 624, "8759" => 785, "8760" => 833, "8761" => 389, "8762" => 507, "8763" => 758, "8764" => 614, "8765" => 975, "8766" => 805, "8767" => 815, "8768" => 653, "8769" => 815, "8770" => 726, "8771" => 594, "8772" => 698, "8773" => 791, "8774" => 782, "8775" => 1050, "8776" => 752, "8777" => 759, "8778" => 667, "8779" => 320, "8780" => 729, "8781" => 320, "8782" => 500, "8783" => 500, "8784" => 500, "8785" => 575, "8786" => 629, "8787" => 544, "8788" => 626, "8789" => 560, "8790" => 361, "8791" => 548, "8792" => 666, "8793" => 333, "8794" => 325, "8795" => 607, "8796" => 335, "8797" => 971, "8798" => 663, "8799" => 606, "8800" => 633, "8801" => 629, "8802" => 455, "8803" => 474, "8804" => 368, "8805" => 627, "8806" => 594, "8807" => 834, "8808" => 572, "8809" => 589, "8810" => 508, "8811" => 320, "8812" => 500, "8813" => 320, "8814" => 500, "8815" => 311, "8816" => 394, "8817" => 311, "8818" => 500, "8819" => 500, "8820" => 328, "8821" => 640, "8822" => 690, "8823" => 155, "8824" => 640, "8825" => 640, "8826" => 565, "8827" => 535, "8828" => 444, "8829" => 271, "8830" => 271, "8831" => 653, "8832" => 652, "8833" => 500, "8834" => 640, "8835" => 640, "8836" => 320, "8837" => 614, "8838" => 640, "8839" => 311, "8840" => 535, "8841" => 535, "8842" => 444, "8843" => 960, "8844" => 1278, "8845" => 626, "8846" => 500, "8847" => 500, "8848" => 500, "8849" => 500, "8850" => 500, "8851" => 500, "8852" => 500, "8853" => 500, "8854" => 500, "8855" => 500, "8856" => 500, "8858" => 1026, "8859" => 402, "8860" => 614, "8861" => 815, "8862" => 1083, "8863" => 402, "8864" => 855, "8865" => 333, "8866" => 335, "8867" => 606, "8868" => 926, "8869" => 665, "8870" => 685, "8871" => 739, "8872" => 685, "8873" => 739, "8874" => 357, "8875" => 685, "8876" => 402, "8877" => 402, "8878" => 640, "8879" => 366, "8880" => 960, "8881" => 960, "8882" => 960, "8883" => 787, "8884" => 787, "8885" => 787, "8886" => 787, "8887" => 787, "8888" => 787, "8889" => 741, "8890" => 660, "8891" => 660, "8892" => 660, "8893" => 660, "8894" => 389, "8895" => 389, "8896" => 389, "8897" => 389, "8898" => 797, "8899" => 805, "8900" => 815, "8901" => 815, "8902" => 815, "8903" => 815, "8904" => 815, "8905" => 685, "8906" => 791, "8907" => 791, "8908" => 791, "8909" => 791, "8910" => 759, "8911" => 686, "8912" => 575, "8913" => 575, "8914" => 575, "8915" => 575, "8916" => 575, "8917" => 575, "8918" => 544, "8919" => 560, "8920" => 560, "8921" => 560, "8922" => 560, "8923" => 333, "8924" => 333, "8925" => 333, "8926" => 333, "8927" => 605, "8928" => 663, "8929" => 606, "8930" => 606, "8931" => 606, "8932" => 606, "8933" => 606, "8934" => 685, "8935" => 627, "8936" => 627, "8937" => 627, "8938" => 627, "8939" => 589, "8940" => 637, "8941" => 589, "8942" => 594, "8943" => 759, "8944" => 667, "8945" => 500, "8946" => 474, "8947" => 1044, "8948" => 508, "8949" => 612, "8950" => 500, "8951" => 500, "8952" => 500, "8953" => 500, "8954" => 500, "8955" => 500, "8956" => 500, "8957" => 500, "8958" => 500, "8959" => 500, "8960" => 500, "8961" => 500, "8962" => 500, "8963" => 500, "8964" => 500, "8965" => 500, "8966" => 500, "8967" => 500, "8968" => 500, "8969" => 500, "8970" => 500, "8971" => 500, "8972" => 500, "8973" => 500, "8974" => 500, "8975" => 500, "8976" => 500, "8977" => 500, "8978" => 500, "8979" => 500, "8980" => 500, "8981" => 500, "8982" => 500, "8983" => 500, "8984" => 500, "8985" => 500, "8986" => 500, "8987" => 500, "8988" => 500, "8989" => 500, "8990" => 500, "8991" => 500, "8992" => 500, "8993" => 500, "8994" => 500, "8995" => 500, "8996" => 500, "8997" => 500, "8998" => 500, "8999" => 500, "9000" => 500, "9001" => 500, "9002" => 500, "9003" => 500, "9004" => 500, "9005" => 500, "9006" => 500, "9007" => 500, "9008" => 500, "9009" => 500, "9010" => 500, "9011" => 500, "9012" => 500, "9013" => 500, "9014" => 500, "9015" => 500, "9016" => 500, "9017" => 500, "9018" => 500, "9019" => 500, "9020" => 500, "9021" => 500, "9022" => 500, "9023" => 500, "9024" => 500, "9025" => 500, "9026" => 500, "9027" => 500, "9028" => 500, "9029" => 500, "9030" => 500, "9031" => 500, "9032" => 500, "9033" => 500, "9034" => 500, "9035" => 500, "9036" => 500, "9037" => 500, "9038" => 500, "9039" => 500, "9040" => 500, "9041" => 500, "9042" => 500, "9043" => 500, "9044" => 500, "9045" => 500, "9046" => 500, "9047" => 500, "9048" => 500, "9049" => 500, "9050" => 500, "9051" => 500, "9052" => 500, "9053" => 500, "9054" => 500, "9055" => 500, "9056" => 500, "9057" => 500, "9058" => 500, "9059" => 500, "9060" => 500, "9061" => 500, "9062" => 500, "9063" => 500, "9064" => 500, "9065" => 500, "9066" => 500, "9067" => 500, "9068" => 500, "9069" => 500, "9070" => 500, "9071" => 500, "9072" => 500, "9073" => 500, "9074" => 500, "9075" => 500, "9076" => 500, "9077" => 500, "9078" => 500, "9079" => 500, "9080" => 500, "9081" => 500, "9082" => 500, "9083" => 500, "9084" => 500, "9085" => 500, "9086" => 500, "9087" => 500, "9088" => 500, "9089" => 500, "9090" => 500, "9091" => 500, "9092" => 500, "9093" => 500, "9094" => 500, "9095" => 500, "9096" => 500, "9097" => 500, "9098" => 500, "9099" => 500, "9100" => 500, "9101" => 500, "9102" => 500, "9103" => 500, "9104" => 500, "9105" => 500, "9106" => 500, "9107" => 500, "9108" => 500, "9109" => 500, "9110" => 500, "9111" => 500, "9112" => 500, "9113" => 500, "9114" => 500, "9115" => 500, "9116" => 500, "9117" => 500, "9118" => 500, "9119" => 500, "9120" => 500, "9121" => 500, "9122" => 500, "9123" => 500, "9124" => 500, "9125" => 500, "9126" => 500, "9127" => 500, "9128" => 500, "9129" => 500, "9130" => 500, "9131" => 500, "9132" => 500, "9133" => 500, "9134" => 500, "9135" => 500, "9136" => 500, "9137" => 500, "9138" => 500, "9139" => 500, "9140" => 500, "9141" => 500, "9142" => 500, "9143" => 500, "9144" => 500, "9145" => 500, "9146" => 500, "9147" => 500, "9148" => 500, "9149" => 500, "9150" => 500, "9151" => 500, "9152" => 500, "9153" => 500, "9154" => 500, "9155" => 500, "9156" => 500, "9157" => 500, "9158" => 500, "9159" => 500, "9160" => 500, "9161" => 500, "9162" => 500, "9163" => 500, "9164" => 500, "9165" => 500, "9166" => 500, "9167" => 500, "9168" => 500, "9169" => 500, "9170" => 500, "9171" => 500, "9172" => 500, "9173" => 500, "9174" => 500, "9175" => 500, "9176" => 500, "9177" => 500, "9178" => 500, "9179" => 500, "9180" => 500, "9181" => 500, "9182" => 500, "9183" => 500, "9184" => 500, "9185" => 500, "9186" => 500, "9187" => 500, "9188" => 500, "9189" => 500, "9190" => 500, "9191" => 500, "9192" => 500, "9193" => 500, "9194" => 500, "9195" => 500, "9196" => 500, "9197" => 500, "9198" => 500, "9199" => 500, "9200" => 500, "9201" => 500, "9202" => 500, "9203" => 500, "9204" => 500, "9205" => 500, "9206" => 500, "9207" => 500, "9208" => 500, "9209" => 500, "9210" => 500, "9211" => 500, "9212" => 500, "9213" => 500, "9214" => 500, "9215" => 500, "9216" => 500, "9217" => 500, "9218" => 500, "9219" => 500, "9220" => 500, "9221" => 500, "9222" => 500, "9223" => 500, "9224" => 500, "9225" => 500, "9226" => 500, "9227" => 500, "9228" => 500, "9229" => 500, "9230" => 500, "9231" => 500, "9232" => 500, "9233" => 500, "9234" => 500, "9235" => 500, "9236" => 500, "9237" => 500, "9238" => 500, "9239" => 500, "9240" => 500, "9241" => 500, "9242" => 500, "9243" => 500, "9244" => 500, "9245" => 500, "9246" => 500, "9247" => 500, "9248" => 500, "9249" => 500, "9250" => 500, "9251" => 500, "9252" => 500, "9253" => 500, "9254" => 500, "9255" => 500, "9256" => 500, "9257" => 500, "9258" => 500, "9259" => 500, "9260" => 500, "9261" => 500, "9262" => 500, "9263" => 500, "9264" => 500, "9265" => 500, "9266" => 500, "9267" => 500, "9268" => 500, "9269" => 500, "9270" => 500, "9271" => 500, "9272" => 500, "9273" => 500, "9274" => 500, "9275" => 500, "9276" => 500, "9277" => 500, "9278" => 500, "9279" => 500, "9280" => 500, "9281" => 500, "9282" => 500, "9283" => 500, "9284" => 500, "9285" => 500, "9286" => 500, "9287" => 500, "9288" => 500, "9289" => 500, "9290" => 500, "9291" => 500, "9292" => 500, "9293" => 500, "9294" => 500, "9295" => 500, "9296" => 500, "9297" => 500, "9298" => 500, "9299" => 500, "9300" => 500, "9301" => 500, "9302" => 500, "9303" => 500, "9304" => 500, "9305" => 500, "9306" => 500, "9307" => 500, "9308" => 500, "9309" => 500, "9310" => 500, "9311" => 500, "9312" => 500, "9313" => 500, "9314" => 500, "9315" => 500, "9316" => 500, "9317" => 500, "9318" => 500, "9319" => 500, "9320" => 500, "9321" => 500, "9322" => 500, "9323" => 500, "9324" => 500, "9325" => 500, "9326" => 500, "9327" => 500, "9328" => 500, "9329" => 500, "9330" => 500, "9331" => 500, "9332" => 500, "9333" => 500, "9334" => 500, "9335" => 500, "9336" => 500, "9337" => 500, "9338" => 500, "9339" => 500, "9340" => 500, "9341" => 500, "9342" => 500, "9343" => 500, "9344" => 500, "9345" => 500, "9346" => 500, "9347" => 500, "9348" => 500, "9349" => 500, "9350" => 500, "9351" => 500, "9352" => 500, "9353" => 500, "12870" => 652, "12871" => 864, "12872" => 234, "12873" => 405, "12874" => 688, "12875" => 971, "12876" => 977, "12877" => 575, "12878" => 333, "12879" => 627, "12880" => 560, "12881" => 606, "12882" => 787, "12883" => 389, "12884" => 791, "12885" => 660, "12886" => 815, "12887" => 960, "12888" => 960, "12889" => 960, "12890" => 960, "12891" => 960, "12892" => 960, "12893" => 402, "12894" => 402, "12895" => 402, "12896" => 402, "12897" => 402, "12898" => 402, "12899" => 402, "12900" => 402, "12901" => 366, "12902" => 402, "12903" => 402, "12904" => 402, "12905" => 402, "12906" => 402, "12907" => 402, "12908" => 402, "12909" => 402, "12910" => 787, "12911" => 660, "12912" => 660, "12913" => 660, "12914" => 389, "12915" => 389, "12916" => 389, "12917" => 815, "12918" => 815, "12919" => 791, "12920" => 791, "12921" => 791, "12922" => 575, "12923" => 560, "12924" => 560, "12925" => 560, "12926" => 333, "12927" => 333, "12928" => 333, "12929" => 606, "12930" => 606, "12931" => 627, "12932" => 627, "12933" => 627, "12934" => 625, "12935" => 625, "12936" => 625, "12937" => 855, "12938" => 855, "12939" => 544, "12940" => 544, "12941" => 544, "12942" => 560, "12943" => 560, "12944" => 560, "12945" => 773, "12946" => 773, "12947" => 773, "12948" => 508, "12949" => 508, "12950" => 508, "12951" => 325, "12952" => 652, "12953" => 606, "12954" => 594, "12955" => 594, "12956" => 594, "12957" => 524, "12958" => 373, "12959" => 320, "12960" => 333, "12961" => 328, "12962" => 379, "12963" => 685, "12964" => 640, "12965" => 864, "12966" => 829, "12967" => 207, "12968" => 320, "12969" => 320, "12970" => 402, "12971" => 685, "12972" => 320, "12973" => 339, "12974" => 320, "12975" => 394, "12976" => 614, "12977" => 614, "12978" => 614, "12979" => 614, "12980" => 614, "12981" => 614, "12982" => 614, "12983" => 614, "12984" => 614, "12985" => 614, "12986" => 320, "12987" => 320, "12988" => 554, "12989" => 685, "12990" => 554, "12991" => 626, "12992" => 875, "12993" => 782, "12994" => 704, "12995" => 707, "12996" => 798, "12997" => 681, "12998" => 619, "12999" => 773, "13000" => 829, "13001" => 395, "13002" => 498, "13003" => 776, "13004" => 606, "13005" => 953, "13006" => 775, "13007" => 809, "13008" => 651, "13009" => 808, "13010" => 743, "13011" => 597, "13012" => 682, "13013" => 784, "13014" => 779, "13015" => 1043, "13016" => 752, "13017" => 755, "13018" => 631, "13019" => 320, "13020" => 729, "13021" => 320, "13022" => 500, "13023" => 500, "13024" => 500, "13025" => 617, "13026" => 587, "13027" => 491, "13028" => 634, "13029" => 554, "13030" => 373, "13031" => 586, "13032" => 646, "13033" => 346, "13034" => 316, "13035" => 608, "13036" => 354, "13037" => 964, "13038" => 678, "13039" => 581, "13040" => 640, "13041" => 585, "13042" => 474, "13043" => 482, "13044" => 363, "13045" => 650, "13046" => 578, "13047" => 868, "13048" => 635, "13049" => 613, "13050" => 516, "13051" => 320, "13052" => 500, "13053" => 320, "13054" => 500, "13055" => 311, "13056" => 394, "13057" => 311, "13058" => 500, "13059" => 614, "13060" => 328, "13061" => 640, "13062" => 690, "13063" => 157, "13064" => 581, "13065" => 640, "13066" => 565, "13067" => 535, "13068" => 444, "13069" => 271, "13070" => 271, "13071" => 673, "13072" => 686, "13073" => 500, "13074" => 640, "13075" => 640, "13076" => 320, "13077" => 614, "13078" => 640, "13079" => 311, "13080" => 535, "13081" => 535, "13082" => 444, "13083" => 948, "13084" => 1279, "13085" => 626, "13086" => 500, "13087" => 500, "13088" => 500, "13089" => 500, "13090" => 500, "13091" => 500, "13092" => 500, "13093" => 500, "13094" => 500, "13095" => 500, "13096" => 500, "13098" => 1006, "13099" => 406, "13100" => 606, "13101" => 809, "13102" => 1082, "13103" => 406, "13104" => 840, "13105" => 346, "13106" => 360, "13107" => 581, "13108" => 897, "13109" => 634, "13110" => 685, "13111" => 739, "13112" => 685, "13113" => 739, "13114" => 357, "13115" => 685, "13116" => 386, "13117" => 386, "13118" => 661, "13119" => 386, "13120" => 943, "13121" => 943, "13122" => 943, "13123" => 782, "13124" => 782, "13125" => 782, "13126" => 782, "13127" => 782, "13128" => 782, "13129" => 707, "13130" => 681, "13131" => 681, "13132" => 681, "13133" => 681, "13134" => 395, "13135" => 395, "13136" => 395, "13137" => 395, "13138" => 798, "13139" => 775, "13140" => 809, "13141" => 809, "13142" => 809, "13143" => 809, "13144" => 809, "13145" => 685, "13146" => 784, "13147" => 784, "13148" => 784, "13149" => 784, "13150" => 755, "13151" => 678, "13152" => 617, "13153" => 617, "13154" => 617, "13155" => 617, "13156" => 617, "13157" => 617, "13158" => 491, "13159" => 554, "13160" => 554, "13161" => 554, "13162" => 554, "13163" => 346, "13164" => 346, "13165" => 346, "13166" => 346, "13167" => 581, "13168" => 678, "13169" => 581, "13170" => 581, "13171" => 581, "13172" => 581, "13173" => 581, "13174" => 685, "13175" => 650, "13176" => 650, "13177" => 650, "13178" => 650, "13179" => 613, "13180" => 624, "13181" => 613, "13182" => 597, "13183" => 755, "13184" => 631, "13185" => 500, "13186" => 482, "13187" => 1037, "13188" => 516, "13189" => 614, "13190" => 680, "13191" => 881, "13192" => 234, "13193" => 405, "13194" => 704, "13195" => 988, "13196" => 1017, "13197" => 617, "13198" => 346, "13199" => 650, "13200" => 554, "13201" => 581, "13202" => 782, "13203" => 395, "13204" => 784, "13205" => 681, "13206" => 809, "13207" => 943, "13208" => 943, "13209" => 943, "13210" => 943, "13211" => 943, "13212" => 943, "13213" => 386, "13214" => 386, "13215" => 386, "13216" => 386, "13217" => 386, "13218" => 386, "13219" => 386, "13220" => 386, "13221" => 386, "13222" => 386, "13223" => 386, "13224" => 386, "13225" => 386, "13226" => 386, "13227" => 386, "13228" => 386, "13229" => 386, "13230" => 782, "13231" => 681, "13232" => 681, "13233" => 681, "13234" => 395, "13235" => 395, "13236" => 395, "13237" => 809, "13238" => 809, "13239" => 784, "13240" => 784, "13241" => 784, "13242" => 617, "13243" => 554, "13244" => 554, "13245" => 554, "13246" => 346, "13247" => 346, "13248" => 346, "13249" => 581, "13250" => 581, "13251" => 650, "13252" => 650, "13253" => 650, "13254" => 250, "13255" => 250, "13256" => 250, "13257" => 250, "13258" => 250, "13259" => 250, "13260" => 250, "13261" => 250, "13262" => 250, "13263" => 250, "13264" => 250, "13265" => 250, "13266" => 250, "13267" => 250, "13268" => 250, "13269" => 250, "13270" => 250, "13271" => 250, "13272" => 250, "13273" => 250, "13274" => 333, "13275" => 333, "13276" => 333, "13277" => 333, "13278" => 333, "13279" => 333, "13280" => 333, "13281" => 333, "13282" => 333, "13283" => 333, "13284" => 333, "13285" => 333, "13286" => 333, "13287" => 333, "13288" => 333, "13289" => 333, "13290" => 333, "13291" => 333, "13292" => 333, "13293" => 333, "13294" => 333, "13295" => 500, "13296" => 500, "13297" => 500, "13298" => 500, "13299" => 500, "13300" => 500, "13301" => 500, "13302" => 500, "13303" => 500, "13304" => 500, "13305" => 500, "13306" => 500, "13307" => 500, "13308" => 500, "13309" => 500, "13310" => 500, "13311" => 500, "13312" => 500, "13313" => 500, "13314" => 500, "13315" => 500, "13316" => 500, "13317" => 500, "13318" => 500, "13319" => 500, "15976" => 746, "15977" => 844, "15978" => 798, "15979" => 854, "15980" => 840, "15981" => 909, "15982" => 998, "15983" => 959, "15984" => 996, "15985" => 915, "15986" => 979, "15987" => 792, "15988" => 847, "15989" => 947, "15990" => 999, "15991" => 912, "15992" => 974, "15993" => 889, "15994" => 948, "15995" => 924, "15996" => 939, "15997" => 993, "15998" => 986, "15999" => 999, "16000" => 998, "16001" => 964, "16002" => 982, "16003" => 947, "16004" => 960, "16005" => 984, "16006" => 985, "16007" => 953, "16008" => 974, "16009" => 961, "16010" => 983, "16011" => 945, "16012" => 966, "16013" => 966, "16014" => 974, "16015" => 947, "16016" => 968, "16017" => 978, "16018" => 980, "16019" => 804, "16020" => 842, "16021" => 915, "16022" => 892, "16023" => 895, "16024" => 989, "16025" => 989, "16026" => 966, "16027" => 917, "16028" => 923, "16029" => 954, "16030" => 899, "16031" => 955, "16032" => 976, "16033" => 982, "16034" => 936, "16035" => 964, "16036" => 980, "16037" => 939, "16038" => 947, "16039" => 943, "16040" => 743, "16041" => 833, "16042" => 858, "16043" => 946, "16044" => 974, "16045" => 981, "16046" => 988, "16047" => 936, "16048" => 958, "16049" => 941, "16050" => 991, "16051" => 883, "16052" => 954, "16053" => 882, "16054" => 940, "16055" => 917, "16056" => 983, "16057" => 982, "16058" => 985, "16059" => 980, "16060" => 943, "16061" => 979, "16062" => 873, "16063" => 945, "16064" => 959, "16065" => 982, "16066" => 979, "16067" => 940, "16068" => 972, "16069" => 860, "16070" => 903, "16071" => 963, "16072" => 995, "16073" => 994, "16074" => 989, "16075" => 980, "16076" => 850, "16077" => 920, "16078" => 892, "16079" => 946, "16080" => 893, "16081" => 956, "16082" => 804, "16083" => 839, "16084" => 884, "16085" => 941, "16086" => 948, "16087" => 950, "16088" => 941, "16089" => 965, "16090" => 937, "16091" => 957, "16092" => 932, "16093" => 965, "16094" => 859, "16095" => 913, "16096" => 937, "16097" => 965, "16098" => 861, "16099" => 921, "16100" => 885, "16101" => 944, "16102" => 893, "16103" => 940, "16104" => 906, "16105" => 964, "16106" => 942, "16107" => 961, "16108" => 940, "16109" => 951, "16110" => 843, "16111" => 897, "16112" => 961, "16113" => 934, "16114" => 962, "16115" => 974, "16116" => 975, "16117" => 935, "16118" => 831, "16119" => 933, "16120" => 964, "16121" => 913, "16122" => 765, "16123" => 844, "16124" => 874, "16125" => 906, "16126" => 935, "16127" => 955, "16128" => 906, "16129" => 963, "16130" => 967, "16131" => 738, "16132" => 832, "16133" => 858, "16134" => 932, "16135" => 958, "16136" => 973, "16137" => 838, "16138" => 947, "16139" => 910, "16140" => 918, "16141" => 900, "16142" => 868, "16143" => 919, "16144" => 799, "16145" => 833, "16146" => 855, "16147" => 905, "16148" => 947, "16149" => 989, "16150" => 883, "16151" => 871, "16152" => 871, "16153" => 865, "16154" => 915, "16155" => 958, "16156" => 865, "16157" => 939, "16158" => 830, "16159" => 962, "16160" => 890, "16161" => 864, "16162" => 964, "16163" => 972, "16164" => 966, "16165" => 975, "16166" => 938, "16167" => 958, "16168" => 970, "16169" => 992, "16170" => 867, "16171" => 808, "16172" => 840, "16173" => 906, "16174" => 865, "16175" => 731, "16176" => 852, "16177" => 850, "16178" => 701, "16179" => 877, "16180" => 901, "16181" => 862, "16182" => 886, "16183" => 922, "16184" => 830, "16185" => 808, "16186" => 824, "16187" => 966, "16188" => 980, "16189" => 928, "16190" => 971, "16191" => 888, "16192" => 823, "16469" => 685, "16470" => 685, "16471" => 685, "16472" => 685, "16473" => 685, "16474" => 1069, "16475" => 685, "16476" => 685, "16477" => 685, "16478" => 685, "16479" => 685, "16480" => 685, "16481" => 685, "16482" => 685, "16483" => 685, "16484" => 685, "16485" => 685, "16486" => 685, "16487" => 685, "16488" => 825, "16489" => 685, "16490" => 685, "16491" => 685, "16492" => 685, "16493" => 907, "16494" => 907, "16495" => 740, "16496" => 740, "16497" => 890, "16498" => 890, "16499" => 890, "16500" => 685, "16501" => 685, "16502" => 685, "16503" => 685, "16504" => 648, "16505" => 772, "16506" => 685, "16507" => 685, "16508" => 685, "16509" => 685, "16510" => 571, "16511" => 685, "16512" => 685, "16513" => 685, "16514" => 383, "16515" => 629, "16516" => 685, "16517" => 685, "16518" => 685, "16519" => 685, "16520" => 685, "16521" => 685, "16522" => 907, "16523" => 685, "16524" => 741, "16525" => 646, "16526" => 864, "16527" => 500, "16528" => 685, "16529" => 685, "16530" => 960, "16531" => 867, "16532" => 975, "16533" => 971, "16534" => 805, "16535" => 663, "16536" => 627, "16537" => 627, "16538" => 627, "16539" => 627, "16540" => 787, "16541" => 500, "16542" => 614, "16543" => 594, "16544" => 594, "16545" => 698, "16546" => 667, "16547" => 667, "16548" => 575, "16549" => 500, "16550" => 335, "16551" => 474, "16552" => 500, "16553" => 474, "16554" => 355, "16555" => 508, "16556" => 500, "16557" => 508, "16558" => 726, "16559" => 787, "16560" => 614, "16561" => 741, "16562" => 741, "16563" => 660, "16564" => 797, "16565" => 805, "16566" => 805, "16567" => 815, "16568" => 726, "16569" => 791, "16570" => 698, "16571" => 455, "16572" => 575, "16573" => 335, "16574" => 544, "16575" => 544, "16576" => 560, "16577" => 626, "16578" => 626, "16579" => 663, "16580" => 663, "16581" => 606, "16582" => 455, "16583" => 627, "16584" => 355, "16585" => 500, "16586" => 741, "16587" => 785, "16588" => 833, "16589" => 507, "16590" => 594, "16591" => 791, "16592" => 544, "16593" => 548, "16594" => 666, "16595" => 325, "16596" => 474, "16597" => 627, "16598" => 960, "16599" => 563, "16600" => 428, "16601" => 457, "16602" => 639, "16603" => 455, "16604" => 361, "16605" => 626, "16606" => 659, "16607" => 451, "16608" => 474, "16609" => 526, "16610" => 455, "16611" => 321, "16612" => 361, "16613" => 663, "16614" => 381, "16615" => 589, "16616" => 629, "16617" => 958, "16618" => 614, "16619" => 666, "16620" => 498, "16621" => 498, "16622" => 666, "16623" => 815, "16624" => 484, "16625" => 629, "16626" => 626, "16627" => 367, "16628" => 629, "16629" => 785, "16630" => 333, "16631" => 627, "16632" => 560, "16633" => 508, "16634" => 612, "16635" => 575, "16636" => 971, "16637" => 611, "16638" => 614, "16639" => 625, "16640" => 834, "16641" => 666, "16642" => 498, "16643" => 498, "16644" => 544, "16645" => 529, "16646" => 459, "16647" => 654, "16648" => 0, "16649" => 160, "16650" => 160, "16651" => 320, "16652" => 0, "16653" => 500, "16654" => 441, "16655" => 441, "16656" => 441, "16657" => 441, "16658" => 441, "16659" => 455, "16660" => 455, "16661" => 500, "16662" => 500, "16663" => 500, "16664" => 500, "16665" => 500, "16666" => 500, "16667" => 500, "16668" => 500, "16669" => 500, "16670" => 206, "16671" => 500, "16672" => 500, "16673" => 500, "16674" => 500, "16675" => 500, "16676" => 500, "16677" => 500, "16678" => 500, "16679" => 500, "16680" => 500, "16681" => 500, "16682" => 405, "16683" => 383, "16684" => 685, "16685" => 685, "16686" => 594, "16687" => 589, "16688" => 320, "16689" => 601, "16690" => 850, "16691" => 695, "16692" => 614, "16693" => 578, "16694" => 567, "16695" => 664, "16696" => 496, "16697" => 419, "16698" => 315, "16699" => 504, "16700" => 299, "16701" => 354, "16702" => 217, "16703" => 519, "16704" => 693, "16705" => 875, "16706" => 685, "16707" => 685, "16708" => 890, "16709" => 922, "16710" => 922, "16711" => 414, "16712" => 629, "16713" => 582, "16714" => 574, "16715" => 881, "16716" => 500, "16717" => 943, "16718" => 953, "16719" => 964, "16720" => 775, "16721" => 678, "16722" => 650, "16723" => 650, "16724" => 650, "16725" => 650, "16726" => 782, "16727" => 606, "16728" => 597, "16729" => 597, "16730" => 682, "16731" => 631, "16732" => 631, "16733" => 617, "16734" => 354, "16735" => 482, "16736" => 482, "16737" => 363, "16738" => 516, "16739" => 516, "16740" => 743, "16741" => 782, "16742" => 606, "16743" => 707, "16744" => 707, "16745" => 681, "16746" => 798, "16747" => 775, "16748" => 775, "16749" => 809, "16750" => 743, "16751" => 784, "16752" => 682, "16753" => 474, "16754" => 617, "16755" => 354, "16756" => 491, "16757" => 491, "16758" => 554, "16759" => 634, "16760" => 634, "16761" => 678, "16762" => 678, "16763" => 581, "16764" => 474, "16765" => 650, "16766" => 363, "16767" => 707, "16768" => 773, "16769" => 829, "16770" => 498, "16771" => 597, "16772" => 784, "16773" => 491, "16774" => 586, "16775" => 646, "16776" => 316, "16777" => 482, "16778" => 650);
+%goth_w3_v=("8720" => 333, "8721" => 311, "8722" => 356, "8723" => 657, "8724" => 650, "8725" => 879, "8726" => 797, "8727" => 195, "8728" => 356, "8729" => 356, "8730" => 346, "8731" => 656, "8732" => 240, "8733" => 358, "8734" => 240, "8735" => 474, "8736" => 657, "8737" => 657, "8738" => 657, "8739" => 657, "8740" => 661, "8741" => 657, "8742" => 657, "8743" => 657, "8744" => 657, "8745" => 657, "8746" => 240, "8747" => 240, "8748" => 512, "8749" => 656, "8750" => 512, "8751" => 571, "8752" => 905, "8753" => 750, "8754" => 712, "8755" => 756, "8756" => 758, "8757" => 643, "8758" => 602, "8759" => 754, "8760" => 778, "8761" => 249, "8762" => 508, "8763" => 707, "8764" => 602, "8765" => 945, "8766" => 774, "8767" => 795, "8768" => 662, "8769" => 795, "8770" => 726, "8771" => 669, "8772" => 649, "8773" => 773, "8774" => 717, "8775" => 1006, "8776" => 722, "8777" => 688, "8778" => 669, "8779" => 346, "8780" => 691, "8781" => 346, "8782" => 533, "8783" => 501, "8784" => 500, "8785" => 575, "8786" => 646, "8787" => 578, "8788" => 646, "8789" => 588, "8790" => 417, "8791" => 641, "8792" => 617, "8793" => 238, "8794" => 265, "8795" => 575, "8796" => 232, "8797" => 931, "8798" => 618, "8799" => 625, "8800" => 647, "8801" => 646, "8802" => 430, "8803" => 537, "8804" => 392, "8805" => 618, "8806" => 544, "8807" => 770, "8808" => 536, "8809" => 554, "8810" => 498, "8811" => 347, "8812" => 372, "8813" => 347, "8814" => 543, "8815" => 240, "8816" => 474, "8817" => 240, "8818" => 375, "8819" => 543, "8820" => 311, "8821" => 586, "8822" => 655, "8823" => 145, "8824" => 586, "8825" => 639, "8826" => 565, "8827" => 384, "8828" => 466, "8829" => 303, "8830" => 303, "8831" => 620, "8832" => 616, "8833" => 500, "8834" => 600, "8835" => 600, "8836" => 240, "8837" => 587, "8838" => 479, "8839" => 240, "8840" => 384, "8841" => 384, "8842" => 466, "8843" => 721, "8844" => 1275, "8845" => 571, "8846" => 500, "8847" => 500, "8848" => 500, "8849" => 500, "8850" => 500, "8851" => 500, "8852" => 500, "8853" => 756, "8854" => 500, "8855" => 759, "8856" => 500, "8858" => 1057, "8859" => 394, "8860" => 639, "8861" => 795, "8862" => 1039, "8863" => 430, "8864" => 969, "8865" => 238, "8866" => 300, "8867" => 625, "8868" => 1021, "8869" => 627, "8870" => 656, "8871" => 570, "8872" => 656, "8873" => 570, "8874" => 300, "8875" => 656, "8876" => 394, "8877" => 394, "8878" => 619, "8879" => 394, "8880" => 854, "8881" => 851, "8882" => 884, "8883" => 750, "8884" => 750, "8885" => 750, "8886" => 750, "8887" => 750, "8888" => 750, "8889" => 756, "8890" => 643, "8891" => 643, "8892" => 643, "8893" => 643, "8894" => 249, "8895" => 249, "8896" => 249, "8897" => 249, "8898" => 766, "8899" => 774, "8900" => 795, "8901" => 795, "8902" => 795, "8903" => 795, "8904" => 795, "8905" => 656, "8906" => 773, "8907" => 773, "8908" => 773, "8909" => 773, "8910" => 688, "8911" => 645, "8912" => 575, "8913" => 575, "8914" => 575, "8915" => 575, "8916" => 575, "8917" => 575, "8918" => 578, "8919" => 588, "8920" => 588, "8921" => 588, "8922" => 588, "8923" => 308, "8924" => 304, "8925" => 304, "8926" => 274, "8927" => 644, "8928" => 618, "8929" => 625, "8930" => 625, "8931" => 625, "8932" => 625, "8933" => 625, "8934" => 656, "8935" => 618, "8936" => 618, "8937" => 618, "8938" => 618, "8939" => 554, "8940" => 647, "8941" => 554, "8942" => 669, "8943" => 688, "8944" => 669, "8945" => 500, "8946" => 537, "8947" => 1004, "8948" => 498, "8949" => 657, "8950" => 500, "8951" => 500, "8952" => 500, "8953" => 500, "8954" => 500, "8955" => 500, "8956" => 500, "8957" => 500, "8958" => 500, "8959" => 500, "8960" => 500, "8961" => 500, "8962" => 500, "8963" => 500, "8964" => 500, "8965" => 500, "8966" => 500, "8967" => 500, "8968" => 500, "8969" => 500, "8970" => 500, "8971" => 500, "8972" => 500, "8973" => 500, "8974" => 500, "8975" => 500, "8976" => 500, "8977" => 500, "8978" => 500, "8979" => 500, "8980" => 500, "8981" => 500, "8982" => 500, "8983" => 500, "8984" => 500, "8985" => 500, "8986" => 500, "8987" => 500, "8988" => 500, "8989" => 500, "8990" => 500, "8991" => 500, "8992" => 500, "8993" => 500, "8994" => 500, "8995" => 500, "8996" => 500, "8997" => 500, "8998" => 500, "8999" => 500, "9000" => 500, "9001" => 500, "9002" => 500, "9003" => 500, "9004" => 500, "9005" => 500, "9006" => 500, "9007" => 500, "9008" => 500, "9009" => 500, "9010" => 500, "9011" => 500, "9012" => 500, "9013" => 500, "9014" => 500, "9015" => 500, "9016" => 500, "9017" => 500, "9018" => 500, "9019" => 500, "9020" => 500, "9021" => 500, "9022" => 500, "9023" => 500, "9024" => 500, "9025" => 500, "9026" => 500, "9027" => 500, "9028" => 500, "9029" => 500, "9030" => 500, "9031" => 500, "9032" => 500, "9033" => 500, "9034" => 500, "9035" => 500, "9036" => 500, "9037" => 500, "9038" => 500, "9039" => 500, "9040" => 500, "9041" => 500, "9042" => 500, "9043" => 500, "9044" => 500, "9045" => 500, "9046" => 500, "9047" => 500, "9048" => 500, "9049" => 500, "9050" => 500, "9051" => 500, "9052" => 500, "9053" => 500, "9054" => 500, "9055" => 500, "9056" => 500, "9057" => 500, "9058" => 500, "9059" => 500, "9060" => 500, "9061" => 500, "9062" => 500, "9063" => 500, "9064" => 500, "9065" => 500, "9066" => 500, "9067" => 500, "9068" => 500, "9069" => 500, "9070" => 500, "9071" => 500, "9072" => 500, "9073" => 500, "9074" => 500, "9075" => 500, "9076" => 500, "9077" => 500, "9078" => 500, "9079" => 500, "9080" => 500, "9081" => 500, "9082" => 500, "9083" => 500, "9084" => 500, "9085" => 500, "9086" => 500, "9087" => 500, "9088" => 500, "9089" => 500, "9090" => 500, "9091" => 500, "9092" => 500, "9093" => 500, "9094" => 500, "9095" => 500, "9096" => 500, "9097" => 500, "9098" => 500, "9099" => 500, "9100" => 500, "9101" => 500, "9102" => 500, "9103" => 500, "9104" => 500, "9105" => 500, "9106" => 500, "9107" => 500, "9108" => 500, "9109" => 500, "9110" => 500, "9111" => 500, "9112" => 500, "9113" => 500, "9114" => 500, "9115" => 500, "9116" => 500, "9117" => 500, "9118" => 500, "9119" => 500, "9120" => 500, "9121" => 500, "9122" => 500, "9123" => 500, "9124" => 500, "9125" => 500, "9126" => 500, "9127" => 500, "9128" => 500, "9129" => 500, "9130" => 500, "9131" => 500, "9132" => 500, "9133" => 500, "9134" => 500, "9135" => 500, "9136" => 500, "9137" => 500, "9138" => 500, "9139" => 500, "9140" => 500, "9141" => 500, "9142" => 500, "9143" => 500, "9144" => 500, "9145" => 500, "9146" => 500, "9147" => 500, "9148" => 500, "9149" => 500, "9150" => 500, "9151" => 500, "9152" => 500, "9153" => 500, "9154" => 500, "9155" => 500, "9156" => 500, "9157" => 500, "9158" => 500, "9159" => 500, "9160" => 500, "9161" => 500, "9162" => 500, "9163" => 500, "9164" => 500, "9165" => 500, "9166" => 500, "9167" => 500, "9168" => 500, "9169" => 500, "9170" => 500, "9171" => 500, "9172" => 500, "9173" => 500, "9174" => 500, "9175" => 500, "9176" => 500, "9177" => 500, "9178" => 500, "9179" => 500, "9180" => 500, "9181" => 500, "9182" => 500, "9183" => 500, "9184" => 500, "9185" => 500, "9186" => 500, "9187" => 500, "9188" => 500, "9189" => 500, "9190" => 500, "9191" => 500, "9192" => 500, "9193" => 500, "9194" => 500, "9195" => 500, "9196" => 500, "9197" => 500, "9198" => 500, "9199" => 500, "9200" => 500, "9201" => 500, "9202" => 500, "9203" => 500, "9204" => 500, "9205" => 500, "9206" => 500, "9207" => 500, "9208" => 500, "9209" => 500, "9210" => 500, "9211" => 500, "9212" => 500, "9213" => 500, "9214" => 500, "9215" => 500, "9216" => 500, "9217" => 500, "9218" => 500, "9219" => 500, "9220" => 500, "9221" => 500, "9222" => 500, "9223" => 500, "9224" => 500, "9225" => 500, "9226" => 500, "9227" => 500, "9228" => 500, "9229" => 500, "9230" => 500, "9231" => 500, "9232" => 500, "9233" => 500, "9234" => 500, "9235" => 500, "9236" => 500, "9237" => 500, "9238" => 500, "9239" => 500, "9240" => 500, "9241" => 500, "9242" => 500, "9243" => 500, "9244" => 500, "9245" => 500, "9246" => 500, "9247" => 500, "9248" => 500, "9249" => 500, "9250" => 500, "9251" => 500, "9252" => 500, "9253" => 500, "9254" => 500, "9255" => 500, "9256" => 500, "9257" => 500, "9258" => 500, "9259" => 500, "9260" => 500, "9261" => 500, "9262" => 500, "9263" => 500, "9264" => 500, "9265" => 500, "9266" => 500, "9267" => 500, "9268" => 500, "9269" => 500, "9270" => 500, "9271" => 500, "9272" => 500, "9273" => 500, "9274" => 500, "9275" => 500, "9276" => 500, "9277" => 500, "9278" => 500, "9279" => 500, "9280" => 500, "9281" => 500, "9282" => 500, "9283" => 500, "9284" => 500, "9285" => 500, "9286" => 500, "9287" => 500, "9288" => 500, "9289" => 500, "9290" => 500, "9291" => 500, "9292" => 500, "9293" => 500, "9294" => 500, "9295" => 500, "9296" => 500, "9297" => 500, "9298" => 500, "9299" => 500, "9300" => 500, "9301" => 500, "9302" => 500, "9303" => 500, "9304" => 500, "9305" => 500, "9306" => 500, "9307" => 500, "9308" => 500, "9309" => 500, "9310" => 500, "9311" => 500, "9312" => 500, "9313" => 500, "9314" => 500, "9315" => 500, "9316" => 500, "9317" => 500, "9318" => 500, "9319" => 500, "9320" => 500, "9321" => 500, "9322" => 500, "9323" => 500, "9324" => 500, "9325" => 500, "9326" => 500, "9327" => 500, "9328" => 500, "9329" => 500, "9330" => 500, "9331" => 500, "9332" => 500, "9333" => 500, "9334" => 500, "9335" => 500, "9336" => 500, "9337" => 500, "9338" => 500, "9339" => 500, "9340" => 500, "9341" => 500, "9342" => 500, "9343" => 500, "9344" => 500, "9345" => 500, "9346" => 500, "9347" => 500, "9348" => 500, "9349" => 500, "9350" => 500, "9351" => 500, "9352" => 500, "9353" => 500, "12870" => 714, "12871" => 803, "12872" => 215, "12873" => 370, "12874" => 737, "12875" => 939, "12876" => 933, "12877" => 575, "12878" => 292, "12879" => 618, "12880" => 588, "12881" => 625, "12882" => 750, "12883" => 249, "12884" => 773, "12885" => 643, "12886" => 795, "12887" => 884, "12888" => 884, "12889" => 884, "12890" => 884, "12891" => 884, "12892" => 884, "12893" => 394, "12894" => 394, "12895" => 394, "12896" => 394, "12897" => 394, "12898" => 394, "12899" => 394, "12900" => 394, "12901" => 394, "12902" => 394, "12903" => 394, "12904" => 394, "12905" => 394, "12906" => 394, "12907" => 394, "12908" => 394, "12909" => 394, "12910" => 750, "12911" => 643, "12912" => 643, "12913" => 643, "12914" => 249, "12915" => 249, "12916" => 249, "12917" => 795, "12918" => 795, "12919" => 773, "12920" => 773, "12921" => 773, "12922" => 575, "12923" => 588, "12924" => 588, "12925" => 588, "12926" => 304, "12927" => 238, "12928" => 325, "12929" => 625, "12930" => 625, "12931" => 618, "12932" => 618, "12933" => 618, "12934" => 646, "12935" => 646, "12936" => 646, "12937" => 969, "12938" => 969, "12939" => 578, "12940" => 578, "12941" => 578, "12942" => 588, "12943" => 588, "12944" => 588, "12945" => 748, "12946" => 748, "12947" => 748, "12948" => 526, "12949" => 526, "12950" => 526, "12951" => 265, "12952" => 615, "12953" => 625, "12954" => 544, "12955" => 544, "12956" => 544, "12957" => 533, "12958" => 388, "12959" => 256, "12960" => 333, "12961" => 297, "12962" => 343, "12963" => 657, "12964" => 657, "12965" => 864, "12966" => 785, "12967" => 188, "12968" => 365, "12969" => 365, "12970" => 350, "12971" => 656, "12972" => 248, "12973" => 363, "12974" => 248, "12975" => 473, "12976" => 657, "12977" => 657, "12978" => 657, "12979" => 657, "12980" => 657, "12981" => 657, "12982" => 657, "12983" => 657, "12984" => 657, "12985" => 657, "12986" => 248, "12987" => 248, "12988" => 543, "12989" => 657, "12990" => 543, "12991" => 567, "12992" => 889, "12993" => 725, "12994" => 698, "12995" => 704, "12996" => 740, "12997" => 639, "12998" => 599, "12999" => 748, "13000" => 775, "13001" => 266, "13002" => 491, "13003" => 701, "13004" => 603, "13005" => 936, "13006" => 769, "13007" => 784, "13008" => 640, "13009" => 784, "13010" => 703, "13011" => 664, "13012" => 639, "13013" => 765, "13014" => 706, "13015" => 984, "13016" => 709, "13017" => 678, "13018" => 661, "13019" => 345, "13020" => 657, "13021" => 345, "13022" => 533, "13023" => 456, "13024" => 500, "13025" => 568, "13026" => 621, "13027" => 531, "13028" => 624, "13029" => 580, "13030" => 384, "13031" => 620, "13032" => 615, "13033" => 250, "13034" => 261, "13035" => 573, "13036" => 245, "13037" => 916, "13038" => 616, "13039" => 622, "13040" => 621, "13041" => 618, "13042" => 432, "13043" => 535, "13044" => 377, "13045" => 604, "13046" => 543, "13047" => 757, "13048" => 533, "13049" => 540, "13050" => 497, "13051" => 345, "13052" => 372, "13053" => 345, "13054" => 500, "13055" => 215, "13056" => 473, "13057" => 215, "13058" => 375, "13059" => 570, "13060" => 297, "13061" => 580, "13062" => 657, "13063" => 91, "13064" => 589, "13065" => 636, "13066" => 565, "13067" => 353, "13068" => 467, "13069" => 311, "13070" => 311, "13071" => 606, "13072" => 600, "13073" => 500, "13074" => 595, "13075" => 595, "13076" => 248, "13077" => 573, "13078" => 479, "13079" => 215, "13080" => 353, "13081" => 353, "13082" => 467, "13083" => 744, "13084" => 1256, "13085" => 567, "13086" => 500, "13087" => 500, "13088" => 500, "13089" => 500, "13090" => 500, "13091" => 500, "13092" => 500, "13093" => 500, "13094" => 500, "13095" => 500, "13096" => 500, "13098" => 1028, "13099" => 412, "13100" => 603, "13101" => 784, "13102" => 1020, "13103" => 412, "13104" => 932, "13105" => 250, "13106" => 245, "13107" => 621, "13108" => 1001, "13109" => 630, "13110" => 656, "13111" => 570, "13112" => 656, "13113" => 570, "13114" => 300, "13115" => 656, "13116" => 394, "13117" => 394, "13118" => 657, "13119" => 394, "13120" => 879, "13121" => 879, "13122" => 879, "13123" => 725, "13124" => 725, "13125" => 725, "13126" => 725, "13127" => 725, "13128" => 725, "13129" => 704, "13130" => 639, "13131" => 639, "13132" => 639, "13133" => 639, "13134" => 266, "13135" => 266, "13136" => 266, "13137" => 266, "13138" => 740, "13139" => 769, "13140" => 784, "13141" => 784, "13142" => 784, "13143" => 784, "13144" => 784, "13145" => 656, "13146" => 765, "13147" => 765, "13148" => 765, "13149" => 765, "13150" => 678, "13151" => 645, "13152" => 568, "13153" => 568, "13154" => 568, "13155" => 568, "13156" => 568, "13157" => 568, "13158" => 531, "13159" => 580, "13160" => 580, "13161" => 580, "13162" => 580, "13163" => 250, "13164" => 250, "13165" => 250, "13166" => 250, "13167" => 639, "13168" => 616, "13169" => 622, "13170" => 622, "13171" => 622, "13172" => 622, "13173" => 622, "13174" => 656, "13175" => 604, "13176" => 604, "13177" => 604, "13178" => 604, "13179" => 540, "13180" => 642, "13181" => 540, "13182" => 664, "13183" => 678, "13184" => 661, "13185" => 456, "13186" => 536, "13187" => 1019, "13188" => 497, "13189" => 657, "13190" => 700, "13191" => 815, "13192" => 215, "13193" => 370, "13194" => 689, "13195" => 910, "13196" => 905, "13197" => 568, "13198" => 250, "13199" => 604, "13200" => 580, "13201" => 622, "13202" => 725, "13203" => 266, "13204" => 765, "13205" => 639, "13206" => 784, "13207" => 879, "13208" => 879, "13209" => 879, "13210" => 879, "13211" => 879, "13212" => 879, "13213" => 394, "13214" => 394, "13215" => 394, "13216" => 394, "13217" => 394, "13218" => 394, "13219" => 394, "13220" => 394, "13221" => 394, "13222" => 394, "13223" => 394, "13224" => 394, "13225" => 394, "13226" => 394, "13227" => 394, "13228" => 394, "13229" => 394, "13230" => 725, "13231" => 639, "13232" => 639, "13233" => 639, "13234" => 266, "13235" => 266, "13236" => 266, "13237" => 784, "13238" => 784, "13239" => 765, "13240" => 765, "13241" => 765, "13242" => 568, "13243" => 580, "13244" => 580, "13245" => 580, "13246" => 250, "13247" => 250, "13248" => 250, "13249" => 622, "13250" => 622, "13251" => 604, "13252" => 604, "13253" => 604, "13254" => 250, "13255" => 250, "13256" => 250, "13257" => 250, "13258" => 250, "13259" => 250, "13260" => 250, "13261" => 250, "13262" => 250, "13263" => 250, "13264" => 250, "13265" => 250, "13266" => 250, "13267" => 250, "13268" => 250, "13269" => 250, "13270" => 250, "13271" => 250, "13272" => 250, "13273" => 250, "13274" => 333, "13275" => 333, "13276" => 333, "13277" => 333, "13278" => 333, "13279" => 333, "13280" => 333, "13281" => 333, "13282" => 333, "13283" => 333, "13284" => 333, "13285" => 333, "13286" => 333, "13287" => 333, "13288" => 333, "13289" => 333, "13290" => 333, "13291" => 333, "13292" => 333, "13293" => 333, "13294" => 333, "13295" => 500, "13296" => 500, "13297" => 500, "13298" => 500, "13299" => 500, "13300" => 500, "13301" => 500, "13302" => 500, "13303" => 500, "13304" => 500, "13305" => 500, "13306" => 500, "13307" => 500, "13308" => 500, "13309" => 500, "13310" => 500, "13311" => 500, "13312" => 500, "13313" => 500, "13314" => 500, "13315" => 500, "13316" => 500, "13317" => 500, "13318" => 500, "13319" => 500, "15976" => 792, "15977" => 846, "15978" => 844, "15979" => 880, "15980" => 874, "15981" => 899, "15982" => 999, "15983" => 959, "15984" => 975, "15985" => 901, "15986" => 960, "15987" => 809, "15988" => 846, "15989" => 897, "15990" => 958, "15991" => 884, "15992" => 942, "15993" => 886, "15994" => 939, "15995" => 926, "15996" => 941, "15997" => 973, "15998" => 980, "15999" => 956, "16000" => 949, "16001" => 954, "16002" => 956, "16003" => 938, "16004" => 923, "16005" => 967, "16006" => 986, "16007" => 938, "16008" => 971, "16009" => 930, "16010" => 960, "16011" => 944, "16012" => 953, "16013" => 940, "16014" => 943, "16015" => 939, "16016" => 959, "16017" => 963, "16018" => 985, "16019" => 823, "16020" => 862, "16021" => 926, "16022" => 889, "16023" => 892, "16024" => 959, "16025" => 981, "16026" => 948, "16027" => 919, "16028" => 934, "16029" => 952, "16030" => 902, "16031" => 950, "16032" => 967, "16033" => 984, "16034" => 918, "16035" => 940, "16036" => 971, "16037" => 925, "16038" => 929, "16039" => 933, "16040" => 784, "16041" => 821, "16042" => 856, "16043" => 945, "16044" => 965, "16045" => 970, "16046" => 957, "16047" => 924, "16048" => 949, "16049" => 938, "16050" => 948, "16051" => 889, "16052" => 952, "16053" => 888, "16054" => 940, "16055" => 903, "16056" => 963, "16057" => 950, "16058" => 975, "16059" => 955, "16060" => 940, "16061" => 955, "16062" => 871, "16063" => 938, "16064" => 946, "16065" => 964, "16066" => 962, "16067" => 932, "16068" => 928, "16069" => 861, "16070" => 892, "16071" => 972, "16072" => 995, "16073" => 926, "16074" => 981, "16075" => 918, "16076" => 855, "16077" => 919, "16078" => 863, "16079" => 928, "16080" => 882, "16081" => 940, "16082" => 833, "16083" => 877, "16084" => 876, "16085" => 929, "16086" => 946, "16087" => 966, "16088" => 940, "16089" => 978, "16090" => 933, "16091" => 939, "16092" => 914, "16093" => 947, "16094" => 913, "16095" => 952, "16096" => 934, "16097" => 939, "16098" => 888, "16099" => 931, "16100" => 900, "16101" => 944, "16102" => 917, "16103" => 963, "16104" => 898, "16105" => 956, "16106" => 941, "16107" => 953, "16108" => 914, "16109" => 918, "16110" => 855, "16111" => 901, "16112" => 950, "16113" => 928, "16114" => 927, "16115" => 935, "16116" => 945, "16117" => 908, "16118" => 862, "16119" => 917, "16120" => 953, "16121" => 877, "16122" => 871, "16123" => 882, "16124" => 909, "16125" => 933, "16126" => 970, "16127" => 983, "16128" => 901, "16129" => 958, "16130" => 931, "16131" => 779, "16132" => 830, "16133" => 847, "16134" => 947, "16135" => 974, "16136" => 983, "16137" => 895, "16138" => 925, "16139" => 919, "16140" => 895, "16141" => 925, "16142" => 879, "16143" => 937, "16144" => 831, "16145" => 870, "16146" => 883, "16147" => 938, "16148" => 935, "16149" => 964, "16150" => 933, "16151" => 900, "16152" => 923, "16153" => 869, "16154" => 921, "16155" => 931, "16156" => 895, "16157" => 927, "16158" => 851, "16159" => 949, "16160" => 893, "16161" => 841, "16162" => 977, "16163" => 970, "16164" => 961, "16165" => 959, "16166" => 960, "16167" => 971, "16168" => 958, "16169" => 989, "16170" => 878, "16171" => 825, "16172" => 857, "16173" => 881, "16174" => 864, "16175" => 829, "16176" => 876, "16177" => 852, "16178" => 732, "16179" => 883, "16180" => 878, "16181" => 866, "16182" => 884, "16183" => 899, "16184" => 871, "16185" => 841, "16186" => 871, "16187" => 944, "16188" => 973, "16189" => 956, "16190" => 967, "16191" => 883, "16192" => 865, "16469" => 656, "16470" => 656, "16471" => 656, "16472" => 656, "16473" => 656, "16474" => 1039, "16475" => 656, "16476" => 656, "16477" => 656, "16478" => 656, "16479" => 656, "16480" => 656, "16481" => 656, "16482" => 656, "16483" => 656, "16484" => 656, "16485" => 656, "16486" => 656, "16487" => 656, "16488" => 871, "16489" => 656, "16490" => 656, "16491" => 656, "16492" => 656, "16493" => 916, "16494" => 916, "16495" => 748, "16496" => 748, "16497" => 870, "16498" => 870, "16499" => 870, "16500" => 656, "16501" => 656, "16502" => 656, "16503" => 656, "16504" => 603, "16505" => 787, "16506" => 656, "16507" => 656, "16508" => 656, "16509" => 656, "16510" => 571, "16511" => 656, "16512" => 656, "16513" => 656, "16514" => 383, "16515" => 629, "16516" => 656, "16517" => 656, "16518" => 656, "16519" => 656, "16520" => 656, "16521" => 656, "16522" => 916, "16523" => 656, "16524" => 697, "16525" => 604, "16526" => 803, "16527" => 500, "16528" => 656, "16529" => 656, "16530" => 884, "16531" => 842, "16532" => 945, "16533" => 931, "16534" => 774, "16535" => 618, "16536" => 618, "16537" => 618, "16538" => 618, "16539" => 618, "16540" => 750, "16541" => 500, "16542" => 602, "16543" => 669, "16544" => 669, "16545" => 649, "16546" => 669, "16547" => 669, "16548" => 575, "16549" => 759, "16550" => 304, "16551" => 537, "16552" => 500, "16553" => 537, "16554" => 392, "16555" => 498, "16556" => 500, "16557" => 498, "16558" => 726, "16559" => 750, "16560" => 602, "16561" => 756, "16562" => 756, "16563" => 643, "16564" => 758, "16565" => 774, "16566" => 774, "16567" => 795, "16568" => 726, "16569" => 773, "16570" => 649, "16571" => 430, "16572" => 575, "16573" => 304, "16574" => 578, "16575" => 578, "16576" => 588, "16577" => 681, "16578" => 646, "16579" => 618, "16580" => 618, "16581" => 625, "16582" => 430, "16583" => 618, "16584" => 392, "16585" => 500, "16586" => 756, "16587" => 754, "16588" => 778, "16589" => 508, "16590" => 669, "16591" => 773, "16592" => 578, "16593" => 641, "16594" => 653, "16595" => 304, "16596" => 537, "16597" => 618, "16598" => 927, "16599" => 578, "16600" => 389, "16601" => 437, "16602" => 609, "16603" => 430, "16604" => 392, "16605" => 652, "16606" => 625, "16607" => 430, "16608" => 537, "16609" => 500, "16610" => 436, "16611" => 239, "16612" => 417, "16613" => 625, "16614" => 385, "16615" => 554, "16616" => 639, "16617" => 931, "16618" => 562, "16619" => 617, "16620" => 519, "16621" => 519, "16622" => 617, "16623" => 795, "16624" => 496, "16625" => 646, "16626" => 692, "16627" => 412, "16628" => 686, "16629" => 761, "16630" => 251, "16631" => 631, "16632" => 588, "16633" => 526, "16634" => 607, "16635" => 575, "16636" => 931, "16637" => 617, "16638" => 611, "16639" => 646, "16640" => 770, "16641" => 617, "16642" => 519, "16643" => 519, "16644" => 572, "16645" => 551, "16646" => 430, "16647" => 610, "16648" => 0, "16649" => 145, "16650" => 145, "16651" => 256, "16652" => 0, "16653" => 500, "16654" => 457, "16655" => 457, "16656" => 457, "16657" => 457, "16658" => 457, "16659" => 473, "16660" => 473, "16661" => 500, "16662" => 500, "16663" => 500, "16664" => 500, "16665" => 500, "16666" => 500, "16667" => 500, "16668" => 500, "16669" => 500, "16670" => 151, "16671" => 500, "16672" => 500, "16673" => 500, "16674" => 500, "16675" => 500, "16676" => 500, "16677" => 500, "16678" => 500, "16679" => 500, "16680" => 500, "16681" => 500, "16682" => 420, "16683" => 383, "16684" => 656, "16685" => 656, "16686" => 606, "16687" => 554, "16688" => 232, "16689" => 617, "16690" => 835, "16691" => 674, "16692" => 562, "16693" => 548, "16694" => 570, "16695" => 623, "16696" => 462, "16697" => 374, "16698" => 267, "16699" => 463, "16700" => 304, "16701" => 334, "16702" => 165, "16703" => 584, "16704" => 672, "16705" => 875, "16706" => 656, "16707" => 656, "16708" => 870, "16709" => 875, "16710" => 875, "16711" => 374, "16712" => 621, "16713" => 575, "16714" => 561, "16715" => 815, "16716" => 500, "16717" => 879, "16718" => 936, "16719" => 916, "16720" => 769, "16721" => 616, "16722" => 604, "16723" => 604, "16724" => 604, "16725" => 604, "16726" => 725, "16727" => 603, "16728" => 664, "16729" => 664, "16730" => 639, "16731" => 661, "16732" => 661, "16733" => 568, "16734" => 245, "16735" => 535, "16736" => 535, "16737" => 377, "16738" => 497, "16739" => 497, "16740" => 703, "16741" => 725, "16742" => 603, "16743" => 704, "16744" => 704, "16745" => 639, "16746" => 740, "16747" => 769, "16748" => 769, "16749" => 784, "16750" => 703, "16751" => 765, "16752" => 639, "16753" => 432, "16754" => 568, "16755" => 245, "16756" => 531, "16757" => 531, "16758" => 580, "16759" => 624, "16760" => 624, "16761" => 616, "16762" => 616, "16763" => 622, "16764" => 432, "16765" => 604, "16766" => 377, "16767" => 704, "16768" => 748, "16769" => 775, "16770" => 491, "16771" => 664, "16772" => 765, "16773" => 531, "16774" => 620, "16775" => 615, "16776" => 261, "16777" => 535, "16778" => 604);
+%goth_w6_v=("8720" => 333, "8721" => 339, "8722" => 406, "8723" => 719, "8724" => 712, "8725" => 935, "8726" => 860, "8727" => 234, "8728" => 406, "8729" => 406, "8730" => 382, "8731" => 685, "8732" => 270, "8733" => 412, "8734" => 270, "8735" => 520, "8736" => 712, "8737" => 712, "8738" => 712, "8739" => 712, "8740" => 712, "8741" => 712, "8742" => 712, "8743" => 712, "8744" => 712, "8745" => 712, "8746" => 270, "8747" => 270, "8748" => 540, "8749" => 685, "8750" => 540, "8751" => 617, "8752" => 937, "8753" => 808, "8754" => 754, "8755" => 793, "8756" => 806, "8757" => 685, "8758" => 644, "8759" => 790, "8760" => 826, "8761" => 293, "8762" => 591, "8763" => 780, "8764" => 643, "8765" => 987, "8766" => 821, "8767" => 838, "8768" => 711, "8769" => 838, "8770" => 773, "8771" => 715, "8772" => 709, "8773" => 829, "8774" => 784, "8775" => 1058, "8776" => 811, "8777" => 758, "8778" => 707, "8779" => 406, "8780" => 767, "8781" => 406, "8782" => 588, "8783" => 504, "8784" => 500, "8785" => 634, "8786" => 706, "8787" => 625, "8788" => 707, "8789" => 637, "8790" => 477, "8791" => 692, "8792" => 673, "8793" => 271, "8794" => 309, "8795" => 652, "8796" => 271, "8797" => 1010, "8798" => 673, "8799" => 670, "8800" => 708, "8801" => 706, "8802" => 492, "8803" => 593, "8804" => 434, "8805" => 673, "8806" => 621, "8807" => 850, "8808" => 617, "8809" => 628, "8810" => 541, "8811" => 411, "8812" => 415, "8813" => 411, "8814" => 609, "8815" => 270, "8816" => 520, "8817" => 270, "8818" => 424, "8819" => 609, "8820" => 339, "8821" => 652, "8822" => 725, "8823" => 141, "8824" => 663, "8825" => 708, "8826" => 597, "8827" => 472, "8828" => 571, "8829" => 361, "8830" => 361, "8831" => 716, "8832" => 715, "8833" => 500, "8834" => 640, "8835" => 640, "8836" => 270, "8837" => 628, "8838" => 532, "8839" => 270, "8840" => 472, "8841" => 472, "8842" => 571, "8843" => 810, "8844" => 1366, "8845" => 617, "8846" => 500, "8847" => 500, "8848" => 500, "8849" => 500, "8850" => 500, "8851" => 500, "8852" => 500, "8853" => 793, "8854" => 500, "8855" => 804, "8856" => 500, "8858" => 1153, "8859" => 440, "8860" => 686, "8861" => 838, "8862" => 1117, "8863" => 465, "8864" => 1039, "8865" => 271, "8866" => 271, "8867" => 670, "8868" => 1081, "8869" => 660, "8870" => 685, "8871" => 571, "8872" => 685, "8873" => 571, "8874" => 339, "8875" => 685, "8876" => 423, "8877" => 423, "8878" => 675, "8879" => 423, "8880" => 897, "8881" => 895, "8882" => 929, "8883" => 808, "8884" => 808, "8885" => 808, "8886" => 808, "8887" => 808, "8888" => 808, "8889" => 793, "8890" => 685, "8891" => 685, "8892" => 685, "8893" => 685, "8894" => 293, "8895" => 293, "8896" => 293, "8897" => 293, "8898" => 813, "8899" => 821, "8900" => 838, "8901" => 838, "8902" => 838, "8903" => 838, "8904" => 838, "8905" => 685, "8906" => 829, "8907" => 829, "8908" => 829, "8909" => 829, "8910" => 758, "8911" => 698, "8912" => 634, "8913" => 634, "8914" => 634, "8915" => 634, "8916" => 634, "8917" => 634, "8918" => 625, "8919" => 637, "8920" => 637, "8921" => 637, "8922" => 637, "8923" => 335, "8924" => 333, "8925" => 349, "8926" => 336, "8927" => 699, "8928" => 673, "8929" => 670, "8930" => 670, "8931" => 670, "8932" => 670, "8933" => 670, "8934" => 685, "8935" => 673, "8936" => 673, "8937" => 673, "8938" => 673, "8939" => 628, "8940" => 711, "8941" => 628, "8942" => 715, "8943" => 758, "8944" => 707, "8945" => 500, "8946" => 593, "8947" => 1070, "8948" => 541, "8949" => 712, "8950" => 500, "8951" => 500, "8952" => 500, "8953" => 500, "8954" => 500, "8955" => 500, "8956" => 500, "8957" => 500, "8958" => 500, "8959" => 500, "8960" => 500, "8961" => 500, "8962" => 500, "8963" => 500, "8964" => 500, "8965" => 500, "8966" => 500, "8967" => 500, "8968" => 500, "8969" => 500, "8970" => 500, "8971" => 500, "8972" => 500, "8973" => 500, "8974" => 500, "8975" => 500, "8976" => 500, "8977" => 500, "8978" => 500, "8979" => 500, "8980" => 500, "8981" => 500, "8982" => 500, "8983" => 500, "8984" => 500, "8985" => 500, "8986" => 500, "8987" => 500, "8988" => 500, "8989" => 500, "8990" => 500, "8991" => 500, "8992" => 500, "8993" => 500, "8994" => 500, "8995" => 500, "8996" => 500, "8997" => 500, "8998" => 500, "8999" => 500, "9000" => 500, "9001" => 500, "9002" => 500, "9003" => 500, "9004" => 500, "9005" => 500, "9006" => 500, "9007" => 500, "9008" => 500, "9009" => 500, "9010" => 500, "9011" => 500, "9012" => 500, "9013" => 500, "9014" => 500, "9015" => 500, "9016" => 500, "9017" => 500, "9018" => 500, "9019" => 500, "9020" => 500, "9021" => 500, "9022" => 500, "9023" => 500, "9024" => 500, "9025" => 500, "9026" => 500, "9027" => 500, "9028" => 500, "9029" => 500, "9030" => 500, "9031" => 500, "9032" => 500, "9033" => 500, "9034" => 500, "9035" => 500, "9036" => 500, "9037" => 500, "9038" => 500, "9039" => 500, "9040" => 500, "9041" => 500, "9042" => 500, "9043" => 500, "9044" => 500, "9045" => 500, "9046" => 500, "9047" => 500, "9048" => 500, "9049" => 500, "9050" => 500, "9051" => 500, "9052" => 500, "9053" => 500, "9054" => 500, "9055" => 500, "9056" => 500, "9057" => 500, "9058" => 500, "9059" => 500, "9060" => 500, "9061" => 500, "9062" => 500, "9063" => 500, "9064" => 500, "9065" => 500, "9066" => 500, "9067" => 500, "9068" => 500, "9069" => 500, "9070" => 500, "9071" => 500, "9072" => 500, "9073" => 500, "9074" => 500, "9075" => 500, "9076" => 500, "9077" => 500, "9078" => 500, "9079" => 500, "9080" => 500, "9081" => 500, "9082" => 500, "9083" => 500, "9084" => 500, "9085" => 500, "9086" => 500, "9087" => 500, "9088" => 500, "9089" => 500, "9090" => 500, "9091" => 500, "9092" => 500, "9093" => 500, "9094" => 500, "9095" => 500, "9096" => 500, "9097" => 500, "9098" => 500, "9099" => 500, "9100" => 500, "9101" => 500, "9102" => 500, "9103" => 500, "9104" => 500, "9105" => 500, "9106" => 500, "9107" => 500, "9108" => 500, "9109" => 500, "9110" => 500, "9111" => 500, "9112" => 500, "9113" => 500, "9114" => 500, "9115" => 500, "9116" => 500, "9117" => 500, "9118" => 500, "9119" => 500, "9120" => 500, "9121" => 500, "9122" => 500, "9123" => 500, "9124" => 500, "9125" => 500, "9126" => 500, "9127" => 500, "9128" => 500, "9129" => 500, "9130" => 500, "9131" => 500, "9132" => 500, "9133" => 500, "9134" => 500, "9135" => 500, "9136" => 500, "9137" => 500, "9138" => 500, "9139" => 500, "9140" => 500, "9141" => 500, "9142" => 500, "9143" => 500, "9144" => 500, "9145" => 500, "9146" => 500, "9147" => 500, "9148" => 500, "9149" => 500, "9150" => 500, "9151" => 500, "9152" => 500, "9153" => 500, "9154" => 500, "9155" => 500, "9156" => 500, "9157" => 500, "9158" => 500, "9159" => 500, "9160" => 500, "9161" => 500, "9162" => 500, "9163" => 500, "9164" => 500, "9165" => 500, "9166" => 500, "9167" => 500, "9168" => 500, "9169" => 500, "9170" => 500, "9171" => 500, "9172" => 500, "9173" => 500, "9174" => 500, "9175" => 500, "9176" => 500, "9177" => 500, "9178" => 500, "9179" => 500, "9180" => 500, "9181" => 500, "9182" => 500, "9183" => 500, "9184" => 500, "9185" => 500, "9186" => 500, "9187" => 500, "9188" => 500, "9189" => 500, "9190" => 500, "9191" => 500, "9192" => 500, "9193" => 500, "9194" => 500, "9195" => 500, "9196" => 500, "9197" => 500, "9198" => 500, "9199" => 500, "9200" => 500, "9201" => 500, "9202" => 500, "9203" => 500, "9204" => 500, "9205" => 500, "9206" => 500, "9207" => 500, "9208" => 500, "9209" => 500, "9210" => 500, "9211" => 500, "9212" => 500, "9213" => 500, "9214" => 500, "9215" => 500, "9216" => 500, "9217" => 500, "9218" => 500, "9219" => 500, "9220" => 500, "9221" => 500, "9222" => 500, "9223" => 500, "9224" => 500, "9225" => 500, "9226" => 500, "9227" => 500, "9228" => 500, "9229" => 500, "9230" => 500, "9231" => 500, "9232" => 500, "9233" => 500, "9234" => 500, "9235" => 500, "9236" => 500, "9237" => 500, "9238" => 500, "9239" => 500, "9240" => 500, "9241" => 500, "9242" => 500, "9243" => 500, "9244" => 500, "9245" => 500, "9246" => 500, "9247" => 500, "9248" => 500, "9249" => 500, "9250" => 500, "9251" => 500, "9252" => 500, "9253" => 500, "9254" => 500, "9255" => 500, "9256" => 500, "9257" => 500, "9258" => 500, "9259" => 500, "9260" => 500, "9261" => 500, "9262" => 500, "9263" => 500, "9264" => 500, "9265" => 500, "9266" => 500, "9267" => 500, "9268" => 500, "9269" => 500, "9270" => 500, "9271" => 500, "9272" => 500, "9273" => 500, "9274" => 500, "9275" => 500, "9276" => 500, "9277" => 500, "9278" => 500, "9279" => 500, "9280" => 500, "9281" => 500, "9282" => 500, "9283" => 500, "9284" => 500, "9285" => 500, "9286" => 500, "9287" => 500, "9288" => 500, "9289" => 500, "9290" => 500, "9291" => 500, "9292" => 500, "9293" => 500, "9294" => 500, "9295" => 500, "9296" => 500, "9297" => 500, "9298" => 500, "9299" => 500, "9300" => 500, "9301" => 500, "9302" => 500, "9303" => 500, "9304" => 500, "9305" => 500, "9306" => 500, "9307" => 500, "9308" => 500, "9309" => 500, "9310" => 500, "9311" => 500, "9312" => 500, "9313" => 500, "9314" => 500, "9315" => 500, "9316" => 500, "9317" => 500, "9318" => 500, "9319" => 500, "9320" => 500, "9321" => 500, "9322" => 500, "9323" => 500, "9324" => 500, "9325" => 500, "9326" => 500, "9327" => 500, "9328" => 500, "9329" => 500, "9330" => 500, "9331" => 500, "9332" => 500, "9333" => 500, "9334" => 500, "9335" => 500, "9336" => 500, "9337" => 500, "9338" => 500, "9339" => 500, "9340" => 500, "9341" => 500, "9342" => 500, "9343" => 500, "9344" => 500, "9345" => 500, "9346" => 500, "9347" => 500, "9348" => 500, "9349" => 500, "9350" => 500, "9351" => 500, "9352" => 500, "9353" => 500, "12870" => 772, "12871" => 837, "12872" => 246, "12873" => 432, "12874" => 840, "12875" => 1073, "12876" => 1072, "12877" => 634, "12878" => 313, "12879" => 673, "12880" => 637, "12881" => 670, "12882" => 808, "12883" => 293, "12884" => 829, "12885" => 685, "12886" => 838, "12887" => 929, "12888" => 949, "12889" => 949, "12890" => 929, "12891" => 929, "12892" => 949, "12893" => 423, "12894" => 423, "12895" => 423, "12896" => 423, "12897" => 423, "12898" => 423, "12899" => 423, "12900" => 423, "12901" => 423, "12902" => 423, "12903" => 423, "12904" => 423, "12905" => 423, "12906" => 423, "12907" => 423, "12908" => 423, "12909" => 423, "12910" => 808, "12911" => 685, "12912" => 685, "12913" => 685, "12914" => 293, "12915" => 293, "12916" => 293, "12917" => 838, "12918" => 838, "12919" => 829, "12920" => 829, "12921" => 829, "12922" => 634, "12923" => 637, "12924" => 637, "12925" => 637, "12926" => 349, "12927" => 271, "12928" => 371, "12929" => 670, "12930" => 670, "12931" => 673, "12932" => 673, "12933" => 673, "12934" => 713, "12935" => 713, "12936" => 713, "12937" => 1039, "12938" => 1039, "12939" => 625, "12940" => 625, "12941" => 625, "12942" => 637, "12943" => 637, "12944" => 637, "12945" => 832, "12946" => 832, "12947" => 832, "12948" => 584, "12949" => 584, "12950" => 584, "12951" => 309, "12952" => 670, "12953" => 670, "12954" => 621, "12955" => 621, "12956" => 621, "12957" => 587, "12958" => 464, "12959" => 234, "12960" => 333, "12961" => 339, "12962" => 406, "12963" => 713, "12964" => 712, "12965" => 935, "12966" => 847, "12967" => 220, "12968" => 406, "12969" => 406, "12970" => 382, "12971" => 685, "12972" => 270, "12973" => 411, "12974" => 270, "12975" => 520, "12976" => 713, "12977" => 712, "12978" => 712, "12979" => 713, "12980" => 712, "12981" => 712, "12982" => 712, "12983" => 712, "12984" => 712, "12985" => 712, "12986" => 270, "12987" => 270, "12988" => 577, "12989" => 685, "12990" => 577, "12991" => 617, "12992" => 937, "12993" => 796, "12994" => 748, "12995" => 763, "12996" => 798, "12997" => 682, "12998" => 642, "12999" => 782, "13000" => 818, "13001" => 307, "13002" => 590, "13003" => 749, "13004" => 639, "13005" => 973, "13006" => 813, "13007" => 827, "13008" => 687, "13009" => 828, "13010" => 763, "13011" => 710, "13012" => 694, "13013" => 820, "13014" => 773, "13015" => 1031, "13016" => 799, "13017" => 748, "13018" => 700, "13019" => 406, "13020" => 767, "13021" => 406, "13022" => 588, "13023" => 580, "13024" => 500, "13025" => 644, "13026" => 687, "13027" => 597, "13028" => 690, "13029" => 654, "13030" => 418, "13031" => 673, "13032" => 669, "13033" => 285, "13034" => 296, "13035" => 625, "13036" => 285, "13037" => 992, "13038" => 669, "13039" => 656, "13040" => 690, "13041" => 687, "13042" => 461, "13043" => 566, "13044" => 424, "13045" => 652, "13046" => 616, "13047" => 836, "13048" => 613, "13049" => 624, "13050" => 549, "13051" => 406, "13052" => 415, "13053" => 406, "13054" => 500, "13055" => 270, "13056" => 520, "13057" => 270, "13058" => 424, "13059" => 685, "13060" => 339, "13061" => 712, "13062" => 725, "13063" => 95, "13064" => 712, "13065" => 708, "13066" => 597, "13067" => 468, "13068" => 571, "13069" => 361, "13070" => 361, "13071" => 689, "13072" => 688, "13073" => 500, "13074" => 640, "13075" => 640, "13076" => 270, "13077" => 628, "13078" => 520, "13079" => 270, "13080" => 468, "13081" => 468, "13082" => 571, "13083" => 810, "13084" => 1352, "13085" => 617, "13086" => 500, "13087" => 500, "13088" => 500, "13089" => 500, "13090" => 500, "13091" => 500, "13092" => 500, "13093" => 500, "13094" => 500, "13095" => 500, "13096" => 500, "13098" => 1128, "13099" => 465, "13100" => 639, "13101" => 828, "13102" => 1096, "13103" => 465, "13104" => 1043, "13105" => 285, "13106" => 358, "13107" => 666, "13108" => 1080, "13109" => 684, "13110" => 685, "13111" => 571, "13112" => 685, "13113" => 571, "13114" => 339, "13115" => 685, "13116" => 430, "13117" => 430, "13118" => 685, "13119" => 430, "13120" => 955, "13121" => 955, "13122" => 955, "13123" => 796, "13124" => 796, "13125" => 796, "13126" => 796, "13127" => 796, "13128" => 796, "13129" => 763, "13130" => 682, "13131" => 682, "13132" => 682, "13133" => 682, "13134" => 307, "13135" => 307, "13136" => 307, "13137" => 307, "13138" => 798, "13139" => 813, "13140" => 827, "13141" => 827, "13142" => 827, "13143" => 827, "13144" => 827, "13145" => 685, "13146" => 820, "13147" => 820, "13148" => 820, "13149" => 820, "13150" => 748, "13151" => 694, "13152" => 644, "13153" => 644, "13154" => 644, "13155" => 644, "13156" => 644, "13157" => 644, "13158" => 597, "13159" => 654, "13160" => 654, "13161" => 654, "13162" => 654, "13163" => 286, "13164" => 285, "13165" => 285, "13166" => 285, "13167" => 695, "13168" => 669, "13169" => 656, "13170" => 656, "13171" => 656, "13172" => 656, "13173" => 656, "13174" => 685, "13175" => 652, "13176" => 652, "13177" => 652, "13178" => 652, "13179" => 624, "13180" => 703, "13181" => 624, "13182" => 710, "13183" => 748, "13184" => 700, "13185" => 580, "13186" => 566, "13187" => 1039, "13188" => 549, "13189" => 712, "13190" => 771, "13191" => 857, "13192" => 246, "13193" => 432, "13194" => 783, "13195" => 1054, "13196" => 1054, "13197" => 644, "13198" => 285, "13199" => 652, "13200" => 654, "13201" => 656, "13202" => 796, "13203" => 307, "13204" => 820, "13205" => 682, "13206" => 827, "13207" => 955, "13208" => 955, "13209" => 955, "13210" => 955, "13211" => 955, "13212" => 955, "13213" => 430, "13214" => 430, "13215" => 430, "13216" => 430, "13217" => 430, "13218" => 430, "13219" => 430, "13220" => 430, "13221" => 430, "13222" => 430, "13223" => 430, "13224" => 430, "13225" => 430, "13226" => 430, "13227" => 430, "13228" => 430, "13229" => 430, "13230" => 796, "13231" => 682, "13232" => 682, "13233" => 682, "13234" => 307, "13235" => 307, "13236" => 307, "13237" => 827, "13238" => 827, "13239" => 820, "13240" => 820, "13241" => 820, "13242" => 644, "13243" => 654, "13244" => 654, "13245" => 654, "13246" => 285, "13247" => 285, "13248" => 285, "13249" => 656, "13250" => 656, "13251" => 652, "13252" => 652, "13253" => 652, "13254" => 250, "13255" => 250, "13256" => 250, "13257" => 250, "13258" => 250, "13259" => 250, "13260" => 250, "13261" => 250, "13262" => 250, "13263" => 250, "13264" => 250, "13265" => 250, "13266" => 250, "13267" => 250, "13268" => 250, "13269" => 250, "13270" => 250, "13271" => 250, "13272" => 250, "13273" => 250, "13274" => 333, "13275" => 333, "13276" => 333, "13277" => 333, "13278" => 333, "13279" => 333, "13280" => 333, "13281" => 333, "13282" => 333, "13283" => 333, "13284" => 333, "13285" => 333, "13286" => 333, "13287" => 333, "13288" => 333, "13289" => 333, "13290" => 333, "13291" => 333, "13292" => 333, "13293" => 333, "13294" => 333, "13295" => 500, "13296" => 500, "13297" => 500, "13298" => 500, "13299" => 500, "13300" => 500, "13301" => 500, "13302" => 500, "13303" => 500, "13304" => 500, "13305" => 500, "13306" => 500, "13307" => 500, "13308" => 500, "13309" => 500, "13310" => 500, "13311" => 500, "13312" => 500, "13313" => 500, "13314" => 500, "13315" => 500, "13316" => 500, "13317" => 500, "13318" => 500, "13319" => 500, "15976" => 827, "15977" => 862, "15978" => 869, "15979" => 892, "15980" => 890, "15981" => 914, "15982" => 999, "15983" => 975, "15984" => 982, "15985" => 918, "15986" => 977, "15987" => 840, "15988" => 880, "15989" => 920, "15990" => 980, "15991" => 915, "15992" => 970, "15993" => 906, "15994" => 967, "15995" => 947, "15996" => 967, "15997" => 988, "15998" => 996, "15999" => 977, "16000" => 970, "16001" => 979, "16002" => 976, "16003" => 967, "16004" => 960, "16005" => 985, "16006" => 997, "16007" => 953, "16008" => 986, "16009" => 955, "16010" => 984, "16011" => 970, "16012" => 979, "16013" => 965, "16014" => 965, "16015" => 959, "16016" => 981, "16017" => 981, "16018" => 997, "16019" => 847, "16020" => 887, "16021" => 944, "16022" => 919, "16023" => 919, "16024" => 982, "16025" => 996, "16026" => 965, "16027" => 942, "16028" => 957, "16029" => 968, "16030" => 928, "16031" => 975, "16032" => 982, "16033" => 997, "16034" => 940, "16035" => 961, "16036" => 979, "16037" => 950, "16038" => 954, "16039" => 953, "16040" => 820, "16041" => 852, "16042" => 884, "16043" => 971, "16044" => 989, "16045" => 990, "16046" => 974, "16047" => 948, "16048" => 971, "16049" => 958, "16050" => 968, "16051" => 910, "16052" => 970, "16053" => 908, "16054" => 963, "16055" => 928, "16056" => 982, "16057" => 974, "16058" => 988, "16059" => 977, "16060" => 959, "16061" => 979, "16062" => 893, "16063" => 954, "16064" => 968, "16065" => 986, "16066" => 983, "16067" => 954, "16068" => 950, "16069" => 880, "16070" => 913, "16071" => 984, "16072" => 999, "16073" => 951, "16074" => 987, "16075" => 952, "16076" => 876, "16077" => 944, "16078" => 888, "16079" => 948, "16080" => 903, "16081" => 959, "16082" => 865, "16083" => 906, "16084" => 899, "16085" => 951, "16086" => 968, "16087" => 979, "16088" => 960, "16089" => 987, "16090" => 953, "16091" => 969, "16092" => 935, "16093" => 959, "16094" => 940, "16095" => 978, "16096" => 953, "16097" => 958, "16098" => 911, "16099" => 939, "16100" => 930, "16101" => 968, "16102" => 943, "16103" => 978, "16104" => 921, "16105" => 963, "16106" => 960, "16107" => 974, "16108" => 939, "16109" => 940, "16110" => 877, "16111" => 926, "16112" => 964, "16113" => 950, "16114" => 951, "16115" => 951, "16116" => 968, "16117" => 937, "16118" => 893, "16119" => 943, "16120" => 973, "16121" => 902, "16122" => 900, "16123" => 907, "16124" => 923, "16125" => 951, "16126" => 983, "16127" => 992, "16128" => 929, "16129" => 974, "16130" => 951, "16131" => 815, "16132" => 850, "16133" => 885, "16134" => 971, "16135" => 990, "16136" => 998, "16137" => 919, "16138" => 951, "16139" => 942, "16140" => 918, "16141" => 946, "16142" => 894, "16143" => 953, "16144" => 862, "16145" => 901, "16146" => 911, "16147" => 962, "16148" => 964, "16149" => 984, "16150" => 958, "16151" => 918, "16152" => 947, "16153" => 891, "16154" => 943, "16155" => 959, "16156" => 925, "16157" => 949, "16158" => 878, "16159" => 969, "16160" => 911, "16161" => 866, "16162" => 986, "16163" => 991, "16164" => 974, "16165" => 969, "16166" => 982, "16167" => 981, "16168" => 970, "16169" => 999, "16170" => 894, "16171" => 846, "16172" => 880, "16173" => 903, "16174" => 894, "16175" => 856, "16176" => 900, "16177" => 875, "16178" => 765, "16179" => 904, "16180" => 890, "16181" => 890, "16182" => 909, "16183" => 923, "16184" => 897, "16185" => 866, "16186" => 898, "16187" => 978, "16188" => 984, "16189" => 980, "16190" => 982, "16191" => 913, "16192" => 895, "16469" => 685, "16470" => 685, "16471" => 685, "16472" => 685, "16473" => 685, "16474" => 1114, "16475" => 685, "16476" => 685, "16477" => 685, "16478" => 685, "16479" => 685, "16480" => 685, "16481" => 685, "16482" => 685, "16483" => 685, "16484" => 685, "16485" => 685, "16486" => 685, "16487" => 685, "16488" => 923, "16489" => 685, "16490" => 685, "16491" => 685, "16492" => 685, "16493" => 975, "16494" => 975, "16495" => 792, "16496" => 792, "16497" => 909, "16498" => 909, "16499" => 909, "16500" => 685, "16501" => 685, "16502" => 685, "16503" => 685, "16504" => 648, "16505" => 826, "16506" => 685, "16507" => 685, "16508" => 685, "16509" => 685, "16510" => 571, "16511" => 686, "16512" => 686, "16513" => 685, "16514" => 383, "16515" => 629, "16516" => 685, "16517" => 685, "16518" => 685, "16519" => 685, "16520" => 685, "16521" => 685, "16522" => 975, "16523" => 685, "16524" => 738, "16525" => 646, "16526" => 837, "16527" => 500, "16528" => 685, "16529" => 685, "16530" => 929, "16531" => 878, "16532" => 987, "16533" => 1010, "16534" => 821, "16535" => 673, "16536" => 673, "16537" => 673, "16538" => 673, "16539" => 673, "16540" => 808, "16541" => 500, "16542" => 643, "16543" => 715, "16544" => 715, "16545" => 709, "16546" => 707, "16547" => 707, "16548" => 634, "16549" => 804, "16550" => 349, "16551" => 593, "16552" => 500, "16553" => 593, "16554" => 434, "16555" => 541, "16556" => 500, "16557" => 541, "16558" => 773, "16559" => 808, "16560" => 643, "16561" => 793, "16562" => 793, "16563" => 685, "16564" => 806, "16565" => 821, "16566" => 821, "16567" => 838, "16568" => 773, "16569" => 829, "16570" => 709, "16571" => 492, "16572" => 634, "16573" => 333, "16574" => 625, "16575" => 625, "16576" => 637, "16577" => 749, "16578" => 719, "16579" => 673, "16580" => 673, "16581" => 670, "16582" => 492, "16583" => 673, "16584" => 434, "16585" => 500, "16586" => 793, "16587" => 790, "16588" => 826, "16589" => 591, "16590" => 715, "16591" => 829, "16592" => 625, "16593" => 692, "16594" => 711, "16595" => 349, "16596" => 593, "16597" => 673, "16598" => 1007, "16599" => 615, "16600" => 472, "16601" => 501, "16602" => 693, "16603" => 492, "16604" => 434, "16605" => 707, "16606" => 673, "16607" => 492, "16608" => 593, "16609" => 545, "16610" => 492, "16611" => 271, "16612" => 477, "16613" => 673, "16614" => 486, "16615" => 628, "16616" => 690, "16617" => 1010, "16618" => 614, "16619" => 687, "16620" => 593, "16621" => 593, "16622" => 673, "16623" => 838, "16624" => 564, "16625" => 705, "16626" => 774, "16627" => 468, "16628" => 759, "16629" => 790, "16630" => 298, "16631" => 700, "16632" => 637, "16633" => 584, "16634" => 662, "16635" => 634, "16636" => 1010, "16637" => 674, "16638" => 648, "16639" => 713, "16640" => 850, "16641" => 673, "16642" => 593, "16643" => 593, "16644" => 616, "16645" => 620, "16646" => 492, "16647" => 670, "16648" => 0, "16649" => 182, "16650" => 182, "16651" => 234, "16652" => 0, "16653" => 500, "16654" => 511, "16655" => 511, "16656" => 511, "16657" => 511, "16658" => 511, "16659" => 538, "16660" => 538, "16661" => 500, "16662" => 500, "16663" => 500, "16664" => 500, "16665" => 500, "16666" => 500, "16667" => 500, "16668" => 500, "16669" => 500, "16670" => 184, "16671" => 500, "16672" => 500, "16673" => 500, "16674" => 500, "16675" => 500, "16676" => 500, "16677" => 500, "16678" => 500, "16679" => 500, "16680" => 500, "16681" => 500, "16682" => 437, "16683" => 383, "16684" => 685, "16685" => 685, "16686" => 662, "16687" => 628, "16688" => 265, "16689" => 658, "16690" => 895, "16691" => 734, "16692" => 614, "16693" => 615, "16694" => 612, "16695" => 673, "16696" => 518, "16697" => 388, "16698" => 303, "16699" => 513, "16700" => 349, "16701" => 383, "16702" => 172, "16703" => 646, "16704" => 707, "16705" => 875, "16706" => 685, "16707" => 685, "16708" => 909, "16709" => 911, "16710" => 911, "16711" => 388, "16712" => 663, "16713" => 654, "16714" => 631, "16715" => 857, "16716" => 500, "16717" => 955, "16718" => 973, "16719" => 992, "16720" => 813, "16721" => 669, "16722" => 652, "16723" => 652, "16724" => 652, "16725" => 652, "16726" => 796, "16727" => 639, "16728" => 710, "16729" => 710, "16730" => 694, "16731" => 700, "16732" => 700, "16733" => 644, "16734" => 285, "16735" => 566, "16736" => 566, "16737" => 424, "16738" => 549, "16739" => 549, "16740" => 763, "16741" => 796, "16742" => 639, "16743" => 763, "16744" => 763, "16745" => 682, "16746" => 798, "16747" => 813, "16748" => 813, "16749" => 827, "16750" => 763, "16751" => 820, "16752" => 694, "16753" => 461, "16754" => 644, "16755" => 285, "16756" => 597, "16757" => 597, "16758" => 654, "16759" => 690, "16760" => 690, "16761" => 669, "16762" => 669, "16763" => 656, "16764" => 461, "16765" => 652, "16766" => 424, "16767" => 763, "16768" => 782, "16769" => 818, "16770" => 590, "16771" => 710, "16772" => 820, "16773" => 597, "16774" => 673, "16775" => 669, "16776" => 296, "16777" => 566, "16778" => 652);
+%maru_w4_v=("8720" => 333, "8721" => 302, "8722" => 374, "8723" => 644, "8724" => 639, "8725" => 889, "8726" => 771, "8727" => 290, "8728" => 366, "8729" => 366, "8730" => 403, "8731" => 669, "8732" => 301, "8733" => 444, "8734" => 301, "8735" => 474, "8736" => 652, "8737" => 652, "8738" => 652, "8739" => 652, "8740" => 652, "8741" => 652, "8742" => 652, "8743" => 652, "8744" => 652, "8745" => 652, "8746" => 306, "8747" => 306, "8748" => 545, "8749" => 669, "8750" => 545, "8751" => 579, "8752" => 908, "8753" => 760, "8754" => 726, "8755" => 742, "8756" => 771, "8757" => 647, "8758" => 653, "8759" => 765, "8760" => 793, "8761" => 270, "8762" => 523, "8763" => 692, "8764" => 630, "8765" => 954, "8766" => 779, "8767" => 805, "8768" => 699, "8769" => 803, "8770" => 720, "8771" => 671, "8772" => 676, "8773" => 774, "8774" => 726, "8775" => 1033, "8776" => 720, "8777" => 708, "8778" => 681, "8779" => 381, "8780" => 670, "8781" => 381, "8782" => 569, "8783" => 500, "8784" => 500, "8785" => 573, "8786" => 624, "8787" => 554, "8788" => 625, "8789" => 574, "8790" => 400, "8791" => 618, "8792" => 601, "8793" => 234, "8794" => 281, "8795" => 536, "8796" => 233, "8797" => 877, "8798" => 600, "8799" => 603, "8800" => 624, "8801" => 624, "8802" => 432, "8803" => 535, "8804" => 403, "8805" => 597, "8806" => 550, "8807" => 807, "8808" => 525, "8809" => 551, "8810" => 516, "8811" => 396, "8812" => 372, "8813" => 397, "8814" => 649, "8815" => 296, "8816" => 474, "8817" => 296, "8818" => 372, "8819" => 649, "8820" => 302, "8821" => 554, "8822" => 646, "8823" => 128, "8824" => 539, "8825" => 610, "8826" => 574, "8827" => 430, "8828" => 482, "8829" => 309, "8830" => 309, "8831" => 634, "8832" => 634, "8833" => 500, "8834" => 594, "8835" => 594, "8836" => 301, "8837" => 614, "8838" => 494, "8839" => 301, "8840" => 430, "8841" => 430, "8842" => 482, "8843" => 904, "8844" => 1294, "8845" => 579, "8846" => 500, "8847" => 500, "8848" => 500, "8849" => 500, "8850" => 500, "8851" => 500, "8852" => 500, "8853" => 742, "8854" => 500, "8855" => 742, "8856" => 500, "8858" => 1080, "8859" => 415, "8860" => 660, "8861" => 805, "8862" => 1081, "8863" => 437, "8864" => 934, "8865" => 234, "8866" => 320, "8867" => 603, "8868" => 990, "8869" => 633, "8870" => 669, "8871" => 570, "8872" => 669, "8873" => 571, "8874" => 277, "8875" => 669, "8876" => 403, "8877" => 403, "8878" => 603, "8879" => 403, "8880" => 829, "8881" => 829, "8882" => 829, "8883" => 760, "8884" => 760, "8885" => 760, "8886" => 760, "8887" => 760, "8888" => 760, "8889" => 742, "8890" => 647, "8891" => 647, "8892" => 647, "8893" => 647, "8894" => 270, "8895" => 270, "8896" => 308, "8897" => 295, "8898" => 781, "8899" => 779, "8900" => 805, "8901" => 805, "8902" => 805, "8903" => 805, "8904" => 805, "8905" => 669, "8906" => 774, "8907" => 774, "8908" => 774, "8909" => 774, "8910" => 708, "8911" => 695, "8912" => 573, "8913" => 573, "8914" => 573, "8915" => 573, "8916" => 573, "8917" => 573, "8918" => 554, "8919" => 574, "8920" => 574, "8921" => 574, "8922" => 574, "8923" => 234, "8924" => 234, "8925" => 278, "8926" => 288, "8927" => 592, "8928" => 600, "8929" => 603, "8930" => 603, "8931" => 603, "8932" => 603, "8933" => 603, "8934" => 669, "8935" => 597, "8936" => 597, "8937" => 597, "8938" => 597, "8939" => 551, "8940" => 624, "8941" => 551, "8942" => 671, "8943" => 708, "8944" => 681, "8945" => 500, "8946" => 535, "8947" => 956, "8948" => 516, "8949" => 652, "8950" => 500, "8951" => 500, "8952" => 500, "8953" => 500, "8954" => 500, "8955" => 500, "8956" => 500, "8957" => 500, "8958" => 500, "8959" => 500, "8960" => 500, "8961" => 500, "8962" => 500, "8963" => 500, "8964" => 500, "8965" => 500, "8966" => 500, "8967" => 500, "8968" => 500, "8969" => 500, "8970" => 500, "8971" => 500, "8972" => 500, "8973" => 500, "8974" => 500, "8975" => 500, "8976" => 500, "8977" => 500, "8978" => 500, "8979" => 500, "8980" => 500, "8981" => 500, "8982" => 500, "8983" => 500, "8984" => 500, "8985" => 500, "8986" => 500, "8987" => 500, "8988" => 500, "8989" => 500, "8990" => 500, "8991" => 500, "8992" => 500, "8993" => 500, "8994" => 500, "8995" => 500, "8996" => 500, "8997" => 500, "8998" => 500, "8999" => 500, "9000" => 500, "9001" => 500, "9002" => 500, "9003" => 500, "9004" => 500, "9005" => 500, "9006" => 500, "9007" => 500, "9008" => 500, "9009" => 500, "9010" => 500, "9011" => 500, "9012" => 500, "9013" => 500, "9014" => 500, "9015" => 500, "9016" => 500, "9017" => 500, "9018" => 500, "9019" => 500, "9020" => 500, "9021" => 500, "9022" => 500, "9023" => 500, "9024" => 500, "9025" => 500, "9026" => 500, "9027" => 500, "9028" => 500, "9029" => 500, "9030" => 500, "9031" => 500, "9032" => 500, "9033" => 500, "9034" => 500, "9035" => 500, "9036" => 500, "9037" => 500, "9038" => 500, "9039" => 500, "9040" => 500, "9041" => 500, "9042" => 500, "9043" => 500, "9044" => 500, "9045" => 500, "9046" => 500, "9047" => 500, "9048" => 500, "9049" => 500, "9050" => 500, "9051" => 500, "9052" => 500, "9053" => 500, "9054" => 500, "9055" => 500, "9056" => 500, "9057" => 500, "9058" => 500, "9059" => 500, "9060" => 500, "9061" => 500, "9062" => 500, "9063" => 500, "9064" => 500, "9065" => 500, "9066" => 500, "9067" => 500, "9068" => 500, "9069" => 500, "9070" => 500, "9071" => 500, "9072" => 500, "9073" => 500, "9074" => 500, "9075" => 500, "9076" => 500, "9077" => 500, "9078" => 500, "9079" => 500, "9080" => 500, "9081" => 500, "9082" => 500, "9083" => 500, "9084" => 500, "9085" => 500, "9086" => 500, "9087" => 500, "9088" => 500, "9089" => 500, "9090" => 500, "9091" => 500, "9092" => 500, "9093" => 500, "9094" => 500, "9095" => 500, "9096" => 500, "9097" => 500, "9098" => 500, "9099" => 500, "9100" => 500, "9101" => 500, "9102" => 500, "9103" => 500, "9104" => 500, "9105" => 500, "9106" => 500, "9107" => 500, "9108" => 500, "9109" => 500, "9110" => 500, "9111" => 500, "9112" => 500, "9113" => 500, "9114" => 500, "9115" => 500, "9116" => 500, "9117" => 500, "9118" => 500, "9119" => 500, "9120" => 500, "9121" => 500, "9122" => 500, "9123" => 500, "9124" => 500, "9125" => 500, "9126" => 500, "9127" => 500, "9128" => 500, "9129" => 500, "9130" => 500, "9131" => 500, "9132" => 500, "9133" => 500, "9134" => 500, "9135" => 500, "9136" => 500, "9137" => 500, "9138" => 500, "9139" => 500, "9140" => 500, "9141" => 500, "9142" => 500, "9143" => 500, "9144" => 500, "9145" => 500, "9146" => 500, "9147" => 500, "9148" => 500, "9149" => 500, "9150" => 500, "9151" => 500, "9152" => 500, "9153" => 500, "9154" => 500, "9155" => 500, "9156" => 500, "9157" => 500, "9158" => 500, "9159" => 500, "9160" => 500, "9161" => 500, "9162" => 500, "9163" => 500, "9164" => 500, "9165" => 500, "9166" => 500, "9167" => 500, "9168" => 500, "9169" => 500, "9170" => 500, "9171" => 500, "9172" => 500, "9173" => 500, "9174" => 500, "9175" => 500, "9176" => 500, "9177" => 500, "9178" => 500, "9179" => 500, "9180" => 500, "9181" => 500, "9182" => 500, "9183" => 500, "9184" => 500, "9185" => 500, "9186" => 500, "9187" => 500, "9188" => 500, "9189" => 500, "9190" => 500, "9191" => 500, "9192" => 500, "9193" => 500, "9194" => 500, "9195" => 500, "9196" => 500, "9197" => 500, "9198" => 500, "9199" => 500, "9200" => 500, "9201" => 500, "9202" => 500, "9203" => 500, "9204" => 500, "9205" => 500, "9206" => 500, "9207" => 500, "9208" => 500, "9209" => 500, "9210" => 500, "9211" => 500, "9212" => 500, "9213" => 500, "9214" => 500, "9215" => 500, "9216" => 500, "9217" => 500, "9218" => 500, "9219" => 500, "9220" => 500, "9221" => 500, "9222" => 500, "9223" => 500, "9224" => 500, "9225" => 500, "9226" => 500, "9227" => 500, "9228" => 500, "9229" => 500, "9230" => 500, "9231" => 500, "9232" => 500, "9233" => 500, "9234" => 500, "9235" => 500, "9236" => 500, "9237" => 500, "9238" => 500, "9239" => 500, "9240" => 500, "9241" => 500, "9242" => 500, "9243" => 500, "9244" => 500, "9245" => 500, "9246" => 500, "9247" => 500, "9248" => 500, "9249" => 500, "9250" => 500, "9251" => 500, "9252" => 500, "9253" => 500, "9254" => 500, "9255" => 500, "9256" => 500, "9257" => 500, "9258" => 500, "9259" => 500, "9260" => 500, "9261" => 500, "9262" => 500, "9263" => 500, "9264" => 500, "9265" => 500, "9266" => 500, "9267" => 500, "9268" => 500, "9269" => 500, "9270" => 500, "9271" => 500, "9272" => 500, "9273" => 500, "9274" => 500, "9275" => 500, "9276" => 500, "9277" => 500, "9278" => 500, "9279" => 500, "9280" => 500, "9281" => 500, "9282" => 500, "9283" => 500, "9284" => 500, "9285" => 500, "9286" => 500, "9287" => 500, "9288" => 500, "9289" => 500, "9290" => 500, "9291" => 500, "9292" => 500, "9293" => 500, "9294" => 500, "9295" => 500, "9296" => 500, "9297" => 500, "9298" => 500, "9299" => 500, "9300" => 500, "9301" => 500, "9302" => 500, "9303" => 500, "9304" => 500, "9305" => 500, "9306" => 500, "9307" => 500, "9308" => 500, "9309" => 500, "9310" => 500, "9311" => 500, "9312" => 500, "9313" => 500, "9314" => 500, "9315" => 500, "9316" => 500, "9317" => 500, "9318" => 500, "9319" => 500, "9320" => 500, "9321" => 500, "9322" => 500, "9323" => 500, "9324" => 500, "9325" => 500, "9326" => 500, "9327" => 500, "9328" => 500, "9329" => 500, "9330" => 500, "9331" => 500, "9332" => 500, "9333" => 500, "9334" => 500, "9335" => 500, "9336" => 500, "9337" => 500, "9338" => 500, "9339" => 500, "9340" => 500, "9341" => 500, "9342" => 500, "9343" => 500, "9344" => 500, "9345" => 500, "9346" => 500, "9347" => 500, "9348" => 500, "9349" => 500, "9350" => 500, "9351" => 500, "9352" => 500, "9353" => 500, "12870" => 709, "12871" => 846, "12872" => 255, "12873" => 425, "12874" => 729, "12875" => 963, "12876" => 963, "12877" => 573, "12878" => 278, "12879" => 597, "12880" => 574, "12881" => 603, "12882" => 760, "12883" => 270, "12884" => 774, "12885" => 647, "12886" => 805, "12887" => 829, "12888" => 869, "12889" => 869, "12890" => 829, "12891" => 829, "12892" => 869, "12893" => 403, "12894" => 403, "12895" => 403, "12896" => 403, "12897" => 403, "12898" => 403, "12899" => 403, "12900" => 403, "12901" => 403, "12902" => 403, "12903" => 403, "12904" => 403, "12905" => 403, "12906" => 403, "12907" => 403, "12908" => 403, "12909" => 403, "12910" => 760, "12911" => 647, "12912" => 647, "12913" => 647, "12914" => 308, "12915" => 270, "12916" => 306, "12917" => 805, "12918" => 805, "12919" => 774, "12920" => 774, "12921" => 774, "12922" => 573, "12923" => 574, "12924" => 574, "12925" => 574, "12926" => 278, "12927" => 234, "12928" => 299, "12929" => 603, "12930" => 603, "12931" => 597, "12932" => 597, "12933" => 597, "12934" => 625, "12935" => 625, "12936" => 625, "12937" => 934, "12938" => 934, "12939" => 554, "12940" => 554, "12941" => 554, "12942" => 574, "12943" => 574, "12944" => 574, "12945" => 747, "12946" => 747, "12947" => 747, "12948" => 554, "12949" => 554, "12950" => 554, "12951" => 281, "12952" => 600, "12953" => 603, "12954" => 550, "12955" => 550, "12956" => 550, "12957" => 533, "12958" => 408, "12959" => 306, "12960" => 333, "12961" => 302, "12962" => 386, "12963" => 652, "12964" => 652, "12965" => 889, "12966" => 771, "12967" => 215, "12968" => 374, "12969" => 374, "12970" => 403, "12971" => 669, "12972" => 301, "12973" => 444, "12974" => 301, "12975" => 435, "12976" => 652, "12977" => 652, "12978" => 652, "12979" => 652, "12980" => 652, "12981" => 652, "12982" => 652, "12983" => 652, "12984" => 652, "12985" => 652, "12986" => 301, "12987" => 301, "12988" => 545, "12989" => 669, "12990" => 545, "12991" => 579, "12992" => 904, "12993" => 756, "12994" => 725, "12995" => 741, "12996" => 771, "12997" => 646, "12998" => 652, "12999" => 765, "13000" => 790, "13001" => 268, "13002" => 520, "13003" => 688, "13004" => 630, "13005" => 952, "13006" => 775, "13007" => 805, "13008" => 697, "13009" => 805, "13010" => 708, "13011" => 664, "13012" => 674, "13013" => 772, "13014" => 715, "13015" => 1034, "13016" => 712, "13017" => 685, "13018" => 681, "13019" => 374, "13020" => 652, "13021" => 374, "13022" => 569, "13023" => 500, "13024" => 500, "13025" => 562, "13026" => 624, "13027" => 546, "13028" => 625, "13029" => 580, "13030" => 400, "13031" => 616, "13032" => 600, "13033" => 232, "13034" => 247, "13035" => 526, "13036" => 231, "13037" => 876, "13038" => 600, "13039" => 603, "13040" => 625, "13041" => 625, "13042" => 430, "13043" => 535, "13044" => 403, "13045" => 593, "13046" => 544, "13047" => 798, "13048" => 525, "13049" => 551, "13050" => 512, "13051" => 374, "13052" => 372, "13053" => 374, "13054" => 500, "13055" => 301, "13056" => 435, "13057" => 301, "13058" => 372, "13059" => 652, "13060" => 302, "13061" => 584, "13062" => 652, "13063" => 77, "13064" => 584, "13065" => 610, "13066" => 574, "13067" => 430, "13068" => 482, "13069" => 309, "13070" => 309, "13071" => 634, "13072" => 633, "13073" => 500, "13074" => 594, "13075" => 593, "13076" => 301, "13077" => 614, "13078" => 494, "13079" => 301, "13080" => 430, "13081" => 430, "13082" => 482, "13083" => 903, "13084" => 1292, "13085" => 579, "13086" => 500, "13087" => 500, "13088" => 500, "13089" => 500, "13090" => 500, "13091" => 500, "13092" => 500, "13093" => 500, "13094" => 500, "13095" => 500, "13096" => 500, "13098" => 1080, "13099" => 415, "13100" => 630, "13101" => 809, "13102" => 1083, "13103" => 437, "13104" => 934, "13105" => 231, "13106" => 320, "13107" => 607, "13108" => 994, "13109" => 629, "13110" => 669, "13111" => 570, "13112" => 669, "13113" => 571, "13114" => 277, "13115" => 669, "13116" => 403, "13117" => 403, "13118" => 652, "13119" => 403, "13120" => 871, "13121" => 871, "13122" => 871, "13123" => 756, "13124" => 756, "13125" => 756, "13126" => 757, "13127" => 756, "13128" => 756, "13129" => 741, "13130" => 646, "13131" => 646, "13132" => 646, "13133" => 646, "13134" => 268, "13135" => 268, "13136" => 268, "13137" => 268, "13138" => 771, "13139" => 775, "13140" => 805, "13141" => 805, "13142" => 805, "13143" => 805, "13144" => 805, "13145" => 669, "13146" => 772, "13147" => 772, "13148" => 772, "13149" => 772, "13150" => 685, "13151" => 694, "13152" => 562, "13153" => 562, "13154" => 562, "13155" => 562, "13156" => 562, "13157" => 562, "13158" => 546, "13159" => 580, "13160" => 580, "13161" => 580, "13162" => 580, "13163" => 231, "13164" => 231, "13165" => 231, "13166" => 231, "13167" => 593, "13168" => 600, "13169" => 603, "13170" => 603, "13171" => 603, "13172" => 603, "13173" => 603, "13174" => 669, "13175" => 593, "13176" => 593, "13177" => 593, "13178" => 593, "13179" => 551, "13180" => 630, "13181" => 551, "13182" => 664, "13183" => 685, "13184" => 681, "13185" => 500, "13186" => 535, "13187" => 955, "13188" => 512, "13189" => 652, "13190" => 697, "13191" => 857, "13192" => 255, "13193" => 425, "13194" => 737, "13195" => 971, "13196" => 971, "13197" => 562, "13198" => 231, "13199" => 593, "13200" => 580, "13201" => 603, "13202" => 757, "13203" => 268, "13204" => 772, "13205" => 646, "13206" => 805, "13207" => 871, "13208" => 871, "13209" => 871, "13210" => 871, "13211" => 871, "13212" => 871, "13213" => 403, "13214" => 403, "13215" => 403, "13216" => 403, "13217" => 403, "13218" => 403, "13219" => 403, "13220" => 403, "13221" => 403, "13222" => 403, "13223" => 403, "13224" => 403, "13225" => 403, "13226" => 403, "13227" => 403, "13228" => 403, "13229" => 403, "13230" => 756, "13231" => 646, "13232" => 646, "13233" => 646, "13234" => 268, "13235" => 268, "13236" => 268, "13237" => 805, "13238" => 805, "13239" => 772, "13240" => 772, "13241" => 772, "13242" => 562, "13243" => 580, "13244" => 580, "13245" => 580, "13246" => 232, "13247" => 232, "13248" => 232, "13249" => 603, "13250" => 603, "13251" => 593, "13252" => 593, "13253" => 593, "13254" => 250, "13255" => 250, "13256" => 250, "13257" => 250, "13258" => 250, "13259" => 250, "13260" => 250, "13261" => 250, "13262" => 250, "13263" => 250, "13264" => 250, "13265" => 250, "13266" => 250, "13267" => 250, "13268" => 250, "13269" => 250, "13270" => 250, "13271" => 250, "13272" => 250, "13273" => 250, "13274" => 333, "13275" => 333, "13276" => 333, "13277" => 333, "13278" => 333, "13279" => 333, "13280" => 333, "13281" => 333, "13282" => 333, "13283" => 333, "13284" => 333, "13285" => 333, "13286" => 333, "13287" => 333, "13288" => 333, "13289" => 333, "13290" => 333, "13291" => 333, "13292" => 333, "13293" => 333, "13294" => 333, "13295" => 500, "13296" => 500, "13297" => 500, "13298" => 500, "13299" => 500, "13300" => 500, "13301" => 500, "13302" => 500, "13303" => 500, "13304" => 500, "13305" => 500, "13306" => 500, "13307" => 500, "13308" => 500, "13309" => 500, "13310" => 500, "13311" => 500, "13312" => 500, "13313" => 500, "13314" => 500, "13315" => 500, "13316" => 500, "13317" => 500, "13318" => 500, "13319" => 500, "15976" => 813, "15977" => 850, "15978" => 862, "15979" => 898, "15980" => 888, "15981" => 904, "15982" => 998, "15983" => 974, "15984" => 979, "15985" => 917, "15986" => 975, "15987" => 859, "15988" => 883, "15989" => 919, "15990" => 979, "15991" => 905, "15992" => 959, "15993" => 908, "15994" => 961, "15995" => 945, "15996" => 960, "15997" => 982, "15998" => 992, "15999" => 947, "16000" => 950, "16001" => 966, "16002" => 962, "16003" => 957, "16004" => 949, "16005" => 977, "16006" => 995, "16007" => 953, "16008" => 972, "16009" => 943, "16010" => 968, "16011" => 954, "16012" => 963, "16013" => 957, "16014" => 959, "16015" => 959, "16016" => 972, "16017" => 968, "16018" => 992, "16019" => 860, "16020" => 898, "16021" => 942, "16022" => 916, "16023" => 923, "16024" => 965, "16025" => 993, "16026" => 962, "16027" => 940, "16028" => 949, "16029" => 962, "16030" => 924, "16031" => 966, "16032" => 976, "16033" => 992, "16034" => 941, "16035" => 961, "16036" => 981, "16037" => 946, "16038" => 949, "16039" => 952, "16040" => 832, "16041" => 858, "16042" => 878, "16043" => 967, "16044" => 979, "16045" => 987, "16046" => 964, "16047" => 938, "16048" => 964, "16049" => 953, "16050" => 960, "16051" => 899, "16052" => 962, "16053" => 903, "16054" => 958, "16055" => 909, "16056" => 961, "16057" => 979, "16058" => 979, "16059" => 970, "16060" => 955, "16061" => 973, "16062" => 886, "16063" => 954, "16064" => 957, "16065" => 980, "16066" => 971, "16067" => 945, "16068" => 950, "16069" => 885, "16070" => 911, "16071" => 976, "16072" => 998, "16073" => 936, "16074" => 981, "16075" => 947, "16076" => 892, "16077" => 941, "16078" => 875, "16079" => 935, "16080" => 894, "16081" => 946, "16082" => 884, "16083" => 930, "16084" => 890, "16085" => 938, "16086" => 952, "16087" => 971, "16088" => 939, "16089" => 978, "16090" => 944, "16091" => 966, "16092" => 937, "16093" => 964, "16094" => 940, "16095" => 970, "16096" => 949, "16097" => 962, "16098" => 953, "16099" => 984, "16100" => 922, "16101" => 958, "16102" => 940, "16103" => 978, "16104" => 912, "16105" => 961, "16106" => 956, "16107" => 976, "16108" => 931, "16109" => 934, "16110" => 877, "16111" => 920, "16112" => 970, "16113" => 945, "16114" => 964, "16115" => 933, "16116" => 962, "16117" => 931, "16118" => 917, "16119" => 944, "16120" => 949, "16121" => 892, "16122" => 897, "16123" => 934, "16124" => 944, "16125" => 946, "16126" => 974, "16127" => 989, "16128" => 928, "16129" => 961, "16130" => 972, "16131" => 832, "16132" => 859, "16133" => 886, "16134" => 950, "16135" => 980, "16136" => 992, "16137" => 916, "16138" => 940, "16139" => 933, "16140" => 915, "16141" => 947, "16142" => 888, "16143" => 941, "16144" => 879, "16145" => 925, "16146" => 919, "16147" => 973, "16148" => 961, "16149" => 969, "16150" => 942, "16151" => 917, "16152" => 959, "16153" => 897, "16154" => 947, "16155" => 942, "16156" => 941, "16157" => 949, "16158" => 879, "16159" => 963, "16160" => 900, "16161" => 869, "16162" => 978, "16163" => 977, "16164" => 969, "16165" => 970, "16166" => 975, "16167" => 982, "16168" => 972, "16169" => 988, "16170" => 892, "16171" => 851, "16172" => 877, "16173" => 874, "16174" => 893, "16175" => 858, "16176" => 890, "16177" => 881, "16178" => 781, "16179" => 896, "16180" => 927, "16181" => 881, "16182" => 909, "16183" => 914, "16184" => 889, "16185" => 859, "16186" => 904, "16187" => 975, "16188" => 977, "16189" => 988, "16190" => 974, "16191" => 904, "16192" => 891, "16469" => 669, "16470" => 669, "16471" => 669, "16472" => 669, "16473" => 669, "16474" => 1002, "16475" => 669, "16476" => 669, "16477" => 669, "16478" => 669, "16479" => 669, "16480" => 669, "16481" => 669, "16482" => 669, "16483" => 669, "16484" => 669, "16485" => 669, "16486" => 669, "16487" => 669, "16488" => 910, "16489" => 669, "16490" => 669, "16491" => 669, "16492" => 669, "16493" => 925, "16494" => 925, "16495" => 778, "16496" => 777, "16497" => 912, "16498" => 912, "16499" => 912, "16500" => 669, "16501" => 669, "16502" => 669, "16503" => 669, "16504" => 617, "16505" => 795, "16506" => 669, "16507" => 669, "16508" => 669, "16509" => 669, "16510" => 639, "16511" => 669, "16512" => 669, "16513" => 669, "16514" => 383, "16515" => 629, "16516" => 669, "16517" => 669, "16518" => 669, "16519" => 669, "16520" => 669, "16521" => 669, "16522" => 925, "16523" => 669, "16524" => 710, "16525" => 617, "16526" => 846, "16527" => 500, "16528" => 669, "16529" => 669, "16530" => 829, "16531" => 862, "16532" => 954, "16533" => 877, "16534" => 779, "16535" => 600, "16536" => 597, "16537" => 597, "16538" => 597, "16539" => 597, "16540" => 760, "16541" => 500, "16542" => 646, "16543" => 671, "16544" => 671, "16545" => 676, "16546" => 681, "16547" => 681, "16548" => 573, "16549" => 742, "16550" => 278, "16551" => 535, "16552" => 500, "16553" => 535, "16554" => 403, "16555" => 516, "16556" => 500, "16557" => 516, "16558" => 720, "16559" => 760, "16560" => 630, "16561" => 742, "16562" => 742, "16563" => 647, "16564" => 771, "16565" => 779, "16566" => 779, "16567" => 805, "16568" => 720, "16569" => 774, "16570" => 676, "16571" => 432, "16572" => 573, "16573" => 234, "16574" => 554, "16575" => 554, "16576" => 574, "16577" => 645, "16578" => 631, "16579" => 600, "16580" => 600, "16581" => 603, "16582" => 432, "16583" => 597, "16584" => 403, "16585" => 500, "16586" => 742, "16587" => 765, "16588" => 793, "16589" => 539, "16590" => 671, "16591" => 774, "16592" => 554, "16593" => 618, "16594" => 619, "16595" => 294, "16596" => 535, "16597" => 597, "16598" => 878, "16599" => 574, "16600" => 365, "16601" => 462, "16602" => 623, "16603" => 432, "16604" => 401, "16605" => 626, "16606" => 604, "16607" => 430, "16608" => 535, "16609" => 524, "16610" => 430, "16611" => 233, "16612" => 400, "16613" => 603, "16614" => 395, "16615" => 551, "16616" => 615, "16617" => 878, "16618" => 569, "16619" => 606, "16620" => 537, "16621" => 537, "16622" => 600, "16623" => 805, "16624" => 490, "16625" => 622, "16626" => 703, "16627" => 420, "16628" => 696, "16629" => 765, "16630" => 254, "16631" => 617, "16632" => 574, "16633" => 548, "16634" => 614, "16635" => 573, "16636" => 877, "16637" => 609, "16638" => 623, "16639" => 625, "16640" => 807, "16641" => 601, "16642" => 537, "16643" => 537, "16644" => 554, "16645" => 561, "16646" => 432, "16647" => 600, "16648" => 0, "16649" => 160, "16650" => 160, "16651" => 306, "16652" => 0, "16653" => 500, "16654" => 435, "16655" => 435, "16656" => 435, "16657" => 435, "16658" => 435, "16659" => 450, "16660" => 450, "16661" => 500, "16662" => 500, "16663" => 500, "16664" => 500, "16665" => 500, "16666" => 500, "16667" => 500, "16668" => 500, "16669" => 500, "16670" => 165, "16671" => 500, "16672" => 500, "16673" => 500, "16674" => 500, "16675" => 500, "16676" => 500, "16677" => 500, "16678" => 500, "16679" => 500, "16680" => 500, "16681" => 500, "16682" => 381, "16683" => 383, "16684" => 669, "16685" => 669, "16686" => 576, "16687" => 551, "16688" => 232, "16689" => 592, "16690" => 830, "16691" => 682, "16692" => 569, "16693" => 538, "16694" => 582, "16695" => 598, "16696" => 490, "16697" => 348, "16698" => 214, "16699" => 469, "16700" => 317, "16701" => 310, "16702" => 147, "16703" => 567, "16704" => 689, "16705" => 875, "16706" => 669, "16707" => 669, "16708" => 912, "16709" => 947, "16710" => 947, "16711" => 349, "16712" => 633, "16713" => 570, "16714" => 563, "16715" => 857, "16716" => 500, "16717" => 871, "16718" => 952, "16719" => 876, "16720" => 775, "16721" => 600, "16722" => 593, "16723" => 593, "16724" => 593, "16725" => 593, "16726" => 756, "16727" => 630, "16728" => 664, "16729" => 664, "16730" => 674, "16731" => 681, "16732" => 681, "16733" => 562, "16734" => 231, "16735" => 535, "16736" => 535, "16737" => 403, "16738" => 512, "16739" => 512, "16740" => 708, "16741" => 756, "16742" => 630, "16743" => 741, "16744" => 741, "16745" => 646, "16746" => 771, "16747" => 775, "16748" => 775, "16749" => 805, "16750" => 708, "16751" => 772, "16752" => 674, "16753" => 430, "16754" => 562, "16755" => 231, "16756" => 546, "16757" => 546, "16758" => 580, "16759" => 625, "16760" => 625, "16761" => 600, "16762" => 600, "16763" => 603, "16764" => 430, "16765" => 593, "16766" => 403, "16767" => 741, "16768" => 765, "16769" => 790, "16770" => 520, "16771" => 664, "16772" => 772, "16773" => 546, "16774" => 616, "16775" => 600, "16776" => 247, "16777" => 535, "16778" => 593);
+opendir(OPLD, "opl") || mkdir("opl",0755) || die "cannot mkdir opl";
+opendir(OFMD, "ofm") || mkdir("ofm",0755) || die "cannot mkdir ofm";
+$font_at=1.0;
+@font_base_name=("hiramin-w3", "hiramin-w6", "hirakaku-w3", "hirakaku-w6", "hiramaru-w4");
+foreach $base_name(@font_base_name){
+ for ($d=0; $d<=1; $d++){
+ if ($d==0){$dir="h";}elsif($d==1){$dir="v";}
+ $font_name="$base_name-$dir";
+ open(OPL, ">opl/$font_name.opl") || die "cannot make file";
+ print OPL "(OFMLEVEL D 1)\n";
+ print OPL "(FONTDIR TL)\n";
+ print OPL "(FAMILY HIRAMIN)\n";
+ print OPL "(FACE F MRR)\n";
+ print OPL "(CODINGSCHEME UNSPECIFIED)\n";
+ print OPL "(DESIGNSIZE R 10.0)\n";
+ print OPL "(COMMENT DESIGNSIZE IS IN POINTS)\n";
+ print OPL "(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)\n";
+ print OPL "(CHECKSUM H 0)\n";
+ print OPL "(SEVENBITSAFEFLAG FALSE)\n";
+ print OPL "(FONTDIMEN\n";
+ print OPL " (SLANT R 0.0)\n";
+ print OPL " (SPACE R 0.0)\n";
+ printf OPL " (STRETCH R %f)\n", $font_at/10;
+ print OPL " (SHRINK R 0.0)\n";
+ printf OPL " (XHEIGHT R %f)\n", $font_at;
+ printf OPL " (QUAD R %f)\n", $font_at;
+ print OPL " )\n";
+ if ($dir eq "h"){
+ if($base_name eq "hiramin-w3"){
+ %chwidth=%min_w3;
+ }elsif($base_name eq "hiramin-w6"){
+ %chwidth=%min_w6;
+ }elsif($base_name eq "hirakaku-w3"){
+ %chwidth=%goth_w3;
+ }elsif($base_name eq "hirakaku-w6"){
+ %chwidth=%goth_w6;
+ }elsif($base_name eq "hiramaru-w4"){
+ %chwidth=%maru_w4;
+ }
+ }elsif ($dir eq "v"){
+ if($base_name eq "hiramin-w3"){
+ %chwidth=%min_w3_v;
+ }elsif($base_name eq "hiramin-w6"){
+ %chwidth=%min_w6_v;
+ }elsif($base_name eq "hirakaku-w3"){
+ %chwidth=%goth_w3_v;
+ }elsif($base_name eq "hirakaku-w6"){
+ %chwidth=%goth_w6_v;
+ }elsif($base_name eq "hiramaru-w4"){
+ %chwidth=%maru_w4_v;
+ }
+ }
+ for($cidcode=0; $cidcode<=20316; $cidcode++){
+ $width=1;
+ if ($dir eq "h"){
+ if(exists $chwidth{"$cidcode"}){$width=$chwidth{"$cidcode"}/10;}
+ }elsif ($dir eq "v"){
+ if(exists $chwidth{"$cidcode"}){$width=$chwidth{"$cidcode"}/1000;}
+ }
+ if ($dir eq "h"){
+ $accender=0.88;
+ $decender=0.12;
+ }elsif($dir eq "v"){
+ $accender=0.5;
+ $decender=0.5;
+ }
+ printf OPL "(CHARACTER D %d\n", $cidcode;
+ printf OPL " (CHARWD R %f)\n", $width*$font_at;
+ printf OPL " (CHARHT R %f)\n", $font_at*$accender ;
+ printf OPL " (CHARDP R %f)\n", $font_at*$decender;
+ print OPL " )\n";
+ }
+ close(OPL);
+ system("opl2ofm opl/$font_name.opl ofm/$font_name.ofm")
+ }
+}
diff --git a/language/japanese/japanese-otf/script/mktfm.pl b/language/japanese/japanese-otf/script/mktfm.pl
new file mode 100644
index 0000000000..ae0b82a2c1
--- /dev/null
+++ b/language/japanese/japanese-otf/script/mktfm.pl
@@ -0,0 +1,164 @@
+#!/usr/bin/perl
+$multi=3;
+@tex_tfm_h=(0x00, 0x0B, 0x00, 0x01, 0x00, 0x2B, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x0E, 0x54, 0x45, 0x58, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x20, 0x54, 0x45, 0x58, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4F, 0x54, 0x46, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x14, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEB, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x33, 0x33, 0x00, 0x02, 0x00, 0x00);
+@tex_tfm_v=(0x00, 0x09, 0x00, 0x01, 0x00, 0x2B, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x0E, 0x54, 0x45, 0x58, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x20, 0x54, 0x45, 0x58, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4F, 0x54, 0x46, 0x20, 0x4B, 0x41, 0x4E, 0x4A, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x33, 0x33, 0x00, 0x02, 0x00, 0x00);
+@dvips_tfm_h=(0x00, 0x0B, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x14, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEB, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+@dvips_tfm_v=(0x00, 0x09, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+
+opendir(TFM, "tfm") || mkdir("tfm",0755) || die "cannot mkdir tfm";
+&make_utf_tfm;
+&make_cid_tfm;
+&make_multi_utf_tfm;
+&make_utf_allinone_tfm;
+&make_multi_cid_tfm;
+
+sub make_utf_tfm {
+ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
+ elsif ($k==6){$face="ge";}
+ for ($l=0; $l<=0; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ $varfilename="otf-u$lang$face-$dir";
+ open(DVIPSTFM,">tfm/$varfilename.tfm") || die "Can't make \'tfm/$varfilename.tfm\'!\n";
+ if ($i==0) {
+ foreach $binary(@dvips_tfm_h) {$_ = pack("C", $binary);print DVIPSTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@dvips_tfm_v) {$_ = pack("C", $binary);print DVIPSTFM "$_";}
+ }
+ close(DVIPSTFM);
+ for ($first_hex=0x0; $first_hex <= 0xf; $first_hex++){
+ $filename="utf$lang$face".sprintf("%x",$first_hex)."-$dir";
+ open(TEXTFM,">tfm/$filename.tfm") || die "Can't make \'tfm/$filename.tfm\'!\n";
+ if ($i==0) {
+ foreach $binary(@tex_tfm_h) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@tex_tfm_v) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }
+ close(TEXTFM);
+ }
+ }
+ }
+ }
+}
+
+sub make_cid_tfm {
+ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
+ elsif ($k==6){$face="ge";}
+ for ($l=0; $l<=0; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ $varfilename="otf-cj$face-$dir";
+ open(DVIPSTFM,">tfm/$varfilename.tfm") || die "Can't make \'tfm/$varfilename.tfm\'!\n";
+ binmode(DVIPSTFM);
+ if ($i==0) {
+ foreach $binary(@dvips_tfm_h) {$_ = pack("C", $binary);print DVIPSTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@dvips_tfm_v) {$_ = pack("C", $binary);print DVIPSTFM "$_";}
+ }
+ close(DVIPSTFM);
+ for ($first_hex=0x0; $first_hex <= 0x5; $first_hex++){
+ $filename="cidj$face".sprintf("%x",$first_hex)."-$dir";
+ open(TEXTFM,">tfm/$filename.tfm") || die "Can't make \'tfm/$filename.tfm\'!\n";
+ binmode(TEXTFM);
+ if ($i==0) {
+ foreach $binary(@tex_tfm_h) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@tex_tfm_v) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }
+ close(TEXTFM);
+ }
+ }
+ }
+ }
+}
+
+sub make_multi_utf_tfm {
+ for ($k=0; $k<=1; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}
+ for ($l=1; $l<=$multi; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ $varfilename="otf-u$lang$face-$dir";
+ open(DVIPSTFM,">tfm/$varfilename.tfm") || die "Can't make \'tfm/$varfilename.tfm\'!\n";
+ binmode(DVIPSTFM);
+ if ($i==0) {
+ foreach $binary(@dvips_tfm_h) {$_ = pack("C", $binary);print DVIPSTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@dvips_tfm_v) {$_ = pack("C", $binary);print DVIPSTFM "$_";}
+ }
+ close(DVIPSTFM);
+ for ($first_hex=0x0; $first_hex <= 0xf; $first_hex++){
+ $filename="utf$lang$face".sprintf("%x",$first_hex)."-$dir";
+ open(TEXTFM,">tfm/$filename.tfm") || die "Can't make \'tfm/$filename.tfm\'!\n";
+ binmode(TEXTFM);
+ if ($i==0) {
+ foreach $binary(@tex_tfm_h) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@tex_tfm_v) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }
+ close(TEXTFM);
+ }
+ }
+ }
+ }
+}
+sub make_multi_cid_tfm {
+ for ($k=0; $k<=1; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}
+ for ($l=1; $l<=$multi; $l++){#language
+ if ($l==1) {$lang="k";$max_hex=4;} elsif ($l==2) {$lang="c";$max_hex=7;} elsif ($l==3){$lang="t";$max_hex=4;}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ $varfilename="otf-c$lang$face-$dir";
+ open(DVIPSTFM,">tfm/$varfilename.tfm") || die "Can't make \'tfm/$varfilename.tfm\'!\n";
+ binmode(DVIPSTFM);
+ if ($i==0) {
+ foreach $binary(@dvips_tfm_h) {$_ = pack("C", $binary);print DVIPSTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@dvips_tfm_v) {$_ = pack("C", $binary);print DVIPSTFM "$_";}
+ }
+ close(DVIPSTFM);
+ for ($first_hex=0x0; $first_hex <= $max_hex; $first_hex++){
+ $filename="cid$lang$face".sprintf("%x",$first_hex)."-$dir";
+ open(TEXTFM,">tfm/$filename.tfm") || die "Can't make \'tfm/$filename.tfm\'!\n";
+ binmode(TEXTFM);
+ if ($i==0) {
+ foreach $binary(@tex_tfm_h) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@tex_tfm_v) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }
+ close(TEXTFM);
+ }
+ }
+ }
+ }
+}
+sub make_utf_allinone_tfm {
+ for ($k=0; $k<=1; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ for ($first_hex=0x0; $first_hex <= 0xf; $first_hex++){
+ $filename="utf$face".sprintf("%x",$first_hex)."-$dir";
+ open(TEXTFM,">tfm/$filename.tfm") || die "Can't make \'tfm/$filename.tfm\'!\n";
+ if ($i==0) {
+ foreach $binary(@tex_tfm_h) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }elsif ($i==1){
+ foreach $binary(@tex_tfm_v) {$_ = pack("C", $binary);print TEXTFM "$_";}
+ }
+ close(TEXTFM);
+ }
+ }
+ }
+}
+
diff --git a/language/japanese/japanese-otf/script/mkutfvf.pl b/language/japanese/japanese-otf/script/mkutfvf.pl
new file mode 100644
index 0000000000..2a499c7fdc
--- /dev/null
+++ b/language/japanese/japanese-otf/script/mkutfvf.pl
@@ -0,0 +1,91 @@
+#!/usr/bin/perl
+$multi=3;
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+&makejvf;
+&makemlvf;
+
+sub makejvf {
+ for ($k=0; $k<=6; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
+ elsif ($k==6){$face="ge";}
+ for ($l=0; $l<=0; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ for ($first_hex=0x0; $first_hex <= 0xf; $first_hex++){
+ $filename="utf$lang$face".sprintf("%x",$first_hex)."-$dir";
+ open(OUT, ">ovp/$filename.ovp")||die "$!";
+ &fonthead;
+ print OUT " (FONTNAME otf-u$lang$face-$dir)\n";
+ &fontfoot;
+ &writechar($first_hex);
+ close(OUT);
+ system("ovp2ovf ovp/$filename.ovp vf/$filename.vf vf/$filename.ofm");
+ unlink "vf/$filename.ofm";
+ }
+ }
+ }
+ }
+}
+sub makemlvf {
+ for ($k=0; $k<=1; $k++){#face
+ if ($k==0) {$face="mr";}elsif ($k==1){$face="gr";}elsif ($k==2){$face="mb";}
+ elsif ($k==3){$face="gb";}elsif ($k==4){$face="mgr";}elsif ($k==5){$face="ml";}
+ elsif ($k==6){$face="ge";}
+ for ($l=1; $l<=$multi; $l++){#language
+ if ($l==0) {$lang="j";} elsif ($l==1) {$lang="k";}
+ elsif ($l==2) {$lang="c";} elsif ($l==3){$lang="t";}
+ for ($i=0; $i<=1; $i++){#direction
+ if ($i==0) {$dir="h";}elsif ($i==1){$dir="v";}
+ for ($first_hex=0x0; $first_hex <= 0xf; $first_hex++){
+ $filename="utf$lang$face".sprintf("%x",$first_hex)."-$dir";
+ open(OUT, ">ovp/$filename.ovp")||die "$!";
+ &fonthead;
+ print OUT " (FONTNAME otf-u$lang$face-$dir)\n";
+ &fontfoot;
+ &writechar($first_hex);
+ close(OUT);
+ system("ovp2ovf ovp/$filename.ovp vf/$filename.vf vf/$filename.ofm");
+ unlink "vf/$filename.ofm";
+ }
+ }
+ }
+ }
+}
+
+sub fonthead {
+print OUT <<END_OF_DATA;
+(VTITLE JVF for UTF16)
+(OFMLEVEL D 0)
+(DESIGNSIZE R 10.000000)
+(CHECKSUM O 0)
+(MAPFONT D 0
+END_OF_DATA
+}
+
+sub fontfoot {
+print OUT <<END_OF_DATA;
+ (FONTCHECKSUM O 0)
+ (FONTAT R 1.0)
+ (FONTDSIZE R 10.000000)
+ )
+END_OF_DATA
+}#2003/10/22 FONTAT 0.962216->1.0
+
+sub writechar {
+ ($hex) = @_;
+ for ($ku=1; $ku <= 79; $ku++){#2002/1/27 120->79
+ for ($ten=1; $ten <= 94; $ten++){
+ $jis=sprintf("%X", $ku*256 + $ten + 0x2020);
+ if ($ku>=16 && $ku<=79 && $ten>=16 && $ten<=79){
+ $uni=sprintf("%X", $hex*4096 + ($ku-16)*64 + ($ten-16));
+ } else {
+ $uni="3013";
+ }
+ print OUT "(CHARACTER H $jis (CHARWD R 1.0) (MAP (SETCHAR H $uni)))\n";
+ }
+ }
+}
diff --git a/language/japanese/japanese-otf/script/mkvpkana.pl b/language/japanese/japanese-otf/script/mkvpkana.pl
new file mode 100644
index 0000000000..febc79c760
--- /dev/null
+++ b/language/japanese/japanese-otf/script/mkvpkana.pl
@@ -0,0 +1,277 @@
+@min_w3=(7.17, 8.34, 7.77, 8.32, 9.96, 9.03, 9.60, 7.75, 8.19, 9.42, 9.98, 8.89, 9.47, 8.65, 9.14, 8.99, 9.10, 9.71, 9.71, 9.99, 9.79, 9.52, 9.76, 9.26, 9.44, 9.67, 9.71, 9.42, 9.63, 9.39, 9.61, 9.18, 9.47, 9.45, 9.56, 9.23, 9.48, 9.61, 9.67, 7.96, 8.24, 8.99, 8.69, 8.76, 9.75, 9.69, 9.48, 8.95, 8.98, 9.25, 8.82, 9.28, 9.57, 9.70, 9.19, 9.46, 9.72, 9.05, 9.16, 9.15, 7.21, 8.13, 8.43, 9.23, 9.61, 9.65, 9.76, 9.17, 9.37, 9.18, 9.76, 8.69, 9.38, 8.73, 9.22, 8.95, 9.63, 9.66, 9.82, 9.59, 9.21, 9.66, 8.58, 9.28, 9.37, 9.65, 9.64, 9.20, 8.45, 8.96, 8.81, 9.29, 8.89, 9.38, 7.81, 8.12, 8.76, 9.21, 9.26, 9.27, 9.25, 9.56, 9.25, 9.49, 9.19, 9.60, 8.32, 8.83, 9.17, 9.53, 8.39, 9.10, 8.61, 9.24, 8.67, 9.26, 8.89, 9.52, 9.31, 9.56, 9.20, 9.35, 8.33, 8.80, 9.48, 9.13, 9.38, 9.58, 9.63, 9.11, 8.01, 9.06, 9.45, 8.80, 7.42, 8.16, 8.55, 8.79, 9.20, 9.39, 8.91, 9.47, 9.56, 7.09, 8.05, 8.35, 9.07, 9.39, 9.64, 8.10, 9.25, 8.79, 8.88, 8.74, 8.52, 8.98, 7.76, 8.09, 8.38, 8.80, 9.29, 9.75, 8.50, 8.35, 8.42, 8.56, 9.03, 9.35, 8.34, 9.17, 8.11, 9.47, 8.73, 8.53);
+@min_w6=(7.46, 8.44, 7.98, 8.54, 9.98, 9.15, 9.79, 7.92, 8.47, 9.47, 9.99, 9.12, 9.74, 8.89, 9.48, 9.24, 9.39, 9.93, 9.86, 9.99, 9.98, 9.64, 9.82, 9.47, 9.60, 9.84, 9.85, 9.53, 9.74, 9.61, 9.83, 9.45, 9.66, 9.66, 9.74, 9.47, 9.68, 9.78, 9.80, 8.04, 8.42, 9.15, 8.92, 8.95, 9.89, 9.89, 9.66, 9.17, 9.23, 9.54, 8.99, 9.55, 9.76, 9.82, 9.36, 9.64, 9.80, 9.39, 9.47, 9.43, 7.43, 8.33, 8.58, 9.46, 9.74, 9.81, 9.88, 9.36, 9.58, 9.41, 9.91, 8.83, 9.54, 8.82, 9.40, 9.17, 9.83, 9.82, 9.85, 9.80, 9.43, 9.79, 8.73, 9.45, 9.59, 9.82, 9.79, 9.40, 8.50, 9.20, 8.92, 9.46, 8.93, 9.56, 8.04, 8.39, 8.84, 9.41, 9.48, 9.50, 9.41, 9.65, 9.37, 9.57, 9.32, 9.65, 8.59, 9.13, 9.37, 9.65, 8.61, 9.21, 8.85, 9.44, 8.93, 9.40, 9.06, 9.64, 9.42, 9.61, 9.40, 9.51, 8.43, 8.97, 9.61, 9.34, 9.62, 9.74, 9.75, 9.35, 8.31, 9.33, 9.64, 9.13, 7.65, 8.44, 8.74, 9.06, 9.35, 9.55, 9.06, 9.63, 9.67, 7.38, 8.32, 8.58, 9.32, 9.58, 9.73, 8.38, 9.47, 9.10, 9.18, 9.00, 8.68, 9.19, 7.99, 8.33, 8.55, 9.05, 9.47, 9.89, 8.83, 8.71, 8.71, 8.65, 9.15, 9.58, 8.65, 9.39, 8.30, 9.62, 8.90, 8.64);
+@goth_w3=(7.92, 8.46, 8.44, 8.80, 9.99, 9.01, 9.60, 8.09, 8.46, 8.97, 9.58, 8.84, 9.42, 8.86, 9.39, 9.26, 9.41, 9.73, 9.80, 9.56, 9.49, 9.54, 9.56, 9.38, 9.23, 9.67, 9.86, 9.38, 9.71, 9.30, 9.60, 9.44, 9.53, 9.40, 9.43, 9.39, 9.59, 9.63, 9.85, 8.23, 8.62, 9.26, 8.89, 8.92, 9.59, 9.81, 9.48, 9.19, 9.34, 9.52, 9.02, 9.50, 9.67, 9.84, 9.18, 9.40, 9.71, 9.25, 9.29, 9.33, 7.84, 8.21, 8.56, 9.45, 9.65, 9.70, 9.57, 9.24, 9.49, 9.38, 9.48, 8.89, 9.52, 8.88, 9.40, 9.03, 9.63, 9.50, 9.75, 9.55, 9.40, 9.55, 8.71, 9.38, 9.46, 9.64, 9.62, 9.32, 8.55, 9.19, 8.63, 9.28, 8.82, 9.40, 8.33, 8.77, 8.76, 9.29, 9.46, 9.66, 9.40, 9.78, 9.33, 9.39, 9.14, 9.47, 9.13, 9.52, 9.34, 9.39, 8.88, 9.31, 9.00, 9.44, 9.17, 9.63, 8.98, 9.56, 9.41, 9.53, 9.14, 9.18, 8.55, 9.01, 9.50, 9.28, 9.27, 9.35, 9.45, 9.08, 8.62, 9.17, 9.53, 8.77, 8.71, 8.82, 9.09, 9.33, 9.70, 9.83, 9.01, 9.58, 9.31, 7.79, 8.30, 8.47, 9.47, 9.74, 9.83, 8.95, 9.25, 9.19, 8.95, 9.25, 8.79, 9.37, 8.31, 8.70, 8.83, 9.38, 9.35, 9.64, 9.33, 9.00, 9.23, 8.69, 9.21, 9.31, 8.95, 9.27, 8.51, 9.49, 8.93, 8.41);
+@goth_w6=(8.27, 8.62, 8.69, 8.92, 9.99, 9.18, 9.77, 8.40, 8.80, 9.20, 9.80, 9.15, 9.70, 9.06, 9.67, 9.47, 9.67, 9.88, 9.96, 9.77, 9.70, 9.79, 9.76, 9.67, 9.60, 9.85, 9.97, 9.53, 9.86, 9.55, 9.84, 9.70, 9.79, 9.65, 9.65, 9.59, 9.81, 9.81, 9.97, 8.47, 8.87, 9.44, 9.19, 9.19, 9.82, 9.96, 9.65, 9.42, 9.57, 9.68, 9.28, 9.75, 9.82, 9.97, 9.40, 9.61, 9.79, 9.50, 9.54, 9.53, 8.20, 8.52, 8.84, 9.71, 9.89, 9.90, 9.74, 9.48, 9.71, 9.58, 9.68, 9.10, 9.70, 9.08, 9.63, 9.28, 9.82, 9.74, 9.88, 9.77, 9.59, 9.79, 8.93, 9.54, 9.68, 9.86, 9.83, 9.54, 8.76, 9.44, 8.88, 9.48, 9.03, 9.59, 8.65, 9.06, 8.99, 9.51, 9.68, 9.79, 9.60, 9.87, 9.53, 9.69, 9.35, 9.59, 9.40, 9.78, 9.53, 9.58, 9.11, 9.39, 9.30, 9.68, 9.43, 9.78, 9.21, 9.63, 9.60, 9.74, 9.39, 9.40, 8.77, 9.26, 9.64, 9.50, 9.51, 9.51, 9.68, 9.37, 8.93, 9.43, 9.73, 9.02, 9.00, 9.07, 9.23, 9.51, 9.83, 9.92, 9.29, 9.74, 9.51, 8.15, 8.50, 8.85, 9.71, 9.90, 9.98, 9.19, 9.51, 9.42, 9.18, 9.46, 8.94, 9.53, 8.62, 9.01, 9.11, 9.62, 9.64, 9.84, 9.58, 9.18, 9.47, 8.91, 9.43, 9.59, 9.25, 9.49, 8.78, 9.69, 9.11, 8.66);
+@maru_w4=(8.13, 8.50, 8.62, 8.98, 9.98, 9.17, 9.75, 8.59, 8.83, 9.19, 9.79, 9.05, 9.59, 9.08, 9.61, 9.45, 9.60, 9.82, 9.92, 9.47, 9.50, 9.66, 9.62, 9.57, 9.49, 9.77, 9.95, 9.53, 9.72, 9.43, 9.68, 9.54, 9.63, 9.57, 9.59, 9.59, 9.72, 9.68, 9.92, 8.60, 8.98, 9.42, 9.16, 9.23, 9.65, 9.93, 9.62, 9.40, 9.49, 9.62, 9.24, 9.66, 9.76, 9.92, 9.41, 9.61, 9.81, 9.46, 9.49, 9.52, 8.32, 8.58, 8.78, 9.67, 9.79, 9.87, 9.64, 9.38, 9.64, 9.53, 9.60, 8.99, 9.62, 9.03, 9.58, 9.09, 9.61, 9.79, 9.79, 9.70, 9.55, 9.73, 8.86, 9.54, 9.57, 9.80, 9.71, 9.45, 8.92, 9.41, 8.75, 9.35, 8.94, 9.46, 8.84, 9.30, 8.90, 9.38, 9.52, 9.71, 9.39, 9.78, 9.44, 9.66, 9.37, 9.64, 9.40, 9.70, 9.49, 9.62, 9.53, 9.84, 9.22, 9.58, 9.40, 9.78, 9.12, 9.61, 9.56, 9.76, 9.31, 9.34, 8.77, 9.20, 9.70, 9.45, 9.64, 9.33, 9.62, 9.31, 9.17, 9.44, 9.49, 8.92, 8.97, 9.34, 9.44, 9.46, 9.74, 9.89, 9.28, 9.61, 9.72, 8.32, 8.59, 8.86, 9.50, 9.80, 9.92, 9.16, 9.40, 9.33, 9.15, 9.47, 8.88, 9.41, 8.79, 9.25, 9.19, 9.73, 9.61, 9.69, 9.42, 9.17, 9.59, 8.97, 9.47, 9.42, 9.41, 9.49, 8.79, 9.63, 9.00, 8.69);
+@charwidth=([@min_w3], [@min_w6], [@goth_w3], [@goth_w6], [@maru_w4]);
+@character=("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
+@font_name=("phiraminw3-v", "phiraminw6-v", "phirakakuw3-v", "phirakakuw6-v", "phiramaruw4-v");
+@kanji_font_name=("hminr-v", "hminb-v", "hgothr-v", "hgothb-v", "hmgothr-v");
+@kana_font_name=("hiramin-w3-v", "hiramin-w6-v", "hirakaku-w3-v", "hirakaku-w6-v", "hiramaru-w4-v");
+$font_at=1.0;
+$half_width= ($font_at / 2);
+$quater_width= ($font_at / 4);
+opendir(OVP, "ovp") || mkdir("ovp",0755) || die "cannot mkdir ovp";
+opendir(VF, "vf") || mkdir("vf",0755) || die "cannot mkdir vf";
+opendir(JPL, "pl") || mkdir("pl",0755) || die "cannot mkdir pl";
+opendir(JFM, "tfm") || mkdir("tfm",0755) || die "cannot mkdir tfm";
+closedir(OVP);
+closedir(VF);
+closedir(JPL);
+closedir(JFM);
+
+#main
+for ($i=0; $i<=4; $i++){
+ open (JPL, ">pl/$font_name[$i].pl");
+ &tfm_head_v;
+ &chars_in_type_jis;
+ &chars_in_type_prop;
+ &print_type_jis;
+ &print_type_prop;
+ &glue_kern;
+ close(JPL);
+}
+for ($i=0; $i<=4; $i++){
+ @prop_odori_v=(0x3E68, 0x3E69, 0x3E6A, 0x3E6B, 0x3E6E);
+ @cpm_v=(0x1ECF, 0x01ED0, 0x2F8D, 0x2F8E, 0x1F14, 0x1F15);
+ $hiracode=15985;
+ $katacode=16076;
+ $prop_char_num=0;
+ open (OVP, ">ovp/$font_name[$i].ovp");
+ &fonthead;
+ &write_char;
+ close(OVP);
+}
+#
+#sub rtn
+#
+sub tfm_head_v {
+ print JPL "(DIRECTION TATE)\n";
+ print JPL "(FAMILY PROP KANA)\n";
+ print JPL "(FACE F MRR)\n";
+ print JPL "(CODINGSCHEME TEX KANJI TEXT)\n";
+ print JPL "(DESIGNSIZE R 10.0)\n";
+ print JPL "(CHECKSUM O 0)\n";
+ print JPL "(SEVENBITSAFEFLAG TRUE)\n";
+ print JPL "(FONTDIMEN\n";
+ print JPL " (SLANT R 0.0)\n";
+ print JPL " (SPACE R 0.0)\n";
+ printf JPL " (STRETCH R %f)\n", $font_at/10;
+ print JPL " (SHRINK R 0.0)\n";
+ printf JPL " (XHEIGHT R %f)\n", $font_at;
+ printf JPL " (QUAD R %f)\n", $font_at;
+ printf JPL " (EXTRASPACE R %f)\n", $font_at/4;
+ printf JPL " (EXTRASTRETCH R %f)\n", $font_at/5;
+ printf JPL " (EXTRASHRINK R %f)\n", $font_at/8;
+ print JPL " )\n";
+}
+sub char_foot_h {
+ printf JPL " (CHARHT R %f)\n", $font_at*0.88;
+ printf JPL " (CHARDP R %f)\n", $font_at*0.12;
+ print JPL " )\n";
+}
+sub glue_kern{
+ print JPL "(GLUEKERN\n";
+ print JPL " (LABEL O 5)\n";
+ print JPL " (KRN O 5 R 0.0)\n";
+ print JPL " (LABEL O 0)\n";
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (LABEL H %X)\n",($char+7);
+ }
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (LABEL O 1)\n";
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 2)\n";
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ print JPL " (LABEL O 6)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $half_width, $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+7), $half_width, $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 4)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width+$quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R 0.0)\n", $half_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R 0.0)\n", $half_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R 0.0)\n",($char+7), $half_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " (LABEL O 3)\n";
+ printf JPL " (GLUE O 0 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 1 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 2 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 3 R %f R 0.0 R %f)\n", $half_width, $quater_width;
+ printf JPL " (GLUE O 4 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 5 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ printf JPL " (GLUE O 6 R %f R 0.0 R %f)\n", $quater_width, $quater_width;
+ for ($char=0; $char<=$#uniq_char_width_array; $char++){
+ printf JPL " (GLUE H %X R %f R 0.0 R %f)\n",($char+7), $quater_width, $quater_width;
+ }
+ print JPL " (STOP)\n";
+ print JPL " )\n";
+}
+sub chars_in_type_jis{
+print JPL <<END_OF_DATA;
+(CHARSINTYPE O 1
+
+ )
+(CHARSINTYPE O 2
+
+ )
+(CHARSINTYPE O 3
+
+ )
+(CHARSINTYPE O 4
+
+ )
+(CHARSINTYPE O 5
+
+ )
+(CHARSINTYPE O 6
+
+ )
+END_OF_DATA
+}
+sub print_type_jis{
+ @type_width=($font_at, $half_width, $half_width, $half_width, $half_width, $font_at, $font_at);
+ for ($k=0; $k<=6; $k++){
+ printf JPL "(TYPE H %x\n", $k;
+ printf JPL " (CHARWD R %f)\n", $type_width[$k];
+ &char_foot_h;
+ }
+}
+sub fonthead {
+ print OVP "(VTITLE Prop Kana)\n";
+ print OVP "(OFMLEVEL D 0)\n";
+ print OVP "(DESIGNSIZE R 10.000000)\n";
+ print OVP "(CHECKSUM O 0)\n";
+ print OVP "(MAPFONT D 1\n";
+ print OVP " (FONTNAME $kanji_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+ print OVP "(MAPFONT D 2\n";
+ print OVP " (FONTNAME $kana_font_name[$i])\n";
+ print OVP " (FONTCHECKSUM O 0)\n";
+ printf OVP " (FONTAT R %f)\n", $font_at;
+ print OVP " (FONTDSIZE R 10.000000)\n";
+ print OVP " )\n";
+}
+sub write_char {
+ for ($ku=1; $ku<=94; $ku++){
+ for ($ten=1; $ten<=94; $ten++){
+ $jiscode=($ku+32)*256+($ten+32);
+ if ($ku==1){&print_kigo_char;}elsif($ku==4){&print_hira_char;}
+ elsif($ku==5){&print_kata_char;}else{&print_char;}
+ }
+ }
+}
+sub print_char{
+ $jiscode=($ku+32)*256+($ten+32);
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ printf OVP " (SETCHAR H %X)\n",$jiscode;
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_kigo_char{
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ if ($jiscode>=0x2146 && $jiscode<=0x215B){#Kakko
+ $width=$half_width;
+ } elsif ($jiscode>=0x2122 && $jiscode<=0x2128){#Kutouten
+ $width=$half_width;
+ } elsif ((0x2133 <= $jiscode && $jiscode <= 0x2136) || $jiscode == 0x213c){#odoriji
+ $width=($charwidth[$i][$prop_char_num]/10);
+ $prop_char_num++;
+ } else{
+ $width=$font_at;
+ }
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ if ((0x2133 <= $jiscode && $jiscode <= 0x2136) || $jiscode == 0x213c){#Odoriji, Cho-on
+ print OVP " (SELECTFONT D 2)\n";
+ } elsif ((0x2124 <= $jiscode && $jiscode <= 0x2125) || (0x2146 <= $jiscode && $jiscode <= 0x2149)){#Comma, Period, Minute
+ print OVP " (SELECTFONT D 2)\n";
+ }
+ if (0x2126 <= $jiscode && $jiscode <= 0x2128){#colon, semicolon, nakaten
+ printf OVP " (MOVERIGHT R -%f)\n",$quater_width;}
+ if (0x2146 <= $jiscode && $jiscode <= 0x215B && ($jiscode%2)==0){#Kakko
+ printf OVP " (MOVERIGHT R -%f)\n",$half_width;
+ }
+ if ((0x2133 <= $jiscode && $jiscode <= 0x2136) || $jiscode == 0x213c){#odoriji
+ $odorijicode= shift(@prop_odori_v);
+ printf OVP " (SETCHAR H %X)\n",$odorijicode;
+ } elsif((0x2124 <= $jiscode && $jiscode <= 0x2125) || (0x2146 <= $jiscode && $jiscode <= 0x2149)){#Comma, Period, Minute
+ $cpmcode= shift(@cpm_v);
+ printf OVP " (SETCHAR H %X)\n",$cpmcode;
+ } else {
+ printf OVP " (SETCHAR H %X)\n",$jiscode;
+ }
+ print OVP " )\n";
+ print OVP " )\n";
+}
+sub print_hira_char{
+ $width=($charwidth[$i][$prop_char_num]/10);
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 2)\n";
+ printf OVP " (SETCHAR H %X)\n",$hiracode;
+ print OVP " )\n";
+ print OVP " )\n";
+ $hiracode++;
+ if($ten<=83){$prop_char_num++;}
+}
+sub print_kata_char{
+ $width=($charwidth[$i][$prop_char_num]/10);
+ printf OVP "(CHARACTER H %X\n", $jiscode;
+ printf OVP " (CHARWD R %f)\n", $width;
+ print OVP " (MAP\n";
+ print OVP " (SELECTFONT D 2)\n";
+ printf OVP " (SETCHAR H %X)\n",$katacode;
+ print OVP " )\n";
+ print OVP " )\n";
+ $katacode++;
+ $prop_char_num++;
+}
+sub chars_in_type_prop{
+ %char_width_hash=();
+ for ($j=0; $j<=$#min_w3; $j++){
+ $char_width_hash{$character[$j]}=$charwidth[$i][$j]/10;
+ }
+ $x = '-';
+ @uniq_char_width_array = grep( $_ ne $x && ($x = $_), sort values(%char_width_hash));
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ printf JPL "(CHARSINTYPE H %X\n",($j+7);
+ print JPL " ";
+ @char_in_this_type = ();
+ while (($name, $value) = each(%char_width_hash)) {
+ if ($value == $uniq_char_width_array[$j]){
+ push(@char_in_this_type, $name);
+ }
+ }
+ @char_in_this_type = sort @char_in_this_type;
+ foreach $char_in_this(@char_in_this_type){
+ print JPL "$char_in_this ";#character
+ }
+ print JPL "\n";
+ print JPL " )\n";
+ }
+}
+sub print_type_prop{
+ for ($j=0; $j<=$#uniq_char_width_array; $j++){
+ $char_width=$uniq_char_width_array[$j];
+ printf JPL "(TYPE H %X\n", ($j+7);
+ printf JPL " (CHARWD R %f)\n", $char_width;
+ &char_foot_h;
+ }
+} \ No newline at end of file
diff --git a/language/japanese/japanese-otf/script/otf-hangul.rb b/language/japanese/japanese-otf/script/otf-hangul.rb
new file mode 100755
index 0000000000..57a1a11a58
--- /dev/null
+++ b/language/japanese/japanese-otf/script/otf-hangul.rb
@@ -0,0 +1,51 @@
+#!/usr/bin/env ruby -w
+
+## otf-hangul.rb and otf-hangul.dfu
+#
+# This work may be distributed and/or modified under the
+# conditions of the LaTeX Project Public License, either version 1.3
+# of this license or (at your option) any later version.
+# The latest version of this license is in
+# http://www.latex-project.org/lppl.txt
+# and version 1.3 or later is part of all distributions of LaTeX
+# version 2005/12/01 or later.
+#
+# This work has the LPPL maintenance status `maintained'.
+#
+# The Current Maintainer of this work is KUROKI Yusuke.
+#
+# This work consists of the files otf-hangul.rb
+# and the derived file otf-hangul.dfu.
+
+print "%% otf-hangul.rb and otf-hangul.dfu
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is KUROKI Yusuke.
+%
+% This work consists of the files otf-hangul.rb
+% and the derived file otf-hangul.dfu.
+
+"
+
+def printline(i)
+ ihex = sprintf("%#0X", i).sub("0X", "")
+ print "\\DeclareUnicodeCharacter{", ihex, \
+ "}{\\UTFK{", ihex, "}}%\n"
+end
+
+print " \\ProvidesFile{otf-hangul.dfu}
+ [2010/06/20 v0.02 Hangul symbol, UTF-8 support for inputenc \& UTF/OTF packages]
+"
+
+for i in 0x1100 .. 0x11FF; printline(i); end
+for i in 0x3130 .. 0x318F; printline(i); end
+for i in 0xAC00 .. 0xD7AF; printline(i); end
diff --git a/language/japanese/japanese-otf/sty/ajmacros.sty b/language/japanese/japanese-otf/sty/ajmacros.sty
new file mode 100644
index 0000000000..65fd0af6a2
--- /dev/null
+++ b/language/japanese/japanese-otf/sty/ajmacros.sty
@@ -0,0 +1,746 @@
+\NeedsTeXFormat{pLaTeX2e}
+\@ifpackageloaded{otf}{}{\@ifpackageloaded{utf}{}{\RequirePackage{otf}}}
+\ProvidesPackage{ajmacros}[2019/04/01 21:00 iNOUE Koich! <inoue@ma.ns.musashi-tech.ac.jp>]
+{%
+\gdef\shift@CID#1#2{{\@tempcnta#1\advance\@tempcnta#2\CID{\@tempcnta}}}
+\gdef\ajTsumesuji{\@ifstar{\@@ajTsumesuji}{\@ajTsumesuji}}
+\global\let\ajTumesuji\ajTsumesuji
+\gdef\@ajTsumesuji#1#2{{\@tempcnta\ifydir\ifcase#1\or780\or247\or9758\or9738\fi
+ \else\ifcase#1\or8736\or8966\or13274\or13254\fi\fi
+ \aj@expand\aj@Tsumesuji#2\@nil}}
+\gdef\@@ajTsumesuji#1{\@ajTsumesuji{\aj@expand\aj@count@toks#14321\@nil}{#1}}
+\gdef\aj@expand#1#2{\expandafter\@aj@expand\number#2!#1}
+\gdef\@aj@expand#1!#2{#2#1}
+\gdef\aj@count@toks#1#2#3#4#5#6\@nil{#5}
+\gdef\aj@Tsumesuji#1{\ifx\@nil#1\else\shift@CID{\@tempcnta}{#1}%
+ \expandafter\aj@Tsumesuji
+ \fi}
+\gdef\ajMaru{\@ifstar{\@aj@Maru}{\aj@Maru}}
+\gdef\aj@Maru#1{\ifnum#1=\z@ \CID{8224}%
+ \else\ifnum#1<21 \shift@CID{#1}{7554}%
+ \else\ifnum#1=21 \CID{8091}%
+ \else\ifnum#1<32 \shift@CID{#1}{8080}%
+ \else\shift@CID{#1}{10212}%
+ \fi\fi\fi\fi}
+\gdef\@aj@Maru#1{\ifnum#1<10 \shift@CID{#1}{10234}%
+ \else\ifnum#1<21 \shift@CID{#1}{7554}%
+ \else\ifnum#1=21 \CID{8091}%
+ \else\ifnum#1<32 \shift@CID{#1}{8080}%
+ \else\shift@CID{#1}{10212}%
+ \fi\fi\fi\fi}
+\gdef\ajKuroMaru{\@ifstar{\@aj@KuroMaru}{\aj@KuroMaru}}
+\gdef\aj@KuroMaru#1{\ifnum#1=\z@ \CID{10503}%
+ \else\ifnum#1<10 \shift@CID{#1}{8285}%
+ \else\shift@CID{#1}{10504}%
+ \fi\fi}
+\gdef\@aj@KuroMaru#1{\shift@CID{#1}{10504}}
+\gdef\ajKaku{\@ifstar{\@aj@Kaku}{\aj@Kaku}}
+\gdef\aj@Kaku#1{\ifnum#1<10{\@tempcnta#1\multiply\@tempcnta\tw@
+ \shift@CID{\@tempcnta}{10764}}%
+ \else\shift@CID{#1}{10774}%
+ \fi}
+\gdef\@aj@Kaku#1{\ifnum#1<10{\@tempcnta#1\multiply\@tempcnta\tw@
+ \shift@CID{\@tempcnta}{10765}}%
+ \else\shift@CID{#1}{10774}%
+ \fi}
+\gdef\ajKuroKaku{\@ifstar{\@aj@KuroKaku}{\aj@KuroKaku}}
+\gdef\aj@KuroKaku#1{\ifnum#1<10{\@tempcnta#1\multiply\@tempcnta\tw@
+ \shift@CID{\@tempcnta}{11037}}%
+ \else\shift@CID{#1}{11047}%
+ \fi}
+\gdef\@aj@KuroKaku#1{\ifnum#1<10{\@tempcnta#1\multiply\@tempcnta\tw@
+ \shift@CID{\@tempcnta}{11038}}%
+ \else\shift@CID{#1}{11047}%
+ \fi}
+\gdef\ajMaruKaku{\@ifstar{\@aj@MaruKaku}{\aj@MaruKaku}}
+\gdef\aj@MaruKaku#1{\ifnum#1<10{\@tempcnta#1\multiply\@tempcnta\tw@
+ \shift@CID{\@tempcnta}{11307}}%
+ \else\shift@CID{#1}{11317}%
+ \fi}
+\gdef\@aj@MaruKaku#1{\ifnum#1<10{\@tempcnta#1\multiply\@tempcnta\tw@
+ \shift@CID{\@tempcnta}{11308}}%
+ \else\shift@CID{#1}{11317}%
+ \fi}
+\gdef\ajKuroMaruKaku{\@ifstar{\@aj@KuroMaruKaku}{\aj@KuroMaruKaku}}
+\gdef\aj@KuroMaruKaku#1{\ifnum#1<10{\@tempcnta#1\multiply\@tempcnta\tw@
+ \shift@CID{\@tempcnta}{11576}}%
+ \else\shift@CID{#1}{11586}%
+ \fi}
+\gdef\@aj@KuroMaruKaku#1{\ifnum#1<10{\@tempcnta#1\multiply\@tempcnta\tw@
+ \shift@CID{\@tempcnta}{11577}}%
+ \else\shift@CID{#1}{11586}%
+ \fi}
+\gdef\ajKakko{\@ifstar{\@aj@Kakko}{\aj@Kakko}}
+\gdef\aj@Kakko#1{\ifnum#1=\z@ \CID{8227}%
+ \else\ifnum#1<21 \shift@CID{#1}{8070}%
+ \else\shift@CID{#1}{9873}%
+ \fi\fi}
+\gdef\@aj@Kakko#1{\ifnum#1<10 \shift@CID{#1}{9884}%
+ \else\ifnum#1<21 \shift@CID{#1}{8070}%
+ \else\shift@CID{#1}{9873}%
+ \fi\fi}
+\gdef\ajRoman{\@ifstar{\@aj@Roman}{\aj@Roman}}
+\gdef\aj@Roman#1{\ifnum#1<11 \shift@CID{#1}{7574}%
+ \else\ifnum#1<13 \shift@CID{#1}{8214}%
+ \else\shift@CID{#1}{8282}%
+ \fi\fi}
+\gdef\@aj@Roman#1{\ifnum#1=4 \CID{9883}\else\aj@Roman{#1}\fi}
+\gdef\ajroman#1{\ifnum#1<11 \shift@CID{#1}{8091}%
+ \else\shift@CID{#1}{8287}%
+ \fi}
+\gdef\ajPeriod#1{\ifnum#1<10 \shift@CID{#1}{8061}\else\shift@CID{#1}{20577}\fi}%AJ1-6
+\gdef\ajKakkoalph#1{\shift@CID{#1}{8111}}
+\gdef\ajKakkoYobi#1{\shift@CID{#1}{8196}}
+\gdef\ajKakkoroman#1{\shift@CID{#1}{9973}}
+\gdef\ajKakkoRoman#1{\shift@CID{#1}{9988}}
+\gdef\ajKakkoAlph#1{\shift@CID{#1}{10003}}
+\gdef\ajKakkoHira#1{\shift@CID{#1}{10029}}
+\gdef\ajKakkoKata#1{\shift@CID{#1}{10077}}
+\gdef\ajKakkoKansuji#1{\shift@CID{#1}{10125}}
+\gdef\ajMaruKansuji#1{\shift@CID{#1}{10460}}
+\gdef\ajNijuMaru#1{\shift@CID{#1}{16222}}
+\gdef\ajRecycle#1{\shift@CID{#1}{16314}}
+\gdef\ajHasenKakuAlph#1{\shift@CID{#1}{20496}}%AJ1-6
+\gdef\ajCross#1{\shift@CID{#1}{20523}}%AJ1-6
+\gdef\ajSlanted{\@ifstar{\aj@Slanted}{\@aj@Slanted}}%AJ1-6
+\gdef\aj@Slanted#1{\shift@CID{#1}{20589}}%AJ1-6
+\gdef\@aj@Slanted#1{\ifnum#1<10 \shift@CID{#1}{9460}\else\shift@CID{#1}{20589}\fi}%AJ1-6
+\gdef\ajApostrophe#1{\shift@CID{#1}{20649}}%AJ1-6
+\global\let\ajYear\ajApostrophe%AJ1-6
+\gdef\ajSquareMark{\@ifstar{\aj@SquareMark}{\@ifnextchar+{\@aj@SquareMark}{\@ajSquareMark}}}
+\gdef\@ajSquareMark#1{\shift@CID{#1}{12229}}
+\gdef\aj@SquareMark#1{\shift@CID{#1}{12241}}
+\gdef\@aj@SquareMark+#1{\shift@CID{#1}{\ifodd\@tempcnta24459\else24482\fi
+ \divide\@tempcnta\tw@}}
+\gdef\ajHishi#1{\shift@CID{#1}{12256}}
+%
+\let\offsetalph\z@
+\chardef\offsetAlph26
+\chardef\offsetHira26
+\chardef\offsetKata48
+\chardef\offsetYobi48
+\let\offsetMaru\z@
+\chardef\offsetKuroMaru144
+\chardef\offsetKaku122
+\chardef\offsetKuroKaku125
+\chardef\offsetMaruKaku122
+\chardef\offsetKuroMaruKaku121
+\@tempcnta10312
+\def\@aj@sujidef#1{\ifx\@nil#1%
+ \else\advance\@tempcnta\csname offset#1\endcsname
+ \expandafter\xdef\csname aj\@ajsujifam#1\endcsname##1%
+ {\noexpand\shift@CID{##1}{\number\@tempcnta}}%
+ \expandafter\@aj@sujidef\fi}
+\def\@ajsujidef#1{\ifx\@nil#1%
+ \else\advance\@tempcnta\csname offset#1\endcsname
+ \def\@ajsujifam{#1}%
+ \@aj@sujidef{alph}{Alph}{Hira}{Kata}{Yobi}\@nil
+ \expandafter\@ajsujidef\fi}
+\@ajsujidef{Maru}{KuroMaru}{Kaku}{KuroKaku}{MaruKaku}{KuroMaruKaku}\@nil
+\gdef\ajMaruYobi#1{\ifnum#1<8 \shift@CID{#1}{10470}%
+ \else\ifnum#1=8 \CID{10492}%
+ \else\ifnum#1=9 \CID{10487}%
+ \fi\fi\fi}
+%
+\gdef\ajTsumekakko#1{\aj@expand\@ajTsumekakko#1\@nil}
+\global\let\ajTumekakko\ajTsumekakko
+\gdef\@ajTsumekakko#1#2{\ifx\@nil#2\mbox{\ifydir\rlap{\CID{10233}}\shift@CID{#1}{9872}%
+ \else\CID{13268}\shift@CID{#1}{10185}\CID{13269}\fi}%
+ \expandafter\@gobble
+ \else\shift@CID{#1}{\ifydir10152\else10174\fi}%
+ \expandafter\aj@Tsumekakko
+ \fi#2}
+\gdef\aj@Tsumekakko#1#2{\ifx\@nil#2\shift@CID{#1}{\ifydir10162\else10196\fi}%
+ \expandafter\@gobble
+ \else\shift@CID{#1}{\ifydir247\else10185\fi}%
+ \expandafter\aj@Tsumekakko
+ \fi#2}
+\gdef\ajNenrei#1{\ifcase#1\relax\expandafter\ajTsumekakko\or\expandafter\aj@NenreiTu
+ \or\expandafter\aj@NenreiSai\or\expandafter\aj@Nenrei@Tu
+ \or\expandafter\aj@Nenrei@Sai
+ \fi}
+\gdef\aj@NenreiTu#1{\aj@expand\@aj@NenreiTu#1\@nil}
+\gdef\@aj@NenreiTu#1#2{\shift@CID{#1}{\ifydir10152\else10174\fi}%
+ \ifx\@nil#2\CID{\ifydir10172\else10206\fi}\expandafter\@gobble
+ \else\expandafter\aj@Tsumekakko
+ \fi#2}
+\gdef\aj@NenreiSai#1{\aj@expand\@aj@NenreiSai#1\@nil}
+\gdef\@aj@NenreiSai#1{\shift@CID{#1}{\ifydir10152\else10174\fi}\@aj@NenreiSai@}
+\gdef\@aj@NenreiSai@#1{\ifx\@nil#1\CID{\ifydir10173\else10207\fi}%
+ \else\shift@CID{#1}{\ifydir247\else10185\fi}%
+ \expandafter\@aj@NenreiSai@\fi}
+\gdef\aj@Nenrei@Tu#1{\ifnum#1<10 \shift@CID{#1}{10174}\CID{10206}%
+ \else\expandafter\@aj@Nenrei@Tu\number#1%
+ \fi}
+\gdef\@aj@Nenrei@Tu#1#2{\ifnum#2=\z@ \shift@CID{#1}{10174}\CID{10196}%
+ \else\ifnum#1<\tw@ \CID{10184}%
+ \else\shift@CID{#1}{10174}\CID{10195}%
+ \fi
+ \shift@CID{#2}{10196}%
+ \fi}
+\gdef\aj@Nenrei@Sai#1{\ifnum#1<10 \shift@CID{#1}{10174}%
+ \else\expandafter\@aj@Nenrei@Sai\number#1%
+ \fi\CID{10207}}
+\gdef\@aj@Nenrei@Sai#1#2{\ifnum#1<\tw@ \CID{10184}%
+ \else\shift@CID{#1}{10174}\CID{10195}%
+ \fi
+ \ifnum#2>\z@ \shift@CID{#2}{10185}%
+ \fi}
+\gdef\ajnenrei#1#2{\hskip\kanjiskip\hbox{\tate\ifnum#2<10
+ \shift@CID{#2}{10207}\CID{\ifcase#1\or10230\or10232\or10231\or10229\fi}%
+ \else\ifnum#2=10\CID{\ifodd#1 10208\else10217\fi}%
+ \CID{\ifcase#1\or10218\or10232\or10218\or10229\fi}%
+ \else\ifnum#2<20\CID{\ifodd#1 10208\else10217\fi}\shift@CID{#2}{10208}%
+ \else\expandafter\aj@nenrei\number#2{#1}%
+ \fi\fi\fi}}
+\gdef\aj@nenrei#1#2#3{\shift@CID{#1}{10207}%
+ \ifcase#2 \CID{\ifodd#3 10218\else10228\fi}%
+ \else\shift@CID{#2}{10218}%
+ \fi}
+\gdef\ajKosu{\ajnenrei4}
+%
+\gdef\ajLabel#1#2#{\ifx\\#2\\\aj@Label#1\else\@aj@Label#1#2\fi}
+\gdef\aj@Label#1\else#2\fi#3{\fi
+ \expandafter\protect
+ \expandafter#1%
+ \expandafter{\number\csname c@#3\endcsname}}
+\gdef\@aj@Label#1#2\fi#3{\fi
+ \expandafter\protect
+ \expandafter#1%
+ \expandafter#2%
+ \expandafter{\number\csname c@#3\endcsname}}
+%
+%
+\gdef\ajFrac{\@ifstar{\@aj@Frac}{\aj@Frac}}
+\gdef\@ajFrac#1#2{\ifcase#2\or
+ \or\ifcase#1\or9826\fi
+ \or\ifcase#1+9825\or9827\or9828\fi
+ \or\ifcase#1\or9829\or9826\or9830\fi
+ \or\ifcase#1\or9831\or9832\or9833\or9834\fi
+ \or\ifcase#1\or9835\or9827\or9826\or9828\or9836\fi
+ \or\ifcase#1\or9837\or9838\or9839\or9840\or9841\or9842\fi
+ \or\ifcase#1\or9843\or9829\or9844\or9826\or9845\or9830\or9846\fi
+ \or\ifcase#1\or9847\or9848\or9827\or9849\or9850\or9828\or9851\or9852\fi
+ \or\ifcase#1\or9853\or9831\or9854\or9832\or9826\or9833\or9855\or9834\or9856\fi
+ \or\ifcase#1\or9857\or9858\or9859\or9860\or9861\or9862\or9863\or9864\or9865\or9866\fi
+ \or\ifcase#1\or9867\or9835\or9829\or9827\or9868\or9826\or9869\or9828\or9830\or9836
+ \or9870\fi
+ \else\ifnum#2=100 \ifnum#1=1 9871\fi\fi
+ \fi}
+\gdef\@aj@Frac#1#2{\CID{\@ajFrac{#1}{#2}}}
+\gdef\aj@Frac#1#2{{\@tempcnta\@ajFrac{#1}{#2}%
+ \advance\@tempcnta-9825
+ \advance\@tempcnta\ifcase\@tempcnta9780\or8183\or9779\or9779\or8181\else9778\fi\relax
+ \CID{\@tempcnta}}}
+%1/4 161 8880 9604 13120
+%1/2 162 8881 9605 13121
+%3/4 163 8882 9606 13122
+%1/8 9371 12887 9691 13207
+%3/8 9372 12888 9692 13208
+%5/8 9373 12889 9693 13209
+%7/8 9374 12890 9694 13210
+%1/3 9375 12891 9695 13211
+%2/3 9376 12892 9696 13212
+%
+%
+\def\@aj$BH>3Q(Bdef#1{\ifx\@nil#1\else
+ \expandafter\xdef\csname aj$BH>3Q(B@#1\endcsname{\noexpand\CID
+ {\noexpand\ifydir\number\@tempcnta\noexpand\else\number\@tempcntb\noexpand\fi}}%
+ \advance\@tempcnta\@ne\advance\@tempcntb\@ne
+ \expandafter\@aj$BH>3Q(Bdef\fi}
+\@tempcnta326
+\@tempcntb9084
+\@aj$BH>3Q(Bdef $B!!!#!V!W!"!&%r%!%#%%%'%)%c%e%g%C!<%"%$%&%(%*%+%-%/%1%3%5%7%9%;%=%?%A%D%F%H%J%K%L%M%N%O%R%U%X%[%^%_%`%a%b%d%f%h%i%j%k%l%m%o%s!+!,!.%p%q%n%u%v%t%,%.%0%2%4%6%8%:%<%>%@%B%E%G%I%P%Q%S%T%V%W%Y%Z%\%](B\@nil
+\@tempcnta516
+\@aj$BH>3Q(Bdef $B$r$!$#$%$'$)$c$e$g$C$"$$$&$($*$+$-$/$1$3$5$7$9$;$=$?$A$D$F$H$J$K$L$M$N$O$R$U$X$[$^$_$`$a$b$d$f$h$i$j$k$l$m$o$s$p$q$n$,$.$0$2$4$6$8$:$<$>$@$B$E$G$I$P$Q$S$T$V$W$Y$Z$\$](B\@nil
+\gdef\aj$BH>3Q(B#1{\aj@$BH>3Q(B#1\@nil}
+\gdef\aj@$BH>3Q(B#1{\ifx\@nil#1\else
+ \expandafter\ifx\csname aj$BH>3Q(B@#1\endcsname\relax
+ #1\else\csname aj$BH>3Q(B@#1\endcsname\fi
+ \expandafter\aj@$BH>3Q(B\fi}
+%
+%
+\def\@ajligdef#1#2{\expandafter\xdef\csname ajLig\@ajmojifam#1\endcsname{\noexpand\CID{#2}}}
+\def\@ajligaturedef#1{\ifx\@nil#1\else
+ \@ajligdef{#1}{\number\@tempcnta}\advance\@tempcnta\@ne
+ \expandafter\@ajligaturedef\fi}
+\def\@aj@ligdef#1#2#3{\expandafter\xdef\csname ajLig\@ajmojifam#1\endcsname
+ {\noexpand\CID{\noexpand\ifydir#2\noexpand\else#3\noexpand\fi}}}
+\def\@aj@ligaturedef#1{\ifx\@nil#1\else
+ \@aj@ligdef{#1}{\number\@tempcnta}{\number\@tempcntb}%
+ \advance\@tempcnta\@ne\advance\@tempcntb\@ne
+ \expandafter\@aj@ligaturedef\fi}
+%
+\let\@ajmojifam\@empty
+\@tempcnta12111
+\@ajligaturedef{!!}{!?}{!*}{!!*}{!?*}\@nil
+\@ajligdef{?!}{16279}
+\@ajligdef{??}{16278}
+%
+\let\@ajmojifam\@empty
+\@tempcnta7601
+\@ajligaturedef{mm}{cm}{km}{mg}{kg}{cc}{m2}\@nil
+\@tempcnta7610
+\@ajligaturedef{No.}{K.K.}{TEL}\@nil
+\@tempcnta8020
+\@ajligaturedef{cm2}{km2}{cm3}{m3}{dl}{l}{kl}{ms}{micros}{ns}{ps}{KB}{MB}{GB}{HP}{Hz}{mb}{ml}\@nil
+\@ajligdef{KK.}{8053}
+\@ajligdef{Tel}{8055}
+\@ajligdef{in}{8182}
+\@tempcnta8186
+\@ajligaturedef{mm2}{mm3}{km3}{sec}{min}\@nil
+\@tempcnta8192
+\@ajligaturedef{cal}{kcal}{dB}\@nil
+\@tempcnta8303
+\@ajligaturedef{m}{g}{F}{TB}{FAX}{JIS}\@nil
+\@ajligdef{euro}{9779}
+\@aj@ligdef{euro*}{9354}{12870}
+\@aj@ligdef{ohm*}{9355}{12871}
+\@ajligdef{mho}{16204}
+\@aj@ligdef{mho*}{15515}{16526}
+\@aj@ligdef{No*}{20321}{20965}%AJ1-6
+\@tempcnta11846
+\@ajligaturedef{AM}{KK}{No}{PH}{PM}{PR}{tel}{tm}{VS}{a/c}{a.m.}{c/c}{c.c.}{c/o}{dl*}{hPa}{kl*}{l*}{microg}{microm}{ml*}{m/m}{n/m}{pH}{p.m.}\@nil
+\@ajligdef{JAS}{12088}
+\@tempcnta20919
+\@ajligaturedef{ppb}{ppm}{'S}{H2}{O2}{Ox}{Nx}{Q2}{Jr.}{Dr.}\@nil%AJ1-6
+%
+\let\@ajmojifam\@empty
+\@tempcnta7621
+\@tempcntb12041
+\@aj@ligaturedef{$BL@<#(B}{$BBg@5(B}{$B><OB(B}\@nil
+\@tempcnta7585
+\@tempcntb7940
+\@aj@ligaturedef{$B%_%j(B}{$B%-%m(B}{$B%;%s%A(B*}{$B%a!<%H%k(B}{$B%0%i%`(B*}{$B%H%s(B}{$B%"!<%k(B*}{$B%X%/%?!<%k(B}{$B%j%C%H%k(B}{$B%o%C%H(B*}{$B%+%m%j!<(B}{$B%I%k(B}{$B%;%s%H(B*}{$B%Q!<%;%s%H(B}{$B%_%j%P!<%k(B}{$B%Z!<%8(B*}\@nil
+\@aj@ligdef{$B%;%s%A(B}{8038}{8329}
+\@aj@ligdef{$B%-%m%a!<%H%k(B}{8039}{8330}
+\@aj@ligdef{$B%0%i%`(B}{8040}{8339}
+\@aj@ligdef{$B%-%m%0%i%`(B}{8041}{8340}
+\@aj@ligdef{$B%"!<%k(B}{8042}{8338}
+\@aj@ligdef{$B%;%s%H(B}{8043}{8348}
+\@aj@ligdef{$B%o%C%H(B}{8044}{8344}
+\@aj@ligdef{$B%[!<%s(B}{8045}{8347}
+\@aj@ligdef{$B%X%k%D(B}{8046}{8343}
+\@aj@ligdef{$B%Z!<%8(B}{8047}{8349}
+\@aj@ligdef{$B%"%Q!<%H(B}{8048}{8350}
+\@aj@ligdef{$B%S%k(B}{8049}{8358}
+\@aj@ligdef{$B%^%s%7%g%s(B}{8050}{8357}
+\@aj@ligdef{$B%3!<%](B}{8051}{8353}
+\@aj@ligdef{$B%O%$%D(B}{8052}{8356}
+\@aj@ligdef{$B3t<02q<R(B}{8054}{8324}
+\@aj@ligdef{$B%$%s%A(B}{8183}{8333}
+\@aj@ligdef{$BM-8B2q<R(B}{8321}{8325}
+\@aj@ligdef{$B:bCDK!?M(B}{8322}{8326}
+\@aj@ligdef{$BJ?@.(B}{8323}{12044}
+\@aj@ligdef{$B%U%#!<%H(B}{8327}{8334}
+\@aj@ligdef{$B%d!<%I(B}{8328}{8337}
+\@aj@ligdef{$B%$%s%A(B*}{8331}{8332}
+\@aj@ligdef{$B%d!<%I(B*}{8335}{8336}
+\@aj@ligdef{$B%X%k%D(B*}{8341}{8342}
+\@aj@ligdef{$B%[!<%s(B*}{8345}{8346}
+\@aj@ligdef{$B%3!<%](B*}{8351}{8352}
+\@aj@ligdef{$B%O%$%D(B*}{8354}{8355}
+\@aj@ligdef{$B$5$8(B}{11871}{11872}
+\@tempcnta11873
+\@tempcntb11957
+\@aj@ligaturedef{$B%"%H(B}{$B%"%k%U%!(B}{$B%"%s%Z%"(B}{$B%$%K%s%0(B}{$B%&%)%s(B}{$B%&%k%7(B}{$B%(!<%+!<(B}{$B%(%/%5(B}{$B%(%9%/!<%I(B}{$B%*!<%`(B}{$B%*%s%0%9%H%m!<%`(B}{$B%*%s%9(B}{$B%*%s%H%m(B}{$B%+%$%j(B}%
+{$B%+%C%W(B}{$B%+%i%C%H(B}{$B%,%m%s(B}{$B%,%s%^(B}{$B%.%,(B}{$B%.%K!<(B}{$B%-%e%j!<(B}{$B%.%k%@!<(B}{$B%-%m%j%C%H%k(B}{$B%-%m%o%C%H(B}{$B%0%9!<%`(B}{$B%0%i%`%H%s(B}{$B%/%k%5!<%I(B}{$B%/%k%<%$%m(B}{$B%/%m!<%M(B}%
+{$B%1!<%9(B}{$B%3%k%J(B}{$B%5%$%/%k(B}{$B%5%s%A!<%`(B}{$B%7%j%s%0(B}{$B%@!<%9(B}{$B%G%+(B}{$B%G%7(B}{$B%F%i(B}{$B%I%i%/%^(B}{$B%J%N(B}{$B%N%C%H(B}{$B%P!<%D(B}{$B%P!<%l%k(B}{$B%Q%9%+%k(B}{$B%P%l%k(B}{$B%T%"%9%H%k(B}{$B%T%/%k(B}%
+{$B%T%3(B}{$B%U%!%i%C%I(B}{$B%U%!%i%I(B}{$B%U%'%`%H(B}{$B%V%C%7%'%k(B}{$B%U%i%s(B}{$B%Y!<%?(B}{$B%X%/%H(B}{$B%X%/%H%Q%9%+%k(B}{$B%Z%;%?(B}{$B%Z%=(B}{$B%Z%?(B}{$B%Z%K%R(B}{$B%Z%s%9(B}{$B%]%$%s%H(B}{$B%[!<%k(B}{$B%\%k%H(B}{$B%[%s(B}%
+{$B%]%s%I(B}{$B%^%$%/%m(B}{$B%^%$%k(B}{$B%^%C%O(B}{$B%^%k%/(B}{$B%_%/%m%s(B}{$B%a%,(B}{$B%a%,%H%s(B}{$B%d!<%k(B}{$B%f%"%s(B}{$B%f!<%m(B}{$B%i%I(B}{$B%j%i(B}{$B%k!<%V%k(B}{$B%k%/%9(B}{$B%k%T%"(B}{$B%k%T!<(B}{$B%l%`(B}{$B%l%s%H%2%s(B}\@nil
+\@tempcnta12045
+\@tempcntb12054
+\@aj@ligaturedef{$B0eNEK!?M(B}{$B3X9;K!?M(B}{$B6&F1AH9g(B}{$B6(F1AH9g(B}{$B9g;q2q<R(B}{$B9gL>2q<R(B}{$B<RCDK!?M(B}{$B=!65K!?M(B}{$BM9JXHV9f(B}\@nil
+\expandafter\gdef\csname ajLig$B%*%s%0%9%H%m!<%`(B*\endcsname
+ {\mbox{\kern.05zw\ajLig{$B%*%s%H%m(B}\kern-.1zw\ajLig{$B%0%9!<%`(B}\kern.05zw}}
+\@tempcnta20929
+\@tempcntb20943
+\@aj@ligaturedef{$B%,%k(B}{$B%0%l%$(B}{$B%/%m!<%J(B}{$B%7!<%Y%k%H(B}{$B%7%'%1%k(B}{$B%8%e!<%k(B}{$B%G%7%Y%k(B}{$B%I%C%H(B}{$B%P%$%H(B}{$B%S%C%H(B}{$B%Y%/%l%k(B}{$B%\!<(B}{$B%i%s%I(B}{$B%j%s%.%C%H(B}\@nil%AJ1-6
+\@ajligdef{$B$h$j(B}{12181}
+\@ajligdef{$B>#(B}{16194}
+\@ajligdef{$B%3%H(B}{16195}
+\@aj@ligdef{$BNaOB(B}{23058}{23059}%AJ1-7
+%
+\def\@ajmojifam{$B!{(B}
+\@tempcnta7613
+\@ajligaturedef $B>eCf2<:81&(B\@nil
+\@ajligdef{$B")(B}{8057}
+\@tempcnta8152
+\@ajligaturedef $BLk4k0e6(L>=!O+3XM-3t<R4F;q:b(B\@nil
+\@ajligdef{$B0u(B}{8191}
+\@ajligdef{$BHk(B}{8223}
+\@tempcnta8317
+\@ajligaturedef $BBg>.M%95(B\@nil
+\@tempcnta10478
+\@ajligaturedef $BD4CmI{8:I87g4p6X9`5Y=wCK@5<L=K=PE,FC:QA}LdEzNcEE(B\@nil%
+\@ajligdef{$BG/(B}{20553}%AJ1-6
+%
+\def\@ajmojifam#1{(#1)}
+\@ajligdef{$B3t(B}{7618}
+\@ajligdef{$BM-(B}{7619}
+\@ajligdef{$BBe(B}{7620}
+\@tempcnta8138
+\@ajligaturedef $B;j4k6(L>O+<R4F<+;q:bFC3X:W8F(B\@nil
+\@ajligdef{$B=K(B}{8204}
+\@ajligdef{$B5Y(B}{8205}
+\@tempcnta10146
+\@ajligaturedef $B1D9gCmLdEzNc(B\@nil
+%
+\def\@ajmojifam{$B""(B}
+\@ajligdef{$B0u(B}{8196}
+\@ajligdef{$BIi(B}{11030}
+\@ajligdef{$B>!(B}{11031}
+\@tempcnta20497
+\@ajligaturedef{:A}{:B}{:C}{:D}{:E}{:F}{:$B=*(B}\@nil%AJ1-6
+\@tempcnta20505
+\@ajligaturedef{:CL}{:KCL}{:BEL}{:AS}{:AM}{:$BCJ(B}{:$B%4(B}{:$B%_(B}\@nil%AJ1-6
+%
+\def\@ajmojifam{$B!~(B}
+\@tempcnta20554
+\@ajligaturedef {News}$BE7:F?71G@<A08e=*N)8r(B{$B$[$+(B}$B7`;J2r3t5$FsB?J8<j(B{PV}{MV}$BAP(B{SS}{S1}{S2}{S3}$B%G(B{HV}\@nil%AJ1-6
+%
+\def\@ajmojifam{$B"&(B}
+\@ajligdef{$B")(B}{12180}
+\@ajligdef{$B"&(B}{12193}
+%
+\def\@ajmojifam{$B"$(B}
+\@ajligdef{!}{12192}
+%
+\def\@ajmojifam{$B"#(B}
+\@ajligdef{$B!~(B}{12231}
+%
+\expandafter\chardef\csname offset$B!|(B\endcsname\z@
+\expandafter\mathchardef\csname offset$B""(B\endcsname269
+\expandafter\mathchardef\csname offset$B"#(B\endcsname268
+\expandafter\mathchardef\csname offset$B!~(B\endcsname267
+\expandafter\mathchardef\csname offset$B"!(B\endcsname266
+\@tempcnta10760
+\def\@ajmojidef#1{\ifx\@nil#1%
+ \else\advance\@tempcnta\csname offset#1\endcsname
+ \def\@ajmojifam{#1}%
+ \@ajligaturedef $BLdEzNc(B\@nil
+ \expandafter\@ajmojidef\fi}
+\@ajmojidef $B!|"""#!~"!(B\@nil
+%
+\def\@ajkanadef#1#2#3#4#5#6#7{\expandafter\gdef\csname ajLig#1\endcsname
+ {\if@kana\def\reserved@a{ruby}%
+ \ifx\k@family\reserved@a
+ \ifydir\CID{#6}\else\CID{#7}\fi
+ \else\ifydir\CID{#4}\else\CID{#5}\fi
+ \fi
+ \else\ifydir\CID{#2}\else\CID{#3}\fi
+ \fi}}
+\newcount\@tempcntc
+\newcount\@tempcntd
+\newcount\@tempcnte
+\newcount\@tempcntf
+\def\@aj@kanadef#1{\ifx\@nil#1%
+ \else\edef\reserved@b{\noexpand\@ajkanadef{#1}%
+ {\number\@tempcnta}{\number\@tempcntb}{\number\@tempcntc}%
+ {\number\@tempcntd}{\number\@tempcnte}{\number\@tempcntf}}\reserved@b
+ \advance\@tempcnta\@ne\advance\@tempcntb\@ne\advance\@tempcntc\@ne
+ \advance\@tempcntd\@ne\advance\@tempcnte\@ne\advance\@tempcntf\@ne
+ \expandafter\@aj@kanadef\fi}
+\@ajkanadef{$B$&!+(B}{7958}{7958}{12361}{12544}{12756}{12756}
+\@tempcnta8313
+\@tempcntb8313
+\@tempcntc12452
+\@tempcntd12635
+\@tempcnte16444
+\@tempcntf16444
+\@aj@kanadef{$B%o!+(B}{$B%p!+(B}{$B%q!+(B}{$B%r!+(B}\@nil
+\@tempcnta16209
+\@tempcntb16209
+\@tempcntc16352
+\@tempcntd16382
+\@tempcnte16414
+\@tempcntf16414
+\@aj@kanadef{$B$+!,(B}{$B$-!,(B}{$B$/!,(B}{$B$1!,(B}{$B$3!,(B}{$B%+!,(B}{$B%-!,(B}{$B%/!,(B}{$B%1!,(B}{$B%3!,(B}{$B%;!,(B}{$B%D!,(B}{$B%H!,(B}\@nil
+\@ajkanadef{$B>.$+(B}{7959}{8264}{12285}{12468}{12682}{12762}
+\@ajkanadef{$B>.$1(B}{7960}{8265}{12292}{12475}{12689}{12763}
+\@ajkanadef{$B>.$3(B}{12269}{12270}{12295}{12478}{16448}{16467}
+\@ajkanadef{$B>.%3(B}{12271}{12272}{12385}{12568}{16449}{16468}
+\@tempcnta16236
+\@tempcntb16333
+\@tempcntc16365
+\@tempcntd16395
+\@tempcnte16427
+\@tempcntf16450
+\@aj@kanadef{$B>.%/(B}{$B>.%7(B}{$B>.%9(B}{$B>.%H(B}{$B>.%L(B}{$B>.%O(B}{$B>.%R(B}{$B>.%U(B}{$B>.%X(B}{$B>.%[(B}{$B>.%W(B}{$B>.%`(B}{$B>.%i(B}{$B>.%j(B}{$B>.%k(B}{$B>.%l(B}{$B>.%m(B}\@nil
+%
+\def\@aj@numberdef#1#2{\ifx\@nil#2\expandafter\@gobble
+ \else\expandafter\xdef\csname ajnumber#2\endcsname{{#1}{\number\@tempcnta}}%
+ \advance\@tempcnta\@ne
+ \expandafter\@aj@numberdef\fi{#1}}
+\@tempcnta\@ne
+\@aj@numberdef{alph}abcdefghijklmnopqrstuvwxyz\@nil
+\@tempcnta\@ne
+\@aj@numberdef{Alph}ABCDEFGHIJKLMNOPQRSTUVWXYZ\@nil
+\@tempcnta\@ne
+\@aj@numberdef{Hira}$B$"$$$&$($*$+$-$/$1$3$5$7$9$;$=$?$A$D$F$H$J$K$L$M$N$O$R$U$X$[$^$_$`$a$b$d$f$h$i$j$k$l$m$o$p$q$r$s(B\@nil
+\@tempcnta\@ne
+\@aj@numberdef{Kata}$B%"%$%&%(%*%+%-%/%1%3%5%7%9%;%=%?%A%D%F%H%J%K%L%M%N%O%R%U%X%[%^%_%`%a%b%d%f%h%i%j%k%l%m%o%p%q%r%s(B\@nil
+\@tempcnta\@ne
+\@aj@numberdef{Yobi}$BF|7n2P?eLZ6bEZ=K5Y(B\@nil
+\gdef\@ajnumber#1{\expandafter\expandafter\expandafter\aj@number\csname ajnumber#1\endcsname}
+\gdef\aj@number#1{\ifx\relax#1\expandafter\@gobbletwo\else\expandafter\@aj@number\fi{#1}}
+\gdef\@aj@number#1#2#3{\csname aj#3#1\endcsname{#2}}
+%
+\def\@aj@kakomidef#1#2{\expandafter\gdef\csname#1\endcsname##1%
+ {\expandafter\ifx\csname ajLig#1##1\endcsname\relax\@ajnumber{##1}{#2}%
+ \else\csname ajLig#1##1\endcsname\fi}}
+\@aj@kakomidef{$B!{(B}{Maru}
+\@aj@kakomidef{$B!|(B}{KuroMaru}
+\@aj@kakomidef{$B""(B}{Kaku}
+\@aj@kakomidef{$B"#(B}{KuroKaku}
+\@aj@kakomidef{$B!~(B}{MaruKaku}
+\@aj@kakomidef{$B"!(B}{KuroMaruKaku}
+\gdef\$B"$(B#1{\csname ajLig$B"$(B#1\endcsname}
+\gdef\$B"&(B#1{\csname ajLig$B"&(B#1\endcsname}
+\gdef\$B!J(B#1$B!K(B{\expandafter\ifx\csname ajLig(#1)\endcsname\relax\@ajnumber{#1}{Kakko}%
+ \else\csname ajLig(#1)\endcsname\fi}
+\gdef\$B!+(B#1{\csname ajLig#1$B!+(B\endcsname}
+\gdef\$B!,(B#1{\csname ajLig#1$B!,(B\endcsname}
+\gdef\$B!*(B#1{\csname ajLig$B>.(B#1\endcsname}
+\gdef\ajLig#1{\csname ajLig#1\endcsname}
+%
+%
+\def\@ajPICTdef#1#2{\expandafter\xdef\csname ajPICT#1\endcsname{\noexpand\CID{#2}}}
+\def\@aj@PICTdef#1{\ifx\@nil#1\else
+ \@ajPICTdef{#1}{\number\@tempcnta}\advance\@tempcnta\@ne
+ \expandafter\@aj@PICTdef\fi}
+\@tempcnta8016
+\@aj@PICTdef{Club}{Heart}{Spade}{Diamond}\@nil
+\@ajPICTdef{$BEEOC(B}{8056}
+\@ajPICTdef{$B")(B}{8058}
+\@tempcnta8211
+\@aj@PICTdef{Spade*}{Heart*}{Club*}{Diamond*}\@nil
+\@tempcnta8215
+\@aj@PICTdef $B@2F^1+@c"*"+","-(B\@nil
+\@ajPICTdef{$BLn5e(B}{12097}
+\@ajPICTdef{$BEr(B}{12098}
+\@ajPICTdef{$B2V(B}{12228}
+\@ajPICTdef{$B2V(B*}{12229}
+\@ajPICTdef{$B%5%C%+!<(B}{20957}%AJ1-6
+\gdef\ajPICT#1{\csname ajPICT#1\endcsname}
+\global\let\$B"((B\ajPICT
+%
+%
+\def\@ajArrowdef#1#2{\expandafter\xdef\csname ajArrow#1\endcsname{\noexpand\CID{#2}}}
+\def\@aj@Arrowdef#1{\ifx\@nil#1\else
+ \@ajArrowdef{#1}{\number\@tempcnta}\advance\@tempcnta\@ne
+ \expandafter\@aj@Arrowdef\fi}
+\@tempcnta8009
+\@aj@Arrowdef{LeftTriangle}{RightTriangle}{DOWN}{UP}{LEFT}{RIGHT}\@nil
+\@tempcnta8206
+\@aj@Arrowdef{RIGHT*}{LEFT*}{UP*}{DOWN*}\@nil
+\@tempcnta8219
+\@aj@Arrowdef{RightHand}{LeftHand}{UpHand}{DownHand}\@nil
+\@tempcnta8309
+\@aj@Arrowdef{Left/Right}{Right/Left}{Up/Down}{Down/Up}\@nil
+\@tempcnta12175
+\@aj@Arrowdef{LeftScissors}{RightScissors}{UpScissors}{DownScissors}\@nil
+\@tempcnta12194
+\@aj@Arrowdef
+{LeftTriangle*}{RightTriangle*}{Left}{Right}{Up}{Down}{LeftDouble}{LeftRight*}{RightDown}{LeftDown}{LeftUp}{RightUp}%
+{Right/Left*}{Left/Right*}{Right/Left+}{Down/Up+}{Left+}{Right+}{Up+}{Down+}{LeftRight+}{UpDown+}\@nil
+\@tempcnta12261
+\@aj@Arrowdef
+{LeftAngle}{RightAngle}{UpAngle}{DownAngle}{LeftAngle*}{RightAngle*}{UpAngle*}{DownAngle*}\@nil
+\@ajArrowdef{RightDouble}{15482}%752 16493
+\@ajArrowdef{LeftRightDouble}{15483}%753 16494
+%\@ajArrowdef{LeftRight}{15511}%12201 16522
+\@ajArrowdef{RightUp*}{16201}
+\@ajArrowdef{RightDown*}{16202}
+%\@ajArrowdef{DOWNLEFT*}{16273}
+\gdef\ajArrow#1{\csname ajArrow#1\endcsname}
+%
+%
+\def\@aj@kuntendef#1{\ifx\@nil#1%
+ \else\expandafter\xdef\csname aj$B71E@(B#1\endcsname
+ {\noexpand\CID{\number\@tempcnta}}%
+ \advance\@tempcnta\@ne
+ \expandafter\@aj@kuntendef
+ \fi}
+\@tempcnta16283
+\@aj@kuntendef $B!C%l0lFs;0;M>eCf2<9C25J:CzE7CO?M(B\@nil
+\gdef\aj@smallReten{{\@tempdimb\f@size pt\@tempskipa\f@baselineskip
+ \@tempdimb.94\@tempdimb
+ \@tempskipa.94\@tempskipa
+ \fontsize{\@tempdimb}{\@tempskipa}\selectfont\aj$B71E@%l(B}}
+\gdef\aj$B71E@0l%l(B{\mbox{\tate\kern-.24zw\aj$B71E@0l(B\kern-.65zw\raise.15zw\hbox{\aj@smallReten}}}
+\gdef\aj$B71E@>e%l(B{\mbox{\tate\aj$B71E@>e(B\kern-.3zw\raise.15zw\hbox{\aj@smallReten}}}
+\gdef\aj$B71E@9C%l(B{\mbox{\tate\aj$B71E@9C(B\kern-.25zw\raise.15zw\hbox{\aj@smallReten}}}
+\gdef\aj$B71E@E7%l(B{\mbox{\tate\aj$B71E@E7(B\kern-.4zw\raise.1zw\hbox{\aj@smallReten}}}
+\def\@ajongofudef#1{\ifx\@nil#1%
+ \else\expandafter\xdef\csname aj$B71E@(B#1$B!C(B\endcsname
+ {\noexpand\mbox{\yoko\expandafter\noexpand\csname aj$B71E@(B#1\endcsname
+ \hbox to\z@{\hss\expandafter\noexpand\csname aj$B71E@!C(B\endcsname\kern-.5zw}}}%
+ \expandafter\@ajongofudef\fi}
+\@ajongofudef $BFs;0;MCf2<25J:CzCO?M(B\@nil
+\expandafter\gdef\csname aj$B71E@!!!C(B\endcsname{\mbox{\yoko{$B!!(B}\hbox to\z@{\hss\csname aj$B71E@!C(B\endcsname\kern-.5zw}}}
+\def\@ajkungofudef#1{\ifx\@nil#1%
+ \else\expandafter\xdef\csname aj$B71E@!C(B#1\endcsname
+ {\noexpand\mbox{\yoko\hbox to\z@{\hss\expandafter\noexpand\csname aj$B71E@!C(B\endcsname\kern-.5zw}%
+ \expandafter\noexpand\csname aj$B71E@(B#1\endcsname}}%
+ \expandafter\@ajkungofudef\fi}
+\@ajkungofudef $BFs;0;MCf2<25J:CzCO?M(B\@nil
+\expandafter\gdef\csname aj$B71E@!C!!(B\endcsname{\mbox{\yoko\hbox to\z@{\hss\csname aj$B71E@!C(B\endcsname\kern-.5zw}{$B!!(B}}}
+%
+\gdef\ajKunten#1{\csname aj$B71E@(B#1\endcsname}
+%
+\gdef\ajRedefine@KundokuMacros{\ifx\kokana\@undefined
+ \else\let\orig@kokana\kokana
+ \let\orig@retenform\retenform
+ \let\orig@reten\reten
+ \let\orig@retenkana\retenkana
+ \let\orig@kaeriten\kaeriten
+ \def\aj@kokana##1##2{\orig@kokana{\aj@kundokusize\if@kana\rubyfamily\fi##1}%
+ {\aj@kundokusize\ajKunten{##2}}}%
+ \def\aj@retenform{\aj@kundokusize\aj$B71E@%l(B}%
+ \def\aj@reten{\orig@kaeriten{\aj@kundokusize\aj$B71E@%l(B}}%
+ \def\aj@retenkana##1{\orig@retenkana{\aj@kundokusize\if@kana\rubyfamily\fi##1}}%
+ \def\aj@kaeriten##1{\orig@kaeriten{\aj@kundokusize\ajKunten{##1}}}%
+ \let\aj@kundokusize\tiny
+ \fi
+ \ifx\@k@nd@ku@\@undefined
+ \else{\global\let\orig@k@nd@ku@\@k@nd@ku@
+ \newtoks\@temptokenb
+ \newtoks\@temptokenc
+ \def\get@hbox##1\hbox##2##3\get@hbox
+ {\@temptokena{##1}\@temptokenb{##2}\@temptokenc{##3}}%
+ \expandafter\get@hbox
+ \@k@nd@ku@[##1]{##2}{##3}{##4}{\ajKunten{##5}}[\ajKunten{##6}]<##7>(##8)\get@hbox
+ \def\change@reten##1\def\temptopleft##2\def\tempbottomleft##3##4\change@reten
+ {\@temptokenb{##1\def\temptopleft{####6}\def\tempbottomleft{####5}##4}}%
+ \expandafter\change@reten\the\@temptokenb\change@reten
+ \edef\redefine@k@nd@ku@##1{\gdef\noexpand\aj@k@nd@ku@##1%
+ {\the\@temptokena\hbox{\the\@temptokenb}\the\@temptokenc}}%
+ \redefine@k@nd@ku@{[##1]##2##3##4##5[##6]<##7>(##8)}}%
+ \let\aj@kundokusize\kundokusize
+ \fi}
+\@onlypreamble\ajRedefine@KundokuMacros
+\AtBeginDocument{\ajRedefine@KundokuMacros}
+\gdef\DeclareOriginalKundokuStyle{\@ifnextchar[%]
+ {\Declare@OriginalKundokuStyle}%
+ {\Declare@OriginalKundokuStyle[\aj@kundokusize]}}
+\gdef\Declare@OriginalKundokuStyle[#1]{\let\aj@kundokusize#1%
+ \ifx\orig@k@nd@ku@\@undefined
+ \else\let\@k@nd@ku@\orig@k@nd@ku@
+ \let\kundokusize\aj@kundokusize
+ \fi
+ \ifx\orig@kokana\@undefined
+ \else
+ \let\kokana\orig@kokana
+ \let\retenform\orig@retenform
+ \let\reten\orig@reten
+ \let\retenkana\orig@retenkana
+ \let\kaeriten\orig@kaeriten
+ \fi}
+\gdef\DeclareAJKundokuStyle{\@ifnextchar[%]
+ {\Declare@AJKundokuStyle}%
+ {\Declare@AJKundokuStyle[\aj@kundokusize]}}
+\gdef\Declare@AJKundokuStyle[#1]{\let\aj@kundokusize#1%
+ \ifx\aj@k@nd@ku@\@undefined
+ \else\let\@k@nd@ku@\aj@k@nd@ku@
+ \def\kundokusize{\aj@kundokusize\if@kana\rubyfamily\fi}%
+ \fi
+ \ifx\aj@kokana\@undefined
+ \else
+ \let\kokana\aj@kokana
+ \let\retenform\aj@retenform
+ \let\reten\aj@reten
+ \let\retenkana\aj@retenkana
+ \let\kaeriten\aj@kaeriten
+ \fi}
+%
+%
+\gdef\ajCIDVarDef{\aj@VarDef\CID}
+\gdef\ajUTFVarDef{\aj@VarDef\UTF}
+\gdef\aj@VarDef#1#2#3{\expandafter\xdef\csname ajVar#2\endcsname{\noexpand#1{#3}}}
+\gdef\ajCIDVarList#1{{\@ajCIDVarList#1\relax}}
+\gdef\@ajCIDVarList#1{\ifx\relax#1\else\def\reserved@a{#1}\expandafter\aj@CIDVarList\fi}
+\gdef\aj@CIDVarList{\afterassignment\@aj@CIDVarList\@tempcnta}
+\gdef\@aj@CIDVarList{\aj@VarDef\CID\reserved@a{\number\@tempcnta}\@ajCIDVarList}
+\gdef\ajUTFVarList#1{{\@ajUTFVarList#1 \relax}}
+\gdef\@ajUTFVarList#1{\ifx\relax#1\else\def\reserved@a{#1}\expandafter\aj@UTFVarList\fi}
+\gdef\aj@UTFVarList#1#2{\ifx=#1\expandafter\@aj@UTFVarList\else\expandafter\@aj@UTFVarList\expandafter#1\fi#2}
+\gdef\@aj@UTFVarList#1 {\aj@VarDef\UTF\reserved@a{#1}\@ajUTFVarList}
+\gdef\ajVar#1{\csname ajVar#1\endcsname}
+\@onlypreamble\ajCIDVarDef
+\@onlypreamble\ajUTFVarDef
+\@onlypreamble\ajCIDVarList
+\@onlypreamble\ajUTFVarList
+%\ajCIDVarList{$B5H(B=13706 $B65(B=8471 $B9b(B=8705 $B2*(B=7646 $B:j(B=14290 $B:l(B=17009 $BBh(B=13910 $B3Q(B=13682 $BIM(B=8531}
+\gdef\ajHashigoTaka{\CID{8705}}
+\gdef\ajTsuchiYoshi{\CID{13706}}
+\gdef\ajTatsuSaki{\CID{14290}}
+\gdef\ajMayuHama{\CID{8531}}
+%
+%
+%\gdef\ajRedefine@ajVar{\@ifpackageloaded{hyperref}{%
+% \let\aj@Var\ajVar
+% \def\ajVar##1{\ifHy@pdfstring
+% \expandafter\expandafter
+% \expandafter\check@UTF\csname ajVar##1\endcsname{##1}%
+% \else\aj@Var{##1}\fi}
+% \def\check@UTF##1##2##3{\ifx\UTF##1\0x##2\else##3\fi}}{}}
+\gdef\ajRedefine@ajCommands{\@ifpackageloaded{hyperref}{%
+ \let\hyperref@ajLabel\ajLabel
+ \def\ajLabel##1##{\ifHy@pdfstring\Hy@ReturnAfterElseFi\hyperref@ajLabel\@arabic\else\Hy@ReturnAfterFi\hyperref@ajLabel##1\fi}%
+ \ajRedefine@ajCommand\$B"$(B{Lig$B"$(B}\$B"&(B{Lig$B"&(B}\$B!*(B{Lig$B>.(B}\ajLig{Lig}\ajPICT{PICT}\$B"((B{PICT}\ajVar{Var}\@nil\@nil
+ \aj@Redefine@ajCommand$B!{(B{Maru}$B!|(B{KuroMaru}$B""(B{Kaku}$B"#(B{KuroKaku}$B!~(B{MaruKaku}$B"!(B{KuroMaruKaku}\@nil\@nil
+ \def\$B!J(B##1$B!K(B{\ifHy@pdfstring(##1)\else\expandafter\ifx\csname ajLig(##1)\endcsname\relax\@ajnumber{##1}{Kakko}%
+ \else\csname ajLig(##1)\endcsname\fi\fi}%
+ \def\$B!+(B##1{\ifHy@pdfstring##1$B!+(B\else\csname ajLig##1$B!+(B\endcsname\fi}%
+ \def\$B!,(B##1{\ifHy@pdfstring##1$B!,(B\else\csname ajLig##1$B!,(B\endcsname\fi}%
+ }{}}
+\gdef\ajRedefine@ajCommand#1#2{\ifx\@nil#1\else\def#1##1{\ifHy@pdfstring##1\else\csname aj#2##1\endcsname\fi}%
+ \expandafter\ajRedefine@ajCommand\fi}
+\gdef\aj@Redefine@ajCommand#1#2{\ifx\@nil#1\else\expandafter\def\csname#1\endcsname##1%
+ {\ifHy@pdfstring##1\else\expandafter\ifx\csname ajLig#1##1\endcsname\relax\@ajnumber{##1}{#2}\else
+ \csname ajLig#1##1\endcsname\fi\fi}%
+ \expandafter\aj@Redefine@ajCommand\fi}
+\AtBeginDocument{\ajRedefine@ajCommands}
+%
+%
+\gdef\ajLeader{\@ifnextchar[{\aj@Leader}{\aj@Leader[\z@ plus1fill]}}
+\gdef\aj@Leader[#1]#2{{\@tempcnta#2\multiply\@tempcnta\tw@
+ \advance\@tempcnta1221\ifhmode\ifydir4\else5\fi\else\ifydir5\else4\fi\fi
+ \leaders\hbox{\CID{\@tempcnta}}\ifhmode\hskip\else\vskip\fi#1}}
+%
+%
+\toks0{}\toks1{}\toks2{}\toks3{}
+\def\ajQuotedef#1 #2 #3 #4 {\ifx*#1\else
+ \toks0\expandafter{\the\toks0 \or#1}%
+ \toks1\expandafter{\the\toks1 \or#2}%
+ \toks2\expandafter{\the\toks2 \or#3}%
+ \toks3\expandafter{\the\toks3 \or#4}%
+ \expandafter\ajQuotedef\fi}
+\ajQuotedef
+670 671 12173 12174
+672 673 7956 7957
+674 675 7899 7900
+676 677 7901 7902
+678 679 7903 7904
+680 681 7905 7906
+682 683 7907 7908
+684 685 7909 7910
+686 687 7911 7912
+688 689 7913 7914
+690 691 7915 7916
+7608 7609 7956 7957
+12125 12126 12135 12136
+12127 12128 12137 12138
+12129 12130 12139 12140
+12131 12132 12141 12142
+12171 12172 12173 12174
+16197 16198 16329 16330
+* * * *
+\xdef\ajQuote#1#2{\noexpand\CID{\noexpand\ifydir\noexpand\ifcase#1\the\toks0
+ \noexpand\fi\noexpand\else\noexpand\ifcase#1\the\toks2
+ \noexpand\fi\noexpand\fi}#2\inhibitglue\noexpand\CID{\noexpand\ifydir\noexpand\ifcase#1\the\toks1
+ \noexpand\fi\noexpand\else\noexpand\ifcase#1\the\toks3
+ \noexpand\fi\noexpand\fi}}
+}
+\endinput
diff --git a/language/japanese/japanese-otf/sty/mlcid.sty b/language/japanese/japanese-otf/sty/mlcid.sty
new file mode 100644
index 0000000000..4964b82d1a
--- /dev/null
+++ b/language/japanese/japanese-otf/sty/mlcid.sty
@@ -0,0 +1,35 @@
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{mlcid}[2004/04/17 v1.0.2 psitau]
+%force catcode of \" be 12
+\count@\catcode`\"
+\catcode`\"=12
+\DeclareRobustCommand{\CIDK}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{cidk}\set@character=#1%
+ \endgroup%
+}
+\DeclareRobustCommand{\CIDC}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{cidc}\set@character=#1%
+ \endgroup%
+}
+\DeclareRobustCommand{\CIDT}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{cidt}\set@character=#1%
+ \endgroup%
+}
+\catcode`\"=\count@
+%end of changing catcode of \"
+\DeclareKanjiFamily{\otf@JYn}{cidk}{}
+\DeclareKanjiFamily{\otf@JTn}{cidk}{}
+\Declare@FontShape{cidk}{m}{01234}{cidkmr}
+\Declare@FontShape{cidk}{bx}{01234}{cidkgr}
+\DeclareKanjiFamily{\otf@JYn}{cidc}{}
+\DeclareKanjiFamily{\otf@JTn}{cidc}{}
+\Declare@FontShape{cidc}{m}{01234567}{cidcmr}
+\Declare@FontShape{cidc}{bx}{01234567}{cidcgr}
+\DeclareKanjiFamily{\otf@JYn}{cidt}{}
+\DeclareKanjiFamily{\otf@JTn}{cidt}{}
+\Declare@FontShape{cidt}{m}{01234}{cidtmr}
+\Declare@FontShape{cidt}{bx}{01234}{cidtgr}
+\endinput
diff --git a/language/japanese/japanese-otf/sty/mlutf.sty b/language/japanese/japanese-otf/sty/mlutf.sty
new file mode 100644
index 0000000000..70077cb89f
--- /dev/null
+++ b/language/japanese/japanese-otf/sty/mlutf.sty
@@ -0,0 +1,58 @@
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{mlutf}[2004/04/17 v1.1.2 psitau]
+%force catcode of \" be 12
+\count@\catcode`\"
+\catcode`\"=12
+\DeclareRobustCommand{\UTFK}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{utfk}\uppercase{\set@character="#1}%
+ \endgroup%
+}
+\DeclareRobustCommand{\UTFC}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{utfc}\uppercase{\set@character="#1}%
+ \endgroup%
+}
+\DeclareRobustCommand{\UTFT}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{utft}\uppercase{\set@character="#1}%
+ \endgroup%
+}
+\DeclareRobustCommand{\UTFM}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{utf}\uppercase{\set@character="#1}%
+ \endgroup%
+}
+\catcode`\"=\count@
+%end of changing catcode of \"
+\gdef\Redefine@MLUTF{%
+ \@ifpackageloaded{hyperref}{%
+ \def\hyper@UTFC##1{\ifHy@pdfstring\0x##1\else\csname UTFC \endcsname{##1}\fi}
+ \def\hyper@UTFK##1{\ifHy@pdfstring\0x##1\else\csname UTFK \endcsname{##1}\fi}
+ \def\hyper@UTFT##1{\ifHy@pdfstring\0x##1\else\csname UTFT \endcsname{##1}\fi}
+ \def\hyper@UTFM##1{\ifHy@pdfstring\0x##1\else\csname UTFM \endcsname{##1}\fi}
+ \def\UTFC{\protect\hyper@UTFC}
+ \def\UTFK{\protect\hyper@UTFK}
+ \def\UTFT{\protect\hyper@UTFT}
+ \def\UTFM{\protect\hyper@UTFM}
+ }{}
+}
+\AtBeginDocument{\Redefine@MLUTF}
+
+\DeclareKanjiFamily{\otf@JYn}{utfk}{}
+\DeclareKanjiFamily{\otf@JTn}{utfk}{}
+\Declare@FontShape{utfk}{m}{0123456789abcdef}{utfkmr}
+\Declare@FontShape{utfk}{bx}{0123456789abcdef}{utfkgr}
+\DeclareKanjiFamily{\otf@JYn}{utfc}{}
+\DeclareKanjiFamily{\otf@JTn}{utfc}{}
+\Declare@FontShape{utfc}{m}{0123456789abcdef}{utfcmr}
+\Declare@FontShape{utfc}{bx}{0123456789abcdef}{utfcgr}
+\DeclareKanjiFamily{\otf@JYn}{utft}{}
+\DeclareKanjiFamily{\otf@JTn}{utft}{}
+\Declare@FontShape{utft}{m}{0123456789abcdef}{utftmr}
+\Declare@FontShape{utft}{bx}{0123456789abcdef}{utftgr}
+\DeclareKanjiFamily{\otf@JYn}{utf}{}
+\DeclareKanjiFamily{\otf@JTn}{utf}{}
+\Declare@FontShape{utf}{m}{0123456789abcdef}{utfmr}
+\Declare@FontShape{utf}{bx}{0123456789abcdef}{utfgr}
+\endinput
diff --git a/language/japanese/japanese-otf/sty/otf-hangul.dfu b/language/japanese/japanese-otf/sty/otf-hangul.dfu
new file mode 100644
index 0000000000..1aee04b95e
--- /dev/null
+++ b/language/japanese/japanese-otf/sty/otf-hangul.dfu
@@ -0,0 +1,11555 @@
+%% otf-hangul.rb and otf-hangul.dfu
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is KUROKI Yusuke.
+%
+% This work consists of the files otf-hangul.rb
+% and the derived file otf-hangul.dfu.
+
+ \ProvidesFile{otf-hangul.dfu}
+ [2010/06/20 v0.02 Hangul symbol, UTF-8 support for inputenc & UTF/OTF packages]
+\DeclareUnicodeCharacter{1100}{\UTFK{1100}}%
+\DeclareUnicodeCharacter{1101}{\UTFK{1101}}%
+\DeclareUnicodeCharacter{1102}{\UTFK{1102}}%
+\DeclareUnicodeCharacter{1103}{\UTFK{1103}}%
+\DeclareUnicodeCharacter{1104}{\UTFK{1104}}%
+\DeclareUnicodeCharacter{1105}{\UTFK{1105}}%
+\DeclareUnicodeCharacter{1106}{\UTFK{1106}}%
+\DeclareUnicodeCharacter{1107}{\UTFK{1107}}%
+\DeclareUnicodeCharacter{1108}{\UTFK{1108}}%
+\DeclareUnicodeCharacter{1109}{\UTFK{1109}}%
+\DeclareUnicodeCharacter{110A}{\UTFK{110A}}%
+\DeclareUnicodeCharacter{110B}{\UTFK{110B}}%
+\DeclareUnicodeCharacter{110C}{\UTFK{110C}}%
+\DeclareUnicodeCharacter{110D}{\UTFK{110D}}%
+\DeclareUnicodeCharacter{110E}{\UTFK{110E}}%
+\DeclareUnicodeCharacter{110F}{\UTFK{110F}}%
+\DeclareUnicodeCharacter{1110}{\UTFK{1110}}%
+\DeclareUnicodeCharacter{1111}{\UTFK{1111}}%
+\DeclareUnicodeCharacter{1112}{\UTFK{1112}}%
+\DeclareUnicodeCharacter{1113}{\UTFK{1113}}%
+\DeclareUnicodeCharacter{1114}{\UTFK{1114}}%
+\DeclareUnicodeCharacter{1115}{\UTFK{1115}}%
+\DeclareUnicodeCharacter{1116}{\UTFK{1116}}%
+\DeclareUnicodeCharacter{1117}{\UTFK{1117}}%
+\DeclareUnicodeCharacter{1118}{\UTFK{1118}}%
+\DeclareUnicodeCharacter{1119}{\UTFK{1119}}%
+\DeclareUnicodeCharacter{111A}{\UTFK{111A}}%
+\DeclareUnicodeCharacter{111B}{\UTFK{111B}}%
+\DeclareUnicodeCharacter{111C}{\UTFK{111C}}%
+\DeclareUnicodeCharacter{111D}{\UTFK{111D}}%
+\DeclareUnicodeCharacter{111E}{\UTFK{111E}}%
+\DeclareUnicodeCharacter{111F}{\UTFK{111F}}%
+\DeclareUnicodeCharacter{1120}{\UTFK{1120}}%
+\DeclareUnicodeCharacter{1121}{\UTFK{1121}}%
+\DeclareUnicodeCharacter{1122}{\UTFK{1122}}%
+\DeclareUnicodeCharacter{1123}{\UTFK{1123}}%
+\DeclareUnicodeCharacter{1124}{\UTFK{1124}}%
+\DeclareUnicodeCharacter{1125}{\UTFK{1125}}%
+\DeclareUnicodeCharacter{1126}{\UTFK{1126}}%
+\DeclareUnicodeCharacter{1127}{\UTFK{1127}}%
+\DeclareUnicodeCharacter{1128}{\UTFK{1128}}%
+\DeclareUnicodeCharacter{1129}{\UTFK{1129}}%
+\DeclareUnicodeCharacter{112A}{\UTFK{112A}}%
+\DeclareUnicodeCharacter{112B}{\UTFK{112B}}%
+\DeclareUnicodeCharacter{112C}{\UTFK{112C}}%
+\DeclareUnicodeCharacter{112D}{\UTFK{112D}}%
+\DeclareUnicodeCharacter{112E}{\UTFK{112E}}%
+\DeclareUnicodeCharacter{112F}{\UTFK{112F}}%
+\DeclareUnicodeCharacter{1130}{\UTFK{1130}}%
+\DeclareUnicodeCharacter{1131}{\UTFK{1131}}%
+\DeclareUnicodeCharacter{1132}{\UTFK{1132}}%
+\DeclareUnicodeCharacter{1133}{\UTFK{1133}}%
+\DeclareUnicodeCharacter{1134}{\UTFK{1134}}%
+\DeclareUnicodeCharacter{1135}{\UTFK{1135}}%
+\DeclareUnicodeCharacter{1136}{\UTFK{1136}}%
+\DeclareUnicodeCharacter{1137}{\UTFK{1137}}%
+\DeclareUnicodeCharacter{1138}{\UTFK{1138}}%
+\DeclareUnicodeCharacter{1139}{\UTFK{1139}}%
+\DeclareUnicodeCharacter{113A}{\UTFK{113A}}%
+\DeclareUnicodeCharacter{113B}{\UTFK{113B}}%
+\DeclareUnicodeCharacter{113C}{\UTFK{113C}}%
+\DeclareUnicodeCharacter{113D}{\UTFK{113D}}%
+\DeclareUnicodeCharacter{113E}{\UTFK{113E}}%
+\DeclareUnicodeCharacter{113F}{\UTFK{113F}}%
+\DeclareUnicodeCharacter{1140}{\UTFK{1140}}%
+\DeclareUnicodeCharacter{1141}{\UTFK{1141}}%
+\DeclareUnicodeCharacter{1142}{\UTFK{1142}}%
+\DeclareUnicodeCharacter{1143}{\UTFK{1143}}%
+\DeclareUnicodeCharacter{1144}{\UTFK{1144}}%
+\DeclareUnicodeCharacter{1145}{\UTFK{1145}}%
+\DeclareUnicodeCharacter{1146}{\UTFK{1146}}%
+\DeclareUnicodeCharacter{1147}{\UTFK{1147}}%
+\DeclareUnicodeCharacter{1148}{\UTFK{1148}}%
+\DeclareUnicodeCharacter{1149}{\UTFK{1149}}%
+\DeclareUnicodeCharacter{114A}{\UTFK{114A}}%
+\DeclareUnicodeCharacter{114B}{\UTFK{114B}}%
+\DeclareUnicodeCharacter{114C}{\UTFK{114C}}%
+\DeclareUnicodeCharacter{114D}{\UTFK{114D}}%
+\DeclareUnicodeCharacter{114E}{\UTFK{114E}}%
+\DeclareUnicodeCharacter{114F}{\UTFK{114F}}%
+\DeclareUnicodeCharacter{1150}{\UTFK{1150}}%
+\DeclareUnicodeCharacter{1151}{\UTFK{1151}}%
+\DeclareUnicodeCharacter{1152}{\UTFK{1152}}%
+\DeclareUnicodeCharacter{1153}{\UTFK{1153}}%
+\DeclareUnicodeCharacter{1154}{\UTFK{1154}}%
+\DeclareUnicodeCharacter{1155}{\UTFK{1155}}%
+\DeclareUnicodeCharacter{1156}{\UTFK{1156}}%
+\DeclareUnicodeCharacter{1157}{\UTFK{1157}}%
+\DeclareUnicodeCharacter{1158}{\UTFK{1158}}%
+\DeclareUnicodeCharacter{1159}{\UTFK{1159}}%
+\DeclareUnicodeCharacter{115A}{\UTFK{115A}}%
+\DeclareUnicodeCharacter{115B}{\UTFK{115B}}%
+\DeclareUnicodeCharacter{115C}{\UTFK{115C}}%
+\DeclareUnicodeCharacter{115D}{\UTFK{115D}}%
+\DeclareUnicodeCharacter{115E}{\UTFK{115E}}%
+\DeclareUnicodeCharacter{115F}{\UTFK{115F}}%
+\DeclareUnicodeCharacter{1160}{\UTFK{1160}}%
+\DeclareUnicodeCharacter{1161}{\UTFK{1161}}%
+\DeclareUnicodeCharacter{1162}{\UTFK{1162}}%
+\DeclareUnicodeCharacter{1163}{\UTFK{1163}}%
+\DeclareUnicodeCharacter{1164}{\UTFK{1164}}%
+\DeclareUnicodeCharacter{1165}{\UTFK{1165}}%
+\DeclareUnicodeCharacter{1166}{\UTFK{1166}}%
+\DeclareUnicodeCharacter{1167}{\UTFK{1167}}%
+\DeclareUnicodeCharacter{1168}{\UTFK{1168}}%
+\DeclareUnicodeCharacter{1169}{\UTFK{1169}}%
+\DeclareUnicodeCharacter{116A}{\UTFK{116A}}%
+\DeclareUnicodeCharacter{116B}{\UTFK{116B}}%
+\DeclareUnicodeCharacter{116C}{\UTFK{116C}}%
+\DeclareUnicodeCharacter{116D}{\UTFK{116D}}%
+\DeclareUnicodeCharacter{116E}{\UTFK{116E}}%
+\DeclareUnicodeCharacter{116F}{\UTFK{116F}}%
+\DeclareUnicodeCharacter{1170}{\UTFK{1170}}%
+\DeclareUnicodeCharacter{1171}{\UTFK{1171}}%
+\DeclareUnicodeCharacter{1172}{\UTFK{1172}}%
+\DeclareUnicodeCharacter{1173}{\UTFK{1173}}%
+\DeclareUnicodeCharacter{1174}{\UTFK{1174}}%
+\DeclareUnicodeCharacter{1175}{\UTFK{1175}}%
+\DeclareUnicodeCharacter{1176}{\UTFK{1176}}%
+\DeclareUnicodeCharacter{1177}{\UTFK{1177}}%
+\DeclareUnicodeCharacter{1178}{\UTFK{1178}}%
+\DeclareUnicodeCharacter{1179}{\UTFK{1179}}%
+\DeclareUnicodeCharacter{117A}{\UTFK{117A}}%
+\DeclareUnicodeCharacter{117B}{\UTFK{117B}}%
+\DeclareUnicodeCharacter{117C}{\UTFK{117C}}%
+\DeclareUnicodeCharacter{117D}{\UTFK{117D}}%
+\DeclareUnicodeCharacter{117E}{\UTFK{117E}}%
+\DeclareUnicodeCharacter{117F}{\UTFK{117F}}%
+\DeclareUnicodeCharacter{1180}{\UTFK{1180}}%
+\DeclareUnicodeCharacter{1181}{\UTFK{1181}}%
+\DeclareUnicodeCharacter{1182}{\UTFK{1182}}%
+\DeclareUnicodeCharacter{1183}{\UTFK{1183}}%
+\DeclareUnicodeCharacter{1184}{\UTFK{1184}}%
+\DeclareUnicodeCharacter{1185}{\UTFK{1185}}%
+\DeclareUnicodeCharacter{1186}{\UTFK{1186}}%
+\DeclareUnicodeCharacter{1187}{\UTFK{1187}}%
+\DeclareUnicodeCharacter{1188}{\UTFK{1188}}%
+\DeclareUnicodeCharacter{1189}{\UTFK{1189}}%
+\DeclareUnicodeCharacter{118A}{\UTFK{118A}}%
+\DeclareUnicodeCharacter{118B}{\UTFK{118B}}%
+\DeclareUnicodeCharacter{118C}{\UTFK{118C}}%
+\DeclareUnicodeCharacter{118D}{\UTFK{118D}}%
+\DeclareUnicodeCharacter{118E}{\UTFK{118E}}%
+\DeclareUnicodeCharacter{118F}{\UTFK{118F}}%
+\DeclareUnicodeCharacter{1190}{\UTFK{1190}}%
+\DeclareUnicodeCharacter{1191}{\UTFK{1191}}%
+\DeclareUnicodeCharacter{1192}{\UTFK{1192}}%
+\DeclareUnicodeCharacter{1193}{\UTFK{1193}}%
+\DeclareUnicodeCharacter{1194}{\UTFK{1194}}%
+\DeclareUnicodeCharacter{1195}{\UTFK{1195}}%
+\DeclareUnicodeCharacter{1196}{\UTFK{1196}}%
+\DeclareUnicodeCharacter{1197}{\UTFK{1197}}%
+\DeclareUnicodeCharacter{1198}{\UTFK{1198}}%
+\DeclareUnicodeCharacter{1199}{\UTFK{1199}}%
+\DeclareUnicodeCharacter{119A}{\UTFK{119A}}%
+\DeclareUnicodeCharacter{119B}{\UTFK{119B}}%
+\DeclareUnicodeCharacter{119C}{\UTFK{119C}}%
+\DeclareUnicodeCharacter{119D}{\UTFK{119D}}%
+\DeclareUnicodeCharacter{119E}{\UTFK{119E}}%
+\DeclareUnicodeCharacter{119F}{\UTFK{119F}}%
+\DeclareUnicodeCharacter{11A0}{\UTFK{11A0}}%
+\DeclareUnicodeCharacter{11A1}{\UTFK{11A1}}%
+\DeclareUnicodeCharacter{11A2}{\UTFK{11A2}}%
+\DeclareUnicodeCharacter{11A3}{\UTFK{11A3}}%
+\DeclareUnicodeCharacter{11A4}{\UTFK{11A4}}%
+\DeclareUnicodeCharacter{11A5}{\UTFK{11A5}}%
+\DeclareUnicodeCharacter{11A6}{\UTFK{11A6}}%
+\DeclareUnicodeCharacter{11A7}{\UTFK{11A7}}%
+\DeclareUnicodeCharacter{11A8}{\UTFK{11A8}}%
+\DeclareUnicodeCharacter{11A9}{\UTFK{11A9}}%
+\DeclareUnicodeCharacter{11AA}{\UTFK{11AA}}%
+\DeclareUnicodeCharacter{11AB}{\UTFK{11AB}}%
+\DeclareUnicodeCharacter{11AC}{\UTFK{11AC}}%
+\DeclareUnicodeCharacter{11AD}{\UTFK{11AD}}%
+\DeclareUnicodeCharacter{11AE}{\UTFK{11AE}}%
+\DeclareUnicodeCharacter{11AF}{\UTFK{11AF}}%
+\DeclareUnicodeCharacter{11B0}{\UTFK{11B0}}%
+\DeclareUnicodeCharacter{11B1}{\UTFK{11B1}}%
+\DeclareUnicodeCharacter{11B2}{\UTFK{11B2}}%
+\DeclareUnicodeCharacter{11B3}{\UTFK{11B3}}%
+\DeclareUnicodeCharacter{11B4}{\UTFK{11B4}}%
+\DeclareUnicodeCharacter{11B5}{\UTFK{11B5}}%
+\DeclareUnicodeCharacter{11B6}{\UTFK{11B6}}%
+\DeclareUnicodeCharacter{11B7}{\UTFK{11B7}}%
+\DeclareUnicodeCharacter{11B8}{\UTFK{11B8}}%
+\DeclareUnicodeCharacter{11B9}{\UTFK{11B9}}%
+\DeclareUnicodeCharacter{11BA}{\UTFK{11BA}}%
+\DeclareUnicodeCharacter{11BB}{\UTFK{11BB}}%
+\DeclareUnicodeCharacter{11BC}{\UTFK{11BC}}%
+\DeclareUnicodeCharacter{11BD}{\UTFK{11BD}}%
+\DeclareUnicodeCharacter{11BE}{\UTFK{11BE}}%
+\DeclareUnicodeCharacter{11BF}{\UTFK{11BF}}%
+\DeclareUnicodeCharacter{11C0}{\UTFK{11C0}}%
+\DeclareUnicodeCharacter{11C1}{\UTFK{11C1}}%
+\DeclareUnicodeCharacter{11C2}{\UTFK{11C2}}%
+\DeclareUnicodeCharacter{11C3}{\UTFK{11C3}}%
+\DeclareUnicodeCharacter{11C4}{\UTFK{11C4}}%
+\DeclareUnicodeCharacter{11C5}{\UTFK{11C5}}%
+\DeclareUnicodeCharacter{11C6}{\UTFK{11C6}}%
+\DeclareUnicodeCharacter{11C7}{\UTFK{11C7}}%
+\DeclareUnicodeCharacter{11C8}{\UTFK{11C8}}%
+\DeclareUnicodeCharacter{11C9}{\UTFK{11C9}}%
+\DeclareUnicodeCharacter{11CA}{\UTFK{11CA}}%
+\DeclareUnicodeCharacter{11CB}{\UTFK{11CB}}%
+\DeclareUnicodeCharacter{11CC}{\UTFK{11CC}}%
+\DeclareUnicodeCharacter{11CD}{\UTFK{11CD}}%
+\DeclareUnicodeCharacter{11CE}{\UTFK{11CE}}%
+\DeclareUnicodeCharacter{11CF}{\UTFK{11CF}}%
+\DeclareUnicodeCharacter{11D0}{\UTFK{11D0}}%
+\DeclareUnicodeCharacter{11D1}{\UTFK{11D1}}%
+\DeclareUnicodeCharacter{11D2}{\UTFK{11D2}}%
+\DeclareUnicodeCharacter{11D3}{\UTFK{11D3}}%
+\DeclareUnicodeCharacter{11D4}{\UTFK{11D4}}%
+\DeclareUnicodeCharacter{11D5}{\UTFK{11D5}}%
+\DeclareUnicodeCharacter{11D6}{\UTFK{11D6}}%
+\DeclareUnicodeCharacter{11D7}{\UTFK{11D7}}%
+\DeclareUnicodeCharacter{11D8}{\UTFK{11D8}}%
+\DeclareUnicodeCharacter{11D9}{\UTFK{11D9}}%
+\DeclareUnicodeCharacter{11DA}{\UTFK{11DA}}%
+\DeclareUnicodeCharacter{11DB}{\UTFK{11DB}}%
+\DeclareUnicodeCharacter{11DC}{\UTFK{11DC}}%
+\DeclareUnicodeCharacter{11DD}{\UTFK{11DD}}%
+\DeclareUnicodeCharacter{11DE}{\UTFK{11DE}}%
+\DeclareUnicodeCharacter{11DF}{\UTFK{11DF}}%
+\DeclareUnicodeCharacter{11E0}{\UTFK{11E0}}%
+\DeclareUnicodeCharacter{11E1}{\UTFK{11E1}}%
+\DeclareUnicodeCharacter{11E2}{\UTFK{11E2}}%
+\DeclareUnicodeCharacter{11E3}{\UTFK{11E3}}%
+\DeclareUnicodeCharacter{11E4}{\UTFK{11E4}}%
+\DeclareUnicodeCharacter{11E5}{\UTFK{11E5}}%
+\DeclareUnicodeCharacter{11E6}{\UTFK{11E6}}%
+\DeclareUnicodeCharacter{11E7}{\UTFK{11E7}}%
+\DeclareUnicodeCharacter{11E8}{\UTFK{11E8}}%
+\DeclareUnicodeCharacter{11E9}{\UTFK{11E9}}%
+\DeclareUnicodeCharacter{11EA}{\UTFK{11EA}}%
+\DeclareUnicodeCharacter{11EB}{\UTFK{11EB}}%
+\DeclareUnicodeCharacter{11EC}{\UTFK{11EC}}%
+\DeclareUnicodeCharacter{11ED}{\UTFK{11ED}}%
+\DeclareUnicodeCharacter{11EE}{\UTFK{11EE}}%
+\DeclareUnicodeCharacter{11EF}{\UTFK{11EF}}%
+\DeclareUnicodeCharacter{11F0}{\UTFK{11F0}}%
+\DeclareUnicodeCharacter{11F1}{\UTFK{11F1}}%
+\DeclareUnicodeCharacter{11F2}{\UTFK{11F2}}%
+\DeclareUnicodeCharacter{11F3}{\UTFK{11F3}}%
+\DeclareUnicodeCharacter{11F4}{\UTFK{11F4}}%
+\DeclareUnicodeCharacter{11F5}{\UTFK{11F5}}%
+\DeclareUnicodeCharacter{11F6}{\UTFK{11F6}}%
+\DeclareUnicodeCharacter{11F7}{\UTFK{11F7}}%
+\DeclareUnicodeCharacter{11F8}{\UTFK{11F8}}%
+\DeclareUnicodeCharacter{11F9}{\UTFK{11F9}}%
+\DeclareUnicodeCharacter{11FA}{\UTFK{11FA}}%
+\DeclareUnicodeCharacter{11FB}{\UTFK{11FB}}%
+\DeclareUnicodeCharacter{11FC}{\UTFK{11FC}}%
+\DeclareUnicodeCharacter{11FD}{\UTFK{11FD}}%
+\DeclareUnicodeCharacter{11FE}{\UTFK{11FE}}%
+\DeclareUnicodeCharacter{11FF}{\UTFK{11FF}}%
+\DeclareUnicodeCharacter{3130}{\UTFK{3130}}%
+\DeclareUnicodeCharacter{3131}{\UTFK{3131}}%
+\DeclareUnicodeCharacter{3132}{\UTFK{3132}}%
+\DeclareUnicodeCharacter{3133}{\UTFK{3133}}%
+\DeclareUnicodeCharacter{3134}{\UTFK{3134}}%
+\DeclareUnicodeCharacter{3135}{\UTFK{3135}}%
+\DeclareUnicodeCharacter{3136}{\UTFK{3136}}%
+\DeclareUnicodeCharacter{3137}{\UTFK{3137}}%
+\DeclareUnicodeCharacter{3138}{\UTFK{3138}}%
+\DeclareUnicodeCharacter{3139}{\UTFK{3139}}%
+\DeclareUnicodeCharacter{313A}{\UTFK{313A}}%
+\DeclareUnicodeCharacter{313B}{\UTFK{313B}}%
+\DeclareUnicodeCharacter{313C}{\UTFK{313C}}%
+\DeclareUnicodeCharacter{313D}{\UTFK{313D}}%
+\DeclareUnicodeCharacter{313E}{\UTFK{313E}}%
+\DeclareUnicodeCharacter{313F}{\UTFK{313F}}%
+\DeclareUnicodeCharacter{3140}{\UTFK{3140}}%
+\DeclareUnicodeCharacter{3141}{\UTFK{3141}}%
+\DeclareUnicodeCharacter{3142}{\UTFK{3142}}%
+\DeclareUnicodeCharacter{3143}{\UTFK{3143}}%
+\DeclareUnicodeCharacter{3144}{\UTFK{3144}}%
+\DeclareUnicodeCharacter{3145}{\UTFK{3145}}%
+\DeclareUnicodeCharacter{3146}{\UTFK{3146}}%
+\DeclareUnicodeCharacter{3147}{\UTFK{3147}}%
+\DeclareUnicodeCharacter{3148}{\UTFK{3148}}%
+\DeclareUnicodeCharacter{3149}{\UTFK{3149}}%
+\DeclareUnicodeCharacter{314A}{\UTFK{314A}}%
+\DeclareUnicodeCharacter{314B}{\UTFK{314B}}%
+\DeclareUnicodeCharacter{314C}{\UTFK{314C}}%
+\DeclareUnicodeCharacter{314D}{\UTFK{314D}}%
+\DeclareUnicodeCharacter{314E}{\UTFK{314E}}%
+\DeclareUnicodeCharacter{314F}{\UTFK{314F}}%
+\DeclareUnicodeCharacter{3150}{\UTFK{3150}}%
+\DeclareUnicodeCharacter{3151}{\UTFK{3151}}%
+\DeclareUnicodeCharacter{3152}{\UTFK{3152}}%
+\DeclareUnicodeCharacter{3153}{\UTFK{3153}}%
+\DeclareUnicodeCharacter{3154}{\UTFK{3154}}%
+\DeclareUnicodeCharacter{3155}{\UTFK{3155}}%
+\DeclareUnicodeCharacter{3156}{\UTFK{3156}}%
+\DeclareUnicodeCharacter{3157}{\UTFK{3157}}%
+\DeclareUnicodeCharacter{3158}{\UTFK{3158}}%
+\DeclareUnicodeCharacter{3159}{\UTFK{3159}}%
+\DeclareUnicodeCharacter{315A}{\UTFK{315A}}%
+\DeclareUnicodeCharacter{315B}{\UTFK{315B}}%
+\DeclareUnicodeCharacter{315C}{\UTFK{315C}}%
+\DeclareUnicodeCharacter{315D}{\UTFK{315D}}%
+\DeclareUnicodeCharacter{315E}{\UTFK{315E}}%
+\DeclareUnicodeCharacter{315F}{\UTFK{315F}}%
+\DeclareUnicodeCharacter{3160}{\UTFK{3160}}%
+\DeclareUnicodeCharacter{3161}{\UTFK{3161}}%
+\DeclareUnicodeCharacter{3162}{\UTFK{3162}}%
+\DeclareUnicodeCharacter{3163}{\UTFK{3163}}%
+\DeclareUnicodeCharacter{3164}{\UTFK{3164}}%
+\DeclareUnicodeCharacter{3165}{\UTFK{3165}}%
+\DeclareUnicodeCharacter{3166}{\UTFK{3166}}%
+\DeclareUnicodeCharacter{3167}{\UTFK{3167}}%
+\DeclareUnicodeCharacter{3168}{\UTFK{3168}}%
+\DeclareUnicodeCharacter{3169}{\UTFK{3169}}%
+\DeclareUnicodeCharacter{316A}{\UTFK{316A}}%
+\DeclareUnicodeCharacter{316B}{\UTFK{316B}}%
+\DeclareUnicodeCharacter{316C}{\UTFK{316C}}%
+\DeclareUnicodeCharacter{316D}{\UTFK{316D}}%
+\DeclareUnicodeCharacter{316E}{\UTFK{316E}}%
+\DeclareUnicodeCharacter{316F}{\UTFK{316F}}%
+\DeclareUnicodeCharacter{3170}{\UTFK{3170}}%
+\DeclareUnicodeCharacter{3171}{\UTFK{3171}}%
+\DeclareUnicodeCharacter{3172}{\UTFK{3172}}%
+\DeclareUnicodeCharacter{3173}{\UTFK{3173}}%
+\DeclareUnicodeCharacter{3174}{\UTFK{3174}}%
+\DeclareUnicodeCharacter{3175}{\UTFK{3175}}%
+\DeclareUnicodeCharacter{3176}{\UTFK{3176}}%
+\DeclareUnicodeCharacter{3177}{\UTFK{3177}}%
+\DeclareUnicodeCharacter{3178}{\UTFK{3178}}%
+\DeclareUnicodeCharacter{3179}{\UTFK{3179}}%
+\DeclareUnicodeCharacter{317A}{\UTFK{317A}}%
+\DeclareUnicodeCharacter{317B}{\UTFK{317B}}%
+\DeclareUnicodeCharacter{317C}{\UTFK{317C}}%
+\DeclareUnicodeCharacter{317D}{\UTFK{317D}}%
+\DeclareUnicodeCharacter{317E}{\UTFK{317E}}%
+\DeclareUnicodeCharacter{317F}{\UTFK{317F}}%
+\DeclareUnicodeCharacter{3180}{\UTFK{3180}}%
+\DeclareUnicodeCharacter{3181}{\UTFK{3181}}%
+\DeclareUnicodeCharacter{3182}{\UTFK{3182}}%
+\DeclareUnicodeCharacter{3183}{\UTFK{3183}}%
+\DeclareUnicodeCharacter{3184}{\UTFK{3184}}%
+\DeclareUnicodeCharacter{3185}{\UTFK{3185}}%
+\DeclareUnicodeCharacter{3186}{\UTFK{3186}}%
+\DeclareUnicodeCharacter{3187}{\UTFK{3187}}%
+\DeclareUnicodeCharacter{3188}{\UTFK{3188}}%
+\DeclareUnicodeCharacter{3189}{\UTFK{3189}}%
+\DeclareUnicodeCharacter{318A}{\UTFK{318A}}%
+\DeclareUnicodeCharacter{318B}{\UTFK{318B}}%
+\DeclareUnicodeCharacter{318C}{\UTFK{318C}}%
+\DeclareUnicodeCharacter{318D}{\UTFK{318D}}%
+\DeclareUnicodeCharacter{318E}{\UTFK{318E}}%
+\DeclareUnicodeCharacter{318F}{\UTFK{318F}}%
+\DeclareUnicodeCharacter{AC00}{\UTFK{AC00}}%
+\DeclareUnicodeCharacter{AC01}{\UTFK{AC01}}%
+\DeclareUnicodeCharacter{AC02}{\UTFK{AC02}}%
+\DeclareUnicodeCharacter{AC03}{\UTFK{AC03}}%
+\DeclareUnicodeCharacter{AC04}{\UTFK{AC04}}%
+\DeclareUnicodeCharacter{AC05}{\UTFK{AC05}}%
+\DeclareUnicodeCharacter{AC06}{\UTFK{AC06}}%
+\DeclareUnicodeCharacter{AC07}{\UTFK{AC07}}%
+\DeclareUnicodeCharacter{AC08}{\UTFK{AC08}}%
+\DeclareUnicodeCharacter{AC09}{\UTFK{AC09}}%
+\DeclareUnicodeCharacter{AC0A}{\UTFK{AC0A}}%
+\DeclareUnicodeCharacter{AC0B}{\UTFK{AC0B}}%
+\DeclareUnicodeCharacter{AC0C}{\UTFK{AC0C}}%
+\DeclareUnicodeCharacter{AC0D}{\UTFK{AC0D}}%
+\DeclareUnicodeCharacter{AC0E}{\UTFK{AC0E}}%
+\DeclareUnicodeCharacter{AC0F}{\UTFK{AC0F}}%
+\DeclareUnicodeCharacter{AC10}{\UTFK{AC10}}%
+\DeclareUnicodeCharacter{AC11}{\UTFK{AC11}}%
+\DeclareUnicodeCharacter{AC12}{\UTFK{AC12}}%
+\DeclareUnicodeCharacter{AC13}{\UTFK{AC13}}%
+\DeclareUnicodeCharacter{AC14}{\UTFK{AC14}}%
+\DeclareUnicodeCharacter{AC15}{\UTFK{AC15}}%
+\DeclareUnicodeCharacter{AC16}{\UTFK{AC16}}%
+\DeclareUnicodeCharacter{AC17}{\UTFK{AC17}}%
+\DeclareUnicodeCharacter{AC18}{\UTFK{AC18}}%
+\DeclareUnicodeCharacter{AC19}{\UTFK{AC19}}%
+\DeclareUnicodeCharacter{AC1A}{\UTFK{AC1A}}%
+\DeclareUnicodeCharacter{AC1B}{\UTFK{AC1B}}%
+\DeclareUnicodeCharacter{AC1C}{\UTFK{AC1C}}%
+\DeclareUnicodeCharacter{AC1D}{\UTFK{AC1D}}%
+\DeclareUnicodeCharacter{AC1E}{\UTFK{AC1E}}%
+\DeclareUnicodeCharacter{AC1F}{\UTFK{AC1F}}%
+\DeclareUnicodeCharacter{AC20}{\UTFK{AC20}}%
+\DeclareUnicodeCharacter{AC21}{\UTFK{AC21}}%
+\DeclareUnicodeCharacter{AC22}{\UTFK{AC22}}%
+\DeclareUnicodeCharacter{AC23}{\UTFK{AC23}}%
+\DeclareUnicodeCharacter{AC24}{\UTFK{AC24}}%
+\DeclareUnicodeCharacter{AC25}{\UTFK{AC25}}%
+\DeclareUnicodeCharacter{AC26}{\UTFK{AC26}}%
+\DeclareUnicodeCharacter{AC27}{\UTFK{AC27}}%
+\DeclareUnicodeCharacter{AC28}{\UTFK{AC28}}%
+\DeclareUnicodeCharacter{AC29}{\UTFK{AC29}}%
+\DeclareUnicodeCharacter{AC2A}{\UTFK{AC2A}}%
+\DeclareUnicodeCharacter{AC2B}{\UTFK{AC2B}}%
+\DeclareUnicodeCharacter{AC2C}{\UTFK{AC2C}}%
+\DeclareUnicodeCharacter{AC2D}{\UTFK{AC2D}}%
+\DeclareUnicodeCharacter{AC2E}{\UTFK{AC2E}}%
+\DeclareUnicodeCharacter{AC2F}{\UTFK{AC2F}}%
+\DeclareUnicodeCharacter{AC30}{\UTFK{AC30}}%
+\DeclareUnicodeCharacter{AC31}{\UTFK{AC31}}%
+\DeclareUnicodeCharacter{AC32}{\UTFK{AC32}}%
+\DeclareUnicodeCharacter{AC33}{\UTFK{AC33}}%
+\DeclareUnicodeCharacter{AC34}{\UTFK{AC34}}%
+\DeclareUnicodeCharacter{AC35}{\UTFK{AC35}}%
+\DeclareUnicodeCharacter{AC36}{\UTFK{AC36}}%
+\DeclareUnicodeCharacter{AC37}{\UTFK{AC37}}%
+\DeclareUnicodeCharacter{AC38}{\UTFK{AC38}}%
+\DeclareUnicodeCharacter{AC39}{\UTFK{AC39}}%
+\DeclareUnicodeCharacter{AC3A}{\UTFK{AC3A}}%
+\DeclareUnicodeCharacter{AC3B}{\UTFK{AC3B}}%
+\DeclareUnicodeCharacter{AC3C}{\UTFK{AC3C}}%
+\DeclareUnicodeCharacter{AC3D}{\UTFK{AC3D}}%
+\DeclareUnicodeCharacter{AC3E}{\UTFK{AC3E}}%
+\DeclareUnicodeCharacter{AC3F}{\UTFK{AC3F}}%
+\DeclareUnicodeCharacter{AC40}{\UTFK{AC40}}%
+\DeclareUnicodeCharacter{AC41}{\UTFK{AC41}}%
+\DeclareUnicodeCharacter{AC42}{\UTFK{AC42}}%
+\DeclareUnicodeCharacter{AC43}{\UTFK{AC43}}%
+\DeclareUnicodeCharacter{AC44}{\UTFK{AC44}}%
+\DeclareUnicodeCharacter{AC45}{\UTFK{AC45}}%
+\DeclareUnicodeCharacter{AC46}{\UTFK{AC46}}%
+\DeclareUnicodeCharacter{AC47}{\UTFK{AC47}}%
+\DeclareUnicodeCharacter{AC48}{\UTFK{AC48}}%
+\DeclareUnicodeCharacter{AC49}{\UTFK{AC49}}%
+\DeclareUnicodeCharacter{AC4A}{\UTFK{AC4A}}%
+\DeclareUnicodeCharacter{AC4B}{\UTFK{AC4B}}%
+\DeclareUnicodeCharacter{AC4C}{\UTFK{AC4C}}%
+\DeclareUnicodeCharacter{AC4D}{\UTFK{AC4D}}%
+\DeclareUnicodeCharacter{AC4E}{\UTFK{AC4E}}%
+\DeclareUnicodeCharacter{AC4F}{\UTFK{AC4F}}%
+\DeclareUnicodeCharacter{AC50}{\UTFK{AC50}}%
+\DeclareUnicodeCharacter{AC51}{\UTFK{AC51}}%
+\DeclareUnicodeCharacter{AC52}{\UTFK{AC52}}%
+\DeclareUnicodeCharacter{AC53}{\UTFK{AC53}}%
+\DeclareUnicodeCharacter{AC54}{\UTFK{AC54}}%
+\DeclareUnicodeCharacter{AC55}{\UTFK{AC55}}%
+\DeclareUnicodeCharacter{AC56}{\UTFK{AC56}}%
+\DeclareUnicodeCharacter{AC57}{\UTFK{AC57}}%
+\DeclareUnicodeCharacter{AC58}{\UTFK{AC58}}%
+\DeclareUnicodeCharacter{AC59}{\UTFK{AC59}}%
+\DeclareUnicodeCharacter{AC5A}{\UTFK{AC5A}}%
+\DeclareUnicodeCharacter{AC5B}{\UTFK{AC5B}}%
+\DeclareUnicodeCharacter{AC5C}{\UTFK{AC5C}}%
+\DeclareUnicodeCharacter{AC5D}{\UTFK{AC5D}}%
+\DeclareUnicodeCharacter{AC5E}{\UTFK{AC5E}}%
+\DeclareUnicodeCharacter{AC5F}{\UTFK{AC5F}}%
+\DeclareUnicodeCharacter{AC60}{\UTFK{AC60}}%
+\DeclareUnicodeCharacter{AC61}{\UTFK{AC61}}%
+\DeclareUnicodeCharacter{AC62}{\UTFK{AC62}}%
+\DeclareUnicodeCharacter{AC63}{\UTFK{AC63}}%
+\DeclareUnicodeCharacter{AC64}{\UTFK{AC64}}%
+\DeclareUnicodeCharacter{AC65}{\UTFK{AC65}}%
+\DeclareUnicodeCharacter{AC66}{\UTFK{AC66}}%
+\DeclareUnicodeCharacter{AC67}{\UTFK{AC67}}%
+\DeclareUnicodeCharacter{AC68}{\UTFK{AC68}}%
+\DeclareUnicodeCharacter{AC69}{\UTFK{AC69}}%
+\DeclareUnicodeCharacter{AC6A}{\UTFK{AC6A}}%
+\DeclareUnicodeCharacter{AC6B}{\UTFK{AC6B}}%
+\DeclareUnicodeCharacter{AC6C}{\UTFK{AC6C}}%
+\DeclareUnicodeCharacter{AC6D}{\UTFK{AC6D}}%
+\DeclareUnicodeCharacter{AC6E}{\UTFK{AC6E}}%
+\DeclareUnicodeCharacter{AC6F}{\UTFK{AC6F}}%
+\DeclareUnicodeCharacter{AC70}{\UTFK{AC70}}%
+\DeclareUnicodeCharacter{AC71}{\UTFK{AC71}}%
+\DeclareUnicodeCharacter{AC72}{\UTFK{AC72}}%
+\DeclareUnicodeCharacter{AC73}{\UTFK{AC73}}%
+\DeclareUnicodeCharacter{AC74}{\UTFK{AC74}}%
+\DeclareUnicodeCharacter{AC75}{\UTFK{AC75}}%
+\DeclareUnicodeCharacter{AC76}{\UTFK{AC76}}%
+\DeclareUnicodeCharacter{AC77}{\UTFK{AC77}}%
+\DeclareUnicodeCharacter{AC78}{\UTFK{AC78}}%
+\DeclareUnicodeCharacter{AC79}{\UTFK{AC79}}%
+\DeclareUnicodeCharacter{AC7A}{\UTFK{AC7A}}%
+\DeclareUnicodeCharacter{AC7B}{\UTFK{AC7B}}%
+\DeclareUnicodeCharacter{AC7C}{\UTFK{AC7C}}%
+\DeclareUnicodeCharacter{AC7D}{\UTFK{AC7D}}%
+\DeclareUnicodeCharacter{AC7E}{\UTFK{AC7E}}%
+\DeclareUnicodeCharacter{AC7F}{\UTFK{AC7F}}%
+\DeclareUnicodeCharacter{AC80}{\UTFK{AC80}}%
+\DeclareUnicodeCharacter{AC81}{\UTFK{AC81}}%
+\DeclareUnicodeCharacter{AC82}{\UTFK{AC82}}%
+\DeclareUnicodeCharacter{AC83}{\UTFK{AC83}}%
+\DeclareUnicodeCharacter{AC84}{\UTFK{AC84}}%
+\DeclareUnicodeCharacter{AC85}{\UTFK{AC85}}%
+\DeclareUnicodeCharacter{AC86}{\UTFK{AC86}}%
+\DeclareUnicodeCharacter{AC87}{\UTFK{AC87}}%
+\DeclareUnicodeCharacter{AC88}{\UTFK{AC88}}%
+\DeclareUnicodeCharacter{AC89}{\UTFK{AC89}}%
+\DeclareUnicodeCharacter{AC8A}{\UTFK{AC8A}}%
+\DeclareUnicodeCharacter{AC8B}{\UTFK{AC8B}}%
+\DeclareUnicodeCharacter{AC8C}{\UTFK{AC8C}}%
+\DeclareUnicodeCharacter{AC8D}{\UTFK{AC8D}}%
+\DeclareUnicodeCharacter{AC8E}{\UTFK{AC8E}}%
+\DeclareUnicodeCharacter{AC8F}{\UTFK{AC8F}}%
+\DeclareUnicodeCharacter{AC90}{\UTFK{AC90}}%
+\DeclareUnicodeCharacter{AC91}{\UTFK{AC91}}%
+\DeclareUnicodeCharacter{AC92}{\UTFK{AC92}}%
+\DeclareUnicodeCharacter{AC93}{\UTFK{AC93}}%
+\DeclareUnicodeCharacter{AC94}{\UTFK{AC94}}%
+\DeclareUnicodeCharacter{AC95}{\UTFK{AC95}}%
+\DeclareUnicodeCharacter{AC96}{\UTFK{AC96}}%
+\DeclareUnicodeCharacter{AC97}{\UTFK{AC97}}%
+\DeclareUnicodeCharacter{AC98}{\UTFK{AC98}}%
+\DeclareUnicodeCharacter{AC99}{\UTFK{AC99}}%
+\DeclareUnicodeCharacter{AC9A}{\UTFK{AC9A}}%
+\DeclareUnicodeCharacter{AC9B}{\UTFK{AC9B}}%
+\DeclareUnicodeCharacter{AC9C}{\UTFK{AC9C}}%
+\DeclareUnicodeCharacter{AC9D}{\UTFK{AC9D}}%
+\DeclareUnicodeCharacter{AC9E}{\UTFK{AC9E}}%
+\DeclareUnicodeCharacter{AC9F}{\UTFK{AC9F}}%
+\DeclareUnicodeCharacter{ACA0}{\UTFK{ACA0}}%
+\DeclareUnicodeCharacter{ACA1}{\UTFK{ACA1}}%
+\DeclareUnicodeCharacter{ACA2}{\UTFK{ACA2}}%
+\DeclareUnicodeCharacter{ACA3}{\UTFK{ACA3}}%
+\DeclareUnicodeCharacter{ACA4}{\UTFK{ACA4}}%
+\DeclareUnicodeCharacter{ACA5}{\UTFK{ACA5}}%
+\DeclareUnicodeCharacter{ACA6}{\UTFK{ACA6}}%
+\DeclareUnicodeCharacter{ACA7}{\UTFK{ACA7}}%
+\DeclareUnicodeCharacter{ACA8}{\UTFK{ACA8}}%
+\DeclareUnicodeCharacter{ACA9}{\UTFK{ACA9}}%
+\DeclareUnicodeCharacter{ACAA}{\UTFK{ACAA}}%
+\DeclareUnicodeCharacter{ACAB}{\UTFK{ACAB}}%
+\DeclareUnicodeCharacter{ACAC}{\UTFK{ACAC}}%
+\DeclareUnicodeCharacter{ACAD}{\UTFK{ACAD}}%
+\DeclareUnicodeCharacter{ACAE}{\UTFK{ACAE}}%
+\DeclareUnicodeCharacter{ACAF}{\UTFK{ACAF}}%
+\DeclareUnicodeCharacter{ACB0}{\UTFK{ACB0}}%
+\DeclareUnicodeCharacter{ACB1}{\UTFK{ACB1}}%
+\DeclareUnicodeCharacter{ACB2}{\UTFK{ACB2}}%
+\DeclareUnicodeCharacter{ACB3}{\UTFK{ACB3}}%
+\DeclareUnicodeCharacter{ACB4}{\UTFK{ACB4}}%
+\DeclareUnicodeCharacter{ACB5}{\UTFK{ACB5}}%
+\DeclareUnicodeCharacter{ACB6}{\UTFK{ACB6}}%
+\DeclareUnicodeCharacter{ACB7}{\UTFK{ACB7}}%
+\DeclareUnicodeCharacter{ACB8}{\UTFK{ACB8}}%
+\DeclareUnicodeCharacter{ACB9}{\UTFK{ACB9}}%
+\DeclareUnicodeCharacter{ACBA}{\UTFK{ACBA}}%
+\DeclareUnicodeCharacter{ACBB}{\UTFK{ACBB}}%
+\DeclareUnicodeCharacter{ACBC}{\UTFK{ACBC}}%
+\DeclareUnicodeCharacter{ACBD}{\UTFK{ACBD}}%
+\DeclareUnicodeCharacter{ACBE}{\UTFK{ACBE}}%
+\DeclareUnicodeCharacter{ACBF}{\UTFK{ACBF}}%
+\DeclareUnicodeCharacter{ACC0}{\UTFK{ACC0}}%
+\DeclareUnicodeCharacter{ACC1}{\UTFK{ACC1}}%
+\DeclareUnicodeCharacter{ACC2}{\UTFK{ACC2}}%
+\DeclareUnicodeCharacter{ACC3}{\UTFK{ACC3}}%
+\DeclareUnicodeCharacter{ACC4}{\UTFK{ACC4}}%
+\DeclareUnicodeCharacter{ACC5}{\UTFK{ACC5}}%
+\DeclareUnicodeCharacter{ACC6}{\UTFK{ACC6}}%
+\DeclareUnicodeCharacter{ACC7}{\UTFK{ACC7}}%
+\DeclareUnicodeCharacter{ACC8}{\UTFK{ACC8}}%
+\DeclareUnicodeCharacter{ACC9}{\UTFK{ACC9}}%
+\DeclareUnicodeCharacter{ACCA}{\UTFK{ACCA}}%
+\DeclareUnicodeCharacter{ACCB}{\UTFK{ACCB}}%
+\DeclareUnicodeCharacter{ACCC}{\UTFK{ACCC}}%
+\DeclareUnicodeCharacter{ACCD}{\UTFK{ACCD}}%
+\DeclareUnicodeCharacter{ACCE}{\UTFK{ACCE}}%
+\DeclareUnicodeCharacter{ACCF}{\UTFK{ACCF}}%
+\DeclareUnicodeCharacter{ACD0}{\UTFK{ACD0}}%
+\DeclareUnicodeCharacter{ACD1}{\UTFK{ACD1}}%
+\DeclareUnicodeCharacter{ACD2}{\UTFK{ACD2}}%
+\DeclareUnicodeCharacter{ACD3}{\UTFK{ACD3}}%
+\DeclareUnicodeCharacter{ACD4}{\UTFK{ACD4}}%
+\DeclareUnicodeCharacter{ACD5}{\UTFK{ACD5}}%
+\DeclareUnicodeCharacter{ACD6}{\UTFK{ACD6}}%
+\DeclareUnicodeCharacter{ACD7}{\UTFK{ACD7}}%
+\DeclareUnicodeCharacter{ACD8}{\UTFK{ACD8}}%
+\DeclareUnicodeCharacter{ACD9}{\UTFK{ACD9}}%
+\DeclareUnicodeCharacter{ACDA}{\UTFK{ACDA}}%
+\DeclareUnicodeCharacter{ACDB}{\UTFK{ACDB}}%
+\DeclareUnicodeCharacter{ACDC}{\UTFK{ACDC}}%
+\DeclareUnicodeCharacter{ACDD}{\UTFK{ACDD}}%
+\DeclareUnicodeCharacter{ACDE}{\UTFK{ACDE}}%
+\DeclareUnicodeCharacter{ACDF}{\UTFK{ACDF}}%
+\DeclareUnicodeCharacter{ACE0}{\UTFK{ACE0}}%
+\DeclareUnicodeCharacter{ACE1}{\UTFK{ACE1}}%
+\DeclareUnicodeCharacter{ACE2}{\UTFK{ACE2}}%
+\DeclareUnicodeCharacter{ACE3}{\UTFK{ACE3}}%
+\DeclareUnicodeCharacter{ACE4}{\UTFK{ACE4}}%
+\DeclareUnicodeCharacter{ACE5}{\UTFK{ACE5}}%
+\DeclareUnicodeCharacter{ACE6}{\UTFK{ACE6}}%
+\DeclareUnicodeCharacter{ACE7}{\UTFK{ACE7}}%
+\DeclareUnicodeCharacter{ACE8}{\UTFK{ACE8}}%
+\DeclareUnicodeCharacter{ACE9}{\UTFK{ACE9}}%
+\DeclareUnicodeCharacter{ACEA}{\UTFK{ACEA}}%
+\DeclareUnicodeCharacter{ACEB}{\UTFK{ACEB}}%
+\DeclareUnicodeCharacter{ACEC}{\UTFK{ACEC}}%
+\DeclareUnicodeCharacter{ACED}{\UTFK{ACED}}%
+\DeclareUnicodeCharacter{ACEE}{\UTFK{ACEE}}%
+\DeclareUnicodeCharacter{ACEF}{\UTFK{ACEF}}%
+\DeclareUnicodeCharacter{ACF0}{\UTFK{ACF0}}%
+\DeclareUnicodeCharacter{ACF1}{\UTFK{ACF1}}%
+\DeclareUnicodeCharacter{ACF2}{\UTFK{ACF2}}%
+\DeclareUnicodeCharacter{ACF3}{\UTFK{ACF3}}%
+\DeclareUnicodeCharacter{ACF4}{\UTFK{ACF4}}%
+\DeclareUnicodeCharacter{ACF5}{\UTFK{ACF5}}%
+\DeclareUnicodeCharacter{ACF6}{\UTFK{ACF6}}%
+\DeclareUnicodeCharacter{ACF7}{\UTFK{ACF7}}%
+\DeclareUnicodeCharacter{ACF8}{\UTFK{ACF8}}%
+\DeclareUnicodeCharacter{ACF9}{\UTFK{ACF9}}%
+\DeclareUnicodeCharacter{ACFA}{\UTFK{ACFA}}%
+\DeclareUnicodeCharacter{ACFB}{\UTFK{ACFB}}%
+\DeclareUnicodeCharacter{ACFC}{\UTFK{ACFC}}%
+\DeclareUnicodeCharacter{ACFD}{\UTFK{ACFD}}%
+\DeclareUnicodeCharacter{ACFE}{\UTFK{ACFE}}%
+\DeclareUnicodeCharacter{ACFF}{\UTFK{ACFF}}%
+\DeclareUnicodeCharacter{AD00}{\UTFK{AD00}}%
+\DeclareUnicodeCharacter{AD01}{\UTFK{AD01}}%
+\DeclareUnicodeCharacter{AD02}{\UTFK{AD02}}%
+\DeclareUnicodeCharacter{AD03}{\UTFK{AD03}}%
+\DeclareUnicodeCharacter{AD04}{\UTFK{AD04}}%
+\DeclareUnicodeCharacter{AD05}{\UTFK{AD05}}%
+\DeclareUnicodeCharacter{AD06}{\UTFK{AD06}}%
+\DeclareUnicodeCharacter{AD07}{\UTFK{AD07}}%
+\DeclareUnicodeCharacter{AD08}{\UTFK{AD08}}%
+\DeclareUnicodeCharacter{AD09}{\UTFK{AD09}}%
+\DeclareUnicodeCharacter{AD0A}{\UTFK{AD0A}}%
+\DeclareUnicodeCharacter{AD0B}{\UTFK{AD0B}}%
+\DeclareUnicodeCharacter{AD0C}{\UTFK{AD0C}}%
+\DeclareUnicodeCharacter{AD0D}{\UTFK{AD0D}}%
+\DeclareUnicodeCharacter{AD0E}{\UTFK{AD0E}}%
+\DeclareUnicodeCharacter{AD0F}{\UTFK{AD0F}}%
+\DeclareUnicodeCharacter{AD10}{\UTFK{AD10}}%
+\DeclareUnicodeCharacter{AD11}{\UTFK{AD11}}%
+\DeclareUnicodeCharacter{AD12}{\UTFK{AD12}}%
+\DeclareUnicodeCharacter{AD13}{\UTFK{AD13}}%
+\DeclareUnicodeCharacter{AD14}{\UTFK{AD14}}%
+\DeclareUnicodeCharacter{AD15}{\UTFK{AD15}}%
+\DeclareUnicodeCharacter{AD16}{\UTFK{AD16}}%
+\DeclareUnicodeCharacter{AD17}{\UTFK{AD17}}%
+\DeclareUnicodeCharacter{AD18}{\UTFK{AD18}}%
+\DeclareUnicodeCharacter{AD19}{\UTFK{AD19}}%
+\DeclareUnicodeCharacter{AD1A}{\UTFK{AD1A}}%
+\DeclareUnicodeCharacter{AD1B}{\UTFK{AD1B}}%
+\DeclareUnicodeCharacter{AD1C}{\UTFK{AD1C}}%
+\DeclareUnicodeCharacter{AD1D}{\UTFK{AD1D}}%
+\DeclareUnicodeCharacter{AD1E}{\UTFK{AD1E}}%
+\DeclareUnicodeCharacter{AD1F}{\UTFK{AD1F}}%
+\DeclareUnicodeCharacter{AD20}{\UTFK{AD20}}%
+\DeclareUnicodeCharacter{AD21}{\UTFK{AD21}}%
+\DeclareUnicodeCharacter{AD22}{\UTFK{AD22}}%
+\DeclareUnicodeCharacter{AD23}{\UTFK{AD23}}%
+\DeclareUnicodeCharacter{AD24}{\UTFK{AD24}}%
+\DeclareUnicodeCharacter{AD25}{\UTFK{AD25}}%
+\DeclareUnicodeCharacter{AD26}{\UTFK{AD26}}%
+\DeclareUnicodeCharacter{AD27}{\UTFK{AD27}}%
+\DeclareUnicodeCharacter{AD28}{\UTFK{AD28}}%
+\DeclareUnicodeCharacter{AD29}{\UTFK{AD29}}%
+\DeclareUnicodeCharacter{AD2A}{\UTFK{AD2A}}%
+\DeclareUnicodeCharacter{AD2B}{\UTFK{AD2B}}%
+\DeclareUnicodeCharacter{AD2C}{\UTFK{AD2C}}%
+\DeclareUnicodeCharacter{AD2D}{\UTFK{AD2D}}%
+\DeclareUnicodeCharacter{AD2E}{\UTFK{AD2E}}%
+\DeclareUnicodeCharacter{AD2F}{\UTFK{AD2F}}%
+\DeclareUnicodeCharacter{AD30}{\UTFK{AD30}}%
+\DeclareUnicodeCharacter{AD31}{\UTFK{AD31}}%
+\DeclareUnicodeCharacter{AD32}{\UTFK{AD32}}%
+\DeclareUnicodeCharacter{AD33}{\UTFK{AD33}}%
+\DeclareUnicodeCharacter{AD34}{\UTFK{AD34}}%
+\DeclareUnicodeCharacter{AD35}{\UTFK{AD35}}%
+\DeclareUnicodeCharacter{AD36}{\UTFK{AD36}}%
+\DeclareUnicodeCharacter{AD37}{\UTFK{AD37}}%
+\DeclareUnicodeCharacter{AD38}{\UTFK{AD38}}%
+\DeclareUnicodeCharacter{AD39}{\UTFK{AD39}}%
+\DeclareUnicodeCharacter{AD3A}{\UTFK{AD3A}}%
+\DeclareUnicodeCharacter{AD3B}{\UTFK{AD3B}}%
+\DeclareUnicodeCharacter{AD3C}{\UTFK{AD3C}}%
+\DeclareUnicodeCharacter{AD3D}{\UTFK{AD3D}}%
+\DeclareUnicodeCharacter{AD3E}{\UTFK{AD3E}}%
+\DeclareUnicodeCharacter{AD3F}{\UTFK{AD3F}}%
+\DeclareUnicodeCharacter{AD40}{\UTFK{AD40}}%
+\DeclareUnicodeCharacter{AD41}{\UTFK{AD41}}%
+\DeclareUnicodeCharacter{AD42}{\UTFK{AD42}}%
+\DeclareUnicodeCharacter{AD43}{\UTFK{AD43}}%
+\DeclareUnicodeCharacter{AD44}{\UTFK{AD44}}%
+\DeclareUnicodeCharacter{AD45}{\UTFK{AD45}}%
+\DeclareUnicodeCharacter{AD46}{\UTFK{AD46}}%
+\DeclareUnicodeCharacter{AD47}{\UTFK{AD47}}%
+\DeclareUnicodeCharacter{AD48}{\UTFK{AD48}}%
+\DeclareUnicodeCharacter{AD49}{\UTFK{AD49}}%
+\DeclareUnicodeCharacter{AD4A}{\UTFK{AD4A}}%
+\DeclareUnicodeCharacter{AD4B}{\UTFK{AD4B}}%
+\DeclareUnicodeCharacter{AD4C}{\UTFK{AD4C}}%
+\DeclareUnicodeCharacter{AD4D}{\UTFK{AD4D}}%
+\DeclareUnicodeCharacter{AD4E}{\UTFK{AD4E}}%
+\DeclareUnicodeCharacter{AD4F}{\UTFK{AD4F}}%
+\DeclareUnicodeCharacter{AD50}{\UTFK{AD50}}%
+\DeclareUnicodeCharacter{AD51}{\UTFK{AD51}}%
+\DeclareUnicodeCharacter{AD52}{\UTFK{AD52}}%
+\DeclareUnicodeCharacter{AD53}{\UTFK{AD53}}%
+\DeclareUnicodeCharacter{AD54}{\UTFK{AD54}}%
+\DeclareUnicodeCharacter{AD55}{\UTFK{AD55}}%
+\DeclareUnicodeCharacter{AD56}{\UTFK{AD56}}%
+\DeclareUnicodeCharacter{AD57}{\UTFK{AD57}}%
+\DeclareUnicodeCharacter{AD58}{\UTFK{AD58}}%
+\DeclareUnicodeCharacter{AD59}{\UTFK{AD59}}%
+\DeclareUnicodeCharacter{AD5A}{\UTFK{AD5A}}%
+\DeclareUnicodeCharacter{AD5B}{\UTFK{AD5B}}%
+\DeclareUnicodeCharacter{AD5C}{\UTFK{AD5C}}%
+\DeclareUnicodeCharacter{AD5D}{\UTFK{AD5D}}%
+\DeclareUnicodeCharacter{AD5E}{\UTFK{AD5E}}%
+\DeclareUnicodeCharacter{AD5F}{\UTFK{AD5F}}%
+\DeclareUnicodeCharacter{AD60}{\UTFK{AD60}}%
+\DeclareUnicodeCharacter{AD61}{\UTFK{AD61}}%
+\DeclareUnicodeCharacter{AD62}{\UTFK{AD62}}%
+\DeclareUnicodeCharacter{AD63}{\UTFK{AD63}}%
+\DeclareUnicodeCharacter{AD64}{\UTFK{AD64}}%
+\DeclareUnicodeCharacter{AD65}{\UTFK{AD65}}%
+\DeclareUnicodeCharacter{AD66}{\UTFK{AD66}}%
+\DeclareUnicodeCharacter{AD67}{\UTFK{AD67}}%
+\DeclareUnicodeCharacter{AD68}{\UTFK{AD68}}%
+\DeclareUnicodeCharacter{AD69}{\UTFK{AD69}}%
+\DeclareUnicodeCharacter{AD6A}{\UTFK{AD6A}}%
+\DeclareUnicodeCharacter{AD6B}{\UTFK{AD6B}}%
+\DeclareUnicodeCharacter{AD6C}{\UTFK{AD6C}}%
+\DeclareUnicodeCharacter{AD6D}{\UTFK{AD6D}}%
+\DeclareUnicodeCharacter{AD6E}{\UTFK{AD6E}}%
+\DeclareUnicodeCharacter{AD6F}{\UTFK{AD6F}}%
+\DeclareUnicodeCharacter{AD70}{\UTFK{AD70}}%
+\DeclareUnicodeCharacter{AD71}{\UTFK{AD71}}%
+\DeclareUnicodeCharacter{AD72}{\UTFK{AD72}}%
+\DeclareUnicodeCharacter{AD73}{\UTFK{AD73}}%
+\DeclareUnicodeCharacter{AD74}{\UTFK{AD74}}%
+\DeclareUnicodeCharacter{AD75}{\UTFK{AD75}}%
+\DeclareUnicodeCharacter{AD76}{\UTFK{AD76}}%
+\DeclareUnicodeCharacter{AD77}{\UTFK{AD77}}%
+\DeclareUnicodeCharacter{AD78}{\UTFK{AD78}}%
+\DeclareUnicodeCharacter{AD79}{\UTFK{AD79}}%
+\DeclareUnicodeCharacter{AD7A}{\UTFK{AD7A}}%
+\DeclareUnicodeCharacter{AD7B}{\UTFK{AD7B}}%
+\DeclareUnicodeCharacter{AD7C}{\UTFK{AD7C}}%
+\DeclareUnicodeCharacter{AD7D}{\UTFK{AD7D}}%
+\DeclareUnicodeCharacter{AD7E}{\UTFK{AD7E}}%
+\DeclareUnicodeCharacter{AD7F}{\UTFK{AD7F}}%
+\DeclareUnicodeCharacter{AD80}{\UTFK{AD80}}%
+\DeclareUnicodeCharacter{AD81}{\UTFK{AD81}}%
+\DeclareUnicodeCharacter{AD82}{\UTFK{AD82}}%
+\DeclareUnicodeCharacter{AD83}{\UTFK{AD83}}%
+\DeclareUnicodeCharacter{AD84}{\UTFK{AD84}}%
+\DeclareUnicodeCharacter{AD85}{\UTFK{AD85}}%
+\DeclareUnicodeCharacter{AD86}{\UTFK{AD86}}%
+\DeclareUnicodeCharacter{AD87}{\UTFK{AD87}}%
+\DeclareUnicodeCharacter{AD88}{\UTFK{AD88}}%
+\DeclareUnicodeCharacter{AD89}{\UTFK{AD89}}%
+\DeclareUnicodeCharacter{AD8A}{\UTFK{AD8A}}%
+\DeclareUnicodeCharacter{AD8B}{\UTFK{AD8B}}%
+\DeclareUnicodeCharacter{AD8C}{\UTFK{AD8C}}%
+\DeclareUnicodeCharacter{AD8D}{\UTFK{AD8D}}%
+\DeclareUnicodeCharacter{AD8E}{\UTFK{AD8E}}%
+\DeclareUnicodeCharacter{AD8F}{\UTFK{AD8F}}%
+\DeclareUnicodeCharacter{AD90}{\UTFK{AD90}}%
+\DeclareUnicodeCharacter{AD91}{\UTFK{AD91}}%
+\DeclareUnicodeCharacter{AD92}{\UTFK{AD92}}%
+\DeclareUnicodeCharacter{AD93}{\UTFK{AD93}}%
+\DeclareUnicodeCharacter{AD94}{\UTFK{AD94}}%
+\DeclareUnicodeCharacter{AD95}{\UTFK{AD95}}%
+\DeclareUnicodeCharacter{AD96}{\UTFK{AD96}}%
+\DeclareUnicodeCharacter{AD97}{\UTFK{AD97}}%
+\DeclareUnicodeCharacter{AD98}{\UTFK{AD98}}%
+\DeclareUnicodeCharacter{AD99}{\UTFK{AD99}}%
+\DeclareUnicodeCharacter{AD9A}{\UTFK{AD9A}}%
+\DeclareUnicodeCharacter{AD9B}{\UTFK{AD9B}}%
+\DeclareUnicodeCharacter{AD9C}{\UTFK{AD9C}}%
+\DeclareUnicodeCharacter{AD9D}{\UTFK{AD9D}}%
+\DeclareUnicodeCharacter{AD9E}{\UTFK{AD9E}}%
+\DeclareUnicodeCharacter{AD9F}{\UTFK{AD9F}}%
+\DeclareUnicodeCharacter{ADA0}{\UTFK{ADA0}}%
+\DeclareUnicodeCharacter{ADA1}{\UTFK{ADA1}}%
+\DeclareUnicodeCharacter{ADA2}{\UTFK{ADA2}}%
+\DeclareUnicodeCharacter{ADA3}{\UTFK{ADA3}}%
+\DeclareUnicodeCharacter{ADA4}{\UTFK{ADA4}}%
+\DeclareUnicodeCharacter{ADA5}{\UTFK{ADA5}}%
+\DeclareUnicodeCharacter{ADA6}{\UTFK{ADA6}}%
+\DeclareUnicodeCharacter{ADA7}{\UTFK{ADA7}}%
+\DeclareUnicodeCharacter{ADA8}{\UTFK{ADA8}}%
+\DeclareUnicodeCharacter{ADA9}{\UTFK{ADA9}}%
+\DeclareUnicodeCharacter{ADAA}{\UTFK{ADAA}}%
+\DeclareUnicodeCharacter{ADAB}{\UTFK{ADAB}}%
+\DeclareUnicodeCharacter{ADAC}{\UTFK{ADAC}}%
+\DeclareUnicodeCharacter{ADAD}{\UTFK{ADAD}}%
+\DeclareUnicodeCharacter{ADAE}{\UTFK{ADAE}}%
+\DeclareUnicodeCharacter{ADAF}{\UTFK{ADAF}}%
+\DeclareUnicodeCharacter{ADB0}{\UTFK{ADB0}}%
+\DeclareUnicodeCharacter{ADB1}{\UTFK{ADB1}}%
+\DeclareUnicodeCharacter{ADB2}{\UTFK{ADB2}}%
+\DeclareUnicodeCharacter{ADB3}{\UTFK{ADB3}}%
+\DeclareUnicodeCharacter{ADB4}{\UTFK{ADB4}}%
+\DeclareUnicodeCharacter{ADB5}{\UTFK{ADB5}}%
+\DeclareUnicodeCharacter{ADB6}{\UTFK{ADB6}}%
+\DeclareUnicodeCharacter{ADB7}{\UTFK{ADB7}}%
+\DeclareUnicodeCharacter{ADB8}{\UTFK{ADB8}}%
+\DeclareUnicodeCharacter{ADB9}{\UTFK{ADB9}}%
+\DeclareUnicodeCharacter{ADBA}{\UTFK{ADBA}}%
+\DeclareUnicodeCharacter{ADBB}{\UTFK{ADBB}}%
+\DeclareUnicodeCharacter{ADBC}{\UTFK{ADBC}}%
+\DeclareUnicodeCharacter{ADBD}{\UTFK{ADBD}}%
+\DeclareUnicodeCharacter{ADBE}{\UTFK{ADBE}}%
+\DeclareUnicodeCharacter{ADBF}{\UTFK{ADBF}}%
+\DeclareUnicodeCharacter{ADC0}{\UTFK{ADC0}}%
+\DeclareUnicodeCharacter{ADC1}{\UTFK{ADC1}}%
+\DeclareUnicodeCharacter{ADC2}{\UTFK{ADC2}}%
+\DeclareUnicodeCharacter{ADC3}{\UTFK{ADC3}}%
+\DeclareUnicodeCharacter{ADC4}{\UTFK{ADC4}}%
+\DeclareUnicodeCharacter{ADC5}{\UTFK{ADC5}}%
+\DeclareUnicodeCharacter{ADC6}{\UTFK{ADC6}}%
+\DeclareUnicodeCharacter{ADC7}{\UTFK{ADC7}}%
+\DeclareUnicodeCharacter{ADC8}{\UTFK{ADC8}}%
+\DeclareUnicodeCharacter{ADC9}{\UTFK{ADC9}}%
+\DeclareUnicodeCharacter{ADCA}{\UTFK{ADCA}}%
+\DeclareUnicodeCharacter{ADCB}{\UTFK{ADCB}}%
+\DeclareUnicodeCharacter{ADCC}{\UTFK{ADCC}}%
+\DeclareUnicodeCharacter{ADCD}{\UTFK{ADCD}}%
+\DeclareUnicodeCharacter{ADCE}{\UTFK{ADCE}}%
+\DeclareUnicodeCharacter{ADCF}{\UTFK{ADCF}}%
+\DeclareUnicodeCharacter{ADD0}{\UTFK{ADD0}}%
+\DeclareUnicodeCharacter{ADD1}{\UTFK{ADD1}}%
+\DeclareUnicodeCharacter{ADD2}{\UTFK{ADD2}}%
+\DeclareUnicodeCharacter{ADD3}{\UTFK{ADD3}}%
+\DeclareUnicodeCharacter{ADD4}{\UTFK{ADD4}}%
+\DeclareUnicodeCharacter{ADD5}{\UTFK{ADD5}}%
+\DeclareUnicodeCharacter{ADD6}{\UTFK{ADD6}}%
+\DeclareUnicodeCharacter{ADD7}{\UTFK{ADD7}}%
+\DeclareUnicodeCharacter{ADD8}{\UTFK{ADD8}}%
+\DeclareUnicodeCharacter{ADD9}{\UTFK{ADD9}}%
+\DeclareUnicodeCharacter{ADDA}{\UTFK{ADDA}}%
+\DeclareUnicodeCharacter{ADDB}{\UTFK{ADDB}}%
+\DeclareUnicodeCharacter{ADDC}{\UTFK{ADDC}}%
+\DeclareUnicodeCharacter{ADDD}{\UTFK{ADDD}}%
+\DeclareUnicodeCharacter{ADDE}{\UTFK{ADDE}}%
+\DeclareUnicodeCharacter{ADDF}{\UTFK{ADDF}}%
+\DeclareUnicodeCharacter{ADE0}{\UTFK{ADE0}}%
+\DeclareUnicodeCharacter{ADE1}{\UTFK{ADE1}}%
+\DeclareUnicodeCharacter{ADE2}{\UTFK{ADE2}}%
+\DeclareUnicodeCharacter{ADE3}{\UTFK{ADE3}}%
+\DeclareUnicodeCharacter{ADE4}{\UTFK{ADE4}}%
+\DeclareUnicodeCharacter{ADE5}{\UTFK{ADE5}}%
+\DeclareUnicodeCharacter{ADE6}{\UTFK{ADE6}}%
+\DeclareUnicodeCharacter{ADE7}{\UTFK{ADE7}}%
+\DeclareUnicodeCharacter{ADE8}{\UTFK{ADE8}}%
+\DeclareUnicodeCharacter{ADE9}{\UTFK{ADE9}}%
+\DeclareUnicodeCharacter{ADEA}{\UTFK{ADEA}}%
+\DeclareUnicodeCharacter{ADEB}{\UTFK{ADEB}}%
+\DeclareUnicodeCharacter{ADEC}{\UTFK{ADEC}}%
+\DeclareUnicodeCharacter{ADED}{\UTFK{ADED}}%
+\DeclareUnicodeCharacter{ADEE}{\UTFK{ADEE}}%
+\DeclareUnicodeCharacter{ADEF}{\UTFK{ADEF}}%
+\DeclareUnicodeCharacter{ADF0}{\UTFK{ADF0}}%
+\DeclareUnicodeCharacter{ADF1}{\UTFK{ADF1}}%
+\DeclareUnicodeCharacter{ADF2}{\UTFK{ADF2}}%
+\DeclareUnicodeCharacter{ADF3}{\UTFK{ADF3}}%
+\DeclareUnicodeCharacter{ADF4}{\UTFK{ADF4}}%
+\DeclareUnicodeCharacter{ADF5}{\UTFK{ADF5}}%
+\DeclareUnicodeCharacter{ADF6}{\UTFK{ADF6}}%
+\DeclareUnicodeCharacter{ADF7}{\UTFK{ADF7}}%
+\DeclareUnicodeCharacter{ADF8}{\UTFK{ADF8}}%
+\DeclareUnicodeCharacter{ADF9}{\UTFK{ADF9}}%
+\DeclareUnicodeCharacter{ADFA}{\UTFK{ADFA}}%
+\DeclareUnicodeCharacter{ADFB}{\UTFK{ADFB}}%
+\DeclareUnicodeCharacter{ADFC}{\UTFK{ADFC}}%
+\DeclareUnicodeCharacter{ADFD}{\UTFK{ADFD}}%
+\DeclareUnicodeCharacter{ADFE}{\UTFK{ADFE}}%
+\DeclareUnicodeCharacter{ADFF}{\UTFK{ADFF}}%
+\DeclareUnicodeCharacter{AE00}{\UTFK{AE00}}%
+\DeclareUnicodeCharacter{AE01}{\UTFK{AE01}}%
+\DeclareUnicodeCharacter{AE02}{\UTFK{AE02}}%
+\DeclareUnicodeCharacter{AE03}{\UTFK{AE03}}%
+\DeclareUnicodeCharacter{AE04}{\UTFK{AE04}}%
+\DeclareUnicodeCharacter{AE05}{\UTFK{AE05}}%
+\DeclareUnicodeCharacter{AE06}{\UTFK{AE06}}%
+\DeclareUnicodeCharacter{AE07}{\UTFK{AE07}}%
+\DeclareUnicodeCharacter{AE08}{\UTFK{AE08}}%
+\DeclareUnicodeCharacter{AE09}{\UTFK{AE09}}%
+\DeclareUnicodeCharacter{AE0A}{\UTFK{AE0A}}%
+\DeclareUnicodeCharacter{AE0B}{\UTFK{AE0B}}%
+\DeclareUnicodeCharacter{AE0C}{\UTFK{AE0C}}%
+\DeclareUnicodeCharacter{AE0D}{\UTFK{AE0D}}%
+\DeclareUnicodeCharacter{AE0E}{\UTFK{AE0E}}%
+\DeclareUnicodeCharacter{AE0F}{\UTFK{AE0F}}%
+\DeclareUnicodeCharacter{AE10}{\UTFK{AE10}}%
+\DeclareUnicodeCharacter{AE11}{\UTFK{AE11}}%
+\DeclareUnicodeCharacter{AE12}{\UTFK{AE12}}%
+\DeclareUnicodeCharacter{AE13}{\UTFK{AE13}}%
+\DeclareUnicodeCharacter{AE14}{\UTFK{AE14}}%
+\DeclareUnicodeCharacter{AE15}{\UTFK{AE15}}%
+\DeclareUnicodeCharacter{AE16}{\UTFK{AE16}}%
+\DeclareUnicodeCharacter{AE17}{\UTFK{AE17}}%
+\DeclareUnicodeCharacter{AE18}{\UTFK{AE18}}%
+\DeclareUnicodeCharacter{AE19}{\UTFK{AE19}}%
+\DeclareUnicodeCharacter{AE1A}{\UTFK{AE1A}}%
+\DeclareUnicodeCharacter{AE1B}{\UTFK{AE1B}}%
+\DeclareUnicodeCharacter{AE1C}{\UTFK{AE1C}}%
+\DeclareUnicodeCharacter{AE1D}{\UTFK{AE1D}}%
+\DeclareUnicodeCharacter{AE1E}{\UTFK{AE1E}}%
+\DeclareUnicodeCharacter{AE1F}{\UTFK{AE1F}}%
+\DeclareUnicodeCharacter{AE20}{\UTFK{AE20}}%
+\DeclareUnicodeCharacter{AE21}{\UTFK{AE21}}%
+\DeclareUnicodeCharacter{AE22}{\UTFK{AE22}}%
+\DeclareUnicodeCharacter{AE23}{\UTFK{AE23}}%
+\DeclareUnicodeCharacter{AE24}{\UTFK{AE24}}%
+\DeclareUnicodeCharacter{AE25}{\UTFK{AE25}}%
+\DeclareUnicodeCharacter{AE26}{\UTFK{AE26}}%
+\DeclareUnicodeCharacter{AE27}{\UTFK{AE27}}%
+\DeclareUnicodeCharacter{AE28}{\UTFK{AE28}}%
+\DeclareUnicodeCharacter{AE29}{\UTFK{AE29}}%
+\DeclareUnicodeCharacter{AE2A}{\UTFK{AE2A}}%
+\DeclareUnicodeCharacter{AE2B}{\UTFK{AE2B}}%
+\DeclareUnicodeCharacter{AE2C}{\UTFK{AE2C}}%
+\DeclareUnicodeCharacter{AE2D}{\UTFK{AE2D}}%
+\DeclareUnicodeCharacter{AE2E}{\UTFK{AE2E}}%
+\DeclareUnicodeCharacter{AE2F}{\UTFK{AE2F}}%
+\DeclareUnicodeCharacter{AE30}{\UTFK{AE30}}%
+\DeclareUnicodeCharacter{AE31}{\UTFK{AE31}}%
+\DeclareUnicodeCharacter{AE32}{\UTFK{AE32}}%
+\DeclareUnicodeCharacter{AE33}{\UTFK{AE33}}%
+\DeclareUnicodeCharacter{AE34}{\UTFK{AE34}}%
+\DeclareUnicodeCharacter{AE35}{\UTFK{AE35}}%
+\DeclareUnicodeCharacter{AE36}{\UTFK{AE36}}%
+\DeclareUnicodeCharacter{AE37}{\UTFK{AE37}}%
+\DeclareUnicodeCharacter{AE38}{\UTFK{AE38}}%
+\DeclareUnicodeCharacter{AE39}{\UTFK{AE39}}%
+\DeclareUnicodeCharacter{AE3A}{\UTFK{AE3A}}%
+\DeclareUnicodeCharacter{AE3B}{\UTFK{AE3B}}%
+\DeclareUnicodeCharacter{AE3C}{\UTFK{AE3C}}%
+\DeclareUnicodeCharacter{AE3D}{\UTFK{AE3D}}%
+\DeclareUnicodeCharacter{AE3E}{\UTFK{AE3E}}%
+\DeclareUnicodeCharacter{AE3F}{\UTFK{AE3F}}%
+\DeclareUnicodeCharacter{AE40}{\UTFK{AE40}}%
+\DeclareUnicodeCharacter{AE41}{\UTFK{AE41}}%
+\DeclareUnicodeCharacter{AE42}{\UTFK{AE42}}%
+\DeclareUnicodeCharacter{AE43}{\UTFK{AE43}}%
+\DeclareUnicodeCharacter{AE44}{\UTFK{AE44}}%
+\DeclareUnicodeCharacter{AE45}{\UTFK{AE45}}%
+\DeclareUnicodeCharacter{AE46}{\UTFK{AE46}}%
+\DeclareUnicodeCharacter{AE47}{\UTFK{AE47}}%
+\DeclareUnicodeCharacter{AE48}{\UTFK{AE48}}%
+\DeclareUnicodeCharacter{AE49}{\UTFK{AE49}}%
+\DeclareUnicodeCharacter{AE4A}{\UTFK{AE4A}}%
+\DeclareUnicodeCharacter{AE4B}{\UTFK{AE4B}}%
+\DeclareUnicodeCharacter{AE4C}{\UTFK{AE4C}}%
+\DeclareUnicodeCharacter{AE4D}{\UTFK{AE4D}}%
+\DeclareUnicodeCharacter{AE4E}{\UTFK{AE4E}}%
+\DeclareUnicodeCharacter{AE4F}{\UTFK{AE4F}}%
+\DeclareUnicodeCharacter{AE50}{\UTFK{AE50}}%
+\DeclareUnicodeCharacter{AE51}{\UTFK{AE51}}%
+\DeclareUnicodeCharacter{AE52}{\UTFK{AE52}}%
+\DeclareUnicodeCharacter{AE53}{\UTFK{AE53}}%
+\DeclareUnicodeCharacter{AE54}{\UTFK{AE54}}%
+\DeclareUnicodeCharacter{AE55}{\UTFK{AE55}}%
+\DeclareUnicodeCharacter{AE56}{\UTFK{AE56}}%
+\DeclareUnicodeCharacter{AE57}{\UTFK{AE57}}%
+\DeclareUnicodeCharacter{AE58}{\UTFK{AE58}}%
+\DeclareUnicodeCharacter{AE59}{\UTFK{AE59}}%
+\DeclareUnicodeCharacter{AE5A}{\UTFK{AE5A}}%
+\DeclareUnicodeCharacter{AE5B}{\UTFK{AE5B}}%
+\DeclareUnicodeCharacter{AE5C}{\UTFK{AE5C}}%
+\DeclareUnicodeCharacter{AE5D}{\UTFK{AE5D}}%
+\DeclareUnicodeCharacter{AE5E}{\UTFK{AE5E}}%
+\DeclareUnicodeCharacter{AE5F}{\UTFK{AE5F}}%
+\DeclareUnicodeCharacter{AE60}{\UTFK{AE60}}%
+\DeclareUnicodeCharacter{AE61}{\UTFK{AE61}}%
+\DeclareUnicodeCharacter{AE62}{\UTFK{AE62}}%
+\DeclareUnicodeCharacter{AE63}{\UTFK{AE63}}%
+\DeclareUnicodeCharacter{AE64}{\UTFK{AE64}}%
+\DeclareUnicodeCharacter{AE65}{\UTFK{AE65}}%
+\DeclareUnicodeCharacter{AE66}{\UTFK{AE66}}%
+\DeclareUnicodeCharacter{AE67}{\UTFK{AE67}}%
+\DeclareUnicodeCharacter{AE68}{\UTFK{AE68}}%
+\DeclareUnicodeCharacter{AE69}{\UTFK{AE69}}%
+\DeclareUnicodeCharacter{AE6A}{\UTFK{AE6A}}%
+\DeclareUnicodeCharacter{AE6B}{\UTFK{AE6B}}%
+\DeclareUnicodeCharacter{AE6C}{\UTFK{AE6C}}%
+\DeclareUnicodeCharacter{AE6D}{\UTFK{AE6D}}%
+\DeclareUnicodeCharacter{AE6E}{\UTFK{AE6E}}%
+\DeclareUnicodeCharacter{AE6F}{\UTFK{AE6F}}%
+\DeclareUnicodeCharacter{AE70}{\UTFK{AE70}}%
+\DeclareUnicodeCharacter{AE71}{\UTFK{AE71}}%
+\DeclareUnicodeCharacter{AE72}{\UTFK{AE72}}%
+\DeclareUnicodeCharacter{AE73}{\UTFK{AE73}}%
+\DeclareUnicodeCharacter{AE74}{\UTFK{AE74}}%
+\DeclareUnicodeCharacter{AE75}{\UTFK{AE75}}%
+\DeclareUnicodeCharacter{AE76}{\UTFK{AE76}}%
+\DeclareUnicodeCharacter{AE77}{\UTFK{AE77}}%
+\DeclareUnicodeCharacter{AE78}{\UTFK{AE78}}%
+\DeclareUnicodeCharacter{AE79}{\UTFK{AE79}}%
+\DeclareUnicodeCharacter{AE7A}{\UTFK{AE7A}}%
+\DeclareUnicodeCharacter{AE7B}{\UTFK{AE7B}}%
+\DeclareUnicodeCharacter{AE7C}{\UTFK{AE7C}}%
+\DeclareUnicodeCharacter{AE7D}{\UTFK{AE7D}}%
+\DeclareUnicodeCharacter{AE7E}{\UTFK{AE7E}}%
+\DeclareUnicodeCharacter{AE7F}{\UTFK{AE7F}}%
+\DeclareUnicodeCharacter{AE80}{\UTFK{AE80}}%
+\DeclareUnicodeCharacter{AE81}{\UTFK{AE81}}%
+\DeclareUnicodeCharacter{AE82}{\UTFK{AE82}}%
+\DeclareUnicodeCharacter{AE83}{\UTFK{AE83}}%
+\DeclareUnicodeCharacter{AE84}{\UTFK{AE84}}%
+\DeclareUnicodeCharacter{AE85}{\UTFK{AE85}}%
+\DeclareUnicodeCharacter{AE86}{\UTFK{AE86}}%
+\DeclareUnicodeCharacter{AE87}{\UTFK{AE87}}%
+\DeclareUnicodeCharacter{AE88}{\UTFK{AE88}}%
+\DeclareUnicodeCharacter{AE89}{\UTFK{AE89}}%
+\DeclareUnicodeCharacter{AE8A}{\UTFK{AE8A}}%
+\DeclareUnicodeCharacter{AE8B}{\UTFK{AE8B}}%
+\DeclareUnicodeCharacter{AE8C}{\UTFK{AE8C}}%
+\DeclareUnicodeCharacter{AE8D}{\UTFK{AE8D}}%
+\DeclareUnicodeCharacter{AE8E}{\UTFK{AE8E}}%
+\DeclareUnicodeCharacter{AE8F}{\UTFK{AE8F}}%
+\DeclareUnicodeCharacter{AE90}{\UTFK{AE90}}%
+\DeclareUnicodeCharacter{AE91}{\UTFK{AE91}}%
+\DeclareUnicodeCharacter{AE92}{\UTFK{AE92}}%
+\DeclareUnicodeCharacter{AE93}{\UTFK{AE93}}%
+\DeclareUnicodeCharacter{AE94}{\UTFK{AE94}}%
+\DeclareUnicodeCharacter{AE95}{\UTFK{AE95}}%
+\DeclareUnicodeCharacter{AE96}{\UTFK{AE96}}%
+\DeclareUnicodeCharacter{AE97}{\UTFK{AE97}}%
+\DeclareUnicodeCharacter{AE98}{\UTFK{AE98}}%
+\DeclareUnicodeCharacter{AE99}{\UTFK{AE99}}%
+\DeclareUnicodeCharacter{AE9A}{\UTFK{AE9A}}%
+\DeclareUnicodeCharacter{AE9B}{\UTFK{AE9B}}%
+\DeclareUnicodeCharacter{AE9C}{\UTFK{AE9C}}%
+\DeclareUnicodeCharacter{AE9D}{\UTFK{AE9D}}%
+\DeclareUnicodeCharacter{AE9E}{\UTFK{AE9E}}%
+\DeclareUnicodeCharacter{AE9F}{\UTFK{AE9F}}%
+\DeclareUnicodeCharacter{AEA0}{\UTFK{AEA0}}%
+\DeclareUnicodeCharacter{AEA1}{\UTFK{AEA1}}%
+\DeclareUnicodeCharacter{AEA2}{\UTFK{AEA2}}%
+\DeclareUnicodeCharacter{AEA3}{\UTFK{AEA3}}%
+\DeclareUnicodeCharacter{AEA4}{\UTFK{AEA4}}%
+\DeclareUnicodeCharacter{AEA5}{\UTFK{AEA5}}%
+\DeclareUnicodeCharacter{AEA6}{\UTFK{AEA6}}%
+\DeclareUnicodeCharacter{AEA7}{\UTFK{AEA7}}%
+\DeclareUnicodeCharacter{AEA8}{\UTFK{AEA8}}%
+\DeclareUnicodeCharacter{AEA9}{\UTFK{AEA9}}%
+\DeclareUnicodeCharacter{AEAA}{\UTFK{AEAA}}%
+\DeclareUnicodeCharacter{AEAB}{\UTFK{AEAB}}%
+\DeclareUnicodeCharacter{AEAC}{\UTFK{AEAC}}%
+\DeclareUnicodeCharacter{AEAD}{\UTFK{AEAD}}%
+\DeclareUnicodeCharacter{AEAE}{\UTFK{AEAE}}%
+\DeclareUnicodeCharacter{AEAF}{\UTFK{AEAF}}%
+\DeclareUnicodeCharacter{AEB0}{\UTFK{AEB0}}%
+\DeclareUnicodeCharacter{AEB1}{\UTFK{AEB1}}%
+\DeclareUnicodeCharacter{AEB2}{\UTFK{AEB2}}%
+\DeclareUnicodeCharacter{AEB3}{\UTFK{AEB3}}%
+\DeclareUnicodeCharacter{AEB4}{\UTFK{AEB4}}%
+\DeclareUnicodeCharacter{AEB5}{\UTFK{AEB5}}%
+\DeclareUnicodeCharacter{AEB6}{\UTFK{AEB6}}%
+\DeclareUnicodeCharacter{AEB7}{\UTFK{AEB7}}%
+\DeclareUnicodeCharacter{AEB8}{\UTFK{AEB8}}%
+\DeclareUnicodeCharacter{AEB9}{\UTFK{AEB9}}%
+\DeclareUnicodeCharacter{AEBA}{\UTFK{AEBA}}%
+\DeclareUnicodeCharacter{AEBB}{\UTFK{AEBB}}%
+\DeclareUnicodeCharacter{AEBC}{\UTFK{AEBC}}%
+\DeclareUnicodeCharacter{AEBD}{\UTFK{AEBD}}%
+\DeclareUnicodeCharacter{AEBE}{\UTFK{AEBE}}%
+\DeclareUnicodeCharacter{AEBF}{\UTFK{AEBF}}%
+\DeclareUnicodeCharacter{AEC0}{\UTFK{AEC0}}%
+\DeclareUnicodeCharacter{AEC1}{\UTFK{AEC1}}%
+\DeclareUnicodeCharacter{AEC2}{\UTFK{AEC2}}%
+\DeclareUnicodeCharacter{AEC3}{\UTFK{AEC3}}%
+\DeclareUnicodeCharacter{AEC4}{\UTFK{AEC4}}%
+\DeclareUnicodeCharacter{AEC5}{\UTFK{AEC5}}%
+\DeclareUnicodeCharacter{AEC6}{\UTFK{AEC6}}%
+\DeclareUnicodeCharacter{AEC7}{\UTFK{AEC7}}%
+\DeclareUnicodeCharacter{AEC8}{\UTFK{AEC8}}%
+\DeclareUnicodeCharacter{AEC9}{\UTFK{AEC9}}%
+\DeclareUnicodeCharacter{AECA}{\UTFK{AECA}}%
+\DeclareUnicodeCharacter{AECB}{\UTFK{AECB}}%
+\DeclareUnicodeCharacter{AECC}{\UTFK{AECC}}%
+\DeclareUnicodeCharacter{AECD}{\UTFK{AECD}}%
+\DeclareUnicodeCharacter{AECE}{\UTFK{AECE}}%
+\DeclareUnicodeCharacter{AECF}{\UTFK{AECF}}%
+\DeclareUnicodeCharacter{AED0}{\UTFK{AED0}}%
+\DeclareUnicodeCharacter{AED1}{\UTFK{AED1}}%
+\DeclareUnicodeCharacter{AED2}{\UTFK{AED2}}%
+\DeclareUnicodeCharacter{AED3}{\UTFK{AED3}}%
+\DeclareUnicodeCharacter{AED4}{\UTFK{AED4}}%
+\DeclareUnicodeCharacter{AED5}{\UTFK{AED5}}%
+\DeclareUnicodeCharacter{AED6}{\UTFK{AED6}}%
+\DeclareUnicodeCharacter{AED7}{\UTFK{AED7}}%
+\DeclareUnicodeCharacter{AED8}{\UTFK{AED8}}%
+\DeclareUnicodeCharacter{AED9}{\UTFK{AED9}}%
+\DeclareUnicodeCharacter{AEDA}{\UTFK{AEDA}}%
+\DeclareUnicodeCharacter{AEDB}{\UTFK{AEDB}}%
+\DeclareUnicodeCharacter{AEDC}{\UTFK{AEDC}}%
+\DeclareUnicodeCharacter{AEDD}{\UTFK{AEDD}}%
+\DeclareUnicodeCharacter{AEDE}{\UTFK{AEDE}}%
+\DeclareUnicodeCharacter{AEDF}{\UTFK{AEDF}}%
+\DeclareUnicodeCharacter{AEE0}{\UTFK{AEE0}}%
+\DeclareUnicodeCharacter{AEE1}{\UTFK{AEE1}}%
+\DeclareUnicodeCharacter{AEE2}{\UTFK{AEE2}}%
+\DeclareUnicodeCharacter{AEE3}{\UTFK{AEE3}}%
+\DeclareUnicodeCharacter{AEE4}{\UTFK{AEE4}}%
+\DeclareUnicodeCharacter{AEE5}{\UTFK{AEE5}}%
+\DeclareUnicodeCharacter{AEE6}{\UTFK{AEE6}}%
+\DeclareUnicodeCharacter{AEE7}{\UTFK{AEE7}}%
+\DeclareUnicodeCharacter{AEE8}{\UTFK{AEE8}}%
+\DeclareUnicodeCharacter{AEE9}{\UTFK{AEE9}}%
+\DeclareUnicodeCharacter{AEEA}{\UTFK{AEEA}}%
+\DeclareUnicodeCharacter{AEEB}{\UTFK{AEEB}}%
+\DeclareUnicodeCharacter{AEEC}{\UTFK{AEEC}}%
+\DeclareUnicodeCharacter{AEED}{\UTFK{AEED}}%
+\DeclareUnicodeCharacter{AEEE}{\UTFK{AEEE}}%
+\DeclareUnicodeCharacter{AEEF}{\UTFK{AEEF}}%
+\DeclareUnicodeCharacter{AEF0}{\UTFK{AEF0}}%
+\DeclareUnicodeCharacter{AEF1}{\UTFK{AEF1}}%
+\DeclareUnicodeCharacter{AEF2}{\UTFK{AEF2}}%
+\DeclareUnicodeCharacter{AEF3}{\UTFK{AEF3}}%
+\DeclareUnicodeCharacter{AEF4}{\UTFK{AEF4}}%
+\DeclareUnicodeCharacter{AEF5}{\UTFK{AEF5}}%
+\DeclareUnicodeCharacter{AEF6}{\UTFK{AEF6}}%
+\DeclareUnicodeCharacter{AEF7}{\UTFK{AEF7}}%
+\DeclareUnicodeCharacter{AEF8}{\UTFK{AEF8}}%
+\DeclareUnicodeCharacter{AEF9}{\UTFK{AEF9}}%
+\DeclareUnicodeCharacter{AEFA}{\UTFK{AEFA}}%
+\DeclareUnicodeCharacter{AEFB}{\UTFK{AEFB}}%
+\DeclareUnicodeCharacter{AEFC}{\UTFK{AEFC}}%
+\DeclareUnicodeCharacter{AEFD}{\UTFK{AEFD}}%
+\DeclareUnicodeCharacter{AEFE}{\UTFK{AEFE}}%
+\DeclareUnicodeCharacter{AEFF}{\UTFK{AEFF}}%
+\DeclareUnicodeCharacter{AF00}{\UTFK{AF00}}%
+\DeclareUnicodeCharacter{AF01}{\UTFK{AF01}}%
+\DeclareUnicodeCharacter{AF02}{\UTFK{AF02}}%
+\DeclareUnicodeCharacter{AF03}{\UTFK{AF03}}%
+\DeclareUnicodeCharacter{AF04}{\UTFK{AF04}}%
+\DeclareUnicodeCharacter{AF05}{\UTFK{AF05}}%
+\DeclareUnicodeCharacter{AF06}{\UTFK{AF06}}%
+\DeclareUnicodeCharacter{AF07}{\UTFK{AF07}}%
+\DeclareUnicodeCharacter{AF08}{\UTFK{AF08}}%
+\DeclareUnicodeCharacter{AF09}{\UTFK{AF09}}%
+\DeclareUnicodeCharacter{AF0A}{\UTFK{AF0A}}%
+\DeclareUnicodeCharacter{AF0B}{\UTFK{AF0B}}%
+\DeclareUnicodeCharacter{AF0C}{\UTFK{AF0C}}%
+\DeclareUnicodeCharacter{AF0D}{\UTFK{AF0D}}%
+\DeclareUnicodeCharacter{AF0E}{\UTFK{AF0E}}%
+\DeclareUnicodeCharacter{AF0F}{\UTFK{AF0F}}%
+\DeclareUnicodeCharacter{AF10}{\UTFK{AF10}}%
+\DeclareUnicodeCharacter{AF11}{\UTFK{AF11}}%
+\DeclareUnicodeCharacter{AF12}{\UTFK{AF12}}%
+\DeclareUnicodeCharacter{AF13}{\UTFK{AF13}}%
+\DeclareUnicodeCharacter{AF14}{\UTFK{AF14}}%
+\DeclareUnicodeCharacter{AF15}{\UTFK{AF15}}%
+\DeclareUnicodeCharacter{AF16}{\UTFK{AF16}}%
+\DeclareUnicodeCharacter{AF17}{\UTFK{AF17}}%
+\DeclareUnicodeCharacter{AF18}{\UTFK{AF18}}%
+\DeclareUnicodeCharacter{AF19}{\UTFK{AF19}}%
+\DeclareUnicodeCharacter{AF1A}{\UTFK{AF1A}}%
+\DeclareUnicodeCharacter{AF1B}{\UTFK{AF1B}}%
+\DeclareUnicodeCharacter{AF1C}{\UTFK{AF1C}}%
+\DeclareUnicodeCharacter{AF1D}{\UTFK{AF1D}}%
+\DeclareUnicodeCharacter{AF1E}{\UTFK{AF1E}}%
+\DeclareUnicodeCharacter{AF1F}{\UTFK{AF1F}}%
+\DeclareUnicodeCharacter{AF20}{\UTFK{AF20}}%
+\DeclareUnicodeCharacter{AF21}{\UTFK{AF21}}%
+\DeclareUnicodeCharacter{AF22}{\UTFK{AF22}}%
+\DeclareUnicodeCharacter{AF23}{\UTFK{AF23}}%
+\DeclareUnicodeCharacter{AF24}{\UTFK{AF24}}%
+\DeclareUnicodeCharacter{AF25}{\UTFK{AF25}}%
+\DeclareUnicodeCharacter{AF26}{\UTFK{AF26}}%
+\DeclareUnicodeCharacter{AF27}{\UTFK{AF27}}%
+\DeclareUnicodeCharacter{AF28}{\UTFK{AF28}}%
+\DeclareUnicodeCharacter{AF29}{\UTFK{AF29}}%
+\DeclareUnicodeCharacter{AF2A}{\UTFK{AF2A}}%
+\DeclareUnicodeCharacter{AF2B}{\UTFK{AF2B}}%
+\DeclareUnicodeCharacter{AF2C}{\UTFK{AF2C}}%
+\DeclareUnicodeCharacter{AF2D}{\UTFK{AF2D}}%
+\DeclareUnicodeCharacter{AF2E}{\UTFK{AF2E}}%
+\DeclareUnicodeCharacter{AF2F}{\UTFK{AF2F}}%
+\DeclareUnicodeCharacter{AF30}{\UTFK{AF30}}%
+\DeclareUnicodeCharacter{AF31}{\UTFK{AF31}}%
+\DeclareUnicodeCharacter{AF32}{\UTFK{AF32}}%
+\DeclareUnicodeCharacter{AF33}{\UTFK{AF33}}%
+\DeclareUnicodeCharacter{AF34}{\UTFK{AF34}}%
+\DeclareUnicodeCharacter{AF35}{\UTFK{AF35}}%
+\DeclareUnicodeCharacter{AF36}{\UTFK{AF36}}%
+\DeclareUnicodeCharacter{AF37}{\UTFK{AF37}}%
+\DeclareUnicodeCharacter{AF38}{\UTFK{AF38}}%
+\DeclareUnicodeCharacter{AF39}{\UTFK{AF39}}%
+\DeclareUnicodeCharacter{AF3A}{\UTFK{AF3A}}%
+\DeclareUnicodeCharacter{AF3B}{\UTFK{AF3B}}%
+\DeclareUnicodeCharacter{AF3C}{\UTFK{AF3C}}%
+\DeclareUnicodeCharacter{AF3D}{\UTFK{AF3D}}%
+\DeclareUnicodeCharacter{AF3E}{\UTFK{AF3E}}%
+\DeclareUnicodeCharacter{AF3F}{\UTFK{AF3F}}%
+\DeclareUnicodeCharacter{AF40}{\UTFK{AF40}}%
+\DeclareUnicodeCharacter{AF41}{\UTFK{AF41}}%
+\DeclareUnicodeCharacter{AF42}{\UTFK{AF42}}%
+\DeclareUnicodeCharacter{AF43}{\UTFK{AF43}}%
+\DeclareUnicodeCharacter{AF44}{\UTFK{AF44}}%
+\DeclareUnicodeCharacter{AF45}{\UTFK{AF45}}%
+\DeclareUnicodeCharacter{AF46}{\UTFK{AF46}}%
+\DeclareUnicodeCharacter{AF47}{\UTFK{AF47}}%
+\DeclareUnicodeCharacter{AF48}{\UTFK{AF48}}%
+\DeclareUnicodeCharacter{AF49}{\UTFK{AF49}}%
+\DeclareUnicodeCharacter{AF4A}{\UTFK{AF4A}}%
+\DeclareUnicodeCharacter{AF4B}{\UTFK{AF4B}}%
+\DeclareUnicodeCharacter{AF4C}{\UTFK{AF4C}}%
+\DeclareUnicodeCharacter{AF4D}{\UTFK{AF4D}}%
+\DeclareUnicodeCharacter{AF4E}{\UTFK{AF4E}}%
+\DeclareUnicodeCharacter{AF4F}{\UTFK{AF4F}}%
+\DeclareUnicodeCharacter{AF50}{\UTFK{AF50}}%
+\DeclareUnicodeCharacter{AF51}{\UTFK{AF51}}%
+\DeclareUnicodeCharacter{AF52}{\UTFK{AF52}}%
+\DeclareUnicodeCharacter{AF53}{\UTFK{AF53}}%
+\DeclareUnicodeCharacter{AF54}{\UTFK{AF54}}%
+\DeclareUnicodeCharacter{AF55}{\UTFK{AF55}}%
+\DeclareUnicodeCharacter{AF56}{\UTFK{AF56}}%
+\DeclareUnicodeCharacter{AF57}{\UTFK{AF57}}%
+\DeclareUnicodeCharacter{AF58}{\UTFK{AF58}}%
+\DeclareUnicodeCharacter{AF59}{\UTFK{AF59}}%
+\DeclareUnicodeCharacter{AF5A}{\UTFK{AF5A}}%
+\DeclareUnicodeCharacter{AF5B}{\UTFK{AF5B}}%
+\DeclareUnicodeCharacter{AF5C}{\UTFK{AF5C}}%
+\DeclareUnicodeCharacter{AF5D}{\UTFK{AF5D}}%
+\DeclareUnicodeCharacter{AF5E}{\UTFK{AF5E}}%
+\DeclareUnicodeCharacter{AF5F}{\UTFK{AF5F}}%
+\DeclareUnicodeCharacter{AF60}{\UTFK{AF60}}%
+\DeclareUnicodeCharacter{AF61}{\UTFK{AF61}}%
+\DeclareUnicodeCharacter{AF62}{\UTFK{AF62}}%
+\DeclareUnicodeCharacter{AF63}{\UTFK{AF63}}%
+\DeclareUnicodeCharacter{AF64}{\UTFK{AF64}}%
+\DeclareUnicodeCharacter{AF65}{\UTFK{AF65}}%
+\DeclareUnicodeCharacter{AF66}{\UTFK{AF66}}%
+\DeclareUnicodeCharacter{AF67}{\UTFK{AF67}}%
+\DeclareUnicodeCharacter{AF68}{\UTFK{AF68}}%
+\DeclareUnicodeCharacter{AF69}{\UTFK{AF69}}%
+\DeclareUnicodeCharacter{AF6A}{\UTFK{AF6A}}%
+\DeclareUnicodeCharacter{AF6B}{\UTFK{AF6B}}%
+\DeclareUnicodeCharacter{AF6C}{\UTFK{AF6C}}%
+\DeclareUnicodeCharacter{AF6D}{\UTFK{AF6D}}%
+\DeclareUnicodeCharacter{AF6E}{\UTFK{AF6E}}%
+\DeclareUnicodeCharacter{AF6F}{\UTFK{AF6F}}%
+\DeclareUnicodeCharacter{AF70}{\UTFK{AF70}}%
+\DeclareUnicodeCharacter{AF71}{\UTFK{AF71}}%
+\DeclareUnicodeCharacter{AF72}{\UTFK{AF72}}%
+\DeclareUnicodeCharacter{AF73}{\UTFK{AF73}}%
+\DeclareUnicodeCharacter{AF74}{\UTFK{AF74}}%
+\DeclareUnicodeCharacter{AF75}{\UTFK{AF75}}%
+\DeclareUnicodeCharacter{AF76}{\UTFK{AF76}}%
+\DeclareUnicodeCharacter{AF77}{\UTFK{AF77}}%
+\DeclareUnicodeCharacter{AF78}{\UTFK{AF78}}%
+\DeclareUnicodeCharacter{AF79}{\UTFK{AF79}}%
+\DeclareUnicodeCharacter{AF7A}{\UTFK{AF7A}}%
+\DeclareUnicodeCharacter{AF7B}{\UTFK{AF7B}}%
+\DeclareUnicodeCharacter{AF7C}{\UTFK{AF7C}}%
+\DeclareUnicodeCharacter{AF7D}{\UTFK{AF7D}}%
+\DeclareUnicodeCharacter{AF7E}{\UTFK{AF7E}}%
+\DeclareUnicodeCharacter{AF7F}{\UTFK{AF7F}}%
+\DeclareUnicodeCharacter{AF80}{\UTFK{AF80}}%
+\DeclareUnicodeCharacter{AF81}{\UTFK{AF81}}%
+\DeclareUnicodeCharacter{AF82}{\UTFK{AF82}}%
+\DeclareUnicodeCharacter{AF83}{\UTFK{AF83}}%
+\DeclareUnicodeCharacter{AF84}{\UTFK{AF84}}%
+\DeclareUnicodeCharacter{AF85}{\UTFK{AF85}}%
+\DeclareUnicodeCharacter{AF86}{\UTFK{AF86}}%
+\DeclareUnicodeCharacter{AF87}{\UTFK{AF87}}%
+\DeclareUnicodeCharacter{AF88}{\UTFK{AF88}}%
+\DeclareUnicodeCharacter{AF89}{\UTFK{AF89}}%
+\DeclareUnicodeCharacter{AF8A}{\UTFK{AF8A}}%
+\DeclareUnicodeCharacter{AF8B}{\UTFK{AF8B}}%
+\DeclareUnicodeCharacter{AF8C}{\UTFK{AF8C}}%
+\DeclareUnicodeCharacter{AF8D}{\UTFK{AF8D}}%
+\DeclareUnicodeCharacter{AF8E}{\UTFK{AF8E}}%
+\DeclareUnicodeCharacter{AF8F}{\UTFK{AF8F}}%
+\DeclareUnicodeCharacter{AF90}{\UTFK{AF90}}%
+\DeclareUnicodeCharacter{AF91}{\UTFK{AF91}}%
+\DeclareUnicodeCharacter{AF92}{\UTFK{AF92}}%
+\DeclareUnicodeCharacter{AF93}{\UTFK{AF93}}%
+\DeclareUnicodeCharacter{AF94}{\UTFK{AF94}}%
+\DeclareUnicodeCharacter{AF95}{\UTFK{AF95}}%
+\DeclareUnicodeCharacter{AF96}{\UTFK{AF96}}%
+\DeclareUnicodeCharacter{AF97}{\UTFK{AF97}}%
+\DeclareUnicodeCharacter{AF98}{\UTFK{AF98}}%
+\DeclareUnicodeCharacter{AF99}{\UTFK{AF99}}%
+\DeclareUnicodeCharacter{AF9A}{\UTFK{AF9A}}%
+\DeclareUnicodeCharacter{AF9B}{\UTFK{AF9B}}%
+\DeclareUnicodeCharacter{AF9C}{\UTFK{AF9C}}%
+\DeclareUnicodeCharacter{AF9D}{\UTFK{AF9D}}%
+\DeclareUnicodeCharacter{AF9E}{\UTFK{AF9E}}%
+\DeclareUnicodeCharacter{AF9F}{\UTFK{AF9F}}%
+\DeclareUnicodeCharacter{AFA0}{\UTFK{AFA0}}%
+\DeclareUnicodeCharacter{AFA1}{\UTFK{AFA1}}%
+\DeclareUnicodeCharacter{AFA2}{\UTFK{AFA2}}%
+\DeclareUnicodeCharacter{AFA3}{\UTFK{AFA3}}%
+\DeclareUnicodeCharacter{AFA4}{\UTFK{AFA4}}%
+\DeclareUnicodeCharacter{AFA5}{\UTFK{AFA5}}%
+\DeclareUnicodeCharacter{AFA6}{\UTFK{AFA6}}%
+\DeclareUnicodeCharacter{AFA7}{\UTFK{AFA7}}%
+\DeclareUnicodeCharacter{AFA8}{\UTFK{AFA8}}%
+\DeclareUnicodeCharacter{AFA9}{\UTFK{AFA9}}%
+\DeclareUnicodeCharacter{AFAA}{\UTFK{AFAA}}%
+\DeclareUnicodeCharacter{AFAB}{\UTFK{AFAB}}%
+\DeclareUnicodeCharacter{AFAC}{\UTFK{AFAC}}%
+\DeclareUnicodeCharacter{AFAD}{\UTFK{AFAD}}%
+\DeclareUnicodeCharacter{AFAE}{\UTFK{AFAE}}%
+\DeclareUnicodeCharacter{AFAF}{\UTFK{AFAF}}%
+\DeclareUnicodeCharacter{AFB0}{\UTFK{AFB0}}%
+\DeclareUnicodeCharacter{AFB1}{\UTFK{AFB1}}%
+\DeclareUnicodeCharacter{AFB2}{\UTFK{AFB2}}%
+\DeclareUnicodeCharacter{AFB3}{\UTFK{AFB3}}%
+\DeclareUnicodeCharacter{AFB4}{\UTFK{AFB4}}%
+\DeclareUnicodeCharacter{AFB5}{\UTFK{AFB5}}%
+\DeclareUnicodeCharacter{AFB6}{\UTFK{AFB6}}%
+\DeclareUnicodeCharacter{AFB7}{\UTFK{AFB7}}%
+\DeclareUnicodeCharacter{AFB8}{\UTFK{AFB8}}%
+\DeclareUnicodeCharacter{AFB9}{\UTFK{AFB9}}%
+\DeclareUnicodeCharacter{AFBA}{\UTFK{AFBA}}%
+\DeclareUnicodeCharacter{AFBB}{\UTFK{AFBB}}%
+\DeclareUnicodeCharacter{AFBC}{\UTFK{AFBC}}%
+\DeclareUnicodeCharacter{AFBD}{\UTFK{AFBD}}%
+\DeclareUnicodeCharacter{AFBE}{\UTFK{AFBE}}%
+\DeclareUnicodeCharacter{AFBF}{\UTFK{AFBF}}%
+\DeclareUnicodeCharacter{AFC0}{\UTFK{AFC0}}%
+\DeclareUnicodeCharacter{AFC1}{\UTFK{AFC1}}%
+\DeclareUnicodeCharacter{AFC2}{\UTFK{AFC2}}%
+\DeclareUnicodeCharacter{AFC3}{\UTFK{AFC3}}%
+\DeclareUnicodeCharacter{AFC4}{\UTFK{AFC4}}%
+\DeclareUnicodeCharacter{AFC5}{\UTFK{AFC5}}%
+\DeclareUnicodeCharacter{AFC6}{\UTFK{AFC6}}%
+\DeclareUnicodeCharacter{AFC7}{\UTFK{AFC7}}%
+\DeclareUnicodeCharacter{AFC8}{\UTFK{AFC8}}%
+\DeclareUnicodeCharacter{AFC9}{\UTFK{AFC9}}%
+\DeclareUnicodeCharacter{AFCA}{\UTFK{AFCA}}%
+\DeclareUnicodeCharacter{AFCB}{\UTFK{AFCB}}%
+\DeclareUnicodeCharacter{AFCC}{\UTFK{AFCC}}%
+\DeclareUnicodeCharacter{AFCD}{\UTFK{AFCD}}%
+\DeclareUnicodeCharacter{AFCE}{\UTFK{AFCE}}%
+\DeclareUnicodeCharacter{AFCF}{\UTFK{AFCF}}%
+\DeclareUnicodeCharacter{AFD0}{\UTFK{AFD0}}%
+\DeclareUnicodeCharacter{AFD1}{\UTFK{AFD1}}%
+\DeclareUnicodeCharacter{AFD2}{\UTFK{AFD2}}%
+\DeclareUnicodeCharacter{AFD3}{\UTFK{AFD3}}%
+\DeclareUnicodeCharacter{AFD4}{\UTFK{AFD4}}%
+\DeclareUnicodeCharacter{AFD5}{\UTFK{AFD5}}%
+\DeclareUnicodeCharacter{AFD6}{\UTFK{AFD6}}%
+\DeclareUnicodeCharacter{AFD7}{\UTFK{AFD7}}%
+\DeclareUnicodeCharacter{AFD8}{\UTFK{AFD8}}%
+\DeclareUnicodeCharacter{AFD9}{\UTFK{AFD9}}%
+\DeclareUnicodeCharacter{AFDA}{\UTFK{AFDA}}%
+\DeclareUnicodeCharacter{AFDB}{\UTFK{AFDB}}%
+\DeclareUnicodeCharacter{AFDC}{\UTFK{AFDC}}%
+\DeclareUnicodeCharacter{AFDD}{\UTFK{AFDD}}%
+\DeclareUnicodeCharacter{AFDE}{\UTFK{AFDE}}%
+\DeclareUnicodeCharacter{AFDF}{\UTFK{AFDF}}%
+\DeclareUnicodeCharacter{AFE0}{\UTFK{AFE0}}%
+\DeclareUnicodeCharacter{AFE1}{\UTFK{AFE1}}%
+\DeclareUnicodeCharacter{AFE2}{\UTFK{AFE2}}%
+\DeclareUnicodeCharacter{AFE3}{\UTFK{AFE3}}%
+\DeclareUnicodeCharacter{AFE4}{\UTFK{AFE4}}%
+\DeclareUnicodeCharacter{AFE5}{\UTFK{AFE5}}%
+\DeclareUnicodeCharacter{AFE6}{\UTFK{AFE6}}%
+\DeclareUnicodeCharacter{AFE7}{\UTFK{AFE7}}%
+\DeclareUnicodeCharacter{AFE8}{\UTFK{AFE8}}%
+\DeclareUnicodeCharacter{AFE9}{\UTFK{AFE9}}%
+\DeclareUnicodeCharacter{AFEA}{\UTFK{AFEA}}%
+\DeclareUnicodeCharacter{AFEB}{\UTFK{AFEB}}%
+\DeclareUnicodeCharacter{AFEC}{\UTFK{AFEC}}%
+\DeclareUnicodeCharacter{AFED}{\UTFK{AFED}}%
+\DeclareUnicodeCharacter{AFEE}{\UTFK{AFEE}}%
+\DeclareUnicodeCharacter{AFEF}{\UTFK{AFEF}}%
+\DeclareUnicodeCharacter{AFF0}{\UTFK{AFF0}}%
+\DeclareUnicodeCharacter{AFF1}{\UTFK{AFF1}}%
+\DeclareUnicodeCharacter{AFF2}{\UTFK{AFF2}}%
+\DeclareUnicodeCharacter{AFF3}{\UTFK{AFF3}}%
+\DeclareUnicodeCharacter{AFF4}{\UTFK{AFF4}}%
+\DeclareUnicodeCharacter{AFF5}{\UTFK{AFF5}}%
+\DeclareUnicodeCharacter{AFF6}{\UTFK{AFF6}}%
+\DeclareUnicodeCharacter{AFF7}{\UTFK{AFF7}}%
+\DeclareUnicodeCharacter{AFF8}{\UTFK{AFF8}}%
+\DeclareUnicodeCharacter{AFF9}{\UTFK{AFF9}}%
+\DeclareUnicodeCharacter{AFFA}{\UTFK{AFFA}}%
+\DeclareUnicodeCharacter{AFFB}{\UTFK{AFFB}}%
+\DeclareUnicodeCharacter{AFFC}{\UTFK{AFFC}}%
+\DeclareUnicodeCharacter{AFFD}{\UTFK{AFFD}}%
+\DeclareUnicodeCharacter{AFFE}{\UTFK{AFFE}}%
+\DeclareUnicodeCharacter{AFFF}{\UTFK{AFFF}}%
+\DeclareUnicodeCharacter{B000}{\UTFK{B000}}%
+\DeclareUnicodeCharacter{B001}{\UTFK{B001}}%
+\DeclareUnicodeCharacter{B002}{\UTFK{B002}}%
+\DeclareUnicodeCharacter{B003}{\UTFK{B003}}%
+\DeclareUnicodeCharacter{B004}{\UTFK{B004}}%
+\DeclareUnicodeCharacter{B005}{\UTFK{B005}}%
+\DeclareUnicodeCharacter{B006}{\UTFK{B006}}%
+\DeclareUnicodeCharacter{B007}{\UTFK{B007}}%
+\DeclareUnicodeCharacter{B008}{\UTFK{B008}}%
+\DeclareUnicodeCharacter{B009}{\UTFK{B009}}%
+\DeclareUnicodeCharacter{B00A}{\UTFK{B00A}}%
+\DeclareUnicodeCharacter{B00B}{\UTFK{B00B}}%
+\DeclareUnicodeCharacter{B00C}{\UTFK{B00C}}%
+\DeclareUnicodeCharacter{B00D}{\UTFK{B00D}}%
+\DeclareUnicodeCharacter{B00E}{\UTFK{B00E}}%
+\DeclareUnicodeCharacter{B00F}{\UTFK{B00F}}%
+\DeclareUnicodeCharacter{B010}{\UTFK{B010}}%
+\DeclareUnicodeCharacter{B011}{\UTFK{B011}}%
+\DeclareUnicodeCharacter{B012}{\UTFK{B012}}%
+\DeclareUnicodeCharacter{B013}{\UTFK{B013}}%
+\DeclareUnicodeCharacter{B014}{\UTFK{B014}}%
+\DeclareUnicodeCharacter{B015}{\UTFK{B015}}%
+\DeclareUnicodeCharacter{B016}{\UTFK{B016}}%
+\DeclareUnicodeCharacter{B017}{\UTFK{B017}}%
+\DeclareUnicodeCharacter{B018}{\UTFK{B018}}%
+\DeclareUnicodeCharacter{B019}{\UTFK{B019}}%
+\DeclareUnicodeCharacter{B01A}{\UTFK{B01A}}%
+\DeclareUnicodeCharacter{B01B}{\UTFK{B01B}}%
+\DeclareUnicodeCharacter{B01C}{\UTFK{B01C}}%
+\DeclareUnicodeCharacter{B01D}{\UTFK{B01D}}%
+\DeclareUnicodeCharacter{B01E}{\UTFK{B01E}}%
+\DeclareUnicodeCharacter{B01F}{\UTFK{B01F}}%
+\DeclareUnicodeCharacter{B020}{\UTFK{B020}}%
+\DeclareUnicodeCharacter{B021}{\UTFK{B021}}%
+\DeclareUnicodeCharacter{B022}{\UTFK{B022}}%
+\DeclareUnicodeCharacter{B023}{\UTFK{B023}}%
+\DeclareUnicodeCharacter{B024}{\UTFK{B024}}%
+\DeclareUnicodeCharacter{B025}{\UTFK{B025}}%
+\DeclareUnicodeCharacter{B026}{\UTFK{B026}}%
+\DeclareUnicodeCharacter{B027}{\UTFK{B027}}%
+\DeclareUnicodeCharacter{B028}{\UTFK{B028}}%
+\DeclareUnicodeCharacter{B029}{\UTFK{B029}}%
+\DeclareUnicodeCharacter{B02A}{\UTFK{B02A}}%
+\DeclareUnicodeCharacter{B02B}{\UTFK{B02B}}%
+\DeclareUnicodeCharacter{B02C}{\UTFK{B02C}}%
+\DeclareUnicodeCharacter{B02D}{\UTFK{B02D}}%
+\DeclareUnicodeCharacter{B02E}{\UTFK{B02E}}%
+\DeclareUnicodeCharacter{B02F}{\UTFK{B02F}}%
+\DeclareUnicodeCharacter{B030}{\UTFK{B030}}%
+\DeclareUnicodeCharacter{B031}{\UTFK{B031}}%
+\DeclareUnicodeCharacter{B032}{\UTFK{B032}}%
+\DeclareUnicodeCharacter{B033}{\UTFK{B033}}%
+\DeclareUnicodeCharacter{B034}{\UTFK{B034}}%
+\DeclareUnicodeCharacter{B035}{\UTFK{B035}}%
+\DeclareUnicodeCharacter{B036}{\UTFK{B036}}%
+\DeclareUnicodeCharacter{B037}{\UTFK{B037}}%
+\DeclareUnicodeCharacter{B038}{\UTFK{B038}}%
+\DeclareUnicodeCharacter{B039}{\UTFK{B039}}%
+\DeclareUnicodeCharacter{B03A}{\UTFK{B03A}}%
+\DeclareUnicodeCharacter{B03B}{\UTFK{B03B}}%
+\DeclareUnicodeCharacter{B03C}{\UTFK{B03C}}%
+\DeclareUnicodeCharacter{B03D}{\UTFK{B03D}}%
+\DeclareUnicodeCharacter{B03E}{\UTFK{B03E}}%
+\DeclareUnicodeCharacter{B03F}{\UTFK{B03F}}%
+\DeclareUnicodeCharacter{B040}{\UTFK{B040}}%
+\DeclareUnicodeCharacter{B041}{\UTFK{B041}}%
+\DeclareUnicodeCharacter{B042}{\UTFK{B042}}%
+\DeclareUnicodeCharacter{B043}{\UTFK{B043}}%
+\DeclareUnicodeCharacter{B044}{\UTFK{B044}}%
+\DeclareUnicodeCharacter{B045}{\UTFK{B045}}%
+\DeclareUnicodeCharacter{B046}{\UTFK{B046}}%
+\DeclareUnicodeCharacter{B047}{\UTFK{B047}}%
+\DeclareUnicodeCharacter{B048}{\UTFK{B048}}%
+\DeclareUnicodeCharacter{B049}{\UTFK{B049}}%
+\DeclareUnicodeCharacter{B04A}{\UTFK{B04A}}%
+\DeclareUnicodeCharacter{B04B}{\UTFK{B04B}}%
+\DeclareUnicodeCharacter{B04C}{\UTFK{B04C}}%
+\DeclareUnicodeCharacter{B04D}{\UTFK{B04D}}%
+\DeclareUnicodeCharacter{B04E}{\UTFK{B04E}}%
+\DeclareUnicodeCharacter{B04F}{\UTFK{B04F}}%
+\DeclareUnicodeCharacter{B050}{\UTFK{B050}}%
+\DeclareUnicodeCharacter{B051}{\UTFK{B051}}%
+\DeclareUnicodeCharacter{B052}{\UTFK{B052}}%
+\DeclareUnicodeCharacter{B053}{\UTFK{B053}}%
+\DeclareUnicodeCharacter{B054}{\UTFK{B054}}%
+\DeclareUnicodeCharacter{B055}{\UTFK{B055}}%
+\DeclareUnicodeCharacter{B056}{\UTFK{B056}}%
+\DeclareUnicodeCharacter{B057}{\UTFK{B057}}%
+\DeclareUnicodeCharacter{B058}{\UTFK{B058}}%
+\DeclareUnicodeCharacter{B059}{\UTFK{B059}}%
+\DeclareUnicodeCharacter{B05A}{\UTFK{B05A}}%
+\DeclareUnicodeCharacter{B05B}{\UTFK{B05B}}%
+\DeclareUnicodeCharacter{B05C}{\UTFK{B05C}}%
+\DeclareUnicodeCharacter{B05D}{\UTFK{B05D}}%
+\DeclareUnicodeCharacter{B05E}{\UTFK{B05E}}%
+\DeclareUnicodeCharacter{B05F}{\UTFK{B05F}}%
+\DeclareUnicodeCharacter{B060}{\UTFK{B060}}%
+\DeclareUnicodeCharacter{B061}{\UTFK{B061}}%
+\DeclareUnicodeCharacter{B062}{\UTFK{B062}}%
+\DeclareUnicodeCharacter{B063}{\UTFK{B063}}%
+\DeclareUnicodeCharacter{B064}{\UTFK{B064}}%
+\DeclareUnicodeCharacter{B065}{\UTFK{B065}}%
+\DeclareUnicodeCharacter{B066}{\UTFK{B066}}%
+\DeclareUnicodeCharacter{B067}{\UTFK{B067}}%
+\DeclareUnicodeCharacter{B068}{\UTFK{B068}}%
+\DeclareUnicodeCharacter{B069}{\UTFK{B069}}%
+\DeclareUnicodeCharacter{B06A}{\UTFK{B06A}}%
+\DeclareUnicodeCharacter{B06B}{\UTFK{B06B}}%
+\DeclareUnicodeCharacter{B06C}{\UTFK{B06C}}%
+\DeclareUnicodeCharacter{B06D}{\UTFK{B06D}}%
+\DeclareUnicodeCharacter{B06E}{\UTFK{B06E}}%
+\DeclareUnicodeCharacter{B06F}{\UTFK{B06F}}%
+\DeclareUnicodeCharacter{B070}{\UTFK{B070}}%
+\DeclareUnicodeCharacter{B071}{\UTFK{B071}}%
+\DeclareUnicodeCharacter{B072}{\UTFK{B072}}%
+\DeclareUnicodeCharacter{B073}{\UTFK{B073}}%
+\DeclareUnicodeCharacter{B074}{\UTFK{B074}}%
+\DeclareUnicodeCharacter{B075}{\UTFK{B075}}%
+\DeclareUnicodeCharacter{B076}{\UTFK{B076}}%
+\DeclareUnicodeCharacter{B077}{\UTFK{B077}}%
+\DeclareUnicodeCharacter{B078}{\UTFK{B078}}%
+\DeclareUnicodeCharacter{B079}{\UTFK{B079}}%
+\DeclareUnicodeCharacter{B07A}{\UTFK{B07A}}%
+\DeclareUnicodeCharacter{B07B}{\UTFK{B07B}}%
+\DeclareUnicodeCharacter{B07C}{\UTFK{B07C}}%
+\DeclareUnicodeCharacter{B07D}{\UTFK{B07D}}%
+\DeclareUnicodeCharacter{B07E}{\UTFK{B07E}}%
+\DeclareUnicodeCharacter{B07F}{\UTFK{B07F}}%
+\DeclareUnicodeCharacter{B080}{\UTFK{B080}}%
+\DeclareUnicodeCharacter{B081}{\UTFK{B081}}%
+\DeclareUnicodeCharacter{B082}{\UTFK{B082}}%
+\DeclareUnicodeCharacter{B083}{\UTFK{B083}}%
+\DeclareUnicodeCharacter{B084}{\UTFK{B084}}%
+\DeclareUnicodeCharacter{B085}{\UTFK{B085}}%
+\DeclareUnicodeCharacter{B086}{\UTFK{B086}}%
+\DeclareUnicodeCharacter{B087}{\UTFK{B087}}%
+\DeclareUnicodeCharacter{B088}{\UTFK{B088}}%
+\DeclareUnicodeCharacter{B089}{\UTFK{B089}}%
+\DeclareUnicodeCharacter{B08A}{\UTFK{B08A}}%
+\DeclareUnicodeCharacter{B08B}{\UTFK{B08B}}%
+\DeclareUnicodeCharacter{B08C}{\UTFK{B08C}}%
+\DeclareUnicodeCharacter{B08D}{\UTFK{B08D}}%
+\DeclareUnicodeCharacter{B08E}{\UTFK{B08E}}%
+\DeclareUnicodeCharacter{B08F}{\UTFK{B08F}}%
+\DeclareUnicodeCharacter{B090}{\UTFK{B090}}%
+\DeclareUnicodeCharacter{B091}{\UTFK{B091}}%
+\DeclareUnicodeCharacter{B092}{\UTFK{B092}}%
+\DeclareUnicodeCharacter{B093}{\UTFK{B093}}%
+\DeclareUnicodeCharacter{B094}{\UTFK{B094}}%
+\DeclareUnicodeCharacter{B095}{\UTFK{B095}}%
+\DeclareUnicodeCharacter{B096}{\UTFK{B096}}%
+\DeclareUnicodeCharacter{B097}{\UTFK{B097}}%
+\DeclareUnicodeCharacter{B098}{\UTFK{B098}}%
+\DeclareUnicodeCharacter{B099}{\UTFK{B099}}%
+\DeclareUnicodeCharacter{B09A}{\UTFK{B09A}}%
+\DeclareUnicodeCharacter{B09B}{\UTFK{B09B}}%
+\DeclareUnicodeCharacter{B09C}{\UTFK{B09C}}%
+\DeclareUnicodeCharacter{B09D}{\UTFK{B09D}}%
+\DeclareUnicodeCharacter{B09E}{\UTFK{B09E}}%
+\DeclareUnicodeCharacter{B09F}{\UTFK{B09F}}%
+\DeclareUnicodeCharacter{B0A0}{\UTFK{B0A0}}%
+\DeclareUnicodeCharacter{B0A1}{\UTFK{B0A1}}%
+\DeclareUnicodeCharacter{B0A2}{\UTFK{B0A2}}%
+\DeclareUnicodeCharacter{B0A3}{\UTFK{B0A3}}%
+\DeclareUnicodeCharacter{B0A4}{\UTFK{B0A4}}%
+\DeclareUnicodeCharacter{B0A5}{\UTFK{B0A5}}%
+\DeclareUnicodeCharacter{B0A6}{\UTFK{B0A6}}%
+\DeclareUnicodeCharacter{B0A7}{\UTFK{B0A7}}%
+\DeclareUnicodeCharacter{B0A8}{\UTFK{B0A8}}%
+\DeclareUnicodeCharacter{B0A9}{\UTFK{B0A9}}%
+\DeclareUnicodeCharacter{B0AA}{\UTFK{B0AA}}%
+\DeclareUnicodeCharacter{B0AB}{\UTFK{B0AB}}%
+\DeclareUnicodeCharacter{B0AC}{\UTFK{B0AC}}%
+\DeclareUnicodeCharacter{B0AD}{\UTFK{B0AD}}%
+\DeclareUnicodeCharacter{B0AE}{\UTFK{B0AE}}%
+\DeclareUnicodeCharacter{B0AF}{\UTFK{B0AF}}%
+\DeclareUnicodeCharacter{B0B0}{\UTFK{B0B0}}%
+\DeclareUnicodeCharacter{B0B1}{\UTFK{B0B1}}%
+\DeclareUnicodeCharacter{B0B2}{\UTFK{B0B2}}%
+\DeclareUnicodeCharacter{B0B3}{\UTFK{B0B3}}%
+\DeclareUnicodeCharacter{B0B4}{\UTFK{B0B4}}%
+\DeclareUnicodeCharacter{B0B5}{\UTFK{B0B5}}%
+\DeclareUnicodeCharacter{B0B6}{\UTFK{B0B6}}%
+\DeclareUnicodeCharacter{B0B7}{\UTFK{B0B7}}%
+\DeclareUnicodeCharacter{B0B8}{\UTFK{B0B8}}%
+\DeclareUnicodeCharacter{B0B9}{\UTFK{B0B9}}%
+\DeclareUnicodeCharacter{B0BA}{\UTFK{B0BA}}%
+\DeclareUnicodeCharacter{B0BB}{\UTFK{B0BB}}%
+\DeclareUnicodeCharacter{B0BC}{\UTFK{B0BC}}%
+\DeclareUnicodeCharacter{B0BD}{\UTFK{B0BD}}%
+\DeclareUnicodeCharacter{B0BE}{\UTFK{B0BE}}%
+\DeclareUnicodeCharacter{B0BF}{\UTFK{B0BF}}%
+\DeclareUnicodeCharacter{B0C0}{\UTFK{B0C0}}%
+\DeclareUnicodeCharacter{B0C1}{\UTFK{B0C1}}%
+\DeclareUnicodeCharacter{B0C2}{\UTFK{B0C2}}%
+\DeclareUnicodeCharacter{B0C3}{\UTFK{B0C3}}%
+\DeclareUnicodeCharacter{B0C4}{\UTFK{B0C4}}%
+\DeclareUnicodeCharacter{B0C5}{\UTFK{B0C5}}%
+\DeclareUnicodeCharacter{B0C6}{\UTFK{B0C6}}%
+\DeclareUnicodeCharacter{B0C7}{\UTFK{B0C7}}%
+\DeclareUnicodeCharacter{B0C8}{\UTFK{B0C8}}%
+\DeclareUnicodeCharacter{B0C9}{\UTFK{B0C9}}%
+\DeclareUnicodeCharacter{B0CA}{\UTFK{B0CA}}%
+\DeclareUnicodeCharacter{B0CB}{\UTFK{B0CB}}%
+\DeclareUnicodeCharacter{B0CC}{\UTFK{B0CC}}%
+\DeclareUnicodeCharacter{B0CD}{\UTFK{B0CD}}%
+\DeclareUnicodeCharacter{B0CE}{\UTFK{B0CE}}%
+\DeclareUnicodeCharacter{B0CF}{\UTFK{B0CF}}%
+\DeclareUnicodeCharacter{B0D0}{\UTFK{B0D0}}%
+\DeclareUnicodeCharacter{B0D1}{\UTFK{B0D1}}%
+\DeclareUnicodeCharacter{B0D2}{\UTFK{B0D2}}%
+\DeclareUnicodeCharacter{B0D3}{\UTFK{B0D3}}%
+\DeclareUnicodeCharacter{B0D4}{\UTFK{B0D4}}%
+\DeclareUnicodeCharacter{B0D5}{\UTFK{B0D5}}%
+\DeclareUnicodeCharacter{B0D6}{\UTFK{B0D6}}%
+\DeclareUnicodeCharacter{B0D7}{\UTFK{B0D7}}%
+\DeclareUnicodeCharacter{B0D8}{\UTFK{B0D8}}%
+\DeclareUnicodeCharacter{B0D9}{\UTFK{B0D9}}%
+\DeclareUnicodeCharacter{B0DA}{\UTFK{B0DA}}%
+\DeclareUnicodeCharacter{B0DB}{\UTFK{B0DB}}%
+\DeclareUnicodeCharacter{B0DC}{\UTFK{B0DC}}%
+\DeclareUnicodeCharacter{B0DD}{\UTFK{B0DD}}%
+\DeclareUnicodeCharacter{B0DE}{\UTFK{B0DE}}%
+\DeclareUnicodeCharacter{B0DF}{\UTFK{B0DF}}%
+\DeclareUnicodeCharacter{B0E0}{\UTFK{B0E0}}%
+\DeclareUnicodeCharacter{B0E1}{\UTFK{B0E1}}%
+\DeclareUnicodeCharacter{B0E2}{\UTFK{B0E2}}%
+\DeclareUnicodeCharacter{B0E3}{\UTFK{B0E3}}%
+\DeclareUnicodeCharacter{B0E4}{\UTFK{B0E4}}%
+\DeclareUnicodeCharacter{B0E5}{\UTFK{B0E5}}%
+\DeclareUnicodeCharacter{B0E6}{\UTFK{B0E6}}%
+\DeclareUnicodeCharacter{B0E7}{\UTFK{B0E7}}%
+\DeclareUnicodeCharacter{B0E8}{\UTFK{B0E8}}%
+\DeclareUnicodeCharacter{B0E9}{\UTFK{B0E9}}%
+\DeclareUnicodeCharacter{B0EA}{\UTFK{B0EA}}%
+\DeclareUnicodeCharacter{B0EB}{\UTFK{B0EB}}%
+\DeclareUnicodeCharacter{B0EC}{\UTFK{B0EC}}%
+\DeclareUnicodeCharacter{B0ED}{\UTFK{B0ED}}%
+\DeclareUnicodeCharacter{B0EE}{\UTFK{B0EE}}%
+\DeclareUnicodeCharacter{B0EF}{\UTFK{B0EF}}%
+\DeclareUnicodeCharacter{B0F0}{\UTFK{B0F0}}%
+\DeclareUnicodeCharacter{B0F1}{\UTFK{B0F1}}%
+\DeclareUnicodeCharacter{B0F2}{\UTFK{B0F2}}%
+\DeclareUnicodeCharacter{B0F3}{\UTFK{B0F3}}%
+\DeclareUnicodeCharacter{B0F4}{\UTFK{B0F4}}%
+\DeclareUnicodeCharacter{B0F5}{\UTFK{B0F5}}%
+\DeclareUnicodeCharacter{B0F6}{\UTFK{B0F6}}%
+\DeclareUnicodeCharacter{B0F7}{\UTFK{B0F7}}%
+\DeclareUnicodeCharacter{B0F8}{\UTFK{B0F8}}%
+\DeclareUnicodeCharacter{B0F9}{\UTFK{B0F9}}%
+\DeclareUnicodeCharacter{B0FA}{\UTFK{B0FA}}%
+\DeclareUnicodeCharacter{B0FB}{\UTFK{B0FB}}%
+\DeclareUnicodeCharacter{B0FC}{\UTFK{B0FC}}%
+\DeclareUnicodeCharacter{B0FD}{\UTFK{B0FD}}%
+\DeclareUnicodeCharacter{B0FE}{\UTFK{B0FE}}%
+\DeclareUnicodeCharacter{B0FF}{\UTFK{B0FF}}%
+\DeclareUnicodeCharacter{B100}{\UTFK{B100}}%
+\DeclareUnicodeCharacter{B101}{\UTFK{B101}}%
+\DeclareUnicodeCharacter{B102}{\UTFK{B102}}%
+\DeclareUnicodeCharacter{B103}{\UTFK{B103}}%
+\DeclareUnicodeCharacter{B104}{\UTFK{B104}}%
+\DeclareUnicodeCharacter{B105}{\UTFK{B105}}%
+\DeclareUnicodeCharacter{B106}{\UTFK{B106}}%
+\DeclareUnicodeCharacter{B107}{\UTFK{B107}}%
+\DeclareUnicodeCharacter{B108}{\UTFK{B108}}%
+\DeclareUnicodeCharacter{B109}{\UTFK{B109}}%
+\DeclareUnicodeCharacter{B10A}{\UTFK{B10A}}%
+\DeclareUnicodeCharacter{B10B}{\UTFK{B10B}}%
+\DeclareUnicodeCharacter{B10C}{\UTFK{B10C}}%
+\DeclareUnicodeCharacter{B10D}{\UTFK{B10D}}%
+\DeclareUnicodeCharacter{B10E}{\UTFK{B10E}}%
+\DeclareUnicodeCharacter{B10F}{\UTFK{B10F}}%
+\DeclareUnicodeCharacter{B110}{\UTFK{B110}}%
+\DeclareUnicodeCharacter{B111}{\UTFK{B111}}%
+\DeclareUnicodeCharacter{B112}{\UTFK{B112}}%
+\DeclareUnicodeCharacter{B113}{\UTFK{B113}}%
+\DeclareUnicodeCharacter{B114}{\UTFK{B114}}%
+\DeclareUnicodeCharacter{B115}{\UTFK{B115}}%
+\DeclareUnicodeCharacter{B116}{\UTFK{B116}}%
+\DeclareUnicodeCharacter{B117}{\UTFK{B117}}%
+\DeclareUnicodeCharacter{B118}{\UTFK{B118}}%
+\DeclareUnicodeCharacter{B119}{\UTFK{B119}}%
+\DeclareUnicodeCharacter{B11A}{\UTFK{B11A}}%
+\DeclareUnicodeCharacter{B11B}{\UTFK{B11B}}%
+\DeclareUnicodeCharacter{B11C}{\UTFK{B11C}}%
+\DeclareUnicodeCharacter{B11D}{\UTFK{B11D}}%
+\DeclareUnicodeCharacter{B11E}{\UTFK{B11E}}%
+\DeclareUnicodeCharacter{B11F}{\UTFK{B11F}}%
+\DeclareUnicodeCharacter{B120}{\UTFK{B120}}%
+\DeclareUnicodeCharacter{B121}{\UTFK{B121}}%
+\DeclareUnicodeCharacter{B122}{\UTFK{B122}}%
+\DeclareUnicodeCharacter{B123}{\UTFK{B123}}%
+\DeclareUnicodeCharacter{B124}{\UTFK{B124}}%
+\DeclareUnicodeCharacter{B125}{\UTFK{B125}}%
+\DeclareUnicodeCharacter{B126}{\UTFK{B126}}%
+\DeclareUnicodeCharacter{B127}{\UTFK{B127}}%
+\DeclareUnicodeCharacter{B128}{\UTFK{B128}}%
+\DeclareUnicodeCharacter{B129}{\UTFK{B129}}%
+\DeclareUnicodeCharacter{B12A}{\UTFK{B12A}}%
+\DeclareUnicodeCharacter{B12B}{\UTFK{B12B}}%
+\DeclareUnicodeCharacter{B12C}{\UTFK{B12C}}%
+\DeclareUnicodeCharacter{B12D}{\UTFK{B12D}}%
+\DeclareUnicodeCharacter{B12E}{\UTFK{B12E}}%
+\DeclareUnicodeCharacter{B12F}{\UTFK{B12F}}%
+\DeclareUnicodeCharacter{B130}{\UTFK{B130}}%
+\DeclareUnicodeCharacter{B131}{\UTFK{B131}}%
+\DeclareUnicodeCharacter{B132}{\UTFK{B132}}%
+\DeclareUnicodeCharacter{B133}{\UTFK{B133}}%
+\DeclareUnicodeCharacter{B134}{\UTFK{B134}}%
+\DeclareUnicodeCharacter{B135}{\UTFK{B135}}%
+\DeclareUnicodeCharacter{B136}{\UTFK{B136}}%
+\DeclareUnicodeCharacter{B137}{\UTFK{B137}}%
+\DeclareUnicodeCharacter{B138}{\UTFK{B138}}%
+\DeclareUnicodeCharacter{B139}{\UTFK{B139}}%
+\DeclareUnicodeCharacter{B13A}{\UTFK{B13A}}%
+\DeclareUnicodeCharacter{B13B}{\UTFK{B13B}}%
+\DeclareUnicodeCharacter{B13C}{\UTFK{B13C}}%
+\DeclareUnicodeCharacter{B13D}{\UTFK{B13D}}%
+\DeclareUnicodeCharacter{B13E}{\UTFK{B13E}}%
+\DeclareUnicodeCharacter{B13F}{\UTFK{B13F}}%
+\DeclareUnicodeCharacter{B140}{\UTFK{B140}}%
+\DeclareUnicodeCharacter{B141}{\UTFK{B141}}%
+\DeclareUnicodeCharacter{B142}{\UTFK{B142}}%
+\DeclareUnicodeCharacter{B143}{\UTFK{B143}}%
+\DeclareUnicodeCharacter{B144}{\UTFK{B144}}%
+\DeclareUnicodeCharacter{B145}{\UTFK{B145}}%
+\DeclareUnicodeCharacter{B146}{\UTFK{B146}}%
+\DeclareUnicodeCharacter{B147}{\UTFK{B147}}%
+\DeclareUnicodeCharacter{B148}{\UTFK{B148}}%
+\DeclareUnicodeCharacter{B149}{\UTFK{B149}}%
+\DeclareUnicodeCharacter{B14A}{\UTFK{B14A}}%
+\DeclareUnicodeCharacter{B14B}{\UTFK{B14B}}%
+\DeclareUnicodeCharacter{B14C}{\UTFK{B14C}}%
+\DeclareUnicodeCharacter{B14D}{\UTFK{B14D}}%
+\DeclareUnicodeCharacter{B14E}{\UTFK{B14E}}%
+\DeclareUnicodeCharacter{B14F}{\UTFK{B14F}}%
+\DeclareUnicodeCharacter{B150}{\UTFK{B150}}%
+\DeclareUnicodeCharacter{B151}{\UTFK{B151}}%
+\DeclareUnicodeCharacter{B152}{\UTFK{B152}}%
+\DeclareUnicodeCharacter{B153}{\UTFK{B153}}%
+\DeclareUnicodeCharacter{B154}{\UTFK{B154}}%
+\DeclareUnicodeCharacter{B155}{\UTFK{B155}}%
+\DeclareUnicodeCharacter{B156}{\UTFK{B156}}%
+\DeclareUnicodeCharacter{B157}{\UTFK{B157}}%
+\DeclareUnicodeCharacter{B158}{\UTFK{B158}}%
+\DeclareUnicodeCharacter{B159}{\UTFK{B159}}%
+\DeclareUnicodeCharacter{B15A}{\UTFK{B15A}}%
+\DeclareUnicodeCharacter{B15B}{\UTFK{B15B}}%
+\DeclareUnicodeCharacter{B15C}{\UTFK{B15C}}%
+\DeclareUnicodeCharacter{B15D}{\UTFK{B15D}}%
+\DeclareUnicodeCharacter{B15E}{\UTFK{B15E}}%
+\DeclareUnicodeCharacter{B15F}{\UTFK{B15F}}%
+\DeclareUnicodeCharacter{B160}{\UTFK{B160}}%
+\DeclareUnicodeCharacter{B161}{\UTFK{B161}}%
+\DeclareUnicodeCharacter{B162}{\UTFK{B162}}%
+\DeclareUnicodeCharacter{B163}{\UTFK{B163}}%
+\DeclareUnicodeCharacter{B164}{\UTFK{B164}}%
+\DeclareUnicodeCharacter{B165}{\UTFK{B165}}%
+\DeclareUnicodeCharacter{B166}{\UTFK{B166}}%
+\DeclareUnicodeCharacter{B167}{\UTFK{B167}}%
+\DeclareUnicodeCharacter{B168}{\UTFK{B168}}%
+\DeclareUnicodeCharacter{B169}{\UTFK{B169}}%
+\DeclareUnicodeCharacter{B16A}{\UTFK{B16A}}%
+\DeclareUnicodeCharacter{B16B}{\UTFK{B16B}}%
+\DeclareUnicodeCharacter{B16C}{\UTFK{B16C}}%
+\DeclareUnicodeCharacter{B16D}{\UTFK{B16D}}%
+\DeclareUnicodeCharacter{B16E}{\UTFK{B16E}}%
+\DeclareUnicodeCharacter{B16F}{\UTFK{B16F}}%
+\DeclareUnicodeCharacter{B170}{\UTFK{B170}}%
+\DeclareUnicodeCharacter{B171}{\UTFK{B171}}%
+\DeclareUnicodeCharacter{B172}{\UTFK{B172}}%
+\DeclareUnicodeCharacter{B173}{\UTFK{B173}}%
+\DeclareUnicodeCharacter{B174}{\UTFK{B174}}%
+\DeclareUnicodeCharacter{B175}{\UTFK{B175}}%
+\DeclareUnicodeCharacter{B176}{\UTFK{B176}}%
+\DeclareUnicodeCharacter{B177}{\UTFK{B177}}%
+\DeclareUnicodeCharacter{B178}{\UTFK{B178}}%
+\DeclareUnicodeCharacter{B179}{\UTFK{B179}}%
+\DeclareUnicodeCharacter{B17A}{\UTFK{B17A}}%
+\DeclareUnicodeCharacter{B17B}{\UTFK{B17B}}%
+\DeclareUnicodeCharacter{B17C}{\UTFK{B17C}}%
+\DeclareUnicodeCharacter{B17D}{\UTFK{B17D}}%
+\DeclareUnicodeCharacter{B17E}{\UTFK{B17E}}%
+\DeclareUnicodeCharacter{B17F}{\UTFK{B17F}}%
+\DeclareUnicodeCharacter{B180}{\UTFK{B180}}%
+\DeclareUnicodeCharacter{B181}{\UTFK{B181}}%
+\DeclareUnicodeCharacter{B182}{\UTFK{B182}}%
+\DeclareUnicodeCharacter{B183}{\UTFK{B183}}%
+\DeclareUnicodeCharacter{B184}{\UTFK{B184}}%
+\DeclareUnicodeCharacter{B185}{\UTFK{B185}}%
+\DeclareUnicodeCharacter{B186}{\UTFK{B186}}%
+\DeclareUnicodeCharacter{B187}{\UTFK{B187}}%
+\DeclareUnicodeCharacter{B188}{\UTFK{B188}}%
+\DeclareUnicodeCharacter{B189}{\UTFK{B189}}%
+\DeclareUnicodeCharacter{B18A}{\UTFK{B18A}}%
+\DeclareUnicodeCharacter{B18B}{\UTFK{B18B}}%
+\DeclareUnicodeCharacter{B18C}{\UTFK{B18C}}%
+\DeclareUnicodeCharacter{B18D}{\UTFK{B18D}}%
+\DeclareUnicodeCharacter{B18E}{\UTFK{B18E}}%
+\DeclareUnicodeCharacter{B18F}{\UTFK{B18F}}%
+\DeclareUnicodeCharacter{B190}{\UTFK{B190}}%
+\DeclareUnicodeCharacter{B191}{\UTFK{B191}}%
+\DeclareUnicodeCharacter{B192}{\UTFK{B192}}%
+\DeclareUnicodeCharacter{B193}{\UTFK{B193}}%
+\DeclareUnicodeCharacter{B194}{\UTFK{B194}}%
+\DeclareUnicodeCharacter{B195}{\UTFK{B195}}%
+\DeclareUnicodeCharacter{B196}{\UTFK{B196}}%
+\DeclareUnicodeCharacter{B197}{\UTFK{B197}}%
+\DeclareUnicodeCharacter{B198}{\UTFK{B198}}%
+\DeclareUnicodeCharacter{B199}{\UTFK{B199}}%
+\DeclareUnicodeCharacter{B19A}{\UTFK{B19A}}%
+\DeclareUnicodeCharacter{B19B}{\UTFK{B19B}}%
+\DeclareUnicodeCharacter{B19C}{\UTFK{B19C}}%
+\DeclareUnicodeCharacter{B19D}{\UTFK{B19D}}%
+\DeclareUnicodeCharacter{B19E}{\UTFK{B19E}}%
+\DeclareUnicodeCharacter{B19F}{\UTFK{B19F}}%
+\DeclareUnicodeCharacter{B1A0}{\UTFK{B1A0}}%
+\DeclareUnicodeCharacter{B1A1}{\UTFK{B1A1}}%
+\DeclareUnicodeCharacter{B1A2}{\UTFK{B1A2}}%
+\DeclareUnicodeCharacter{B1A3}{\UTFK{B1A3}}%
+\DeclareUnicodeCharacter{B1A4}{\UTFK{B1A4}}%
+\DeclareUnicodeCharacter{B1A5}{\UTFK{B1A5}}%
+\DeclareUnicodeCharacter{B1A6}{\UTFK{B1A6}}%
+\DeclareUnicodeCharacter{B1A7}{\UTFK{B1A7}}%
+\DeclareUnicodeCharacter{B1A8}{\UTFK{B1A8}}%
+\DeclareUnicodeCharacter{B1A9}{\UTFK{B1A9}}%
+\DeclareUnicodeCharacter{B1AA}{\UTFK{B1AA}}%
+\DeclareUnicodeCharacter{B1AB}{\UTFK{B1AB}}%
+\DeclareUnicodeCharacter{B1AC}{\UTFK{B1AC}}%
+\DeclareUnicodeCharacter{B1AD}{\UTFK{B1AD}}%
+\DeclareUnicodeCharacter{B1AE}{\UTFK{B1AE}}%
+\DeclareUnicodeCharacter{B1AF}{\UTFK{B1AF}}%
+\DeclareUnicodeCharacter{B1B0}{\UTFK{B1B0}}%
+\DeclareUnicodeCharacter{B1B1}{\UTFK{B1B1}}%
+\DeclareUnicodeCharacter{B1B2}{\UTFK{B1B2}}%
+\DeclareUnicodeCharacter{B1B3}{\UTFK{B1B3}}%
+\DeclareUnicodeCharacter{B1B4}{\UTFK{B1B4}}%
+\DeclareUnicodeCharacter{B1B5}{\UTFK{B1B5}}%
+\DeclareUnicodeCharacter{B1B6}{\UTFK{B1B6}}%
+\DeclareUnicodeCharacter{B1B7}{\UTFK{B1B7}}%
+\DeclareUnicodeCharacter{B1B8}{\UTFK{B1B8}}%
+\DeclareUnicodeCharacter{B1B9}{\UTFK{B1B9}}%
+\DeclareUnicodeCharacter{B1BA}{\UTFK{B1BA}}%
+\DeclareUnicodeCharacter{B1BB}{\UTFK{B1BB}}%
+\DeclareUnicodeCharacter{B1BC}{\UTFK{B1BC}}%
+\DeclareUnicodeCharacter{B1BD}{\UTFK{B1BD}}%
+\DeclareUnicodeCharacter{B1BE}{\UTFK{B1BE}}%
+\DeclareUnicodeCharacter{B1BF}{\UTFK{B1BF}}%
+\DeclareUnicodeCharacter{B1C0}{\UTFK{B1C0}}%
+\DeclareUnicodeCharacter{B1C1}{\UTFK{B1C1}}%
+\DeclareUnicodeCharacter{B1C2}{\UTFK{B1C2}}%
+\DeclareUnicodeCharacter{B1C3}{\UTFK{B1C3}}%
+\DeclareUnicodeCharacter{B1C4}{\UTFK{B1C4}}%
+\DeclareUnicodeCharacter{B1C5}{\UTFK{B1C5}}%
+\DeclareUnicodeCharacter{B1C6}{\UTFK{B1C6}}%
+\DeclareUnicodeCharacter{B1C7}{\UTFK{B1C7}}%
+\DeclareUnicodeCharacter{B1C8}{\UTFK{B1C8}}%
+\DeclareUnicodeCharacter{B1C9}{\UTFK{B1C9}}%
+\DeclareUnicodeCharacter{B1CA}{\UTFK{B1CA}}%
+\DeclareUnicodeCharacter{B1CB}{\UTFK{B1CB}}%
+\DeclareUnicodeCharacter{B1CC}{\UTFK{B1CC}}%
+\DeclareUnicodeCharacter{B1CD}{\UTFK{B1CD}}%
+\DeclareUnicodeCharacter{B1CE}{\UTFK{B1CE}}%
+\DeclareUnicodeCharacter{B1CF}{\UTFK{B1CF}}%
+\DeclareUnicodeCharacter{B1D0}{\UTFK{B1D0}}%
+\DeclareUnicodeCharacter{B1D1}{\UTFK{B1D1}}%
+\DeclareUnicodeCharacter{B1D2}{\UTFK{B1D2}}%
+\DeclareUnicodeCharacter{B1D3}{\UTFK{B1D3}}%
+\DeclareUnicodeCharacter{B1D4}{\UTFK{B1D4}}%
+\DeclareUnicodeCharacter{B1D5}{\UTFK{B1D5}}%
+\DeclareUnicodeCharacter{B1D6}{\UTFK{B1D6}}%
+\DeclareUnicodeCharacter{B1D7}{\UTFK{B1D7}}%
+\DeclareUnicodeCharacter{B1D8}{\UTFK{B1D8}}%
+\DeclareUnicodeCharacter{B1D9}{\UTFK{B1D9}}%
+\DeclareUnicodeCharacter{B1DA}{\UTFK{B1DA}}%
+\DeclareUnicodeCharacter{B1DB}{\UTFK{B1DB}}%
+\DeclareUnicodeCharacter{B1DC}{\UTFK{B1DC}}%
+\DeclareUnicodeCharacter{B1DD}{\UTFK{B1DD}}%
+\DeclareUnicodeCharacter{B1DE}{\UTFK{B1DE}}%
+\DeclareUnicodeCharacter{B1DF}{\UTFK{B1DF}}%
+\DeclareUnicodeCharacter{B1E0}{\UTFK{B1E0}}%
+\DeclareUnicodeCharacter{B1E1}{\UTFK{B1E1}}%
+\DeclareUnicodeCharacter{B1E2}{\UTFK{B1E2}}%
+\DeclareUnicodeCharacter{B1E3}{\UTFK{B1E3}}%
+\DeclareUnicodeCharacter{B1E4}{\UTFK{B1E4}}%
+\DeclareUnicodeCharacter{B1E5}{\UTFK{B1E5}}%
+\DeclareUnicodeCharacter{B1E6}{\UTFK{B1E6}}%
+\DeclareUnicodeCharacter{B1E7}{\UTFK{B1E7}}%
+\DeclareUnicodeCharacter{B1E8}{\UTFK{B1E8}}%
+\DeclareUnicodeCharacter{B1E9}{\UTFK{B1E9}}%
+\DeclareUnicodeCharacter{B1EA}{\UTFK{B1EA}}%
+\DeclareUnicodeCharacter{B1EB}{\UTFK{B1EB}}%
+\DeclareUnicodeCharacter{B1EC}{\UTFK{B1EC}}%
+\DeclareUnicodeCharacter{B1ED}{\UTFK{B1ED}}%
+\DeclareUnicodeCharacter{B1EE}{\UTFK{B1EE}}%
+\DeclareUnicodeCharacter{B1EF}{\UTFK{B1EF}}%
+\DeclareUnicodeCharacter{B1F0}{\UTFK{B1F0}}%
+\DeclareUnicodeCharacter{B1F1}{\UTFK{B1F1}}%
+\DeclareUnicodeCharacter{B1F2}{\UTFK{B1F2}}%
+\DeclareUnicodeCharacter{B1F3}{\UTFK{B1F3}}%
+\DeclareUnicodeCharacter{B1F4}{\UTFK{B1F4}}%
+\DeclareUnicodeCharacter{B1F5}{\UTFK{B1F5}}%
+\DeclareUnicodeCharacter{B1F6}{\UTFK{B1F6}}%
+\DeclareUnicodeCharacter{B1F7}{\UTFK{B1F7}}%
+\DeclareUnicodeCharacter{B1F8}{\UTFK{B1F8}}%
+\DeclareUnicodeCharacter{B1F9}{\UTFK{B1F9}}%
+\DeclareUnicodeCharacter{B1FA}{\UTFK{B1FA}}%
+\DeclareUnicodeCharacter{B1FB}{\UTFK{B1FB}}%
+\DeclareUnicodeCharacter{B1FC}{\UTFK{B1FC}}%
+\DeclareUnicodeCharacter{B1FD}{\UTFK{B1FD}}%
+\DeclareUnicodeCharacter{B1FE}{\UTFK{B1FE}}%
+\DeclareUnicodeCharacter{B1FF}{\UTFK{B1FF}}%
+\DeclareUnicodeCharacter{B200}{\UTFK{B200}}%
+\DeclareUnicodeCharacter{B201}{\UTFK{B201}}%
+\DeclareUnicodeCharacter{B202}{\UTFK{B202}}%
+\DeclareUnicodeCharacter{B203}{\UTFK{B203}}%
+\DeclareUnicodeCharacter{B204}{\UTFK{B204}}%
+\DeclareUnicodeCharacter{B205}{\UTFK{B205}}%
+\DeclareUnicodeCharacter{B206}{\UTFK{B206}}%
+\DeclareUnicodeCharacter{B207}{\UTFK{B207}}%
+\DeclareUnicodeCharacter{B208}{\UTFK{B208}}%
+\DeclareUnicodeCharacter{B209}{\UTFK{B209}}%
+\DeclareUnicodeCharacter{B20A}{\UTFK{B20A}}%
+\DeclareUnicodeCharacter{B20B}{\UTFK{B20B}}%
+\DeclareUnicodeCharacter{B20C}{\UTFK{B20C}}%
+\DeclareUnicodeCharacter{B20D}{\UTFK{B20D}}%
+\DeclareUnicodeCharacter{B20E}{\UTFK{B20E}}%
+\DeclareUnicodeCharacter{B20F}{\UTFK{B20F}}%
+\DeclareUnicodeCharacter{B210}{\UTFK{B210}}%
+\DeclareUnicodeCharacter{B211}{\UTFK{B211}}%
+\DeclareUnicodeCharacter{B212}{\UTFK{B212}}%
+\DeclareUnicodeCharacter{B213}{\UTFK{B213}}%
+\DeclareUnicodeCharacter{B214}{\UTFK{B214}}%
+\DeclareUnicodeCharacter{B215}{\UTFK{B215}}%
+\DeclareUnicodeCharacter{B216}{\UTFK{B216}}%
+\DeclareUnicodeCharacter{B217}{\UTFK{B217}}%
+\DeclareUnicodeCharacter{B218}{\UTFK{B218}}%
+\DeclareUnicodeCharacter{B219}{\UTFK{B219}}%
+\DeclareUnicodeCharacter{B21A}{\UTFK{B21A}}%
+\DeclareUnicodeCharacter{B21B}{\UTFK{B21B}}%
+\DeclareUnicodeCharacter{B21C}{\UTFK{B21C}}%
+\DeclareUnicodeCharacter{B21D}{\UTFK{B21D}}%
+\DeclareUnicodeCharacter{B21E}{\UTFK{B21E}}%
+\DeclareUnicodeCharacter{B21F}{\UTFK{B21F}}%
+\DeclareUnicodeCharacter{B220}{\UTFK{B220}}%
+\DeclareUnicodeCharacter{B221}{\UTFK{B221}}%
+\DeclareUnicodeCharacter{B222}{\UTFK{B222}}%
+\DeclareUnicodeCharacter{B223}{\UTFK{B223}}%
+\DeclareUnicodeCharacter{B224}{\UTFK{B224}}%
+\DeclareUnicodeCharacter{B225}{\UTFK{B225}}%
+\DeclareUnicodeCharacter{B226}{\UTFK{B226}}%
+\DeclareUnicodeCharacter{B227}{\UTFK{B227}}%
+\DeclareUnicodeCharacter{B228}{\UTFK{B228}}%
+\DeclareUnicodeCharacter{B229}{\UTFK{B229}}%
+\DeclareUnicodeCharacter{B22A}{\UTFK{B22A}}%
+\DeclareUnicodeCharacter{B22B}{\UTFK{B22B}}%
+\DeclareUnicodeCharacter{B22C}{\UTFK{B22C}}%
+\DeclareUnicodeCharacter{B22D}{\UTFK{B22D}}%
+\DeclareUnicodeCharacter{B22E}{\UTFK{B22E}}%
+\DeclareUnicodeCharacter{B22F}{\UTFK{B22F}}%
+\DeclareUnicodeCharacter{B230}{\UTFK{B230}}%
+\DeclareUnicodeCharacter{B231}{\UTFK{B231}}%
+\DeclareUnicodeCharacter{B232}{\UTFK{B232}}%
+\DeclareUnicodeCharacter{B233}{\UTFK{B233}}%
+\DeclareUnicodeCharacter{B234}{\UTFK{B234}}%
+\DeclareUnicodeCharacter{B235}{\UTFK{B235}}%
+\DeclareUnicodeCharacter{B236}{\UTFK{B236}}%
+\DeclareUnicodeCharacter{B237}{\UTFK{B237}}%
+\DeclareUnicodeCharacter{B238}{\UTFK{B238}}%
+\DeclareUnicodeCharacter{B239}{\UTFK{B239}}%
+\DeclareUnicodeCharacter{B23A}{\UTFK{B23A}}%
+\DeclareUnicodeCharacter{B23B}{\UTFK{B23B}}%
+\DeclareUnicodeCharacter{B23C}{\UTFK{B23C}}%
+\DeclareUnicodeCharacter{B23D}{\UTFK{B23D}}%
+\DeclareUnicodeCharacter{B23E}{\UTFK{B23E}}%
+\DeclareUnicodeCharacter{B23F}{\UTFK{B23F}}%
+\DeclareUnicodeCharacter{B240}{\UTFK{B240}}%
+\DeclareUnicodeCharacter{B241}{\UTFK{B241}}%
+\DeclareUnicodeCharacter{B242}{\UTFK{B242}}%
+\DeclareUnicodeCharacter{B243}{\UTFK{B243}}%
+\DeclareUnicodeCharacter{B244}{\UTFK{B244}}%
+\DeclareUnicodeCharacter{B245}{\UTFK{B245}}%
+\DeclareUnicodeCharacter{B246}{\UTFK{B246}}%
+\DeclareUnicodeCharacter{B247}{\UTFK{B247}}%
+\DeclareUnicodeCharacter{B248}{\UTFK{B248}}%
+\DeclareUnicodeCharacter{B249}{\UTFK{B249}}%
+\DeclareUnicodeCharacter{B24A}{\UTFK{B24A}}%
+\DeclareUnicodeCharacter{B24B}{\UTFK{B24B}}%
+\DeclareUnicodeCharacter{B24C}{\UTFK{B24C}}%
+\DeclareUnicodeCharacter{B24D}{\UTFK{B24D}}%
+\DeclareUnicodeCharacter{B24E}{\UTFK{B24E}}%
+\DeclareUnicodeCharacter{B24F}{\UTFK{B24F}}%
+\DeclareUnicodeCharacter{B250}{\UTFK{B250}}%
+\DeclareUnicodeCharacter{B251}{\UTFK{B251}}%
+\DeclareUnicodeCharacter{B252}{\UTFK{B252}}%
+\DeclareUnicodeCharacter{B253}{\UTFK{B253}}%
+\DeclareUnicodeCharacter{B254}{\UTFK{B254}}%
+\DeclareUnicodeCharacter{B255}{\UTFK{B255}}%
+\DeclareUnicodeCharacter{B256}{\UTFK{B256}}%
+\DeclareUnicodeCharacter{B257}{\UTFK{B257}}%
+\DeclareUnicodeCharacter{B258}{\UTFK{B258}}%
+\DeclareUnicodeCharacter{B259}{\UTFK{B259}}%
+\DeclareUnicodeCharacter{B25A}{\UTFK{B25A}}%
+\DeclareUnicodeCharacter{B25B}{\UTFK{B25B}}%
+\DeclareUnicodeCharacter{B25C}{\UTFK{B25C}}%
+\DeclareUnicodeCharacter{B25D}{\UTFK{B25D}}%
+\DeclareUnicodeCharacter{B25E}{\UTFK{B25E}}%
+\DeclareUnicodeCharacter{B25F}{\UTFK{B25F}}%
+\DeclareUnicodeCharacter{B260}{\UTFK{B260}}%
+\DeclareUnicodeCharacter{B261}{\UTFK{B261}}%
+\DeclareUnicodeCharacter{B262}{\UTFK{B262}}%
+\DeclareUnicodeCharacter{B263}{\UTFK{B263}}%
+\DeclareUnicodeCharacter{B264}{\UTFK{B264}}%
+\DeclareUnicodeCharacter{B265}{\UTFK{B265}}%
+\DeclareUnicodeCharacter{B266}{\UTFK{B266}}%
+\DeclareUnicodeCharacter{B267}{\UTFK{B267}}%
+\DeclareUnicodeCharacter{B268}{\UTFK{B268}}%
+\DeclareUnicodeCharacter{B269}{\UTFK{B269}}%
+\DeclareUnicodeCharacter{B26A}{\UTFK{B26A}}%
+\DeclareUnicodeCharacter{B26B}{\UTFK{B26B}}%
+\DeclareUnicodeCharacter{B26C}{\UTFK{B26C}}%
+\DeclareUnicodeCharacter{B26D}{\UTFK{B26D}}%
+\DeclareUnicodeCharacter{B26E}{\UTFK{B26E}}%
+\DeclareUnicodeCharacter{B26F}{\UTFK{B26F}}%
+\DeclareUnicodeCharacter{B270}{\UTFK{B270}}%
+\DeclareUnicodeCharacter{B271}{\UTFK{B271}}%
+\DeclareUnicodeCharacter{B272}{\UTFK{B272}}%
+\DeclareUnicodeCharacter{B273}{\UTFK{B273}}%
+\DeclareUnicodeCharacter{B274}{\UTFK{B274}}%
+\DeclareUnicodeCharacter{B275}{\UTFK{B275}}%
+\DeclareUnicodeCharacter{B276}{\UTFK{B276}}%
+\DeclareUnicodeCharacter{B277}{\UTFK{B277}}%
+\DeclareUnicodeCharacter{B278}{\UTFK{B278}}%
+\DeclareUnicodeCharacter{B279}{\UTFK{B279}}%
+\DeclareUnicodeCharacter{B27A}{\UTFK{B27A}}%
+\DeclareUnicodeCharacter{B27B}{\UTFK{B27B}}%
+\DeclareUnicodeCharacter{B27C}{\UTFK{B27C}}%
+\DeclareUnicodeCharacter{B27D}{\UTFK{B27D}}%
+\DeclareUnicodeCharacter{B27E}{\UTFK{B27E}}%
+\DeclareUnicodeCharacter{B27F}{\UTFK{B27F}}%
+\DeclareUnicodeCharacter{B280}{\UTFK{B280}}%
+\DeclareUnicodeCharacter{B281}{\UTFK{B281}}%
+\DeclareUnicodeCharacter{B282}{\UTFK{B282}}%
+\DeclareUnicodeCharacter{B283}{\UTFK{B283}}%
+\DeclareUnicodeCharacter{B284}{\UTFK{B284}}%
+\DeclareUnicodeCharacter{B285}{\UTFK{B285}}%
+\DeclareUnicodeCharacter{B286}{\UTFK{B286}}%
+\DeclareUnicodeCharacter{B287}{\UTFK{B287}}%
+\DeclareUnicodeCharacter{B288}{\UTFK{B288}}%
+\DeclareUnicodeCharacter{B289}{\UTFK{B289}}%
+\DeclareUnicodeCharacter{B28A}{\UTFK{B28A}}%
+\DeclareUnicodeCharacter{B28B}{\UTFK{B28B}}%
+\DeclareUnicodeCharacter{B28C}{\UTFK{B28C}}%
+\DeclareUnicodeCharacter{B28D}{\UTFK{B28D}}%
+\DeclareUnicodeCharacter{B28E}{\UTFK{B28E}}%
+\DeclareUnicodeCharacter{B28F}{\UTFK{B28F}}%
+\DeclareUnicodeCharacter{B290}{\UTFK{B290}}%
+\DeclareUnicodeCharacter{B291}{\UTFK{B291}}%
+\DeclareUnicodeCharacter{B292}{\UTFK{B292}}%
+\DeclareUnicodeCharacter{B293}{\UTFK{B293}}%
+\DeclareUnicodeCharacter{B294}{\UTFK{B294}}%
+\DeclareUnicodeCharacter{B295}{\UTFK{B295}}%
+\DeclareUnicodeCharacter{B296}{\UTFK{B296}}%
+\DeclareUnicodeCharacter{B297}{\UTFK{B297}}%
+\DeclareUnicodeCharacter{B298}{\UTFK{B298}}%
+\DeclareUnicodeCharacter{B299}{\UTFK{B299}}%
+\DeclareUnicodeCharacter{B29A}{\UTFK{B29A}}%
+\DeclareUnicodeCharacter{B29B}{\UTFK{B29B}}%
+\DeclareUnicodeCharacter{B29C}{\UTFK{B29C}}%
+\DeclareUnicodeCharacter{B29D}{\UTFK{B29D}}%
+\DeclareUnicodeCharacter{B29E}{\UTFK{B29E}}%
+\DeclareUnicodeCharacter{B29F}{\UTFK{B29F}}%
+\DeclareUnicodeCharacter{B2A0}{\UTFK{B2A0}}%
+\DeclareUnicodeCharacter{B2A1}{\UTFK{B2A1}}%
+\DeclareUnicodeCharacter{B2A2}{\UTFK{B2A2}}%
+\DeclareUnicodeCharacter{B2A3}{\UTFK{B2A3}}%
+\DeclareUnicodeCharacter{B2A4}{\UTFK{B2A4}}%
+\DeclareUnicodeCharacter{B2A5}{\UTFK{B2A5}}%
+\DeclareUnicodeCharacter{B2A6}{\UTFK{B2A6}}%
+\DeclareUnicodeCharacter{B2A7}{\UTFK{B2A7}}%
+\DeclareUnicodeCharacter{B2A8}{\UTFK{B2A8}}%
+\DeclareUnicodeCharacter{B2A9}{\UTFK{B2A9}}%
+\DeclareUnicodeCharacter{B2AA}{\UTFK{B2AA}}%
+\DeclareUnicodeCharacter{B2AB}{\UTFK{B2AB}}%
+\DeclareUnicodeCharacter{B2AC}{\UTFK{B2AC}}%
+\DeclareUnicodeCharacter{B2AD}{\UTFK{B2AD}}%
+\DeclareUnicodeCharacter{B2AE}{\UTFK{B2AE}}%
+\DeclareUnicodeCharacter{B2AF}{\UTFK{B2AF}}%
+\DeclareUnicodeCharacter{B2B0}{\UTFK{B2B0}}%
+\DeclareUnicodeCharacter{B2B1}{\UTFK{B2B1}}%
+\DeclareUnicodeCharacter{B2B2}{\UTFK{B2B2}}%
+\DeclareUnicodeCharacter{B2B3}{\UTFK{B2B3}}%
+\DeclareUnicodeCharacter{B2B4}{\UTFK{B2B4}}%
+\DeclareUnicodeCharacter{B2B5}{\UTFK{B2B5}}%
+\DeclareUnicodeCharacter{B2B6}{\UTFK{B2B6}}%
+\DeclareUnicodeCharacter{B2B7}{\UTFK{B2B7}}%
+\DeclareUnicodeCharacter{B2B8}{\UTFK{B2B8}}%
+\DeclareUnicodeCharacter{B2B9}{\UTFK{B2B9}}%
+\DeclareUnicodeCharacter{B2BA}{\UTFK{B2BA}}%
+\DeclareUnicodeCharacter{B2BB}{\UTFK{B2BB}}%
+\DeclareUnicodeCharacter{B2BC}{\UTFK{B2BC}}%
+\DeclareUnicodeCharacter{B2BD}{\UTFK{B2BD}}%
+\DeclareUnicodeCharacter{B2BE}{\UTFK{B2BE}}%
+\DeclareUnicodeCharacter{B2BF}{\UTFK{B2BF}}%
+\DeclareUnicodeCharacter{B2C0}{\UTFK{B2C0}}%
+\DeclareUnicodeCharacter{B2C1}{\UTFK{B2C1}}%
+\DeclareUnicodeCharacter{B2C2}{\UTFK{B2C2}}%
+\DeclareUnicodeCharacter{B2C3}{\UTFK{B2C3}}%
+\DeclareUnicodeCharacter{B2C4}{\UTFK{B2C4}}%
+\DeclareUnicodeCharacter{B2C5}{\UTFK{B2C5}}%
+\DeclareUnicodeCharacter{B2C6}{\UTFK{B2C6}}%
+\DeclareUnicodeCharacter{B2C7}{\UTFK{B2C7}}%
+\DeclareUnicodeCharacter{B2C8}{\UTFK{B2C8}}%
+\DeclareUnicodeCharacter{B2C9}{\UTFK{B2C9}}%
+\DeclareUnicodeCharacter{B2CA}{\UTFK{B2CA}}%
+\DeclareUnicodeCharacter{B2CB}{\UTFK{B2CB}}%
+\DeclareUnicodeCharacter{B2CC}{\UTFK{B2CC}}%
+\DeclareUnicodeCharacter{B2CD}{\UTFK{B2CD}}%
+\DeclareUnicodeCharacter{B2CE}{\UTFK{B2CE}}%
+\DeclareUnicodeCharacter{B2CF}{\UTFK{B2CF}}%
+\DeclareUnicodeCharacter{B2D0}{\UTFK{B2D0}}%
+\DeclareUnicodeCharacter{B2D1}{\UTFK{B2D1}}%
+\DeclareUnicodeCharacter{B2D2}{\UTFK{B2D2}}%
+\DeclareUnicodeCharacter{B2D3}{\UTFK{B2D3}}%
+\DeclareUnicodeCharacter{B2D4}{\UTFK{B2D4}}%
+\DeclareUnicodeCharacter{B2D5}{\UTFK{B2D5}}%
+\DeclareUnicodeCharacter{B2D6}{\UTFK{B2D6}}%
+\DeclareUnicodeCharacter{B2D7}{\UTFK{B2D7}}%
+\DeclareUnicodeCharacter{B2D8}{\UTFK{B2D8}}%
+\DeclareUnicodeCharacter{B2D9}{\UTFK{B2D9}}%
+\DeclareUnicodeCharacter{B2DA}{\UTFK{B2DA}}%
+\DeclareUnicodeCharacter{B2DB}{\UTFK{B2DB}}%
+\DeclareUnicodeCharacter{B2DC}{\UTFK{B2DC}}%
+\DeclareUnicodeCharacter{B2DD}{\UTFK{B2DD}}%
+\DeclareUnicodeCharacter{B2DE}{\UTFK{B2DE}}%
+\DeclareUnicodeCharacter{B2DF}{\UTFK{B2DF}}%
+\DeclareUnicodeCharacter{B2E0}{\UTFK{B2E0}}%
+\DeclareUnicodeCharacter{B2E1}{\UTFK{B2E1}}%
+\DeclareUnicodeCharacter{B2E2}{\UTFK{B2E2}}%
+\DeclareUnicodeCharacter{B2E3}{\UTFK{B2E3}}%
+\DeclareUnicodeCharacter{B2E4}{\UTFK{B2E4}}%
+\DeclareUnicodeCharacter{B2E5}{\UTFK{B2E5}}%
+\DeclareUnicodeCharacter{B2E6}{\UTFK{B2E6}}%
+\DeclareUnicodeCharacter{B2E7}{\UTFK{B2E7}}%
+\DeclareUnicodeCharacter{B2E8}{\UTFK{B2E8}}%
+\DeclareUnicodeCharacter{B2E9}{\UTFK{B2E9}}%
+\DeclareUnicodeCharacter{B2EA}{\UTFK{B2EA}}%
+\DeclareUnicodeCharacter{B2EB}{\UTFK{B2EB}}%
+\DeclareUnicodeCharacter{B2EC}{\UTFK{B2EC}}%
+\DeclareUnicodeCharacter{B2ED}{\UTFK{B2ED}}%
+\DeclareUnicodeCharacter{B2EE}{\UTFK{B2EE}}%
+\DeclareUnicodeCharacter{B2EF}{\UTFK{B2EF}}%
+\DeclareUnicodeCharacter{B2F0}{\UTFK{B2F0}}%
+\DeclareUnicodeCharacter{B2F1}{\UTFK{B2F1}}%
+\DeclareUnicodeCharacter{B2F2}{\UTFK{B2F2}}%
+\DeclareUnicodeCharacter{B2F3}{\UTFK{B2F3}}%
+\DeclareUnicodeCharacter{B2F4}{\UTFK{B2F4}}%
+\DeclareUnicodeCharacter{B2F5}{\UTFK{B2F5}}%
+\DeclareUnicodeCharacter{B2F6}{\UTFK{B2F6}}%
+\DeclareUnicodeCharacter{B2F7}{\UTFK{B2F7}}%
+\DeclareUnicodeCharacter{B2F8}{\UTFK{B2F8}}%
+\DeclareUnicodeCharacter{B2F9}{\UTFK{B2F9}}%
+\DeclareUnicodeCharacter{B2FA}{\UTFK{B2FA}}%
+\DeclareUnicodeCharacter{B2FB}{\UTFK{B2FB}}%
+\DeclareUnicodeCharacter{B2FC}{\UTFK{B2FC}}%
+\DeclareUnicodeCharacter{B2FD}{\UTFK{B2FD}}%
+\DeclareUnicodeCharacter{B2FE}{\UTFK{B2FE}}%
+\DeclareUnicodeCharacter{B2FF}{\UTFK{B2FF}}%
+\DeclareUnicodeCharacter{B300}{\UTFK{B300}}%
+\DeclareUnicodeCharacter{B301}{\UTFK{B301}}%
+\DeclareUnicodeCharacter{B302}{\UTFK{B302}}%
+\DeclareUnicodeCharacter{B303}{\UTFK{B303}}%
+\DeclareUnicodeCharacter{B304}{\UTFK{B304}}%
+\DeclareUnicodeCharacter{B305}{\UTFK{B305}}%
+\DeclareUnicodeCharacter{B306}{\UTFK{B306}}%
+\DeclareUnicodeCharacter{B307}{\UTFK{B307}}%
+\DeclareUnicodeCharacter{B308}{\UTFK{B308}}%
+\DeclareUnicodeCharacter{B309}{\UTFK{B309}}%
+\DeclareUnicodeCharacter{B30A}{\UTFK{B30A}}%
+\DeclareUnicodeCharacter{B30B}{\UTFK{B30B}}%
+\DeclareUnicodeCharacter{B30C}{\UTFK{B30C}}%
+\DeclareUnicodeCharacter{B30D}{\UTFK{B30D}}%
+\DeclareUnicodeCharacter{B30E}{\UTFK{B30E}}%
+\DeclareUnicodeCharacter{B30F}{\UTFK{B30F}}%
+\DeclareUnicodeCharacter{B310}{\UTFK{B310}}%
+\DeclareUnicodeCharacter{B311}{\UTFK{B311}}%
+\DeclareUnicodeCharacter{B312}{\UTFK{B312}}%
+\DeclareUnicodeCharacter{B313}{\UTFK{B313}}%
+\DeclareUnicodeCharacter{B314}{\UTFK{B314}}%
+\DeclareUnicodeCharacter{B315}{\UTFK{B315}}%
+\DeclareUnicodeCharacter{B316}{\UTFK{B316}}%
+\DeclareUnicodeCharacter{B317}{\UTFK{B317}}%
+\DeclareUnicodeCharacter{B318}{\UTFK{B318}}%
+\DeclareUnicodeCharacter{B319}{\UTFK{B319}}%
+\DeclareUnicodeCharacter{B31A}{\UTFK{B31A}}%
+\DeclareUnicodeCharacter{B31B}{\UTFK{B31B}}%
+\DeclareUnicodeCharacter{B31C}{\UTFK{B31C}}%
+\DeclareUnicodeCharacter{B31D}{\UTFK{B31D}}%
+\DeclareUnicodeCharacter{B31E}{\UTFK{B31E}}%
+\DeclareUnicodeCharacter{B31F}{\UTFK{B31F}}%
+\DeclareUnicodeCharacter{B320}{\UTFK{B320}}%
+\DeclareUnicodeCharacter{B321}{\UTFK{B321}}%
+\DeclareUnicodeCharacter{B322}{\UTFK{B322}}%
+\DeclareUnicodeCharacter{B323}{\UTFK{B323}}%
+\DeclareUnicodeCharacter{B324}{\UTFK{B324}}%
+\DeclareUnicodeCharacter{B325}{\UTFK{B325}}%
+\DeclareUnicodeCharacter{B326}{\UTFK{B326}}%
+\DeclareUnicodeCharacter{B327}{\UTFK{B327}}%
+\DeclareUnicodeCharacter{B328}{\UTFK{B328}}%
+\DeclareUnicodeCharacter{B329}{\UTFK{B329}}%
+\DeclareUnicodeCharacter{B32A}{\UTFK{B32A}}%
+\DeclareUnicodeCharacter{B32B}{\UTFK{B32B}}%
+\DeclareUnicodeCharacter{B32C}{\UTFK{B32C}}%
+\DeclareUnicodeCharacter{B32D}{\UTFK{B32D}}%
+\DeclareUnicodeCharacter{B32E}{\UTFK{B32E}}%
+\DeclareUnicodeCharacter{B32F}{\UTFK{B32F}}%
+\DeclareUnicodeCharacter{B330}{\UTFK{B330}}%
+\DeclareUnicodeCharacter{B331}{\UTFK{B331}}%
+\DeclareUnicodeCharacter{B332}{\UTFK{B332}}%
+\DeclareUnicodeCharacter{B333}{\UTFK{B333}}%
+\DeclareUnicodeCharacter{B334}{\UTFK{B334}}%
+\DeclareUnicodeCharacter{B335}{\UTFK{B335}}%
+\DeclareUnicodeCharacter{B336}{\UTFK{B336}}%
+\DeclareUnicodeCharacter{B337}{\UTFK{B337}}%
+\DeclareUnicodeCharacter{B338}{\UTFK{B338}}%
+\DeclareUnicodeCharacter{B339}{\UTFK{B339}}%
+\DeclareUnicodeCharacter{B33A}{\UTFK{B33A}}%
+\DeclareUnicodeCharacter{B33B}{\UTFK{B33B}}%
+\DeclareUnicodeCharacter{B33C}{\UTFK{B33C}}%
+\DeclareUnicodeCharacter{B33D}{\UTFK{B33D}}%
+\DeclareUnicodeCharacter{B33E}{\UTFK{B33E}}%
+\DeclareUnicodeCharacter{B33F}{\UTFK{B33F}}%
+\DeclareUnicodeCharacter{B340}{\UTFK{B340}}%
+\DeclareUnicodeCharacter{B341}{\UTFK{B341}}%
+\DeclareUnicodeCharacter{B342}{\UTFK{B342}}%
+\DeclareUnicodeCharacter{B343}{\UTFK{B343}}%
+\DeclareUnicodeCharacter{B344}{\UTFK{B344}}%
+\DeclareUnicodeCharacter{B345}{\UTFK{B345}}%
+\DeclareUnicodeCharacter{B346}{\UTFK{B346}}%
+\DeclareUnicodeCharacter{B347}{\UTFK{B347}}%
+\DeclareUnicodeCharacter{B348}{\UTFK{B348}}%
+\DeclareUnicodeCharacter{B349}{\UTFK{B349}}%
+\DeclareUnicodeCharacter{B34A}{\UTFK{B34A}}%
+\DeclareUnicodeCharacter{B34B}{\UTFK{B34B}}%
+\DeclareUnicodeCharacter{B34C}{\UTFK{B34C}}%
+\DeclareUnicodeCharacter{B34D}{\UTFK{B34D}}%
+\DeclareUnicodeCharacter{B34E}{\UTFK{B34E}}%
+\DeclareUnicodeCharacter{B34F}{\UTFK{B34F}}%
+\DeclareUnicodeCharacter{B350}{\UTFK{B350}}%
+\DeclareUnicodeCharacter{B351}{\UTFK{B351}}%
+\DeclareUnicodeCharacter{B352}{\UTFK{B352}}%
+\DeclareUnicodeCharacter{B353}{\UTFK{B353}}%
+\DeclareUnicodeCharacter{B354}{\UTFK{B354}}%
+\DeclareUnicodeCharacter{B355}{\UTFK{B355}}%
+\DeclareUnicodeCharacter{B356}{\UTFK{B356}}%
+\DeclareUnicodeCharacter{B357}{\UTFK{B357}}%
+\DeclareUnicodeCharacter{B358}{\UTFK{B358}}%
+\DeclareUnicodeCharacter{B359}{\UTFK{B359}}%
+\DeclareUnicodeCharacter{B35A}{\UTFK{B35A}}%
+\DeclareUnicodeCharacter{B35B}{\UTFK{B35B}}%
+\DeclareUnicodeCharacter{B35C}{\UTFK{B35C}}%
+\DeclareUnicodeCharacter{B35D}{\UTFK{B35D}}%
+\DeclareUnicodeCharacter{B35E}{\UTFK{B35E}}%
+\DeclareUnicodeCharacter{B35F}{\UTFK{B35F}}%
+\DeclareUnicodeCharacter{B360}{\UTFK{B360}}%
+\DeclareUnicodeCharacter{B361}{\UTFK{B361}}%
+\DeclareUnicodeCharacter{B362}{\UTFK{B362}}%
+\DeclareUnicodeCharacter{B363}{\UTFK{B363}}%
+\DeclareUnicodeCharacter{B364}{\UTFK{B364}}%
+\DeclareUnicodeCharacter{B365}{\UTFK{B365}}%
+\DeclareUnicodeCharacter{B366}{\UTFK{B366}}%
+\DeclareUnicodeCharacter{B367}{\UTFK{B367}}%
+\DeclareUnicodeCharacter{B368}{\UTFK{B368}}%
+\DeclareUnicodeCharacter{B369}{\UTFK{B369}}%
+\DeclareUnicodeCharacter{B36A}{\UTFK{B36A}}%
+\DeclareUnicodeCharacter{B36B}{\UTFK{B36B}}%
+\DeclareUnicodeCharacter{B36C}{\UTFK{B36C}}%
+\DeclareUnicodeCharacter{B36D}{\UTFK{B36D}}%
+\DeclareUnicodeCharacter{B36E}{\UTFK{B36E}}%
+\DeclareUnicodeCharacter{B36F}{\UTFK{B36F}}%
+\DeclareUnicodeCharacter{B370}{\UTFK{B370}}%
+\DeclareUnicodeCharacter{B371}{\UTFK{B371}}%
+\DeclareUnicodeCharacter{B372}{\UTFK{B372}}%
+\DeclareUnicodeCharacter{B373}{\UTFK{B373}}%
+\DeclareUnicodeCharacter{B374}{\UTFK{B374}}%
+\DeclareUnicodeCharacter{B375}{\UTFK{B375}}%
+\DeclareUnicodeCharacter{B376}{\UTFK{B376}}%
+\DeclareUnicodeCharacter{B377}{\UTFK{B377}}%
+\DeclareUnicodeCharacter{B378}{\UTFK{B378}}%
+\DeclareUnicodeCharacter{B379}{\UTFK{B379}}%
+\DeclareUnicodeCharacter{B37A}{\UTFK{B37A}}%
+\DeclareUnicodeCharacter{B37B}{\UTFK{B37B}}%
+\DeclareUnicodeCharacter{B37C}{\UTFK{B37C}}%
+\DeclareUnicodeCharacter{B37D}{\UTFK{B37D}}%
+\DeclareUnicodeCharacter{B37E}{\UTFK{B37E}}%
+\DeclareUnicodeCharacter{B37F}{\UTFK{B37F}}%
+\DeclareUnicodeCharacter{B380}{\UTFK{B380}}%
+\DeclareUnicodeCharacter{B381}{\UTFK{B381}}%
+\DeclareUnicodeCharacter{B382}{\UTFK{B382}}%
+\DeclareUnicodeCharacter{B383}{\UTFK{B383}}%
+\DeclareUnicodeCharacter{B384}{\UTFK{B384}}%
+\DeclareUnicodeCharacter{B385}{\UTFK{B385}}%
+\DeclareUnicodeCharacter{B386}{\UTFK{B386}}%
+\DeclareUnicodeCharacter{B387}{\UTFK{B387}}%
+\DeclareUnicodeCharacter{B388}{\UTFK{B388}}%
+\DeclareUnicodeCharacter{B389}{\UTFK{B389}}%
+\DeclareUnicodeCharacter{B38A}{\UTFK{B38A}}%
+\DeclareUnicodeCharacter{B38B}{\UTFK{B38B}}%
+\DeclareUnicodeCharacter{B38C}{\UTFK{B38C}}%
+\DeclareUnicodeCharacter{B38D}{\UTFK{B38D}}%
+\DeclareUnicodeCharacter{B38E}{\UTFK{B38E}}%
+\DeclareUnicodeCharacter{B38F}{\UTFK{B38F}}%
+\DeclareUnicodeCharacter{B390}{\UTFK{B390}}%
+\DeclareUnicodeCharacter{B391}{\UTFK{B391}}%
+\DeclareUnicodeCharacter{B392}{\UTFK{B392}}%
+\DeclareUnicodeCharacter{B393}{\UTFK{B393}}%
+\DeclareUnicodeCharacter{B394}{\UTFK{B394}}%
+\DeclareUnicodeCharacter{B395}{\UTFK{B395}}%
+\DeclareUnicodeCharacter{B396}{\UTFK{B396}}%
+\DeclareUnicodeCharacter{B397}{\UTFK{B397}}%
+\DeclareUnicodeCharacter{B398}{\UTFK{B398}}%
+\DeclareUnicodeCharacter{B399}{\UTFK{B399}}%
+\DeclareUnicodeCharacter{B39A}{\UTFK{B39A}}%
+\DeclareUnicodeCharacter{B39B}{\UTFK{B39B}}%
+\DeclareUnicodeCharacter{B39C}{\UTFK{B39C}}%
+\DeclareUnicodeCharacter{B39D}{\UTFK{B39D}}%
+\DeclareUnicodeCharacter{B39E}{\UTFK{B39E}}%
+\DeclareUnicodeCharacter{B39F}{\UTFK{B39F}}%
+\DeclareUnicodeCharacter{B3A0}{\UTFK{B3A0}}%
+\DeclareUnicodeCharacter{B3A1}{\UTFK{B3A1}}%
+\DeclareUnicodeCharacter{B3A2}{\UTFK{B3A2}}%
+\DeclareUnicodeCharacter{B3A3}{\UTFK{B3A3}}%
+\DeclareUnicodeCharacter{B3A4}{\UTFK{B3A4}}%
+\DeclareUnicodeCharacter{B3A5}{\UTFK{B3A5}}%
+\DeclareUnicodeCharacter{B3A6}{\UTFK{B3A6}}%
+\DeclareUnicodeCharacter{B3A7}{\UTFK{B3A7}}%
+\DeclareUnicodeCharacter{B3A8}{\UTFK{B3A8}}%
+\DeclareUnicodeCharacter{B3A9}{\UTFK{B3A9}}%
+\DeclareUnicodeCharacter{B3AA}{\UTFK{B3AA}}%
+\DeclareUnicodeCharacter{B3AB}{\UTFK{B3AB}}%
+\DeclareUnicodeCharacter{B3AC}{\UTFK{B3AC}}%
+\DeclareUnicodeCharacter{B3AD}{\UTFK{B3AD}}%
+\DeclareUnicodeCharacter{B3AE}{\UTFK{B3AE}}%
+\DeclareUnicodeCharacter{B3AF}{\UTFK{B3AF}}%
+\DeclareUnicodeCharacter{B3B0}{\UTFK{B3B0}}%
+\DeclareUnicodeCharacter{B3B1}{\UTFK{B3B1}}%
+\DeclareUnicodeCharacter{B3B2}{\UTFK{B3B2}}%
+\DeclareUnicodeCharacter{B3B3}{\UTFK{B3B3}}%
+\DeclareUnicodeCharacter{B3B4}{\UTFK{B3B4}}%
+\DeclareUnicodeCharacter{B3B5}{\UTFK{B3B5}}%
+\DeclareUnicodeCharacter{B3B6}{\UTFK{B3B6}}%
+\DeclareUnicodeCharacter{B3B7}{\UTFK{B3B7}}%
+\DeclareUnicodeCharacter{B3B8}{\UTFK{B3B8}}%
+\DeclareUnicodeCharacter{B3B9}{\UTFK{B3B9}}%
+\DeclareUnicodeCharacter{B3BA}{\UTFK{B3BA}}%
+\DeclareUnicodeCharacter{B3BB}{\UTFK{B3BB}}%
+\DeclareUnicodeCharacter{B3BC}{\UTFK{B3BC}}%
+\DeclareUnicodeCharacter{B3BD}{\UTFK{B3BD}}%
+\DeclareUnicodeCharacter{B3BE}{\UTFK{B3BE}}%
+\DeclareUnicodeCharacter{B3BF}{\UTFK{B3BF}}%
+\DeclareUnicodeCharacter{B3C0}{\UTFK{B3C0}}%
+\DeclareUnicodeCharacter{B3C1}{\UTFK{B3C1}}%
+\DeclareUnicodeCharacter{B3C2}{\UTFK{B3C2}}%
+\DeclareUnicodeCharacter{B3C3}{\UTFK{B3C3}}%
+\DeclareUnicodeCharacter{B3C4}{\UTFK{B3C4}}%
+\DeclareUnicodeCharacter{B3C5}{\UTFK{B3C5}}%
+\DeclareUnicodeCharacter{B3C6}{\UTFK{B3C6}}%
+\DeclareUnicodeCharacter{B3C7}{\UTFK{B3C7}}%
+\DeclareUnicodeCharacter{B3C8}{\UTFK{B3C8}}%
+\DeclareUnicodeCharacter{B3C9}{\UTFK{B3C9}}%
+\DeclareUnicodeCharacter{B3CA}{\UTFK{B3CA}}%
+\DeclareUnicodeCharacter{B3CB}{\UTFK{B3CB}}%
+\DeclareUnicodeCharacter{B3CC}{\UTFK{B3CC}}%
+\DeclareUnicodeCharacter{B3CD}{\UTFK{B3CD}}%
+\DeclareUnicodeCharacter{B3CE}{\UTFK{B3CE}}%
+\DeclareUnicodeCharacter{B3CF}{\UTFK{B3CF}}%
+\DeclareUnicodeCharacter{B3D0}{\UTFK{B3D0}}%
+\DeclareUnicodeCharacter{B3D1}{\UTFK{B3D1}}%
+\DeclareUnicodeCharacter{B3D2}{\UTFK{B3D2}}%
+\DeclareUnicodeCharacter{B3D3}{\UTFK{B3D3}}%
+\DeclareUnicodeCharacter{B3D4}{\UTFK{B3D4}}%
+\DeclareUnicodeCharacter{B3D5}{\UTFK{B3D5}}%
+\DeclareUnicodeCharacter{B3D6}{\UTFK{B3D6}}%
+\DeclareUnicodeCharacter{B3D7}{\UTFK{B3D7}}%
+\DeclareUnicodeCharacter{B3D8}{\UTFK{B3D8}}%
+\DeclareUnicodeCharacter{B3D9}{\UTFK{B3D9}}%
+\DeclareUnicodeCharacter{B3DA}{\UTFK{B3DA}}%
+\DeclareUnicodeCharacter{B3DB}{\UTFK{B3DB}}%
+\DeclareUnicodeCharacter{B3DC}{\UTFK{B3DC}}%
+\DeclareUnicodeCharacter{B3DD}{\UTFK{B3DD}}%
+\DeclareUnicodeCharacter{B3DE}{\UTFK{B3DE}}%
+\DeclareUnicodeCharacter{B3DF}{\UTFK{B3DF}}%
+\DeclareUnicodeCharacter{B3E0}{\UTFK{B3E0}}%
+\DeclareUnicodeCharacter{B3E1}{\UTFK{B3E1}}%
+\DeclareUnicodeCharacter{B3E2}{\UTFK{B3E2}}%
+\DeclareUnicodeCharacter{B3E3}{\UTFK{B3E3}}%
+\DeclareUnicodeCharacter{B3E4}{\UTFK{B3E4}}%
+\DeclareUnicodeCharacter{B3E5}{\UTFK{B3E5}}%
+\DeclareUnicodeCharacter{B3E6}{\UTFK{B3E6}}%
+\DeclareUnicodeCharacter{B3E7}{\UTFK{B3E7}}%
+\DeclareUnicodeCharacter{B3E8}{\UTFK{B3E8}}%
+\DeclareUnicodeCharacter{B3E9}{\UTFK{B3E9}}%
+\DeclareUnicodeCharacter{B3EA}{\UTFK{B3EA}}%
+\DeclareUnicodeCharacter{B3EB}{\UTFK{B3EB}}%
+\DeclareUnicodeCharacter{B3EC}{\UTFK{B3EC}}%
+\DeclareUnicodeCharacter{B3ED}{\UTFK{B3ED}}%
+\DeclareUnicodeCharacter{B3EE}{\UTFK{B3EE}}%
+\DeclareUnicodeCharacter{B3EF}{\UTFK{B3EF}}%
+\DeclareUnicodeCharacter{B3F0}{\UTFK{B3F0}}%
+\DeclareUnicodeCharacter{B3F1}{\UTFK{B3F1}}%
+\DeclareUnicodeCharacter{B3F2}{\UTFK{B3F2}}%
+\DeclareUnicodeCharacter{B3F3}{\UTFK{B3F3}}%
+\DeclareUnicodeCharacter{B3F4}{\UTFK{B3F4}}%
+\DeclareUnicodeCharacter{B3F5}{\UTFK{B3F5}}%
+\DeclareUnicodeCharacter{B3F6}{\UTFK{B3F6}}%
+\DeclareUnicodeCharacter{B3F7}{\UTFK{B3F7}}%
+\DeclareUnicodeCharacter{B3F8}{\UTFK{B3F8}}%
+\DeclareUnicodeCharacter{B3F9}{\UTFK{B3F9}}%
+\DeclareUnicodeCharacter{B3FA}{\UTFK{B3FA}}%
+\DeclareUnicodeCharacter{B3FB}{\UTFK{B3FB}}%
+\DeclareUnicodeCharacter{B3FC}{\UTFK{B3FC}}%
+\DeclareUnicodeCharacter{B3FD}{\UTFK{B3FD}}%
+\DeclareUnicodeCharacter{B3FE}{\UTFK{B3FE}}%
+\DeclareUnicodeCharacter{B3FF}{\UTFK{B3FF}}%
+\DeclareUnicodeCharacter{B400}{\UTFK{B400}}%
+\DeclareUnicodeCharacter{B401}{\UTFK{B401}}%
+\DeclareUnicodeCharacter{B402}{\UTFK{B402}}%
+\DeclareUnicodeCharacter{B403}{\UTFK{B403}}%
+\DeclareUnicodeCharacter{B404}{\UTFK{B404}}%
+\DeclareUnicodeCharacter{B405}{\UTFK{B405}}%
+\DeclareUnicodeCharacter{B406}{\UTFK{B406}}%
+\DeclareUnicodeCharacter{B407}{\UTFK{B407}}%
+\DeclareUnicodeCharacter{B408}{\UTFK{B408}}%
+\DeclareUnicodeCharacter{B409}{\UTFK{B409}}%
+\DeclareUnicodeCharacter{B40A}{\UTFK{B40A}}%
+\DeclareUnicodeCharacter{B40B}{\UTFK{B40B}}%
+\DeclareUnicodeCharacter{B40C}{\UTFK{B40C}}%
+\DeclareUnicodeCharacter{B40D}{\UTFK{B40D}}%
+\DeclareUnicodeCharacter{B40E}{\UTFK{B40E}}%
+\DeclareUnicodeCharacter{B40F}{\UTFK{B40F}}%
+\DeclareUnicodeCharacter{B410}{\UTFK{B410}}%
+\DeclareUnicodeCharacter{B411}{\UTFK{B411}}%
+\DeclareUnicodeCharacter{B412}{\UTFK{B412}}%
+\DeclareUnicodeCharacter{B413}{\UTFK{B413}}%
+\DeclareUnicodeCharacter{B414}{\UTFK{B414}}%
+\DeclareUnicodeCharacter{B415}{\UTFK{B415}}%
+\DeclareUnicodeCharacter{B416}{\UTFK{B416}}%
+\DeclareUnicodeCharacter{B417}{\UTFK{B417}}%
+\DeclareUnicodeCharacter{B418}{\UTFK{B418}}%
+\DeclareUnicodeCharacter{B419}{\UTFK{B419}}%
+\DeclareUnicodeCharacter{B41A}{\UTFK{B41A}}%
+\DeclareUnicodeCharacter{B41B}{\UTFK{B41B}}%
+\DeclareUnicodeCharacter{B41C}{\UTFK{B41C}}%
+\DeclareUnicodeCharacter{B41D}{\UTFK{B41D}}%
+\DeclareUnicodeCharacter{B41E}{\UTFK{B41E}}%
+\DeclareUnicodeCharacter{B41F}{\UTFK{B41F}}%
+\DeclareUnicodeCharacter{B420}{\UTFK{B420}}%
+\DeclareUnicodeCharacter{B421}{\UTFK{B421}}%
+\DeclareUnicodeCharacter{B422}{\UTFK{B422}}%
+\DeclareUnicodeCharacter{B423}{\UTFK{B423}}%
+\DeclareUnicodeCharacter{B424}{\UTFK{B424}}%
+\DeclareUnicodeCharacter{B425}{\UTFK{B425}}%
+\DeclareUnicodeCharacter{B426}{\UTFK{B426}}%
+\DeclareUnicodeCharacter{B427}{\UTFK{B427}}%
+\DeclareUnicodeCharacter{B428}{\UTFK{B428}}%
+\DeclareUnicodeCharacter{B429}{\UTFK{B429}}%
+\DeclareUnicodeCharacter{B42A}{\UTFK{B42A}}%
+\DeclareUnicodeCharacter{B42B}{\UTFK{B42B}}%
+\DeclareUnicodeCharacter{B42C}{\UTFK{B42C}}%
+\DeclareUnicodeCharacter{B42D}{\UTFK{B42D}}%
+\DeclareUnicodeCharacter{B42E}{\UTFK{B42E}}%
+\DeclareUnicodeCharacter{B42F}{\UTFK{B42F}}%
+\DeclareUnicodeCharacter{B430}{\UTFK{B430}}%
+\DeclareUnicodeCharacter{B431}{\UTFK{B431}}%
+\DeclareUnicodeCharacter{B432}{\UTFK{B432}}%
+\DeclareUnicodeCharacter{B433}{\UTFK{B433}}%
+\DeclareUnicodeCharacter{B434}{\UTFK{B434}}%
+\DeclareUnicodeCharacter{B435}{\UTFK{B435}}%
+\DeclareUnicodeCharacter{B436}{\UTFK{B436}}%
+\DeclareUnicodeCharacter{B437}{\UTFK{B437}}%
+\DeclareUnicodeCharacter{B438}{\UTFK{B438}}%
+\DeclareUnicodeCharacter{B439}{\UTFK{B439}}%
+\DeclareUnicodeCharacter{B43A}{\UTFK{B43A}}%
+\DeclareUnicodeCharacter{B43B}{\UTFK{B43B}}%
+\DeclareUnicodeCharacter{B43C}{\UTFK{B43C}}%
+\DeclareUnicodeCharacter{B43D}{\UTFK{B43D}}%
+\DeclareUnicodeCharacter{B43E}{\UTFK{B43E}}%
+\DeclareUnicodeCharacter{B43F}{\UTFK{B43F}}%
+\DeclareUnicodeCharacter{B440}{\UTFK{B440}}%
+\DeclareUnicodeCharacter{B441}{\UTFK{B441}}%
+\DeclareUnicodeCharacter{B442}{\UTFK{B442}}%
+\DeclareUnicodeCharacter{B443}{\UTFK{B443}}%
+\DeclareUnicodeCharacter{B444}{\UTFK{B444}}%
+\DeclareUnicodeCharacter{B445}{\UTFK{B445}}%
+\DeclareUnicodeCharacter{B446}{\UTFK{B446}}%
+\DeclareUnicodeCharacter{B447}{\UTFK{B447}}%
+\DeclareUnicodeCharacter{B448}{\UTFK{B448}}%
+\DeclareUnicodeCharacter{B449}{\UTFK{B449}}%
+\DeclareUnicodeCharacter{B44A}{\UTFK{B44A}}%
+\DeclareUnicodeCharacter{B44B}{\UTFK{B44B}}%
+\DeclareUnicodeCharacter{B44C}{\UTFK{B44C}}%
+\DeclareUnicodeCharacter{B44D}{\UTFK{B44D}}%
+\DeclareUnicodeCharacter{B44E}{\UTFK{B44E}}%
+\DeclareUnicodeCharacter{B44F}{\UTFK{B44F}}%
+\DeclareUnicodeCharacter{B450}{\UTFK{B450}}%
+\DeclareUnicodeCharacter{B451}{\UTFK{B451}}%
+\DeclareUnicodeCharacter{B452}{\UTFK{B452}}%
+\DeclareUnicodeCharacter{B453}{\UTFK{B453}}%
+\DeclareUnicodeCharacter{B454}{\UTFK{B454}}%
+\DeclareUnicodeCharacter{B455}{\UTFK{B455}}%
+\DeclareUnicodeCharacter{B456}{\UTFK{B456}}%
+\DeclareUnicodeCharacter{B457}{\UTFK{B457}}%
+\DeclareUnicodeCharacter{B458}{\UTFK{B458}}%
+\DeclareUnicodeCharacter{B459}{\UTFK{B459}}%
+\DeclareUnicodeCharacter{B45A}{\UTFK{B45A}}%
+\DeclareUnicodeCharacter{B45B}{\UTFK{B45B}}%
+\DeclareUnicodeCharacter{B45C}{\UTFK{B45C}}%
+\DeclareUnicodeCharacter{B45D}{\UTFK{B45D}}%
+\DeclareUnicodeCharacter{B45E}{\UTFK{B45E}}%
+\DeclareUnicodeCharacter{B45F}{\UTFK{B45F}}%
+\DeclareUnicodeCharacter{B460}{\UTFK{B460}}%
+\DeclareUnicodeCharacter{B461}{\UTFK{B461}}%
+\DeclareUnicodeCharacter{B462}{\UTFK{B462}}%
+\DeclareUnicodeCharacter{B463}{\UTFK{B463}}%
+\DeclareUnicodeCharacter{B464}{\UTFK{B464}}%
+\DeclareUnicodeCharacter{B465}{\UTFK{B465}}%
+\DeclareUnicodeCharacter{B466}{\UTFK{B466}}%
+\DeclareUnicodeCharacter{B467}{\UTFK{B467}}%
+\DeclareUnicodeCharacter{B468}{\UTFK{B468}}%
+\DeclareUnicodeCharacter{B469}{\UTFK{B469}}%
+\DeclareUnicodeCharacter{B46A}{\UTFK{B46A}}%
+\DeclareUnicodeCharacter{B46B}{\UTFK{B46B}}%
+\DeclareUnicodeCharacter{B46C}{\UTFK{B46C}}%
+\DeclareUnicodeCharacter{B46D}{\UTFK{B46D}}%
+\DeclareUnicodeCharacter{B46E}{\UTFK{B46E}}%
+\DeclareUnicodeCharacter{B46F}{\UTFK{B46F}}%
+\DeclareUnicodeCharacter{B470}{\UTFK{B470}}%
+\DeclareUnicodeCharacter{B471}{\UTFK{B471}}%
+\DeclareUnicodeCharacter{B472}{\UTFK{B472}}%
+\DeclareUnicodeCharacter{B473}{\UTFK{B473}}%
+\DeclareUnicodeCharacter{B474}{\UTFK{B474}}%
+\DeclareUnicodeCharacter{B475}{\UTFK{B475}}%
+\DeclareUnicodeCharacter{B476}{\UTFK{B476}}%
+\DeclareUnicodeCharacter{B477}{\UTFK{B477}}%
+\DeclareUnicodeCharacter{B478}{\UTFK{B478}}%
+\DeclareUnicodeCharacter{B479}{\UTFK{B479}}%
+\DeclareUnicodeCharacter{B47A}{\UTFK{B47A}}%
+\DeclareUnicodeCharacter{B47B}{\UTFK{B47B}}%
+\DeclareUnicodeCharacter{B47C}{\UTFK{B47C}}%
+\DeclareUnicodeCharacter{B47D}{\UTFK{B47D}}%
+\DeclareUnicodeCharacter{B47E}{\UTFK{B47E}}%
+\DeclareUnicodeCharacter{B47F}{\UTFK{B47F}}%
+\DeclareUnicodeCharacter{B480}{\UTFK{B480}}%
+\DeclareUnicodeCharacter{B481}{\UTFK{B481}}%
+\DeclareUnicodeCharacter{B482}{\UTFK{B482}}%
+\DeclareUnicodeCharacter{B483}{\UTFK{B483}}%
+\DeclareUnicodeCharacter{B484}{\UTFK{B484}}%
+\DeclareUnicodeCharacter{B485}{\UTFK{B485}}%
+\DeclareUnicodeCharacter{B486}{\UTFK{B486}}%
+\DeclareUnicodeCharacter{B487}{\UTFK{B487}}%
+\DeclareUnicodeCharacter{B488}{\UTFK{B488}}%
+\DeclareUnicodeCharacter{B489}{\UTFK{B489}}%
+\DeclareUnicodeCharacter{B48A}{\UTFK{B48A}}%
+\DeclareUnicodeCharacter{B48B}{\UTFK{B48B}}%
+\DeclareUnicodeCharacter{B48C}{\UTFK{B48C}}%
+\DeclareUnicodeCharacter{B48D}{\UTFK{B48D}}%
+\DeclareUnicodeCharacter{B48E}{\UTFK{B48E}}%
+\DeclareUnicodeCharacter{B48F}{\UTFK{B48F}}%
+\DeclareUnicodeCharacter{B490}{\UTFK{B490}}%
+\DeclareUnicodeCharacter{B491}{\UTFK{B491}}%
+\DeclareUnicodeCharacter{B492}{\UTFK{B492}}%
+\DeclareUnicodeCharacter{B493}{\UTFK{B493}}%
+\DeclareUnicodeCharacter{B494}{\UTFK{B494}}%
+\DeclareUnicodeCharacter{B495}{\UTFK{B495}}%
+\DeclareUnicodeCharacter{B496}{\UTFK{B496}}%
+\DeclareUnicodeCharacter{B497}{\UTFK{B497}}%
+\DeclareUnicodeCharacter{B498}{\UTFK{B498}}%
+\DeclareUnicodeCharacter{B499}{\UTFK{B499}}%
+\DeclareUnicodeCharacter{B49A}{\UTFK{B49A}}%
+\DeclareUnicodeCharacter{B49B}{\UTFK{B49B}}%
+\DeclareUnicodeCharacter{B49C}{\UTFK{B49C}}%
+\DeclareUnicodeCharacter{B49D}{\UTFK{B49D}}%
+\DeclareUnicodeCharacter{B49E}{\UTFK{B49E}}%
+\DeclareUnicodeCharacter{B49F}{\UTFK{B49F}}%
+\DeclareUnicodeCharacter{B4A0}{\UTFK{B4A0}}%
+\DeclareUnicodeCharacter{B4A1}{\UTFK{B4A1}}%
+\DeclareUnicodeCharacter{B4A2}{\UTFK{B4A2}}%
+\DeclareUnicodeCharacter{B4A3}{\UTFK{B4A3}}%
+\DeclareUnicodeCharacter{B4A4}{\UTFK{B4A4}}%
+\DeclareUnicodeCharacter{B4A5}{\UTFK{B4A5}}%
+\DeclareUnicodeCharacter{B4A6}{\UTFK{B4A6}}%
+\DeclareUnicodeCharacter{B4A7}{\UTFK{B4A7}}%
+\DeclareUnicodeCharacter{B4A8}{\UTFK{B4A8}}%
+\DeclareUnicodeCharacter{B4A9}{\UTFK{B4A9}}%
+\DeclareUnicodeCharacter{B4AA}{\UTFK{B4AA}}%
+\DeclareUnicodeCharacter{B4AB}{\UTFK{B4AB}}%
+\DeclareUnicodeCharacter{B4AC}{\UTFK{B4AC}}%
+\DeclareUnicodeCharacter{B4AD}{\UTFK{B4AD}}%
+\DeclareUnicodeCharacter{B4AE}{\UTFK{B4AE}}%
+\DeclareUnicodeCharacter{B4AF}{\UTFK{B4AF}}%
+\DeclareUnicodeCharacter{B4B0}{\UTFK{B4B0}}%
+\DeclareUnicodeCharacter{B4B1}{\UTFK{B4B1}}%
+\DeclareUnicodeCharacter{B4B2}{\UTFK{B4B2}}%
+\DeclareUnicodeCharacter{B4B3}{\UTFK{B4B3}}%
+\DeclareUnicodeCharacter{B4B4}{\UTFK{B4B4}}%
+\DeclareUnicodeCharacter{B4B5}{\UTFK{B4B5}}%
+\DeclareUnicodeCharacter{B4B6}{\UTFK{B4B6}}%
+\DeclareUnicodeCharacter{B4B7}{\UTFK{B4B7}}%
+\DeclareUnicodeCharacter{B4B8}{\UTFK{B4B8}}%
+\DeclareUnicodeCharacter{B4B9}{\UTFK{B4B9}}%
+\DeclareUnicodeCharacter{B4BA}{\UTFK{B4BA}}%
+\DeclareUnicodeCharacter{B4BB}{\UTFK{B4BB}}%
+\DeclareUnicodeCharacter{B4BC}{\UTFK{B4BC}}%
+\DeclareUnicodeCharacter{B4BD}{\UTFK{B4BD}}%
+\DeclareUnicodeCharacter{B4BE}{\UTFK{B4BE}}%
+\DeclareUnicodeCharacter{B4BF}{\UTFK{B4BF}}%
+\DeclareUnicodeCharacter{B4C0}{\UTFK{B4C0}}%
+\DeclareUnicodeCharacter{B4C1}{\UTFK{B4C1}}%
+\DeclareUnicodeCharacter{B4C2}{\UTFK{B4C2}}%
+\DeclareUnicodeCharacter{B4C3}{\UTFK{B4C3}}%
+\DeclareUnicodeCharacter{B4C4}{\UTFK{B4C4}}%
+\DeclareUnicodeCharacter{B4C5}{\UTFK{B4C5}}%
+\DeclareUnicodeCharacter{B4C6}{\UTFK{B4C6}}%
+\DeclareUnicodeCharacter{B4C7}{\UTFK{B4C7}}%
+\DeclareUnicodeCharacter{B4C8}{\UTFK{B4C8}}%
+\DeclareUnicodeCharacter{B4C9}{\UTFK{B4C9}}%
+\DeclareUnicodeCharacter{B4CA}{\UTFK{B4CA}}%
+\DeclareUnicodeCharacter{B4CB}{\UTFK{B4CB}}%
+\DeclareUnicodeCharacter{B4CC}{\UTFK{B4CC}}%
+\DeclareUnicodeCharacter{B4CD}{\UTFK{B4CD}}%
+\DeclareUnicodeCharacter{B4CE}{\UTFK{B4CE}}%
+\DeclareUnicodeCharacter{B4CF}{\UTFK{B4CF}}%
+\DeclareUnicodeCharacter{B4D0}{\UTFK{B4D0}}%
+\DeclareUnicodeCharacter{B4D1}{\UTFK{B4D1}}%
+\DeclareUnicodeCharacter{B4D2}{\UTFK{B4D2}}%
+\DeclareUnicodeCharacter{B4D3}{\UTFK{B4D3}}%
+\DeclareUnicodeCharacter{B4D4}{\UTFK{B4D4}}%
+\DeclareUnicodeCharacter{B4D5}{\UTFK{B4D5}}%
+\DeclareUnicodeCharacter{B4D6}{\UTFK{B4D6}}%
+\DeclareUnicodeCharacter{B4D7}{\UTFK{B4D7}}%
+\DeclareUnicodeCharacter{B4D8}{\UTFK{B4D8}}%
+\DeclareUnicodeCharacter{B4D9}{\UTFK{B4D9}}%
+\DeclareUnicodeCharacter{B4DA}{\UTFK{B4DA}}%
+\DeclareUnicodeCharacter{B4DB}{\UTFK{B4DB}}%
+\DeclareUnicodeCharacter{B4DC}{\UTFK{B4DC}}%
+\DeclareUnicodeCharacter{B4DD}{\UTFK{B4DD}}%
+\DeclareUnicodeCharacter{B4DE}{\UTFK{B4DE}}%
+\DeclareUnicodeCharacter{B4DF}{\UTFK{B4DF}}%
+\DeclareUnicodeCharacter{B4E0}{\UTFK{B4E0}}%
+\DeclareUnicodeCharacter{B4E1}{\UTFK{B4E1}}%
+\DeclareUnicodeCharacter{B4E2}{\UTFK{B4E2}}%
+\DeclareUnicodeCharacter{B4E3}{\UTFK{B4E3}}%
+\DeclareUnicodeCharacter{B4E4}{\UTFK{B4E4}}%
+\DeclareUnicodeCharacter{B4E5}{\UTFK{B4E5}}%
+\DeclareUnicodeCharacter{B4E6}{\UTFK{B4E6}}%
+\DeclareUnicodeCharacter{B4E7}{\UTFK{B4E7}}%
+\DeclareUnicodeCharacter{B4E8}{\UTFK{B4E8}}%
+\DeclareUnicodeCharacter{B4E9}{\UTFK{B4E9}}%
+\DeclareUnicodeCharacter{B4EA}{\UTFK{B4EA}}%
+\DeclareUnicodeCharacter{B4EB}{\UTFK{B4EB}}%
+\DeclareUnicodeCharacter{B4EC}{\UTFK{B4EC}}%
+\DeclareUnicodeCharacter{B4ED}{\UTFK{B4ED}}%
+\DeclareUnicodeCharacter{B4EE}{\UTFK{B4EE}}%
+\DeclareUnicodeCharacter{B4EF}{\UTFK{B4EF}}%
+\DeclareUnicodeCharacter{B4F0}{\UTFK{B4F0}}%
+\DeclareUnicodeCharacter{B4F1}{\UTFK{B4F1}}%
+\DeclareUnicodeCharacter{B4F2}{\UTFK{B4F2}}%
+\DeclareUnicodeCharacter{B4F3}{\UTFK{B4F3}}%
+\DeclareUnicodeCharacter{B4F4}{\UTFK{B4F4}}%
+\DeclareUnicodeCharacter{B4F5}{\UTFK{B4F5}}%
+\DeclareUnicodeCharacter{B4F6}{\UTFK{B4F6}}%
+\DeclareUnicodeCharacter{B4F7}{\UTFK{B4F7}}%
+\DeclareUnicodeCharacter{B4F8}{\UTFK{B4F8}}%
+\DeclareUnicodeCharacter{B4F9}{\UTFK{B4F9}}%
+\DeclareUnicodeCharacter{B4FA}{\UTFK{B4FA}}%
+\DeclareUnicodeCharacter{B4FB}{\UTFK{B4FB}}%
+\DeclareUnicodeCharacter{B4FC}{\UTFK{B4FC}}%
+\DeclareUnicodeCharacter{B4FD}{\UTFK{B4FD}}%
+\DeclareUnicodeCharacter{B4FE}{\UTFK{B4FE}}%
+\DeclareUnicodeCharacter{B4FF}{\UTFK{B4FF}}%
+\DeclareUnicodeCharacter{B500}{\UTFK{B500}}%
+\DeclareUnicodeCharacter{B501}{\UTFK{B501}}%
+\DeclareUnicodeCharacter{B502}{\UTFK{B502}}%
+\DeclareUnicodeCharacter{B503}{\UTFK{B503}}%
+\DeclareUnicodeCharacter{B504}{\UTFK{B504}}%
+\DeclareUnicodeCharacter{B505}{\UTFK{B505}}%
+\DeclareUnicodeCharacter{B506}{\UTFK{B506}}%
+\DeclareUnicodeCharacter{B507}{\UTFK{B507}}%
+\DeclareUnicodeCharacter{B508}{\UTFK{B508}}%
+\DeclareUnicodeCharacter{B509}{\UTFK{B509}}%
+\DeclareUnicodeCharacter{B50A}{\UTFK{B50A}}%
+\DeclareUnicodeCharacter{B50B}{\UTFK{B50B}}%
+\DeclareUnicodeCharacter{B50C}{\UTFK{B50C}}%
+\DeclareUnicodeCharacter{B50D}{\UTFK{B50D}}%
+\DeclareUnicodeCharacter{B50E}{\UTFK{B50E}}%
+\DeclareUnicodeCharacter{B50F}{\UTFK{B50F}}%
+\DeclareUnicodeCharacter{B510}{\UTFK{B510}}%
+\DeclareUnicodeCharacter{B511}{\UTFK{B511}}%
+\DeclareUnicodeCharacter{B512}{\UTFK{B512}}%
+\DeclareUnicodeCharacter{B513}{\UTFK{B513}}%
+\DeclareUnicodeCharacter{B514}{\UTFK{B514}}%
+\DeclareUnicodeCharacter{B515}{\UTFK{B515}}%
+\DeclareUnicodeCharacter{B516}{\UTFK{B516}}%
+\DeclareUnicodeCharacter{B517}{\UTFK{B517}}%
+\DeclareUnicodeCharacter{B518}{\UTFK{B518}}%
+\DeclareUnicodeCharacter{B519}{\UTFK{B519}}%
+\DeclareUnicodeCharacter{B51A}{\UTFK{B51A}}%
+\DeclareUnicodeCharacter{B51B}{\UTFK{B51B}}%
+\DeclareUnicodeCharacter{B51C}{\UTFK{B51C}}%
+\DeclareUnicodeCharacter{B51D}{\UTFK{B51D}}%
+\DeclareUnicodeCharacter{B51E}{\UTFK{B51E}}%
+\DeclareUnicodeCharacter{B51F}{\UTFK{B51F}}%
+\DeclareUnicodeCharacter{B520}{\UTFK{B520}}%
+\DeclareUnicodeCharacter{B521}{\UTFK{B521}}%
+\DeclareUnicodeCharacter{B522}{\UTFK{B522}}%
+\DeclareUnicodeCharacter{B523}{\UTFK{B523}}%
+\DeclareUnicodeCharacter{B524}{\UTFK{B524}}%
+\DeclareUnicodeCharacter{B525}{\UTFK{B525}}%
+\DeclareUnicodeCharacter{B526}{\UTFK{B526}}%
+\DeclareUnicodeCharacter{B527}{\UTFK{B527}}%
+\DeclareUnicodeCharacter{B528}{\UTFK{B528}}%
+\DeclareUnicodeCharacter{B529}{\UTFK{B529}}%
+\DeclareUnicodeCharacter{B52A}{\UTFK{B52A}}%
+\DeclareUnicodeCharacter{B52B}{\UTFK{B52B}}%
+\DeclareUnicodeCharacter{B52C}{\UTFK{B52C}}%
+\DeclareUnicodeCharacter{B52D}{\UTFK{B52D}}%
+\DeclareUnicodeCharacter{B52E}{\UTFK{B52E}}%
+\DeclareUnicodeCharacter{B52F}{\UTFK{B52F}}%
+\DeclareUnicodeCharacter{B530}{\UTFK{B530}}%
+\DeclareUnicodeCharacter{B531}{\UTFK{B531}}%
+\DeclareUnicodeCharacter{B532}{\UTFK{B532}}%
+\DeclareUnicodeCharacter{B533}{\UTFK{B533}}%
+\DeclareUnicodeCharacter{B534}{\UTFK{B534}}%
+\DeclareUnicodeCharacter{B535}{\UTFK{B535}}%
+\DeclareUnicodeCharacter{B536}{\UTFK{B536}}%
+\DeclareUnicodeCharacter{B537}{\UTFK{B537}}%
+\DeclareUnicodeCharacter{B538}{\UTFK{B538}}%
+\DeclareUnicodeCharacter{B539}{\UTFK{B539}}%
+\DeclareUnicodeCharacter{B53A}{\UTFK{B53A}}%
+\DeclareUnicodeCharacter{B53B}{\UTFK{B53B}}%
+\DeclareUnicodeCharacter{B53C}{\UTFK{B53C}}%
+\DeclareUnicodeCharacter{B53D}{\UTFK{B53D}}%
+\DeclareUnicodeCharacter{B53E}{\UTFK{B53E}}%
+\DeclareUnicodeCharacter{B53F}{\UTFK{B53F}}%
+\DeclareUnicodeCharacter{B540}{\UTFK{B540}}%
+\DeclareUnicodeCharacter{B541}{\UTFK{B541}}%
+\DeclareUnicodeCharacter{B542}{\UTFK{B542}}%
+\DeclareUnicodeCharacter{B543}{\UTFK{B543}}%
+\DeclareUnicodeCharacter{B544}{\UTFK{B544}}%
+\DeclareUnicodeCharacter{B545}{\UTFK{B545}}%
+\DeclareUnicodeCharacter{B546}{\UTFK{B546}}%
+\DeclareUnicodeCharacter{B547}{\UTFK{B547}}%
+\DeclareUnicodeCharacter{B548}{\UTFK{B548}}%
+\DeclareUnicodeCharacter{B549}{\UTFK{B549}}%
+\DeclareUnicodeCharacter{B54A}{\UTFK{B54A}}%
+\DeclareUnicodeCharacter{B54B}{\UTFK{B54B}}%
+\DeclareUnicodeCharacter{B54C}{\UTFK{B54C}}%
+\DeclareUnicodeCharacter{B54D}{\UTFK{B54D}}%
+\DeclareUnicodeCharacter{B54E}{\UTFK{B54E}}%
+\DeclareUnicodeCharacter{B54F}{\UTFK{B54F}}%
+\DeclareUnicodeCharacter{B550}{\UTFK{B550}}%
+\DeclareUnicodeCharacter{B551}{\UTFK{B551}}%
+\DeclareUnicodeCharacter{B552}{\UTFK{B552}}%
+\DeclareUnicodeCharacter{B553}{\UTFK{B553}}%
+\DeclareUnicodeCharacter{B554}{\UTFK{B554}}%
+\DeclareUnicodeCharacter{B555}{\UTFK{B555}}%
+\DeclareUnicodeCharacter{B556}{\UTFK{B556}}%
+\DeclareUnicodeCharacter{B557}{\UTFK{B557}}%
+\DeclareUnicodeCharacter{B558}{\UTFK{B558}}%
+\DeclareUnicodeCharacter{B559}{\UTFK{B559}}%
+\DeclareUnicodeCharacter{B55A}{\UTFK{B55A}}%
+\DeclareUnicodeCharacter{B55B}{\UTFK{B55B}}%
+\DeclareUnicodeCharacter{B55C}{\UTFK{B55C}}%
+\DeclareUnicodeCharacter{B55D}{\UTFK{B55D}}%
+\DeclareUnicodeCharacter{B55E}{\UTFK{B55E}}%
+\DeclareUnicodeCharacter{B55F}{\UTFK{B55F}}%
+\DeclareUnicodeCharacter{B560}{\UTFK{B560}}%
+\DeclareUnicodeCharacter{B561}{\UTFK{B561}}%
+\DeclareUnicodeCharacter{B562}{\UTFK{B562}}%
+\DeclareUnicodeCharacter{B563}{\UTFK{B563}}%
+\DeclareUnicodeCharacter{B564}{\UTFK{B564}}%
+\DeclareUnicodeCharacter{B565}{\UTFK{B565}}%
+\DeclareUnicodeCharacter{B566}{\UTFK{B566}}%
+\DeclareUnicodeCharacter{B567}{\UTFK{B567}}%
+\DeclareUnicodeCharacter{B568}{\UTFK{B568}}%
+\DeclareUnicodeCharacter{B569}{\UTFK{B569}}%
+\DeclareUnicodeCharacter{B56A}{\UTFK{B56A}}%
+\DeclareUnicodeCharacter{B56B}{\UTFK{B56B}}%
+\DeclareUnicodeCharacter{B56C}{\UTFK{B56C}}%
+\DeclareUnicodeCharacter{B56D}{\UTFK{B56D}}%
+\DeclareUnicodeCharacter{B56E}{\UTFK{B56E}}%
+\DeclareUnicodeCharacter{B56F}{\UTFK{B56F}}%
+\DeclareUnicodeCharacter{B570}{\UTFK{B570}}%
+\DeclareUnicodeCharacter{B571}{\UTFK{B571}}%
+\DeclareUnicodeCharacter{B572}{\UTFK{B572}}%
+\DeclareUnicodeCharacter{B573}{\UTFK{B573}}%
+\DeclareUnicodeCharacter{B574}{\UTFK{B574}}%
+\DeclareUnicodeCharacter{B575}{\UTFK{B575}}%
+\DeclareUnicodeCharacter{B576}{\UTFK{B576}}%
+\DeclareUnicodeCharacter{B577}{\UTFK{B577}}%
+\DeclareUnicodeCharacter{B578}{\UTFK{B578}}%
+\DeclareUnicodeCharacter{B579}{\UTFK{B579}}%
+\DeclareUnicodeCharacter{B57A}{\UTFK{B57A}}%
+\DeclareUnicodeCharacter{B57B}{\UTFK{B57B}}%
+\DeclareUnicodeCharacter{B57C}{\UTFK{B57C}}%
+\DeclareUnicodeCharacter{B57D}{\UTFK{B57D}}%
+\DeclareUnicodeCharacter{B57E}{\UTFK{B57E}}%
+\DeclareUnicodeCharacter{B57F}{\UTFK{B57F}}%
+\DeclareUnicodeCharacter{B580}{\UTFK{B580}}%
+\DeclareUnicodeCharacter{B581}{\UTFK{B581}}%
+\DeclareUnicodeCharacter{B582}{\UTFK{B582}}%
+\DeclareUnicodeCharacter{B583}{\UTFK{B583}}%
+\DeclareUnicodeCharacter{B584}{\UTFK{B584}}%
+\DeclareUnicodeCharacter{B585}{\UTFK{B585}}%
+\DeclareUnicodeCharacter{B586}{\UTFK{B586}}%
+\DeclareUnicodeCharacter{B587}{\UTFK{B587}}%
+\DeclareUnicodeCharacter{B588}{\UTFK{B588}}%
+\DeclareUnicodeCharacter{B589}{\UTFK{B589}}%
+\DeclareUnicodeCharacter{B58A}{\UTFK{B58A}}%
+\DeclareUnicodeCharacter{B58B}{\UTFK{B58B}}%
+\DeclareUnicodeCharacter{B58C}{\UTFK{B58C}}%
+\DeclareUnicodeCharacter{B58D}{\UTFK{B58D}}%
+\DeclareUnicodeCharacter{B58E}{\UTFK{B58E}}%
+\DeclareUnicodeCharacter{B58F}{\UTFK{B58F}}%
+\DeclareUnicodeCharacter{B590}{\UTFK{B590}}%
+\DeclareUnicodeCharacter{B591}{\UTFK{B591}}%
+\DeclareUnicodeCharacter{B592}{\UTFK{B592}}%
+\DeclareUnicodeCharacter{B593}{\UTFK{B593}}%
+\DeclareUnicodeCharacter{B594}{\UTFK{B594}}%
+\DeclareUnicodeCharacter{B595}{\UTFK{B595}}%
+\DeclareUnicodeCharacter{B596}{\UTFK{B596}}%
+\DeclareUnicodeCharacter{B597}{\UTFK{B597}}%
+\DeclareUnicodeCharacter{B598}{\UTFK{B598}}%
+\DeclareUnicodeCharacter{B599}{\UTFK{B599}}%
+\DeclareUnicodeCharacter{B59A}{\UTFK{B59A}}%
+\DeclareUnicodeCharacter{B59B}{\UTFK{B59B}}%
+\DeclareUnicodeCharacter{B59C}{\UTFK{B59C}}%
+\DeclareUnicodeCharacter{B59D}{\UTFK{B59D}}%
+\DeclareUnicodeCharacter{B59E}{\UTFK{B59E}}%
+\DeclareUnicodeCharacter{B59F}{\UTFK{B59F}}%
+\DeclareUnicodeCharacter{B5A0}{\UTFK{B5A0}}%
+\DeclareUnicodeCharacter{B5A1}{\UTFK{B5A1}}%
+\DeclareUnicodeCharacter{B5A2}{\UTFK{B5A2}}%
+\DeclareUnicodeCharacter{B5A3}{\UTFK{B5A3}}%
+\DeclareUnicodeCharacter{B5A4}{\UTFK{B5A4}}%
+\DeclareUnicodeCharacter{B5A5}{\UTFK{B5A5}}%
+\DeclareUnicodeCharacter{B5A6}{\UTFK{B5A6}}%
+\DeclareUnicodeCharacter{B5A7}{\UTFK{B5A7}}%
+\DeclareUnicodeCharacter{B5A8}{\UTFK{B5A8}}%
+\DeclareUnicodeCharacter{B5A9}{\UTFK{B5A9}}%
+\DeclareUnicodeCharacter{B5AA}{\UTFK{B5AA}}%
+\DeclareUnicodeCharacter{B5AB}{\UTFK{B5AB}}%
+\DeclareUnicodeCharacter{B5AC}{\UTFK{B5AC}}%
+\DeclareUnicodeCharacter{B5AD}{\UTFK{B5AD}}%
+\DeclareUnicodeCharacter{B5AE}{\UTFK{B5AE}}%
+\DeclareUnicodeCharacter{B5AF}{\UTFK{B5AF}}%
+\DeclareUnicodeCharacter{B5B0}{\UTFK{B5B0}}%
+\DeclareUnicodeCharacter{B5B1}{\UTFK{B5B1}}%
+\DeclareUnicodeCharacter{B5B2}{\UTFK{B5B2}}%
+\DeclareUnicodeCharacter{B5B3}{\UTFK{B5B3}}%
+\DeclareUnicodeCharacter{B5B4}{\UTFK{B5B4}}%
+\DeclareUnicodeCharacter{B5B5}{\UTFK{B5B5}}%
+\DeclareUnicodeCharacter{B5B6}{\UTFK{B5B6}}%
+\DeclareUnicodeCharacter{B5B7}{\UTFK{B5B7}}%
+\DeclareUnicodeCharacter{B5B8}{\UTFK{B5B8}}%
+\DeclareUnicodeCharacter{B5B9}{\UTFK{B5B9}}%
+\DeclareUnicodeCharacter{B5BA}{\UTFK{B5BA}}%
+\DeclareUnicodeCharacter{B5BB}{\UTFK{B5BB}}%
+\DeclareUnicodeCharacter{B5BC}{\UTFK{B5BC}}%
+\DeclareUnicodeCharacter{B5BD}{\UTFK{B5BD}}%
+\DeclareUnicodeCharacter{B5BE}{\UTFK{B5BE}}%
+\DeclareUnicodeCharacter{B5BF}{\UTFK{B5BF}}%
+\DeclareUnicodeCharacter{B5C0}{\UTFK{B5C0}}%
+\DeclareUnicodeCharacter{B5C1}{\UTFK{B5C1}}%
+\DeclareUnicodeCharacter{B5C2}{\UTFK{B5C2}}%
+\DeclareUnicodeCharacter{B5C3}{\UTFK{B5C3}}%
+\DeclareUnicodeCharacter{B5C4}{\UTFK{B5C4}}%
+\DeclareUnicodeCharacter{B5C5}{\UTFK{B5C5}}%
+\DeclareUnicodeCharacter{B5C6}{\UTFK{B5C6}}%
+\DeclareUnicodeCharacter{B5C7}{\UTFK{B5C7}}%
+\DeclareUnicodeCharacter{B5C8}{\UTFK{B5C8}}%
+\DeclareUnicodeCharacter{B5C9}{\UTFK{B5C9}}%
+\DeclareUnicodeCharacter{B5CA}{\UTFK{B5CA}}%
+\DeclareUnicodeCharacter{B5CB}{\UTFK{B5CB}}%
+\DeclareUnicodeCharacter{B5CC}{\UTFK{B5CC}}%
+\DeclareUnicodeCharacter{B5CD}{\UTFK{B5CD}}%
+\DeclareUnicodeCharacter{B5CE}{\UTFK{B5CE}}%
+\DeclareUnicodeCharacter{B5CF}{\UTFK{B5CF}}%
+\DeclareUnicodeCharacter{B5D0}{\UTFK{B5D0}}%
+\DeclareUnicodeCharacter{B5D1}{\UTFK{B5D1}}%
+\DeclareUnicodeCharacter{B5D2}{\UTFK{B5D2}}%
+\DeclareUnicodeCharacter{B5D3}{\UTFK{B5D3}}%
+\DeclareUnicodeCharacter{B5D4}{\UTFK{B5D4}}%
+\DeclareUnicodeCharacter{B5D5}{\UTFK{B5D5}}%
+\DeclareUnicodeCharacter{B5D6}{\UTFK{B5D6}}%
+\DeclareUnicodeCharacter{B5D7}{\UTFK{B5D7}}%
+\DeclareUnicodeCharacter{B5D8}{\UTFK{B5D8}}%
+\DeclareUnicodeCharacter{B5D9}{\UTFK{B5D9}}%
+\DeclareUnicodeCharacter{B5DA}{\UTFK{B5DA}}%
+\DeclareUnicodeCharacter{B5DB}{\UTFK{B5DB}}%
+\DeclareUnicodeCharacter{B5DC}{\UTFK{B5DC}}%
+\DeclareUnicodeCharacter{B5DD}{\UTFK{B5DD}}%
+\DeclareUnicodeCharacter{B5DE}{\UTFK{B5DE}}%
+\DeclareUnicodeCharacter{B5DF}{\UTFK{B5DF}}%
+\DeclareUnicodeCharacter{B5E0}{\UTFK{B5E0}}%
+\DeclareUnicodeCharacter{B5E1}{\UTFK{B5E1}}%
+\DeclareUnicodeCharacter{B5E2}{\UTFK{B5E2}}%
+\DeclareUnicodeCharacter{B5E3}{\UTFK{B5E3}}%
+\DeclareUnicodeCharacter{B5E4}{\UTFK{B5E4}}%
+\DeclareUnicodeCharacter{B5E5}{\UTFK{B5E5}}%
+\DeclareUnicodeCharacter{B5E6}{\UTFK{B5E6}}%
+\DeclareUnicodeCharacter{B5E7}{\UTFK{B5E7}}%
+\DeclareUnicodeCharacter{B5E8}{\UTFK{B5E8}}%
+\DeclareUnicodeCharacter{B5E9}{\UTFK{B5E9}}%
+\DeclareUnicodeCharacter{B5EA}{\UTFK{B5EA}}%
+\DeclareUnicodeCharacter{B5EB}{\UTFK{B5EB}}%
+\DeclareUnicodeCharacter{B5EC}{\UTFK{B5EC}}%
+\DeclareUnicodeCharacter{B5ED}{\UTFK{B5ED}}%
+\DeclareUnicodeCharacter{B5EE}{\UTFK{B5EE}}%
+\DeclareUnicodeCharacter{B5EF}{\UTFK{B5EF}}%
+\DeclareUnicodeCharacter{B5F0}{\UTFK{B5F0}}%
+\DeclareUnicodeCharacter{B5F1}{\UTFK{B5F1}}%
+\DeclareUnicodeCharacter{B5F2}{\UTFK{B5F2}}%
+\DeclareUnicodeCharacter{B5F3}{\UTFK{B5F3}}%
+\DeclareUnicodeCharacter{B5F4}{\UTFK{B5F4}}%
+\DeclareUnicodeCharacter{B5F5}{\UTFK{B5F5}}%
+\DeclareUnicodeCharacter{B5F6}{\UTFK{B5F6}}%
+\DeclareUnicodeCharacter{B5F7}{\UTFK{B5F7}}%
+\DeclareUnicodeCharacter{B5F8}{\UTFK{B5F8}}%
+\DeclareUnicodeCharacter{B5F9}{\UTFK{B5F9}}%
+\DeclareUnicodeCharacter{B5FA}{\UTFK{B5FA}}%
+\DeclareUnicodeCharacter{B5FB}{\UTFK{B5FB}}%
+\DeclareUnicodeCharacter{B5FC}{\UTFK{B5FC}}%
+\DeclareUnicodeCharacter{B5FD}{\UTFK{B5FD}}%
+\DeclareUnicodeCharacter{B5FE}{\UTFK{B5FE}}%
+\DeclareUnicodeCharacter{B5FF}{\UTFK{B5FF}}%
+\DeclareUnicodeCharacter{B600}{\UTFK{B600}}%
+\DeclareUnicodeCharacter{B601}{\UTFK{B601}}%
+\DeclareUnicodeCharacter{B602}{\UTFK{B602}}%
+\DeclareUnicodeCharacter{B603}{\UTFK{B603}}%
+\DeclareUnicodeCharacter{B604}{\UTFK{B604}}%
+\DeclareUnicodeCharacter{B605}{\UTFK{B605}}%
+\DeclareUnicodeCharacter{B606}{\UTFK{B606}}%
+\DeclareUnicodeCharacter{B607}{\UTFK{B607}}%
+\DeclareUnicodeCharacter{B608}{\UTFK{B608}}%
+\DeclareUnicodeCharacter{B609}{\UTFK{B609}}%
+\DeclareUnicodeCharacter{B60A}{\UTFK{B60A}}%
+\DeclareUnicodeCharacter{B60B}{\UTFK{B60B}}%
+\DeclareUnicodeCharacter{B60C}{\UTFK{B60C}}%
+\DeclareUnicodeCharacter{B60D}{\UTFK{B60D}}%
+\DeclareUnicodeCharacter{B60E}{\UTFK{B60E}}%
+\DeclareUnicodeCharacter{B60F}{\UTFK{B60F}}%
+\DeclareUnicodeCharacter{B610}{\UTFK{B610}}%
+\DeclareUnicodeCharacter{B611}{\UTFK{B611}}%
+\DeclareUnicodeCharacter{B612}{\UTFK{B612}}%
+\DeclareUnicodeCharacter{B613}{\UTFK{B613}}%
+\DeclareUnicodeCharacter{B614}{\UTFK{B614}}%
+\DeclareUnicodeCharacter{B615}{\UTFK{B615}}%
+\DeclareUnicodeCharacter{B616}{\UTFK{B616}}%
+\DeclareUnicodeCharacter{B617}{\UTFK{B617}}%
+\DeclareUnicodeCharacter{B618}{\UTFK{B618}}%
+\DeclareUnicodeCharacter{B619}{\UTFK{B619}}%
+\DeclareUnicodeCharacter{B61A}{\UTFK{B61A}}%
+\DeclareUnicodeCharacter{B61B}{\UTFK{B61B}}%
+\DeclareUnicodeCharacter{B61C}{\UTFK{B61C}}%
+\DeclareUnicodeCharacter{B61D}{\UTFK{B61D}}%
+\DeclareUnicodeCharacter{B61E}{\UTFK{B61E}}%
+\DeclareUnicodeCharacter{B61F}{\UTFK{B61F}}%
+\DeclareUnicodeCharacter{B620}{\UTFK{B620}}%
+\DeclareUnicodeCharacter{B621}{\UTFK{B621}}%
+\DeclareUnicodeCharacter{B622}{\UTFK{B622}}%
+\DeclareUnicodeCharacter{B623}{\UTFK{B623}}%
+\DeclareUnicodeCharacter{B624}{\UTFK{B624}}%
+\DeclareUnicodeCharacter{B625}{\UTFK{B625}}%
+\DeclareUnicodeCharacter{B626}{\UTFK{B626}}%
+\DeclareUnicodeCharacter{B627}{\UTFK{B627}}%
+\DeclareUnicodeCharacter{B628}{\UTFK{B628}}%
+\DeclareUnicodeCharacter{B629}{\UTFK{B629}}%
+\DeclareUnicodeCharacter{B62A}{\UTFK{B62A}}%
+\DeclareUnicodeCharacter{B62B}{\UTFK{B62B}}%
+\DeclareUnicodeCharacter{B62C}{\UTFK{B62C}}%
+\DeclareUnicodeCharacter{B62D}{\UTFK{B62D}}%
+\DeclareUnicodeCharacter{B62E}{\UTFK{B62E}}%
+\DeclareUnicodeCharacter{B62F}{\UTFK{B62F}}%
+\DeclareUnicodeCharacter{B630}{\UTFK{B630}}%
+\DeclareUnicodeCharacter{B631}{\UTFK{B631}}%
+\DeclareUnicodeCharacter{B632}{\UTFK{B632}}%
+\DeclareUnicodeCharacter{B633}{\UTFK{B633}}%
+\DeclareUnicodeCharacter{B634}{\UTFK{B634}}%
+\DeclareUnicodeCharacter{B635}{\UTFK{B635}}%
+\DeclareUnicodeCharacter{B636}{\UTFK{B636}}%
+\DeclareUnicodeCharacter{B637}{\UTFK{B637}}%
+\DeclareUnicodeCharacter{B638}{\UTFK{B638}}%
+\DeclareUnicodeCharacter{B639}{\UTFK{B639}}%
+\DeclareUnicodeCharacter{B63A}{\UTFK{B63A}}%
+\DeclareUnicodeCharacter{B63B}{\UTFK{B63B}}%
+\DeclareUnicodeCharacter{B63C}{\UTFK{B63C}}%
+\DeclareUnicodeCharacter{B63D}{\UTFK{B63D}}%
+\DeclareUnicodeCharacter{B63E}{\UTFK{B63E}}%
+\DeclareUnicodeCharacter{B63F}{\UTFK{B63F}}%
+\DeclareUnicodeCharacter{B640}{\UTFK{B640}}%
+\DeclareUnicodeCharacter{B641}{\UTFK{B641}}%
+\DeclareUnicodeCharacter{B642}{\UTFK{B642}}%
+\DeclareUnicodeCharacter{B643}{\UTFK{B643}}%
+\DeclareUnicodeCharacter{B644}{\UTFK{B644}}%
+\DeclareUnicodeCharacter{B645}{\UTFK{B645}}%
+\DeclareUnicodeCharacter{B646}{\UTFK{B646}}%
+\DeclareUnicodeCharacter{B647}{\UTFK{B647}}%
+\DeclareUnicodeCharacter{B648}{\UTFK{B648}}%
+\DeclareUnicodeCharacter{B649}{\UTFK{B649}}%
+\DeclareUnicodeCharacter{B64A}{\UTFK{B64A}}%
+\DeclareUnicodeCharacter{B64B}{\UTFK{B64B}}%
+\DeclareUnicodeCharacter{B64C}{\UTFK{B64C}}%
+\DeclareUnicodeCharacter{B64D}{\UTFK{B64D}}%
+\DeclareUnicodeCharacter{B64E}{\UTFK{B64E}}%
+\DeclareUnicodeCharacter{B64F}{\UTFK{B64F}}%
+\DeclareUnicodeCharacter{B650}{\UTFK{B650}}%
+\DeclareUnicodeCharacter{B651}{\UTFK{B651}}%
+\DeclareUnicodeCharacter{B652}{\UTFK{B652}}%
+\DeclareUnicodeCharacter{B653}{\UTFK{B653}}%
+\DeclareUnicodeCharacter{B654}{\UTFK{B654}}%
+\DeclareUnicodeCharacter{B655}{\UTFK{B655}}%
+\DeclareUnicodeCharacter{B656}{\UTFK{B656}}%
+\DeclareUnicodeCharacter{B657}{\UTFK{B657}}%
+\DeclareUnicodeCharacter{B658}{\UTFK{B658}}%
+\DeclareUnicodeCharacter{B659}{\UTFK{B659}}%
+\DeclareUnicodeCharacter{B65A}{\UTFK{B65A}}%
+\DeclareUnicodeCharacter{B65B}{\UTFK{B65B}}%
+\DeclareUnicodeCharacter{B65C}{\UTFK{B65C}}%
+\DeclareUnicodeCharacter{B65D}{\UTFK{B65D}}%
+\DeclareUnicodeCharacter{B65E}{\UTFK{B65E}}%
+\DeclareUnicodeCharacter{B65F}{\UTFK{B65F}}%
+\DeclareUnicodeCharacter{B660}{\UTFK{B660}}%
+\DeclareUnicodeCharacter{B661}{\UTFK{B661}}%
+\DeclareUnicodeCharacter{B662}{\UTFK{B662}}%
+\DeclareUnicodeCharacter{B663}{\UTFK{B663}}%
+\DeclareUnicodeCharacter{B664}{\UTFK{B664}}%
+\DeclareUnicodeCharacter{B665}{\UTFK{B665}}%
+\DeclareUnicodeCharacter{B666}{\UTFK{B666}}%
+\DeclareUnicodeCharacter{B667}{\UTFK{B667}}%
+\DeclareUnicodeCharacter{B668}{\UTFK{B668}}%
+\DeclareUnicodeCharacter{B669}{\UTFK{B669}}%
+\DeclareUnicodeCharacter{B66A}{\UTFK{B66A}}%
+\DeclareUnicodeCharacter{B66B}{\UTFK{B66B}}%
+\DeclareUnicodeCharacter{B66C}{\UTFK{B66C}}%
+\DeclareUnicodeCharacter{B66D}{\UTFK{B66D}}%
+\DeclareUnicodeCharacter{B66E}{\UTFK{B66E}}%
+\DeclareUnicodeCharacter{B66F}{\UTFK{B66F}}%
+\DeclareUnicodeCharacter{B670}{\UTFK{B670}}%
+\DeclareUnicodeCharacter{B671}{\UTFK{B671}}%
+\DeclareUnicodeCharacter{B672}{\UTFK{B672}}%
+\DeclareUnicodeCharacter{B673}{\UTFK{B673}}%
+\DeclareUnicodeCharacter{B674}{\UTFK{B674}}%
+\DeclareUnicodeCharacter{B675}{\UTFK{B675}}%
+\DeclareUnicodeCharacter{B676}{\UTFK{B676}}%
+\DeclareUnicodeCharacter{B677}{\UTFK{B677}}%
+\DeclareUnicodeCharacter{B678}{\UTFK{B678}}%
+\DeclareUnicodeCharacter{B679}{\UTFK{B679}}%
+\DeclareUnicodeCharacter{B67A}{\UTFK{B67A}}%
+\DeclareUnicodeCharacter{B67B}{\UTFK{B67B}}%
+\DeclareUnicodeCharacter{B67C}{\UTFK{B67C}}%
+\DeclareUnicodeCharacter{B67D}{\UTFK{B67D}}%
+\DeclareUnicodeCharacter{B67E}{\UTFK{B67E}}%
+\DeclareUnicodeCharacter{B67F}{\UTFK{B67F}}%
+\DeclareUnicodeCharacter{B680}{\UTFK{B680}}%
+\DeclareUnicodeCharacter{B681}{\UTFK{B681}}%
+\DeclareUnicodeCharacter{B682}{\UTFK{B682}}%
+\DeclareUnicodeCharacter{B683}{\UTFK{B683}}%
+\DeclareUnicodeCharacter{B684}{\UTFK{B684}}%
+\DeclareUnicodeCharacter{B685}{\UTFK{B685}}%
+\DeclareUnicodeCharacter{B686}{\UTFK{B686}}%
+\DeclareUnicodeCharacter{B687}{\UTFK{B687}}%
+\DeclareUnicodeCharacter{B688}{\UTFK{B688}}%
+\DeclareUnicodeCharacter{B689}{\UTFK{B689}}%
+\DeclareUnicodeCharacter{B68A}{\UTFK{B68A}}%
+\DeclareUnicodeCharacter{B68B}{\UTFK{B68B}}%
+\DeclareUnicodeCharacter{B68C}{\UTFK{B68C}}%
+\DeclareUnicodeCharacter{B68D}{\UTFK{B68D}}%
+\DeclareUnicodeCharacter{B68E}{\UTFK{B68E}}%
+\DeclareUnicodeCharacter{B68F}{\UTFK{B68F}}%
+\DeclareUnicodeCharacter{B690}{\UTFK{B690}}%
+\DeclareUnicodeCharacter{B691}{\UTFK{B691}}%
+\DeclareUnicodeCharacter{B692}{\UTFK{B692}}%
+\DeclareUnicodeCharacter{B693}{\UTFK{B693}}%
+\DeclareUnicodeCharacter{B694}{\UTFK{B694}}%
+\DeclareUnicodeCharacter{B695}{\UTFK{B695}}%
+\DeclareUnicodeCharacter{B696}{\UTFK{B696}}%
+\DeclareUnicodeCharacter{B697}{\UTFK{B697}}%
+\DeclareUnicodeCharacter{B698}{\UTFK{B698}}%
+\DeclareUnicodeCharacter{B699}{\UTFK{B699}}%
+\DeclareUnicodeCharacter{B69A}{\UTFK{B69A}}%
+\DeclareUnicodeCharacter{B69B}{\UTFK{B69B}}%
+\DeclareUnicodeCharacter{B69C}{\UTFK{B69C}}%
+\DeclareUnicodeCharacter{B69D}{\UTFK{B69D}}%
+\DeclareUnicodeCharacter{B69E}{\UTFK{B69E}}%
+\DeclareUnicodeCharacter{B69F}{\UTFK{B69F}}%
+\DeclareUnicodeCharacter{B6A0}{\UTFK{B6A0}}%
+\DeclareUnicodeCharacter{B6A1}{\UTFK{B6A1}}%
+\DeclareUnicodeCharacter{B6A2}{\UTFK{B6A2}}%
+\DeclareUnicodeCharacter{B6A3}{\UTFK{B6A3}}%
+\DeclareUnicodeCharacter{B6A4}{\UTFK{B6A4}}%
+\DeclareUnicodeCharacter{B6A5}{\UTFK{B6A5}}%
+\DeclareUnicodeCharacter{B6A6}{\UTFK{B6A6}}%
+\DeclareUnicodeCharacter{B6A7}{\UTFK{B6A7}}%
+\DeclareUnicodeCharacter{B6A8}{\UTFK{B6A8}}%
+\DeclareUnicodeCharacter{B6A9}{\UTFK{B6A9}}%
+\DeclareUnicodeCharacter{B6AA}{\UTFK{B6AA}}%
+\DeclareUnicodeCharacter{B6AB}{\UTFK{B6AB}}%
+\DeclareUnicodeCharacter{B6AC}{\UTFK{B6AC}}%
+\DeclareUnicodeCharacter{B6AD}{\UTFK{B6AD}}%
+\DeclareUnicodeCharacter{B6AE}{\UTFK{B6AE}}%
+\DeclareUnicodeCharacter{B6AF}{\UTFK{B6AF}}%
+\DeclareUnicodeCharacter{B6B0}{\UTFK{B6B0}}%
+\DeclareUnicodeCharacter{B6B1}{\UTFK{B6B1}}%
+\DeclareUnicodeCharacter{B6B2}{\UTFK{B6B2}}%
+\DeclareUnicodeCharacter{B6B3}{\UTFK{B6B3}}%
+\DeclareUnicodeCharacter{B6B4}{\UTFK{B6B4}}%
+\DeclareUnicodeCharacter{B6B5}{\UTFK{B6B5}}%
+\DeclareUnicodeCharacter{B6B6}{\UTFK{B6B6}}%
+\DeclareUnicodeCharacter{B6B7}{\UTFK{B6B7}}%
+\DeclareUnicodeCharacter{B6B8}{\UTFK{B6B8}}%
+\DeclareUnicodeCharacter{B6B9}{\UTFK{B6B9}}%
+\DeclareUnicodeCharacter{B6BA}{\UTFK{B6BA}}%
+\DeclareUnicodeCharacter{B6BB}{\UTFK{B6BB}}%
+\DeclareUnicodeCharacter{B6BC}{\UTFK{B6BC}}%
+\DeclareUnicodeCharacter{B6BD}{\UTFK{B6BD}}%
+\DeclareUnicodeCharacter{B6BE}{\UTFK{B6BE}}%
+\DeclareUnicodeCharacter{B6BF}{\UTFK{B6BF}}%
+\DeclareUnicodeCharacter{B6C0}{\UTFK{B6C0}}%
+\DeclareUnicodeCharacter{B6C1}{\UTFK{B6C1}}%
+\DeclareUnicodeCharacter{B6C2}{\UTFK{B6C2}}%
+\DeclareUnicodeCharacter{B6C3}{\UTFK{B6C3}}%
+\DeclareUnicodeCharacter{B6C4}{\UTFK{B6C4}}%
+\DeclareUnicodeCharacter{B6C5}{\UTFK{B6C5}}%
+\DeclareUnicodeCharacter{B6C6}{\UTFK{B6C6}}%
+\DeclareUnicodeCharacter{B6C7}{\UTFK{B6C7}}%
+\DeclareUnicodeCharacter{B6C8}{\UTFK{B6C8}}%
+\DeclareUnicodeCharacter{B6C9}{\UTFK{B6C9}}%
+\DeclareUnicodeCharacter{B6CA}{\UTFK{B6CA}}%
+\DeclareUnicodeCharacter{B6CB}{\UTFK{B6CB}}%
+\DeclareUnicodeCharacter{B6CC}{\UTFK{B6CC}}%
+\DeclareUnicodeCharacter{B6CD}{\UTFK{B6CD}}%
+\DeclareUnicodeCharacter{B6CE}{\UTFK{B6CE}}%
+\DeclareUnicodeCharacter{B6CF}{\UTFK{B6CF}}%
+\DeclareUnicodeCharacter{B6D0}{\UTFK{B6D0}}%
+\DeclareUnicodeCharacter{B6D1}{\UTFK{B6D1}}%
+\DeclareUnicodeCharacter{B6D2}{\UTFK{B6D2}}%
+\DeclareUnicodeCharacter{B6D3}{\UTFK{B6D3}}%
+\DeclareUnicodeCharacter{B6D4}{\UTFK{B6D4}}%
+\DeclareUnicodeCharacter{B6D5}{\UTFK{B6D5}}%
+\DeclareUnicodeCharacter{B6D6}{\UTFK{B6D6}}%
+\DeclareUnicodeCharacter{B6D7}{\UTFK{B6D7}}%
+\DeclareUnicodeCharacter{B6D8}{\UTFK{B6D8}}%
+\DeclareUnicodeCharacter{B6D9}{\UTFK{B6D9}}%
+\DeclareUnicodeCharacter{B6DA}{\UTFK{B6DA}}%
+\DeclareUnicodeCharacter{B6DB}{\UTFK{B6DB}}%
+\DeclareUnicodeCharacter{B6DC}{\UTFK{B6DC}}%
+\DeclareUnicodeCharacter{B6DD}{\UTFK{B6DD}}%
+\DeclareUnicodeCharacter{B6DE}{\UTFK{B6DE}}%
+\DeclareUnicodeCharacter{B6DF}{\UTFK{B6DF}}%
+\DeclareUnicodeCharacter{B6E0}{\UTFK{B6E0}}%
+\DeclareUnicodeCharacter{B6E1}{\UTFK{B6E1}}%
+\DeclareUnicodeCharacter{B6E2}{\UTFK{B6E2}}%
+\DeclareUnicodeCharacter{B6E3}{\UTFK{B6E3}}%
+\DeclareUnicodeCharacter{B6E4}{\UTFK{B6E4}}%
+\DeclareUnicodeCharacter{B6E5}{\UTFK{B6E5}}%
+\DeclareUnicodeCharacter{B6E6}{\UTFK{B6E6}}%
+\DeclareUnicodeCharacter{B6E7}{\UTFK{B6E7}}%
+\DeclareUnicodeCharacter{B6E8}{\UTFK{B6E8}}%
+\DeclareUnicodeCharacter{B6E9}{\UTFK{B6E9}}%
+\DeclareUnicodeCharacter{B6EA}{\UTFK{B6EA}}%
+\DeclareUnicodeCharacter{B6EB}{\UTFK{B6EB}}%
+\DeclareUnicodeCharacter{B6EC}{\UTFK{B6EC}}%
+\DeclareUnicodeCharacter{B6ED}{\UTFK{B6ED}}%
+\DeclareUnicodeCharacter{B6EE}{\UTFK{B6EE}}%
+\DeclareUnicodeCharacter{B6EF}{\UTFK{B6EF}}%
+\DeclareUnicodeCharacter{B6F0}{\UTFK{B6F0}}%
+\DeclareUnicodeCharacter{B6F1}{\UTFK{B6F1}}%
+\DeclareUnicodeCharacter{B6F2}{\UTFK{B6F2}}%
+\DeclareUnicodeCharacter{B6F3}{\UTFK{B6F3}}%
+\DeclareUnicodeCharacter{B6F4}{\UTFK{B6F4}}%
+\DeclareUnicodeCharacter{B6F5}{\UTFK{B6F5}}%
+\DeclareUnicodeCharacter{B6F6}{\UTFK{B6F6}}%
+\DeclareUnicodeCharacter{B6F7}{\UTFK{B6F7}}%
+\DeclareUnicodeCharacter{B6F8}{\UTFK{B6F8}}%
+\DeclareUnicodeCharacter{B6F9}{\UTFK{B6F9}}%
+\DeclareUnicodeCharacter{B6FA}{\UTFK{B6FA}}%
+\DeclareUnicodeCharacter{B6FB}{\UTFK{B6FB}}%
+\DeclareUnicodeCharacter{B6FC}{\UTFK{B6FC}}%
+\DeclareUnicodeCharacter{B6FD}{\UTFK{B6FD}}%
+\DeclareUnicodeCharacter{B6FE}{\UTFK{B6FE}}%
+\DeclareUnicodeCharacter{B6FF}{\UTFK{B6FF}}%
+\DeclareUnicodeCharacter{B700}{\UTFK{B700}}%
+\DeclareUnicodeCharacter{B701}{\UTFK{B701}}%
+\DeclareUnicodeCharacter{B702}{\UTFK{B702}}%
+\DeclareUnicodeCharacter{B703}{\UTFK{B703}}%
+\DeclareUnicodeCharacter{B704}{\UTFK{B704}}%
+\DeclareUnicodeCharacter{B705}{\UTFK{B705}}%
+\DeclareUnicodeCharacter{B706}{\UTFK{B706}}%
+\DeclareUnicodeCharacter{B707}{\UTFK{B707}}%
+\DeclareUnicodeCharacter{B708}{\UTFK{B708}}%
+\DeclareUnicodeCharacter{B709}{\UTFK{B709}}%
+\DeclareUnicodeCharacter{B70A}{\UTFK{B70A}}%
+\DeclareUnicodeCharacter{B70B}{\UTFK{B70B}}%
+\DeclareUnicodeCharacter{B70C}{\UTFK{B70C}}%
+\DeclareUnicodeCharacter{B70D}{\UTFK{B70D}}%
+\DeclareUnicodeCharacter{B70E}{\UTFK{B70E}}%
+\DeclareUnicodeCharacter{B70F}{\UTFK{B70F}}%
+\DeclareUnicodeCharacter{B710}{\UTFK{B710}}%
+\DeclareUnicodeCharacter{B711}{\UTFK{B711}}%
+\DeclareUnicodeCharacter{B712}{\UTFK{B712}}%
+\DeclareUnicodeCharacter{B713}{\UTFK{B713}}%
+\DeclareUnicodeCharacter{B714}{\UTFK{B714}}%
+\DeclareUnicodeCharacter{B715}{\UTFK{B715}}%
+\DeclareUnicodeCharacter{B716}{\UTFK{B716}}%
+\DeclareUnicodeCharacter{B717}{\UTFK{B717}}%
+\DeclareUnicodeCharacter{B718}{\UTFK{B718}}%
+\DeclareUnicodeCharacter{B719}{\UTFK{B719}}%
+\DeclareUnicodeCharacter{B71A}{\UTFK{B71A}}%
+\DeclareUnicodeCharacter{B71B}{\UTFK{B71B}}%
+\DeclareUnicodeCharacter{B71C}{\UTFK{B71C}}%
+\DeclareUnicodeCharacter{B71D}{\UTFK{B71D}}%
+\DeclareUnicodeCharacter{B71E}{\UTFK{B71E}}%
+\DeclareUnicodeCharacter{B71F}{\UTFK{B71F}}%
+\DeclareUnicodeCharacter{B720}{\UTFK{B720}}%
+\DeclareUnicodeCharacter{B721}{\UTFK{B721}}%
+\DeclareUnicodeCharacter{B722}{\UTFK{B722}}%
+\DeclareUnicodeCharacter{B723}{\UTFK{B723}}%
+\DeclareUnicodeCharacter{B724}{\UTFK{B724}}%
+\DeclareUnicodeCharacter{B725}{\UTFK{B725}}%
+\DeclareUnicodeCharacter{B726}{\UTFK{B726}}%
+\DeclareUnicodeCharacter{B727}{\UTFK{B727}}%
+\DeclareUnicodeCharacter{B728}{\UTFK{B728}}%
+\DeclareUnicodeCharacter{B729}{\UTFK{B729}}%
+\DeclareUnicodeCharacter{B72A}{\UTFK{B72A}}%
+\DeclareUnicodeCharacter{B72B}{\UTFK{B72B}}%
+\DeclareUnicodeCharacter{B72C}{\UTFK{B72C}}%
+\DeclareUnicodeCharacter{B72D}{\UTFK{B72D}}%
+\DeclareUnicodeCharacter{B72E}{\UTFK{B72E}}%
+\DeclareUnicodeCharacter{B72F}{\UTFK{B72F}}%
+\DeclareUnicodeCharacter{B730}{\UTFK{B730}}%
+\DeclareUnicodeCharacter{B731}{\UTFK{B731}}%
+\DeclareUnicodeCharacter{B732}{\UTFK{B732}}%
+\DeclareUnicodeCharacter{B733}{\UTFK{B733}}%
+\DeclareUnicodeCharacter{B734}{\UTFK{B734}}%
+\DeclareUnicodeCharacter{B735}{\UTFK{B735}}%
+\DeclareUnicodeCharacter{B736}{\UTFK{B736}}%
+\DeclareUnicodeCharacter{B737}{\UTFK{B737}}%
+\DeclareUnicodeCharacter{B738}{\UTFK{B738}}%
+\DeclareUnicodeCharacter{B739}{\UTFK{B739}}%
+\DeclareUnicodeCharacter{B73A}{\UTFK{B73A}}%
+\DeclareUnicodeCharacter{B73B}{\UTFK{B73B}}%
+\DeclareUnicodeCharacter{B73C}{\UTFK{B73C}}%
+\DeclareUnicodeCharacter{B73D}{\UTFK{B73D}}%
+\DeclareUnicodeCharacter{B73E}{\UTFK{B73E}}%
+\DeclareUnicodeCharacter{B73F}{\UTFK{B73F}}%
+\DeclareUnicodeCharacter{B740}{\UTFK{B740}}%
+\DeclareUnicodeCharacter{B741}{\UTFK{B741}}%
+\DeclareUnicodeCharacter{B742}{\UTFK{B742}}%
+\DeclareUnicodeCharacter{B743}{\UTFK{B743}}%
+\DeclareUnicodeCharacter{B744}{\UTFK{B744}}%
+\DeclareUnicodeCharacter{B745}{\UTFK{B745}}%
+\DeclareUnicodeCharacter{B746}{\UTFK{B746}}%
+\DeclareUnicodeCharacter{B747}{\UTFK{B747}}%
+\DeclareUnicodeCharacter{B748}{\UTFK{B748}}%
+\DeclareUnicodeCharacter{B749}{\UTFK{B749}}%
+\DeclareUnicodeCharacter{B74A}{\UTFK{B74A}}%
+\DeclareUnicodeCharacter{B74B}{\UTFK{B74B}}%
+\DeclareUnicodeCharacter{B74C}{\UTFK{B74C}}%
+\DeclareUnicodeCharacter{B74D}{\UTFK{B74D}}%
+\DeclareUnicodeCharacter{B74E}{\UTFK{B74E}}%
+\DeclareUnicodeCharacter{B74F}{\UTFK{B74F}}%
+\DeclareUnicodeCharacter{B750}{\UTFK{B750}}%
+\DeclareUnicodeCharacter{B751}{\UTFK{B751}}%
+\DeclareUnicodeCharacter{B752}{\UTFK{B752}}%
+\DeclareUnicodeCharacter{B753}{\UTFK{B753}}%
+\DeclareUnicodeCharacter{B754}{\UTFK{B754}}%
+\DeclareUnicodeCharacter{B755}{\UTFK{B755}}%
+\DeclareUnicodeCharacter{B756}{\UTFK{B756}}%
+\DeclareUnicodeCharacter{B757}{\UTFK{B757}}%
+\DeclareUnicodeCharacter{B758}{\UTFK{B758}}%
+\DeclareUnicodeCharacter{B759}{\UTFK{B759}}%
+\DeclareUnicodeCharacter{B75A}{\UTFK{B75A}}%
+\DeclareUnicodeCharacter{B75B}{\UTFK{B75B}}%
+\DeclareUnicodeCharacter{B75C}{\UTFK{B75C}}%
+\DeclareUnicodeCharacter{B75D}{\UTFK{B75D}}%
+\DeclareUnicodeCharacter{B75E}{\UTFK{B75E}}%
+\DeclareUnicodeCharacter{B75F}{\UTFK{B75F}}%
+\DeclareUnicodeCharacter{B760}{\UTFK{B760}}%
+\DeclareUnicodeCharacter{B761}{\UTFK{B761}}%
+\DeclareUnicodeCharacter{B762}{\UTFK{B762}}%
+\DeclareUnicodeCharacter{B763}{\UTFK{B763}}%
+\DeclareUnicodeCharacter{B764}{\UTFK{B764}}%
+\DeclareUnicodeCharacter{B765}{\UTFK{B765}}%
+\DeclareUnicodeCharacter{B766}{\UTFK{B766}}%
+\DeclareUnicodeCharacter{B767}{\UTFK{B767}}%
+\DeclareUnicodeCharacter{B768}{\UTFK{B768}}%
+\DeclareUnicodeCharacter{B769}{\UTFK{B769}}%
+\DeclareUnicodeCharacter{B76A}{\UTFK{B76A}}%
+\DeclareUnicodeCharacter{B76B}{\UTFK{B76B}}%
+\DeclareUnicodeCharacter{B76C}{\UTFK{B76C}}%
+\DeclareUnicodeCharacter{B76D}{\UTFK{B76D}}%
+\DeclareUnicodeCharacter{B76E}{\UTFK{B76E}}%
+\DeclareUnicodeCharacter{B76F}{\UTFK{B76F}}%
+\DeclareUnicodeCharacter{B770}{\UTFK{B770}}%
+\DeclareUnicodeCharacter{B771}{\UTFK{B771}}%
+\DeclareUnicodeCharacter{B772}{\UTFK{B772}}%
+\DeclareUnicodeCharacter{B773}{\UTFK{B773}}%
+\DeclareUnicodeCharacter{B774}{\UTFK{B774}}%
+\DeclareUnicodeCharacter{B775}{\UTFK{B775}}%
+\DeclareUnicodeCharacter{B776}{\UTFK{B776}}%
+\DeclareUnicodeCharacter{B777}{\UTFK{B777}}%
+\DeclareUnicodeCharacter{B778}{\UTFK{B778}}%
+\DeclareUnicodeCharacter{B779}{\UTFK{B779}}%
+\DeclareUnicodeCharacter{B77A}{\UTFK{B77A}}%
+\DeclareUnicodeCharacter{B77B}{\UTFK{B77B}}%
+\DeclareUnicodeCharacter{B77C}{\UTFK{B77C}}%
+\DeclareUnicodeCharacter{B77D}{\UTFK{B77D}}%
+\DeclareUnicodeCharacter{B77E}{\UTFK{B77E}}%
+\DeclareUnicodeCharacter{B77F}{\UTFK{B77F}}%
+\DeclareUnicodeCharacter{B780}{\UTFK{B780}}%
+\DeclareUnicodeCharacter{B781}{\UTFK{B781}}%
+\DeclareUnicodeCharacter{B782}{\UTFK{B782}}%
+\DeclareUnicodeCharacter{B783}{\UTFK{B783}}%
+\DeclareUnicodeCharacter{B784}{\UTFK{B784}}%
+\DeclareUnicodeCharacter{B785}{\UTFK{B785}}%
+\DeclareUnicodeCharacter{B786}{\UTFK{B786}}%
+\DeclareUnicodeCharacter{B787}{\UTFK{B787}}%
+\DeclareUnicodeCharacter{B788}{\UTFK{B788}}%
+\DeclareUnicodeCharacter{B789}{\UTFK{B789}}%
+\DeclareUnicodeCharacter{B78A}{\UTFK{B78A}}%
+\DeclareUnicodeCharacter{B78B}{\UTFK{B78B}}%
+\DeclareUnicodeCharacter{B78C}{\UTFK{B78C}}%
+\DeclareUnicodeCharacter{B78D}{\UTFK{B78D}}%
+\DeclareUnicodeCharacter{B78E}{\UTFK{B78E}}%
+\DeclareUnicodeCharacter{B78F}{\UTFK{B78F}}%
+\DeclareUnicodeCharacter{B790}{\UTFK{B790}}%
+\DeclareUnicodeCharacter{B791}{\UTFK{B791}}%
+\DeclareUnicodeCharacter{B792}{\UTFK{B792}}%
+\DeclareUnicodeCharacter{B793}{\UTFK{B793}}%
+\DeclareUnicodeCharacter{B794}{\UTFK{B794}}%
+\DeclareUnicodeCharacter{B795}{\UTFK{B795}}%
+\DeclareUnicodeCharacter{B796}{\UTFK{B796}}%
+\DeclareUnicodeCharacter{B797}{\UTFK{B797}}%
+\DeclareUnicodeCharacter{B798}{\UTFK{B798}}%
+\DeclareUnicodeCharacter{B799}{\UTFK{B799}}%
+\DeclareUnicodeCharacter{B79A}{\UTFK{B79A}}%
+\DeclareUnicodeCharacter{B79B}{\UTFK{B79B}}%
+\DeclareUnicodeCharacter{B79C}{\UTFK{B79C}}%
+\DeclareUnicodeCharacter{B79D}{\UTFK{B79D}}%
+\DeclareUnicodeCharacter{B79E}{\UTFK{B79E}}%
+\DeclareUnicodeCharacter{B79F}{\UTFK{B79F}}%
+\DeclareUnicodeCharacter{B7A0}{\UTFK{B7A0}}%
+\DeclareUnicodeCharacter{B7A1}{\UTFK{B7A1}}%
+\DeclareUnicodeCharacter{B7A2}{\UTFK{B7A2}}%
+\DeclareUnicodeCharacter{B7A3}{\UTFK{B7A3}}%
+\DeclareUnicodeCharacter{B7A4}{\UTFK{B7A4}}%
+\DeclareUnicodeCharacter{B7A5}{\UTFK{B7A5}}%
+\DeclareUnicodeCharacter{B7A6}{\UTFK{B7A6}}%
+\DeclareUnicodeCharacter{B7A7}{\UTFK{B7A7}}%
+\DeclareUnicodeCharacter{B7A8}{\UTFK{B7A8}}%
+\DeclareUnicodeCharacter{B7A9}{\UTFK{B7A9}}%
+\DeclareUnicodeCharacter{B7AA}{\UTFK{B7AA}}%
+\DeclareUnicodeCharacter{B7AB}{\UTFK{B7AB}}%
+\DeclareUnicodeCharacter{B7AC}{\UTFK{B7AC}}%
+\DeclareUnicodeCharacter{B7AD}{\UTFK{B7AD}}%
+\DeclareUnicodeCharacter{B7AE}{\UTFK{B7AE}}%
+\DeclareUnicodeCharacter{B7AF}{\UTFK{B7AF}}%
+\DeclareUnicodeCharacter{B7B0}{\UTFK{B7B0}}%
+\DeclareUnicodeCharacter{B7B1}{\UTFK{B7B1}}%
+\DeclareUnicodeCharacter{B7B2}{\UTFK{B7B2}}%
+\DeclareUnicodeCharacter{B7B3}{\UTFK{B7B3}}%
+\DeclareUnicodeCharacter{B7B4}{\UTFK{B7B4}}%
+\DeclareUnicodeCharacter{B7B5}{\UTFK{B7B5}}%
+\DeclareUnicodeCharacter{B7B6}{\UTFK{B7B6}}%
+\DeclareUnicodeCharacter{B7B7}{\UTFK{B7B7}}%
+\DeclareUnicodeCharacter{B7B8}{\UTFK{B7B8}}%
+\DeclareUnicodeCharacter{B7B9}{\UTFK{B7B9}}%
+\DeclareUnicodeCharacter{B7BA}{\UTFK{B7BA}}%
+\DeclareUnicodeCharacter{B7BB}{\UTFK{B7BB}}%
+\DeclareUnicodeCharacter{B7BC}{\UTFK{B7BC}}%
+\DeclareUnicodeCharacter{B7BD}{\UTFK{B7BD}}%
+\DeclareUnicodeCharacter{B7BE}{\UTFK{B7BE}}%
+\DeclareUnicodeCharacter{B7BF}{\UTFK{B7BF}}%
+\DeclareUnicodeCharacter{B7C0}{\UTFK{B7C0}}%
+\DeclareUnicodeCharacter{B7C1}{\UTFK{B7C1}}%
+\DeclareUnicodeCharacter{B7C2}{\UTFK{B7C2}}%
+\DeclareUnicodeCharacter{B7C3}{\UTFK{B7C3}}%
+\DeclareUnicodeCharacter{B7C4}{\UTFK{B7C4}}%
+\DeclareUnicodeCharacter{B7C5}{\UTFK{B7C5}}%
+\DeclareUnicodeCharacter{B7C6}{\UTFK{B7C6}}%
+\DeclareUnicodeCharacter{B7C7}{\UTFK{B7C7}}%
+\DeclareUnicodeCharacter{B7C8}{\UTFK{B7C8}}%
+\DeclareUnicodeCharacter{B7C9}{\UTFK{B7C9}}%
+\DeclareUnicodeCharacter{B7CA}{\UTFK{B7CA}}%
+\DeclareUnicodeCharacter{B7CB}{\UTFK{B7CB}}%
+\DeclareUnicodeCharacter{B7CC}{\UTFK{B7CC}}%
+\DeclareUnicodeCharacter{B7CD}{\UTFK{B7CD}}%
+\DeclareUnicodeCharacter{B7CE}{\UTFK{B7CE}}%
+\DeclareUnicodeCharacter{B7CF}{\UTFK{B7CF}}%
+\DeclareUnicodeCharacter{B7D0}{\UTFK{B7D0}}%
+\DeclareUnicodeCharacter{B7D1}{\UTFK{B7D1}}%
+\DeclareUnicodeCharacter{B7D2}{\UTFK{B7D2}}%
+\DeclareUnicodeCharacter{B7D3}{\UTFK{B7D3}}%
+\DeclareUnicodeCharacter{B7D4}{\UTFK{B7D4}}%
+\DeclareUnicodeCharacter{B7D5}{\UTFK{B7D5}}%
+\DeclareUnicodeCharacter{B7D6}{\UTFK{B7D6}}%
+\DeclareUnicodeCharacter{B7D7}{\UTFK{B7D7}}%
+\DeclareUnicodeCharacter{B7D8}{\UTFK{B7D8}}%
+\DeclareUnicodeCharacter{B7D9}{\UTFK{B7D9}}%
+\DeclareUnicodeCharacter{B7DA}{\UTFK{B7DA}}%
+\DeclareUnicodeCharacter{B7DB}{\UTFK{B7DB}}%
+\DeclareUnicodeCharacter{B7DC}{\UTFK{B7DC}}%
+\DeclareUnicodeCharacter{B7DD}{\UTFK{B7DD}}%
+\DeclareUnicodeCharacter{B7DE}{\UTFK{B7DE}}%
+\DeclareUnicodeCharacter{B7DF}{\UTFK{B7DF}}%
+\DeclareUnicodeCharacter{B7E0}{\UTFK{B7E0}}%
+\DeclareUnicodeCharacter{B7E1}{\UTFK{B7E1}}%
+\DeclareUnicodeCharacter{B7E2}{\UTFK{B7E2}}%
+\DeclareUnicodeCharacter{B7E3}{\UTFK{B7E3}}%
+\DeclareUnicodeCharacter{B7E4}{\UTFK{B7E4}}%
+\DeclareUnicodeCharacter{B7E5}{\UTFK{B7E5}}%
+\DeclareUnicodeCharacter{B7E6}{\UTFK{B7E6}}%
+\DeclareUnicodeCharacter{B7E7}{\UTFK{B7E7}}%
+\DeclareUnicodeCharacter{B7E8}{\UTFK{B7E8}}%
+\DeclareUnicodeCharacter{B7E9}{\UTFK{B7E9}}%
+\DeclareUnicodeCharacter{B7EA}{\UTFK{B7EA}}%
+\DeclareUnicodeCharacter{B7EB}{\UTFK{B7EB}}%
+\DeclareUnicodeCharacter{B7EC}{\UTFK{B7EC}}%
+\DeclareUnicodeCharacter{B7ED}{\UTFK{B7ED}}%
+\DeclareUnicodeCharacter{B7EE}{\UTFK{B7EE}}%
+\DeclareUnicodeCharacter{B7EF}{\UTFK{B7EF}}%
+\DeclareUnicodeCharacter{B7F0}{\UTFK{B7F0}}%
+\DeclareUnicodeCharacter{B7F1}{\UTFK{B7F1}}%
+\DeclareUnicodeCharacter{B7F2}{\UTFK{B7F2}}%
+\DeclareUnicodeCharacter{B7F3}{\UTFK{B7F3}}%
+\DeclareUnicodeCharacter{B7F4}{\UTFK{B7F4}}%
+\DeclareUnicodeCharacter{B7F5}{\UTFK{B7F5}}%
+\DeclareUnicodeCharacter{B7F6}{\UTFK{B7F6}}%
+\DeclareUnicodeCharacter{B7F7}{\UTFK{B7F7}}%
+\DeclareUnicodeCharacter{B7F8}{\UTFK{B7F8}}%
+\DeclareUnicodeCharacter{B7F9}{\UTFK{B7F9}}%
+\DeclareUnicodeCharacter{B7FA}{\UTFK{B7FA}}%
+\DeclareUnicodeCharacter{B7FB}{\UTFK{B7FB}}%
+\DeclareUnicodeCharacter{B7FC}{\UTFK{B7FC}}%
+\DeclareUnicodeCharacter{B7FD}{\UTFK{B7FD}}%
+\DeclareUnicodeCharacter{B7FE}{\UTFK{B7FE}}%
+\DeclareUnicodeCharacter{B7FF}{\UTFK{B7FF}}%
+\DeclareUnicodeCharacter{B800}{\UTFK{B800}}%
+\DeclareUnicodeCharacter{B801}{\UTFK{B801}}%
+\DeclareUnicodeCharacter{B802}{\UTFK{B802}}%
+\DeclareUnicodeCharacter{B803}{\UTFK{B803}}%
+\DeclareUnicodeCharacter{B804}{\UTFK{B804}}%
+\DeclareUnicodeCharacter{B805}{\UTFK{B805}}%
+\DeclareUnicodeCharacter{B806}{\UTFK{B806}}%
+\DeclareUnicodeCharacter{B807}{\UTFK{B807}}%
+\DeclareUnicodeCharacter{B808}{\UTFK{B808}}%
+\DeclareUnicodeCharacter{B809}{\UTFK{B809}}%
+\DeclareUnicodeCharacter{B80A}{\UTFK{B80A}}%
+\DeclareUnicodeCharacter{B80B}{\UTFK{B80B}}%
+\DeclareUnicodeCharacter{B80C}{\UTFK{B80C}}%
+\DeclareUnicodeCharacter{B80D}{\UTFK{B80D}}%
+\DeclareUnicodeCharacter{B80E}{\UTFK{B80E}}%
+\DeclareUnicodeCharacter{B80F}{\UTFK{B80F}}%
+\DeclareUnicodeCharacter{B810}{\UTFK{B810}}%
+\DeclareUnicodeCharacter{B811}{\UTFK{B811}}%
+\DeclareUnicodeCharacter{B812}{\UTFK{B812}}%
+\DeclareUnicodeCharacter{B813}{\UTFK{B813}}%
+\DeclareUnicodeCharacter{B814}{\UTFK{B814}}%
+\DeclareUnicodeCharacter{B815}{\UTFK{B815}}%
+\DeclareUnicodeCharacter{B816}{\UTFK{B816}}%
+\DeclareUnicodeCharacter{B817}{\UTFK{B817}}%
+\DeclareUnicodeCharacter{B818}{\UTFK{B818}}%
+\DeclareUnicodeCharacter{B819}{\UTFK{B819}}%
+\DeclareUnicodeCharacter{B81A}{\UTFK{B81A}}%
+\DeclareUnicodeCharacter{B81B}{\UTFK{B81B}}%
+\DeclareUnicodeCharacter{B81C}{\UTFK{B81C}}%
+\DeclareUnicodeCharacter{B81D}{\UTFK{B81D}}%
+\DeclareUnicodeCharacter{B81E}{\UTFK{B81E}}%
+\DeclareUnicodeCharacter{B81F}{\UTFK{B81F}}%
+\DeclareUnicodeCharacter{B820}{\UTFK{B820}}%
+\DeclareUnicodeCharacter{B821}{\UTFK{B821}}%
+\DeclareUnicodeCharacter{B822}{\UTFK{B822}}%
+\DeclareUnicodeCharacter{B823}{\UTFK{B823}}%
+\DeclareUnicodeCharacter{B824}{\UTFK{B824}}%
+\DeclareUnicodeCharacter{B825}{\UTFK{B825}}%
+\DeclareUnicodeCharacter{B826}{\UTFK{B826}}%
+\DeclareUnicodeCharacter{B827}{\UTFK{B827}}%
+\DeclareUnicodeCharacter{B828}{\UTFK{B828}}%
+\DeclareUnicodeCharacter{B829}{\UTFK{B829}}%
+\DeclareUnicodeCharacter{B82A}{\UTFK{B82A}}%
+\DeclareUnicodeCharacter{B82B}{\UTFK{B82B}}%
+\DeclareUnicodeCharacter{B82C}{\UTFK{B82C}}%
+\DeclareUnicodeCharacter{B82D}{\UTFK{B82D}}%
+\DeclareUnicodeCharacter{B82E}{\UTFK{B82E}}%
+\DeclareUnicodeCharacter{B82F}{\UTFK{B82F}}%
+\DeclareUnicodeCharacter{B830}{\UTFK{B830}}%
+\DeclareUnicodeCharacter{B831}{\UTFK{B831}}%
+\DeclareUnicodeCharacter{B832}{\UTFK{B832}}%
+\DeclareUnicodeCharacter{B833}{\UTFK{B833}}%
+\DeclareUnicodeCharacter{B834}{\UTFK{B834}}%
+\DeclareUnicodeCharacter{B835}{\UTFK{B835}}%
+\DeclareUnicodeCharacter{B836}{\UTFK{B836}}%
+\DeclareUnicodeCharacter{B837}{\UTFK{B837}}%
+\DeclareUnicodeCharacter{B838}{\UTFK{B838}}%
+\DeclareUnicodeCharacter{B839}{\UTFK{B839}}%
+\DeclareUnicodeCharacter{B83A}{\UTFK{B83A}}%
+\DeclareUnicodeCharacter{B83B}{\UTFK{B83B}}%
+\DeclareUnicodeCharacter{B83C}{\UTFK{B83C}}%
+\DeclareUnicodeCharacter{B83D}{\UTFK{B83D}}%
+\DeclareUnicodeCharacter{B83E}{\UTFK{B83E}}%
+\DeclareUnicodeCharacter{B83F}{\UTFK{B83F}}%
+\DeclareUnicodeCharacter{B840}{\UTFK{B840}}%
+\DeclareUnicodeCharacter{B841}{\UTFK{B841}}%
+\DeclareUnicodeCharacter{B842}{\UTFK{B842}}%
+\DeclareUnicodeCharacter{B843}{\UTFK{B843}}%
+\DeclareUnicodeCharacter{B844}{\UTFK{B844}}%
+\DeclareUnicodeCharacter{B845}{\UTFK{B845}}%
+\DeclareUnicodeCharacter{B846}{\UTFK{B846}}%
+\DeclareUnicodeCharacter{B847}{\UTFK{B847}}%
+\DeclareUnicodeCharacter{B848}{\UTFK{B848}}%
+\DeclareUnicodeCharacter{B849}{\UTFK{B849}}%
+\DeclareUnicodeCharacter{B84A}{\UTFK{B84A}}%
+\DeclareUnicodeCharacter{B84B}{\UTFK{B84B}}%
+\DeclareUnicodeCharacter{B84C}{\UTFK{B84C}}%
+\DeclareUnicodeCharacter{B84D}{\UTFK{B84D}}%
+\DeclareUnicodeCharacter{B84E}{\UTFK{B84E}}%
+\DeclareUnicodeCharacter{B84F}{\UTFK{B84F}}%
+\DeclareUnicodeCharacter{B850}{\UTFK{B850}}%
+\DeclareUnicodeCharacter{B851}{\UTFK{B851}}%
+\DeclareUnicodeCharacter{B852}{\UTFK{B852}}%
+\DeclareUnicodeCharacter{B853}{\UTFK{B853}}%
+\DeclareUnicodeCharacter{B854}{\UTFK{B854}}%
+\DeclareUnicodeCharacter{B855}{\UTFK{B855}}%
+\DeclareUnicodeCharacter{B856}{\UTFK{B856}}%
+\DeclareUnicodeCharacter{B857}{\UTFK{B857}}%
+\DeclareUnicodeCharacter{B858}{\UTFK{B858}}%
+\DeclareUnicodeCharacter{B859}{\UTFK{B859}}%
+\DeclareUnicodeCharacter{B85A}{\UTFK{B85A}}%
+\DeclareUnicodeCharacter{B85B}{\UTFK{B85B}}%
+\DeclareUnicodeCharacter{B85C}{\UTFK{B85C}}%
+\DeclareUnicodeCharacter{B85D}{\UTFK{B85D}}%
+\DeclareUnicodeCharacter{B85E}{\UTFK{B85E}}%
+\DeclareUnicodeCharacter{B85F}{\UTFK{B85F}}%
+\DeclareUnicodeCharacter{B860}{\UTFK{B860}}%
+\DeclareUnicodeCharacter{B861}{\UTFK{B861}}%
+\DeclareUnicodeCharacter{B862}{\UTFK{B862}}%
+\DeclareUnicodeCharacter{B863}{\UTFK{B863}}%
+\DeclareUnicodeCharacter{B864}{\UTFK{B864}}%
+\DeclareUnicodeCharacter{B865}{\UTFK{B865}}%
+\DeclareUnicodeCharacter{B866}{\UTFK{B866}}%
+\DeclareUnicodeCharacter{B867}{\UTFK{B867}}%
+\DeclareUnicodeCharacter{B868}{\UTFK{B868}}%
+\DeclareUnicodeCharacter{B869}{\UTFK{B869}}%
+\DeclareUnicodeCharacter{B86A}{\UTFK{B86A}}%
+\DeclareUnicodeCharacter{B86B}{\UTFK{B86B}}%
+\DeclareUnicodeCharacter{B86C}{\UTFK{B86C}}%
+\DeclareUnicodeCharacter{B86D}{\UTFK{B86D}}%
+\DeclareUnicodeCharacter{B86E}{\UTFK{B86E}}%
+\DeclareUnicodeCharacter{B86F}{\UTFK{B86F}}%
+\DeclareUnicodeCharacter{B870}{\UTFK{B870}}%
+\DeclareUnicodeCharacter{B871}{\UTFK{B871}}%
+\DeclareUnicodeCharacter{B872}{\UTFK{B872}}%
+\DeclareUnicodeCharacter{B873}{\UTFK{B873}}%
+\DeclareUnicodeCharacter{B874}{\UTFK{B874}}%
+\DeclareUnicodeCharacter{B875}{\UTFK{B875}}%
+\DeclareUnicodeCharacter{B876}{\UTFK{B876}}%
+\DeclareUnicodeCharacter{B877}{\UTFK{B877}}%
+\DeclareUnicodeCharacter{B878}{\UTFK{B878}}%
+\DeclareUnicodeCharacter{B879}{\UTFK{B879}}%
+\DeclareUnicodeCharacter{B87A}{\UTFK{B87A}}%
+\DeclareUnicodeCharacter{B87B}{\UTFK{B87B}}%
+\DeclareUnicodeCharacter{B87C}{\UTFK{B87C}}%
+\DeclareUnicodeCharacter{B87D}{\UTFK{B87D}}%
+\DeclareUnicodeCharacter{B87E}{\UTFK{B87E}}%
+\DeclareUnicodeCharacter{B87F}{\UTFK{B87F}}%
+\DeclareUnicodeCharacter{B880}{\UTFK{B880}}%
+\DeclareUnicodeCharacter{B881}{\UTFK{B881}}%
+\DeclareUnicodeCharacter{B882}{\UTFK{B882}}%
+\DeclareUnicodeCharacter{B883}{\UTFK{B883}}%
+\DeclareUnicodeCharacter{B884}{\UTFK{B884}}%
+\DeclareUnicodeCharacter{B885}{\UTFK{B885}}%
+\DeclareUnicodeCharacter{B886}{\UTFK{B886}}%
+\DeclareUnicodeCharacter{B887}{\UTFK{B887}}%
+\DeclareUnicodeCharacter{B888}{\UTFK{B888}}%
+\DeclareUnicodeCharacter{B889}{\UTFK{B889}}%
+\DeclareUnicodeCharacter{B88A}{\UTFK{B88A}}%
+\DeclareUnicodeCharacter{B88B}{\UTFK{B88B}}%
+\DeclareUnicodeCharacter{B88C}{\UTFK{B88C}}%
+\DeclareUnicodeCharacter{B88D}{\UTFK{B88D}}%
+\DeclareUnicodeCharacter{B88E}{\UTFK{B88E}}%
+\DeclareUnicodeCharacter{B88F}{\UTFK{B88F}}%
+\DeclareUnicodeCharacter{B890}{\UTFK{B890}}%
+\DeclareUnicodeCharacter{B891}{\UTFK{B891}}%
+\DeclareUnicodeCharacter{B892}{\UTFK{B892}}%
+\DeclareUnicodeCharacter{B893}{\UTFK{B893}}%
+\DeclareUnicodeCharacter{B894}{\UTFK{B894}}%
+\DeclareUnicodeCharacter{B895}{\UTFK{B895}}%
+\DeclareUnicodeCharacter{B896}{\UTFK{B896}}%
+\DeclareUnicodeCharacter{B897}{\UTFK{B897}}%
+\DeclareUnicodeCharacter{B898}{\UTFK{B898}}%
+\DeclareUnicodeCharacter{B899}{\UTFK{B899}}%
+\DeclareUnicodeCharacter{B89A}{\UTFK{B89A}}%
+\DeclareUnicodeCharacter{B89B}{\UTFK{B89B}}%
+\DeclareUnicodeCharacter{B89C}{\UTFK{B89C}}%
+\DeclareUnicodeCharacter{B89D}{\UTFK{B89D}}%
+\DeclareUnicodeCharacter{B89E}{\UTFK{B89E}}%
+\DeclareUnicodeCharacter{B89F}{\UTFK{B89F}}%
+\DeclareUnicodeCharacter{B8A0}{\UTFK{B8A0}}%
+\DeclareUnicodeCharacter{B8A1}{\UTFK{B8A1}}%
+\DeclareUnicodeCharacter{B8A2}{\UTFK{B8A2}}%
+\DeclareUnicodeCharacter{B8A3}{\UTFK{B8A3}}%
+\DeclareUnicodeCharacter{B8A4}{\UTFK{B8A4}}%
+\DeclareUnicodeCharacter{B8A5}{\UTFK{B8A5}}%
+\DeclareUnicodeCharacter{B8A6}{\UTFK{B8A6}}%
+\DeclareUnicodeCharacter{B8A7}{\UTFK{B8A7}}%
+\DeclareUnicodeCharacter{B8A8}{\UTFK{B8A8}}%
+\DeclareUnicodeCharacter{B8A9}{\UTFK{B8A9}}%
+\DeclareUnicodeCharacter{B8AA}{\UTFK{B8AA}}%
+\DeclareUnicodeCharacter{B8AB}{\UTFK{B8AB}}%
+\DeclareUnicodeCharacter{B8AC}{\UTFK{B8AC}}%
+\DeclareUnicodeCharacter{B8AD}{\UTFK{B8AD}}%
+\DeclareUnicodeCharacter{B8AE}{\UTFK{B8AE}}%
+\DeclareUnicodeCharacter{B8AF}{\UTFK{B8AF}}%
+\DeclareUnicodeCharacter{B8B0}{\UTFK{B8B0}}%
+\DeclareUnicodeCharacter{B8B1}{\UTFK{B8B1}}%
+\DeclareUnicodeCharacter{B8B2}{\UTFK{B8B2}}%
+\DeclareUnicodeCharacter{B8B3}{\UTFK{B8B3}}%
+\DeclareUnicodeCharacter{B8B4}{\UTFK{B8B4}}%
+\DeclareUnicodeCharacter{B8B5}{\UTFK{B8B5}}%
+\DeclareUnicodeCharacter{B8B6}{\UTFK{B8B6}}%
+\DeclareUnicodeCharacter{B8B7}{\UTFK{B8B7}}%
+\DeclareUnicodeCharacter{B8B8}{\UTFK{B8B8}}%
+\DeclareUnicodeCharacter{B8B9}{\UTFK{B8B9}}%
+\DeclareUnicodeCharacter{B8BA}{\UTFK{B8BA}}%
+\DeclareUnicodeCharacter{B8BB}{\UTFK{B8BB}}%
+\DeclareUnicodeCharacter{B8BC}{\UTFK{B8BC}}%
+\DeclareUnicodeCharacter{B8BD}{\UTFK{B8BD}}%
+\DeclareUnicodeCharacter{B8BE}{\UTFK{B8BE}}%
+\DeclareUnicodeCharacter{B8BF}{\UTFK{B8BF}}%
+\DeclareUnicodeCharacter{B8C0}{\UTFK{B8C0}}%
+\DeclareUnicodeCharacter{B8C1}{\UTFK{B8C1}}%
+\DeclareUnicodeCharacter{B8C2}{\UTFK{B8C2}}%
+\DeclareUnicodeCharacter{B8C3}{\UTFK{B8C3}}%
+\DeclareUnicodeCharacter{B8C4}{\UTFK{B8C4}}%
+\DeclareUnicodeCharacter{B8C5}{\UTFK{B8C5}}%
+\DeclareUnicodeCharacter{B8C6}{\UTFK{B8C6}}%
+\DeclareUnicodeCharacter{B8C7}{\UTFK{B8C7}}%
+\DeclareUnicodeCharacter{B8C8}{\UTFK{B8C8}}%
+\DeclareUnicodeCharacter{B8C9}{\UTFK{B8C9}}%
+\DeclareUnicodeCharacter{B8CA}{\UTFK{B8CA}}%
+\DeclareUnicodeCharacter{B8CB}{\UTFK{B8CB}}%
+\DeclareUnicodeCharacter{B8CC}{\UTFK{B8CC}}%
+\DeclareUnicodeCharacter{B8CD}{\UTFK{B8CD}}%
+\DeclareUnicodeCharacter{B8CE}{\UTFK{B8CE}}%
+\DeclareUnicodeCharacter{B8CF}{\UTFK{B8CF}}%
+\DeclareUnicodeCharacter{B8D0}{\UTFK{B8D0}}%
+\DeclareUnicodeCharacter{B8D1}{\UTFK{B8D1}}%
+\DeclareUnicodeCharacter{B8D2}{\UTFK{B8D2}}%
+\DeclareUnicodeCharacter{B8D3}{\UTFK{B8D3}}%
+\DeclareUnicodeCharacter{B8D4}{\UTFK{B8D4}}%
+\DeclareUnicodeCharacter{B8D5}{\UTFK{B8D5}}%
+\DeclareUnicodeCharacter{B8D6}{\UTFK{B8D6}}%
+\DeclareUnicodeCharacter{B8D7}{\UTFK{B8D7}}%
+\DeclareUnicodeCharacter{B8D8}{\UTFK{B8D8}}%
+\DeclareUnicodeCharacter{B8D9}{\UTFK{B8D9}}%
+\DeclareUnicodeCharacter{B8DA}{\UTFK{B8DA}}%
+\DeclareUnicodeCharacter{B8DB}{\UTFK{B8DB}}%
+\DeclareUnicodeCharacter{B8DC}{\UTFK{B8DC}}%
+\DeclareUnicodeCharacter{B8DD}{\UTFK{B8DD}}%
+\DeclareUnicodeCharacter{B8DE}{\UTFK{B8DE}}%
+\DeclareUnicodeCharacter{B8DF}{\UTFK{B8DF}}%
+\DeclareUnicodeCharacter{B8E0}{\UTFK{B8E0}}%
+\DeclareUnicodeCharacter{B8E1}{\UTFK{B8E1}}%
+\DeclareUnicodeCharacter{B8E2}{\UTFK{B8E2}}%
+\DeclareUnicodeCharacter{B8E3}{\UTFK{B8E3}}%
+\DeclareUnicodeCharacter{B8E4}{\UTFK{B8E4}}%
+\DeclareUnicodeCharacter{B8E5}{\UTFK{B8E5}}%
+\DeclareUnicodeCharacter{B8E6}{\UTFK{B8E6}}%
+\DeclareUnicodeCharacter{B8E7}{\UTFK{B8E7}}%
+\DeclareUnicodeCharacter{B8E8}{\UTFK{B8E8}}%
+\DeclareUnicodeCharacter{B8E9}{\UTFK{B8E9}}%
+\DeclareUnicodeCharacter{B8EA}{\UTFK{B8EA}}%
+\DeclareUnicodeCharacter{B8EB}{\UTFK{B8EB}}%
+\DeclareUnicodeCharacter{B8EC}{\UTFK{B8EC}}%
+\DeclareUnicodeCharacter{B8ED}{\UTFK{B8ED}}%
+\DeclareUnicodeCharacter{B8EE}{\UTFK{B8EE}}%
+\DeclareUnicodeCharacter{B8EF}{\UTFK{B8EF}}%
+\DeclareUnicodeCharacter{B8F0}{\UTFK{B8F0}}%
+\DeclareUnicodeCharacter{B8F1}{\UTFK{B8F1}}%
+\DeclareUnicodeCharacter{B8F2}{\UTFK{B8F2}}%
+\DeclareUnicodeCharacter{B8F3}{\UTFK{B8F3}}%
+\DeclareUnicodeCharacter{B8F4}{\UTFK{B8F4}}%
+\DeclareUnicodeCharacter{B8F5}{\UTFK{B8F5}}%
+\DeclareUnicodeCharacter{B8F6}{\UTFK{B8F6}}%
+\DeclareUnicodeCharacter{B8F7}{\UTFK{B8F7}}%
+\DeclareUnicodeCharacter{B8F8}{\UTFK{B8F8}}%
+\DeclareUnicodeCharacter{B8F9}{\UTFK{B8F9}}%
+\DeclareUnicodeCharacter{B8FA}{\UTFK{B8FA}}%
+\DeclareUnicodeCharacter{B8FB}{\UTFK{B8FB}}%
+\DeclareUnicodeCharacter{B8FC}{\UTFK{B8FC}}%
+\DeclareUnicodeCharacter{B8FD}{\UTFK{B8FD}}%
+\DeclareUnicodeCharacter{B8FE}{\UTFK{B8FE}}%
+\DeclareUnicodeCharacter{B8FF}{\UTFK{B8FF}}%
+\DeclareUnicodeCharacter{B900}{\UTFK{B900}}%
+\DeclareUnicodeCharacter{B901}{\UTFK{B901}}%
+\DeclareUnicodeCharacter{B902}{\UTFK{B902}}%
+\DeclareUnicodeCharacter{B903}{\UTFK{B903}}%
+\DeclareUnicodeCharacter{B904}{\UTFK{B904}}%
+\DeclareUnicodeCharacter{B905}{\UTFK{B905}}%
+\DeclareUnicodeCharacter{B906}{\UTFK{B906}}%
+\DeclareUnicodeCharacter{B907}{\UTFK{B907}}%
+\DeclareUnicodeCharacter{B908}{\UTFK{B908}}%
+\DeclareUnicodeCharacter{B909}{\UTFK{B909}}%
+\DeclareUnicodeCharacter{B90A}{\UTFK{B90A}}%
+\DeclareUnicodeCharacter{B90B}{\UTFK{B90B}}%
+\DeclareUnicodeCharacter{B90C}{\UTFK{B90C}}%
+\DeclareUnicodeCharacter{B90D}{\UTFK{B90D}}%
+\DeclareUnicodeCharacter{B90E}{\UTFK{B90E}}%
+\DeclareUnicodeCharacter{B90F}{\UTFK{B90F}}%
+\DeclareUnicodeCharacter{B910}{\UTFK{B910}}%
+\DeclareUnicodeCharacter{B911}{\UTFK{B911}}%
+\DeclareUnicodeCharacter{B912}{\UTFK{B912}}%
+\DeclareUnicodeCharacter{B913}{\UTFK{B913}}%
+\DeclareUnicodeCharacter{B914}{\UTFK{B914}}%
+\DeclareUnicodeCharacter{B915}{\UTFK{B915}}%
+\DeclareUnicodeCharacter{B916}{\UTFK{B916}}%
+\DeclareUnicodeCharacter{B917}{\UTFK{B917}}%
+\DeclareUnicodeCharacter{B918}{\UTFK{B918}}%
+\DeclareUnicodeCharacter{B919}{\UTFK{B919}}%
+\DeclareUnicodeCharacter{B91A}{\UTFK{B91A}}%
+\DeclareUnicodeCharacter{B91B}{\UTFK{B91B}}%
+\DeclareUnicodeCharacter{B91C}{\UTFK{B91C}}%
+\DeclareUnicodeCharacter{B91D}{\UTFK{B91D}}%
+\DeclareUnicodeCharacter{B91E}{\UTFK{B91E}}%
+\DeclareUnicodeCharacter{B91F}{\UTFK{B91F}}%
+\DeclareUnicodeCharacter{B920}{\UTFK{B920}}%
+\DeclareUnicodeCharacter{B921}{\UTFK{B921}}%
+\DeclareUnicodeCharacter{B922}{\UTFK{B922}}%
+\DeclareUnicodeCharacter{B923}{\UTFK{B923}}%
+\DeclareUnicodeCharacter{B924}{\UTFK{B924}}%
+\DeclareUnicodeCharacter{B925}{\UTFK{B925}}%
+\DeclareUnicodeCharacter{B926}{\UTFK{B926}}%
+\DeclareUnicodeCharacter{B927}{\UTFK{B927}}%
+\DeclareUnicodeCharacter{B928}{\UTFK{B928}}%
+\DeclareUnicodeCharacter{B929}{\UTFK{B929}}%
+\DeclareUnicodeCharacter{B92A}{\UTFK{B92A}}%
+\DeclareUnicodeCharacter{B92B}{\UTFK{B92B}}%
+\DeclareUnicodeCharacter{B92C}{\UTFK{B92C}}%
+\DeclareUnicodeCharacter{B92D}{\UTFK{B92D}}%
+\DeclareUnicodeCharacter{B92E}{\UTFK{B92E}}%
+\DeclareUnicodeCharacter{B92F}{\UTFK{B92F}}%
+\DeclareUnicodeCharacter{B930}{\UTFK{B930}}%
+\DeclareUnicodeCharacter{B931}{\UTFK{B931}}%
+\DeclareUnicodeCharacter{B932}{\UTFK{B932}}%
+\DeclareUnicodeCharacter{B933}{\UTFK{B933}}%
+\DeclareUnicodeCharacter{B934}{\UTFK{B934}}%
+\DeclareUnicodeCharacter{B935}{\UTFK{B935}}%
+\DeclareUnicodeCharacter{B936}{\UTFK{B936}}%
+\DeclareUnicodeCharacter{B937}{\UTFK{B937}}%
+\DeclareUnicodeCharacter{B938}{\UTFK{B938}}%
+\DeclareUnicodeCharacter{B939}{\UTFK{B939}}%
+\DeclareUnicodeCharacter{B93A}{\UTFK{B93A}}%
+\DeclareUnicodeCharacter{B93B}{\UTFK{B93B}}%
+\DeclareUnicodeCharacter{B93C}{\UTFK{B93C}}%
+\DeclareUnicodeCharacter{B93D}{\UTFK{B93D}}%
+\DeclareUnicodeCharacter{B93E}{\UTFK{B93E}}%
+\DeclareUnicodeCharacter{B93F}{\UTFK{B93F}}%
+\DeclareUnicodeCharacter{B940}{\UTFK{B940}}%
+\DeclareUnicodeCharacter{B941}{\UTFK{B941}}%
+\DeclareUnicodeCharacter{B942}{\UTFK{B942}}%
+\DeclareUnicodeCharacter{B943}{\UTFK{B943}}%
+\DeclareUnicodeCharacter{B944}{\UTFK{B944}}%
+\DeclareUnicodeCharacter{B945}{\UTFK{B945}}%
+\DeclareUnicodeCharacter{B946}{\UTFK{B946}}%
+\DeclareUnicodeCharacter{B947}{\UTFK{B947}}%
+\DeclareUnicodeCharacter{B948}{\UTFK{B948}}%
+\DeclareUnicodeCharacter{B949}{\UTFK{B949}}%
+\DeclareUnicodeCharacter{B94A}{\UTFK{B94A}}%
+\DeclareUnicodeCharacter{B94B}{\UTFK{B94B}}%
+\DeclareUnicodeCharacter{B94C}{\UTFK{B94C}}%
+\DeclareUnicodeCharacter{B94D}{\UTFK{B94D}}%
+\DeclareUnicodeCharacter{B94E}{\UTFK{B94E}}%
+\DeclareUnicodeCharacter{B94F}{\UTFK{B94F}}%
+\DeclareUnicodeCharacter{B950}{\UTFK{B950}}%
+\DeclareUnicodeCharacter{B951}{\UTFK{B951}}%
+\DeclareUnicodeCharacter{B952}{\UTFK{B952}}%
+\DeclareUnicodeCharacter{B953}{\UTFK{B953}}%
+\DeclareUnicodeCharacter{B954}{\UTFK{B954}}%
+\DeclareUnicodeCharacter{B955}{\UTFK{B955}}%
+\DeclareUnicodeCharacter{B956}{\UTFK{B956}}%
+\DeclareUnicodeCharacter{B957}{\UTFK{B957}}%
+\DeclareUnicodeCharacter{B958}{\UTFK{B958}}%
+\DeclareUnicodeCharacter{B959}{\UTFK{B959}}%
+\DeclareUnicodeCharacter{B95A}{\UTFK{B95A}}%
+\DeclareUnicodeCharacter{B95B}{\UTFK{B95B}}%
+\DeclareUnicodeCharacter{B95C}{\UTFK{B95C}}%
+\DeclareUnicodeCharacter{B95D}{\UTFK{B95D}}%
+\DeclareUnicodeCharacter{B95E}{\UTFK{B95E}}%
+\DeclareUnicodeCharacter{B95F}{\UTFK{B95F}}%
+\DeclareUnicodeCharacter{B960}{\UTFK{B960}}%
+\DeclareUnicodeCharacter{B961}{\UTFK{B961}}%
+\DeclareUnicodeCharacter{B962}{\UTFK{B962}}%
+\DeclareUnicodeCharacter{B963}{\UTFK{B963}}%
+\DeclareUnicodeCharacter{B964}{\UTFK{B964}}%
+\DeclareUnicodeCharacter{B965}{\UTFK{B965}}%
+\DeclareUnicodeCharacter{B966}{\UTFK{B966}}%
+\DeclareUnicodeCharacter{B967}{\UTFK{B967}}%
+\DeclareUnicodeCharacter{B968}{\UTFK{B968}}%
+\DeclareUnicodeCharacter{B969}{\UTFK{B969}}%
+\DeclareUnicodeCharacter{B96A}{\UTFK{B96A}}%
+\DeclareUnicodeCharacter{B96B}{\UTFK{B96B}}%
+\DeclareUnicodeCharacter{B96C}{\UTFK{B96C}}%
+\DeclareUnicodeCharacter{B96D}{\UTFK{B96D}}%
+\DeclareUnicodeCharacter{B96E}{\UTFK{B96E}}%
+\DeclareUnicodeCharacter{B96F}{\UTFK{B96F}}%
+\DeclareUnicodeCharacter{B970}{\UTFK{B970}}%
+\DeclareUnicodeCharacter{B971}{\UTFK{B971}}%
+\DeclareUnicodeCharacter{B972}{\UTFK{B972}}%
+\DeclareUnicodeCharacter{B973}{\UTFK{B973}}%
+\DeclareUnicodeCharacter{B974}{\UTFK{B974}}%
+\DeclareUnicodeCharacter{B975}{\UTFK{B975}}%
+\DeclareUnicodeCharacter{B976}{\UTFK{B976}}%
+\DeclareUnicodeCharacter{B977}{\UTFK{B977}}%
+\DeclareUnicodeCharacter{B978}{\UTFK{B978}}%
+\DeclareUnicodeCharacter{B979}{\UTFK{B979}}%
+\DeclareUnicodeCharacter{B97A}{\UTFK{B97A}}%
+\DeclareUnicodeCharacter{B97B}{\UTFK{B97B}}%
+\DeclareUnicodeCharacter{B97C}{\UTFK{B97C}}%
+\DeclareUnicodeCharacter{B97D}{\UTFK{B97D}}%
+\DeclareUnicodeCharacter{B97E}{\UTFK{B97E}}%
+\DeclareUnicodeCharacter{B97F}{\UTFK{B97F}}%
+\DeclareUnicodeCharacter{B980}{\UTFK{B980}}%
+\DeclareUnicodeCharacter{B981}{\UTFK{B981}}%
+\DeclareUnicodeCharacter{B982}{\UTFK{B982}}%
+\DeclareUnicodeCharacter{B983}{\UTFK{B983}}%
+\DeclareUnicodeCharacter{B984}{\UTFK{B984}}%
+\DeclareUnicodeCharacter{B985}{\UTFK{B985}}%
+\DeclareUnicodeCharacter{B986}{\UTFK{B986}}%
+\DeclareUnicodeCharacter{B987}{\UTFK{B987}}%
+\DeclareUnicodeCharacter{B988}{\UTFK{B988}}%
+\DeclareUnicodeCharacter{B989}{\UTFK{B989}}%
+\DeclareUnicodeCharacter{B98A}{\UTFK{B98A}}%
+\DeclareUnicodeCharacter{B98B}{\UTFK{B98B}}%
+\DeclareUnicodeCharacter{B98C}{\UTFK{B98C}}%
+\DeclareUnicodeCharacter{B98D}{\UTFK{B98D}}%
+\DeclareUnicodeCharacter{B98E}{\UTFK{B98E}}%
+\DeclareUnicodeCharacter{B98F}{\UTFK{B98F}}%
+\DeclareUnicodeCharacter{B990}{\UTFK{B990}}%
+\DeclareUnicodeCharacter{B991}{\UTFK{B991}}%
+\DeclareUnicodeCharacter{B992}{\UTFK{B992}}%
+\DeclareUnicodeCharacter{B993}{\UTFK{B993}}%
+\DeclareUnicodeCharacter{B994}{\UTFK{B994}}%
+\DeclareUnicodeCharacter{B995}{\UTFK{B995}}%
+\DeclareUnicodeCharacter{B996}{\UTFK{B996}}%
+\DeclareUnicodeCharacter{B997}{\UTFK{B997}}%
+\DeclareUnicodeCharacter{B998}{\UTFK{B998}}%
+\DeclareUnicodeCharacter{B999}{\UTFK{B999}}%
+\DeclareUnicodeCharacter{B99A}{\UTFK{B99A}}%
+\DeclareUnicodeCharacter{B99B}{\UTFK{B99B}}%
+\DeclareUnicodeCharacter{B99C}{\UTFK{B99C}}%
+\DeclareUnicodeCharacter{B99D}{\UTFK{B99D}}%
+\DeclareUnicodeCharacter{B99E}{\UTFK{B99E}}%
+\DeclareUnicodeCharacter{B99F}{\UTFK{B99F}}%
+\DeclareUnicodeCharacter{B9A0}{\UTFK{B9A0}}%
+\DeclareUnicodeCharacter{B9A1}{\UTFK{B9A1}}%
+\DeclareUnicodeCharacter{B9A2}{\UTFK{B9A2}}%
+\DeclareUnicodeCharacter{B9A3}{\UTFK{B9A3}}%
+\DeclareUnicodeCharacter{B9A4}{\UTFK{B9A4}}%
+\DeclareUnicodeCharacter{B9A5}{\UTFK{B9A5}}%
+\DeclareUnicodeCharacter{B9A6}{\UTFK{B9A6}}%
+\DeclareUnicodeCharacter{B9A7}{\UTFK{B9A7}}%
+\DeclareUnicodeCharacter{B9A8}{\UTFK{B9A8}}%
+\DeclareUnicodeCharacter{B9A9}{\UTFK{B9A9}}%
+\DeclareUnicodeCharacter{B9AA}{\UTFK{B9AA}}%
+\DeclareUnicodeCharacter{B9AB}{\UTFK{B9AB}}%
+\DeclareUnicodeCharacter{B9AC}{\UTFK{B9AC}}%
+\DeclareUnicodeCharacter{B9AD}{\UTFK{B9AD}}%
+\DeclareUnicodeCharacter{B9AE}{\UTFK{B9AE}}%
+\DeclareUnicodeCharacter{B9AF}{\UTFK{B9AF}}%
+\DeclareUnicodeCharacter{B9B0}{\UTFK{B9B0}}%
+\DeclareUnicodeCharacter{B9B1}{\UTFK{B9B1}}%
+\DeclareUnicodeCharacter{B9B2}{\UTFK{B9B2}}%
+\DeclareUnicodeCharacter{B9B3}{\UTFK{B9B3}}%
+\DeclareUnicodeCharacter{B9B4}{\UTFK{B9B4}}%
+\DeclareUnicodeCharacter{B9B5}{\UTFK{B9B5}}%
+\DeclareUnicodeCharacter{B9B6}{\UTFK{B9B6}}%
+\DeclareUnicodeCharacter{B9B7}{\UTFK{B9B7}}%
+\DeclareUnicodeCharacter{B9B8}{\UTFK{B9B8}}%
+\DeclareUnicodeCharacter{B9B9}{\UTFK{B9B9}}%
+\DeclareUnicodeCharacter{B9BA}{\UTFK{B9BA}}%
+\DeclareUnicodeCharacter{B9BB}{\UTFK{B9BB}}%
+\DeclareUnicodeCharacter{B9BC}{\UTFK{B9BC}}%
+\DeclareUnicodeCharacter{B9BD}{\UTFK{B9BD}}%
+\DeclareUnicodeCharacter{B9BE}{\UTFK{B9BE}}%
+\DeclareUnicodeCharacter{B9BF}{\UTFK{B9BF}}%
+\DeclareUnicodeCharacter{B9C0}{\UTFK{B9C0}}%
+\DeclareUnicodeCharacter{B9C1}{\UTFK{B9C1}}%
+\DeclareUnicodeCharacter{B9C2}{\UTFK{B9C2}}%
+\DeclareUnicodeCharacter{B9C3}{\UTFK{B9C3}}%
+\DeclareUnicodeCharacter{B9C4}{\UTFK{B9C4}}%
+\DeclareUnicodeCharacter{B9C5}{\UTFK{B9C5}}%
+\DeclareUnicodeCharacter{B9C6}{\UTFK{B9C6}}%
+\DeclareUnicodeCharacter{B9C7}{\UTFK{B9C7}}%
+\DeclareUnicodeCharacter{B9C8}{\UTFK{B9C8}}%
+\DeclareUnicodeCharacter{B9C9}{\UTFK{B9C9}}%
+\DeclareUnicodeCharacter{B9CA}{\UTFK{B9CA}}%
+\DeclareUnicodeCharacter{B9CB}{\UTFK{B9CB}}%
+\DeclareUnicodeCharacter{B9CC}{\UTFK{B9CC}}%
+\DeclareUnicodeCharacter{B9CD}{\UTFK{B9CD}}%
+\DeclareUnicodeCharacter{B9CE}{\UTFK{B9CE}}%
+\DeclareUnicodeCharacter{B9CF}{\UTFK{B9CF}}%
+\DeclareUnicodeCharacter{B9D0}{\UTFK{B9D0}}%
+\DeclareUnicodeCharacter{B9D1}{\UTFK{B9D1}}%
+\DeclareUnicodeCharacter{B9D2}{\UTFK{B9D2}}%
+\DeclareUnicodeCharacter{B9D3}{\UTFK{B9D3}}%
+\DeclareUnicodeCharacter{B9D4}{\UTFK{B9D4}}%
+\DeclareUnicodeCharacter{B9D5}{\UTFK{B9D5}}%
+\DeclareUnicodeCharacter{B9D6}{\UTFK{B9D6}}%
+\DeclareUnicodeCharacter{B9D7}{\UTFK{B9D7}}%
+\DeclareUnicodeCharacter{B9D8}{\UTFK{B9D8}}%
+\DeclareUnicodeCharacter{B9D9}{\UTFK{B9D9}}%
+\DeclareUnicodeCharacter{B9DA}{\UTFK{B9DA}}%
+\DeclareUnicodeCharacter{B9DB}{\UTFK{B9DB}}%
+\DeclareUnicodeCharacter{B9DC}{\UTFK{B9DC}}%
+\DeclareUnicodeCharacter{B9DD}{\UTFK{B9DD}}%
+\DeclareUnicodeCharacter{B9DE}{\UTFK{B9DE}}%
+\DeclareUnicodeCharacter{B9DF}{\UTFK{B9DF}}%
+\DeclareUnicodeCharacter{B9E0}{\UTFK{B9E0}}%
+\DeclareUnicodeCharacter{B9E1}{\UTFK{B9E1}}%
+\DeclareUnicodeCharacter{B9E2}{\UTFK{B9E2}}%
+\DeclareUnicodeCharacter{B9E3}{\UTFK{B9E3}}%
+\DeclareUnicodeCharacter{B9E4}{\UTFK{B9E4}}%
+\DeclareUnicodeCharacter{B9E5}{\UTFK{B9E5}}%
+\DeclareUnicodeCharacter{B9E6}{\UTFK{B9E6}}%
+\DeclareUnicodeCharacter{B9E7}{\UTFK{B9E7}}%
+\DeclareUnicodeCharacter{B9E8}{\UTFK{B9E8}}%
+\DeclareUnicodeCharacter{B9E9}{\UTFK{B9E9}}%
+\DeclareUnicodeCharacter{B9EA}{\UTFK{B9EA}}%
+\DeclareUnicodeCharacter{B9EB}{\UTFK{B9EB}}%
+\DeclareUnicodeCharacter{B9EC}{\UTFK{B9EC}}%
+\DeclareUnicodeCharacter{B9ED}{\UTFK{B9ED}}%
+\DeclareUnicodeCharacter{B9EE}{\UTFK{B9EE}}%
+\DeclareUnicodeCharacter{B9EF}{\UTFK{B9EF}}%
+\DeclareUnicodeCharacter{B9F0}{\UTFK{B9F0}}%
+\DeclareUnicodeCharacter{B9F1}{\UTFK{B9F1}}%
+\DeclareUnicodeCharacter{B9F2}{\UTFK{B9F2}}%
+\DeclareUnicodeCharacter{B9F3}{\UTFK{B9F3}}%
+\DeclareUnicodeCharacter{B9F4}{\UTFK{B9F4}}%
+\DeclareUnicodeCharacter{B9F5}{\UTFK{B9F5}}%
+\DeclareUnicodeCharacter{B9F6}{\UTFK{B9F6}}%
+\DeclareUnicodeCharacter{B9F7}{\UTFK{B9F7}}%
+\DeclareUnicodeCharacter{B9F8}{\UTFK{B9F8}}%
+\DeclareUnicodeCharacter{B9F9}{\UTFK{B9F9}}%
+\DeclareUnicodeCharacter{B9FA}{\UTFK{B9FA}}%
+\DeclareUnicodeCharacter{B9FB}{\UTFK{B9FB}}%
+\DeclareUnicodeCharacter{B9FC}{\UTFK{B9FC}}%
+\DeclareUnicodeCharacter{B9FD}{\UTFK{B9FD}}%
+\DeclareUnicodeCharacter{B9FE}{\UTFK{B9FE}}%
+\DeclareUnicodeCharacter{B9FF}{\UTFK{B9FF}}%
+\DeclareUnicodeCharacter{BA00}{\UTFK{BA00}}%
+\DeclareUnicodeCharacter{BA01}{\UTFK{BA01}}%
+\DeclareUnicodeCharacter{BA02}{\UTFK{BA02}}%
+\DeclareUnicodeCharacter{BA03}{\UTFK{BA03}}%
+\DeclareUnicodeCharacter{BA04}{\UTFK{BA04}}%
+\DeclareUnicodeCharacter{BA05}{\UTFK{BA05}}%
+\DeclareUnicodeCharacter{BA06}{\UTFK{BA06}}%
+\DeclareUnicodeCharacter{BA07}{\UTFK{BA07}}%
+\DeclareUnicodeCharacter{BA08}{\UTFK{BA08}}%
+\DeclareUnicodeCharacter{BA09}{\UTFK{BA09}}%
+\DeclareUnicodeCharacter{BA0A}{\UTFK{BA0A}}%
+\DeclareUnicodeCharacter{BA0B}{\UTFK{BA0B}}%
+\DeclareUnicodeCharacter{BA0C}{\UTFK{BA0C}}%
+\DeclareUnicodeCharacter{BA0D}{\UTFK{BA0D}}%
+\DeclareUnicodeCharacter{BA0E}{\UTFK{BA0E}}%
+\DeclareUnicodeCharacter{BA0F}{\UTFK{BA0F}}%
+\DeclareUnicodeCharacter{BA10}{\UTFK{BA10}}%
+\DeclareUnicodeCharacter{BA11}{\UTFK{BA11}}%
+\DeclareUnicodeCharacter{BA12}{\UTFK{BA12}}%
+\DeclareUnicodeCharacter{BA13}{\UTFK{BA13}}%
+\DeclareUnicodeCharacter{BA14}{\UTFK{BA14}}%
+\DeclareUnicodeCharacter{BA15}{\UTFK{BA15}}%
+\DeclareUnicodeCharacter{BA16}{\UTFK{BA16}}%
+\DeclareUnicodeCharacter{BA17}{\UTFK{BA17}}%
+\DeclareUnicodeCharacter{BA18}{\UTFK{BA18}}%
+\DeclareUnicodeCharacter{BA19}{\UTFK{BA19}}%
+\DeclareUnicodeCharacter{BA1A}{\UTFK{BA1A}}%
+\DeclareUnicodeCharacter{BA1B}{\UTFK{BA1B}}%
+\DeclareUnicodeCharacter{BA1C}{\UTFK{BA1C}}%
+\DeclareUnicodeCharacter{BA1D}{\UTFK{BA1D}}%
+\DeclareUnicodeCharacter{BA1E}{\UTFK{BA1E}}%
+\DeclareUnicodeCharacter{BA1F}{\UTFK{BA1F}}%
+\DeclareUnicodeCharacter{BA20}{\UTFK{BA20}}%
+\DeclareUnicodeCharacter{BA21}{\UTFK{BA21}}%
+\DeclareUnicodeCharacter{BA22}{\UTFK{BA22}}%
+\DeclareUnicodeCharacter{BA23}{\UTFK{BA23}}%
+\DeclareUnicodeCharacter{BA24}{\UTFK{BA24}}%
+\DeclareUnicodeCharacter{BA25}{\UTFK{BA25}}%
+\DeclareUnicodeCharacter{BA26}{\UTFK{BA26}}%
+\DeclareUnicodeCharacter{BA27}{\UTFK{BA27}}%
+\DeclareUnicodeCharacter{BA28}{\UTFK{BA28}}%
+\DeclareUnicodeCharacter{BA29}{\UTFK{BA29}}%
+\DeclareUnicodeCharacter{BA2A}{\UTFK{BA2A}}%
+\DeclareUnicodeCharacter{BA2B}{\UTFK{BA2B}}%
+\DeclareUnicodeCharacter{BA2C}{\UTFK{BA2C}}%
+\DeclareUnicodeCharacter{BA2D}{\UTFK{BA2D}}%
+\DeclareUnicodeCharacter{BA2E}{\UTFK{BA2E}}%
+\DeclareUnicodeCharacter{BA2F}{\UTFK{BA2F}}%
+\DeclareUnicodeCharacter{BA30}{\UTFK{BA30}}%
+\DeclareUnicodeCharacter{BA31}{\UTFK{BA31}}%
+\DeclareUnicodeCharacter{BA32}{\UTFK{BA32}}%
+\DeclareUnicodeCharacter{BA33}{\UTFK{BA33}}%
+\DeclareUnicodeCharacter{BA34}{\UTFK{BA34}}%
+\DeclareUnicodeCharacter{BA35}{\UTFK{BA35}}%
+\DeclareUnicodeCharacter{BA36}{\UTFK{BA36}}%
+\DeclareUnicodeCharacter{BA37}{\UTFK{BA37}}%
+\DeclareUnicodeCharacter{BA38}{\UTFK{BA38}}%
+\DeclareUnicodeCharacter{BA39}{\UTFK{BA39}}%
+\DeclareUnicodeCharacter{BA3A}{\UTFK{BA3A}}%
+\DeclareUnicodeCharacter{BA3B}{\UTFK{BA3B}}%
+\DeclareUnicodeCharacter{BA3C}{\UTFK{BA3C}}%
+\DeclareUnicodeCharacter{BA3D}{\UTFK{BA3D}}%
+\DeclareUnicodeCharacter{BA3E}{\UTFK{BA3E}}%
+\DeclareUnicodeCharacter{BA3F}{\UTFK{BA3F}}%
+\DeclareUnicodeCharacter{BA40}{\UTFK{BA40}}%
+\DeclareUnicodeCharacter{BA41}{\UTFK{BA41}}%
+\DeclareUnicodeCharacter{BA42}{\UTFK{BA42}}%
+\DeclareUnicodeCharacter{BA43}{\UTFK{BA43}}%
+\DeclareUnicodeCharacter{BA44}{\UTFK{BA44}}%
+\DeclareUnicodeCharacter{BA45}{\UTFK{BA45}}%
+\DeclareUnicodeCharacter{BA46}{\UTFK{BA46}}%
+\DeclareUnicodeCharacter{BA47}{\UTFK{BA47}}%
+\DeclareUnicodeCharacter{BA48}{\UTFK{BA48}}%
+\DeclareUnicodeCharacter{BA49}{\UTFK{BA49}}%
+\DeclareUnicodeCharacter{BA4A}{\UTFK{BA4A}}%
+\DeclareUnicodeCharacter{BA4B}{\UTFK{BA4B}}%
+\DeclareUnicodeCharacter{BA4C}{\UTFK{BA4C}}%
+\DeclareUnicodeCharacter{BA4D}{\UTFK{BA4D}}%
+\DeclareUnicodeCharacter{BA4E}{\UTFK{BA4E}}%
+\DeclareUnicodeCharacter{BA4F}{\UTFK{BA4F}}%
+\DeclareUnicodeCharacter{BA50}{\UTFK{BA50}}%
+\DeclareUnicodeCharacter{BA51}{\UTFK{BA51}}%
+\DeclareUnicodeCharacter{BA52}{\UTFK{BA52}}%
+\DeclareUnicodeCharacter{BA53}{\UTFK{BA53}}%
+\DeclareUnicodeCharacter{BA54}{\UTFK{BA54}}%
+\DeclareUnicodeCharacter{BA55}{\UTFK{BA55}}%
+\DeclareUnicodeCharacter{BA56}{\UTFK{BA56}}%
+\DeclareUnicodeCharacter{BA57}{\UTFK{BA57}}%
+\DeclareUnicodeCharacter{BA58}{\UTFK{BA58}}%
+\DeclareUnicodeCharacter{BA59}{\UTFK{BA59}}%
+\DeclareUnicodeCharacter{BA5A}{\UTFK{BA5A}}%
+\DeclareUnicodeCharacter{BA5B}{\UTFK{BA5B}}%
+\DeclareUnicodeCharacter{BA5C}{\UTFK{BA5C}}%
+\DeclareUnicodeCharacter{BA5D}{\UTFK{BA5D}}%
+\DeclareUnicodeCharacter{BA5E}{\UTFK{BA5E}}%
+\DeclareUnicodeCharacter{BA5F}{\UTFK{BA5F}}%
+\DeclareUnicodeCharacter{BA60}{\UTFK{BA60}}%
+\DeclareUnicodeCharacter{BA61}{\UTFK{BA61}}%
+\DeclareUnicodeCharacter{BA62}{\UTFK{BA62}}%
+\DeclareUnicodeCharacter{BA63}{\UTFK{BA63}}%
+\DeclareUnicodeCharacter{BA64}{\UTFK{BA64}}%
+\DeclareUnicodeCharacter{BA65}{\UTFK{BA65}}%
+\DeclareUnicodeCharacter{BA66}{\UTFK{BA66}}%
+\DeclareUnicodeCharacter{BA67}{\UTFK{BA67}}%
+\DeclareUnicodeCharacter{BA68}{\UTFK{BA68}}%
+\DeclareUnicodeCharacter{BA69}{\UTFK{BA69}}%
+\DeclareUnicodeCharacter{BA6A}{\UTFK{BA6A}}%
+\DeclareUnicodeCharacter{BA6B}{\UTFK{BA6B}}%
+\DeclareUnicodeCharacter{BA6C}{\UTFK{BA6C}}%
+\DeclareUnicodeCharacter{BA6D}{\UTFK{BA6D}}%
+\DeclareUnicodeCharacter{BA6E}{\UTFK{BA6E}}%
+\DeclareUnicodeCharacter{BA6F}{\UTFK{BA6F}}%
+\DeclareUnicodeCharacter{BA70}{\UTFK{BA70}}%
+\DeclareUnicodeCharacter{BA71}{\UTFK{BA71}}%
+\DeclareUnicodeCharacter{BA72}{\UTFK{BA72}}%
+\DeclareUnicodeCharacter{BA73}{\UTFK{BA73}}%
+\DeclareUnicodeCharacter{BA74}{\UTFK{BA74}}%
+\DeclareUnicodeCharacter{BA75}{\UTFK{BA75}}%
+\DeclareUnicodeCharacter{BA76}{\UTFK{BA76}}%
+\DeclareUnicodeCharacter{BA77}{\UTFK{BA77}}%
+\DeclareUnicodeCharacter{BA78}{\UTFK{BA78}}%
+\DeclareUnicodeCharacter{BA79}{\UTFK{BA79}}%
+\DeclareUnicodeCharacter{BA7A}{\UTFK{BA7A}}%
+\DeclareUnicodeCharacter{BA7B}{\UTFK{BA7B}}%
+\DeclareUnicodeCharacter{BA7C}{\UTFK{BA7C}}%
+\DeclareUnicodeCharacter{BA7D}{\UTFK{BA7D}}%
+\DeclareUnicodeCharacter{BA7E}{\UTFK{BA7E}}%
+\DeclareUnicodeCharacter{BA7F}{\UTFK{BA7F}}%
+\DeclareUnicodeCharacter{BA80}{\UTFK{BA80}}%
+\DeclareUnicodeCharacter{BA81}{\UTFK{BA81}}%
+\DeclareUnicodeCharacter{BA82}{\UTFK{BA82}}%
+\DeclareUnicodeCharacter{BA83}{\UTFK{BA83}}%
+\DeclareUnicodeCharacter{BA84}{\UTFK{BA84}}%
+\DeclareUnicodeCharacter{BA85}{\UTFK{BA85}}%
+\DeclareUnicodeCharacter{BA86}{\UTFK{BA86}}%
+\DeclareUnicodeCharacter{BA87}{\UTFK{BA87}}%
+\DeclareUnicodeCharacter{BA88}{\UTFK{BA88}}%
+\DeclareUnicodeCharacter{BA89}{\UTFK{BA89}}%
+\DeclareUnicodeCharacter{BA8A}{\UTFK{BA8A}}%
+\DeclareUnicodeCharacter{BA8B}{\UTFK{BA8B}}%
+\DeclareUnicodeCharacter{BA8C}{\UTFK{BA8C}}%
+\DeclareUnicodeCharacter{BA8D}{\UTFK{BA8D}}%
+\DeclareUnicodeCharacter{BA8E}{\UTFK{BA8E}}%
+\DeclareUnicodeCharacter{BA8F}{\UTFK{BA8F}}%
+\DeclareUnicodeCharacter{BA90}{\UTFK{BA90}}%
+\DeclareUnicodeCharacter{BA91}{\UTFK{BA91}}%
+\DeclareUnicodeCharacter{BA92}{\UTFK{BA92}}%
+\DeclareUnicodeCharacter{BA93}{\UTFK{BA93}}%
+\DeclareUnicodeCharacter{BA94}{\UTFK{BA94}}%
+\DeclareUnicodeCharacter{BA95}{\UTFK{BA95}}%
+\DeclareUnicodeCharacter{BA96}{\UTFK{BA96}}%
+\DeclareUnicodeCharacter{BA97}{\UTFK{BA97}}%
+\DeclareUnicodeCharacter{BA98}{\UTFK{BA98}}%
+\DeclareUnicodeCharacter{BA99}{\UTFK{BA99}}%
+\DeclareUnicodeCharacter{BA9A}{\UTFK{BA9A}}%
+\DeclareUnicodeCharacter{BA9B}{\UTFK{BA9B}}%
+\DeclareUnicodeCharacter{BA9C}{\UTFK{BA9C}}%
+\DeclareUnicodeCharacter{BA9D}{\UTFK{BA9D}}%
+\DeclareUnicodeCharacter{BA9E}{\UTFK{BA9E}}%
+\DeclareUnicodeCharacter{BA9F}{\UTFK{BA9F}}%
+\DeclareUnicodeCharacter{BAA0}{\UTFK{BAA0}}%
+\DeclareUnicodeCharacter{BAA1}{\UTFK{BAA1}}%
+\DeclareUnicodeCharacter{BAA2}{\UTFK{BAA2}}%
+\DeclareUnicodeCharacter{BAA3}{\UTFK{BAA3}}%
+\DeclareUnicodeCharacter{BAA4}{\UTFK{BAA4}}%
+\DeclareUnicodeCharacter{BAA5}{\UTFK{BAA5}}%
+\DeclareUnicodeCharacter{BAA6}{\UTFK{BAA6}}%
+\DeclareUnicodeCharacter{BAA7}{\UTFK{BAA7}}%
+\DeclareUnicodeCharacter{BAA8}{\UTFK{BAA8}}%
+\DeclareUnicodeCharacter{BAA9}{\UTFK{BAA9}}%
+\DeclareUnicodeCharacter{BAAA}{\UTFK{BAAA}}%
+\DeclareUnicodeCharacter{BAAB}{\UTFK{BAAB}}%
+\DeclareUnicodeCharacter{BAAC}{\UTFK{BAAC}}%
+\DeclareUnicodeCharacter{BAAD}{\UTFK{BAAD}}%
+\DeclareUnicodeCharacter{BAAE}{\UTFK{BAAE}}%
+\DeclareUnicodeCharacter{BAAF}{\UTFK{BAAF}}%
+\DeclareUnicodeCharacter{BAB0}{\UTFK{BAB0}}%
+\DeclareUnicodeCharacter{BAB1}{\UTFK{BAB1}}%
+\DeclareUnicodeCharacter{BAB2}{\UTFK{BAB2}}%
+\DeclareUnicodeCharacter{BAB3}{\UTFK{BAB3}}%
+\DeclareUnicodeCharacter{BAB4}{\UTFK{BAB4}}%
+\DeclareUnicodeCharacter{BAB5}{\UTFK{BAB5}}%
+\DeclareUnicodeCharacter{BAB6}{\UTFK{BAB6}}%
+\DeclareUnicodeCharacter{BAB7}{\UTFK{BAB7}}%
+\DeclareUnicodeCharacter{BAB8}{\UTFK{BAB8}}%
+\DeclareUnicodeCharacter{BAB9}{\UTFK{BAB9}}%
+\DeclareUnicodeCharacter{BABA}{\UTFK{BABA}}%
+\DeclareUnicodeCharacter{BABB}{\UTFK{BABB}}%
+\DeclareUnicodeCharacter{BABC}{\UTFK{BABC}}%
+\DeclareUnicodeCharacter{BABD}{\UTFK{BABD}}%
+\DeclareUnicodeCharacter{BABE}{\UTFK{BABE}}%
+\DeclareUnicodeCharacter{BABF}{\UTFK{BABF}}%
+\DeclareUnicodeCharacter{BAC0}{\UTFK{BAC0}}%
+\DeclareUnicodeCharacter{BAC1}{\UTFK{BAC1}}%
+\DeclareUnicodeCharacter{BAC2}{\UTFK{BAC2}}%
+\DeclareUnicodeCharacter{BAC3}{\UTFK{BAC3}}%
+\DeclareUnicodeCharacter{BAC4}{\UTFK{BAC4}}%
+\DeclareUnicodeCharacter{BAC5}{\UTFK{BAC5}}%
+\DeclareUnicodeCharacter{BAC6}{\UTFK{BAC6}}%
+\DeclareUnicodeCharacter{BAC7}{\UTFK{BAC7}}%
+\DeclareUnicodeCharacter{BAC8}{\UTFK{BAC8}}%
+\DeclareUnicodeCharacter{BAC9}{\UTFK{BAC9}}%
+\DeclareUnicodeCharacter{BACA}{\UTFK{BACA}}%
+\DeclareUnicodeCharacter{BACB}{\UTFK{BACB}}%
+\DeclareUnicodeCharacter{BACC}{\UTFK{BACC}}%
+\DeclareUnicodeCharacter{BACD}{\UTFK{BACD}}%
+\DeclareUnicodeCharacter{BACE}{\UTFK{BACE}}%
+\DeclareUnicodeCharacter{BACF}{\UTFK{BACF}}%
+\DeclareUnicodeCharacter{BAD0}{\UTFK{BAD0}}%
+\DeclareUnicodeCharacter{BAD1}{\UTFK{BAD1}}%
+\DeclareUnicodeCharacter{BAD2}{\UTFK{BAD2}}%
+\DeclareUnicodeCharacter{BAD3}{\UTFK{BAD3}}%
+\DeclareUnicodeCharacter{BAD4}{\UTFK{BAD4}}%
+\DeclareUnicodeCharacter{BAD5}{\UTFK{BAD5}}%
+\DeclareUnicodeCharacter{BAD6}{\UTFK{BAD6}}%
+\DeclareUnicodeCharacter{BAD7}{\UTFK{BAD7}}%
+\DeclareUnicodeCharacter{BAD8}{\UTFK{BAD8}}%
+\DeclareUnicodeCharacter{BAD9}{\UTFK{BAD9}}%
+\DeclareUnicodeCharacter{BADA}{\UTFK{BADA}}%
+\DeclareUnicodeCharacter{BADB}{\UTFK{BADB}}%
+\DeclareUnicodeCharacter{BADC}{\UTFK{BADC}}%
+\DeclareUnicodeCharacter{BADD}{\UTFK{BADD}}%
+\DeclareUnicodeCharacter{BADE}{\UTFK{BADE}}%
+\DeclareUnicodeCharacter{BADF}{\UTFK{BADF}}%
+\DeclareUnicodeCharacter{BAE0}{\UTFK{BAE0}}%
+\DeclareUnicodeCharacter{BAE1}{\UTFK{BAE1}}%
+\DeclareUnicodeCharacter{BAE2}{\UTFK{BAE2}}%
+\DeclareUnicodeCharacter{BAE3}{\UTFK{BAE3}}%
+\DeclareUnicodeCharacter{BAE4}{\UTFK{BAE4}}%
+\DeclareUnicodeCharacter{BAE5}{\UTFK{BAE5}}%
+\DeclareUnicodeCharacter{BAE6}{\UTFK{BAE6}}%
+\DeclareUnicodeCharacter{BAE7}{\UTFK{BAE7}}%
+\DeclareUnicodeCharacter{BAE8}{\UTFK{BAE8}}%
+\DeclareUnicodeCharacter{BAE9}{\UTFK{BAE9}}%
+\DeclareUnicodeCharacter{BAEA}{\UTFK{BAEA}}%
+\DeclareUnicodeCharacter{BAEB}{\UTFK{BAEB}}%
+\DeclareUnicodeCharacter{BAEC}{\UTFK{BAEC}}%
+\DeclareUnicodeCharacter{BAED}{\UTFK{BAED}}%
+\DeclareUnicodeCharacter{BAEE}{\UTFK{BAEE}}%
+\DeclareUnicodeCharacter{BAEF}{\UTFK{BAEF}}%
+\DeclareUnicodeCharacter{BAF0}{\UTFK{BAF0}}%
+\DeclareUnicodeCharacter{BAF1}{\UTFK{BAF1}}%
+\DeclareUnicodeCharacter{BAF2}{\UTFK{BAF2}}%
+\DeclareUnicodeCharacter{BAF3}{\UTFK{BAF3}}%
+\DeclareUnicodeCharacter{BAF4}{\UTFK{BAF4}}%
+\DeclareUnicodeCharacter{BAF5}{\UTFK{BAF5}}%
+\DeclareUnicodeCharacter{BAF6}{\UTFK{BAF6}}%
+\DeclareUnicodeCharacter{BAF7}{\UTFK{BAF7}}%
+\DeclareUnicodeCharacter{BAF8}{\UTFK{BAF8}}%
+\DeclareUnicodeCharacter{BAF9}{\UTFK{BAF9}}%
+\DeclareUnicodeCharacter{BAFA}{\UTFK{BAFA}}%
+\DeclareUnicodeCharacter{BAFB}{\UTFK{BAFB}}%
+\DeclareUnicodeCharacter{BAFC}{\UTFK{BAFC}}%
+\DeclareUnicodeCharacter{BAFD}{\UTFK{BAFD}}%
+\DeclareUnicodeCharacter{BAFE}{\UTFK{BAFE}}%
+\DeclareUnicodeCharacter{BAFF}{\UTFK{BAFF}}%
+\DeclareUnicodeCharacter{BB00}{\UTFK{BB00}}%
+\DeclareUnicodeCharacter{BB01}{\UTFK{BB01}}%
+\DeclareUnicodeCharacter{BB02}{\UTFK{BB02}}%
+\DeclareUnicodeCharacter{BB03}{\UTFK{BB03}}%
+\DeclareUnicodeCharacter{BB04}{\UTFK{BB04}}%
+\DeclareUnicodeCharacter{BB05}{\UTFK{BB05}}%
+\DeclareUnicodeCharacter{BB06}{\UTFK{BB06}}%
+\DeclareUnicodeCharacter{BB07}{\UTFK{BB07}}%
+\DeclareUnicodeCharacter{BB08}{\UTFK{BB08}}%
+\DeclareUnicodeCharacter{BB09}{\UTFK{BB09}}%
+\DeclareUnicodeCharacter{BB0A}{\UTFK{BB0A}}%
+\DeclareUnicodeCharacter{BB0B}{\UTFK{BB0B}}%
+\DeclareUnicodeCharacter{BB0C}{\UTFK{BB0C}}%
+\DeclareUnicodeCharacter{BB0D}{\UTFK{BB0D}}%
+\DeclareUnicodeCharacter{BB0E}{\UTFK{BB0E}}%
+\DeclareUnicodeCharacter{BB0F}{\UTFK{BB0F}}%
+\DeclareUnicodeCharacter{BB10}{\UTFK{BB10}}%
+\DeclareUnicodeCharacter{BB11}{\UTFK{BB11}}%
+\DeclareUnicodeCharacter{BB12}{\UTFK{BB12}}%
+\DeclareUnicodeCharacter{BB13}{\UTFK{BB13}}%
+\DeclareUnicodeCharacter{BB14}{\UTFK{BB14}}%
+\DeclareUnicodeCharacter{BB15}{\UTFK{BB15}}%
+\DeclareUnicodeCharacter{BB16}{\UTFK{BB16}}%
+\DeclareUnicodeCharacter{BB17}{\UTFK{BB17}}%
+\DeclareUnicodeCharacter{BB18}{\UTFK{BB18}}%
+\DeclareUnicodeCharacter{BB19}{\UTFK{BB19}}%
+\DeclareUnicodeCharacter{BB1A}{\UTFK{BB1A}}%
+\DeclareUnicodeCharacter{BB1B}{\UTFK{BB1B}}%
+\DeclareUnicodeCharacter{BB1C}{\UTFK{BB1C}}%
+\DeclareUnicodeCharacter{BB1D}{\UTFK{BB1D}}%
+\DeclareUnicodeCharacter{BB1E}{\UTFK{BB1E}}%
+\DeclareUnicodeCharacter{BB1F}{\UTFK{BB1F}}%
+\DeclareUnicodeCharacter{BB20}{\UTFK{BB20}}%
+\DeclareUnicodeCharacter{BB21}{\UTFK{BB21}}%
+\DeclareUnicodeCharacter{BB22}{\UTFK{BB22}}%
+\DeclareUnicodeCharacter{BB23}{\UTFK{BB23}}%
+\DeclareUnicodeCharacter{BB24}{\UTFK{BB24}}%
+\DeclareUnicodeCharacter{BB25}{\UTFK{BB25}}%
+\DeclareUnicodeCharacter{BB26}{\UTFK{BB26}}%
+\DeclareUnicodeCharacter{BB27}{\UTFK{BB27}}%
+\DeclareUnicodeCharacter{BB28}{\UTFK{BB28}}%
+\DeclareUnicodeCharacter{BB29}{\UTFK{BB29}}%
+\DeclareUnicodeCharacter{BB2A}{\UTFK{BB2A}}%
+\DeclareUnicodeCharacter{BB2B}{\UTFK{BB2B}}%
+\DeclareUnicodeCharacter{BB2C}{\UTFK{BB2C}}%
+\DeclareUnicodeCharacter{BB2D}{\UTFK{BB2D}}%
+\DeclareUnicodeCharacter{BB2E}{\UTFK{BB2E}}%
+\DeclareUnicodeCharacter{BB2F}{\UTFK{BB2F}}%
+\DeclareUnicodeCharacter{BB30}{\UTFK{BB30}}%
+\DeclareUnicodeCharacter{BB31}{\UTFK{BB31}}%
+\DeclareUnicodeCharacter{BB32}{\UTFK{BB32}}%
+\DeclareUnicodeCharacter{BB33}{\UTFK{BB33}}%
+\DeclareUnicodeCharacter{BB34}{\UTFK{BB34}}%
+\DeclareUnicodeCharacter{BB35}{\UTFK{BB35}}%
+\DeclareUnicodeCharacter{BB36}{\UTFK{BB36}}%
+\DeclareUnicodeCharacter{BB37}{\UTFK{BB37}}%
+\DeclareUnicodeCharacter{BB38}{\UTFK{BB38}}%
+\DeclareUnicodeCharacter{BB39}{\UTFK{BB39}}%
+\DeclareUnicodeCharacter{BB3A}{\UTFK{BB3A}}%
+\DeclareUnicodeCharacter{BB3B}{\UTFK{BB3B}}%
+\DeclareUnicodeCharacter{BB3C}{\UTFK{BB3C}}%
+\DeclareUnicodeCharacter{BB3D}{\UTFK{BB3D}}%
+\DeclareUnicodeCharacter{BB3E}{\UTFK{BB3E}}%
+\DeclareUnicodeCharacter{BB3F}{\UTFK{BB3F}}%
+\DeclareUnicodeCharacter{BB40}{\UTFK{BB40}}%
+\DeclareUnicodeCharacter{BB41}{\UTFK{BB41}}%
+\DeclareUnicodeCharacter{BB42}{\UTFK{BB42}}%
+\DeclareUnicodeCharacter{BB43}{\UTFK{BB43}}%
+\DeclareUnicodeCharacter{BB44}{\UTFK{BB44}}%
+\DeclareUnicodeCharacter{BB45}{\UTFK{BB45}}%
+\DeclareUnicodeCharacter{BB46}{\UTFK{BB46}}%
+\DeclareUnicodeCharacter{BB47}{\UTFK{BB47}}%
+\DeclareUnicodeCharacter{BB48}{\UTFK{BB48}}%
+\DeclareUnicodeCharacter{BB49}{\UTFK{BB49}}%
+\DeclareUnicodeCharacter{BB4A}{\UTFK{BB4A}}%
+\DeclareUnicodeCharacter{BB4B}{\UTFK{BB4B}}%
+\DeclareUnicodeCharacter{BB4C}{\UTFK{BB4C}}%
+\DeclareUnicodeCharacter{BB4D}{\UTFK{BB4D}}%
+\DeclareUnicodeCharacter{BB4E}{\UTFK{BB4E}}%
+\DeclareUnicodeCharacter{BB4F}{\UTFK{BB4F}}%
+\DeclareUnicodeCharacter{BB50}{\UTFK{BB50}}%
+\DeclareUnicodeCharacter{BB51}{\UTFK{BB51}}%
+\DeclareUnicodeCharacter{BB52}{\UTFK{BB52}}%
+\DeclareUnicodeCharacter{BB53}{\UTFK{BB53}}%
+\DeclareUnicodeCharacter{BB54}{\UTFK{BB54}}%
+\DeclareUnicodeCharacter{BB55}{\UTFK{BB55}}%
+\DeclareUnicodeCharacter{BB56}{\UTFK{BB56}}%
+\DeclareUnicodeCharacter{BB57}{\UTFK{BB57}}%
+\DeclareUnicodeCharacter{BB58}{\UTFK{BB58}}%
+\DeclareUnicodeCharacter{BB59}{\UTFK{BB59}}%
+\DeclareUnicodeCharacter{BB5A}{\UTFK{BB5A}}%
+\DeclareUnicodeCharacter{BB5B}{\UTFK{BB5B}}%
+\DeclareUnicodeCharacter{BB5C}{\UTFK{BB5C}}%
+\DeclareUnicodeCharacter{BB5D}{\UTFK{BB5D}}%
+\DeclareUnicodeCharacter{BB5E}{\UTFK{BB5E}}%
+\DeclareUnicodeCharacter{BB5F}{\UTFK{BB5F}}%
+\DeclareUnicodeCharacter{BB60}{\UTFK{BB60}}%
+\DeclareUnicodeCharacter{BB61}{\UTFK{BB61}}%
+\DeclareUnicodeCharacter{BB62}{\UTFK{BB62}}%
+\DeclareUnicodeCharacter{BB63}{\UTFK{BB63}}%
+\DeclareUnicodeCharacter{BB64}{\UTFK{BB64}}%
+\DeclareUnicodeCharacter{BB65}{\UTFK{BB65}}%
+\DeclareUnicodeCharacter{BB66}{\UTFK{BB66}}%
+\DeclareUnicodeCharacter{BB67}{\UTFK{BB67}}%
+\DeclareUnicodeCharacter{BB68}{\UTFK{BB68}}%
+\DeclareUnicodeCharacter{BB69}{\UTFK{BB69}}%
+\DeclareUnicodeCharacter{BB6A}{\UTFK{BB6A}}%
+\DeclareUnicodeCharacter{BB6B}{\UTFK{BB6B}}%
+\DeclareUnicodeCharacter{BB6C}{\UTFK{BB6C}}%
+\DeclareUnicodeCharacter{BB6D}{\UTFK{BB6D}}%
+\DeclareUnicodeCharacter{BB6E}{\UTFK{BB6E}}%
+\DeclareUnicodeCharacter{BB6F}{\UTFK{BB6F}}%
+\DeclareUnicodeCharacter{BB70}{\UTFK{BB70}}%
+\DeclareUnicodeCharacter{BB71}{\UTFK{BB71}}%
+\DeclareUnicodeCharacter{BB72}{\UTFK{BB72}}%
+\DeclareUnicodeCharacter{BB73}{\UTFK{BB73}}%
+\DeclareUnicodeCharacter{BB74}{\UTFK{BB74}}%
+\DeclareUnicodeCharacter{BB75}{\UTFK{BB75}}%
+\DeclareUnicodeCharacter{BB76}{\UTFK{BB76}}%
+\DeclareUnicodeCharacter{BB77}{\UTFK{BB77}}%
+\DeclareUnicodeCharacter{BB78}{\UTFK{BB78}}%
+\DeclareUnicodeCharacter{BB79}{\UTFK{BB79}}%
+\DeclareUnicodeCharacter{BB7A}{\UTFK{BB7A}}%
+\DeclareUnicodeCharacter{BB7B}{\UTFK{BB7B}}%
+\DeclareUnicodeCharacter{BB7C}{\UTFK{BB7C}}%
+\DeclareUnicodeCharacter{BB7D}{\UTFK{BB7D}}%
+\DeclareUnicodeCharacter{BB7E}{\UTFK{BB7E}}%
+\DeclareUnicodeCharacter{BB7F}{\UTFK{BB7F}}%
+\DeclareUnicodeCharacter{BB80}{\UTFK{BB80}}%
+\DeclareUnicodeCharacter{BB81}{\UTFK{BB81}}%
+\DeclareUnicodeCharacter{BB82}{\UTFK{BB82}}%
+\DeclareUnicodeCharacter{BB83}{\UTFK{BB83}}%
+\DeclareUnicodeCharacter{BB84}{\UTFK{BB84}}%
+\DeclareUnicodeCharacter{BB85}{\UTFK{BB85}}%
+\DeclareUnicodeCharacter{BB86}{\UTFK{BB86}}%
+\DeclareUnicodeCharacter{BB87}{\UTFK{BB87}}%
+\DeclareUnicodeCharacter{BB88}{\UTFK{BB88}}%
+\DeclareUnicodeCharacter{BB89}{\UTFK{BB89}}%
+\DeclareUnicodeCharacter{BB8A}{\UTFK{BB8A}}%
+\DeclareUnicodeCharacter{BB8B}{\UTFK{BB8B}}%
+\DeclareUnicodeCharacter{BB8C}{\UTFK{BB8C}}%
+\DeclareUnicodeCharacter{BB8D}{\UTFK{BB8D}}%
+\DeclareUnicodeCharacter{BB8E}{\UTFK{BB8E}}%
+\DeclareUnicodeCharacter{BB8F}{\UTFK{BB8F}}%
+\DeclareUnicodeCharacter{BB90}{\UTFK{BB90}}%
+\DeclareUnicodeCharacter{BB91}{\UTFK{BB91}}%
+\DeclareUnicodeCharacter{BB92}{\UTFK{BB92}}%
+\DeclareUnicodeCharacter{BB93}{\UTFK{BB93}}%
+\DeclareUnicodeCharacter{BB94}{\UTFK{BB94}}%
+\DeclareUnicodeCharacter{BB95}{\UTFK{BB95}}%
+\DeclareUnicodeCharacter{BB96}{\UTFK{BB96}}%
+\DeclareUnicodeCharacter{BB97}{\UTFK{BB97}}%
+\DeclareUnicodeCharacter{BB98}{\UTFK{BB98}}%
+\DeclareUnicodeCharacter{BB99}{\UTFK{BB99}}%
+\DeclareUnicodeCharacter{BB9A}{\UTFK{BB9A}}%
+\DeclareUnicodeCharacter{BB9B}{\UTFK{BB9B}}%
+\DeclareUnicodeCharacter{BB9C}{\UTFK{BB9C}}%
+\DeclareUnicodeCharacter{BB9D}{\UTFK{BB9D}}%
+\DeclareUnicodeCharacter{BB9E}{\UTFK{BB9E}}%
+\DeclareUnicodeCharacter{BB9F}{\UTFK{BB9F}}%
+\DeclareUnicodeCharacter{BBA0}{\UTFK{BBA0}}%
+\DeclareUnicodeCharacter{BBA1}{\UTFK{BBA1}}%
+\DeclareUnicodeCharacter{BBA2}{\UTFK{BBA2}}%
+\DeclareUnicodeCharacter{BBA3}{\UTFK{BBA3}}%
+\DeclareUnicodeCharacter{BBA4}{\UTFK{BBA4}}%
+\DeclareUnicodeCharacter{BBA5}{\UTFK{BBA5}}%
+\DeclareUnicodeCharacter{BBA6}{\UTFK{BBA6}}%
+\DeclareUnicodeCharacter{BBA7}{\UTFK{BBA7}}%
+\DeclareUnicodeCharacter{BBA8}{\UTFK{BBA8}}%
+\DeclareUnicodeCharacter{BBA9}{\UTFK{BBA9}}%
+\DeclareUnicodeCharacter{BBAA}{\UTFK{BBAA}}%
+\DeclareUnicodeCharacter{BBAB}{\UTFK{BBAB}}%
+\DeclareUnicodeCharacter{BBAC}{\UTFK{BBAC}}%
+\DeclareUnicodeCharacter{BBAD}{\UTFK{BBAD}}%
+\DeclareUnicodeCharacter{BBAE}{\UTFK{BBAE}}%
+\DeclareUnicodeCharacter{BBAF}{\UTFK{BBAF}}%
+\DeclareUnicodeCharacter{BBB0}{\UTFK{BBB0}}%
+\DeclareUnicodeCharacter{BBB1}{\UTFK{BBB1}}%
+\DeclareUnicodeCharacter{BBB2}{\UTFK{BBB2}}%
+\DeclareUnicodeCharacter{BBB3}{\UTFK{BBB3}}%
+\DeclareUnicodeCharacter{BBB4}{\UTFK{BBB4}}%
+\DeclareUnicodeCharacter{BBB5}{\UTFK{BBB5}}%
+\DeclareUnicodeCharacter{BBB6}{\UTFK{BBB6}}%
+\DeclareUnicodeCharacter{BBB7}{\UTFK{BBB7}}%
+\DeclareUnicodeCharacter{BBB8}{\UTFK{BBB8}}%
+\DeclareUnicodeCharacter{BBB9}{\UTFK{BBB9}}%
+\DeclareUnicodeCharacter{BBBA}{\UTFK{BBBA}}%
+\DeclareUnicodeCharacter{BBBB}{\UTFK{BBBB}}%
+\DeclareUnicodeCharacter{BBBC}{\UTFK{BBBC}}%
+\DeclareUnicodeCharacter{BBBD}{\UTFK{BBBD}}%
+\DeclareUnicodeCharacter{BBBE}{\UTFK{BBBE}}%
+\DeclareUnicodeCharacter{BBBF}{\UTFK{BBBF}}%
+\DeclareUnicodeCharacter{BBC0}{\UTFK{BBC0}}%
+\DeclareUnicodeCharacter{BBC1}{\UTFK{BBC1}}%
+\DeclareUnicodeCharacter{BBC2}{\UTFK{BBC2}}%
+\DeclareUnicodeCharacter{BBC3}{\UTFK{BBC3}}%
+\DeclareUnicodeCharacter{BBC4}{\UTFK{BBC4}}%
+\DeclareUnicodeCharacter{BBC5}{\UTFK{BBC5}}%
+\DeclareUnicodeCharacter{BBC6}{\UTFK{BBC6}}%
+\DeclareUnicodeCharacter{BBC7}{\UTFK{BBC7}}%
+\DeclareUnicodeCharacter{BBC8}{\UTFK{BBC8}}%
+\DeclareUnicodeCharacter{BBC9}{\UTFK{BBC9}}%
+\DeclareUnicodeCharacter{BBCA}{\UTFK{BBCA}}%
+\DeclareUnicodeCharacter{BBCB}{\UTFK{BBCB}}%
+\DeclareUnicodeCharacter{BBCC}{\UTFK{BBCC}}%
+\DeclareUnicodeCharacter{BBCD}{\UTFK{BBCD}}%
+\DeclareUnicodeCharacter{BBCE}{\UTFK{BBCE}}%
+\DeclareUnicodeCharacter{BBCF}{\UTFK{BBCF}}%
+\DeclareUnicodeCharacter{BBD0}{\UTFK{BBD0}}%
+\DeclareUnicodeCharacter{BBD1}{\UTFK{BBD1}}%
+\DeclareUnicodeCharacter{BBD2}{\UTFK{BBD2}}%
+\DeclareUnicodeCharacter{BBD3}{\UTFK{BBD3}}%
+\DeclareUnicodeCharacter{BBD4}{\UTFK{BBD4}}%
+\DeclareUnicodeCharacter{BBD5}{\UTFK{BBD5}}%
+\DeclareUnicodeCharacter{BBD6}{\UTFK{BBD6}}%
+\DeclareUnicodeCharacter{BBD7}{\UTFK{BBD7}}%
+\DeclareUnicodeCharacter{BBD8}{\UTFK{BBD8}}%
+\DeclareUnicodeCharacter{BBD9}{\UTFK{BBD9}}%
+\DeclareUnicodeCharacter{BBDA}{\UTFK{BBDA}}%
+\DeclareUnicodeCharacter{BBDB}{\UTFK{BBDB}}%
+\DeclareUnicodeCharacter{BBDC}{\UTFK{BBDC}}%
+\DeclareUnicodeCharacter{BBDD}{\UTFK{BBDD}}%
+\DeclareUnicodeCharacter{BBDE}{\UTFK{BBDE}}%
+\DeclareUnicodeCharacter{BBDF}{\UTFK{BBDF}}%
+\DeclareUnicodeCharacter{BBE0}{\UTFK{BBE0}}%
+\DeclareUnicodeCharacter{BBE1}{\UTFK{BBE1}}%
+\DeclareUnicodeCharacter{BBE2}{\UTFK{BBE2}}%
+\DeclareUnicodeCharacter{BBE3}{\UTFK{BBE3}}%
+\DeclareUnicodeCharacter{BBE4}{\UTFK{BBE4}}%
+\DeclareUnicodeCharacter{BBE5}{\UTFK{BBE5}}%
+\DeclareUnicodeCharacter{BBE6}{\UTFK{BBE6}}%
+\DeclareUnicodeCharacter{BBE7}{\UTFK{BBE7}}%
+\DeclareUnicodeCharacter{BBE8}{\UTFK{BBE8}}%
+\DeclareUnicodeCharacter{BBE9}{\UTFK{BBE9}}%
+\DeclareUnicodeCharacter{BBEA}{\UTFK{BBEA}}%
+\DeclareUnicodeCharacter{BBEB}{\UTFK{BBEB}}%
+\DeclareUnicodeCharacter{BBEC}{\UTFK{BBEC}}%
+\DeclareUnicodeCharacter{BBED}{\UTFK{BBED}}%
+\DeclareUnicodeCharacter{BBEE}{\UTFK{BBEE}}%
+\DeclareUnicodeCharacter{BBEF}{\UTFK{BBEF}}%
+\DeclareUnicodeCharacter{BBF0}{\UTFK{BBF0}}%
+\DeclareUnicodeCharacter{BBF1}{\UTFK{BBF1}}%
+\DeclareUnicodeCharacter{BBF2}{\UTFK{BBF2}}%
+\DeclareUnicodeCharacter{BBF3}{\UTFK{BBF3}}%
+\DeclareUnicodeCharacter{BBF4}{\UTFK{BBF4}}%
+\DeclareUnicodeCharacter{BBF5}{\UTFK{BBF5}}%
+\DeclareUnicodeCharacter{BBF6}{\UTFK{BBF6}}%
+\DeclareUnicodeCharacter{BBF7}{\UTFK{BBF7}}%
+\DeclareUnicodeCharacter{BBF8}{\UTFK{BBF8}}%
+\DeclareUnicodeCharacter{BBF9}{\UTFK{BBF9}}%
+\DeclareUnicodeCharacter{BBFA}{\UTFK{BBFA}}%
+\DeclareUnicodeCharacter{BBFB}{\UTFK{BBFB}}%
+\DeclareUnicodeCharacter{BBFC}{\UTFK{BBFC}}%
+\DeclareUnicodeCharacter{BBFD}{\UTFK{BBFD}}%
+\DeclareUnicodeCharacter{BBFE}{\UTFK{BBFE}}%
+\DeclareUnicodeCharacter{BBFF}{\UTFK{BBFF}}%
+\DeclareUnicodeCharacter{BC00}{\UTFK{BC00}}%
+\DeclareUnicodeCharacter{BC01}{\UTFK{BC01}}%
+\DeclareUnicodeCharacter{BC02}{\UTFK{BC02}}%
+\DeclareUnicodeCharacter{BC03}{\UTFK{BC03}}%
+\DeclareUnicodeCharacter{BC04}{\UTFK{BC04}}%
+\DeclareUnicodeCharacter{BC05}{\UTFK{BC05}}%
+\DeclareUnicodeCharacter{BC06}{\UTFK{BC06}}%
+\DeclareUnicodeCharacter{BC07}{\UTFK{BC07}}%
+\DeclareUnicodeCharacter{BC08}{\UTFK{BC08}}%
+\DeclareUnicodeCharacter{BC09}{\UTFK{BC09}}%
+\DeclareUnicodeCharacter{BC0A}{\UTFK{BC0A}}%
+\DeclareUnicodeCharacter{BC0B}{\UTFK{BC0B}}%
+\DeclareUnicodeCharacter{BC0C}{\UTFK{BC0C}}%
+\DeclareUnicodeCharacter{BC0D}{\UTFK{BC0D}}%
+\DeclareUnicodeCharacter{BC0E}{\UTFK{BC0E}}%
+\DeclareUnicodeCharacter{BC0F}{\UTFK{BC0F}}%
+\DeclareUnicodeCharacter{BC10}{\UTFK{BC10}}%
+\DeclareUnicodeCharacter{BC11}{\UTFK{BC11}}%
+\DeclareUnicodeCharacter{BC12}{\UTFK{BC12}}%
+\DeclareUnicodeCharacter{BC13}{\UTFK{BC13}}%
+\DeclareUnicodeCharacter{BC14}{\UTFK{BC14}}%
+\DeclareUnicodeCharacter{BC15}{\UTFK{BC15}}%
+\DeclareUnicodeCharacter{BC16}{\UTFK{BC16}}%
+\DeclareUnicodeCharacter{BC17}{\UTFK{BC17}}%
+\DeclareUnicodeCharacter{BC18}{\UTFK{BC18}}%
+\DeclareUnicodeCharacter{BC19}{\UTFK{BC19}}%
+\DeclareUnicodeCharacter{BC1A}{\UTFK{BC1A}}%
+\DeclareUnicodeCharacter{BC1B}{\UTFK{BC1B}}%
+\DeclareUnicodeCharacter{BC1C}{\UTFK{BC1C}}%
+\DeclareUnicodeCharacter{BC1D}{\UTFK{BC1D}}%
+\DeclareUnicodeCharacter{BC1E}{\UTFK{BC1E}}%
+\DeclareUnicodeCharacter{BC1F}{\UTFK{BC1F}}%
+\DeclareUnicodeCharacter{BC20}{\UTFK{BC20}}%
+\DeclareUnicodeCharacter{BC21}{\UTFK{BC21}}%
+\DeclareUnicodeCharacter{BC22}{\UTFK{BC22}}%
+\DeclareUnicodeCharacter{BC23}{\UTFK{BC23}}%
+\DeclareUnicodeCharacter{BC24}{\UTFK{BC24}}%
+\DeclareUnicodeCharacter{BC25}{\UTFK{BC25}}%
+\DeclareUnicodeCharacter{BC26}{\UTFK{BC26}}%
+\DeclareUnicodeCharacter{BC27}{\UTFK{BC27}}%
+\DeclareUnicodeCharacter{BC28}{\UTFK{BC28}}%
+\DeclareUnicodeCharacter{BC29}{\UTFK{BC29}}%
+\DeclareUnicodeCharacter{BC2A}{\UTFK{BC2A}}%
+\DeclareUnicodeCharacter{BC2B}{\UTFK{BC2B}}%
+\DeclareUnicodeCharacter{BC2C}{\UTFK{BC2C}}%
+\DeclareUnicodeCharacter{BC2D}{\UTFK{BC2D}}%
+\DeclareUnicodeCharacter{BC2E}{\UTFK{BC2E}}%
+\DeclareUnicodeCharacter{BC2F}{\UTFK{BC2F}}%
+\DeclareUnicodeCharacter{BC30}{\UTFK{BC30}}%
+\DeclareUnicodeCharacter{BC31}{\UTFK{BC31}}%
+\DeclareUnicodeCharacter{BC32}{\UTFK{BC32}}%
+\DeclareUnicodeCharacter{BC33}{\UTFK{BC33}}%
+\DeclareUnicodeCharacter{BC34}{\UTFK{BC34}}%
+\DeclareUnicodeCharacter{BC35}{\UTFK{BC35}}%
+\DeclareUnicodeCharacter{BC36}{\UTFK{BC36}}%
+\DeclareUnicodeCharacter{BC37}{\UTFK{BC37}}%
+\DeclareUnicodeCharacter{BC38}{\UTFK{BC38}}%
+\DeclareUnicodeCharacter{BC39}{\UTFK{BC39}}%
+\DeclareUnicodeCharacter{BC3A}{\UTFK{BC3A}}%
+\DeclareUnicodeCharacter{BC3B}{\UTFK{BC3B}}%
+\DeclareUnicodeCharacter{BC3C}{\UTFK{BC3C}}%
+\DeclareUnicodeCharacter{BC3D}{\UTFK{BC3D}}%
+\DeclareUnicodeCharacter{BC3E}{\UTFK{BC3E}}%
+\DeclareUnicodeCharacter{BC3F}{\UTFK{BC3F}}%
+\DeclareUnicodeCharacter{BC40}{\UTFK{BC40}}%
+\DeclareUnicodeCharacter{BC41}{\UTFK{BC41}}%
+\DeclareUnicodeCharacter{BC42}{\UTFK{BC42}}%
+\DeclareUnicodeCharacter{BC43}{\UTFK{BC43}}%
+\DeclareUnicodeCharacter{BC44}{\UTFK{BC44}}%
+\DeclareUnicodeCharacter{BC45}{\UTFK{BC45}}%
+\DeclareUnicodeCharacter{BC46}{\UTFK{BC46}}%
+\DeclareUnicodeCharacter{BC47}{\UTFK{BC47}}%
+\DeclareUnicodeCharacter{BC48}{\UTFK{BC48}}%
+\DeclareUnicodeCharacter{BC49}{\UTFK{BC49}}%
+\DeclareUnicodeCharacter{BC4A}{\UTFK{BC4A}}%
+\DeclareUnicodeCharacter{BC4B}{\UTFK{BC4B}}%
+\DeclareUnicodeCharacter{BC4C}{\UTFK{BC4C}}%
+\DeclareUnicodeCharacter{BC4D}{\UTFK{BC4D}}%
+\DeclareUnicodeCharacter{BC4E}{\UTFK{BC4E}}%
+\DeclareUnicodeCharacter{BC4F}{\UTFK{BC4F}}%
+\DeclareUnicodeCharacter{BC50}{\UTFK{BC50}}%
+\DeclareUnicodeCharacter{BC51}{\UTFK{BC51}}%
+\DeclareUnicodeCharacter{BC52}{\UTFK{BC52}}%
+\DeclareUnicodeCharacter{BC53}{\UTFK{BC53}}%
+\DeclareUnicodeCharacter{BC54}{\UTFK{BC54}}%
+\DeclareUnicodeCharacter{BC55}{\UTFK{BC55}}%
+\DeclareUnicodeCharacter{BC56}{\UTFK{BC56}}%
+\DeclareUnicodeCharacter{BC57}{\UTFK{BC57}}%
+\DeclareUnicodeCharacter{BC58}{\UTFK{BC58}}%
+\DeclareUnicodeCharacter{BC59}{\UTFK{BC59}}%
+\DeclareUnicodeCharacter{BC5A}{\UTFK{BC5A}}%
+\DeclareUnicodeCharacter{BC5B}{\UTFK{BC5B}}%
+\DeclareUnicodeCharacter{BC5C}{\UTFK{BC5C}}%
+\DeclareUnicodeCharacter{BC5D}{\UTFK{BC5D}}%
+\DeclareUnicodeCharacter{BC5E}{\UTFK{BC5E}}%
+\DeclareUnicodeCharacter{BC5F}{\UTFK{BC5F}}%
+\DeclareUnicodeCharacter{BC60}{\UTFK{BC60}}%
+\DeclareUnicodeCharacter{BC61}{\UTFK{BC61}}%
+\DeclareUnicodeCharacter{BC62}{\UTFK{BC62}}%
+\DeclareUnicodeCharacter{BC63}{\UTFK{BC63}}%
+\DeclareUnicodeCharacter{BC64}{\UTFK{BC64}}%
+\DeclareUnicodeCharacter{BC65}{\UTFK{BC65}}%
+\DeclareUnicodeCharacter{BC66}{\UTFK{BC66}}%
+\DeclareUnicodeCharacter{BC67}{\UTFK{BC67}}%
+\DeclareUnicodeCharacter{BC68}{\UTFK{BC68}}%
+\DeclareUnicodeCharacter{BC69}{\UTFK{BC69}}%
+\DeclareUnicodeCharacter{BC6A}{\UTFK{BC6A}}%
+\DeclareUnicodeCharacter{BC6B}{\UTFK{BC6B}}%
+\DeclareUnicodeCharacter{BC6C}{\UTFK{BC6C}}%
+\DeclareUnicodeCharacter{BC6D}{\UTFK{BC6D}}%
+\DeclareUnicodeCharacter{BC6E}{\UTFK{BC6E}}%
+\DeclareUnicodeCharacter{BC6F}{\UTFK{BC6F}}%
+\DeclareUnicodeCharacter{BC70}{\UTFK{BC70}}%
+\DeclareUnicodeCharacter{BC71}{\UTFK{BC71}}%
+\DeclareUnicodeCharacter{BC72}{\UTFK{BC72}}%
+\DeclareUnicodeCharacter{BC73}{\UTFK{BC73}}%
+\DeclareUnicodeCharacter{BC74}{\UTFK{BC74}}%
+\DeclareUnicodeCharacter{BC75}{\UTFK{BC75}}%
+\DeclareUnicodeCharacter{BC76}{\UTFK{BC76}}%
+\DeclareUnicodeCharacter{BC77}{\UTFK{BC77}}%
+\DeclareUnicodeCharacter{BC78}{\UTFK{BC78}}%
+\DeclareUnicodeCharacter{BC79}{\UTFK{BC79}}%
+\DeclareUnicodeCharacter{BC7A}{\UTFK{BC7A}}%
+\DeclareUnicodeCharacter{BC7B}{\UTFK{BC7B}}%
+\DeclareUnicodeCharacter{BC7C}{\UTFK{BC7C}}%
+\DeclareUnicodeCharacter{BC7D}{\UTFK{BC7D}}%
+\DeclareUnicodeCharacter{BC7E}{\UTFK{BC7E}}%
+\DeclareUnicodeCharacter{BC7F}{\UTFK{BC7F}}%
+\DeclareUnicodeCharacter{BC80}{\UTFK{BC80}}%
+\DeclareUnicodeCharacter{BC81}{\UTFK{BC81}}%
+\DeclareUnicodeCharacter{BC82}{\UTFK{BC82}}%
+\DeclareUnicodeCharacter{BC83}{\UTFK{BC83}}%
+\DeclareUnicodeCharacter{BC84}{\UTFK{BC84}}%
+\DeclareUnicodeCharacter{BC85}{\UTFK{BC85}}%
+\DeclareUnicodeCharacter{BC86}{\UTFK{BC86}}%
+\DeclareUnicodeCharacter{BC87}{\UTFK{BC87}}%
+\DeclareUnicodeCharacter{BC88}{\UTFK{BC88}}%
+\DeclareUnicodeCharacter{BC89}{\UTFK{BC89}}%
+\DeclareUnicodeCharacter{BC8A}{\UTFK{BC8A}}%
+\DeclareUnicodeCharacter{BC8B}{\UTFK{BC8B}}%
+\DeclareUnicodeCharacter{BC8C}{\UTFK{BC8C}}%
+\DeclareUnicodeCharacter{BC8D}{\UTFK{BC8D}}%
+\DeclareUnicodeCharacter{BC8E}{\UTFK{BC8E}}%
+\DeclareUnicodeCharacter{BC8F}{\UTFK{BC8F}}%
+\DeclareUnicodeCharacter{BC90}{\UTFK{BC90}}%
+\DeclareUnicodeCharacter{BC91}{\UTFK{BC91}}%
+\DeclareUnicodeCharacter{BC92}{\UTFK{BC92}}%
+\DeclareUnicodeCharacter{BC93}{\UTFK{BC93}}%
+\DeclareUnicodeCharacter{BC94}{\UTFK{BC94}}%
+\DeclareUnicodeCharacter{BC95}{\UTFK{BC95}}%
+\DeclareUnicodeCharacter{BC96}{\UTFK{BC96}}%
+\DeclareUnicodeCharacter{BC97}{\UTFK{BC97}}%
+\DeclareUnicodeCharacter{BC98}{\UTFK{BC98}}%
+\DeclareUnicodeCharacter{BC99}{\UTFK{BC99}}%
+\DeclareUnicodeCharacter{BC9A}{\UTFK{BC9A}}%
+\DeclareUnicodeCharacter{BC9B}{\UTFK{BC9B}}%
+\DeclareUnicodeCharacter{BC9C}{\UTFK{BC9C}}%
+\DeclareUnicodeCharacter{BC9D}{\UTFK{BC9D}}%
+\DeclareUnicodeCharacter{BC9E}{\UTFK{BC9E}}%
+\DeclareUnicodeCharacter{BC9F}{\UTFK{BC9F}}%
+\DeclareUnicodeCharacter{BCA0}{\UTFK{BCA0}}%
+\DeclareUnicodeCharacter{BCA1}{\UTFK{BCA1}}%
+\DeclareUnicodeCharacter{BCA2}{\UTFK{BCA2}}%
+\DeclareUnicodeCharacter{BCA3}{\UTFK{BCA3}}%
+\DeclareUnicodeCharacter{BCA4}{\UTFK{BCA4}}%
+\DeclareUnicodeCharacter{BCA5}{\UTFK{BCA5}}%
+\DeclareUnicodeCharacter{BCA6}{\UTFK{BCA6}}%
+\DeclareUnicodeCharacter{BCA7}{\UTFK{BCA7}}%
+\DeclareUnicodeCharacter{BCA8}{\UTFK{BCA8}}%
+\DeclareUnicodeCharacter{BCA9}{\UTFK{BCA9}}%
+\DeclareUnicodeCharacter{BCAA}{\UTFK{BCAA}}%
+\DeclareUnicodeCharacter{BCAB}{\UTFK{BCAB}}%
+\DeclareUnicodeCharacter{BCAC}{\UTFK{BCAC}}%
+\DeclareUnicodeCharacter{BCAD}{\UTFK{BCAD}}%
+\DeclareUnicodeCharacter{BCAE}{\UTFK{BCAE}}%
+\DeclareUnicodeCharacter{BCAF}{\UTFK{BCAF}}%
+\DeclareUnicodeCharacter{BCB0}{\UTFK{BCB0}}%
+\DeclareUnicodeCharacter{BCB1}{\UTFK{BCB1}}%
+\DeclareUnicodeCharacter{BCB2}{\UTFK{BCB2}}%
+\DeclareUnicodeCharacter{BCB3}{\UTFK{BCB3}}%
+\DeclareUnicodeCharacter{BCB4}{\UTFK{BCB4}}%
+\DeclareUnicodeCharacter{BCB5}{\UTFK{BCB5}}%
+\DeclareUnicodeCharacter{BCB6}{\UTFK{BCB6}}%
+\DeclareUnicodeCharacter{BCB7}{\UTFK{BCB7}}%
+\DeclareUnicodeCharacter{BCB8}{\UTFK{BCB8}}%
+\DeclareUnicodeCharacter{BCB9}{\UTFK{BCB9}}%
+\DeclareUnicodeCharacter{BCBA}{\UTFK{BCBA}}%
+\DeclareUnicodeCharacter{BCBB}{\UTFK{BCBB}}%
+\DeclareUnicodeCharacter{BCBC}{\UTFK{BCBC}}%
+\DeclareUnicodeCharacter{BCBD}{\UTFK{BCBD}}%
+\DeclareUnicodeCharacter{BCBE}{\UTFK{BCBE}}%
+\DeclareUnicodeCharacter{BCBF}{\UTFK{BCBF}}%
+\DeclareUnicodeCharacter{BCC0}{\UTFK{BCC0}}%
+\DeclareUnicodeCharacter{BCC1}{\UTFK{BCC1}}%
+\DeclareUnicodeCharacter{BCC2}{\UTFK{BCC2}}%
+\DeclareUnicodeCharacter{BCC3}{\UTFK{BCC3}}%
+\DeclareUnicodeCharacter{BCC4}{\UTFK{BCC4}}%
+\DeclareUnicodeCharacter{BCC5}{\UTFK{BCC5}}%
+\DeclareUnicodeCharacter{BCC6}{\UTFK{BCC6}}%
+\DeclareUnicodeCharacter{BCC7}{\UTFK{BCC7}}%
+\DeclareUnicodeCharacter{BCC8}{\UTFK{BCC8}}%
+\DeclareUnicodeCharacter{BCC9}{\UTFK{BCC9}}%
+\DeclareUnicodeCharacter{BCCA}{\UTFK{BCCA}}%
+\DeclareUnicodeCharacter{BCCB}{\UTFK{BCCB}}%
+\DeclareUnicodeCharacter{BCCC}{\UTFK{BCCC}}%
+\DeclareUnicodeCharacter{BCCD}{\UTFK{BCCD}}%
+\DeclareUnicodeCharacter{BCCE}{\UTFK{BCCE}}%
+\DeclareUnicodeCharacter{BCCF}{\UTFK{BCCF}}%
+\DeclareUnicodeCharacter{BCD0}{\UTFK{BCD0}}%
+\DeclareUnicodeCharacter{BCD1}{\UTFK{BCD1}}%
+\DeclareUnicodeCharacter{BCD2}{\UTFK{BCD2}}%
+\DeclareUnicodeCharacter{BCD3}{\UTFK{BCD3}}%
+\DeclareUnicodeCharacter{BCD4}{\UTFK{BCD4}}%
+\DeclareUnicodeCharacter{BCD5}{\UTFK{BCD5}}%
+\DeclareUnicodeCharacter{BCD6}{\UTFK{BCD6}}%
+\DeclareUnicodeCharacter{BCD7}{\UTFK{BCD7}}%
+\DeclareUnicodeCharacter{BCD8}{\UTFK{BCD8}}%
+\DeclareUnicodeCharacter{BCD9}{\UTFK{BCD9}}%
+\DeclareUnicodeCharacter{BCDA}{\UTFK{BCDA}}%
+\DeclareUnicodeCharacter{BCDB}{\UTFK{BCDB}}%
+\DeclareUnicodeCharacter{BCDC}{\UTFK{BCDC}}%
+\DeclareUnicodeCharacter{BCDD}{\UTFK{BCDD}}%
+\DeclareUnicodeCharacter{BCDE}{\UTFK{BCDE}}%
+\DeclareUnicodeCharacter{BCDF}{\UTFK{BCDF}}%
+\DeclareUnicodeCharacter{BCE0}{\UTFK{BCE0}}%
+\DeclareUnicodeCharacter{BCE1}{\UTFK{BCE1}}%
+\DeclareUnicodeCharacter{BCE2}{\UTFK{BCE2}}%
+\DeclareUnicodeCharacter{BCE3}{\UTFK{BCE3}}%
+\DeclareUnicodeCharacter{BCE4}{\UTFK{BCE4}}%
+\DeclareUnicodeCharacter{BCE5}{\UTFK{BCE5}}%
+\DeclareUnicodeCharacter{BCE6}{\UTFK{BCE6}}%
+\DeclareUnicodeCharacter{BCE7}{\UTFK{BCE7}}%
+\DeclareUnicodeCharacter{BCE8}{\UTFK{BCE8}}%
+\DeclareUnicodeCharacter{BCE9}{\UTFK{BCE9}}%
+\DeclareUnicodeCharacter{BCEA}{\UTFK{BCEA}}%
+\DeclareUnicodeCharacter{BCEB}{\UTFK{BCEB}}%
+\DeclareUnicodeCharacter{BCEC}{\UTFK{BCEC}}%
+\DeclareUnicodeCharacter{BCED}{\UTFK{BCED}}%
+\DeclareUnicodeCharacter{BCEE}{\UTFK{BCEE}}%
+\DeclareUnicodeCharacter{BCEF}{\UTFK{BCEF}}%
+\DeclareUnicodeCharacter{BCF0}{\UTFK{BCF0}}%
+\DeclareUnicodeCharacter{BCF1}{\UTFK{BCF1}}%
+\DeclareUnicodeCharacter{BCF2}{\UTFK{BCF2}}%
+\DeclareUnicodeCharacter{BCF3}{\UTFK{BCF3}}%
+\DeclareUnicodeCharacter{BCF4}{\UTFK{BCF4}}%
+\DeclareUnicodeCharacter{BCF5}{\UTFK{BCF5}}%
+\DeclareUnicodeCharacter{BCF6}{\UTFK{BCF6}}%
+\DeclareUnicodeCharacter{BCF7}{\UTFK{BCF7}}%
+\DeclareUnicodeCharacter{BCF8}{\UTFK{BCF8}}%
+\DeclareUnicodeCharacter{BCF9}{\UTFK{BCF9}}%
+\DeclareUnicodeCharacter{BCFA}{\UTFK{BCFA}}%
+\DeclareUnicodeCharacter{BCFB}{\UTFK{BCFB}}%
+\DeclareUnicodeCharacter{BCFC}{\UTFK{BCFC}}%
+\DeclareUnicodeCharacter{BCFD}{\UTFK{BCFD}}%
+\DeclareUnicodeCharacter{BCFE}{\UTFK{BCFE}}%
+\DeclareUnicodeCharacter{BCFF}{\UTFK{BCFF}}%
+\DeclareUnicodeCharacter{BD00}{\UTFK{BD00}}%
+\DeclareUnicodeCharacter{BD01}{\UTFK{BD01}}%
+\DeclareUnicodeCharacter{BD02}{\UTFK{BD02}}%
+\DeclareUnicodeCharacter{BD03}{\UTFK{BD03}}%
+\DeclareUnicodeCharacter{BD04}{\UTFK{BD04}}%
+\DeclareUnicodeCharacter{BD05}{\UTFK{BD05}}%
+\DeclareUnicodeCharacter{BD06}{\UTFK{BD06}}%
+\DeclareUnicodeCharacter{BD07}{\UTFK{BD07}}%
+\DeclareUnicodeCharacter{BD08}{\UTFK{BD08}}%
+\DeclareUnicodeCharacter{BD09}{\UTFK{BD09}}%
+\DeclareUnicodeCharacter{BD0A}{\UTFK{BD0A}}%
+\DeclareUnicodeCharacter{BD0B}{\UTFK{BD0B}}%
+\DeclareUnicodeCharacter{BD0C}{\UTFK{BD0C}}%
+\DeclareUnicodeCharacter{BD0D}{\UTFK{BD0D}}%
+\DeclareUnicodeCharacter{BD0E}{\UTFK{BD0E}}%
+\DeclareUnicodeCharacter{BD0F}{\UTFK{BD0F}}%
+\DeclareUnicodeCharacter{BD10}{\UTFK{BD10}}%
+\DeclareUnicodeCharacter{BD11}{\UTFK{BD11}}%
+\DeclareUnicodeCharacter{BD12}{\UTFK{BD12}}%
+\DeclareUnicodeCharacter{BD13}{\UTFK{BD13}}%
+\DeclareUnicodeCharacter{BD14}{\UTFK{BD14}}%
+\DeclareUnicodeCharacter{BD15}{\UTFK{BD15}}%
+\DeclareUnicodeCharacter{BD16}{\UTFK{BD16}}%
+\DeclareUnicodeCharacter{BD17}{\UTFK{BD17}}%
+\DeclareUnicodeCharacter{BD18}{\UTFK{BD18}}%
+\DeclareUnicodeCharacter{BD19}{\UTFK{BD19}}%
+\DeclareUnicodeCharacter{BD1A}{\UTFK{BD1A}}%
+\DeclareUnicodeCharacter{BD1B}{\UTFK{BD1B}}%
+\DeclareUnicodeCharacter{BD1C}{\UTFK{BD1C}}%
+\DeclareUnicodeCharacter{BD1D}{\UTFK{BD1D}}%
+\DeclareUnicodeCharacter{BD1E}{\UTFK{BD1E}}%
+\DeclareUnicodeCharacter{BD1F}{\UTFK{BD1F}}%
+\DeclareUnicodeCharacter{BD20}{\UTFK{BD20}}%
+\DeclareUnicodeCharacter{BD21}{\UTFK{BD21}}%
+\DeclareUnicodeCharacter{BD22}{\UTFK{BD22}}%
+\DeclareUnicodeCharacter{BD23}{\UTFK{BD23}}%
+\DeclareUnicodeCharacter{BD24}{\UTFK{BD24}}%
+\DeclareUnicodeCharacter{BD25}{\UTFK{BD25}}%
+\DeclareUnicodeCharacter{BD26}{\UTFK{BD26}}%
+\DeclareUnicodeCharacter{BD27}{\UTFK{BD27}}%
+\DeclareUnicodeCharacter{BD28}{\UTFK{BD28}}%
+\DeclareUnicodeCharacter{BD29}{\UTFK{BD29}}%
+\DeclareUnicodeCharacter{BD2A}{\UTFK{BD2A}}%
+\DeclareUnicodeCharacter{BD2B}{\UTFK{BD2B}}%
+\DeclareUnicodeCharacter{BD2C}{\UTFK{BD2C}}%
+\DeclareUnicodeCharacter{BD2D}{\UTFK{BD2D}}%
+\DeclareUnicodeCharacter{BD2E}{\UTFK{BD2E}}%
+\DeclareUnicodeCharacter{BD2F}{\UTFK{BD2F}}%
+\DeclareUnicodeCharacter{BD30}{\UTFK{BD30}}%
+\DeclareUnicodeCharacter{BD31}{\UTFK{BD31}}%
+\DeclareUnicodeCharacter{BD32}{\UTFK{BD32}}%
+\DeclareUnicodeCharacter{BD33}{\UTFK{BD33}}%
+\DeclareUnicodeCharacter{BD34}{\UTFK{BD34}}%
+\DeclareUnicodeCharacter{BD35}{\UTFK{BD35}}%
+\DeclareUnicodeCharacter{BD36}{\UTFK{BD36}}%
+\DeclareUnicodeCharacter{BD37}{\UTFK{BD37}}%
+\DeclareUnicodeCharacter{BD38}{\UTFK{BD38}}%
+\DeclareUnicodeCharacter{BD39}{\UTFK{BD39}}%
+\DeclareUnicodeCharacter{BD3A}{\UTFK{BD3A}}%
+\DeclareUnicodeCharacter{BD3B}{\UTFK{BD3B}}%
+\DeclareUnicodeCharacter{BD3C}{\UTFK{BD3C}}%
+\DeclareUnicodeCharacter{BD3D}{\UTFK{BD3D}}%
+\DeclareUnicodeCharacter{BD3E}{\UTFK{BD3E}}%
+\DeclareUnicodeCharacter{BD3F}{\UTFK{BD3F}}%
+\DeclareUnicodeCharacter{BD40}{\UTFK{BD40}}%
+\DeclareUnicodeCharacter{BD41}{\UTFK{BD41}}%
+\DeclareUnicodeCharacter{BD42}{\UTFK{BD42}}%
+\DeclareUnicodeCharacter{BD43}{\UTFK{BD43}}%
+\DeclareUnicodeCharacter{BD44}{\UTFK{BD44}}%
+\DeclareUnicodeCharacter{BD45}{\UTFK{BD45}}%
+\DeclareUnicodeCharacter{BD46}{\UTFK{BD46}}%
+\DeclareUnicodeCharacter{BD47}{\UTFK{BD47}}%
+\DeclareUnicodeCharacter{BD48}{\UTFK{BD48}}%
+\DeclareUnicodeCharacter{BD49}{\UTFK{BD49}}%
+\DeclareUnicodeCharacter{BD4A}{\UTFK{BD4A}}%
+\DeclareUnicodeCharacter{BD4B}{\UTFK{BD4B}}%
+\DeclareUnicodeCharacter{BD4C}{\UTFK{BD4C}}%
+\DeclareUnicodeCharacter{BD4D}{\UTFK{BD4D}}%
+\DeclareUnicodeCharacter{BD4E}{\UTFK{BD4E}}%
+\DeclareUnicodeCharacter{BD4F}{\UTFK{BD4F}}%
+\DeclareUnicodeCharacter{BD50}{\UTFK{BD50}}%
+\DeclareUnicodeCharacter{BD51}{\UTFK{BD51}}%
+\DeclareUnicodeCharacter{BD52}{\UTFK{BD52}}%
+\DeclareUnicodeCharacter{BD53}{\UTFK{BD53}}%
+\DeclareUnicodeCharacter{BD54}{\UTFK{BD54}}%
+\DeclareUnicodeCharacter{BD55}{\UTFK{BD55}}%
+\DeclareUnicodeCharacter{BD56}{\UTFK{BD56}}%
+\DeclareUnicodeCharacter{BD57}{\UTFK{BD57}}%
+\DeclareUnicodeCharacter{BD58}{\UTFK{BD58}}%
+\DeclareUnicodeCharacter{BD59}{\UTFK{BD59}}%
+\DeclareUnicodeCharacter{BD5A}{\UTFK{BD5A}}%
+\DeclareUnicodeCharacter{BD5B}{\UTFK{BD5B}}%
+\DeclareUnicodeCharacter{BD5C}{\UTFK{BD5C}}%
+\DeclareUnicodeCharacter{BD5D}{\UTFK{BD5D}}%
+\DeclareUnicodeCharacter{BD5E}{\UTFK{BD5E}}%
+\DeclareUnicodeCharacter{BD5F}{\UTFK{BD5F}}%
+\DeclareUnicodeCharacter{BD60}{\UTFK{BD60}}%
+\DeclareUnicodeCharacter{BD61}{\UTFK{BD61}}%
+\DeclareUnicodeCharacter{BD62}{\UTFK{BD62}}%
+\DeclareUnicodeCharacter{BD63}{\UTFK{BD63}}%
+\DeclareUnicodeCharacter{BD64}{\UTFK{BD64}}%
+\DeclareUnicodeCharacter{BD65}{\UTFK{BD65}}%
+\DeclareUnicodeCharacter{BD66}{\UTFK{BD66}}%
+\DeclareUnicodeCharacter{BD67}{\UTFK{BD67}}%
+\DeclareUnicodeCharacter{BD68}{\UTFK{BD68}}%
+\DeclareUnicodeCharacter{BD69}{\UTFK{BD69}}%
+\DeclareUnicodeCharacter{BD6A}{\UTFK{BD6A}}%
+\DeclareUnicodeCharacter{BD6B}{\UTFK{BD6B}}%
+\DeclareUnicodeCharacter{BD6C}{\UTFK{BD6C}}%
+\DeclareUnicodeCharacter{BD6D}{\UTFK{BD6D}}%
+\DeclareUnicodeCharacter{BD6E}{\UTFK{BD6E}}%
+\DeclareUnicodeCharacter{BD6F}{\UTFK{BD6F}}%
+\DeclareUnicodeCharacter{BD70}{\UTFK{BD70}}%
+\DeclareUnicodeCharacter{BD71}{\UTFK{BD71}}%
+\DeclareUnicodeCharacter{BD72}{\UTFK{BD72}}%
+\DeclareUnicodeCharacter{BD73}{\UTFK{BD73}}%
+\DeclareUnicodeCharacter{BD74}{\UTFK{BD74}}%
+\DeclareUnicodeCharacter{BD75}{\UTFK{BD75}}%
+\DeclareUnicodeCharacter{BD76}{\UTFK{BD76}}%
+\DeclareUnicodeCharacter{BD77}{\UTFK{BD77}}%
+\DeclareUnicodeCharacter{BD78}{\UTFK{BD78}}%
+\DeclareUnicodeCharacter{BD79}{\UTFK{BD79}}%
+\DeclareUnicodeCharacter{BD7A}{\UTFK{BD7A}}%
+\DeclareUnicodeCharacter{BD7B}{\UTFK{BD7B}}%
+\DeclareUnicodeCharacter{BD7C}{\UTFK{BD7C}}%
+\DeclareUnicodeCharacter{BD7D}{\UTFK{BD7D}}%
+\DeclareUnicodeCharacter{BD7E}{\UTFK{BD7E}}%
+\DeclareUnicodeCharacter{BD7F}{\UTFK{BD7F}}%
+\DeclareUnicodeCharacter{BD80}{\UTFK{BD80}}%
+\DeclareUnicodeCharacter{BD81}{\UTFK{BD81}}%
+\DeclareUnicodeCharacter{BD82}{\UTFK{BD82}}%
+\DeclareUnicodeCharacter{BD83}{\UTFK{BD83}}%
+\DeclareUnicodeCharacter{BD84}{\UTFK{BD84}}%
+\DeclareUnicodeCharacter{BD85}{\UTFK{BD85}}%
+\DeclareUnicodeCharacter{BD86}{\UTFK{BD86}}%
+\DeclareUnicodeCharacter{BD87}{\UTFK{BD87}}%
+\DeclareUnicodeCharacter{BD88}{\UTFK{BD88}}%
+\DeclareUnicodeCharacter{BD89}{\UTFK{BD89}}%
+\DeclareUnicodeCharacter{BD8A}{\UTFK{BD8A}}%
+\DeclareUnicodeCharacter{BD8B}{\UTFK{BD8B}}%
+\DeclareUnicodeCharacter{BD8C}{\UTFK{BD8C}}%
+\DeclareUnicodeCharacter{BD8D}{\UTFK{BD8D}}%
+\DeclareUnicodeCharacter{BD8E}{\UTFK{BD8E}}%
+\DeclareUnicodeCharacter{BD8F}{\UTFK{BD8F}}%
+\DeclareUnicodeCharacter{BD90}{\UTFK{BD90}}%
+\DeclareUnicodeCharacter{BD91}{\UTFK{BD91}}%
+\DeclareUnicodeCharacter{BD92}{\UTFK{BD92}}%
+\DeclareUnicodeCharacter{BD93}{\UTFK{BD93}}%
+\DeclareUnicodeCharacter{BD94}{\UTFK{BD94}}%
+\DeclareUnicodeCharacter{BD95}{\UTFK{BD95}}%
+\DeclareUnicodeCharacter{BD96}{\UTFK{BD96}}%
+\DeclareUnicodeCharacter{BD97}{\UTFK{BD97}}%
+\DeclareUnicodeCharacter{BD98}{\UTFK{BD98}}%
+\DeclareUnicodeCharacter{BD99}{\UTFK{BD99}}%
+\DeclareUnicodeCharacter{BD9A}{\UTFK{BD9A}}%
+\DeclareUnicodeCharacter{BD9B}{\UTFK{BD9B}}%
+\DeclareUnicodeCharacter{BD9C}{\UTFK{BD9C}}%
+\DeclareUnicodeCharacter{BD9D}{\UTFK{BD9D}}%
+\DeclareUnicodeCharacter{BD9E}{\UTFK{BD9E}}%
+\DeclareUnicodeCharacter{BD9F}{\UTFK{BD9F}}%
+\DeclareUnicodeCharacter{BDA0}{\UTFK{BDA0}}%
+\DeclareUnicodeCharacter{BDA1}{\UTFK{BDA1}}%
+\DeclareUnicodeCharacter{BDA2}{\UTFK{BDA2}}%
+\DeclareUnicodeCharacter{BDA3}{\UTFK{BDA3}}%
+\DeclareUnicodeCharacter{BDA4}{\UTFK{BDA4}}%
+\DeclareUnicodeCharacter{BDA5}{\UTFK{BDA5}}%
+\DeclareUnicodeCharacter{BDA6}{\UTFK{BDA6}}%
+\DeclareUnicodeCharacter{BDA7}{\UTFK{BDA7}}%
+\DeclareUnicodeCharacter{BDA8}{\UTFK{BDA8}}%
+\DeclareUnicodeCharacter{BDA9}{\UTFK{BDA9}}%
+\DeclareUnicodeCharacter{BDAA}{\UTFK{BDAA}}%
+\DeclareUnicodeCharacter{BDAB}{\UTFK{BDAB}}%
+\DeclareUnicodeCharacter{BDAC}{\UTFK{BDAC}}%
+\DeclareUnicodeCharacter{BDAD}{\UTFK{BDAD}}%
+\DeclareUnicodeCharacter{BDAE}{\UTFK{BDAE}}%
+\DeclareUnicodeCharacter{BDAF}{\UTFK{BDAF}}%
+\DeclareUnicodeCharacter{BDB0}{\UTFK{BDB0}}%
+\DeclareUnicodeCharacter{BDB1}{\UTFK{BDB1}}%
+\DeclareUnicodeCharacter{BDB2}{\UTFK{BDB2}}%
+\DeclareUnicodeCharacter{BDB3}{\UTFK{BDB3}}%
+\DeclareUnicodeCharacter{BDB4}{\UTFK{BDB4}}%
+\DeclareUnicodeCharacter{BDB5}{\UTFK{BDB5}}%
+\DeclareUnicodeCharacter{BDB6}{\UTFK{BDB6}}%
+\DeclareUnicodeCharacter{BDB7}{\UTFK{BDB7}}%
+\DeclareUnicodeCharacter{BDB8}{\UTFK{BDB8}}%
+\DeclareUnicodeCharacter{BDB9}{\UTFK{BDB9}}%
+\DeclareUnicodeCharacter{BDBA}{\UTFK{BDBA}}%
+\DeclareUnicodeCharacter{BDBB}{\UTFK{BDBB}}%
+\DeclareUnicodeCharacter{BDBC}{\UTFK{BDBC}}%
+\DeclareUnicodeCharacter{BDBD}{\UTFK{BDBD}}%
+\DeclareUnicodeCharacter{BDBE}{\UTFK{BDBE}}%
+\DeclareUnicodeCharacter{BDBF}{\UTFK{BDBF}}%
+\DeclareUnicodeCharacter{BDC0}{\UTFK{BDC0}}%
+\DeclareUnicodeCharacter{BDC1}{\UTFK{BDC1}}%
+\DeclareUnicodeCharacter{BDC2}{\UTFK{BDC2}}%
+\DeclareUnicodeCharacter{BDC3}{\UTFK{BDC3}}%
+\DeclareUnicodeCharacter{BDC4}{\UTFK{BDC4}}%
+\DeclareUnicodeCharacter{BDC5}{\UTFK{BDC5}}%
+\DeclareUnicodeCharacter{BDC6}{\UTFK{BDC6}}%
+\DeclareUnicodeCharacter{BDC7}{\UTFK{BDC7}}%
+\DeclareUnicodeCharacter{BDC8}{\UTFK{BDC8}}%
+\DeclareUnicodeCharacter{BDC9}{\UTFK{BDC9}}%
+\DeclareUnicodeCharacter{BDCA}{\UTFK{BDCA}}%
+\DeclareUnicodeCharacter{BDCB}{\UTFK{BDCB}}%
+\DeclareUnicodeCharacter{BDCC}{\UTFK{BDCC}}%
+\DeclareUnicodeCharacter{BDCD}{\UTFK{BDCD}}%
+\DeclareUnicodeCharacter{BDCE}{\UTFK{BDCE}}%
+\DeclareUnicodeCharacter{BDCF}{\UTFK{BDCF}}%
+\DeclareUnicodeCharacter{BDD0}{\UTFK{BDD0}}%
+\DeclareUnicodeCharacter{BDD1}{\UTFK{BDD1}}%
+\DeclareUnicodeCharacter{BDD2}{\UTFK{BDD2}}%
+\DeclareUnicodeCharacter{BDD3}{\UTFK{BDD3}}%
+\DeclareUnicodeCharacter{BDD4}{\UTFK{BDD4}}%
+\DeclareUnicodeCharacter{BDD5}{\UTFK{BDD5}}%
+\DeclareUnicodeCharacter{BDD6}{\UTFK{BDD6}}%
+\DeclareUnicodeCharacter{BDD7}{\UTFK{BDD7}}%
+\DeclareUnicodeCharacter{BDD8}{\UTFK{BDD8}}%
+\DeclareUnicodeCharacter{BDD9}{\UTFK{BDD9}}%
+\DeclareUnicodeCharacter{BDDA}{\UTFK{BDDA}}%
+\DeclareUnicodeCharacter{BDDB}{\UTFK{BDDB}}%
+\DeclareUnicodeCharacter{BDDC}{\UTFK{BDDC}}%
+\DeclareUnicodeCharacter{BDDD}{\UTFK{BDDD}}%
+\DeclareUnicodeCharacter{BDDE}{\UTFK{BDDE}}%
+\DeclareUnicodeCharacter{BDDF}{\UTFK{BDDF}}%
+\DeclareUnicodeCharacter{BDE0}{\UTFK{BDE0}}%
+\DeclareUnicodeCharacter{BDE1}{\UTFK{BDE1}}%
+\DeclareUnicodeCharacter{BDE2}{\UTFK{BDE2}}%
+\DeclareUnicodeCharacter{BDE3}{\UTFK{BDE3}}%
+\DeclareUnicodeCharacter{BDE4}{\UTFK{BDE4}}%
+\DeclareUnicodeCharacter{BDE5}{\UTFK{BDE5}}%
+\DeclareUnicodeCharacter{BDE6}{\UTFK{BDE6}}%
+\DeclareUnicodeCharacter{BDE7}{\UTFK{BDE7}}%
+\DeclareUnicodeCharacter{BDE8}{\UTFK{BDE8}}%
+\DeclareUnicodeCharacter{BDE9}{\UTFK{BDE9}}%
+\DeclareUnicodeCharacter{BDEA}{\UTFK{BDEA}}%
+\DeclareUnicodeCharacter{BDEB}{\UTFK{BDEB}}%
+\DeclareUnicodeCharacter{BDEC}{\UTFK{BDEC}}%
+\DeclareUnicodeCharacter{BDED}{\UTFK{BDED}}%
+\DeclareUnicodeCharacter{BDEE}{\UTFK{BDEE}}%
+\DeclareUnicodeCharacter{BDEF}{\UTFK{BDEF}}%
+\DeclareUnicodeCharacter{BDF0}{\UTFK{BDF0}}%
+\DeclareUnicodeCharacter{BDF1}{\UTFK{BDF1}}%
+\DeclareUnicodeCharacter{BDF2}{\UTFK{BDF2}}%
+\DeclareUnicodeCharacter{BDF3}{\UTFK{BDF3}}%
+\DeclareUnicodeCharacter{BDF4}{\UTFK{BDF4}}%
+\DeclareUnicodeCharacter{BDF5}{\UTFK{BDF5}}%
+\DeclareUnicodeCharacter{BDF6}{\UTFK{BDF6}}%
+\DeclareUnicodeCharacter{BDF7}{\UTFK{BDF7}}%
+\DeclareUnicodeCharacter{BDF8}{\UTFK{BDF8}}%
+\DeclareUnicodeCharacter{BDF9}{\UTFK{BDF9}}%
+\DeclareUnicodeCharacter{BDFA}{\UTFK{BDFA}}%
+\DeclareUnicodeCharacter{BDFB}{\UTFK{BDFB}}%
+\DeclareUnicodeCharacter{BDFC}{\UTFK{BDFC}}%
+\DeclareUnicodeCharacter{BDFD}{\UTFK{BDFD}}%
+\DeclareUnicodeCharacter{BDFE}{\UTFK{BDFE}}%
+\DeclareUnicodeCharacter{BDFF}{\UTFK{BDFF}}%
+\DeclareUnicodeCharacter{BE00}{\UTFK{BE00}}%
+\DeclareUnicodeCharacter{BE01}{\UTFK{BE01}}%
+\DeclareUnicodeCharacter{BE02}{\UTFK{BE02}}%
+\DeclareUnicodeCharacter{BE03}{\UTFK{BE03}}%
+\DeclareUnicodeCharacter{BE04}{\UTFK{BE04}}%
+\DeclareUnicodeCharacter{BE05}{\UTFK{BE05}}%
+\DeclareUnicodeCharacter{BE06}{\UTFK{BE06}}%
+\DeclareUnicodeCharacter{BE07}{\UTFK{BE07}}%
+\DeclareUnicodeCharacter{BE08}{\UTFK{BE08}}%
+\DeclareUnicodeCharacter{BE09}{\UTFK{BE09}}%
+\DeclareUnicodeCharacter{BE0A}{\UTFK{BE0A}}%
+\DeclareUnicodeCharacter{BE0B}{\UTFK{BE0B}}%
+\DeclareUnicodeCharacter{BE0C}{\UTFK{BE0C}}%
+\DeclareUnicodeCharacter{BE0D}{\UTFK{BE0D}}%
+\DeclareUnicodeCharacter{BE0E}{\UTFK{BE0E}}%
+\DeclareUnicodeCharacter{BE0F}{\UTFK{BE0F}}%
+\DeclareUnicodeCharacter{BE10}{\UTFK{BE10}}%
+\DeclareUnicodeCharacter{BE11}{\UTFK{BE11}}%
+\DeclareUnicodeCharacter{BE12}{\UTFK{BE12}}%
+\DeclareUnicodeCharacter{BE13}{\UTFK{BE13}}%
+\DeclareUnicodeCharacter{BE14}{\UTFK{BE14}}%
+\DeclareUnicodeCharacter{BE15}{\UTFK{BE15}}%
+\DeclareUnicodeCharacter{BE16}{\UTFK{BE16}}%
+\DeclareUnicodeCharacter{BE17}{\UTFK{BE17}}%
+\DeclareUnicodeCharacter{BE18}{\UTFK{BE18}}%
+\DeclareUnicodeCharacter{BE19}{\UTFK{BE19}}%
+\DeclareUnicodeCharacter{BE1A}{\UTFK{BE1A}}%
+\DeclareUnicodeCharacter{BE1B}{\UTFK{BE1B}}%
+\DeclareUnicodeCharacter{BE1C}{\UTFK{BE1C}}%
+\DeclareUnicodeCharacter{BE1D}{\UTFK{BE1D}}%
+\DeclareUnicodeCharacter{BE1E}{\UTFK{BE1E}}%
+\DeclareUnicodeCharacter{BE1F}{\UTFK{BE1F}}%
+\DeclareUnicodeCharacter{BE20}{\UTFK{BE20}}%
+\DeclareUnicodeCharacter{BE21}{\UTFK{BE21}}%
+\DeclareUnicodeCharacter{BE22}{\UTFK{BE22}}%
+\DeclareUnicodeCharacter{BE23}{\UTFK{BE23}}%
+\DeclareUnicodeCharacter{BE24}{\UTFK{BE24}}%
+\DeclareUnicodeCharacter{BE25}{\UTFK{BE25}}%
+\DeclareUnicodeCharacter{BE26}{\UTFK{BE26}}%
+\DeclareUnicodeCharacter{BE27}{\UTFK{BE27}}%
+\DeclareUnicodeCharacter{BE28}{\UTFK{BE28}}%
+\DeclareUnicodeCharacter{BE29}{\UTFK{BE29}}%
+\DeclareUnicodeCharacter{BE2A}{\UTFK{BE2A}}%
+\DeclareUnicodeCharacter{BE2B}{\UTFK{BE2B}}%
+\DeclareUnicodeCharacter{BE2C}{\UTFK{BE2C}}%
+\DeclareUnicodeCharacter{BE2D}{\UTFK{BE2D}}%
+\DeclareUnicodeCharacter{BE2E}{\UTFK{BE2E}}%
+\DeclareUnicodeCharacter{BE2F}{\UTFK{BE2F}}%
+\DeclareUnicodeCharacter{BE30}{\UTFK{BE30}}%
+\DeclareUnicodeCharacter{BE31}{\UTFK{BE31}}%
+\DeclareUnicodeCharacter{BE32}{\UTFK{BE32}}%
+\DeclareUnicodeCharacter{BE33}{\UTFK{BE33}}%
+\DeclareUnicodeCharacter{BE34}{\UTFK{BE34}}%
+\DeclareUnicodeCharacter{BE35}{\UTFK{BE35}}%
+\DeclareUnicodeCharacter{BE36}{\UTFK{BE36}}%
+\DeclareUnicodeCharacter{BE37}{\UTFK{BE37}}%
+\DeclareUnicodeCharacter{BE38}{\UTFK{BE38}}%
+\DeclareUnicodeCharacter{BE39}{\UTFK{BE39}}%
+\DeclareUnicodeCharacter{BE3A}{\UTFK{BE3A}}%
+\DeclareUnicodeCharacter{BE3B}{\UTFK{BE3B}}%
+\DeclareUnicodeCharacter{BE3C}{\UTFK{BE3C}}%
+\DeclareUnicodeCharacter{BE3D}{\UTFK{BE3D}}%
+\DeclareUnicodeCharacter{BE3E}{\UTFK{BE3E}}%
+\DeclareUnicodeCharacter{BE3F}{\UTFK{BE3F}}%
+\DeclareUnicodeCharacter{BE40}{\UTFK{BE40}}%
+\DeclareUnicodeCharacter{BE41}{\UTFK{BE41}}%
+\DeclareUnicodeCharacter{BE42}{\UTFK{BE42}}%
+\DeclareUnicodeCharacter{BE43}{\UTFK{BE43}}%
+\DeclareUnicodeCharacter{BE44}{\UTFK{BE44}}%
+\DeclareUnicodeCharacter{BE45}{\UTFK{BE45}}%
+\DeclareUnicodeCharacter{BE46}{\UTFK{BE46}}%
+\DeclareUnicodeCharacter{BE47}{\UTFK{BE47}}%
+\DeclareUnicodeCharacter{BE48}{\UTFK{BE48}}%
+\DeclareUnicodeCharacter{BE49}{\UTFK{BE49}}%
+\DeclareUnicodeCharacter{BE4A}{\UTFK{BE4A}}%
+\DeclareUnicodeCharacter{BE4B}{\UTFK{BE4B}}%
+\DeclareUnicodeCharacter{BE4C}{\UTFK{BE4C}}%
+\DeclareUnicodeCharacter{BE4D}{\UTFK{BE4D}}%
+\DeclareUnicodeCharacter{BE4E}{\UTFK{BE4E}}%
+\DeclareUnicodeCharacter{BE4F}{\UTFK{BE4F}}%
+\DeclareUnicodeCharacter{BE50}{\UTFK{BE50}}%
+\DeclareUnicodeCharacter{BE51}{\UTFK{BE51}}%
+\DeclareUnicodeCharacter{BE52}{\UTFK{BE52}}%
+\DeclareUnicodeCharacter{BE53}{\UTFK{BE53}}%
+\DeclareUnicodeCharacter{BE54}{\UTFK{BE54}}%
+\DeclareUnicodeCharacter{BE55}{\UTFK{BE55}}%
+\DeclareUnicodeCharacter{BE56}{\UTFK{BE56}}%
+\DeclareUnicodeCharacter{BE57}{\UTFK{BE57}}%
+\DeclareUnicodeCharacter{BE58}{\UTFK{BE58}}%
+\DeclareUnicodeCharacter{BE59}{\UTFK{BE59}}%
+\DeclareUnicodeCharacter{BE5A}{\UTFK{BE5A}}%
+\DeclareUnicodeCharacter{BE5B}{\UTFK{BE5B}}%
+\DeclareUnicodeCharacter{BE5C}{\UTFK{BE5C}}%
+\DeclareUnicodeCharacter{BE5D}{\UTFK{BE5D}}%
+\DeclareUnicodeCharacter{BE5E}{\UTFK{BE5E}}%
+\DeclareUnicodeCharacter{BE5F}{\UTFK{BE5F}}%
+\DeclareUnicodeCharacter{BE60}{\UTFK{BE60}}%
+\DeclareUnicodeCharacter{BE61}{\UTFK{BE61}}%
+\DeclareUnicodeCharacter{BE62}{\UTFK{BE62}}%
+\DeclareUnicodeCharacter{BE63}{\UTFK{BE63}}%
+\DeclareUnicodeCharacter{BE64}{\UTFK{BE64}}%
+\DeclareUnicodeCharacter{BE65}{\UTFK{BE65}}%
+\DeclareUnicodeCharacter{BE66}{\UTFK{BE66}}%
+\DeclareUnicodeCharacter{BE67}{\UTFK{BE67}}%
+\DeclareUnicodeCharacter{BE68}{\UTFK{BE68}}%
+\DeclareUnicodeCharacter{BE69}{\UTFK{BE69}}%
+\DeclareUnicodeCharacter{BE6A}{\UTFK{BE6A}}%
+\DeclareUnicodeCharacter{BE6B}{\UTFK{BE6B}}%
+\DeclareUnicodeCharacter{BE6C}{\UTFK{BE6C}}%
+\DeclareUnicodeCharacter{BE6D}{\UTFK{BE6D}}%
+\DeclareUnicodeCharacter{BE6E}{\UTFK{BE6E}}%
+\DeclareUnicodeCharacter{BE6F}{\UTFK{BE6F}}%
+\DeclareUnicodeCharacter{BE70}{\UTFK{BE70}}%
+\DeclareUnicodeCharacter{BE71}{\UTFK{BE71}}%
+\DeclareUnicodeCharacter{BE72}{\UTFK{BE72}}%
+\DeclareUnicodeCharacter{BE73}{\UTFK{BE73}}%
+\DeclareUnicodeCharacter{BE74}{\UTFK{BE74}}%
+\DeclareUnicodeCharacter{BE75}{\UTFK{BE75}}%
+\DeclareUnicodeCharacter{BE76}{\UTFK{BE76}}%
+\DeclareUnicodeCharacter{BE77}{\UTFK{BE77}}%
+\DeclareUnicodeCharacter{BE78}{\UTFK{BE78}}%
+\DeclareUnicodeCharacter{BE79}{\UTFK{BE79}}%
+\DeclareUnicodeCharacter{BE7A}{\UTFK{BE7A}}%
+\DeclareUnicodeCharacter{BE7B}{\UTFK{BE7B}}%
+\DeclareUnicodeCharacter{BE7C}{\UTFK{BE7C}}%
+\DeclareUnicodeCharacter{BE7D}{\UTFK{BE7D}}%
+\DeclareUnicodeCharacter{BE7E}{\UTFK{BE7E}}%
+\DeclareUnicodeCharacter{BE7F}{\UTFK{BE7F}}%
+\DeclareUnicodeCharacter{BE80}{\UTFK{BE80}}%
+\DeclareUnicodeCharacter{BE81}{\UTFK{BE81}}%
+\DeclareUnicodeCharacter{BE82}{\UTFK{BE82}}%
+\DeclareUnicodeCharacter{BE83}{\UTFK{BE83}}%
+\DeclareUnicodeCharacter{BE84}{\UTFK{BE84}}%
+\DeclareUnicodeCharacter{BE85}{\UTFK{BE85}}%
+\DeclareUnicodeCharacter{BE86}{\UTFK{BE86}}%
+\DeclareUnicodeCharacter{BE87}{\UTFK{BE87}}%
+\DeclareUnicodeCharacter{BE88}{\UTFK{BE88}}%
+\DeclareUnicodeCharacter{BE89}{\UTFK{BE89}}%
+\DeclareUnicodeCharacter{BE8A}{\UTFK{BE8A}}%
+\DeclareUnicodeCharacter{BE8B}{\UTFK{BE8B}}%
+\DeclareUnicodeCharacter{BE8C}{\UTFK{BE8C}}%
+\DeclareUnicodeCharacter{BE8D}{\UTFK{BE8D}}%
+\DeclareUnicodeCharacter{BE8E}{\UTFK{BE8E}}%
+\DeclareUnicodeCharacter{BE8F}{\UTFK{BE8F}}%
+\DeclareUnicodeCharacter{BE90}{\UTFK{BE90}}%
+\DeclareUnicodeCharacter{BE91}{\UTFK{BE91}}%
+\DeclareUnicodeCharacter{BE92}{\UTFK{BE92}}%
+\DeclareUnicodeCharacter{BE93}{\UTFK{BE93}}%
+\DeclareUnicodeCharacter{BE94}{\UTFK{BE94}}%
+\DeclareUnicodeCharacter{BE95}{\UTFK{BE95}}%
+\DeclareUnicodeCharacter{BE96}{\UTFK{BE96}}%
+\DeclareUnicodeCharacter{BE97}{\UTFK{BE97}}%
+\DeclareUnicodeCharacter{BE98}{\UTFK{BE98}}%
+\DeclareUnicodeCharacter{BE99}{\UTFK{BE99}}%
+\DeclareUnicodeCharacter{BE9A}{\UTFK{BE9A}}%
+\DeclareUnicodeCharacter{BE9B}{\UTFK{BE9B}}%
+\DeclareUnicodeCharacter{BE9C}{\UTFK{BE9C}}%
+\DeclareUnicodeCharacter{BE9D}{\UTFK{BE9D}}%
+\DeclareUnicodeCharacter{BE9E}{\UTFK{BE9E}}%
+\DeclareUnicodeCharacter{BE9F}{\UTFK{BE9F}}%
+\DeclareUnicodeCharacter{BEA0}{\UTFK{BEA0}}%
+\DeclareUnicodeCharacter{BEA1}{\UTFK{BEA1}}%
+\DeclareUnicodeCharacter{BEA2}{\UTFK{BEA2}}%
+\DeclareUnicodeCharacter{BEA3}{\UTFK{BEA3}}%
+\DeclareUnicodeCharacter{BEA4}{\UTFK{BEA4}}%
+\DeclareUnicodeCharacter{BEA5}{\UTFK{BEA5}}%
+\DeclareUnicodeCharacter{BEA6}{\UTFK{BEA6}}%
+\DeclareUnicodeCharacter{BEA7}{\UTFK{BEA7}}%
+\DeclareUnicodeCharacter{BEA8}{\UTFK{BEA8}}%
+\DeclareUnicodeCharacter{BEA9}{\UTFK{BEA9}}%
+\DeclareUnicodeCharacter{BEAA}{\UTFK{BEAA}}%
+\DeclareUnicodeCharacter{BEAB}{\UTFK{BEAB}}%
+\DeclareUnicodeCharacter{BEAC}{\UTFK{BEAC}}%
+\DeclareUnicodeCharacter{BEAD}{\UTFK{BEAD}}%
+\DeclareUnicodeCharacter{BEAE}{\UTFK{BEAE}}%
+\DeclareUnicodeCharacter{BEAF}{\UTFK{BEAF}}%
+\DeclareUnicodeCharacter{BEB0}{\UTFK{BEB0}}%
+\DeclareUnicodeCharacter{BEB1}{\UTFK{BEB1}}%
+\DeclareUnicodeCharacter{BEB2}{\UTFK{BEB2}}%
+\DeclareUnicodeCharacter{BEB3}{\UTFK{BEB3}}%
+\DeclareUnicodeCharacter{BEB4}{\UTFK{BEB4}}%
+\DeclareUnicodeCharacter{BEB5}{\UTFK{BEB5}}%
+\DeclareUnicodeCharacter{BEB6}{\UTFK{BEB6}}%
+\DeclareUnicodeCharacter{BEB7}{\UTFK{BEB7}}%
+\DeclareUnicodeCharacter{BEB8}{\UTFK{BEB8}}%
+\DeclareUnicodeCharacter{BEB9}{\UTFK{BEB9}}%
+\DeclareUnicodeCharacter{BEBA}{\UTFK{BEBA}}%
+\DeclareUnicodeCharacter{BEBB}{\UTFK{BEBB}}%
+\DeclareUnicodeCharacter{BEBC}{\UTFK{BEBC}}%
+\DeclareUnicodeCharacter{BEBD}{\UTFK{BEBD}}%
+\DeclareUnicodeCharacter{BEBE}{\UTFK{BEBE}}%
+\DeclareUnicodeCharacter{BEBF}{\UTFK{BEBF}}%
+\DeclareUnicodeCharacter{BEC0}{\UTFK{BEC0}}%
+\DeclareUnicodeCharacter{BEC1}{\UTFK{BEC1}}%
+\DeclareUnicodeCharacter{BEC2}{\UTFK{BEC2}}%
+\DeclareUnicodeCharacter{BEC3}{\UTFK{BEC3}}%
+\DeclareUnicodeCharacter{BEC4}{\UTFK{BEC4}}%
+\DeclareUnicodeCharacter{BEC5}{\UTFK{BEC5}}%
+\DeclareUnicodeCharacter{BEC6}{\UTFK{BEC6}}%
+\DeclareUnicodeCharacter{BEC7}{\UTFK{BEC7}}%
+\DeclareUnicodeCharacter{BEC8}{\UTFK{BEC8}}%
+\DeclareUnicodeCharacter{BEC9}{\UTFK{BEC9}}%
+\DeclareUnicodeCharacter{BECA}{\UTFK{BECA}}%
+\DeclareUnicodeCharacter{BECB}{\UTFK{BECB}}%
+\DeclareUnicodeCharacter{BECC}{\UTFK{BECC}}%
+\DeclareUnicodeCharacter{BECD}{\UTFK{BECD}}%
+\DeclareUnicodeCharacter{BECE}{\UTFK{BECE}}%
+\DeclareUnicodeCharacter{BECF}{\UTFK{BECF}}%
+\DeclareUnicodeCharacter{BED0}{\UTFK{BED0}}%
+\DeclareUnicodeCharacter{BED1}{\UTFK{BED1}}%
+\DeclareUnicodeCharacter{BED2}{\UTFK{BED2}}%
+\DeclareUnicodeCharacter{BED3}{\UTFK{BED3}}%
+\DeclareUnicodeCharacter{BED4}{\UTFK{BED4}}%
+\DeclareUnicodeCharacter{BED5}{\UTFK{BED5}}%
+\DeclareUnicodeCharacter{BED6}{\UTFK{BED6}}%
+\DeclareUnicodeCharacter{BED7}{\UTFK{BED7}}%
+\DeclareUnicodeCharacter{BED8}{\UTFK{BED8}}%
+\DeclareUnicodeCharacter{BED9}{\UTFK{BED9}}%
+\DeclareUnicodeCharacter{BEDA}{\UTFK{BEDA}}%
+\DeclareUnicodeCharacter{BEDB}{\UTFK{BEDB}}%
+\DeclareUnicodeCharacter{BEDC}{\UTFK{BEDC}}%
+\DeclareUnicodeCharacter{BEDD}{\UTFK{BEDD}}%
+\DeclareUnicodeCharacter{BEDE}{\UTFK{BEDE}}%
+\DeclareUnicodeCharacter{BEDF}{\UTFK{BEDF}}%
+\DeclareUnicodeCharacter{BEE0}{\UTFK{BEE0}}%
+\DeclareUnicodeCharacter{BEE1}{\UTFK{BEE1}}%
+\DeclareUnicodeCharacter{BEE2}{\UTFK{BEE2}}%
+\DeclareUnicodeCharacter{BEE3}{\UTFK{BEE3}}%
+\DeclareUnicodeCharacter{BEE4}{\UTFK{BEE4}}%
+\DeclareUnicodeCharacter{BEE5}{\UTFK{BEE5}}%
+\DeclareUnicodeCharacter{BEE6}{\UTFK{BEE6}}%
+\DeclareUnicodeCharacter{BEE7}{\UTFK{BEE7}}%
+\DeclareUnicodeCharacter{BEE8}{\UTFK{BEE8}}%
+\DeclareUnicodeCharacter{BEE9}{\UTFK{BEE9}}%
+\DeclareUnicodeCharacter{BEEA}{\UTFK{BEEA}}%
+\DeclareUnicodeCharacter{BEEB}{\UTFK{BEEB}}%
+\DeclareUnicodeCharacter{BEEC}{\UTFK{BEEC}}%
+\DeclareUnicodeCharacter{BEED}{\UTFK{BEED}}%
+\DeclareUnicodeCharacter{BEEE}{\UTFK{BEEE}}%
+\DeclareUnicodeCharacter{BEEF}{\UTFK{BEEF}}%
+\DeclareUnicodeCharacter{BEF0}{\UTFK{BEF0}}%
+\DeclareUnicodeCharacter{BEF1}{\UTFK{BEF1}}%
+\DeclareUnicodeCharacter{BEF2}{\UTFK{BEF2}}%
+\DeclareUnicodeCharacter{BEF3}{\UTFK{BEF3}}%
+\DeclareUnicodeCharacter{BEF4}{\UTFK{BEF4}}%
+\DeclareUnicodeCharacter{BEF5}{\UTFK{BEF5}}%
+\DeclareUnicodeCharacter{BEF6}{\UTFK{BEF6}}%
+\DeclareUnicodeCharacter{BEF7}{\UTFK{BEF7}}%
+\DeclareUnicodeCharacter{BEF8}{\UTFK{BEF8}}%
+\DeclareUnicodeCharacter{BEF9}{\UTFK{BEF9}}%
+\DeclareUnicodeCharacter{BEFA}{\UTFK{BEFA}}%
+\DeclareUnicodeCharacter{BEFB}{\UTFK{BEFB}}%
+\DeclareUnicodeCharacter{BEFC}{\UTFK{BEFC}}%
+\DeclareUnicodeCharacter{BEFD}{\UTFK{BEFD}}%
+\DeclareUnicodeCharacter{BEFE}{\UTFK{BEFE}}%
+\DeclareUnicodeCharacter{BEFF}{\UTFK{BEFF}}%
+\DeclareUnicodeCharacter{BF00}{\UTFK{BF00}}%
+\DeclareUnicodeCharacter{BF01}{\UTFK{BF01}}%
+\DeclareUnicodeCharacter{BF02}{\UTFK{BF02}}%
+\DeclareUnicodeCharacter{BF03}{\UTFK{BF03}}%
+\DeclareUnicodeCharacter{BF04}{\UTFK{BF04}}%
+\DeclareUnicodeCharacter{BF05}{\UTFK{BF05}}%
+\DeclareUnicodeCharacter{BF06}{\UTFK{BF06}}%
+\DeclareUnicodeCharacter{BF07}{\UTFK{BF07}}%
+\DeclareUnicodeCharacter{BF08}{\UTFK{BF08}}%
+\DeclareUnicodeCharacter{BF09}{\UTFK{BF09}}%
+\DeclareUnicodeCharacter{BF0A}{\UTFK{BF0A}}%
+\DeclareUnicodeCharacter{BF0B}{\UTFK{BF0B}}%
+\DeclareUnicodeCharacter{BF0C}{\UTFK{BF0C}}%
+\DeclareUnicodeCharacter{BF0D}{\UTFK{BF0D}}%
+\DeclareUnicodeCharacter{BF0E}{\UTFK{BF0E}}%
+\DeclareUnicodeCharacter{BF0F}{\UTFK{BF0F}}%
+\DeclareUnicodeCharacter{BF10}{\UTFK{BF10}}%
+\DeclareUnicodeCharacter{BF11}{\UTFK{BF11}}%
+\DeclareUnicodeCharacter{BF12}{\UTFK{BF12}}%
+\DeclareUnicodeCharacter{BF13}{\UTFK{BF13}}%
+\DeclareUnicodeCharacter{BF14}{\UTFK{BF14}}%
+\DeclareUnicodeCharacter{BF15}{\UTFK{BF15}}%
+\DeclareUnicodeCharacter{BF16}{\UTFK{BF16}}%
+\DeclareUnicodeCharacter{BF17}{\UTFK{BF17}}%
+\DeclareUnicodeCharacter{BF18}{\UTFK{BF18}}%
+\DeclareUnicodeCharacter{BF19}{\UTFK{BF19}}%
+\DeclareUnicodeCharacter{BF1A}{\UTFK{BF1A}}%
+\DeclareUnicodeCharacter{BF1B}{\UTFK{BF1B}}%
+\DeclareUnicodeCharacter{BF1C}{\UTFK{BF1C}}%
+\DeclareUnicodeCharacter{BF1D}{\UTFK{BF1D}}%
+\DeclareUnicodeCharacter{BF1E}{\UTFK{BF1E}}%
+\DeclareUnicodeCharacter{BF1F}{\UTFK{BF1F}}%
+\DeclareUnicodeCharacter{BF20}{\UTFK{BF20}}%
+\DeclareUnicodeCharacter{BF21}{\UTFK{BF21}}%
+\DeclareUnicodeCharacter{BF22}{\UTFK{BF22}}%
+\DeclareUnicodeCharacter{BF23}{\UTFK{BF23}}%
+\DeclareUnicodeCharacter{BF24}{\UTFK{BF24}}%
+\DeclareUnicodeCharacter{BF25}{\UTFK{BF25}}%
+\DeclareUnicodeCharacter{BF26}{\UTFK{BF26}}%
+\DeclareUnicodeCharacter{BF27}{\UTFK{BF27}}%
+\DeclareUnicodeCharacter{BF28}{\UTFK{BF28}}%
+\DeclareUnicodeCharacter{BF29}{\UTFK{BF29}}%
+\DeclareUnicodeCharacter{BF2A}{\UTFK{BF2A}}%
+\DeclareUnicodeCharacter{BF2B}{\UTFK{BF2B}}%
+\DeclareUnicodeCharacter{BF2C}{\UTFK{BF2C}}%
+\DeclareUnicodeCharacter{BF2D}{\UTFK{BF2D}}%
+\DeclareUnicodeCharacter{BF2E}{\UTFK{BF2E}}%
+\DeclareUnicodeCharacter{BF2F}{\UTFK{BF2F}}%
+\DeclareUnicodeCharacter{BF30}{\UTFK{BF30}}%
+\DeclareUnicodeCharacter{BF31}{\UTFK{BF31}}%
+\DeclareUnicodeCharacter{BF32}{\UTFK{BF32}}%
+\DeclareUnicodeCharacter{BF33}{\UTFK{BF33}}%
+\DeclareUnicodeCharacter{BF34}{\UTFK{BF34}}%
+\DeclareUnicodeCharacter{BF35}{\UTFK{BF35}}%
+\DeclareUnicodeCharacter{BF36}{\UTFK{BF36}}%
+\DeclareUnicodeCharacter{BF37}{\UTFK{BF37}}%
+\DeclareUnicodeCharacter{BF38}{\UTFK{BF38}}%
+\DeclareUnicodeCharacter{BF39}{\UTFK{BF39}}%
+\DeclareUnicodeCharacter{BF3A}{\UTFK{BF3A}}%
+\DeclareUnicodeCharacter{BF3B}{\UTFK{BF3B}}%
+\DeclareUnicodeCharacter{BF3C}{\UTFK{BF3C}}%
+\DeclareUnicodeCharacter{BF3D}{\UTFK{BF3D}}%
+\DeclareUnicodeCharacter{BF3E}{\UTFK{BF3E}}%
+\DeclareUnicodeCharacter{BF3F}{\UTFK{BF3F}}%
+\DeclareUnicodeCharacter{BF40}{\UTFK{BF40}}%
+\DeclareUnicodeCharacter{BF41}{\UTFK{BF41}}%
+\DeclareUnicodeCharacter{BF42}{\UTFK{BF42}}%
+\DeclareUnicodeCharacter{BF43}{\UTFK{BF43}}%
+\DeclareUnicodeCharacter{BF44}{\UTFK{BF44}}%
+\DeclareUnicodeCharacter{BF45}{\UTFK{BF45}}%
+\DeclareUnicodeCharacter{BF46}{\UTFK{BF46}}%
+\DeclareUnicodeCharacter{BF47}{\UTFK{BF47}}%
+\DeclareUnicodeCharacter{BF48}{\UTFK{BF48}}%
+\DeclareUnicodeCharacter{BF49}{\UTFK{BF49}}%
+\DeclareUnicodeCharacter{BF4A}{\UTFK{BF4A}}%
+\DeclareUnicodeCharacter{BF4B}{\UTFK{BF4B}}%
+\DeclareUnicodeCharacter{BF4C}{\UTFK{BF4C}}%
+\DeclareUnicodeCharacter{BF4D}{\UTFK{BF4D}}%
+\DeclareUnicodeCharacter{BF4E}{\UTFK{BF4E}}%
+\DeclareUnicodeCharacter{BF4F}{\UTFK{BF4F}}%
+\DeclareUnicodeCharacter{BF50}{\UTFK{BF50}}%
+\DeclareUnicodeCharacter{BF51}{\UTFK{BF51}}%
+\DeclareUnicodeCharacter{BF52}{\UTFK{BF52}}%
+\DeclareUnicodeCharacter{BF53}{\UTFK{BF53}}%
+\DeclareUnicodeCharacter{BF54}{\UTFK{BF54}}%
+\DeclareUnicodeCharacter{BF55}{\UTFK{BF55}}%
+\DeclareUnicodeCharacter{BF56}{\UTFK{BF56}}%
+\DeclareUnicodeCharacter{BF57}{\UTFK{BF57}}%
+\DeclareUnicodeCharacter{BF58}{\UTFK{BF58}}%
+\DeclareUnicodeCharacter{BF59}{\UTFK{BF59}}%
+\DeclareUnicodeCharacter{BF5A}{\UTFK{BF5A}}%
+\DeclareUnicodeCharacter{BF5B}{\UTFK{BF5B}}%
+\DeclareUnicodeCharacter{BF5C}{\UTFK{BF5C}}%
+\DeclareUnicodeCharacter{BF5D}{\UTFK{BF5D}}%
+\DeclareUnicodeCharacter{BF5E}{\UTFK{BF5E}}%
+\DeclareUnicodeCharacter{BF5F}{\UTFK{BF5F}}%
+\DeclareUnicodeCharacter{BF60}{\UTFK{BF60}}%
+\DeclareUnicodeCharacter{BF61}{\UTFK{BF61}}%
+\DeclareUnicodeCharacter{BF62}{\UTFK{BF62}}%
+\DeclareUnicodeCharacter{BF63}{\UTFK{BF63}}%
+\DeclareUnicodeCharacter{BF64}{\UTFK{BF64}}%
+\DeclareUnicodeCharacter{BF65}{\UTFK{BF65}}%
+\DeclareUnicodeCharacter{BF66}{\UTFK{BF66}}%
+\DeclareUnicodeCharacter{BF67}{\UTFK{BF67}}%
+\DeclareUnicodeCharacter{BF68}{\UTFK{BF68}}%
+\DeclareUnicodeCharacter{BF69}{\UTFK{BF69}}%
+\DeclareUnicodeCharacter{BF6A}{\UTFK{BF6A}}%
+\DeclareUnicodeCharacter{BF6B}{\UTFK{BF6B}}%
+\DeclareUnicodeCharacter{BF6C}{\UTFK{BF6C}}%
+\DeclareUnicodeCharacter{BF6D}{\UTFK{BF6D}}%
+\DeclareUnicodeCharacter{BF6E}{\UTFK{BF6E}}%
+\DeclareUnicodeCharacter{BF6F}{\UTFK{BF6F}}%
+\DeclareUnicodeCharacter{BF70}{\UTFK{BF70}}%
+\DeclareUnicodeCharacter{BF71}{\UTFK{BF71}}%
+\DeclareUnicodeCharacter{BF72}{\UTFK{BF72}}%
+\DeclareUnicodeCharacter{BF73}{\UTFK{BF73}}%
+\DeclareUnicodeCharacter{BF74}{\UTFK{BF74}}%
+\DeclareUnicodeCharacter{BF75}{\UTFK{BF75}}%
+\DeclareUnicodeCharacter{BF76}{\UTFK{BF76}}%
+\DeclareUnicodeCharacter{BF77}{\UTFK{BF77}}%
+\DeclareUnicodeCharacter{BF78}{\UTFK{BF78}}%
+\DeclareUnicodeCharacter{BF79}{\UTFK{BF79}}%
+\DeclareUnicodeCharacter{BF7A}{\UTFK{BF7A}}%
+\DeclareUnicodeCharacter{BF7B}{\UTFK{BF7B}}%
+\DeclareUnicodeCharacter{BF7C}{\UTFK{BF7C}}%
+\DeclareUnicodeCharacter{BF7D}{\UTFK{BF7D}}%
+\DeclareUnicodeCharacter{BF7E}{\UTFK{BF7E}}%
+\DeclareUnicodeCharacter{BF7F}{\UTFK{BF7F}}%
+\DeclareUnicodeCharacter{BF80}{\UTFK{BF80}}%
+\DeclareUnicodeCharacter{BF81}{\UTFK{BF81}}%
+\DeclareUnicodeCharacter{BF82}{\UTFK{BF82}}%
+\DeclareUnicodeCharacter{BF83}{\UTFK{BF83}}%
+\DeclareUnicodeCharacter{BF84}{\UTFK{BF84}}%
+\DeclareUnicodeCharacter{BF85}{\UTFK{BF85}}%
+\DeclareUnicodeCharacter{BF86}{\UTFK{BF86}}%
+\DeclareUnicodeCharacter{BF87}{\UTFK{BF87}}%
+\DeclareUnicodeCharacter{BF88}{\UTFK{BF88}}%
+\DeclareUnicodeCharacter{BF89}{\UTFK{BF89}}%
+\DeclareUnicodeCharacter{BF8A}{\UTFK{BF8A}}%
+\DeclareUnicodeCharacter{BF8B}{\UTFK{BF8B}}%
+\DeclareUnicodeCharacter{BF8C}{\UTFK{BF8C}}%
+\DeclareUnicodeCharacter{BF8D}{\UTFK{BF8D}}%
+\DeclareUnicodeCharacter{BF8E}{\UTFK{BF8E}}%
+\DeclareUnicodeCharacter{BF8F}{\UTFK{BF8F}}%
+\DeclareUnicodeCharacter{BF90}{\UTFK{BF90}}%
+\DeclareUnicodeCharacter{BF91}{\UTFK{BF91}}%
+\DeclareUnicodeCharacter{BF92}{\UTFK{BF92}}%
+\DeclareUnicodeCharacter{BF93}{\UTFK{BF93}}%
+\DeclareUnicodeCharacter{BF94}{\UTFK{BF94}}%
+\DeclareUnicodeCharacter{BF95}{\UTFK{BF95}}%
+\DeclareUnicodeCharacter{BF96}{\UTFK{BF96}}%
+\DeclareUnicodeCharacter{BF97}{\UTFK{BF97}}%
+\DeclareUnicodeCharacter{BF98}{\UTFK{BF98}}%
+\DeclareUnicodeCharacter{BF99}{\UTFK{BF99}}%
+\DeclareUnicodeCharacter{BF9A}{\UTFK{BF9A}}%
+\DeclareUnicodeCharacter{BF9B}{\UTFK{BF9B}}%
+\DeclareUnicodeCharacter{BF9C}{\UTFK{BF9C}}%
+\DeclareUnicodeCharacter{BF9D}{\UTFK{BF9D}}%
+\DeclareUnicodeCharacter{BF9E}{\UTFK{BF9E}}%
+\DeclareUnicodeCharacter{BF9F}{\UTFK{BF9F}}%
+\DeclareUnicodeCharacter{BFA0}{\UTFK{BFA0}}%
+\DeclareUnicodeCharacter{BFA1}{\UTFK{BFA1}}%
+\DeclareUnicodeCharacter{BFA2}{\UTFK{BFA2}}%
+\DeclareUnicodeCharacter{BFA3}{\UTFK{BFA3}}%
+\DeclareUnicodeCharacter{BFA4}{\UTFK{BFA4}}%
+\DeclareUnicodeCharacter{BFA5}{\UTFK{BFA5}}%
+\DeclareUnicodeCharacter{BFA6}{\UTFK{BFA6}}%
+\DeclareUnicodeCharacter{BFA7}{\UTFK{BFA7}}%
+\DeclareUnicodeCharacter{BFA8}{\UTFK{BFA8}}%
+\DeclareUnicodeCharacter{BFA9}{\UTFK{BFA9}}%
+\DeclareUnicodeCharacter{BFAA}{\UTFK{BFAA}}%
+\DeclareUnicodeCharacter{BFAB}{\UTFK{BFAB}}%
+\DeclareUnicodeCharacter{BFAC}{\UTFK{BFAC}}%
+\DeclareUnicodeCharacter{BFAD}{\UTFK{BFAD}}%
+\DeclareUnicodeCharacter{BFAE}{\UTFK{BFAE}}%
+\DeclareUnicodeCharacter{BFAF}{\UTFK{BFAF}}%
+\DeclareUnicodeCharacter{BFB0}{\UTFK{BFB0}}%
+\DeclareUnicodeCharacter{BFB1}{\UTFK{BFB1}}%
+\DeclareUnicodeCharacter{BFB2}{\UTFK{BFB2}}%
+\DeclareUnicodeCharacter{BFB3}{\UTFK{BFB3}}%
+\DeclareUnicodeCharacter{BFB4}{\UTFK{BFB4}}%
+\DeclareUnicodeCharacter{BFB5}{\UTFK{BFB5}}%
+\DeclareUnicodeCharacter{BFB6}{\UTFK{BFB6}}%
+\DeclareUnicodeCharacter{BFB7}{\UTFK{BFB7}}%
+\DeclareUnicodeCharacter{BFB8}{\UTFK{BFB8}}%
+\DeclareUnicodeCharacter{BFB9}{\UTFK{BFB9}}%
+\DeclareUnicodeCharacter{BFBA}{\UTFK{BFBA}}%
+\DeclareUnicodeCharacter{BFBB}{\UTFK{BFBB}}%
+\DeclareUnicodeCharacter{BFBC}{\UTFK{BFBC}}%
+\DeclareUnicodeCharacter{BFBD}{\UTFK{BFBD}}%
+\DeclareUnicodeCharacter{BFBE}{\UTFK{BFBE}}%
+\DeclareUnicodeCharacter{BFBF}{\UTFK{BFBF}}%
+\DeclareUnicodeCharacter{BFC0}{\UTFK{BFC0}}%
+\DeclareUnicodeCharacter{BFC1}{\UTFK{BFC1}}%
+\DeclareUnicodeCharacter{BFC2}{\UTFK{BFC2}}%
+\DeclareUnicodeCharacter{BFC3}{\UTFK{BFC3}}%
+\DeclareUnicodeCharacter{BFC4}{\UTFK{BFC4}}%
+\DeclareUnicodeCharacter{BFC5}{\UTFK{BFC5}}%
+\DeclareUnicodeCharacter{BFC6}{\UTFK{BFC6}}%
+\DeclareUnicodeCharacter{BFC7}{\UTFK{BFC7}}%
+\DeclareUnicodeCharacter{BFC8}{\UTFK{BFC8}}%
+\DeclareUnicodeCharacter{BFC9}{\UTFK{BFC9}}%
+\DeclareUnicodeCharacter{BFCA}{\UTFK{BFCA}}%
+\DeclareUnicodeCharacter{BFCB}{\UTFK{BFCB}}%
+\DeclareUnicodeCharacter{BFCC}{\UTFK{BFCC}}%
+\DeclareUnicodeCharacter{BFCD}{\UTFK{BFCD}}%
+\DeclareUnicodeCharacter{BFCE}{\UTFK{BFCE}}%
+\DeclareUnicodeCharacter{BFCF}{\UTFK{BFCF}}%
+\DeclareUnicodeCharacter{BFD0}{\UTFK{BFD0}}%
+\DeclareUnicodeCharacter{BFD1}{\UTFK{BFD1}}%
+\DeclareUnicodeCharacter{BFD2}{\UTFK{BFD2}}%
+\DeclareUnicodeCharacter{BFD3}{\UTFK{BFD3}}%
+\DeclareUnicodeCharacter{BFD4}{\UTFK{BFD4}}%
+\DeclareUnicodeCharacter{BFD5}{\UTFK{BFD5}}%
+\DeclareUnicodeCharacter{BFD6}{\UTFK{BFD6}}%
+\DeclareUnicodeCharacter{BFD7}{\UTFK{BFD7}}%
+\DeclareUnicodeCharacter{BFD8}{\UTFK{BFD8}}%
+\DeclareUnicodeCharacter{BFD9}{\UTFK{BFD9}}%
+\DeclareUnicodeCharacter{BFDA}{\UTFK{BFDA}}%
+\DeclareUnicodeCharacter{BFDB}{\UTFK{BFDB}}%
+\DeclareUnicodeCharacter{BFDC}{\UTFK{BFDC}}%
+\DeclareUnicodeCharacter{BFDD}{\UTFK{BFDD}}%
+\DeclareUnicodeCharacter{BFDE}{\UTFK{BFDE}}%
+\DeclareUnicodeCharacter{BFDF}{\UTFK{BFDF}}%
+\DeclareUnicodeCharacter{BFE0}{\UTFK{BFE0}}%
+\DeclareUnicodeCharacter{BFE1}{\UTFK{BFE1}}%
+\DeclareUnicodeCharacter{BFE2}{\UTFK{BFE2}}%
+\DeclareUnicodeCharacter{BFE3}{\UTFK{BFE3}}%
+\DeclareUnicodeCharacter{BFE4}{\UTFK{BFE4}}%
+\DeclareUnicodeCharacter{BFE5}{\UTFK{BFE5}}%
+\DeclareUnicodeCharacter{BFE6}{\UTFK{BFE6}}%
+\DeclareUnicodeCharacter{BFE7}{\UTFK{BFE7}}%
+\DeclareUnicodeCharacter{BFE8}{\UTFK{BFE8}}%
+\DeclareUnicodeCharacter{BFE9}{\UTFK{BFE9}}%
+\DeclareUnicodeCharacter{BFEA}{\UTFK{BFEA}}%
+\DeclareUnicodeCharacter{BFEB}{\UTFK{BFEB}}%
+\DeclareUnicodeCharacter{BFEC}{\UTFK{BFEC}}%
+\DeclareUnicodeCharacter{BFED}{\UTFK{BFED}}%
+\DeclareUnicodeCharacter{BFEE}{\UTFK{BFEE}}%
+\DeclareUnicodeCharacter{BFEF}{\UTFK{BFEF}}%
+\DeclareUnicodeCharacter{BFF0}{\UTFK{BFF0}}%
+\DeclareUnicodeCharacter{BFF1}{\UTFK{BFF1}}%
+\DeclareUnicodeCharacter{BFF2}{\UTFK{BFF2}}%
+\DeclareUnicodeCharacter{BFF3}{\UTFK{BFF3}}%
+\DeclareUnicodeCharacter{BFF4}{\UTFK{BFF4}}%
+\DeclareUnicodeCharacter{BFF5}{\UTFK{BFF5}}%
+\DeclareUnicodeCharacter{BFF6}{\UTFK{BFF6}}%
+\DeclareUnicodeCharacter{BFF7}{\UTFK{BFF7}}%
+\DeclareUnicodeCharacter{BFF8}{\UTFK{BFF8}}%
+\DeclareUnicodeCharacter{BFF9}{\UTFK{BFF9}}%
+\DeclareUnicodeCharacter{BFFA}{\UTFK{BFFA}}%
+\DeclareUnicodeCharacter{BFFB}{\UTFK{BFFB}}%
+\DeclareUnicodeCharacter{BFFC}{\UTFK{BFFC}}%
+\DeclareUnicodeCharacter{BFFD}{\UTFK{BFFD}}%
+\DeclareUnicodeCharacter{BFFE}{\UTFK{BFFE}}%
+\DeclareUnicodeCharacter{BFFF}{\UTFK{BFFF}}%
+\DeclareUnicodeCharacter{C000}{\UTFK{C000}}%
+\DeclareUnicodeCharacter{C001}{\UTFK{C001}}%
+\DeclareUnicodeCharacter{C002}{\UTFK{C002}}%
+\DeclareUnicodeCharacter{C003}{\UTFK{C003}}%
+\DeclareUnicodeCharacter{C004}{\UTFK{C004}}%
+\DeclareUnicodeCharacter{C005}{\UTFK{C005}}%
+\DeclareUnicodeCharacter{C006}{\UTFK{C006}}%
+\DeclareUnicodeCharacter{C007}{\UTFK{C007}}%
+\DeclareUnicodeCharacter{C008}{\UTFK{C008}}%
+\DeclareUnicodeCharacter{C009}{\UTFK{C009}}%
+\DeclareUnicodeCharacter{C00A}{\UTFK{C00A}}%
+\DeclareUnicodeCharacter{C00B}{\UTFK{C00B}}%
+\DeclareUnicodeCharacter{C00C}{\UTFK{C00C}}%
+\DeclareUnicodeCharacter{C00D}{\UTFK{C00D}}%
+\DeclareUnicodeCharacter{C00E}{\UTFK{C00E}}%
+\DeclareUnicodeCharacter{C00F}{\UTFK{C00F}}%
+\DeclareUnicodeCharacter{C010}{\UTFK{C010}}%
+\DeclareUnicodeCharacter{C011}{\UTFK{C011}}%
+\DeclareUnicodeCharacter{C012}{\UTFK{C012}}%
+\DeclareUnicodeCharacter{C013}{\UTFK{C013}}%
+\DeclareUnicodeCharacter{C014}{\UTFK{C014}}%
+\DeclareUnicodeCharacter{C015}{\UTFK{C015}}%
+\DeclareUnicodeCharacter{C016}{\UTFK{C016}}%
+\DeclareUnicodeCharacter{C017}{\UTFK{C017}}%
+\DeclareUnicodeCharacter{C018}{\UTFK{C018}}%
+\DeclareUnicodeCharacter{C019}{\UTFK{C019}}%
+\DeclareUnicodeCharacter{C01A}{\UTFK{C01A}}%
+\DeclareUnicodeCharacter{C01B}{\UTFK{C01B}}%
+\DeclareUnicodeCharacter{C01C}{\UTFK{C01C}}%
+\DeclareUnicodeCharacter{C01D}{\UTFK{C01D}}%
+\DeclareUnicodeCharacter{C01E}{\UTFK{C01E}}%
+\DeclareUnicodeCharacter{C01F}{\UTFK{C01F}}%
+\DeclareUnicodeCharacter{C020}{\UTFK{C020}}%
+\DeclareUnicodeCharacter{C021}{\UTFK{C021}}%
+\DeclareUnicodeCharacter{C022}{\UTFK{C022}}%
+\DeclareUnicodeCharacter{C023}{\UTFK{C023}}%
+\DeclareUnicodeCharacter{C024}{\UTFK{C024}}%
+\DeclareUnicodeCharacter{C025}{\UTFK{C025}}%
+\DeclareUnicodeCharacter{C026}{\UTFK{C026}}%
+\DeclareUnicodeCharacter{C027}{\UTFK{C027}}%
+\DeclareUnicodeCharacter{C028}{\UTFK{C028}}%
+\DeclareUnicodeCharacter{C029}{\UTFK{C029}}%
+\DeclareUnicodeCharacter{C02A}{\UTFK{C02A}}%
+\DeclareUnicodeCharacter{C02B}{\UTFK{C02B}}%
+\DeclareUnicodeCharacter{C02C}{\UTFK{C02C}}%
+\DeclareUnicodeCharacter{C02D}{\UTFK{C02D}}%
+\DeclareUnicodeCharacter{C02E}{\UTFK{C02E}}%
+\DeclareUnicodeCharacter{C02F}{\UTFK{C02F}}%
+\DeclareUnicodeCharacter{C030}{\UTFK{C030}}%
+\DeclareUnicodeCharacter{C031}{\UTFK{C031}}%
+\DeclareUnicodeCharacter{C032}{\UTFK{C032}}%
+\DeclareUnicodeCharacter{C033}{\UTFK{C033}}%
+\DeclareUnicodeCharacter{C034}{\UTFK{C034}}%
+\DeclareUnicodeCharacter{C035}{\UTFK{C035}}%
+\DeclareUnicodeCharacter{C036}{\UTFK{C036}}%
+\DeclareUnicodeCharacter{C037}{\UTFK{C037}}%
+\DeclareUnicodeCharacter{C038}{\UTFK{C038}}%
+\DeclareUnicodeCharacter{C039}{\UTFK{C039}}%
+\DeclareUnicodeCharacter{C03A}{\UTFK{C03A}}%
+\DeclareUnicodeCharacter{C03B}{\UTFK{C03B}}%
+\DeclareUnicodeCharacter{C03C}{\UTFK{C03C}}%
+\DeclareUnicodeCharacter{C03D}{\UTFK{C03D}}%
+\DeclareUnicodeCharacter{C03E}{\UTFK{C03E}}%
+\DeclareUnicodeCharacter{C03F}{\UTFK{C03F}}%
+\DeclareUnicodeCharacter{C040}{\UTFK{C040}}%
+\DeclareUnicodeCharacter{C041}{\UTFK{C041}}%
+\DeclareUnicodeCharacter{C042}{\UTFK{C042}}%
+\DeclareUnicodeCharacter{C043}{\UTFK{C043}}%
+\DeclareUnicodeCharacter{C044}{\UTFK{C044}}%
+\DeclareUnicodeCharacter{C045}{\UTFK{C045}}%
+\DeclareUnicodeCharacter{C046}{\UTFK{C046}}%
+\DeclareUnicodeCharacter{C047}{\UTFK{C047}}%
+\DeclareUnicodeCharacter{C048}{\UTFK{C048}}%
+\DeclareUnicodeCharacter{C049}{\UTFK{C049}}%
+\DeclareUnicodeCharacter{C04A}{\UTFK{C04A}}%
+\DeclareUnicodeCharacter{C04B}{\UTFK{C04B}}%
+\DeclareUnicodeCharacter{C04C}{\UTFK{C04C}}%
+\DeclareUnicodeCharacter{C04D}{\UTFK{C04D}}%
+\DeclareUnicodeCharacter{C04E}{\UTFK{C04E}}%
+\DeclareUnicodeCharacter{C04F}{\UTFK{C04F}}%
+\DeclareUnicodeCharacter{C050}{\UTFK{C050}}%
+\DeclareUnicodeCharacter{C051}{\UTFK{C051}}%
+\DeclareUnicodeCharacter{C052}{\UTFK{C052}}%
+\DeclareUnicodeCharacter{C053}{\UTFK{C053}}%
+\DeclareUnicodeCharacter{C054}{\UTFK{C054}}%
+\DeclareUnicodeCharacter{C055}{\UTFK{C055}}%
+\DeclareUnicodeCharacter{C056}{\UTFK{C056}}%
+\DeclareUnicodeCharacter{C057}{\UTFK{C057}}%
+\DeclareUnicodeCharacter{C058}{\UTFK{C058}}%
+\DeclareUnicodeCharacter{C059}{\UTFK{C059}}%
+\DeclareUnicodeCharacter{C05A}{\UTFK{C05A}}%
+\DeclareUnicodeCharacter{C05B}{\UTFK{C05B}}%
+\DeclareUnicodeCharacter{C05C}{\UTFK{C05C}}%
+\DeclareUnicodeCharacter{C05D}{\UTFK{C05D}}%
+\DeclareUnicodeCharacter{C05E}{\UTFK{C05E}}%
+\DeclareUnicodeCharacter{C05F}{\UTFK{C05F}}%
+\DeclareUnicodeCharacter{C060}{\UTFK{C060}}%
+\DeclareUnicodeCharacter{C061}{\UTFK{C061}}%
+\DeclareUnicodeCharacter{C062}{\UTFK{C062}}%
+\DeclareUnicodeCharacter{C063}{\UTFK{C063}}%
+\DeclareUnicodeCharacter{C064}{\UTFK{C064}}%
+\DeclareUnicodeCharacter{C065}{\UTFK{C065}}%
+\DeclareUnicodeCharacter{C066}{\UTFK{C066}}%
+\DeclareUnicodeCharacter{C067}{\UTFK{C067}}%
+\DeclareUnicodeCharacter{C068}{\UTFK{C068}}%
+\DeclareUnicodeCharacter{C069}{\UTFK{C069}}%
+\DeclareUnicodeCharacter{C06A}{\UTFK{C06A}}%
+\DeclareUnicodeCharacter{C06B}{\UTFK{C06B}}%
+\DeclareUnicodeCharacter{C06C}{\UTFK{C06C}}%
+\DeclareUnicodeCharacter{C06D}{\UTFK{C06D}}%
+\DeclareUnicodeCharacter{C06E}{\UTFK{C06E}}%
+\DeclareUnicodeCharacter{C06F}{\UTFK{C06F}}%
+\DeclareUnicodeCharacter{C070}{\UTFK{C070}}%
+\DeclareUnicodeCharacter{C071}{\UTFK{C071}}%
+\DeclareUnicodeCharacter{C072}{\UTFK{C072}}%
+\DeclareUnicodeCharacter{C073}{\UTFK{C073}}%
+\DeclareUnicodeCharacter{C074}{\UTFK{C074}}%
+\DeclareUnicodeCharacter{C075}{\UTFK{C075}}%
+\DeclareUnicodeCharacter{C076}{\UTFK{C076}}%
+\DeclareUnicodeCharacter{C077}{\UTFK{C077}}%
+\DeclareUnicodeCharacter{C078}{\UTFK{C078}}%
+\DeclareUnicodeCharacter{C079}{\UTFK{C079}}%
+\DeclareUnicodeCharacter{C07A}{\UTFK{C07A}}%
+\DeclareUnicodeCharacter{C07B}{\UTFK{C07B}}%
+\DeclareUnicodeCharacter{C07C}{\UTFK{C07C}}%
+\DeclareUnicodeCharacter{C07D}{\UTFK{C07D}}%
+\DeclareUnicodeCharacter{C07E}{\UTFK{C07E}}%
+\DeclareUnicodeCharacter{C07F}{\UTFK{C07F}}%
+\DeclareUnicodeCharacter{C080}{\UTFK{C080}}%
+\DeclareUnicodeCharacter{C081}{\UTFK{C081}}%
+\DeclareUnicodeCharacter{C082}{\UTFK{C082}}%
+\DeclareUnicodeCharacter{C083}{\UTFK{C083}}%
+\DeclareUnicodeCharacter{C084}{\UTFK{C084}}%
+\DeclareUnicodeCharacter{C085}{\UTFK{C085}}%
+\DeclareUnicodeCharacter{C086}{\UTFK{C086}}%
+\DeclareUnicodeCharacter{C087}{\UTFK{C087}}%
+\DeclareUnicodeCharacter{C088}{\UTFK{C088}}%
+\DeclareUnicodeCharacter{C089}{\UTFK{C089}}%
+\DeclareUnicodeCharacter{C08A}{\UTFK{C08A}}%
+\DeclareUnicodeCharacter{C08B}{\UTFK{C08B}}%
+\DeclareUnicodeCharacter{C08C}{\UTFK{C08C}}%
+\DeclareUnicodeCharacter{C08D}{\UTFK{C08D}}%
+\DeclareUnicodeCharacter{C08E}{\UTFK{C08E}}%
+\DeclareUnicodeCharacter{C08F}{\UTFK{C08F}}%
+\DeclareUnicodeCharacter{C090}{\UTFK{C090}}%
+\DeclareUnicodeCharacter{C091}{\UTFK{C091}}%
+\DeclareUnicodeCharacter{C092}{\UTFK{C092}}%
+\DeclareUnicodeCharacter{C093}{\UTFK{C093}}%
+\DeclareUnicodeCharacter{C094}{\UTFK{C094}}%
+\DeclareUnicodeCharacter{C095}{\UTFK{C095}}%
+\DeclareUnicodeCharacter{C096}{\UTFK{C096}}%
+\DeclareUnicodeCharacter{C097}{\UTFK{C097}}%
+\DeclareUnicodeCharacter{C098}{\UTFK{C098}}%
+\DeclareUnicodeCharacter{C099}{\UTFK{C099}}%
+\DeclareUnicodeCharacter{C09A}{\UTFK{C09A}}%
+\DeclareUnicodeCharacter{C09B}{\UTFK{C09B}}%
+\DeclareUnicodeCharacter{C09C}{\UTFK{C09C}}%
+\DeclareUnicodeCharacter{C09D}{\UTFK{C09D}}%
+\DeclareUnicodeCharacter{C09E}{\UTFK{C09E}}%
+\DeclareUnicodeCharacter{C09F}{\UTFK{C09F}}%
+\DeclareUnicodeCharacter{C0A0}{\UTFK{C0A0}}%
+\DeclareUnicodeCharacter{C0A1}{\UTFK{C0A1}}%
+\DeclareUnicodeCharacter{C0A2}{\UTFK{C0A2}}%
+\DeclareUnicodeCharacter{C0A3}{\UTFK{C0A3}}%
+\DeclareUnicodeCharacter{C0A4}{\UTFK{C0A4}}%
+\DeclareUnicodeCharacter{C0A5}{\UTFK{C0A5}}%
+\DeclareUnicodeCharacter{C0A6}{\UTFK{C0A6}}%
+\DeclareUnicodeCharacter{C0A7}{\UTFK{C0A7}}%
+\DeclareUnicodeCharacter{C0A8}{\UTFK{C0A8}}%
+\DeclareUnicodeCharacter{C0A9}{\UTFK{C0A9}}%
+\DeclareUnicodeCharacter{C0AA}{\UTFK{C0AA}}%
+\DeclareUnicodeCharacter{C0AB}{\UTFK{C0AB}}%
+\DeclareUnicodeCharacter{C0AC}{\UTFK{C0AC}}%
+\DeclareUnicodeCharacter{C0AD}{\UTFK{C0AD}}%
+\DeclareUnicodeCharacter{C0AE}{\UTFK{C0AE}}%
+\DeclareUnicodeCharacter{C0AF}{\UTFK{C0AF}}%
+\DeclareUnicodeCharacter{C0B0}{\UTFK{C0B0}}%
+\DeclareUnicodeCharacter{C0B1}{\UTFK{C0B1}}%
+\DeclareUnicodeCharacter{C0B2}{\UTFK{C0B2}}%
+\DeclareUnicodeCharacter{C0B3}{\UTFK{C0B3}}%
+\DeclareUnicodeCharacter{C0B4}{\UTFK{C0B4}}%
+\DeclareUnicodeCharacter{C0B5}{\UTFK{C0B5}}%
+\DeclareUnicodeCharacter{C0B6}{\UTFK{C0B6}}%
+\DeclareUnicodeCharacter{C0B7}{\UTFK{C0B7}}%
+\DeclareUnicodeCharacter{C0B8}{\UTFK{C0B8}}%
+\DeclareUnicodeCharacter{C0B9}{\UTFK{C0B9}}%
+\DeclareUnicodeCharacter{C0BA}{\UTFK{C0BA}}%
+\DeclareUnicodeCharacter{C0BB}{\UTFK{C0BB}}%
+\DeclareUnicodeCharacter{C0BC}{\UTFK{C0BC}}%
+\DeclareUnicodeCharacter{C0BD}{\UTFK{C0BD}}%
+\DeclareUnicodeCharacter{C0BE}{\UTFK{C0BE}}%
+\DeclareUnicodeCharacter{C0BF}{\UTFK{C0BF}}%
+\DeclareUnicodeCharacter{C0C0}{\UTFK{C0C0}}%
+\DeclareUnicodeCharacter{C0C1}{\UTFK{C0C1}}%
+\DeclareUnicodeCharacter{C0C2}{\UTFK{C0C2}}%
+\DeclareUnicodeCharacter{C0C3}{\UTFK{C0C3}}%
+\DeclareUnicodeCharacter{C0C4}{\UTFK{C0C4}}%
+\DeclareUnicodeCharacter{C0C5}{\UTFK{C0C5}}%
+\DeclareUnicodeCharacter{C0C6}{\UTFK{C0C6}}%
+\DeclareUnicodeCharacter{C0C7}{\UTFK{C0C7}}%
+\DeclareUnicodeCharacter{C0C8}{\UTFK{C0C8}}%
+\DeclareUnicodeCharacter{C0C9}{\UTFK{C0C9}}%
+\DeclareUnicodeCharacter{C0CA}{\UTFK{C0CA}}%
+\DeclareUnicodeCharacter{C0CB}{\UTFK{C0CB}}%
+\DeclareUnicodeCharacter{C0CC}{\UTFK{C0CC}}%
+\DeclareUnicodeCharacter{C0CD}{\UTFK{C0CD}}%
+\DeclareUnicodeCharacter{C0CE}{\UTFK{C0CE}}%
+\DeclareUnicodeCharacter{C0CF}{\UTFK{C0CF}}%
+\DeclareUnicodeCharacter{C0D0}{\UTFK{C0D0}}%
+\DeclareUnicodeCharacter{C0D1}{\UTFK{C0D1}}%
+\DeclareUnicodeCharacter{C0D2}{\UTFK{C0D2}}%
+\DeclareUnicodeCharacter{C0D3}{\UTFK{C0D3}}%
+\DeclareUnicodeCharacter{C0D4}{\UTFK{C0D4}}%
+\DeclareUnicodeCharacter{C0D5}{\UTFK{C0D5}}%
+\DeclareUnicodeCharacter{C0D6}{\UTFK{C0D6}}%
+\DeclareUnicodeCharacter{C0D7}{\UTFK{C0D7}}%
+\DeclareUnicodeCharacter{C0D8}{\UTFK{C0D8}}%
+\DeclareUnicodeCharacter{C0D9}{\UTFK{C0D9}}%
+\DeclareUnicodeCharacter{C0DA}{\UTFK{C0DA}}%
+\DeclareUnicodeCharacter{C0DB}{\UTFK{C0DB}}%
+\DeclareUnicodeCharacter{C0DC}{\UTFK{C0DC}}%
+\DeclareUnicodeCharacter{C0DD}{\UTFK{C0DD}}%
+\DeclareUnicodeCharacter{C0DE}{\UTFK{C0DE}}%
+\DeclareUnicodeCharacter{C0DF}{\UTFK{C0DF}}%
+\DeclareUnicodeCharacter{C0E0}{\UTFK{C0E0}}%
+\DeclareUnicodeCharacter{C0E1}{\UTFK{C0E1}}%
+\DeclareUnicodeCharacter{C0E2}{\UTFK{C0E2}}%
+\DeclareUnicodeCharacter{C0E3}{\UTFK{C0E3}}%
+\DeclareUnicodeCharacter{C0E4}{\UTFK{C0E4}}%
+\DeclareUnicodeCharacter{C0E5}{\UTFK{C0E5}}%
+\DeclareUnicodeCharacter{C0E6}{\UTFK{C0E6}}%
+\DeclareUnicodeCharacter{C0E7}{\UTFK{C0E7}}%
+\DeclareUnicodeCharacter{C0E8}{\UTFK{C0E8}}%
+\DeclareUnicodeCharacter{C0E9}{\UTFK{C0E9}}%
+\DeclareUnicodeCharacter{C0EA}{\UTFK{C0EA}}%
+\DeclareUnicodeCharacter{C0EB}{\UTFK{C0EB}}%
+\DeclareUnicodeCharacter{C0EC}{\UTFK{C0EC}}%
+\DeclareUnicodeCharacter{C0ED}{\UTFK{C0ED}}%
+\DeclareUnicodeCharacter{C0EE}{\UTFK{C0EE}}%
+\DeclareUnicodeCharacter{C0EF}{\UTFK{C0EF}}%
+\DeclareUnicodeCharacter{C0F0}{\UTFK{C0F0}}%
+\DeclareUnicodeCharacter{C0F1}{\UTFK{C0F1}}%
+\DeclareUnicodeCharacter{C0F2}{\UTFK{C0F2}}%
+\DeclareUnicodeCharacter{C0F3}{\UTFK{C0F3}}%
+\DeclareUnicodeCharacter{C0F4}{\UTFK{C0F4}}%
+\DeclareUnicodeCharacter{C0F5}{\UTFK{C0F5}}%
+\DeclareUnicodeCharacter{C0F6}{\UTFK{C0F6}}%
+\DeclareUnicodeCharacter{C0F7}{\UTFK{C0F7}}%
+\DeclareUnicodeCharacter{C0F8}{\UTFK{C0F8}}%
+\DeclareUnicodeCharacter{C0F9}{\UTFK{C0F9}}%
+\DeclareUnicodeCharacter{C0FA}{\UTFK{C0FA}}%
+\DeclareUnicodeCharacter{C0FB}{\UTFK{C0FB}}%
+\DeclareUnicodeCharacter{C0FC}{\UTFK{C0FC}}%
+\DeclareUnicodeCharacter{C0FD}{\UTFK{C0FD}}%
+\DeclareUnicodeCharacter{C0FE}{\UTFK{C0FE}}%
+\DeclareUnicodeCharacter{C0FF}{\UTFK{C0FF}}%
+\DeclareUnicodeCharacter{C100}{\UTFK{C100}}%
+\DeclareUnicodeCharacter{C101}{\UTFK{C101}}%
+\DeclareUnicodeCharacter{C102}{\UTFK{C102}}%
+\DeclareUnicodeCharacter{C103}{\UTFK{C103}}%
+\DeclareUnicodeCharacter{C104}{\UTFK{C104}}%
+\DeclareUnicodeCharacter{C105}{\UTFK{C105}}%
+\DeclareUnicodeCharacter{C106}{\UTFK{C106}}%
+\DeclareUnicodeCharacter{C107}{\UTFK{C107}}%
+\DeclareUnicodeCharacter{C108}{\UTFK{C108}}%
+\DeclareUnicodeCharacter{C109}{\UTFK{C109}}%
+\DeclareUnicodeCharacter{C10A}{\UTFK{C10A}}%
+\DeclareUnicodeCharacter{C10B}{\UTFK{C10B}}%
+\DeclareUnicodeCharacter{C10C}{\UTFK{C10C}}%
+\DeclareUnicodeCharacter{C10D}{\UTFK{C10D}}%
+\DeclareUnicodeCharacter{C10E}{\UTFK{C10E}}%
+\DeclareUnicodeCharacter{C10F}{\UTFK{C10F}}%
+\DeclareUnicodeCharacter{C110}{\UTFK{C110}}%
+\DeclareUnicodeCharacter{C111}{\UTFK{C111}}%
+\DeclareUnicodeCharacter{C112}{\UTFK{C112}}%
+\DeclareUnicodeCharacter{C113}{\UTFK{C113}}%
+\DeclareUnicodeCharacter{C114}{\UTFK{C114}}%
+\DeclareUnicodeCharacter{C115}{\UTFK{C115}}%
+\DeclareUnicodeCharacter{C116}{\UTFK{C116}}%
+\DeclareUnicodeCharacter{C117}{\UTFK{C117}}%
+\DeclareUnicodeCharacter{C118}{\UTFK{C118}}%
+\DeclareUnicodeCharacter{C119}{\UTFK{C119}}%
+\DeclareUnicodeCharacter{C11A}{\UTFK{C11A}}%
+\DeclareUnicodeCharacter{C11B}{\UTFK{C11B}}%
+\DeclareUnicodeCharacter{C11C}{\UTFK{C11C}}%
+\DeclareUnicodeCharacter{C11D}{\UTFK{C11D}}%
+\DeclareUnicodeCharacter{C11E}{\UTFK{C11E}}%
+\DeclareUnicodeCharacter{C11F}{\UTFK{C11F}}%
+\DeclareUnicodeCharacter{C120}{\UTFK{C120}}%
+\DeclareUnicodeCharacter{C121}{\UTFK{C121}}%
+\DeclareUnicodeCharacter{C122}{\UTFK{C122}}%
+\DeclareUnicodeCharacter{C123}{\UTFK{C123}}%
+\DeclareUnicodeCharacter{C124}{\UTFK{C124}}%
+\DeclareUnicodeCharacter{C125}{\UTFK{C125}}%
+\DeclareUnicodeCharacter{C126}{\UTFK{C126}}%
+\DeclareUnicodeCharacter{C127}{\UTFK{C127}}%
+\DeclareUnicodeCharacter{C128}{\UTFK{C128}}%
+\DeclareUnicodeCharacter{C129}{\UTFK{C129}}%
+\DeclareUnicodeCharacter{C12A}{\UTFK{C12A}}%
+\DeclareUnicodeCharacter{C12B}{\UTFK{C12B}}%
+\DeclareUnicodeCharacter{C12C}{\UTFK{C12C}}%
+\DeclareUnicodeCharacter{C12D}{\UTFK{C12D}}%
+\DeclareUnicodeCharacter{C12E}{\UTFK{C12E}}%
+\DeclareUnicodeCharacter{C12F}{\UTFK{C12F}}%
+\DeclareUnicodeCharacter{C130}{\UTFK{C130}}%
+\DeclareUnicodeCharacter{C131}{\UTFK{C131}}%
+\DeclareUnicodeCharacter{C132}{\UTFK{C132}}%
+\DeclareUnicodeCharacter{C133}{\UTFK{C133}}%
+\DeclareUnicodeCharacter{C134}{\UTFK{C134}}%
+\DeclareUnicodeCharacter{C135}{\UTFK{C135}}%
+\DeclareUnicodeCharacter{C136}{\UTFK{C136}}%
+\DeclareUnicodeCharacter{C137}{\UTFK{C137}}%
+\DeclareUnicodeCharacter{C138}{\UTFK{C138}}%
+\DeclareUnicodeCharacter{C139}{\UTFK{C139}}%
+\DeclareUnicodeCharacter{C13A}{\UTFK{C13A}}%
+\DeclareUnicodeCharacter{C13B}{\UTFK{C13B}}%
+\DeclareUnicodeCharacter{C13C}{\UTFK{C13C}}%
+\DeclareUnicodeCharacter{C13D}{\UTFK{C13D}}%
+\DeclareUnicodeCharacter{C13E}{\UTFK{C13E}}%
+\DeclareUnicodeCharacter{C13F}{\UTFK{C13F}}%
+\DeclareUnicodeCharacter{C140}{\UTFK{C140}}%
+\DeclareUnicodeCharacter{C141}{\UTFK{C141}}%
+\DeclareUnicodeCharacter{C142}{\UTFK{C142}}%
+\DeclareUnicodeCharacter{C143}{\UTFK{C143}}%
+\DeclareUnicodeCharacter{C144}{\UTFK{C144}}%
+\DeclareUnicodeCharacter{C145}{\UTFK{C145}}%
+\DeclareUnicodeCharacter{C146}{\UTFK{C146}}%
+\DeclareUnicodeCharacter{C147}{\UTFK{C147}}%
+\DeclareUnicodeCharacter{C148}{\UTFK{C148}}%
+\DeclareUnicodeCharacter{C149}{\UTFK{C149}}%
+\DeclareUnicodeCharacter{C14A}{\UTFK{C14A}}%
+\DeclareUnicodeCharacter{C14B}{\UTFK{C14B}}%
+\DeclareUnicodeCharacter{C14C}{\UTFK{C14C}}%
+\DeclareUnicodeCharacter{C14D}{\UTFK{C14D}}%
+\DeclareUnicodeCharacter{C14E}{\UTFK{C14E}}%
+\DeclareUnicodeCharacter{C14F}{\UTFK{C14F}}%
+\DeclareUnicodeCharacter{C150}{\UTFK{C150}}%
+\DeclareUnicodeCharacter{C151}{\UTFK{C151}}%
+\DeclareUnicodeCharacter{C152}{\UTFK{C152}}%
+\DeclareUnicodeCharacter{C153}{\UTFK{C153}}%
+\DeclareUnicodeCharacter{C154}{\UTFK{C154}}%
+\DeclareUnicodeCharacter{C155}{\UTFK{C155}}%
+\DeclareUnicodeCharacter{C156}{\UTFK{C156}}%
+\DeclareUnicodeCharacter{C157}{\UTFK{C157}}%
+\DeclareUnicodeCharacter{C158}{\UTFK{C158}}%
+\DeclareUnicodeCharacter{C159}{\UTFK{C159}}%
+\DeclareUnicodeCharacter{C15A}{\UTFK{C15A}}%
+\DeclareUnicodeCharacter{C15B}{\UTFK{C15B}}%
+\DeclareUnicodeCharacter{C15C}{\UTFK{C15C}}%
+\DeclareUnicodeCharacter{C15D}{\UTFK{C15D}}%
+\DeclareUnicodeCharacter{C15E}{\UTFK{C15E}}%
+\DeclareUnicodeCharacter{C15F}{\UTFK{C15F}}%
+\DeclareUnicodeCharacter{C160}{\UTFK{C160}}%
+\DeclareUnicodeCharacter{C161}{\UTFK{C161}}%
+\DeclareUnicodeCharacter{C162}{\UTFK{C162}}%
+\DeclareUnicodeCharacter{C163}{\UTFK{C163}}%
+\DeclareUnicodeCharacter{C164}{\UTFK{C164}}%
+\DeclareUnicodeCharacter{C165}{\UTFK{C165}}%
+\DeclareUnicodeCharacter{C166}{\UTFK{C166}}%
+\DeclareUnicodeCharacter{C167}{\UTFK{C167}}%
+\DeclareUnicodeCharacter{C168}{\UTFK{C168}}%
+\DeclareUnicodeCharacter{C169}{\UTFK{C169}}%
+\DeclareUnicodeCharacter{C16A}{\UTFK{C16A}}%
+\DeclareUnicodeCharacter{C16B}{\UTFK{C16B}}%
+\DeclareUnicodeCharacter{C16C}{\UTFK{C16C}}%
+\DeclareUnicodeCharacter{C16D}{\UTFK{C16D}}%
+\DeclareUnicodeCharacter{C16E}{\UTFK{C16E}}%
+\DeclareUnicodeCharacter{C16F}{\UTFK{C16F}}%
+\DeclareUnicodeCharacter{C170}{\UTFK{C170}}%
+\DeclareUnicodeCharacter{C171}{\UTFK{C171}}%
+\DeclareUnicodeCharacter{C172}{\UTFK{C172}}%
+\DeclareUnicodeCharacter{C173}{\UTFK{C173}}%
+\DeclareUnicodeCharacter{C174}{\UTFK{C174}}%
+\DeclareUnicodeCharacter{C175}{\UTFK{C175}}%
+\DeclareUnicodeCharacter{C176}{\UTFK{C176}}%
+\DeclareUnicodeCharacter{C177}{\UTFK{C177}}%
+\DeclareUnicodeCharacter{C178}{\UTFK{C178}}%
+\DeclareUnicodeCharacter{C179}{\UTFK{C179}}%
+\DeclareUnicodeCharacter{C17A}{\UTFK{C17A}}%
+\DeclareUnicodeCharacter{C17B}{\UTFK{C17B}}%
+\DeclareUnicodeCharacter{C17C}{\UTFK{C17C}}%
+\DeclareUnicodeCharacter{C17D}{\UTFK{C17D}}%
+\DeclareUnicodeCharacter{C17E}{\UTFK{C17E}}%
+\DeclareUnicodeCharacter{C17F}{\UTFK{C17F}}%
+\DeclareUnicodeCharacter{C180}{\UTFK{C180}}%
+\DeclareUnicodeCharacter{C181}{\UTFK{C181}}%
+\DeclareUnicodeCharacter{C182}{\UTFK{C182}}%
+\DeclareUnicodeCharacter{C183}{\UTFK{C183}}%
+\DeclareUnicodeCharacter{C184}{\UTFK{C184}}%
+\DeclareUnicodeCharacter{C185}{\UTFK{C185}}%
+\DeclareUnicodeCharacter{C186}{\UTFK{C186}}%
+\DeclareUnicodeCharacter{C187}{\UTFK{C187}}%
+\DeclareUnicodeCharacter{C188}{\UTFK{C188}}%
+\DeclareUnicodeCharacter{C189}{\UTFK{C189}}%
+\DeclareUnicodeCharacter{C18A}{\UTFK{C18A}}%
+\DeclareUnicodeCharacter{C18B}{\UTFK{C18B}}%
+\DeclareUnicodeCharacter{C18C}{\UTFK{C18C}}%
+\DeclareUnicodeCharacter{C18D}{\UTFK{C18D}}%
+\DeclareUnicodeCharacter{C18E}{\UTFK{C18E}}%
+\DeclareUnicodeCharacter{C18F}{\UTFK{C18F}}%
+\DeclareUnicodeCharacter{C190}{\UTFK{C190}}%
+\DeclareUnicodeCharacter{C191}{\UTFK{C191}}%
+\DeclareUnicodeCharacter{C192}{\UTFK{C192}}%
+\DeclareUnicodeCharacter{C193}{\UTFK{C193}}%
+\DeclareUnicodeCharacter{C194}{\UTFK{C194}}%
+\DeclareUnicodeCharacter{C195}{\UTFK{C195}}%
+\DeclareUnicodeCharacter{C196}{\UTFK{C196}}%
+\DeclareUnicodeCharacter{C197}{\UTFK{C197}}%
+\DeclareUnicodeCharacter{C198}{\UTFK{C198}}%
+\DeclareUnicodeCharacter{C199}{\UTFK{C199}}%
+\DeclareUnicodeCharacter{C19A}{\UTFK{C19A}}%
+\DeclareUnicodeCharacter{C19B}{\UTFK{C19B}}%
+\DeclareUnicodeCharacter{C19C}{\UTFK{C19C}}%
+\DeclareUnicodeCharacter{C19D}{\UTFK{C19D}}%
+\DeclareUnicodeCharacter{C19E}{\UTFK{C19E}}%
+\DeclareUnicodeCharacter{C19F}{\UTFK{C19F}}%
+\DeclareUnicodeCharacter{C1A0}{\UTFK{C1A0}}%
+\DeclareUnicodeCharacter{C1A1}{\UTFK{C1A1}}%
+\DeclareUnicodeCharacter{C1A2}{\UTFK{C1A2}}%
+\DeclareUnicodeCharacter{C1A3}{\UTFK{C1A3}}%
+\DeclareUnicodeCharacter{C1A4}{\UTFK{C1A4}}%
+\DeclareUnicodeCharacter{C1A5}{\UTFK{C1A5}}%
+\DeclareUnicodeCharacter{C1A6}{\UTFK{C1A6}}%
+\DeclareUnicodeCharacter{C1A7}{\UTFK{C1A7}}%
+\DeclareUnicodeCharacter{C1A8}{\UTFK{C1A8}}%
+\DeclareUnicodeCharacter{C1A9}{\UTFK{C1A9}}%
+\DeclareUnicodeCharacter{C1AA}{\UTFK{C1AA}}%
+\DeclareUnicodeCharacter{C1AB}{\UTFK{C1AB}}%
+\DeclareUnicodeCharacter{C1AC}{\UTFK{C1AC}}%
+\DeclareUnicodeCharacter{C1AD}{\UTFK{C1AD}}%
+\DeclareUnicodeCharacter{C1AE}{\UTFK{C1AE}}%
+\DeclareUnicodeCharacter{C1AF}{\UTFK{C1AF}}%
+\DeclareUnicodeCharacter{C1B0}{\UTFK{C1B0}}%
+\DeclareUnicodeCharacter{C1B1}{\UTFK{C1B1}}%
+\DeclareUnicodeCharacter{C1B2}{\UTFK{C1B2}}%
+\DeclareUnicodeCharacter{C1B3}{\UTFK{C1B3}}%
+\DeclareUnicodeCharacter{C1B4}{\UTFK{C1B4}}%
+\DeclareUnicodeCharacter{C1B5}{\UTFK{C1B5}}%
+\DeclareUnicodeCharacter{C1B6}{\UTFK{C1B6}}%
+\DeclareUnicodeCharacter{C1B7}{\UTFK{C1B7}}%
+\DeclareUnicodeCharacter{C1B8}{\UTFK{C1B8}}%
+\DeclareUnicodeCharacter{C1B9}{\UTFK{C1B9}}%
+\DeclareUnicodeCharacter{C1BA}{\UTFK{C1BA}}%
+\DeclareUnicodeCharacter{C1BB}{\UTFK{C1BB}}%
+\DeclareUnicodeCharacter{C1BC}{\UTFK{C1BC}}%
+\DeclareUnicodeCharacter{C1BD}{\UTFK{C1BD}}%
+\DeclareUnicodeCharacter{C1BE}{\UTFK{C1BE}}%
+\DeclareUnicodeCharacter{C1BF}{\UTFK{C1BF}}%
+\DeclareUnicodeCharacter{C1C0}{\UTFK{C1C0}}%
+\DeclareUnicodeCharacter{C1C1}{\UTFK{C1C1}}%
+\DeclareUnicodeCharacter{C1C2}{\UTFK{C1C2}}%
+\DeclareUnicodeCharacter{C1C3}{\UTFK{C1C3}}%
+\DeclareUnicodeCharacter{C1C4}{\UTFK{C1C4}}%
+\DeclareUnicodeCharacter{C1C5}{\UTFK{C1C5}}%
+\DeclareUnicodeCharacter{C1C6}{\UTFK{C1C6}}%
+\DeclareUnicodeCharacter{C1C7}{\UTFK{C1C7}}%
+\DeclareUnicodeCharacter{C1C8}{\UTFK{C1C8}}%
+\DeclareUnicodeCharacter{C1C9}{\UTFK{C1C9}}%
+\DeclareUnicodeCharacter{C1CA}{\UTFK{C1CA}}%
+\DeclareUnicodeCharacter{C1CB}{\UTFK{C1CB}}%
+\DeclareUnicodeCharacter{C1CC}{\UTFK{C1CC}}%
+\DeclareUnicodeCharacter{C1CD}{\UTFK{C1CD}}%
+\DeclareUnicodeCharacter{C1CE}{\UTFK{C1CE}}%
+\DeclareUnicodeCharacter{C1CF}{\UTFK{C1CF}}%
+\DeclareUnicodeCharacter{C1D0}{\UTFK{C1D0}}%
+\DeclareUnicodeCharacter{C1D1}{\UTFK{C1D1}}%
+\DeclareUnicodeCharacter{C1D2}{\UTFK{C1D2}}%
+\DeclareUnicodeCharacter{C1D3}{\UTFK{C1D3}}%
+\DeclareUnicodeCharacter{C1D4}{\UTFK{C1D4}}%
+\DeclareUnicodeCharacter{C1D5}{\UTFK{C1D5}}%
+\DeclareUnicodeCharacter{C1D6}{\UTFK{C1D6}}%
+\DeclareUnicodeCharacter{C1D7}{\UTFK{C1D7}}%
+\DeclareUnicodeCharacter{C1D8}{\UTFK{C1D8}}%
+\DeclareUnicodeCharacter{C1D9}{\UTFK{C1D9}}%
+\DeclareUnicodeCharacter{C1DA}{\UTFK{C1DA}}%
+\DeclareUnicodeCharacter{C1DB}{\UTFK{C1DB}}%
+\DeclareUnicodeCharacter{C1DC}{\UTFK{C1DC}}%
+\DeclareUnicodeCharacter{C1DD}{\UTFK{C1DD}}%
+\DeclareUnicodeCharacter{C1DE}{\UTFK{C1DE}}%
+\DeclareUnicodeCharacter{C1DF}{\UTFK{C1DF}}%
+\DeclareUnicodeCharacter{C1E0}{\UTFK{C1E0}}%
+\DeclareUnicodeCharacter{C1E1}{\UTFK{C1E1}}%
+\DeclareUnicodeCharacter{C1E2}{\UTFK{C1E2}}%
+\DeclareUnicodeCharacter{C1E3}{\UTFK{C1E3}}%
+\DeclareUnicodeCharacter{C1E4}{\UTFK{C1E4}}%
+\DeclareUnicodeCharacter{C1E5}{\UTFK{C1E5}}%
+\DeclareUnicodeCharacter{C1E6}{\UTFK{C1E6}}%
+\DeclareUnicodeCharacter{C1E7}{\UTFK{C1E7}}%
+\DeclareUnicodeCharacter{C1E8}{\UTFK{C1E8}}%
+\DeclareUnicodeCharacter{C1E9}{\UTFK{C1E9}}%
+\DeclareUnicodeCharacter{C1EA}{\UTFK{C1EA}}%
+\DeclareUnicodeCharacter{C1EB}{\UTFK{C1EB}}%
+\DeclareUnicodeCharacter{C1EC}{\UTFK{C1EC}}%
+\DeclareUnicodeCharacter{C1ED}{\UTFK{C1ED}}%
+\DeclareUnicodeCharacter{C1EE}{\UTFK{C1EE}}%
+\DeclareUnicodeCharacter{C1EF}{\UTFK{C1EF}}%
+\DeclareUnicodeCharacter{C1F0}{\UTFK{C1F0}}%
+\DeclareUnicodeCharacter{C1F1}{\UTFK{C1F1}}%
+\DeclareUnicodeCharacter{C1F2}{\UTFK{C1F2}}%
+\DeclareUnicodeCharacter{C1F3}{\UTFK{C1F3}}%
+\DeclareUnicodeCharacter{C1F4}{\UTFK{C1F4}}%
+\DeclareUnicodeCharacter{C1F5}{\UTFK{C1F5}}%
+\DeclareUnicodeCharacter{C1F6}{\UTFK{C1F6}}%
+\DeclareUnicodeCharacter{C1F7}{\UTFK{C1F7}}%
+\DeclareUnicodeCharacter{C1F8}{\UTFK{C1F8}}%
+\DeclareUnicodeCharacter{C1F9}{\UTFK{C1F9}}%
+\DeclareUnicodeCharacter{C1FA}{\UTFK{C1FA}}%
+\DeclareUnicodeCharacter{C1FB}{\UTFK{C1FB}}%
+\DeclareUnicodeCharacter{C1FC}{\UTFK{C1FC}}%
+\DeclareUnicodeCharacter{C1FD}{\UTFK{C1FD}}%
+\DeclareUnicodeCharacter{C1FE}{\UTFK{C1FE}}%
+\DeclareUnicodeCharacter{C1FF}{\UTFK{C1FF}}%
+\DeclareUnicodeCharacter{C200}{\UTFK{C200}}%
+\DeclareUnicodeCharacter{C201}{\UTFK{C201}}%
+\DeclareUnicodeCharacter{C202}{\UTFK{C202}}%
+\DeclareUnicodeCharacter{C203}{\UTFK{C203}}%
+\DeclareUnicodeCharacter{C204}{\UTFK{C204}}%
+\DeclareUnicodeCharacter{C205}{\UTFK{C205}}%
+\DeclareUnicodeCharacter{C206}{\UTFK{C206}}%
+\DeclareUnicodeCharacter{C207}{\UTFK{C207}}%
+\DeclareUnicodeCharacter{C208}{\UTFK{C208}}%
+\DeclareUnicodeCharacter{C209}{\UTFK{C209}}%
+\DeclareUnicodeCharacter{C20A}{\UTFK{C20A}}%
+\DeclareUnicodeCharacter{C20B}{\UTFK{C20B}}%
+\DeclareUnicodeCharacter{C20C}{\UTFK{C20C}}%
+\DeclareUnicodeCharacter{C20D}{\UTFK{C20D}}%
+\DeclareUnicodeCharacter{C20E}{\UTFK{C20E}}%
+\DeclareUnicodeCharacter{C20F}{\UTFK{C20F}}%
+\DeclareUnicodeCharacter{C210}{\UTFK{C210}}%
+\DeclareUnicodeCharacter{C211}{\UTFK{C211}}%
+\DeclareUnicodeCharacter{C212}{\UTFK{C212}}%
+\DeclareUnicodeCharacter{C213}{\UTFK{C213}}%
+\DeclareUnicodeCharacter{C214}{\UTFK{C214}}%
+\DeclareUnicodeCharacter{C215}{\UTFK{C215}}%
+\DeclareUnicodeCharacter{C216}{\UTFK{C216}}%
+\DeclareUnicodeCharacter{C217}{\UTFK{C217}}%
+\DeclareUnicodeCharacter{C218}{\UTFK{C218}}%
+\DeclareUnicodeCharacter{C219}{\UTFK{C219}}%
+\DeclareUnicodeCharacter{C21A}{\UTFK{C21A}}%
+\DeclareUnicodeCharacter{C21B}{\UTFK{C21B}}%
+\DeclareUnicodeCharacter{C21C}{\UTFK{C21C}}%
+\DeclareUnicodeCharacter{C21D}{\UTFK{C21D}}%
+\DeclareUnicodeCharacter{C21E}{\UTFK{C21E}}%
+\DeclareUnicodeCharacter{C21F}{\UTFK{C21F}}%
+\DeclareUnicodeCharacter{C220}{\UTFK{C220}}%
+\DeclareUnicodeCharacter{C221}{\UTFK{C221}}%
+\DeclareUnicodeCharacter{C222}{\UTFK{C222}}%
+\DeclareUnicodeCharacter{C223}{\UTFK{C223}}%
+\DeclareUnicodeCharacter{C224}{\UTFK{C224}}%
+\DeclareUnicodeCharacter{C225}{\UTFK{C225}}%
+\DeclareUnicodeCharacter{C226}{\UTFK{C226}}%
+\DeclareUnicodeCharacter{C227}{\UTFK{C227}}%
+\DeclareUnicodeCharacter{C228}{\UTFK{C228}}%
+\DeclareUnicodeCharacter{C229}{\UTFK{C229}}%
+\DeclareUnicodeCharacter{C22A}{\UTFK{C22A}}%
+\DeclareUnicodeCharacter{C22B}{\UTFK{C22B}}%
+\DeclareUnicodeCharacter{C22C}{\UTFK{C22C}}%
+\DeclareUnicodeCharacter{C22D}{\UTFK{C22D}}%
+\DeclareUnicodeCharacter{C22E}{\UTFK{C22E}}%
+\DeclareUnicodeCharacter{C22F}{\UTFK{C22F}}%
+\DeclareUnicodeCharacter{C230}{\UTFK{C230}}%
+\DeclareUnicodeCharacter{C231}{\UTFK{C231}}%
+\DeclareUnicodeCharacter{C232}{\UTFK{C232}}%
+\DeclareUnicodeCharacter{C233}{\UTFK{C233}}%
+\DeclareUnicodeCharacter{C234}{\UTFK{C234}}%
+\DeclareUnicodeCharacter{C235}{\UTFK{C235}}%
+\DeclareUnicodeCharacter{C236}{\UTFK{C236}}%
+\DeclareUnicodeCharacter{C237}{\UTFK{C237}}%
+\DeclareUnicodeCharacter{C238}{\UTFK{C238}}%
+\DeclareUnicodeCharacter{C239}{\UTFK{C239}}%
+\DeclareUnicodeCharacter{C23A}{\UTFK{C23A}}%
+\DeclareUnicodeCharacter{C23B}{\UTFK{C23B}}%
+\DeclareUnicodeCharacter{C23C}{\UTFK{C23C}}%
+\DeclareUnicodeCharacter{C23D}{\UTFK{C23D}}%
+\DeclareUnicodeCharacter{C23E}{\UTFK{C23E}}%
+\DeclareUnicodeCharacter{C23F}{\UTFK{C23F}}%
+\DeclareUnicodeCharacter{C240}{\UTFK{C240}}%
+\DeclareUnicodeCharacter{C241}{\UTFK{C241}}%
+\DeclareUnicodeCharacter{C242}{\UTFK{C242}}%
+\DeclareUnicodeCharacter{C243}{\UTFK{C243}}%
+\DeclareUnicodeCharacter{C244}{\UTFK{C244}}%
+\DeclareUnicodeCharacter{C245}{\UTFK{C245}}%
+\DeclareUnicodeCharacter{C246}{\UTFK{C246}}%
+\DeclareUnicodeCharacter{C247}{\UTFK{C247}}%
+\DeclareUnicodeCharacter{C248}{\UTFK{C248}}%
+\DeclareUnicodeCharacter{C249}{\UTFK{C249}}%
+\DeclareUnicodeCharacter{C24A}{\UTFK{C24A}}%
+\DeclareUnicodeCharacter{C24B}{\UTFK{C24B}}%
+\DeclareUnicodeCharacter{C24C}{\UTFK{C24C}}%
+\DeclareUnicodeCharacter{C24D}{\UTFK{C24D}}%
+\DeclareUnicodeCharacter{C24E}{\UTFK{C24E}}%
+\DeclareUnicodeCharacter{C24F}{\UTFK{C24F}}%
+\DeclareUnicodeCharacter{C250}{\UTFK{C250}}%
+\DeclareUnicodeCharacter{C251}{\UTFK{C251}}%
+\DeclareUnicodeCharacter{C252}{\UTFK{C252}}%
+\DeclareUnicodeCharacter{C253}{\UTFK{C253}}%
+\DeclareUnicodeCharacter{C254}{\UTFK{C254}}%
+\DeclareUnicodeCharacter{C255}{\UTFK{C255}}%
+\DeclareUnicodeCharacter{C256}{\UTFK{C256}}%
+\DeclareUnicodeCharacter{C257}{\UTFK{C257}}%
+\DeclareUnicodeCharacter{C258}{\UTFK{C258}}%
+\DeclareUnicodeCharacter{C259}{\UTFK{C259}}%
+\DeclareUnicodeCharacter{C25A}{\UTFK{C25A}}%
+\DeclareUnicodeCharacter{C25B}{\UTFK{C25B}}%
+\DeclareUnicodeCharacter{C25C}{\UTFK{C25C}}%
+\DeclareUnicodeCharacter{C25D}{\UTFK{C25D}}%
+\DeclareUnicodeCharacter{C25E}{\UTFK{C25E}}%
+\DeclareUnicodeCharacter{C25F}{\UTFK{C25F}}%
+\DeclareUnicodeCharacter{C260}{\UTFK{C260}}%
+\DeclareUnicodeCharacter{C261}{\UTFK{C261}}%
+\DeclareUnicodeCharacter{C262}{\UTFK{C262}}%
+\DeclareUnicodeCharacter{C263}{\UTFK{C263}}%
+\DeclareUnicodeCharacter{C264}{\UTFK{C264}}%
+\DeclareUnicodeCharacter{C265}{\UTFK{C265}}%
+\DeclareUnicodeCharacter{C266}{\UTFK{C266}}%
+\DeclareUnicodeCharacter{C267}{\UTFK{C267}}%
+\DeclareUnicodeCharacter{C268}{\UTFK{C268}}%
+\DeclareUnicodeCharacter{C269}{\UTFK{C269}}%
+\DeclareUnicodeCharacter{C26A}{\UTFK{C26A}}%
+\DeclareUnicodeCharacter{C26B}{\UTFK{C26B}}%
+\DeclareUnicodeCharacter{C26C}{\UTFK{C26C}}%
+\DeclareUnicodeCharacter{C26D}{\UTFK{C26D}}%
+\DeclareUnicodeCharacter{C26E}{\UTFK{C26E}}%
+\DeclareUnicodeCharacter{C26F}{\UTFK{C26F}}%
+\DeclareUnicodeCharacter{C270}{\UTFK{C270}}%
+\DeclareUnicodeCharacter{C271}{\UTFK{C271}}%
+\DeclareUnicodeCharacter{C272}{\UTFK{C272}}%
+\DeclareUnicodeCharacter{C273}{\UTFK{C273}}%
+\DeclareUnicodeCharacter{C274}{\UTFK{C274}}%
+\DeclareUnicodeCharacter{C275}{\UTFK{C275}}%
+\DeclareUnicodeCharacter{C276}{\UTFK{C276}}%
+\DeclareUnicodeCharacter{C277}{\UTFK{C277}}%
+\DeclareUnicodeCharacter{C278}{\UTFK{C278}}%
+\DeclareUnicodeCharacter{C279}{\UTFK{C279}}%
+\DeclareUnicodeCharacter{C27A}{\UTFK{C27A}}%
+\DeclareUnicodeCharacter{C27B}{\UTFK{C27B}}%
+\DeclareUnicodeCharacter{C27C}{\UTFK{C27C}}%
+\DeclareUnicodeCharacter{C27D}{\UTFK{C27D}}%
+\DeclareUnicodeCharacter{C27E}{\UTFK{C27E}}%
+\DeclareUnicodeCharacter{C27F}{\UTFK{C27F}}%
+\DeclareUnicodeCharacter{C280}{\UTFK{C280}}%
+\DeclareUnicodeCharacter{C281}{\UTFK{C281}}%
+\DeclareUnicodeCharacter{C282}{\UTFK{C282}}%
+\DeclareUnicodeCharacter{C283}{\UTFK{C283}}%
+\DeclareUnicodeCharacter{C284}{\UTFK{C284}}%
+\DeclareUnicodeCharacter{C285}{\UTFK{C285}}%
+\DeclareUnicodeCharacter{C286}{\UTFK{C286}}%
+\DeclareUnicodeCharacter{C287}{\UTFK{C287}}%
+\DeclareUnicodeCharacter{C288}{\UTFK{C288}}%
+\DeclareUnicodeCharacter{C289}{\UTFK{C289}}%
+\DeclareUnicodeCharacter{C28A}{\UTFK{C28A}}%
+\DeclareUnicodeCharacter{C28B}{\UTFK{C28B}}%
+\DeclareUnicodeCharacter{C28C}{\UTFK{C28C}}%
+\DeclareUnicodeCharacter{C28D}{\UTFK{C28D}}%
+\DeclareUnicodeCharacter{C28E}{\UTFK{C28E}}%
+\DeclareUnicodeCharacter{C28F}{\UTFK{C28F}}%
+\DeclareUnicodeCharacter{C290}{\UTFK{C290}}%
+\DeclareUnicodeCharacter{C291}{\UTFK{C291}}%
+\DeclareUnicodeCharacter{C292}{\UTFK{C292}}%
+\DeclareUnicodeCharacter{C293}{\UTFK{C293}}%
+\DeclareUnicodeCharacter{C294}{\UTFK{C294}}%
+\DeclareUnicodeCharacter{C295}{\UTFK{C295}}%
+\DeclareUnicodeCharacter{C296}{\UTFK{C296}}%
+\DeclareUnicodeCharacter{C297}{\UTFK{C297}}%
+\DeclareUnicodeCharacter{C298}{\UTFK{C298}}%
+\DeclareUnicodeCharacter{C299}{\UTFK{C299}}%
+\DeclareUnicodeCharacter{C29A}{\UTFK{C29A}}%
+\DeclareUnicodeCharacter{C29B}{\UTFK{C29B}}%
+\DeclareUnicodeCharacter{C29C}{\UTFK{C29C}}%
+\DeclareUnicodeCharacter{C29D}{\UTFK{C29D}}%
+\DeclareUnicodeCharacter{C29E}{\UTFK{C29E}}%
+\DeclareUnicodeCharacter{C29F}{\UTFK{C29F}}%
+\DeclareUnicodeCharacter{C2A0}{\UTFK{C2A0}}%
+\DeclareUnicodeCharacter{C2A1}{\UTFK{C2A1}}%
+\DeclareUnicodeCharacter{C2A2}{\UTFK{C2A2}}%
+\DeclareUnicodeCharacter{C2A3}{\UTFK{C2A3}}%
+\DeclareUnicodeCharacter{C2A4}{\UTFK{C2A4}}%
+\DeclareUnicodeCharacter{C2A5}{\UTFK{C2A5}}%
+\DeclareUnicodeCharacter{C2A6}{\UTFK{C2A6}}%
+\DeclareUnicodeCharacter{C2A7}{\UTFK{C2A7}}%
+\DeclareUnicodeCharacter{C2A8}{\UTFK{C2A8}}%
+\DeclareUnicodeCharacter{C2A9}{\UTFK{C2A9}}%
+\DeclareUnicodeCharacter{C2AA}{\UTFK{C2AA}}%
+\DeclareUnicodeCharacter{C2AB}{\UTFK{C2AB}}%
+\DeclareUnicodeCharacter{C2AC}{\UTFK{C2AC}}%
+\DeclareUnicodeCharacter{C2AD}{\UTFK{C2AD}}%
+\DeclareUnicodeCharacter{C2AE}{\UTFK{C2AE}}%
+\DeclareUnicodeCharacter{C2AF}{\UTFK{C2AF}}%
+\DeclareUnicodeCharacter{C2B0}{\UTFK{C2B0}}%
+\DeclareUnicodeCharacter{C2B1}{\UTFK{C2B1}}%
+\DeclareUnicodeCharacter{C2B2}{\UTFK{C2B2}}%
+\DeclareUnicodeCharacter{C2B3}{\UTFK{C2B3}}%
+\DeclareUnicodeCharacter{C2B4}{\UTFK{C2B4}}%
+\DeclareUnicodeCharacter{C2B5}{\UTFK{C2B5}}%
+\DeclareUnicodeCharacter{C2B6}{\UTFK{C2B6}}%
+\DeclareUnicodeCharacter{C2B7}{\UTFK{C2B7}}%
+\DeclareUnicodeCharacter{C2B8}{\UTFK{C2B8}}%
+\DeclareUnicodeCharacter{C2B9}{\UTFK{C2B9}}%
+\DeclareUnicodeCharacter{C2BA}{\UTFK{C2BA}}%
+\DeclareUnicodeCharacter{C2BB}{\UTFK{C2BB}}%
+\DeclareUnicodeCharacter{C2BC}{\UTFK{C2BC}}%
+\DeclareUnicodeCharacter{C2BD}{\UTFK{C2BD}}%
+\DeclareUnicodeCharacter{C2BE}{\UTFK{C2BE}}%
+\DeclareUnicodeCharacter{C2BF}{\UTFK{C2BF}}%
+\DeclareUnicodeCharacter{C2C0}{\UTFK{C2C0}}%
+\DeclareUnicodeCharacter{C2C1}{\UTFK{C2C1}}%
+\DeclareUnicodeCharacter{C2C2}{\UTFK{C2C2}}%
+\DeclareUnicodeCharacter{C2C3}{\UTFK{C2C3}}%
+\DeclareUnicodeCharacter{C2C4}{\UTFK{C2C4}}%
+\DeclareUnicodeCharacter{C2C5}{\UTFK{C2C5}}%
+\DeclareUnicodeCharacter{C2C6}{\UTFK{C2C6}}%
+\DeclareUnicodeCharacter{C2C7}{\UTFK{C2C7}}%
+\DeclareUnicodeCharacter{C2C8}{\UTFK{C2C8}}%
+\DeclareUnicodeCharacter{C2C9}{\UTFK{C2C9}}%
+\DeclareUnicodeCharacter{C2CA}{\UTFK{C2CA}}%
+\DeclareUnicodeCharacter{C2CB}{\UTFK{C2CB}}%
+\DeclareUnicodeCharacter{C2CC}{\UTFK{C2CC}}%
+\DeclareUnicodeCharacter{C2CD}{\UTFK{C2CD}}%
+\DeclareUnicodeCharacter{C2CE}{\UTFK{C2CE}}%
+\DeclareUnicodeCharacter{C2CF}{\UTFK{C2CF}}%
+\DeclareUnicodeCharacter{C2D0}{\UTFK{C2D0}}%
+\DeclareUnicodeCharacter{C2D1}{\UTFK{C2D1}}%
+\DeclareUnicodeCharacter{C2D2}{\UTFK{C2D2}}%
+\DeclareUnicodeCharacter{C2D3}{\UTFK{C2D3}}%
+\DeclareUnicodeCharacter{C2D4}{\UTFK{C2D4}}%
+\DeclareUnicodeCharacter{C2D5}{\UTFK{C2D5}}%
+\DeclareUnicodeCharacter{C2D6}{\UTFK{C2D6}}%
+\DeclareUnicodeCharacter{C2D7}{\UTFK{C2D7}}%
+\DeclareUnicodeCharacter{C2D8}{\UTFK{C2D8}}%
+\DeclareUnicodeCharacter{C2D9}{\UTFK{C2D9}}%
+\DeclareUnicodeCharacter{C2DA}{\UTFK{C2DA}}%
+\DeclareUnicodeCharacter{C2DB}{\UTFK{C2DB}}%
+\DeclareUnicodeCharacter{C2DC}{\UTFK{C2DC}}%
+\DeclareUnicodeCharacter{C2DD}{\UTFK{C2DD}}%
+\DeclareUnicodeCharacter{C2DE}{\UTFK{C2DE}}%
+\DeclareUnicodeCharacter{C2DF}{\UTFK{C2DF}}%
+\DeclareUnicodeCharacter{C2E0}{\UTFK{C2E0}}%
+\DeclareUnicodeCharacter{C2E1}{\UTFK{C2E1}}%
+\DeclareUnicodeCharacter{C2E2}{\UTFK{C2E2}}%
+\DeclareUnicodeCharacter{C2E3}{\UTFK{C2E3}}%
+\DeclareUnicodeCharacter{C2E4}{\UTFK{C2E4}}%
+\DeclareUnicodeCharacter{C2E5}{\UTFK{C2E5}}%
+\DeclareUnicodeCharacter{C2E6}{\UTFK{C2E6}}%
+\DeclareUnicodeCharacter{C2E7}{\UTFK{C2E7}}%
+\DeclareUnicodeCharacter{C2E8}{\UTFK{C2E8}}%
+\DeclareUnicodeCharacter{C2E9}{\UTFK{C2E9}}%
+\DeclareUnicodeCharacter{C2EA}{\UTFK{C2EA}}%
+\DeclareUnicodeCharacter{C2EB}{\UTFK{C2EB}}%
+\DeclareUnicodeCharacter{C2EC}{\UTFK{C2EC}}%
+\DeclareUnicodeCharacter{C2ED}{\UTFK{C2ED}}%
+\DeclareUnicodeCharacter{C2EE}{\UTFK{C2EE}}%
+\DeclareUnicodeCharacter{C2EF}{\UTFK{C2EF}}%
+\DeclareUnicodeCharacter{C2F0}{\UTFK{C2F0}}%
+\DeclareUnicodeCharacter{C2F1}{\UTFK{C2F1}}%
+\DeclareUnicodeCharacter{C2F2}{\UTFK{C2F2}}%
+\DeclareUnicodeCharacter{C2F3}{\UTFK{C2F3}}%
+\DeclareUnicodeCharacter{C2F4}{\UTFK{C2F4}}%
+\DeclareUnicodeCharacter{C2F5}{\UTFK{C2F5}}%
+\DeclareUnicodeCharacter{C2F6}{\UTFK{C2F6}}%
+\DeclareUnicodeCharacter{C2F7}{\UTFK{C2F7}}%
+\DeclareUnicodeCharacter{C2F8}{\UTFK{C2F8}}%
+\DeclareUnicodeCharacter{C2F9}{\UTFK{C2F9}}%
+\DeclareUnicodeCharacter{C2FA}{\UTFK{C2FA}}%
+\DeclareUnicodeCharacter{C2FB}{\UTFK{C2FB}}%
+\DeclareUnicodeCharacter{C2FC}{\UTFK{C2FC}}%
+\DeclareUnicodeCharacter{C2FD}{\UTFK{C2FD}}%
+\DeclareUnicodeCharacter{C2FE}{\UTFK{C2FE}}%
+\DeclareUnicodeCharacter{C2FF}{\UTFK{C2FF}}%
+\DeclareUnicodeCharacter{C300}{\UTFK{C300}}%
+\DeclareUnicodeCharacter{C301}{\UTFK{C301}}%
+\DeclareUnicodeCharacter{C302}{\UTFK{C302}}%
+\DeclareUnicodeCharacter{C303}{\UTFK{C303}}%
+\DeclareUnicodeCharacter{C304}{\UTFK{C304}}%
+\DeclareUnicodeCharacter{C305}{\UTFK{C305}}%
+\DeclareUnicodeCharacter{C306}{\UTFK{C306}}%
+\DeclareUnicodeCharacter{C307}{\UTFK{C307}}%
+\DeclareUnicodeCharacter{C308}{\UTFK{C308}}%
+\DeclareUnicodeCharacter{C309}{\UTFK{C309}}%
+\DeclareUnicodeCharacter{C30A}{\UTFK{C30A}}%
+\DeclareUnicodeCharacter{C30B}{\UTFK{C30B}}%
+\DeclareUnicodeCharacter{C30C}{\UTFK{C30C}}%
+\DeclareUnicodeCharacter{C30D}{\UTFK{C30D}}%
+\DeclareUnicodeCharacter{C30E}{\UTFK{C30E}}%
+\DeclareUnicodeCharacter{C30F}{\UTFK{C30F}}%
+\DeclareUnicodeCharacter{C310}{\UTFK{C310}}%
+\DeclareUnicodeCharacter{C311}{\UTFK{C311}}%
+\DeclareUnicodeCharacter{C312}{\UTFK{C312}}%
+\DeclareUnicodeCharacter{C313}{\UTFK{C313}}%
+\DeclareUnicodeCharacter{C314}{\UTFK{C314}}%
+\DeclareUnicodeCharacter{C315}{\UTFK{C315}}%
+\DeclareUnicodeCharacter{C316}{\UTFK{C316}}%
+\DeclareUnicodeCharacter{C317}{\UTFK{C317}}%
+\DeclareUnicodeCharacter{C318}{\UTFK{C318}}%
+\DeclareUnicodeCharacter{C319}{\UTFK{C319}}%
+\DeclareUnicodeCharacter{C31A}{\UTFK{C31A}}%
+\DeclareUnicodeCharacter{C31B}{\UTFK{C31B}}%
+\DeclareUnicodeCharacter{C31C}{\UTFK{C31C}}%
+\DeclareUnicodeCharacter{C31D}{\UTFK{C31D}}%
+\DeclareUnicodeCharacter{C31E}{\UTFK{C31E}}%
+\DeclareUnicodeCharacter{C31F}{\UTFK{C31F}}%
+\DeclareUnicodeCharacter{C320}{\UTFK{C320}}%
+\DeclareUnicodeCharacter{C321}{\UTFK{C321}}%
+\DeclareUnicodeCharacter{C322}{\UTFK{C322}}%
+\DeclareUnicodeCharacter{C323}{\UTFK{C323}}%
+\DeclareUnicodeCharacter{C324}{\UTFK{C324}}%
+\DeclareUnicodeCharacter{C325}{\UTFK{C325}}%
+\DeclareUnicodeCharacter{C326}{\UTFK{C326}}%
+\DeclareUnicodeCharacter{C327}{\UTFK{C327}}%
+\DeclareUnicodeCharacter{C328}{\UTFK{C328}}%
+\DeclareUnicodeCharacter{C329}{\UTFK{C329}}%
+\DeclareUnicodeCharacter{C32A}{\UTFK{C32A}}%
+\DeclareUnicodeCharacter{C32B}{\UTFK{C32B}}%
+\DeclareUnicodeCharacter{C32C}{\UTFK{C32C}}%
+\DeclareUnicodeCharacter{C32D}{\UTFK{C32D}}%
+\DeclareUnicodeCharacter{C32E}{\UTFK{C32E}}%
+\DeclareUnicodeCharacter{C32F}{\UTFK{C32F}}%
+\DeclareUnicodeCharacter{C330}{\UTFK{C330}}%
+\DeclareUnicodeCharacter{C331}{\UTFK{C331}}%
+\DeclareUnicodeCharacter{C332}{\UTFK{C332}}%
+\DeclareUnicodeCharacter{C333}{\UTFK{C333}}%
+\DeclareUnicodeCharacter{C334}{\UTFK{C334}}%
+\DeclareUnicodeCharacter{C335}{\UTFK{C335}}%
+\DeclareUnicodeCharacter{C336}{\UTFK{C336}}%
+\DeclareUnicodeCharacter{C337}{\UTFK{C337}}%
+\DeclareUnicodeCharacter{C338}{\UTFK{C338}}%
+\DeclareUnicodeCharacter{C339}{\UTFK{C339}}%
+\DeclareUnicodeCharacter{C33A}{\UTFK{C33A}}%
+\DeclareUnicodeCharacter{C33B}{\UTFK{C33B}}%
+\DeclareUnicodeCharacter{C33C}{\UTFK{C33C}}%
+\DeclareUnicodeCharacter{C33D}{\UTFK{C33D}}%
+\DeclareUnicodeCharacter{C33E}{\UTFK{C33E}}%
+\DeclareUnicodeCharacter{C33F}{\UTFK{C33F}}%
+\DeclareUnicodeCharacter{C340}{\UTFK{C340}}%
+\DeclareUnicodeCharacter{C341}{\UTFK{C341}}%
+\DeclareUnicodeCharacter{C342}{\UTFK{C342}}%
+\DeclareUnicodeCharacter{C343}{\UTFK{C343}}%
+\DeclareUnicodeCharacter{C344}{\UTFK{C344}}%
+\DeclareUnicodeCharacter{C345}{\UTFK{C345}}%
+\DeclareUnicodeCharacter{C346}{\UTFK{C346}}%
+\DeclareUnicodeCharacter{C347}{\UTFK{C347}}%
+\DeclareUnicodeCharacter{C348}{\UTFK{C348}}%
+\DeclareUnicodeCharacter{C349}{\UTFK{C349}}%
+\DeclareUnicodeCharacter{C34A}{\UTFK{C34A}}%
+\DeclareUnicodeCharacter{C34B}{\UTFK{C34B}}%
+\DeclareUnicodeCharacter{C34C}{\UTFK{C34C}}%
+\DeclareUnicodeCharacter{C34D}{\UTFK{C34D}}%
+\DeclareUnicodeCharacter{C34E}{\UTFK{C34E}}%
+\DeclareUnicodeCharacter{C34F}{\UTFK{C34F}}%
+\DeclareUnicodeCharacter{C350}{\UTFK{C350}}%
+\DeclareUnicodeCharacter{C351}{\UTFK{C351}}%
+\DeclareUnicodeCharacter{C352}{\UTFK{C352}}%
+\DeclareUnicodeCharacter{C353}{\UTFK{C353}}%
+\DeclareUnicodeCharacter{C354}{\UTFK{C354}}%
+\DeclareUnicodeCharacter{C355}{\UTFK{C355}}%
+\DeclareUnicodeCharacter{C356}{\UTFK{C356}}%
+\DeclareUnicodeCharacter{C357}{\UTFK{C357}}%
+\DeclareUnicodeCharacter{C358}{\UTFK{C358}}%
+\DeclareUnicodeCharacter{C359}{\UTFK{C359}}%
+\DeclareUnicodeCharacter{C35A}{\UTFK{C35A}}%
+\DeclareUnicodeCharacter{C35B}{\UTFK{C35B}}%
+\DeclareUnicodeCharacter{C35C}{\UTFK{C35C}}%
+\DeclareUnicodeCharacter{C35D}{\UTFK{C35D}}%
+\DeclareUnicodeCharacter{C35E}{\UTFK{C35E}}%
+\DeclareUnicodeCharacter{C35F}{\UTFK{C35F}}%
+\DeclareUnicodeCharacter{C360}{\UTFK{C360}}%
+\DeclareUnicodeCharacter{C361}{\UTFK{C361}}%
+\DeclareUnicodeCharacter{C362}{\UTFK{C362}}%
+\DeclareUnicodeCharacter{C363}{\UTFK{C363}}%
+\DeclareUnicodeCharacter{C364}{\UTFK{C364}}%
+\DeclareUnicodeCharacter{C365}{\UTFK{C365}}%
+\DeclareUnicodeCharacter{C366}{\UTFK{C366}}%
+\DeclareUnicodeCharacter{C367}{\UTFK{C367}}%
+\DeclareUnicodeCharacter{C368}{\UTFK{C368}}%
+\DeclareUnicodeCharacter{C369}{\UTFK{C369}}%
+\DeclareUnicodeCharacter{C36A}{\UTFK{C36A}}%
+\DeclareUnicodeCharacter{C36B}{\UTFK{C36B}}%
+\DeclareUnicodeCharacter{C36C}{\UTFK{C36C}}%
+\DeclareUnicodeCharacter{C36D}{\UTFK{C36D}}%
+\DeclareUnicodeCharacter{C36E}{\UTFK{C36E}}%
+\DeclareUnicodeCharacter{C36F}{\UTFK{C36F}}%
+\DeclareUnicodeCharacter{C370}{\UTFK{C370}}%
+\DeclareUnicodeCharacter{C371}{\UTFK{C371}}%
+\DeclareUnicodeCharacter{C372}{\UTFK{C372}}%
+\DeclareUnicodeCharacter{C373}{\UTFK{C373}}%
+\DeclareUnicodeCharacter{C374}{\UTFK{C374}}%
+\DeclareUnicodeCharacter{C375}{\UTFK{C375}}%
+\DeclareUnicodeCharacter{C376}{\UTFK{C376}}%
+\DeclareUnicodeCharacter{C377}{\UTFK{C377}}%
+\DeclareUnicodeCharacter{C378}{\UTFK{C378}}%
+\DeclareUnicodeCharacter{C379}{\UTFK{C379}}%
+\DeclareUnicodeCharacter{C37A}{\UTFK{C37A}}%
+\DeclareUnicodeCharacter{C37B}{\UTFK{C37B}}%
+\DeclareUnicodeCharacter{C37C}{\UTFK{C37C}}%
+\DeclareUnicodeCharacter{C37D}{\UTFK{C37D}}%
+\DeclareUnicodeCharacter{C37E}{\UTFK{C37E}}%
+\DeclareUnicodeCharacter{C37F}{\UTFK{C37F}}%
+\DeclareUnicodeCharacter{C380}{\UTFK{C380}}%
+\DeclareUnicodeCharacter{C381}{\UTFK{C381}}%
+\DeclareUnicodeCharacter{C382}{\UTFK{C382}}%
+\DeclareUnicodeCharacter{C383}{\UTFK{C383}}%
+\DeclareUnicodeCharacter{C384}{\UTFK{C384}}%
+\DeclareUnicodeCharacter{C385}{\UTFK{C385}}%
+\DeclareUnicodeCharacter{C386}{\UTFK{C386}}%
+\DeclareUnicodeCharacter{C387}{\UTFK{C387}}%
+\DeclareUnicodeCharacter{C388}{\UTFK{C388}}%
+\DeclareUnicodeCharacter{C389}{\UTFK{C389}}%
+\DeclareUnicodeCharacter{C38A}{\UTFK{C38A}}%
+\DeclareUnicodeCharacter{C38B}{\UTFK{C38B}}%
+\DeclareUnicodeCharacter{C38C}{\UTFK{C38C}}%
+\DeclareUnicodeCharacter{C38D}{\UTFK{C38D}}%
+\DeclareUnicodeCharacter{C38E}{\UTFK{C38E}}%
+\DeclareUnicodeCharacter{C38F}{\UTFK{C38F}}%
+\DeclareUnicodeCharacter{C390}{\UTFK{C390}}%
+\DeclareUnicodeCharacter{C391}{\UTFK{C391}}%
+\DeclareUnicodeCharacter{C392}{\UTFK{C392}}%
+\DeclareUnicodeCharacter{C393}{\UTFK{C393}}%
+\DeclareUnicodeCharacter{C394}{\UTFK{C394}}%
+\DeclareUnicodeCharacter{C395}{\UTFK{C395}}%
+\DeclareUnicodeCharacter{C396}{\UTFK{C396}}%
+\DeclareUnicodeCharacter{C397}{\UTFK{C397}}%
+\DeclareUnicodeCharacter{C398}{\UTFK{C398}}%
+\DeclareUnicodeCharacter{C399}{\UTFK{C399}}%
+\DeclareUnicodeCharacter{C39A}{\UTFK{C39A}}%
+\DeclareUnicodeCharacter{C39B}{\UTFK{C39B}}%
+\DeclareUnicodeCharacter{C39C}{\UTFK{C39C}}%
+\DeclareUnicodeCharacter{C39D}{\UTFK{C39D}}%
+\DeclareUnicodeCharacter{C39E}{\UTFK{C39E}}%
+\DeclareUnicodeCharacter{C39F}{\UTFK{C39F}}%
+\DeclareUnicodeCharacter{C3A0}{\UTFK{C3A0}}%
+\DeclareUnicodeCharacter{C3A1}{\UTFK{C3A1}}%
+\DeclareUnicodeCharacter{C3A2}{\UTFK{C3A2}}%
+\DeclareUnicodeCharacter{C3A3}{\UTFK{C3A3}}%
+\DeclareUnicodeCharacter{C3A4}{\UTFK{C3A4}}%
+\DeclareUnicodeCharacter{C3A5}{\UTFK{C3A5}}%
+\DeclareUnicodeCharacter{C3A6}{\UTFK{C3A6}}%
+\DeclareUnicodeCharacter{C3A7}{\UTFK{C3A7}}%
+\DeclareUnicodeCharacter{C3A8}{\UTFK{C3A8}}%
+\DeclareUnicodeCharacter{C3A9}{\UTFK{C3A9}}%
+\DeclareUnicodeCharacter{C3AA}{\UTFK{C3AA}}%
+\DeclareUnicodeCharacter{C3AB}{\UTFK{C3AB}}%
+\DeclareUnicodeCharacter{C3AC}{\UTFK{C3AC}}%
+\DeclareUnicodeCharacter{C3AD}{\UTFK{C3AD}}%
+\DeclareUnicodeCharacter{C3AE}{\UTFK{C3AE}}%
+\DeclareUnicodeCharacter{C3AF}{\UTFK{C3AF}}%
+\DeclareUnicodeCharacter{C3B0}{\UTFK{C3B0}}%
+\DeclareUnicodeCharacter{C3B1}{\UTFK{C3B1}}%
+\DeclareUnicodeCharacter{C3B2}{\UTFK{C3B2}}%
+\DeclareUnicodeCharacter{C3B3}{\UTFK{C3B3}}%
+\DeclareUnicodeCharacter{C3B4}{\UTFK{C3B4}}%
+\DeclareUnicodeCharacter{C3B5}{\UTFK{C3B5}}%
+\DeclareUnicodeCharacter{C3B6}{\UTFK{C3B6}}%
+\DeclareUnicodeCharacter{C3B7}{\UTFK{C3B7}}%
+\DeclareUnicodeCharacter{C3B8}{\UTFK{C3B8}}%
+\DeclareUnicodeCharacter{C3B9}{\UTFK{C3B9}}%
+\DeclareUnicodeCharacter{C3BA}{\UTFK{C3BA}}%
+\DeclareUnicodeCharacter{C3BB}{\UTFK{C3BB}}%
+\DeclareUnicodeCharacter{C3BC}{\UTFK{C3BC}}%
+\DeclareUnicodeCharacter{C3BD}{\UTFK{C3BD}}%
+\DeclareUnicodeCharacter{C3BE}{\UTFK{C3BE}}%
+\DeclareUnicodeCharacter{C3BF}{\UTFK{C3BF}}%
+\DeclareUnicodeCharacter{C3C0}{\UTFK{C3C0}}%
+\DeclareUnicodeCharacter{C3C1}{\UTFK{C3C1}}%
+\DeclareUnicodeCharacter{C3C2}{\UTFK{C3C2}}%
+\DeclareUnicodeCharacter{C3C3}{\UTFK{C3C3}}%
+\DeclareUnicodeCharacter{C3C4}{\UTFK{C3C4}}%
+\DeclareUnicodeCharacter{C3C5}{\UTFK{C3C5}}%
+\DeclareUnicodeCharacter{C3C6}{\UTFK{C3C6}}%
+\DeclareUnicodeCharacter{C3C7}{\UTFK{C3C7}}%
+\DeclareUnicodeCharacter{C3C8}{\UTFK{C3C8}}%
+\DeclareUnicodeCharacter{C3C9}{\UTFK{C3C9}}%
+\DeclareUnicodeCharacter{C3CA}{\UTFK{C3CA}}%
+\DeclareUnicodeCharacter{C3CB}{\UTFK{C3CB}}%
+\DeclareUnicodeCharacter{C3CC}{\UTFK{C3CC}}%
+\DeclareUnicodeCharacter{C3CD}{\UTFK{C3CD}}%
+\DeclareUnicodeCharacter{C3CE}{\UTFK{C3CE}}%
+\DeclareUnicodeCharacter{C3CF}{\UTFK{C3CF}}%
+\DeclareUnicodeCharacter{C3D0}{\UTFK{C3D0}}%
+\DeclareUnicodeCharacter{C3D1}{\UTFK{C3D1}}%
+\DeclareUnicodeCharacter{C3D2}{\UTFK{C3D2}}%
+\DeclareUnicodeCharacter{C3D3}{\UTFK{C3D3}}%
+\DeclareUnicodeCharacter{C3D4}{\UTFK{C3D4}}%
+\DeclareUnicodeCharacter{C3D5}{\UTFK{C3D5}}%
+\DeclareUnicodeCharacter{C3D6}{\UTFK{C3D6}}%
+\DeclareUnicodeCharacter{C3D7}{\UTFK{C3D7}}%
+\DeclareUnicodeCharacter{C3D8}{\UTFK{C3D8}}%
+\DeclareUnicodeCharacter{C3D9}{\UTFK{C3D9}}%
+\DeclareUnicodeCharacter{C3DA}{\UTFK{C3DA}}%
+\DeclareUnicodeCharacter{C3DB}{\UTFK{C3DB}}%
+\DeclareUnicodeCharacter{C3DC}{\UTFK{C3DC}}%
+\DeclareUnicodeCharacter{C3DD}{\UTFK{C3DD}}%
+\DeclareUnicodeCharacter{C3DE}{\UTFK{C3DE}}%
+\DeclareUnicodeCharacter{C3DF}{\UTFK{C3DF}}%
+\DeclareUnicodeCharacter{C3E0}{\UTFK{C3E0}}%
+\DeclareUnicodeCharacter{C3E1}{\UTFK{C3E1}}%
+\DeclareUnicodeCharacter{C3E2}{\UTFK{C3E2}}%
+\DeclareUnicodeCharacter{C3E3}{\UTFK{C3E3}}%
+\DeclareUnicodeCharacter{C3E4}{\UTFK{C3E4}}%
+\DeclareUnicodeCharacter{C3E5}{\UTFK{C3E5}}%
+\DeclareUnicodeCharacter{C3E6}{\UTFK{C3E6}}%
+\DeclareUnicodeCharacter{C3E7}{\UTFK{C3E7}}%
+\DeclareUnicodeCharacter{C3E8}{\UTFK{C3E8}}%
+\DeclareUnicodeCharacter{C3E9}{\UTFK{C3E9}}%
+\DeclareUnicodeCharacter{C3EA}{\UTFK{C3EA}}%
+\DeclareUnicodeCharacter{C3EB}{\UTFK{C3EB}}%
+\DeclareUnicodeCharacter{C3EC}{\UTFK{C3EC}}%
+\DeclareUnicodeCharacter{C3ED}{\UTFK{C3ED}}%
+\DeclareUnicodeCharacter{C3EE}{\UTFK{C3EE}}%
+\DeclareUnicodeCharacter{C3EF}{\UTFK{C3EF}}%
+\DeclareUnicodeCharacter{C3F0}{\UTFK{C3F0}}%
+\DeclareUnicodeCharacter{C3F1}{\UTFK{C3F1}}%
+\DeclareUnicodeCharacter{C3F2}{\UTFK{C3F2}}%
+\DeclareUnicodeCharacter{C3F3}{\UTFK{C3F3}}%
+\DeclareUnicodeCharacter{C3F4}{\UTFK{C3F4}}%
+\DeclareUnicodeCharacter{C3F5}{\UTFK{C3F5}}%
+\DeclareUnicodeCharacter{C3F6}{\UTFK{C3F6}}%
+\DeclareUnicodeCharacter{C3F7}{\UTFK{C3F7}}%
+\DeclareUnicodeCharacter{C3F8}{\UTFK{C3F8}}%
+\DeclareUnicodeCharacter{C3F9}{\UTFK{C3F9}}%
+\DeclareUnicodeCharacter{C3FA}{\UTFK{C3FA}}%
+\DeclareUnicodeCharacter{C3FB}{\UTFK{C3FB}}%
+\DeclareUnicodeCharacter{C3FC}{\UTFK{C3FC}}%
+\DeclareUnicodeCharacter{C3FD}{\UTFK{C3FD}}%
+\DeclareUnicodeCharacter{C3FE}{\UTFK{C3FE}}%
+\DeclareUnicodeCharacter{C3FF}{\UTFK{C3FF}}%
+\DeclareUnicodeCharacter{C400}{\UTFK{C400}}%
+\DeclareUnicodeCharacter{C401}{\UTFK{C401}}%
+\DeclareUnicodeCharacter{C402}{\UTFK{C402}}%
+\DeclareUnicodeCharacter{C403}{\UTFK{C403}}%
+\DeclareUnicodeCharacter{C404}{\UTFK{C404}}%
+\DeclareUnicodeCharacter{C405}{\UTFK{C405}}%
+\DeclareUnicodeCharacter{C406}{\UTFK{C406}}%
+\DeclareUnicodeCharacter{C407}{\UTFK{C407}}%
+\DeclareUnicodeCharacter{C408}{\UTFK{C408}}%
+\DeclareUnicodeCharacter{C409}{\UTFK{C409}}%
+\DeclareUnicodeCharacter{C40A}{\UTFK{C40A}}%
+\DeclareUnicodeCharacter{C40B}{\UTFK{C40B}}%
+\DeclareUnicodeCharacter{C40C}{\UTFK{C40C}}%
+\DeclareUnicodeCharacter{C40D}{\UTFK{C40D}}%
+\DeclareUnicodeCharacter{C40E}{\UTFK{C40E}}%
+\DeclareUnicodeCharacter{C40F}{\UTFK{C40F}}%
+\DeclareUnicodeCharacter{C410}{\UTFK{C410}}%
+\DeclareUnicodeCharacter{C411}{\UTFK{C411}}%
+\DeclareUnicodeCharacter{C412}{\UTFK{C412}}%
+\DeclareUnicodeCharacter{C413}{\UTFK{C413}}%
+\DeclareUnicodeCharacter{C414}{\UTFK{C414}}%
+\DeclareUnicodeCharacter{C415}{\UTFK{C415}}%
+\DeclareUnicodeCharacter{C416}{\UTFK{C416}}%
+\DeclareUnicodeCharacter{C417}{\UTFK{C417}}%
+\DeclareUnicodeCharacter{C418}{\UTFK{C418}}%
+\DeclareUnicodeCharacter{C419}{\UTFK{C419}}%
+\DeclareUnicodeCharacter{C41A}{\UTFK{C41A}}%
+\DeclareUnicodeCharacter{C41B}{\UTFK{C41B}}%
+\DeclareUnicodeCharacter{C41C}{\UTFK{C41C}}%
+\DeclareUnicodeCharacter{C41D}{\UTFK{C41D}}%
+\DeclareUnicodeCharacter{C41E}{\UTFK{C41E}}%
+\DeclareUnicodeCharacter{C41F}{\UTFK{C41F}}%
+\DeclareUnicodeCharacter{C420}{\UTFK{C420}}%
+\DeclareUnicodeCharacter{C421}{\UTFK{C421}}%
+\DeclareUnicodeCharacter{C422}{\UTFK{C422}}%
+\DeclareUnicodeCharacter{C423}{\UTFK{C423}}%
+\DeclareUnicodeCharacter{C424}{\UTFK{C424}}%
+\DeclareUnicodeCharacter{C425}{\UTFK{C425}}%
+\DeclareUnicodeCharacter{C426}{\UTFK{C426}}%
+\DeclareUnicodeCharacter{C427}{\UTFK{C427}}%
+\DeclareUnicodeCharacter{C428}{\UTFK{C428}}%
+\DeclareUnicodeCharacter{C429}{\UTFK{C429}}%
+\DeclareUnicodeCharacter{C42A}{\UTFK{C42A}}%
+\DeclareUnicodeCharacter{C42B}{\UTFK{C42B}}%
+\DeclareUnicodeCharacter{C42C}{\UTFK{C42C}}%
+\DeclareUnicodeCharacter{C42D}{\UTFK{C42D}}%
+\DeclareUnicodeCharacter{C42E}{\UTFK{C42E}}%
+\DeclareUnicodeCharacter{C42F}{\UTFK{C42F}}%
+\DeclareUnicodeCharacter{C430}{\UTFK{C430}}%
+\DeclareUnicodeCharacter{C431}{\UTFK{C431}}%
+\DeclareUnicodeCharacter{C432}{\UTFK{C432}}%
+\DeclareUnicodeCharacter{C433}{\UTFK{C433}}%
+\DeclareUnicodeCharacter{C434}{\UTFK{C434}}%
+\DeclareUnicodeCharacter{C435}{\UTFK{C435}}%
+\DeclareUnicodeCharacter{C436}{\UTFK{C436}}%
+\DeclareUnicodeCharacter{C437}{\UTFK{C437}}%
+\DeclareUnicodeCharacter{C438}{\UTFK{C438}}%
+\DeclareUnicodeCharacter{C439}{\UTFK{C439}}%
+\DeclareUnicodeCharacter{C43A}{\UTFK{C43A}}%
+\DeclareUnicodeCharacter{C43B}{\UTFK{C43B}}%
+\DeclareUnicodeCharacter{C43C}{\UTFK{C43C}}%
+\DeclareUnicodeCharacter{C43D}{\UTFK{C43D}}%
+\DeclareUnicodeCharacter{C43E}{\UTFK{C43E}}%
+\DeclareUnicodeCharacter{C43F}{\UTFK{C43F}}%
+\DeclareUnicodeCharacter{C440}{\UTFK{C440}}%
+\DeclareUnicodeCharacter{C441}{\UTFK{C441}}%
+\DeclareUnicodeCharacter{C442}{\UTFK{C442}}%
+\DeclareUnicodeCharacter{C443}{\UTFK{C443}}%
+\DeclareUnicodeCharacter{C444}{\UTFK{C444}}%
+\DeclareUnicodeCharacter{C445}{\UTFK{C445}}%
+\DeclareUnicodeCharacter{C446}{\UTFK{C446}}%
+\DeclareUnicodeCharacter{C447}{\UTFK{C447}}%
+\DeclareUnicodeCharacter{C448}{\UTFK{C448}}%
+\DeclareUnicodeCharacter{C449}{\UTFK{C449}}%
+\DeclareUnicodeCharacter{C44A}{\UTFK{C44A}}%
+\DeclareUnicodeCharacter{C44B}{\UTFK{C44B}}%
+\DeclareUnicodeCharacter{C44C}{\UTFK{C44C}}%
+\DeclareUnicodeCharacter{C44D}{\UTFK{C44D}}%
+\DeclareUnicodeCharacter{C44E}{\UTFK{C44E}}%
+\DeclareUnicodeCharacter{C44F}{\UTFK{C44F}}%
+\DeclareUnicodeCharacter{C450}{\UTFK{C450}}%
+\DeclareUnicodeCharacter{C451}{\UTFK{C451}}%
+\DeclareUnicodeCharacter{C452}{\UTFK{C452}}%
+\DeclareUnicodeCharacter{C453}{\UTFK{C453}}%
+\DeclareUnicodeCharacter{C454}{\UTFK{C454}}%
+\DeclareUnicodeCharacter{C455}{\UTFK{C455}}%
+\DeclareUnicodeCharacter{C456}{\UTFK{C456}}%
+\DeclareUnicodeCharacter{C457}{\UTFK{C457}}%
+\DeclareUnicodeCharacter{C458}{\UTFK{C458}}%
+\DeclareUnicodeCharacter{C459}{\UTFK{C459}}%
+\DeclareUnicodeCharacter{C45A}{\UTFK{C45A}}%
+\DeclareUnicodeCharacter{C45B}{\UTFK{C45B}}%
+\DeclareUnicodeCharacter{C45C}{\UTFK{C45C}}%
+\DeclareUnicodeCharacter{C45D}{\UTFK{C45D}}%
+\DeclareUnicodeCharacter{C45E}{\UTFK{C45E}}%
+\DeclareUnicodeCharacter{C45F}{\UTFK{C45F}}%
+\DeclareUnicodeCharacter{C460}{\UTFK{C460}}%
+\DeclareUnicodeCharacter{C461}{\UTFK{C461}}%
+\DeclareUnicodeCharacter{C462}{\UTFK{C462}}%
+\DeclareUnicodeCharacter{C463}{\UTFK{C463}}%
+\DeclareUnicodeCharacter{C464}{\UTFK{C464}}%
+\DeclareUnicodeCharacter{C465}{\UTFK{C465}}%
+\DeclareUnicodeCharacter{C466}{\UTFK{C466}}%
+\DeclareUnicodeCharacter{C467}{\UTFK{C467}}%
+\DeclareUnicodeCharacter{C468}{\UTFK{C468}}%
+\DeclareUnicodeCharacter{C469}{\UTFK{C469}}%
+\DeclareUnicodeCharacter{C46A}{\UTFK{C46A}}%
+\DeclareUnicodeCharacter{C46B}{\UTFK{C46B}}%
+\DeclareUnicodeCharacter{C46C}{\UTFK{C46C}}%
+\DeclareUnicodeCharacter{C46D}{\UTFK{C46D}}%
+\DeclareUnicodeCharacter{C46E}{\UTFK{C46E}}%
+\DeclareUnicodeCharacter{C46F}{\UTFK{C46F}}%
+\DeclareUnicodeCharacter{C470}{\UTFK{C470}}%
+\DeclareUnicodeCharacter{C471}{\UTFK{C471}}%
+\DeclareUnicodeCharacter{C472}{\UTFK{C472}}%
+\DeclareUnicodeCharacter{C473}{\UTFK{C473}}%
+\DeclareUnicodeCharacter{C474}{\UTFK{C474}}%
+\DeclareUnicodeCharacter{C475}{\UTFK{C475}}%
+\DeclareUnicodeCharacter{C476}{\UTFK{C476}}%
+\DeclareUnicodeCharacter{C477}{\UTFK{C477}}%
+\DeclareUnicodeCharacter{C478}{\UTFK{C478}}%
+\DeclareUnicodeCharacter{C479}{\UTFK{C479}}%
+\DeclareUnicodeCharacter{C47A}{\UTFK{C47A}}%
+\DeclareUnicodeCharacter{C47B}{\UTFK{C47B}}%
+\DeclareUnicodeCharacter{C47C}{\UTFK{C47C}}%
+\DeclareUnicodeCharacter{C47D}{\UTFK{C47D}}%
+\DeclareUnicodeCharacter{C47E}{\UTFK{C47E}}%
+\DeclareUnicodeCharacter{C47F}{\UTFK{C47F}}%
+\DeclareUnicodeCharacter{C480}{\UTFK{C480}}%
+\DeclareUnicodeCharacter{C481}{\UTFK{C481}}%
+\DeclareUnicodeCharacter{C482}{\UTFK{C482}}%
+\DeclareUnicodeCharacter{C483}{\UTFK{C483}}%
+\DeclareUnicodeCharacter{C484}{\UTFK{C484}}%
+\DeclareUnicodeCharacter{C485}{\UTFK{C485}}%
+\DeclareUnicodeCharacter{C486}{\UTFK{C486}}%
+\DeclareUnicodeCharacter{C487}{\UTFK{C487}}%
+\DeclareUnicodeCharacter{C488}{\UTFK{C488}}%
+\DeclareUnicodeCharacter{C489}{\UTFK{C489}}%
+\DeclareUnicodeCharacter{C48A}{\UTFK{C48A}}%
+\DeclareUnicodeCharacter{C48B}{\UTFK{C48B}}%
+\DeclareUnicodeCharacter{C48C}{\UTFK{C48C}}%
+\DeclareUnicodeCharacter{C48D}{\UTFK{C48D}}%
+\DeclareUnicodeCharacter{C48E}{\UTFK{C48E}}%
+\DeclareUnicodeCharacter{C48F}{\UTFK{C48F}}%
+\DeclareUnicodeCharacter{C490}{\UTFK{C490}}%
+\DeclareUnicodeCharacter{C491}{\UTFK{C491}}%
+\DeclareUnicodeCharacter{C492}{\UTFK{C492}}%
+\DeclareUnicodeCharacter{C493}{\UTFK{C493}}%
+\DeclareUnicodeCharacter{C494}{\UTFK{C494}}%
+\DeclareUnicodeCharacter{C495}{\UTFK{C495}}%
+\DeclareUnicodeCharacter{C496}{\UTFK{C496}}%
+\DeclareUnicodeCharacter{C497}{\UTFK{C497}}%
+\DeclareUnicodeCharacter{C498}{\UTFK{C498}}%
+\DeclareUnicodeCharacter{C499}{\UTFK{C499}}%
+\DeclareUnicodeCharacter{C49A}{\UTFK{C49A}}%
+\DeclareUnicodeCharacter{C49B}{\UTFK{C49B}}%
+\DeclareUnicodeCharacter{C49C}{\UTFK{C49C}}%
+\DeclareUnicodeCharacter{C49D}{\UTFK{C49D}}%
+\DeclareUnicodeCharacter{C49E}{\UTFK{C49E}}%
+\DeclareUnicodeCharacter{C49F}{\UTFK{C49F}}%
+\DeclareUnicodeCharacter{C4A0}{\UTFK{C4A0}}%
+\DeclareUnicodeCharacter{C4A1}{\UTFK{C4A1}}%
+\DeclareUnicodeCharacter{C4A2}{\UTFK{C4A2}}%
+\DeclareUnicodeCharacter{C4A3}{\UTFK{C4A3}}%
+\DeclareUnicodeCharacter{C4A4}{\UTFK{C4A4}}%
+\DeclareUnicodeCharacter{C4A5}{\UTFK{C4A5}}%
+\DeclareUnicodeCharacter{C4A6}{\UTFK{C4A6}}%
+\DeclareUnicodeCharacter{C4A7}{\UTFK{C4A7}}%
+\DeclareUnicodeCharacter{C4A8}{\UTFK{C4A8}}%
+\DeclareUnicodeCharacter{C4A9}{\UTFK{C4A9}}%
+\DeclareUnicodeCharacter{C4AA}{\UTFK{C4AA}}%
+\DeclareUnicodeCharacter{C4AB}{\UTFK{C4AB}}%
+\DeclareUnicodeCharacter{C4AC}{\UTFK{C4AC}}%
+\DeclareUnicodeCharacter{C4AD}{\UTFK{C4AD}}%
+\DeclareUnicodeCharacter{C4AE}{\UTFK{C4AE}}%
+\DeclareUnicodeCharacter{C4AF}{\UTFK{C4AF}}%
+\DeclareUnicodeCharacter{C4B0}{\UTFK{C4B0}}%
+\DeclareUnicodeCharacter{C4B1}{\UTFK{C4B1}}%
+\DeclareUnicodeCharacter{C4B2}{\UTFK{C4B2}}%
+\DeclareUnicodeCharacter{C4B3}{\UTFK{C4B3}}%
+\DeclareUnicodeCharacter{C4B4}{\UTFK{C4B4}}%
+\DeclareUnicodeCharacter{C4B5}{\UTFK{C4B5}}%
+\DeclareUnicodeCharacter{C4B6}{\UTFK{C4B6}}%
+\DeclareUnicodeCharacter{C4B7}{\UTFK{C4B7}}%
+\DeclareUnicodeCharacter{C4B8}{\UTFK{C4B8}}%
+\DeclareUnicodeCharacter{C4B9}{\UTFK{C4B9}}%
+\DeclareUnicodeCharacter{C4BA}{\UTFK{C4BA}}%
+\DeclareUnicodeCharacter{C4BB}{\UTFK{C4BB}}%
+\DeclareUnicodeCharacter{C4BC}{\UTFK{C4BC}}%
+\DeclareUnicodeCharacter{C4BD}{\UTFK{C4BD}}%
+\DeclareUnicodeCharacter{C4BE}{\UTFK{C4BE}}%
+\DeclareUnicodeCharacter{C4BF}{\UTFK{C4BF}}%
+\DeclareUnicodeCharacter{C4C0}{\UTFK{C4C0}}%
+\DeclareUnicodeCharacter{C4C1}{\UTFK{C4C1}}%
+\DeclareUnicodeCharacter{C4C2}{\UTFK{C4C2}}%
+\DeclareUnicodeCharacter{C4C3}{\UTFK{C4C3}}%
+\DeclareUnicodeCharacter{C4C4}{\UTFK{C4C4}}%
+\DeclareUnicodeCharacter{C4C5}{\UTFK{C4C5}}%
+\DeclareUnicodeCharacter{C4C6}{\UTFK{C4C6}}%
+\DeclareUnicodeCharacter{C4C7}{\UTFK{C4C7}}%
+\DeclareUnicodeCharacter{C4C8}{\UTFK{C4C8}}%
+\DeclareUnicodeCharacter{C4C9}{\UTFK{C4C9}}%
+\DeclareUnicodeCharacter{C4CA}{\UTFK{C4CA}}%
+\DeclareUnicodeCharacter{C4CB}{\UTFK{C4CB}}%
+\DeclareUnicodeCharacter{C4CC}{\UTFK{C4CC}}%
+\DeclareUnicodeCharacter{C4CD}{\UTFK{C4CD}}%
+\DeclareUnicodeCharacter{C4CE}{\UTFK{C4CE}}%
+\DeclareUnicodeCharacter{C4CF}{\UTFK{C4CF}}%
+\DeclareUnicodeCharacter{C4D0}{\UTFK{C4D0}}%
+\DeclareUnicodeCharacter{C4D1}{\UTFK{C4D1}}%
+\DeclareUnicodeCharacter{C4D2}{\UTFK{C4D2}}%
+\DeclareUnicodeCharacter{C4D3}{\UTFK{C4D3}}%
+\DeclareUnicodeCharacter{C4D4}{\UTFK{C4D4}}%
+\DeclareUnicodeCharacter{C4D5}{\UTFK{C4D5}}%
+\DeclareUnicodeCharacter{C4D6}{\UTFK{C4D6}}%
+\DeclareUnicodeCharacter{C4D7}{\UTFK{C4D7}}%
+\DeclareUnicodeCharacter{C4D8}{\UTFK{C4D8}}%
+\DeclareUnicodeCharacter{C4D9}{\UTFK{C4D9}}%
+\DeclareUnicodeCharacter{C4DA}{\UTFK{C4DA}}%
+\DeclareUnicodeCharacter{C4DB}{\UTFK{C4DB}}%
+\DeclareUnicodeCharacter{C4DC}{\UTFK{C4DC}}%
+\DeclareUnicodeCharacter{C4DD}{\UTFK{C4DD}}%
+\DeclareUnicodeCharacter{C4DE}{\UTFK{C4DE}}%
+\DeclareUnicodeCharacter{C4DF}{\UTFK{C4DF}}%
+\DeclareUnicodeCharacter{C4E0}{\UTFK{C4E0}}%
+\DeclareUnicodeCharacter{C4E1}{\UTFK{C4E1}}%
+\DeclareUnicodeCharacter{C4E2}{\UTFK{C4E2}}%
+\DeclareUnicodeCharacter{C4E3}{\UTFK{C4E3}}%
+\DeclareUnicodeCharacter{C4E4}{\UTFK{C4E4}}%
+\DeclareUnicodeCharacter{C4E5}{\UTFK{C4E5}}%
+\DeclareUnicodeCharacter{C4E6}{\UTFK{C4E6}}%
+\DeclareUnicodeCharacter{C4E7}{\UTFK{C4E7}}%
+\DeclareUnicodeCharacter{C4E8}{\UTFK{C4E8}}%
+\DeclareUnicodeCharacter{C4E9}{\UTFK{C4E9}}%
+\DeclareUnicodeCharacter{C4EA}{\UTFK{C4EA}}%
+\DeclareUnicodeCharacter{C4EB}{\UTFK{C4EB}}%
+\DeclareUnicodeCharacter{C4EC}{\UTFK{C4EC}}%
+\DeclareUnicodeCharacter{C4ED}{\UTFK{C4ED}}%
+\DeclareUnicodeCharacter{C4EE}{\UTFK{C4EE}}%
+\DeclareUnicodeCharacter{C4EF}{\UTFK{C4EF}}%
+\DeclareUnicodeCharacter{C4F0}{\UTFK{C4F0}}%
+\DeclareUnicodeCharacter{C4F1}{\UTFK{C4F1}}%
+\DeclareUnicodeCharacter{C4F2}{\UTFK{C4F2}}%
+\DeclareUnicodeCharacter{C4F3}{\UTFK{C4F3}}%
+\DeclareUnicodeCharacter{C4F4}{\UTFK{C4F4}}%
+\DeclareUnicodeCharacter{C4F5}{\UTFK{C4F5}}%
+\DeclareUnicodeCharacter{C4F6}{\UTFK{C4F6}}%
+\DeclareUnicodeCharacter{C4F7}{\UTFK{C4F7}}%
+\DeclareUnicodeCharacter{C4F8}{\UTFK{C4F8}}%
+\DeclareUnicodeCharacter{C4F9}{\UTFK{C4F9}}%
+\DeclareUnicodeCharacter{C4FA}{\UTFK{C4FA}}%
+\DeclareUnicodeCharacter{C4FB}{\UTFK{C4FB}}%
+\DeclareUnicodeCharacter{C4FC}{\UTFK{C4FC}}%
+\DeclareUnicodeCharacter{C4FD}{\UTFK{C4FD}}%
+\DeclareUnicodeCharacter{C4FE}{\UTFK{C4FE}}%
+\DeclareUnicodeCharacter{C4FF}{\UTFK{C4FF}}%
+\DeclareUnicodeCharacter{C500}{\UTFK{C500}}%
+\DeclareUnicodeCharacter{C501}{\UTFK{C501}}%
+\DeclareUnicodeCharacter{C502}{\UTFK{C502}}%
+\DeclareUnicodeCharacter{C503}{\UTFK{C503}}%
+\DeclareUnicodeCharacter{C504}{\UTFK{C504}}%
+\DeclareUnicodeCharacter{C505}{\UTFK{C505}}%
+\DeclareUnicodeCharacter{C506}{\UTFK{C506}}%
+\DeclareUnicodeCharacter{C507}{\UTFK{C507}}%
+\DeclareUnicodeCharacter{C508}{\UTFK{C508}}%
+\DeclareUnicodeCharacter{C509}{\UTFK{C509}}%
+\DeclareUnicodeCharacter{C50A}{\UTFK{C50A}}%
+\DeclareUnicodeCharacter{C50B}{\UTFK{C50B}}%
+\DeclareUnicodeCharacter{C50C}{\UTFK{C50C}}%
+\DeclareUnicodeCharacter{C50D}{\UTFK{C50D}}%
+\DeclareUnicodeCharacter{C50E}{\UTFK{C50E}}%
+\DeclareUnicodeCharacter{C50F}{\UTFK{C50F}}%
+\DeclareUnicodeCharacter{C510}{\UTFK{C510}}%
+\DeclareUnicodeCharacter{C511}{\UTFK{C511}}%
+\DeclareUnicodeCharacter{C512}{\UTFK{C512}}%
+\DeclareUnicodeCharacter{C513}{\UTFK{C513}}%
+\DeclareUnicodeCharacter{C514}{\UTFK{C514}}%
+\DeclareUnicodeCharacter{C515}{\UTFK{C515}}%
+\DeclareUnicodeCharacter{C516}{\UTFK{C516}}%
+\DeclareUnicodeCharacter{C517}{\UTFK{C517}}%
+\DeclareUnicodeCharacter{C518}{\UTFK{C518}}%
+\DeclareUnicodeCharacter{C519}{\UTFK{C519}}%
+\DeclareUnicodeCharacter{C51A}{\UTFK{C51A}}%
+\DeclareUnicodeCharacter{C51B}{\UTFK{C51B}}%
+\DeclareUnicodeCharacter{C51C}{\UTFK{C51C}}%
+\DeclareUnicodeCharacter{C51D}{\UTFK{C51D}}%
+\DeclareUnicodeCharacter{C51E}{\UTFK{C51E}}%
+\DeclareUnicodeCharacter{C51F}{\UTFK{C51F}}%
+\DeclareUnicodeCharacter{C520}{\UTFK{C520}}%
+\DeclareUnicodeCharacter{C521}{\UTFK{C521}}%
+\DeclareUnicodeCharacter{C522}{\UTFK{C522}}%
+\DeclareUnicodeCharacter{C523}{\UTFK{C523}}%
+\DeclareUnicodeCharacter{C524}{\UTFK{C524}}%
+\DeclareUnicodeCharacter{C525}{\UTFK{C525}}%
+\DeclareUnicodeCharacter{C526}{\UTFK{C526}}%
+\DeclareUnicodeCharacter{C527}{\UTFK{C527}}%
+\DeclareUnicodeCharacter{C528}{\UTFK{C528}}%
+\DeclareUnicodeCharacter{C529}{\UTFK{C529}}%
+\DeclareUnicodeCharacter{C52A}{\UTFK{C52A}}%
+\DeclareUnicodeCharacter{C52B}{\UTFK{C52B}}%
+\DeclareUnicodeCharacter{C52C}{\UTFK{C52C}}%
+\DeclareUnicodeCharacter{C52D}{\UTFK{C52D}}%
+\DeclareUnicodeCharacter{C52E}{\UTFK{C52E}}%
+\DeclareUnicodeCharacter{C52F}{\UTFK{C52F}}%
+\DeclareUnicodeCharacter{C530}{\UTFK{C530}}%
+\DeclareUnicodeCharacter{C531}{\UTFK{C531}}%
+\DeclareUnicodeCharacter{C532}{\UTFK{C532}}%
+\DeclareUnicodeCharacter{C533}{\UTFK{C533}}%
+\DeclareUnicodeCharacter{C534}{\UTFK{C534}}%
+\DeclareUnicodeCharacter{C535}{\UTFK{C535}}%
+\DeclareUnicodeCharacter{C536}{\UTFK{C536}}%
+\DeclareUnicodeCharacter{C537}{\UTFK{C537}}%
+\DeclareUnicodeCharacter{C538}{\UTFK{C538}}%
+\DeclareUnicodeCharacter{C539}{\UTFK{C539}}%
+\DeclareUnicodeCharacter{C53A}{\UTFK{C53A}}%
+\DeclareUnicodeCharacter{C53B}{\UTFK{C53B}}%
+\DeclareUnicodeCharacter{C53C}{\UTFK{C53C}}%
+\DeclareUnicodeCharacter{C53D}{\UTFK{C53D}}%
+\DeclareUnicodeCharacter{C53E}{\UTFK{C53E}}%
+\DeclareUnicodeCharacter{C53F}{\UTFK{C53F}}%
+\DeclareUnicodeCharacter{C540}{\UTFK{C540}}%
+\DeclareUnicodeCharacter{C541}{\UTFK{C541}}%
+\DeclareUnicodeCharacter{C542}{\UTFK{C542}}%
+\DeclareUnicodeCharacter{C543}{\UTFK{C543}}%
+\DeclareUnicodeCharacter{C544}{\UTFK{C544}}%
+\DeclareUnicodeCharacter{C545}{\UTFK{C545}}%
+\DeclareUnicodeCharacter{C546}{\UTFK{C546}}%
+\DeclareUnicodeCharacter{C547}{\UTFK{C547}}%
+\DeclareUnicodeCharacter{C548}{\UTFK{C548}}%
+\DeclareUnicodeCharacter{C549}{\UTFK{C549}}%
+\DeclareUnicodeCharacter{C54A}{\UTFK{C54A}}%
+\DeclareUnicodeCharacter{C54B}{\UTFK{C54B}}%
+\DeclareUnicodeCharacter{C54C}{\UTFK{C54C}}%
+\DeclareUnicodeCharacter{C54D}{\UTFK{C54D}}%
+\DeclareUnicodeCharacter{C54E}{\UTFK{C54E}}%
+\DeclareUnicodeCharacter{C54F}{\UTFK{C54F}}%
+\DeclareUnicodeCharacter{C550}{\UTFK{C550}}%
+\DeclareUnicodeCharacter{C551}{\UTFK{C551}}%
+\DeclareUnicodeCharacter{C552}{\UTFK{C552}}%
+\DeclareUnicodeCharacter{C553}{\UTFK{C553}}%
+\DeclareUnicodeCharacter{C554}{\UTFK{C554}}%
+\DeclareUnicodeCharacter{C555}{\UTFK{C555}}%
+\DeclareUnicodeCharacter{C556}{\UTFK{C556}}%
+\DeclareUnicodeCharacter{C557}{\UTFK{C557}}%
+\DeclareUnicodeCharacter{C558}{\UTFK{C558}}%
+\DeclareUnicodeCharacter{C559}{\UTFK{C559}}%
+\DeclareUnicodeCharacter{C55A}{\UTFK{C55A}}%
+\DeclareUnicodeCharacter{C55B}{\UTFK{C55B}}%
+\DeclareUnicodeCharacter{C55C}{\UTFK{C55C}}%
+\DeclareUnicodeCharacter{C55D}{\UTFK{C55D}}%
+\DeclareUnicodeCharacter{C55E}{\UTFK{C55E}}%
+\DeclareUnicodeCharacter{C55F}{\UTFK{C55F}}%
+\DeclareUnicodeCharacter{C560}{\UTFK{C560}}%
+\DeclareUnicodeCharacter{C561}{\UTFK{C561}}%
+\DeclareUnicodeCharacter{C562}{\UTFK{C562}}%
+\DeclareUnicodeCharacter{C563}{\UTFK{C563}}%
+\DeclareUnicodeCharacter{C564}{\UTFK{C564}}%
+\DeclareUnicodeCharacter{C565}{\UTFK{C565}}%
+\DeclareUnicodeCharacter{C566}{\UTFK{C566}}%
+\DeclareUnicodeCharacter{C567}{\UTFK{C567}}%
+\DeclareUnicodeCharacter{C568}{\UTFK{C568}}%
+\DeclareUnicodeCharacter{C569}{\UTFK{C569}}%
+\DeclareUnicodeCharacter{C56A}{\UTFK{C56A}}%
+\DeclareUnicodeCharacter{C56B}{\UTFK{C56B}}%
+\DeclareUnicodeCharacter{C56C}{\UTFK{C56C}}%
+\DeclareUnicodeCharacter{C56D}{\UTFK{C56D}}%
+\DeclareUnicodeCharacter{C56E}{\UTFK{C56E}}%
+\DeclareUnicodeCharacter{C56F}{\UTFK{C56F}}%
+\DeclareUnicodeCharacter{C570}{\UTFK{C570}}%
+\DeclareUnicodeCharacter{C571}{\UTFK{C571}}%
+\DeclareUnicodeCharacter{C572}{\UTFK{C572}}%
+\DeclareUnicodeCharacter{C573}{\UTFK{C573}}%
+\DeclareUnicodeCharacter{C574}{\UTFK{C574}}%
+\DeclareUnicodeCharacter{C575}{\UTFK{C575}}%
+\DeclareUnicodeCharacter{C576}{\UTFK{C576}}%
+\DeclareUnicodeCharacter{C577}{\UTFK{C577}}%
+\DeclareUnicodeCharacter{C578}{\UTFK{C578}}%
+\DeclareUnicodeCharacter{C579}{\UTFK{C579}}%
+\DeclareUnicodeCharacter{C57A}{\UTFK{C57A}}%
+\DeclareUnicodeCharacter{C57B}{\UTFK{C57B}}%
+\DeclareUnicodeCharacter{C57C}{\UTFK{C57C}}%
+\DeclareUnicodeCharacter{C57D}{\UTFK{C57D}}%
+\DeclareUnicodeCharacter{C57E}{\UTFK{C57E}}%
+\DeclareUnicodeCharacter{C57F}{\UTFK{C57F}}%
+\DeclareUnicodeCharacter{C580}{\UTFK{C580}}%
+\DeclareUnicodeCharacter{C581}{\UTFK{C581}}%
+\DeclareUnicodeCharacter{C582}{\UTFK{C582}}%
+\DeclareUnicodeCharacter{C583}{\UTFK{C583}}%
+\DeclareUnicodeCharacter{C584}{\UTFK{C584}}%
+\DeclareUnicodeCharacter{C585}{\UTFK{C585}}%
+\DeclareUnicodeCharacter{C586}{\UTFK{C586}}%
+\DeclareUnicodeCharacter{C587}{\UTFK{C587}}%
+\DeclareUnicodeCharacter{C588}{\UTFK{C588}}%
+\DeclareUnicodeCharacter{C589}{\UTFK{C589}}%
+\DeclareUnicodeCharacter{C58A}{\UTFK{C58A}}%
+\DeclareUnicodeCharacter{C58B}{\UTFK{C58B}}%
+\DeclareUnicodeCharacter{C58C}{\UTFK{C58C}}%
+\DeclareUnicodeCharacter{C58D}{\UTFK{C58D}}%
+\DeclareUnicodeCharacter{C58E}{\UTFK{C58E}}%
+\DeclareUnicodeCharacter{C58F}{\UTFK{C58F}}%
+\DeclareUnicodeCharacter{C590}{\UTFK{C590}}%
+\DeclareUnicodeCharacter{C591}{\UTFK{C591}}%
+\DeclareUnicodeCharacter{C592}{\UTFK{C592}}%
+\DeclareUnicodeCharacter{C593}{\UTFK{C593}}%
+\DeclareUnicodeCharacter{C594}{\UTFK{C594}}%
+\DeclareUnicodeCharacter{C595}{\UTFK{C595}}%
+\DeclareUnicodeCharacter{C596}{\UTFK{C596}}%
+\DeclareUnicodeCharacter{C597}{\UTFK{C597}}%
+\DeclareUnicodeCharacter{C598}{\UTFK{C598}}%
+\DeclareUnicodeCharacter{C599}{\UTFK{C599}}%
+\DeclareUnicodeCharacter{C59A}{\UTFK{C59A}}%
+\DeclareUnicodeCharacter{C59B}{\UTFK{C59B}}%
+\DeclareUnicodeCharacter{C59C}{\UTFK{C59C}}%
+\DeclareUnicodeCharacter{C59D}{\UTFK{C59D}}%
+\DeclareUnicodeCharacter{C59E}{\UTFK{C59E}}%
+\DeclareUnicodeCharacter{C59F}{\UTFK{C59F}}%
+\DeclareUnicodeCharacter{C5A0}{\UTFK{C5A0}}%
+\DeclareUnicodeCharacter{C5A1}{\UTFK{C5A1}}%
+\DeclareUnicodeCharacter{C5A2}{\UTFK{C5A2}}%
+\DeclareUnicodeCharacter{C5A3}{\UTFK{C5A3}}%
+\DeclareUnicodeCharacter{C5A4}{\UTFK{C5A4}}%
+\DeclareUnicodeCharacter{C5A5}{\UTFK{C5A5}}%
+\DeclareUnicodeCharacter{C5A6}{\UTFK{C5A6}}%
+\DeclareUnicodeCharacter{C5A7}{\UTFK{C5A7}}%
+\DeclareUnicodeCharacter{C5A8}{\UTFK{C5A8}}%
+\DeclareUnicodeCharacter{C5A9}{\UTFK{C5A9}}%
+\DeclareUnicodeCharacter{C5AA}{\UTFK{C5AA}}%
+\DeclareUnicodeCharacter{C5AB}{\UTFK{C5AB}}%
+\DeclareUnicodeCharacter{C5AC}{\UTFK{C5AC}}%
+\DeclareUnicodeCharacter{C5AD}{\UTFK{C5AD}}%
+\DeclareUnicodeCharacter{C5AE}{\UTFK{C5AE}}%
+\DeclareUnicodeCharacter{C5AF}{\UTFK{C5AF}}%
+\DeclareUnicodeCharacter{C5B0}{\UTFK{C5B0}}%
+\DeclareUnicodeCharacter{C5B1}{\UTFK{C5B1}}%
+\DeclareUnicodeCharacter{C5B2}{\UTFK{C5B2}}%
+\DeclareUnicodeCharacter{C5B3}{\UTFK{C5B3}}%
+\DeclareUnicodeCharacter{C5B4}{\UTFK{C5B4}}%
+\DeclareUnicodeCharacter{C5B5}{\UTFK{C5B5}}%
+\DeclareUnicodeCharacter{C5B6}{\UTFK{C5B6}}%
+\DeclareUnicodeCharacter{C5B7}{\UTFK{C5B7}}%
+\DeclareUnicodeCharacter{C5B8}{\UTFK{C5B8}}%
+\DeclareUnicodeCharacter{C5B9}{\UTFK{C5B9}}%
+\DeclareUnicodeCharacter{C5BA}{\UTFK{C5BA}}%
+\DeclareUnicodeCharacter{C5BB}{\UTFK{C5BB}}%
+\DeclareUnicodeCharacter{C5BC}{\UTFK{C5BC}}%
+\DeclareUnicodeCharacter{C5BD}{\UTFK{C5BD}}%
+\DeclareUnicodeCharacter{C5BE}{\UTFK{C5BE}}%
+\DeclareUnicodeCharacter{C5BF}{\UTFK{C5BF}}%
+\DeclareUnicodeCharacter{C5C0}{\UTFK{C5C0}}%
+\DeclareUnicodeCharacter{C5C1}{\UTFK{C5C1}}%
+\DeclareUnicodeCharacter{C5C2}{\UTFK{C5C2}}%
+\DeclareUnicodeCharacter{C5C3}{\UTFK{C5C3}}%
+\DeclareUnicodeCharacter{C5C4}{\UTFK{C5C4}}%
+\DeclareUnicodeCharacter{C5C5}{\UTFK{C5C5}}%
+\DeclareUnicodeCharacter{C5C6}{\UTFK{C5C6}}%
+\DeclareUnicodeCharacter{C5C7}{\UTFK{C5C7}}%
+\DeclareUnicodeCharacter{C5C8}{\UTFK{C5C8}}%
+\DeclareUnicodeCharacter{C5C9}{\UTFK{C5C9}}%
+\DeclareUnicodeCharacter{C5CA}{\UTFK{C5CA}}%
+\DeclareUnicodeCharacter{C5CB}{\UTFK{C5CB}}%
+\DeclareUnicodeCharacter{C5CC}{\UTFK{C5CC}}%
+\DeclareUnicodeCharacter{C5CD}{\UTFK{C5CD}}%
+\DeclareUnicodeCharacter{C5CE}{\UTFK{C5CE}}%
+\DeclareUnicodeCharacter{C5CF}{\UTFK{C5CF}}%
+\DeclareUnicodeCharacter{C5D0}{\UTFK{C5D0}}%
+\DeclareUnicodeCharacter{C5D1}{\UTFK{C5D1}}%
+\DeclareUnicodeCharacter{C5D2}{\UTFK{C5D2}}%
+\DeclareUnicodeCharacter{C5D3}{\UTFK{C5D3}}%
+\DeclareUnicodeCharacter{C5D4}{\UTFK{C5D4}}%
+\DeclareUnicodeCharacter{C5D5}{\UTFK{C5D5}}%
+\DeclareUnicodeCharacter{C5D6}{\UTFK{C5D6}}%
+\DeclareUnicodeCharacter{C5D7}{\UTFK{C5D7}}%
+\DeclareUnicodeCharacter{C5D8}{\UTFK{C5D8}}%
+\DeclareUnicodeCharacter{C5D9}{\UTFK{C5D9}}%
+\DeclareUnicodeCharacter{C5DA}{\UTFK{C5DA}}%
+\DeclareUnicodeCharacter{C5DB}{\UTFK{C5DB}}%
+\DeclareUnicodeCharacter{C5DC}{\UTFK{C5DC}}%
+\DeclareUnicodeCharacter{C5DD}{\UTFK{C5DD}}%
+\DeclareUnicodeCharacter{C5DE}{\UTFK{C5DE}}%
+\DeclareUnicodeCharacter{C5DF}{\UTFK{C5DF}}%
+\DeclareUnicodeCharacter{C5E0}{\UTFK{C5E0}}%
+\DeclareUnicodeCharacter{C5E1}{\UTFK{C5E1}}%
+\DeclareUnicodeCharacter{C5E2}{\UTFK{C5E2}}%
+\DeclareUnicodeCharacter{C5E3}{\UTFK{C5E3}}%
+\DeclareUnicodeCharacter{C5E4}{\UTFK{C5E4}}%
+\DeclareUnicodeCharacter{C5E5}{\UTFK{C5E5}}%
+\DeclareUnicodeCharacter{C5E6}{\UTFK{C5E6}}%
+\DeclareUnicodeCharacter{C5E7}{\UTFK{C5E7}}%
+\DeclareUnicodeCharacter{C5E8}{\UTFK{C5E8}}%
+\DeclareUnicodeCharacter{C5E9}{\UTFK{C5E9}}%
+\DeclareUnicodeCharacter{C5EA}{\UTFK{C5EA}}%
+\DeclareUnicodeCharacter{C5EB}{\UTFK{C5EB}}%
+\DeclareUnicodeCharacter{C5EC}{\UTFK{C5EC}}%
+\DeclareUnicodeCharacter{C5ED}{\UTFK{C5ED}}%
+\DeclareUnicodeCharacter{C5EE}{\UTFK{C5EE}}%
+\DeclareUnicodeCharacter{C5EF}{\UTFK{C5EF}}%
+\DeclareUnicodeCharacter{C5F0}{\UTFK{C5F0}}%
+\DeclareUnicodeCharacter{C5F1}{\UTFK{C5F1}}%
+\DeclareUnicodeCharacter{C5F2}{\UTFK{C5F2}}%
+\DeclareUnicodeCharacter{C5F3}{\UTFK{C5F3}}%
+\DeclareUnicodeCharacter{C5F4}{\UTFK{C5F4}}%
+\DeclareUnicodeCharacter{C5F5}{\UTFK{C5F5}}%
+\DeclareUnicodeCharacter{C5F6}{\UTFK{C5F6}}%
+\DeclareUnicodeCharacter{C5F7}{\UTFK{C5F7}}%
+\DeclareUnicodeCharacter{C5F8}{\UTFK{C5F8}}%
+\DeclareUnicodeCharacter{C5F9}{\UTFK{C5F9}}%
+\DeclareUnicodeCharacter{C5FA}{\UTFK{C5FA}}%
+\DeclareUnicodeCharacter{C5FB}{\UTFK{C5FB}}%
+\DeclareUnicodeCharacter{C5FC}{\UTFK{C5FC}}%
+\DeclareUnicodeCharacter{C5FD}{\UTFK{C5FD}}%
+\DeclareUnicodeCharacter{C5FE}{\UTFK{C5FE}}%
+\DeclareUnicodeCharacter{C5FF}{\UTFK{C5FF}}%
+\DeclareUnicodeCharacter{C600}{\UTFK{C600}}%
+\DeclareUnicodeCharacter{C601}{\UTFK{C601}}%
+\DeclareUnicodeCharacter{C602}{\UTFK{C602}}%
+\DeclareUnicodeCharacter{C603}{\UTFK{C603}}%
+\DeclareUnicodeCharacter{C604}{\UTFK{C604}}%
+\DeclareUnicodeCharacter{C605}{\UTFK{C605}}%
+\DeclareUnicodeCharacter{C606}{\UTFK{C606}}%
+\DeclareUnicodeCharacter{C607}{\UTFK{C607}}%
+\DeclareUnicodeCharacter{C608}{\UTFK{C608}}%
+\DeclareUnicodeCharacter{C609}{\UTFK{C609}}%
+\DeclareUnicodeCharacter{C60A}{\UTFK{C60A}}%
+\DeclareUnicodeCharacter{C60B}{\UTFK{C60B}}%
+\DeclareUnicodeCharacter{C60C}{\UTFK{C60C}}%
+\DeclareUnicodeCharacter{C60D}{\UTFK{C60D}}%
+\DeclareUnicodeCharacter{C60E}{\UTFK{C60E}}%
+\DeclareUnicodeCharacter{C60F}{\UTFK{C60F}}%
+\DeclareUnicodeCharacter{C610}{\UTFK{C610}}%
+\DeclareUnicodeCharacter{C611}{\UTFK{C611}}%
+\DeclareUnicodeCharacter{C612}{\UTFK{C612}}%
+\DeclareUnicodeCharacter{C613}{\UTFK{C613}}%
+\DeclareUnicodeCharacter{C614}{\UTFK{C614}}%
+\DeclareUnicodeCharacter{C615}{\UTFK{C615}}%
+\DeclareUnicodeCharacter{C616}{\UTFK{C616}}%
+\DeclareUnicodeCharacter{C617}{\UTFK{C617}}%
+\DeclareUnicodeCharacter{C618}{\UTFK{C618}}%
+\DeclareUnicodeCharacter{C619}{\UTFK{C619}}%
+\DeclareUnicodeCharacter{C61A}{\UTFK{C61A}}%
+\DeclareUnicodeCharacter{C61B}{\UTFK{C61B}}%
+\DeclareUnicodeCharacter{C61C}{\UTFK{C61C}}%
+\DeclareUnicodeCharacter{C61D}{\UTFK{C61D}}%
+\DeclareUnicodeCharacter{C61E}{\UTFK{C61E}}%
+\DeclareUnicodeCharacter{C61F}{\UTFK{C61F}}%
+\DeclareUnicodeCharacter{C620}{\UTFK{C620}}%
+\DeclareUnicodeCharacter{C621}{\UTFK{C621}}%
+\DeclareUnicodeCharacter{C622}{\UTFK{C622}}%
+\DeclareUnicodeCharacter{C623}{\UTFK{C623}}%
+\DeclareUnicodeCharacter{C624}{\UTFK{C624}}%
+\DeclareUnicodeCharacter{C625}{\UTFK{C625}}%
+\DeclareUnicodeCharacter{C626}{\UTFK{C626}}%
+\DeclareUnicodeCharacter{C627}{\UTFK{C627}}%
+\DeclareUnicodeCharacter{C628}{\UTFK{C628}}%
+\DeclareUnicodeCharacter{C629}{\UTFK{C629}}%
+\DeclareUnicodeCharacter{C62A}{\UTFK{C62A}}%
+\DeclareUnicodeCharacter{C62B}{\UTFK{C62B}}%
+\DeclareUnicodeCharacter{C62C}{\UTFK{C62C}}%
+\DeclareUnicodeCharacter{C62D}{\UTFK{C62D}}%
+\DeclareUnicodeCharacter{C62E}{\UTFK{C62E}}%
+\DeclareUnicodeCharacter{C62F}{\UTFK{C62F}}%
+\DeclareUnicodeCharacter{C630}{\UTFK{C630}}%
+\DeclareUnicodeCharacter{C631}{\UTFK{C631}}%
+\DeclareUnicodeCharacter{C632}{\UTFK{C632}}%
+\DeclareUnicodeCharacter{C633}{\UTFK{C633}}%
+\DeclareUnicodeCharacter{C634}{\UTFK{C634}}%
+\DeclareUnicodeCharacter{C635}{\UTFK{C635}}%
+\DeclareUnicodeCharacter{C636}{\UTFK{C636}}%
+\DeclareUnicodeCharacter{C637}{\UTFK{C637}}%
+\DeclareUnicodeCharacter{C638}{\UTFK{C638}}%
+\DeclareUnicodeCharacter{C639}{\UTFK{C639}}%
+\DeclareUnicodeCharacter{C63A}{\UTFK{C63A}}%
+\DeclareUnicodeCharacter{C63B}{\UTFK{C63B}}%
+\DeclareUnicodeCharacter{C63C}{\UTFK{C63C}}%
+\DeclareUnicodeCharacter{C63D}{\UTFK{C63D}}%
+\DeclareUnicodeCharacter{C63E}{\UTFK{C63E}}%
+\DeclareUnicodeCharacter{C63F}{\UTFK{C63F}}%
+\DeclareUnicodeCharacter{C640}{\UTFK{C640}}%
+\DeclareUnicodeCharacter{C641}{\UTFK{C641}}%
+\DeclareUnicodeCharacter{C642}{\UTFK{C642}}%
+\DeclareUnicodeCharacter{C643}{\UTFK{C643}}%
+\DeclareUnicodeCharacter{C644}{\UTFK{C644}}%
+\DeclareUnicodeCharacter{C645}{\UTFK{C645}}%
+\DeclareUnicodeCharacter{C646}{\UTFK{C646}}%
+\DeclareUnicodeCharacter{C647}{\UTFK{C647}}%
+\DeclareUnicodeCharacter{C648}{\UTFK{C648}}%
+\DeclareUnicodeCharacter{C649}{\UTFK{C649}}%
+\DeclareUnicodeCharacter{C64A}{\UTFK{C64A}}%
+\DeclareUnicodeCharacter{C64B}{\UTFK{C64B}}%
+\DeclareUnicodeCharacter{C64C}{\UTFK{C64C}}%
+\DeclareUnicodeCharacter{C64D}{\UTFK{C64D}}%
+\DeclareUnicodeCharacter{C64E}{\UTFK{C64E}}%
+\DeclareUnicodeCharacter{C64F}{\UTFK{C64F}}%
+\DeclareUnicodeCharacter{C650}{\UTFK{C650}}%
+\DeclareUnicodeCharacter{C651}{\UTFK{C651}}%
+\DeclareUnicodeCharacter{C652}{\UTFK{C652}}%
+\DeclareUnicodeCharacter{C653}{\UTFK{C653}}%
+\DeclareUnicodeCharacter{C654}{\UTFK{C654}}%
+\DeclareUnicodeCharacter{C655}{\UTFK{C655}}%
+\DeclareUnicodeCharacter{C656}{\UTFK{C656}}%
+\DeclareUnicodeCharacter{C657}{\UTFK{C657}}%
+\DeclareUnicodeCharacter{C658}{\UTFK{C658}}%
+\DeclareUnicodeCharacter{C659}{\UTFK{C659}}%
+\DeclareUnicodeCharacter{C65A}{\UTFK{C65A}}%
+\DeclareUnicodeCharacter{C65B}{\UTFK{C65B}}%
+\DeclareUnicodeCharacter{C65C}{\UTFK{C65C}}%
+\DeclareUnicodeCharacter{C65D}{\UTFK{C65D}}%
+\DeclareUnicodeCharacter{C65E}{\UTFK{C65E}}%
+\DeclareUnicodeCharacter{C65F}{\UTFK{C65F}}%
+\DeclareUnicodeCharacter{C660}{\UTFK{C660}}%
+\DeclareUnicodeCharacter{C661}{\UTFK{C661}}%
+\DeclareUnicodeCharacter{C662}{\UTFK{C662}}%
+\DeclareUnicodeCharacter{C663}{\UTFK{C663}}%
+\DeclareUnicodeCharacter{C664}{\UTFK{C664}}%
+\DeclareUnicodeCharacter{C665}{\UTFK{C665}}%
+\DeclareUnicodeCharacter{C666}{\UTFK{C666}}%
+\DeclareUnicodeCharacter{C667}{\UTFK{C667}}%
+\DeclareUnicodeCharacter{C668}{\UTFK{C668}}%
+\DeclareUnicodeCharacter{C669}{\UTFK{C669}}%
+\DeclareUnicodeCharacter{C66A}{\UTFK{C66A}}%
+\DeclareUnicodeCharacter{C66B}{\UTFK{C66B}}%
+\DeclareUnicodeCharacter{C66C}{\UTFK{C66C}}%
+\DeclareUnicodeCharacter{C66D}{\UTFK{C66D}}%
+\DeclareUnicodeCharacter{C66E}{\UTFK{C66E}}%
+\DeclareUnicodeCharacter{C66F}{\UTFK{C66F}}%
+\DeclareUnicodeCharacter{C670}{\UTFK{C670}}%
+\DeclareUnicodeCharacter{C671}{\UTFK{C671}}%
+\DeclareUnicodeCharacter{C672}{\UTFK{C672}}%
+\DeclareUnicodeCharacter{C673}{\UTFK{C673}}%
+\DeclareUnicodeCharacter{C674}{\UTFK{C674}}%
+\DeclareUnicodeCharacter{C675}{\UTFK{C675}}%
+\DeclareUnicodeCharacter{C676}{\UTFK{C676}}%
+\DeclareUnicodeCharacter{C677}{\UTFK{C677}}%
+\DeclareUnicodeCharacter{C678}{\UTFK{C678}}%
+\DeclareUnicodeCharacter{C679}{\UTFK{C679}}%
+\DeclareUnicodeCharacter{C67A}{\UTFK{C67A}}%
+\DeclareUnicodeCharacter{C67B}{\UTFK{C67B}}%
+\DeclareUnicodeCharacter{C67C}{\UTFK{C67C}}%
+\DeclareUnicodeCharacter{C67D}{\UTFK{C67D}}%
+\DeclareUnicodeCharacter{C67E}{\UTFK{C67E}}%
+\DeclareUnicodeCharacter{C67F}{\UTFK{C67F}}%
+\DeclareUnicodeCharacter{C680}{\UTFK{C680}}%
+\DeclareUnicodeCharacter{C681}{\UTFK{C681}}%
+\DeclareUnicodeCharacter{C682}{\UTFK{C682}}%
+\DeclareUnicodeCharacter{C683}{\UTFK{C683}}%
+\DeclareUnicodeCharacter{C684}{\UTFK{C684}}%
+\DeclareUnicodeCharacter{C685}{\UTFK{C685}}%
+\DeclareUnicodeCharacter{C686}{\UTFK{C686}}%
+\DeclareUnicodeCharacter{C687}{\UTFK{C687}}%
+\DeclareUnicodeCharacter{C688}{\UTFK{C688}}%
+\DeclareUnicodeCharacter{C689}{\UTFK{C689}}%
+\DeclareUnicodeCharacter{C68A}{\UTFK{C68A}}%
+\DeclareUnicodeCharacter{C68B}{\UTFK{C68B}}%
+\DeclareUnicodeCharacter{C68C}{\UTFK{C68C}}%
+\DeclareUnicodeCharacter{C68D}{\UTFK{C68D}}%
+\DeclareUnicodeCharacter{C68E}{\UTFK{C68E}}%
+\DeclareUnicodeCharacter{C68F}{\UTFK{C68F}}%
+\DeclareUnicodeCharacter{C690}{\UTFK{C690}}%
+\DeclareUnicodeCharacter{C691}{\UTFK{C691}}%
+\DeclareUnicodeCharacter{C692}{\UTFK{C692}}%
+\DeclareUnicodeCharacter{C693}{\UTFK{C693}}%
+\DeclareUnicodeCharacter{C694}{\UTFK{C694}}%
+\DeclareUnicodeCharacter{C695}{\UTFK{C695}}%
+\DeclareUnicodeCharacter{C696}{\UTFK{C696}}%
+\DeclareUnicodeCharacter{C697}{\UTFK{C697}}%
+\DeclareUnicodeCharacter{C698}{\UTFK{C698}}%
+\DeclareUnicodeCharacter{C699}{\UTFK{C699}}%
+\DeclareUnicodeCharacter{C69A}{\UTFK{C69A}}%
+\DeclareUnicodeCharacter{C69B}{\UTFK{C69B}}%
+\DeclareUnicodeCharacter{C69C}{\UTFK{C69C}}%
+\DeclareUnicodeCharacter{C69D}{\UTFK{C69D}}%
+\DeclareUnicodeCharacter{C69E}{\UTFK{C69E}}%
+\DeclareUnicodeCharacter{C69F}{\UTFK{C69F}}%
+\DeclareUnicodeCharacter{C6A0}{\UTFK{C6A0}}%
+\DeclareUnicodeCharacter{C6A1}{\UTFK{C6A1}}%
+\DeclareUnicodeCharacter{C6A2}{\UTFK{C6A2}}%
+\DeclareUnicodeCharacter{C6A3}{\UTFK{C6A3}}%
+\DeclareUnicodeCharacter{C6A4}{\UTFK{C6A4}}%
+\DeclareUnicodeCharacter{C6A5}{\UTFK{C6A5}}%
+\DeclareUnicodeCharacter{C6A6}{\UTFK{C6A6}}%
+\DeclareUnicodeCharacter{C6A7}{\UTFK{C6A7}}%
+\DeclareUnicodeCharacter{C6A8}{\UTFK{C6A8}}%
+\DeclareUnicodeCharacter{C6A9}{\UTFK{C6A9}}%
+\DeclareUnicodeCharacter{C6AA}{\UTFK{C6AA}}%
+\DeclareUnicodeCharacter{C6AB}{\UTFK{C6AB}}%
+\DeclareUnicodeCharacter{C6AC}{\UTFK{C6AC}}%
+\DeclareUnicodeCharacter{C6AD}{\UTFK{C6AD}}%
+\DeclareUnicodeCharacter{C6AE}{\UTFK{C6AE}}%
+\DeclareUnicodeCharacter{C6AF}{\UTFK{C6AF}}%
+\DeclareUnicodeCharacter{C6B0}{\UTFK{C6B0}}%
+\DeclareUnicodeCharacter{C6B1}{\UTFK{C6B1}}%
+\DeclareUnicodeCharacter{C6B2}{\UTFK{C6B2}}%
+\DeclareUnicodeCharacter{C6B3}{\UTFK{C6B3}}%
+\DeclareUnicodeCharacter{C6B4}{\UTFK{C6B4}}%
+\DeclareUnicodeCharacter{C6B5}{\UTFK{C6B5}}%
+\DeclareUnicodeCharacter{C6B6}{\UTFK{C6B6}}%
+\DeclareUnicodeCharacter{C6B7}{\UTFK{C6B7}}%
+\DeclareUnicodeCharacter{C6B8}{\UTFK{C6B8}}%
+\DeclareUnicodeCharacter{C6B9}{\UTFK{C6B9}}%
+\DeclareUnicodeCharacter{C6BA}{\UTFK{C6BA}}%
+\DeclareUnicodeCharacter{C6BB}{\UTFK{C6BB}}%
+\DeclareUnicodeCharacter{C6BC}{\UTFK{C6BC}}%
+\DeclareUnicodeCharacter{C6BD}{\UTFK{C6BD}}%
+\DeclareUnicodeCharacter{C6BE}{\UTFK{C6BE}}%
+\DeclareUnicodeCharacter{C6BF}{\UTFK{C6BF}}%
+\DeclareUnicodeCharacter{C6C0}{\UTFK{C6C0}}%
+\DeclareUnicodeCharacter{C6C1}{\UTFK{C6C1}}%
+\DeclareUnicodeCharacter{C6C2}{\UTFK{C6C2}}%
+\DeclareUnicodeCharacter{C6C3}{\UTFK{C6C3}}%
+\DeclareUnicodeCharacter{C6C4}{\UTFK{C6C4}}%
+\DeclareUnicodeCharacter{C6C5}{\UTFK{C6C5}}%
+\DeclareUnicodeCharacter{C6C6}{\UTFK{C6C6}}%
+\DeclareUnicodeCharacter{C6C7}{\UTFK{C6C7}}%
+\DeclareUnicodeCharacter{C6C8}{\UTFK{C6C8}}%
+\DeclareUnicodeCharacter{C6C9}{\UTFK{C6C9}}%
+\DeclareUnicodeCharacter{C6CA}{\UTFK{C6CA}}%
+\DeclareUnicodeCharacter{C6CB}{\UTFK{C6CB}}%
+\DeclareUnicodeCharacter{C6CC}{\UTFK{C6CC}}%
+\DeclareUnicodeCharacter{C6CD}{\UTFK{C6CD}}%
+\DeclareUnicodeCharacter{C6CE}{\UTFK{C6CE}}%
+\DeclareUnicodeCharacter{C6CF}{\UTFK{C6CF}}%
+\DeclareUnicodeCharacter{C6D0}{\UTFK{C6D0}}%
+\DeclareUnicodeCharacter{C6D1}{\UTFK{C6D1}}%
+\DeclareUnicodeCharacter{C6D2}{\UTFK{C6D2}}%
+\DeclareUnicodeCharacter{C6D3}{\UTFK{C6D3}}%
+\DeclareUnicodeCharacter{C6D4}{\UTFK{C6D4}}%
+\DeclareUnicodeCharacter{C6D5}{\UTFK{C6D5}}%
+\DeclareUnicodeCharacter{C6D6}{\UTFK{C6D6}}%
+\DeclareUnicodeCharacter{C6D7}{\UTFK{C6D7}}%
+\DeclareUnicodeCharacter{C6D8}{\UTFK{C6D8}}%
+\DeclareUnicodeCharacter{C6D9}{\UTFK{C6D9}}%
+\DeclareUnicodeCharacter{C6DA}{\UTFK{C6DA}}%
+\DeclareUnicodeCharacter{C6DB}{\UTFK{C6DB}}%
+\DeclareUnicodeCharacter{C6DC}{\UTFK{C6DC}}%
+\DeclareUnicodeCharacter{C6DD}{\UTFK{C6DD}}%
+\DeclareUnicodeCharacter{C6DE}{\UTFK{C6DE}}%
+\DeclareUnicodeCharacter{C6DF}{\UTFK{C6DF}}%
+\DeclareUnicodeCharacter{C6E0}{\UTFK{C6E0}}%
+\DeclareUnicodeCharacter{C6E1}{\UTFK{C6E1}}%
+\DeclareUnicodeCharacter{C6E2}{\UTFK{C6E2}}%
+\DeclareUnicodeCharacter{C6E3}{\UTFK{C6E3}}%
+\DeclareUnicodeCharacter{C6E4}{\UTFK{C6E4}}%
+\DeclareUnicodeCharacter{C6E5}{\UTFK{C6E5}}%
+\DeclareUnicodeCharacter{C6E6}{\UTFK{C6E6}}%
+\DeclareUnicodeCharacter{C6E7}{\UTFK{C6E7}}%
+\DeclareUnicodeCharacter{C6E8}{\UTFK{C6E8}}%
+\DeclareUnicodeCharacter{C6E9}{\UTFK{C6E9}}%
+\DeclareUnicodeCharacter{C6EA}{\UTFK{C6EA}}%
+\DeclareUnicodeCharacter{C6EB}{\UTFK{C6EB}}%
+\DeclareUnicodeCharacter{C6EC}{\UTFK{C6EC}}%
+\DeclareUnicodeCharacter{C6ED}{\UTFK{C6ED}}%
+\DeclareUnicodeCharacter{C6EE}{\UTFK{C6EE}}%
+\DeclareUnicodeCharacter{C6EF}{\UTFK{C6EF}}%
+\DeclareUnicodeCharacter{C6F0}{\UTFK{C6F0}}%
+\DeclareUnicodeCharacter{C6F1}{\UTFK{C6F1}}%
+\DeclareUnicodeCharacter{C6F2}{\UTFK{C6F2}}%
+\DeclareUnicodeCharacter{C6F3}{\UTFK{C6F3}}%
+\DeclareUnicodeCharacter{C6F4}{\UTFK{C6F4}}%
+\DeclareUnicodeCharacter{C6F5}{\UTFK{C6F5}}%
+\DeclareUnicodeCharacter{C6F6}{\UTFK{C6F6}}%
+\DeclareUnicodeCharacter{C6F7}{\UTFK{C6F7}}%
+\DeclareUnicodeCharacter{C6F8}{\UTFK{C6F8}}%
+\DeclareUnicodeCharacter{C6F9}{\UTFK{C6F9}}%
+\DeclareUnicodeCharacter{C6FA}{\UTFK{C6FA}}%
+\DeclareUnicodeCharacter{C6FB}{\UTFK{C6FB}}%
+\DeclareUnicodeCharacter{C6FC}{\UTFK{C6FC}}%
+\DeclareUnicodeCharacter{C6FD}{\UTFK{C6FD}}%
+\DeclareUnicodeCharacter{C6FE}{\UTFK{C6FE}}%
+\DeclareUnicodeCharacter{C6FF}{\UTFK{C6FF}}%
+\DeclareUnicodeCharacter{C700}{\UTFK{C700}}%
+\DeclareUnicodeCharacter{C701}{\UTFK{C701}}%
+\DeclareUnicodeCharacter{C702}{\UTFK{C702}}%
+\DeclareUnicodeCharacter{C703}{\UTFK{C703}}%
+\DeclareUnicodeCharacter{C704}{\UTFK{C704}}%
+\DeclareUnicodeCharacter{C705}{\UTFK{C705}}%
+\DeclareUnicodeCharacter{C706}{\UTFK{C706}}%
+\DeclareUnicodeCharacter{C707}{\UTFK{C707}}%
+\DeclareUnicodeCharacter{C708}{\UTFK{C708}}%
+\DeclareUnicodeCharacter{C709}{\UTFK{C709}}%
+\DeclareUnicodeCharacter{C70A}{\UTFK{C70A}}%
+\DeclareUnicodeCharacter{C70B}{\UTFK{C70B}}%
+\DeclareUnicodeCharacter{C70C}{\UTFK{C70C}}%
+\DeclareUnicodeCharacter{C70D}{\UTFK{C70D}}%
+\DeclareUnicodeCharacter{C70E}{\UTFK{C70E}}%
+\DeclareUnicodeCharacter{C70F}{\UTFK{C70F}}%
+\DeclareUnicodeCharacter{C710}{\UTFK{C710}}%
+\DeclareUnicodeCharacter{C711}{\UTFK{C711}}%
+\DeclareUnicodeCharacter{C712}{\UTFK{C712}}%
+\DeclareUnicodeCharacter{C713}{\UTFK{C713}}%
+\DeclareUnicodeCharacter{C714}{\UTFK{C714}}%
+\DeclareUnicodeCharacter{C715}{\UTFK{C715}}%
+\DeclareUnicodeCharacter{C716}{\UTFK{C716}}%
+\DeclareUnicodeCharacter{C717}{\UTFK{C717}}%
+\DeclareUnicodeCharacter{C718}{\UTFK{C718}}%
+\DeclareUnicodeCharacter{C719}{\UTFK{C719}}%
+\DeclareUnicodeCharacter{C71A}{\UTFK{C71A}}%
+\DeclareUnicodeCharacter{C71B}{\UTFK{C71B}}%
+\DeclareUnicodeCharacter{C71C}{\UTFK{C71C}}%
+\DeclareUnicodeCharacter{C71D}{\UTFK{C71D}}%
+\DeclareUnicodeCharacter{C71E}{\UTFK{C71E}}%
+\DeclareUnicodeCharacter{C71F}{\UTFK{C71F}}%
+\DeclareUnicodeCharacter{C720}{\UTFK{C720}}%
+\DeclareUnicodeCharacter{C721}{\UTFK{C721}}%
+\DeclareUnicodeCharacter{C722}{\UTFK{C722}}%
+\DeclareUnicodeCharacter{C723}{\UTFK{C723}}%
+\DeclareUnicodeCharacter{C724}{\UTFK{C724}}%
+\DeclareUnicodeCharacter{C725}{\UTFK{C725}}%
+\DeclareUnicodeCharacter{C726}{\UTFK{C726}}%
+\DeclareUnicodeCharacter{C727}{\UTFK{C727}}%
+\DeclareUnicodeCharacter{C728}{\UTFK{C728}}%
+\DeclareUnicodeCharacter{C729}{\UTFK{C729}}%
+\DeclareUnicodeCharacter{C72A}{\UTFK{C72A}}%
+\DeclareUnicodeCharacter{C72B}{\UTFK{C72B}}%
+\DeclareUnicodeCharacter{C72C}{\UTFK{C72C}}%
+\DeclareUnicodeCharacter{C72D}{\UTFK{C72D}}%
+\DeclareUnicodeCharacter{C72E}{\UTFK{C72E}}%
+\DeclareUnicodeCharacter{C72F}{\UTFK{C72F}}%
+\DeclareUnicodeCharacter{C730}{\UTFK{C730}}%
+\DeclareUnicodeCharacter{C731}{\UTFK{C731}}%
+\DeclareUnicodeCharacter{C732}{\UTFK{C732}}%
+\DeclareUnicodeCharacter{C733}{\UTFK{C733}}%
+\DeclareUnicodeCharacter{C734}{\UTFK{C734}}%
+\DeclareUnicodeCharacter{C735}{\UTFK{C735}}%
+\DeclareUnicodeCharacter{C736}{\UTFK{C736}}%
+\DeclareUnicodeCharacter{C737}{\UTFK{C737}}%
+\DeclareUnicodeCharacter{C738}{\UTFK{C738}}%
+\DeclareUnicodeCharacter{C739}{\UTFK{C739}}%
+\DeclareUnicodeCharacter{C73A}{\UTFK{C73A}}%
+\DeclareUnicodeCharacter{C73B}{\UTFK{C73B}}%
+\DeclareUnicodeCharacter{C73C}{\UTFK{C73C}}%
+\DeclareUnicodeCharacter{C73D}{\UTFK{C73D}}%
+\DeclareUnicodeCharacter{C73E}{\UTFK{C73E}}%
+\DeclareUnicodeCharacter{C73F}{\UTFK{C73F}}%
+\DeclareUnicodeCharacter{C740}{\UTFK{C740}}%
+\DeclareUnicodeCharacter{C741}{\UTFK{C741}}%
+\DeclareUnicodeCharacter{C742}{\UTFK{C742}}%
+\DeclareUnicodeCharacter{C743}{\UTFK{C743}}%
+\DeclareUnicodeCharacter{C744}{\UTFK{C744}}%
+\DeclareUnicodeCharacter{C745}{\UTFK{C745}}%
+\DeclareUnicodeCharacter{C746}{\UTFK{C746}}%
+\DeclareUnicodeCharacter{C747}{\UTFK{C747}}%
+\DeclareUnicodeCharacter{C748}{\UTFK{C748}}%
+\DeclareUnicodeCharacter{C749}{\UTFK{C749}}%
+\DeclareUnicodeCharacter{C74A}{\UTFK{C74A}}%
+\DeclareUnicodeCharacter{C74B}{\UTFK{C74B}}%
+\DeclareUnicodeCharacter{C74C}{\UTFK{C74C}}%
+\DeclareUnicodeCharacter{C74D}{\UTFK{C74D}}%
+\DeclareUnicodeCharacter{C74E}{\UTFK{C74E}}%
+\DeclareUnicodeCharacter{C74F}{\UTFK{C74F}}%
+\DeclareUnicodeCharacter{C750}{\UTFK{C750}}%
+\DeclareUnicodeCharacter{C751}{\UTFK{C751}}%
+\DeclareUnicodeCharacter{C752}{\UTFK{C752}}%
+\DeclareUnicodeCharacter{C753}{\UTFK{C753}}%
+\DeclareUnicodeCharacter{C754}{\UTFK{C754}}%
+\DeclareUnicodeCharacter{C755}{\UTFK{C755}}%
+\DeclareUnicodeCharacter{C756}{\UTFK{C756}}%
+\DeclareUnicodeCharacter{C757}{\UTFK{C757}}%
+\DeclareUnicodeCharacter{C758}{\UTFK{C758}}%
+\DeclareUnicodeCharacter{C759}{\UTFK{C759}}%
+\DeclareUnicodeCharacter{C75A}{\UTFK{C75A}}%
+\DeclareUnicodeCharacter{C75B}{\UTFK{C75B}}%
+\DeclareUnicodeCharacter{C75C}{\UTFK{C75C}}%
+\DeclareUnicodeCharacter{C75D}{\UTFK{C75D}}%
+\DeclareUnicodeCharacter{C75E}{\UTFK{C75E}}%
+\DeclareUnicodeCharacter{C75F}{\UTFK{C75F}}%
+\DeclareUnicodeCharacter{C760}{\UTFK{C760}}%
+\DeclareUnicodeCharacter{C761}{\UTFK{C761}}%
+\DeclareUnicodeCharacter{C762}{\UTFK{C762}}%
+\DeclareUnicodeCharacter{C763}{\UTFK{C763}}%
+\DeclareUnicodeCharacter{C764}{\UTFK{C764}}%
+\DeclareUnicodeCharacter{C765}{\UTFK{C765}}%
+\DeclareUnicodeCharacter{C766}{\UTFK{C766}}%
+\DeclareUnicodeCharacter{C767}{\UTFK{C767}}%
+\DeclareUnicodeCharacter{C768}{\UTFK{C768}}%
+\DeclareUnicodeCharacter{C769}{\UTFK{C769}}%
+\DeclareUnicodeCharacter{C76A}{\UTFK{C76A}}%
+\DeclareUnicodeCharacter{C76B}{\UTFK{C76B}}%
+\DeclareUnicodeCharacter{C76C}{\UTFK{C76C}}%
+\DeclareUnicodeCharacter{C76D}{\UTFK{C76D}}%
+\DeclareUnicodeCharacter{C76E}{\UTFK{C76E}}%
+\DeclareUnicodeCharacter{C76F}{\UTFK{C76F}}%
+\DeclareUnicodeCharacter{C770}{\UTFK{C770}}%
+\DeclareUnicodeCharacter{C771}{\UTFK{C771}}%
+\DeclareUnicodeCharacter{C772}{\UTFK{C772}}%
+\DeclareUnicodeCharacter{C773}{\UTFK{C773}}%
+\DeclareUnicodeCharacter{C774}{\UTFK{C774}}%
+\DeclareUnicodeCharacter{C775}{\UTFK{C775}}%
+\DeclareUnicodeCharacter{C776}{\UTFK{C776}}%
+\DeclareUnicodeCharacter{C777}{\UTFK{C777}}%
+\DeclareUnicodeCharacter{C778}{\UTFK{C778}}%
+\DeclareUnicodeCharacter{C779}{\UTFK{C779}}%
+\DeclareUnicodeCharacter{C77A}{\UTFK{C77A}}%
+\DeclareUnicodeCharacter{C77B}{\UTFK{C77B}}%
+\DeclareUnicodeCharacter{C77C}{\UTFK{C77C}}%
+\DeclareUnicodeCharacter{C77D}{\UTFK{C77D}}%
+\DeclareUnicodeCharacter{C77E}{\UTFK{C77E}}%
+\DeclareUnicodeCharacter{C77F}{\UTFK{C77F}}%
+\DeclareUnicodeCharacter{C780}{\UTFK{C780}}%
+\DeclareUnicodeCharacter{C781}{\UTFK{C781}}%
+\DeclareUnicodeCharacter{C782}{\UTFK{C782}}%
+\DeclareUnicodeCharacter{C783}{\UTFK{C783}}%
+\DeclareUnicodeCharacter{C784}{\UTFK{C784}}%
+\DeclareUnicodeCharacter{C785}{\UTFK{C785}}%
+\DeclareUnicodeCharacter{C786}{\UTFK{C786}}%
+\DeclareUnicodeCharacter{C787}{\UTFK{C787}}%
+\DeclareUnicodeCharacter{C788}{\UTFK{C788}}%
+\DeclareUnicodeCharacter{C789}{\UTFK{C789}}%
+\DeclareUnicodeCharacter{C78A}{\UTFK{C78A}}%
+\DeclareUnicodeCharacter{C78B}{\UTFK{C78B}}%
+\DeclareUnicodeCharacter{C78C}{\UTFK{C78C}}%
+\DeclareUnicodeCharacter{C78D}{\UTFK{C78D}}%
+\DeclareUnicodeCharacter{C78E}{\UTFK{C78E}}%
+\DeclareUnicodeCharacter{C78F}{\UTFK{C78F}}%
+\DeclareUnicodeCharacter{C790}{\UTFK{C790}}%
+\DeclareUnicodeCharacter{C791}{\UTFK{C791}}%
+\DeclareUnicodeCharacter{C792}{\UTFK{C792}}%
+\DeclareUnicodeCharacter{C793}{\UTFK{C793}}%
+\DeclareUnicodeCharacter{C794}{\UTFK{C794}}%
+\DeclareUnicodeCharacter{C795}{\UTFK{C795}}%
+\DeclareUnicodeCharacter{C796}{\UTFK{C796}}%
+\DeclareUnicodeCharacter{C797}{\UTFK{C797}}%
+\DeclareUnicodeCharacter{C798}{\UTFK{C798}}%
+\DeclareUnicodeCharacter{C799}{\UTFK{C799}}%
+\DeclareUnicodeCharacter{C79A}{\UTFK{C79A}}%
+\DeclareUnicodeCharacter{C79B}{\UTFK{C79B}}%
+\DeclareUnicodeCharacter{C79C}{\UTFK{C79C}}%
+\DeclareUnicodeCharacter{C79D}{\UTFK{C79D}}%
+\DeclareUnicodeCharacter{C79E}{\UTFK{C79E}}%
+\DeclareUnicodeCharacter{C79F}{\UTFK{C79F}}%
+\DeclareUnicodeCharacter{C7A0}{\UTFK{C7A0}}%
+\DeclareUnicodeCharacter{C7A1}{\UTFK{C7A1}}%
+\DeclareUnicodeCharacter{C7A2}{\UTFK{C7A2}}%
+\DeclareUnicodeCharacter{C7A3}{\UTFK{C7A3}}%
+\DeclareUnicodeCharacter{C7A4}{\UTFK{C7A4}}%
+\DeclareUnicodeCharacter{C7A5}{\UTFK{C7A5}}%
+\DeclareUnicodeCharacter{C7A6}{\UTFK{C7A6}}%
+\DeclareUnicodeCharacter{C7A7}{\UTFK{C7A7}}%
+\DeclareUnicodeCharacter{C7A8}{\UTFK{C7A8}}%
+\DeclareUnicodeCharacter{C7A9}{\UTFK{C7A9}}%
+\DeclareUnicodeCharacter{C7AA}{\UTFK{C7AA}}%
+\DeclareUnicodeCharacter{C7AB}{\UTFK{C7AB}}%
+\DeclareUnicodeCharacter{C7AC}{\UTFK{C7AC}}%
+\DeclareUnicodeCharacter{C7AD}{\UTFK{C7AD}}%
+\DeclareUnicodeCharacter{C7AE}{\UTFK{C7AE}}%
+\DeclareUnicodeCharacter{C7AF}{\UTFK{C7AF}}%
+\DeclareUnicodeCharacter{C7B0}{\UTFK{C7B0}}%
+\DeclareUnicodeCharacter{C7B1}{\UTFK{C7B1}}%
+\DeclareUnicodeCharacter{C7B2}{\UTFK{C7B2}}%
+\DeclareUnicodeCharacter{C7B3}{\UTFK{C7B3}}%
+\DeclareUnicodeCharacter{C7B4}{\UTFK{C7B4}}%
+\DeclareUnicodeCharacter{C7B5}{\UTFK{C7B5}}%
+\DeclareUnicodeCharacter{C7B6}{\UTFK{C7B6}}%
+\DeclareUnicodeCharacter{C7B7}{\UTFK{C7B7}}%
+\DeclareUnicodeCharacter{C7B8}{\UTFK{C7B8}}%
+\DeclareUnicodeCharacter{C7B9}{\UTFK{C7B9}}%
+\DeclareUnicodeCharacter{C7BA}{\UTFK{C7BA}}%
+\DeclareUnicodeCharacter{C7BB}{\UTFK{C7BB}}%
+\DeclareUnicodeCharacter{C7BC}{\UTFK{C7BC}}%
+\DeclareUnicodeCharacter{C7BD}{\UTFK{C7BD}}%
+\DeclareUnicodeCharacter{C7BE}{\UTFK{C7BE}}%
+\DeclareUnicodeCharacter{C7BF}{\UTFK{C7BF}}%
+\DeclareUnicodeCharacter{C7C0}{\UTFK{C7C0}}%
+\DeclareUnicodeCharacter{C7C1}{\UTFK{C7C1}}%
+\DeclareUnicodeCharacter{C7C2}{\UTFK{C7C2}}%
+\DeclareUnicodeCharacter{C7C3}{\UTFK{C7C3}}%
+\DeclareUnicodeCharacter{C7C4}{\UTFK{C7C4}}%
+\DeclareUnicodeCharacter{C7C5}{\UTFK{C7C5}}%
+\DeclareUnicodeCharacter{C7C6}{\UTFK{C7C6}}%
+\DeclareUnicodeCharacter{C7C7}{\UTFK{C7C7}}%
+\DeclareUnicodeCharacter{C7C8}{\UTFK{C7C8}}%
+\DeclareUnicodeCharacter{C7C9}{\UTFK{C7C9}}%
+\DeclareUnicodeCharacter{C7CA}{\UTFK{C7CA}}%
+\DeclareUnicodeCharacter{C7CB}{\UTFK{C7CB}}%
+\DeclareUnicodeCharacter{C7CC}{\UTFK{C7CC}}%
+\DeclareUnicodeCharacter{C7CD}{\UTFK{C7CD}}%
+\DeclareUnicodeCharacter{C7CE}{\UTFK{C7CE}}%
+\DeclareUnicodeCharacter{C7CF}{\UTFK{C7CF}}%
+\DeclareUnicodeCharacter{C7D0}{\UTFK{C7D0}}%
+\DeclareUnicodeCharacter{C7D1}{\UTFK{C7D1}}%
+\DeclareUnicodeCharacter{C7D2}{\UTFK{C7D2}}%
+\DeclareUnicodeCharacter{C7D3}{\UTFK{C7D3}}%
+\DeclareUnicodeCharacter{C7D4}{\UTFK{C7D4}}%
+\DeclareUnicodeCharacter{C7D5}{\UTFK{C7D5}}%
+\DeclareUnicodeCharacter{C7D6}{\UTFK{C7D6}}%
+\DeclareUnicodeCharacter{C7D7}{\UTFK{C7D7}}%
+\DeclareUnicodeCharacter{C7D8}{\UTFK{C7D8}}%
+\DeclareUnicodeCharacter{C7D9}{\UTFK{C7D9}}%
+\DeclareUnicodeCharacter{C7DA}{\UTFK{C7DA}}%
+\DeclareUnicodeCharacter{C7DB}{\UTFK{C7DB}}%
+\DeclareUnicodeCharacter{C7DC}{\UTFK{C7DC}}%
+\DeclareUnicodeCharacter{C7DD}{\UTFK{C7DD}}%
+\DeclareUnicodeCharacter{C7DE}{\UTFK{C7DE}}%
+\DeclareUnicodeCharacter{C7DF}{\UTFK{C7DF}}%
+\DeclareUnicodeCharacter{C7E0}{\UTFK{C7E0}}%
+\DeclareUnicodeCharacter{C7E1}{\UTFK{C7E1}}%
+\DeclareUnicodeCharacter{C7E2}{\UTFK{C7E2}}%
+\DeclareUnicodeCharacter{C7E3}{\UTFK{C7E3}}%
+\DeclareUnicodeCharacter{C7E4}{\UTFK{C7E4}}%
+\DeclareUnicodeCharacter{C7E5}{\UTFK{C7E5}}%
+\DeclareUnicodeCharacter{C7E6}{\UTFK{C7E6}}%
+\DeclareUnicodeCharacter{C7E7}{\UTFK{C7E7}}%
+\DeclareUnicodeCharacter{C7E8}{\UTFK{C7E8}}%
+\DeclareUnicodeCharacter{C7E9}{\UTFK{C7E9}}%
+\DeclareUnicodeCharacter{C7EA}{\UTFK{C7EA}}%
+\DeclareUnicodeCharacter{C7EB}{\UTFK{C7EB}}%
+\DeclareUnicodeCharacter{C7EC}{\UTFK{C7EC}}%
+\DeclareUnicodeCharacter{C7ED}{\UTFK{C7ED}}%
+\DeclareUnicodeCharacter{C7EE}{\UTFK{C7EE}}%
+\DeclareUnicodeCharacter{C7EF}{\UTFK{C7EF}}%
+\DeclareUnicodeCharacter{C7F0}{\UTFK{C7F0}}%
+\DeclareUnicodeCharacter{C7F1}{\UTFK{C7F1}}%
+\DeclareUnicodeCharacter{C7F2}{\UTFK{C7F2}}%
+\DeclareUnicodeCharacter{C7F3}{\UTFK{C7F3}}%
+\DeclareUnicodeCharacter{C7F4}{\UTFK{C7F4}}%
+\DeclareUnicodeCharacter{C7F5}{\UTFK{C7F5}}%
+\DeclareUnicodeCharacter{C7F6}{\UTFK{C7F6}}%
+\DeclareUnicodeCharacter{C7F7}{\UTFK{C7F7}}%
+\DeclareUnicodeCharacter{C7F8}{\UTFK{C7F8}}%
+\DeclareUnicodeCharacter{C7F9}{\UTFK{C7F9}}%
+\DeclareUnicodeCharacter{C7FA}{\UTFK{C7FA}}%
+\DeclareUnicodeCharacter{C7FB}{\UTFK{C7FB}}%
+\DeclareUnicodeCharacter{C7FC}{\UTFK{C7FC}}%
+\DeclareUnicodeCharacter{C7FD}{\UTFK{C7FD}}%
+\DeclareUnicodeCharacter{C7FE}{\UTFK{C7FE}}%
+\DeclareUnicodeCharacter{C7FF}{\UTFK{C7FF}}%
+\DeclareUnicodeCharacter{C800}{\UTFK{C800}}%
+\DeclareUnicodeCharacter{C801}{\UTFK{C801}}%
+\DeclareUnicodeCharacter{C802}{\UTFK{C802}}%
+\DeclareUnicodeCharacter{C803}{\UTFK{C803}}%
+\DeclareUnicodeCharacter{C804}{\UTFK{C804}}%
+\DeclareUnicodeCharacter{C805}{\UTFK{C805}}%
+\DeclareUnicodeCharacter{C806}{\UTFK{C806}}%
+\DeclareUnicodeCharacter{C807}{\UTFK{C807}}%
+\DeclareUnicodeCharacter{C808}{\UTFK{C808}}%
+\DeclareUnicodeCharacter{C809}{\UTFK{C809}}%
+\DeclareUnicodeCharacter{C80A}{\UTFK{C80A}}%
+\DeclareUnicodeCharacter{C80B}{\UTFK{C80B}}%
+\DeclareUnicodeCharacter{C80C}{\UTFK{C80C}}%
+\DeclareUnicodeCharacter{C80D}{\UTFK{C80D}}%
+\DeclareUnicodeCharacter{C80E}{\UTFK{C80E}}%
+\DeclareUnicodeCharacter{C80F}{\UTFK{C80F}}%
+\DeclareUnicodeCharacter{C810}{\UTFK{C810}}%
+\DeclareUnicodeCharacter{C811}{\UTFK{C811}}%
+\DeclareUnicodeCharacter{C812}{\UTFK{C812}}%
+\DeclareUnicodeCharacter{C813}{\UTFK{C813}}%
+\DeclareUnicodeCharacter{C814}{\UTFK{C814}}%
+\DeclareUnicodeCharacter{C815}{\UTFK{C815}}%
+\DeclareUnicodeCharacter{C816}{\UTFK{C816}}%
+\DeclareUnicodeCharacter{C817}{\UTFK{C817}}%
+\DeclareUnicodeCharacter{C818}{\UTFK{C818}}%
+\DeclareUnicodeCharacter{C819}{\UTFK{C819}}%
+\DeclareUnicodeCharacter{C81A}{\UTFK{C81A}}%
+\DeclareUnicodeCharacter{C81B}{\UTFK{C81B}}%
+\DeclareUnicodeCharacter{C81C}{\UTFK{C81C}}%
+\DeclareUnicodeCharacter{C81D}{\UTFK{C81D}}%
+\DeclareUnicodeCharacter{C81E}{\UTFK{C81E}}%
+\DeclareUnicodeCharacter{C81F}{\UTFK{C81F}}%
+\DeclareUnicodeCharacter{C820}{\UTFK{C820}}%
+\DeclareUnicodeCharacter{C821}{\UTFK{C821}}%
+\DeclareUnicodeCharacter{C822}{\UTFK{C822}}%
+\DeclareUnicodeCharacter{C823}{\UTFK{C823}}%
+\DeclareUnicodeCharacter{C824}{\UTFK{C824}}%
+\DeclareUnicodeCharacter{C825}{\UTFK{C825}}%
+\DeclareUnicodeCharacter{C826}{\UTFK{C826}}%
+\DeclareUnicodeCharacter{C827}{\UTFK{C827}}%
+\DeclareUnicodeCharacter{C828}{\UTFK{C828}}%
+\DeclareUnicodeCharacter{C829}{\UTFK{C829}}%
+\DeclareUnicodeCharacter{C82A}{\UTFK{C82A}}%
+\DeclareUnicodeCharacter{C82B}{\UTFK{C82B}}%
+\DeclareUnicodeCharacter{C82C}{\UTFK{C82C}}%
+\DeclareUnicodeCharacter{C82D}{\UTFK{C82D}}%
+\DeclareUnicodeCharacter{C82E}{\UTFK{C82E}}%
+\DeclareUnicodeCharacter{C82F}{\UTFK{C82F}}%
+\DeclareUnicodeCharacter{C830}{\UTFK{C830}}%
+\DeclareUnicodeCharacter{C831}{\UTFK{C831}}%
+\DeclareUnicodeCharacter{C832}{\UTFK{C832}}%
+\DeclareUnicodeCharacter{C833}{\UTFK{C833}}%
+\DeclareUnicodeCharacter{C834}{\UTFK{C834}}%
+\DeclareUnicodeCharacter{C835}{\UTFK{C835}}%
+\DeclareUnicodeCharacter{C836}{\UTFK{C836}}%
+\DeclareUnicodeCharacter{C837}{\UTFK{C837}}%
+\DeclareUnicodeCharacter{C838}{\UTFK{C838}}%
+\DeclareUnicodeCharacter{C839}{\UTFK{C839}}%
+\DeclareUnicodeCharacter{C83A}{\UTFK{C83A}}%
+\DeclareUnicodeCharacter{C83B}{\UTFK{C83B}}%
+\DeclareUnicodeCharacter{C83C}{\UTFK{C83C}}%
+\DeclareUnicodeCharacter{C83D}{\UTFK{C83D}}%
+\DeclareUnicodeCharacter{C83E}{\UTFK{C83E}}%
+\DeclareUnicodeCharacter{C83F}{\UTFK{C83F}}%
+\DeclareUnicodeCharacter{C840}{\UTFK{C840}}%
+\DeclareUnicodeCharacter{C841}{\UTFK{C841}}%
+\DeclareUnicodeCharacter{C842}{\UTFK{C842}}%
+\DeclareUnicodeCharacter{C843}{\UTFK{C843}}%
+\DeclareUnicodeCharacter{C844}{\UTFK{C844}}%
+\DeclareUnicodeCharacter{C845}{\UTFK{C845}}%
+\DeclareUnicodeCharacter{C846}{\UTFK{C846}}%
+\DeclareUnicodeCharacter{C847}{\UTFK{C847}}%
+\DeclareUnicodeCharacter{C848}{\UTFK{C848}}%
+\DeclareUnicodeCharacter{C849}{\UTFK{C849}}%
+\DeclareUnicodeCharacter{C84A}{\UTFK{C84A}}%
+\DeclareUnicodeCharacter{C84B}{\UTFK{C84B}}%
+\DeclareUnicodeCharacter{C84C}{\UTFK{C84C}}%
+\DeclareUnicodeCharacter{C84D}{\UTFK{C84D}}%
+\DeclareUnicodeCharacter{C84E}{\UTFK{C84E}}%
+\DeclareUnicodeCharacter{C84F}{\UTFK{C84F}}%
+\DeclareUnicodeCharacter{C850}{\UTFK{C850}}%
+\DeclareUnicodeCharacter{C851}{\UTFK{C851}}%
+\DeclareUnicodeCharacter{C852}{\UTFK{C852}}%
+\DeclareUnicodeCharacter{C853}{\UTFK{C853}}%
+\DeclareUnicodeCharacter{C854}{\UTFK{C854}}%
+\DeclareUnicodeCharacter{C855}{\UTFK{C855}}%
+\DeclareUnicodeCharacter{C856}{\UTFK{C856}}%
+\DeclareUnicodeCharacter{C857}{\UTFK{C857}}%
+\DeclareUnicodeCharacter{C858}{\UTFK{C858}}%
+\DeclareUnicodeCharacter{C859}{\UTFK{C859}}%
+\DeclareUnicodeCharacter{C85A}{\UTFK{C85A}}%
+\DeclareUnicodeCharacter{C85B}{\UTFK{C85B}}%
+\DeclareUnicodeCharacter{C85C}{\UTFK{C85C}}%
+\DeclareUnicodeCharacter{C85D}{\UTFK{C85D}}%
+\DeclareUnicodeCharacter{C85E}{\UTFK{C85E}}%
+\DeclareUnicodeCharacter{C85F}{\UTFK{C85F}}%
+\DeclareUnicodeCharacter{C860}{\UTFK{C860}}%
+\DeclareUnicodeCharacter{C861}{\UTFK{C861}}%
+\DeclareUnicodeCharacter{C862}{\UTFK{C862}}%
+\DeclareUnicodeCharacter{C863}{\UTFK{C863}}%
+\DeclareUnicodeCharacter{C864}{\UTFK{C864}}%
+\DeclareUnicodeCharacter{C865}{\UTFK{C865}}%
+\DeclareUnicodeCharacter{C866}{\UTFK{C866}}%
+\DeclareUnicodeCharacter{C867}{\UTFK{C867}}%
+\DeclareUnicodeCharacter{C868}{\UTFK{C868}}%
+\DeclareUnicodeCharacter{C869}{\UTFK{C869}}%
+\DeclareUnicodeCharacter{C86A}{\UTFK{C86A}}%
+\DeclareUnicodeCharacter{C86B}{\UTFK{C86B}}%
+\DeclareUnicodeCharacter{C86C}{\UTFK{C86C}}%
+\DeclareUnicodeCharacter{C86D}{\UTFK{C86D}}%
+\DeclareUnicodeCharacter{C86E}{\UTFK{C86E}}%
+\DeclareUnicodeCharacter{C86F}{\UTFK{C86F}}%
+\DeclareUnicodeCharacter{C870}{\UTFK{C870}}%
+\DeclareUnicodeCharacter{C871}{\UTFK{C871}}%
+\DeclareUnicodeCharacter{C872}{\UTFK{C872}}%
+\DeclareUnicodeCharacter{C873}{\UTFK{C873}}%
+\DeclareUnicodeCharacter{C874}{\UTFK{C874}}%
+\DeclareUnicodeCharacter{C875}{\UTFK{C875}}%
+\DeclareUnicodeCharacter{C876}{\UTFK{C876}}%
+\DeclareUnicodeCharacter{C877}{\UTFK{C877}}%
+\DeclareUnicodeCharacter{C878}{\UTFK{C878}}%
+\DeclareUnicodeCharacter{C879}{\UTFK{C879}}%
+\DeclareUnicodeCharacter{C87A}{\UTFK{C87A}}%
+\DeclareUnicodeCharacter{C87B}{\UTFK{C87B}}%
+\DeclareUnicodeCharacter{C87C}{\UTFK{C87C}}%
+\DeclareUnicodeCharacter{C87D}{\UTFK{C87D}}%
+\DeclareUnicodeCharacter{C87E}{\UTFK{C87E}}%
+\DeclareUnicodeCharacter{C87F}{\UTFK{C87F}}%
+\DeclareUnicodeCharacter{C880}{\UTFK{C880}}%
+\DeclareUnicodeCharacter{C881}{\UTFK{C881}}%
+\DeclareUnicodeCharacter{C882}{\UTFK{C882}}%
+\DeclareUnicodeCharacter{C883}{\UTFK{C883}}%
+\DeclareUnicodeCharacter{C884}{\UTFK{C884}}%
+\DeclareUnicodeCharacter{C885}{\UTFK{C885}}%
+\DeclareUnicodeCharacter{C886}{\UTFK{C886}}%
+\DeclareUnicodeCharacter{C887}{\UTFK{C887}}%
+\DeclareUnicodeCharacter{C888}{\UTFK{C888}}%
+\DeclareUnicodeCharacter{C889}{\UTFK{C889}}%
+\DeclareUnicodeCharacter{C88A}{\UTFK{C88A}}%
+\DeclareUnicodeCharacter{C88B}{\UTFK{C88B}}%
+\DeclareUnicodeCharacter{C88C}{\UTFK{C88C}}%
+\DeclareUnicodeCharacter{C88D}{\UTFK{C88D}}%
+\DeclareUnicodeCharacter{C88E}{\UTFK{C88E}}%
+\DeclareUnicodeCharacter{C88F}{\UTFK{C88F}}%
+\DeclareUnicodeCharacter{C890}{\UTFK{C890}}%
+\DeclareUnicodeCharacter{C891}{\UTFK{C891}}%
+\DeclareUnicodeCharacter{C892}{\UTFK{C892}}%
+\DeclareUnicodeCharacter{C893}{\UTFK{C893}}%
+\DeclareUnicodeCharacter{C894}{\UTFK{C894}}%
+\DeclareUnicodeCharacter{C895}{\UTFK{C895}}%
+\DeclareUnicodeCharacter{C896}{\UTFK{C896}}%
+\DeclareUnicodeCharacter{C897}{\UTFK{C897}}%
+\DeclareUnicodeCharacter{C898}{\UTFK{C898}}%
+\DeclareUnicodeCharacter{C899}{\UTFK{C899}}%
+\DeclareUnicodeCharacter{C89A}{\UTFK{C89A}}%
+\DeclareUnicodeCharacter{C89B}{\UTFK{C89B}}%
+\DeclareUnicodeCharacter{C89C}{\UTFK{C89C}}%
+\DeclareUnicodeCharacter{C89D}{\UTFK{C89D}}%
+\DeclareUnicodeCharacter{C89E}{\UTFK{C89E}}%
+\DeclareUnicodeCharacter{C89F}{\UTFK{C89F}}%
+\DeclareUnicodeCharacter{C8A0}{\UTFK{C8A0}}%
+\DeclareUnicodeCharacter{C8A1}{\UTFK{C8A1}}%
+\DeclareUnicodeCharacter{C8A2}{\UTFK{C8A2}}%
+\DeclareUnicodeCharacter{C8A3}{\UTFK{C8A3}}%
+\DeclareUnicodeCharacter{C8A4}{\UTFK{C8A4}}%
+\DeclareUnicodeCharacter{C8A5}{\UTFK{C8A5}}%
+\DeclareUnicodeCharacter{C8A6}{\UTFK{C8A6}}%
+\DeclareUnicodeCharacter{C8A7}{\UTFK{C8A7}}%
+\DeclareUnicodeCharacter{C8A8}{\UTFK{C8A8}}%
+\DeclareUnicodeCharacter{C8A9}{\UTFK{C8A9}}%
+\DeclareUnicodeCharacter{C8AA}{\UTFK{C8AA}}%
+\DeclareUnicodeCharacter{C8AB}{\UTFK{C8AB}}%
+\DeclareUnicodeCharacter{C8AC}{\UTFK{C8AC}}%
+\DeclareUnicodeCharacter{C8AD}{\UTFK{C8AD}}%
+\DeclareUnicodeCharacter{C8AE}{\UTFK{C8AE}}%
+\DeclareUnicodeCharacter{C8AF}{\UTFK{C8AF}}%
+\DeclareUnicodeCharacter{C8B0}{\UTFK{C8B0}}%
+\DeclareUnicodeCharacter{C8B1}{\UTFK{C8B1}}%
+\DeclareUnicodeCharacter{C8B2}{\UTFK{C8B2}}%
+\DeclareUnicodeCharacter{C8B3}{\UTFK{C8B3}}%
+\DeclareUnicodeCharacter{C8B4}{\UTFK{C8B4}}%
+\DeclareUnicodeCharacter{C8B5}{\UTFK{C8B5}}%
+\DeclareUnicodeCharacter{C8B6}{\UTFK{C8B6}}%
+\DeclareUnicodeCharacter{C8B7}{\UTFK{C8B7}}%
+\DeclareUnicodeCharacter{C8B8}{\UTFK{C8B8}}%
+\DeclareUnicodeCharacter{C8B9}{\UTFK{C8B9}}%
+\DeclareUnicodeCharacter{C8BA}{\UTFK{C8BA}}%
+\DeclareUnicodeCharacter{C8BB}{\UTFK{C8BB}}%
+\DeclareUnicodeCharacter{C8BC}{\UTFK{C8BC}}%
+\DeclareUnicodeCharacter{C8BD}{\UTFK{C8BD}}%
+\DeclareUnicodeCharacter{C8BE}{\UTFK{C8BE}}%
+\DeclareUnicodeCharacter{C8BF}{\UTFK{C8BF}}%
+\DeclareUnicodeCharacter{C8C0}{\UTFK{C8C0}}%
+\DeclareUnicodeCharacter{C8C1}{\UTFK{C8C1}}%
+\DeclareUnicodeCharacter{C8C2}{\UTFK{C8C2}}%
+\DeclareUnicodeCharacter{C8C3}{\UTFK{C8C3}}%
+\DeclareUnicodeCharacter{C8C4}{\UTFK{C8C4}}%
+\DeclareUnicodeCharacter{C8C5}{\UTFK{C8C5}}%
+\DeclareUnicodeCharacter{C8C6}{\UTFK{C8C6}}%
+\DeclareUnicodeCharacter{C8C7}{\UTFK{C8C7}}%
+\DeclareUnicodeCharacter{C8C8}{\UTFK{C8C8}}%
+\DeclareUnicodeCharacter{C8C9}{\UTFK{C8C9}}%
+\DeclareUnicodeCharacter{C8CA}{\UTFK{C8CA}}%
+\DeclareUnicodeCharacter{C8CB}{\UTFK{C8CB}}%
+\DeclareUnicodeCharacter{C8CC}{\UTFK{C8CC}}%
+\DeclareUnicodeCharacter{C8CD}{\UTFK{C8CD}}%
+\DeclareUnicodeCharacter{C8CE}{\UTFK{C8CE}}%
+\DeclareUnicodeCharacter{C8CF}{\UTFK{C8CF}}%
+\DeclareUnicodeCharacter{C8D0}{\UTFK{C8D0}}%
+\DeclareUnicodeCharacter{C8D1}{\UTFK{C8D1}}%
+\DeclareUnicodeCharacter{C8D2}{\UTFK{C8D2}}%
+\DeclareUnicodeCharacter{C8D3}{\UTFK{C8D3}}%
+\DeclareUnicodeCharacter{C8D4}{\UTFK{C8D4}}%
+\DeclareUnicodeCharacter{C8D5}{\UTFK{C8D5}}%
+\DeclareUnicodeCharacter{C8D6}{\UTFK{C8D6}}%
+\DeclareUnicodeCharacter{C8D7}{\UTFK{C8D7}}%
+\DeclareUnicodeCharacter{C8D8}{\UTFK{C8D8}}%
+\DeclareUnicodeCharacter{C8D9}{\UTFK{C8D9}}%
+\DeclareUnicodeCharacter{C8DA}{\UTFK{C8DA}}%
+\DeclareUnicodeCharacter{C8DB}{\UTFK{C8DB}}%
+\DeclareUnicodeCharacter{C8DC}{\UTFK{C8DC}}%
+\DeclareUnicodeCharacter{C8DD}{\UTFK{C8DD}}%
+\DeclareUnicodeCharacter{C8DE}{\UTFK{C8DE}}%
+\DeclareUnicodeCharacter{C8DF}{\UTFK{C8DF}}%
+\DeclareUnicodeCharacter{C8E0}{\UTFK{C8E0}}%
+\DeclareUnicodeCharacter{C8E1}{\UTFK{C8E1}}%
+\DeclareUnicodeCharacter{C8E2}{\UTFK{C8E2}}%
+\DeclareUnicodeCharacter{C8E3}{\UTFK{C8E3}}%
+\DeclareUnicodeCharacter{C8E4}{\UTFK{C8E4}}%
+\DeclareUnicodeCharacter{C8E5}{\UTFK{C8E5}}%
+\DeclareUnicodeCharacter{C8E6}{\UTFK{C8E6}}%
+\DeclareUnicodeCharacter{C8E7}{\UTFK{C8E7}}%
+\DeclareUnicodeCharacter{C8E8}{\UTFK{C8E8}}%
+\DeclareUnicodeCharacter{C8E9}{\UTFK{C8E9}}%
+\DeclareUnicodeCharacter{C8EA}{\UTFK{C8EA}}%
+\DeclareUnicodeCharacter{C8EB}{\UTFK{C8EB}}%
+\DeclareUnicodeCharacter{C8EC}{\UTFK{C8EC}}%
+\DeclareUnicodeCharacter{C8ED}{\UTFK{C8ED}}%
+\DeclareUnicodeCharacter{C8EE}{\UTFK{C8EE}}%
+\DeclareUnicodeCharacter{C8EF}{\UTFK{C8EF}}%
+\DeclareUnicodeCharacter{C8F0}{\UTFK{C8F0}}%
+\DeclareUnicodeCharacter{C8F1}{\UTFK{C8F1}}%
+\DeclareUnicodeCharacter{C8F2}{\UTFK{C8F2}}%
+\DeclareUnicodeCharacter{C8F3}{\UTFK{C8F3}}%
+\DeclareUnicodeCharacter{C8F4}{\UTFK{C8F4}}%
+\DeclareUnicodeCharacter{C8F5}{\UTFK{C8F5}}%
+\DeclareUnicodeCharacter{C8F6}{\UTFK{C8F6}}%
+\DeclareUnicodeCharacter{C8F7}{\UTFK{C8F7}}%
+\DeclareUnicodeCharacter{C8F8}{\UTFK{C8F8}}%
+\DeclareUnicodeCharacter{C8F9}{\UTFK{C8F9}}%
+\DeclareUnicodeCharacter{C8FA}{\UTFK{C8FA}}%
+\DeclareUnicodeCharacter{C8FB}{\UTFK{C8FB}}%
+\DeclareUnicodeCharacter{C8FC}{\UTFK{C8FC}}%
+\DeclareUnicodeCharacter{C8FD}{\UTFK{C8FD}}%
+\DeclareUnicodeCharacter{C8FE}{\UTFK{C8FE}}%
+\DeclareUnicodeCharacter{C8FF}{\UTFK{C8FF}}%
+\DeclareUnicodeCharacter{C900}{\UTFK{C900}}%
+\DeclareUnicodeCharacter{C901}{\UTFK{C901}}%
+\DeclareUnicodeCharacter{C902}{\UTFK{C902}}%
+\DeclareUnicodeCharacter{C903}{\UTFK{C903}}%
+\DeclareUnicodeCharacter{C904}{\UTFK{C904}}%
+\DeclareUnicodeCharacter{C905}{\UTFK{C905}}%
+\DeclareUnicodeCharacter{C906}{\UTFK{C906}}%
+\DeclareUnicodeCharacter{C907}{\UTFK{C907}}%
+\DeclareUnicodeCharacter{C908}{\UTFK{C908}}%
+\DeclareUnicodeCharacter{C909}{\UTFK{C909}}%
+\DeclareUnicodeCharacter{C90A}{\UTFK{C90A}}%
+\DeclareUnicodeCharacter{C90B}{\UTFK{C90B}}%
+\DeclareUnicodeCharacter{C90C}{\UTFK{C90C}}%
+\DeclareUnicodeCharacter{C90D}{\UTFK{C90D}}%
+\DeclareUnicodeCharacter{C90E}{\UTFK{C90E}}%
+\DeclareUnicodeCharacter{C90F}{\UTFK{C90F}}%
+\DeclareUnicodeCharacter{C910}{\UTFK{C910}}%
+\DeclareUnicodeCharacter{C911}{\UTFK{C911}}%
+\DeclareUnicodeCharacter{C912}{\UTFK{C912}}%
+\DeclareUnicodeCharacter{C913}{\UTFK{C913}}%
+\DeclareUnicodeCharacter{C914}{\UTFK{C914}}%
+\DeclareUnicodeCharacter{C915}{\UTFK{C915}}%
+\DeclareUnicodeCharacter{C916}{\UTFK{C916}}%
+\DeclareUnicodeCharacter{C917}{\UTFK{C917}}%
+\DeclareUnicodeCharacter{C918}{\UTFK{C918}}%
+\DeclareUnicodeCharacter{C919}{\UTFK{C919}}%
+\DeclareUnicodeCharacter{C91A}{\UTFK{C91A}}%
+\DeclareUnicodeCharacter{C91B}{\UTFK{C91B}}%
+\DeclareUnicodeCharacter{C91C}{\UTFK{C91C}}%
+\DeclareUnicodeCharacter{C91D}{\UTFK{C91D}}%
+\DeclareUnicodeCharacter{C91E}{\UTFK{C91E}}%
+\DeclareUnicodeCharacter{C91F}{\UTFK{C91F}}%
+\DeclareUnicodeCharacter{C920}{\UTFK{C920}}%
+\DeclareUnicodeCharacter{C921}{\UTFK{C921}}%
+\DeclareUnicodeCharacter{C922}{\UTFK{C922}}%
+\DeclareUnicodeCharacter{C923}{\UTFK{C923}}%
+\DeclareUnicodeCharacter{C924}{\UTFK{C924}}%
+\DeclareUnicodeCharacter{C925}{\UTFK{C925}}%
+\DeclareUnicodeCharacter{C926}{\UTFK{C926}}%
+\DeclareUnicodeCharacter{C927}{\UTFK{C927}}%
+\DeclareUnicodeCharacter{C928}{\UTFK{C928}}%
+\DeclareUnicodeCharacter{C929}{\UTFK{C929}}%
+\DeclareUnicodeCharacter{C92A}{\UTFK{C92A}}%
+\DeclareUnicodeCharacter{C92B}{\UTFK{C92B}}%
+\DeclareUnicodeCharacter{C92C}{\UTFK{C92C}}%
+\DeclareUnicodeCharacter{C92D}{\UTFK{C92D}}%
+\DeclareUnicodeCharacter{C92E}{\UTFK{C92E}}%
+\DeclareUnicodeCharacter{C92F}{\UTFK{C92F}}%
+\DeclareUnicodeCharacter{C930}{\UTFK{C930}}%
+\DeclareUnicodeCharacter{C931}{\UTFK{C931}}%
+\DeclareUnicodeCharacter{C932}{\UTFK{C932}}%
+\DeclareUnicodeCharacter{C933}{\UTFK{C933}}%
+\DeclareUnicodeCharacter{C934}{\UTFK{C934}}%
+\DeclareUnicodeCharacter{C935}{\UTFK{C935}}%
+\DeclareUnicodeCharacter{C936}{\UTFK{C936}}%
+\DeclareUnicodeCharacter{C937}{\UTFK{C937}}%
+\DeclareUnicodeCharacter{C938}{\UTFK{C938}}%
+\DeclareUnicodeCharacter{C939}{\UTFK{C939}}%
+\DeclareUnicodeCharacter{C93A}{\UTFK{C93A}}%
+\DeclareUnicodeCharacter{C93B}{\UTFK{C93B}}%
+\DeclareUnicodeCharacter{C93C}{\UTFK{C93C}}%
+\DeclareUnicodeCharacter{C93D}{\UTFK{C93D}}%
+\DeclareUnicodeCharacter{C93E}{\UTFK{C93E}}%
+\DeclareUnicodeCharacter{C93F}{\UTFK{C93F}}%
+\DeclareUnicodeCharacter{C940}{\UTFK{C940}}%
+\DeclareUnicodeCharacter{C941}{\UTFK{C941}}%
+\DeclareUnicodeCharacter{C942}{\UTFK{C942}}%
+\DeclareUnicodeCharacter{C943}{\UTFK{C943}}%
+\DeclareUnicodeCharacter{C944}{\UTFK{C944}}%
+\DeclareUnicodeCharacter{C945}{\UTFK{C945}}%
+\DeclareUnicodeCharacter{C946}{\UTFK{C946}}%
+\DeclareUnicodeCharacter{C947}{\UTFK{C947}}%
+\DeclareUnicodeCharacter{C948}{\UTFK{C948}}%
+\DeclareUnicodeCharacter{C949}{\UTFK{C949}}%
+\DeclareUnicodeCharacter{C94A}{\UTFK{C94A}}%
+\DeclareUnicodeCharacter{C94B}{\UTFK{C94B}}%
+\DeclareUnicodeCharacter{C94C}{\UTFK{C94C}}%
+\DeclareUnicodeCharacter{C94D}{\UTFK{C94D}}%
+\DeclareUnicodeCharacter{C94E}{\UTFK{C94E}}%
+\DeclareUnicodeCharacter{C94F}{\UTFK{C94F}}%
+\DeclareUnicodeCharacter{C950}{\UTFK{C950}}%
+\DeclareUnicodeCharacter{C951}{\UTFK{C951}}%
+\DeclareUnicodeCharacter{C952}{\UTFK{C952}}%
+\DeclareUnicodeCharacter{C953}{\UTFK{C953}}%
+\DeclareUnicodeCharacter{C954}{\UTFK{C954}}%
+\DeclareUnicodeCharacter{C955}{\UTFK{C955}}%
+\DeclareUnicodeCharacter{C956}{\UTFK{C956}}%
+\DeclareUnicodeCharacter{C957}{\UTFK{C957}}%
+\DeclareUnicodeCharacter{C958}{\UTFK{C958}}%
+\DeclareUnicodeCharacter{C959}{\UTFK{C959}}%
+\DeclareUnicodeCharacter{C95A}{\UTFK{C95A}}%
+\DeclareUnicodeCharacter{C95B}{\UTFK{C95B}}%
+\DeclareUnicodeCharacter{C95C}{\UTFK{C95C}}%
+\DeclareUnicodeCharacter{C95D}{\UTFK{C95D}}%
+\DeclareUnicodeCharacter{C95E}{\UTFK{C95E}}%
+\DeclareUnicodeCharacter{C95F}{\UTFK{C95F}}%
+\DeclareUnicodeCharacter{C960}{\UTFK{C960}}%
+\DeclareUnicodeCharacter{C961}{\UTFK{C961}}%
+\DeclareUnicodeCharacter{C962}{\UTFK{C962}}%
+\DeclareUnicodeCharacter{C963}{\UTFK{C963}}%
+\DeclareUnicodeCharacter{C964}{\UTFK{C964}}%
+\DeclareUnicodeCharacter{C965}{\UTFK{C965}}%
+\DeclareUnicodeCharacter{C966}{\UTFK{C966}}%
+\DeclareUnicodeCharacter{C967}{\UTFK{C967}}%
+\DeclareUnicodeCharacter{C968}{\UTFK{C968}}%
+\DeclareUnicodeCharacter{C969}{\UTFK{C969}}%
+\DeclareUnicodeCharacter{C96A}{\UTFK{C96A}}%
+\DeclareUnicodeCharacter{C96B}{\UTFK{C96B}}%
+\DeclareUnicodeCharacter{C96C}{\UTFK{C96C}}%
+\DeclareUnicodeCharacter{C96D}{\UTFK{C96D}}%
+\DeclareUnicodeCharacter{C96E}{\UTFK{C96E}}%
+\DeclareUnicodeCharacter{C96F}{\UTFK{C96F}}%
+\DeclareUnicodeCharacter{C970}{\UTFK{C970}}%
+\DeclareUnicodeCharacter{C971}{\UTFK{C971}}%
+\DeclareUnicodeCharacter{C972}{\UTFK{C972}}%
+\DeclareUnicodeCharacter{C973}{\UTFK{C973}}%
+\DeclareUnicodeCharacter{C974}{\UTFK{C974}}%
+\DeclareUnicodeCharacter{C975}{\UTFK{C975}}%
+\DeclareUnicodeCharacter{C976}{\UTFK{C976}}%
+\DeclareUnicodeCharacter{C977}{\UTFK{C977}}%
+\DeclareUnicodeCharacter{C978}{\UTFK{C978}}%
+\DeclareUnicodeCharacter{C979}{\UTFK{C979}}%
+\DeclareUnicodeCharacter{C97A}{\UTFK{C97A}}%
+\DeclareUnicodeCharacter{C97B}{\UTFK{C97B}}%
+\DeclareUnicodeCharacter{C97C}{\UTFK{C97C}}%
+\DeclareUnicodeCharacter{C97D}{\UTFK{C97D}}%
+\DeclareUnicodeCharacter{C97E}{\UTFK{C97E}}%
+\DeclareUnicodeCharacter{C97F}{\UTFK{C97F}}%
+\DeclareUnicodeCharacter{C980}{\UTFK{C980}}%
+\DeclareUnicodeCharacter{C981}{\UTFK{C981}}%
+\DeclareUnicodeCharacter{C982}{\UTFK{C982}}%
+\DeclareUnicodeCharacter{C983}{\UTFK{C983}}%
+\DeclareUnicodeCharacter{C984}{\UTFK{C984}}%
+\DeclareUnicodeCharacter{C985}{\UTFK{C985}}%
+\DeclareUnicodeCharacter{C986}{\UTFK{C986}}%
+\DeclareUnicodeCharacter{C987}{\UTFK{C987}}%
+\DeclareUnicodeCharacter{C988}{\UTFK{C988}}%
+\DeclareUnicodeCharacter{C989}{\UTFK{C989}}%
+\DeclareUnicodeCharacter{C98A}{\UTFK{C98A}}%
+\DeclareUnicodeCharacter{C98B}{\UTFK{C98B}}%
+\DeclareUnicodeCharacter{C98C}{\UTFK{C98C}}%
+\DeclareUnicodeCharacter{C98D}{\UTFK{C98D}}%
+\DeclareUnicodeCharacter{C98E}{\UTFK{C98E}}%
+\DeclareUnicodeCharacter{C98F}{\UTFK{C98F}}%
+\DeclareUnicodeCharacter{C990}{\UTFK{C990}}%
+\DeclareUnicodeCharacter{C991}{\UTFK{C991}}%
+\DeclareUnicodeCharacter{C992}{\UTFK{C992}}%
+\DeclareUnicodeCharacter{C993}{\UTFK{C993}}%
+\DeclareUnicodeCharacter{C994}{\UTFK{C994}}%
+\DeclareUnicodeCharacter{C995}{\UTFK{C995}}%
+\DeclareUnicodeCharacter{C996}{\UTFK{C996}}%
+\DeclareUnicodeCharacter{C997}{\UTFK{C997}}%
+\DeclareUnicodeCharacter{C998}{\UTFK{C998}}%
+\DeclareUnicodeCharacter{C999}{\UTFK{C999}}%
+\DeclareUnicodeCharacter{C99A}{\UTFK{C99A}}%
+\DeclareUnicodeCharacter{C99B}{\UTFK{C99B}}%
+\DeclareUnicodeCharacter{C99C}{\UTFK{C99C}}%
+\DeclareUnicodeCharacter{C99D}{\UTFK{C99D}}%
+\DeclareUnicodeCharacter{C99E}{\UTFK{C99E}}%
+\DeclareUnicodeCharacter{C99F}{\UTFK{C99F}}%
+\DeclareUnicodeCharacter{C9A0}{\UTFK{C9A0}}%
+\DeclareUnicodeCharacter{C9A1}{\UTFK{C9A1}}%
+\DeclareUnicodeCharacter{C9A2}{\UTFK{C9A2}}%
+\DeclareUnicodeCharacter{C9A3}{\UTFK{C9A3}}%
+\DeclareUnicodeCharacter{C9A4}{\UTFK{C9A4}}%
+\DeclareUnicodeCharacter{C9A5}{\UTFK{C9A5}}%
+\DeclareUnicodeCharacter{C9A6}{\UTFK{C9A6}}%
+\DeclareUnicodeCharacter{C9A7}{\UTFK{C9A7}}%
+\DeclareUnicodeCharacter{C9A8}{\UTFK{C9A8}}%
+\DeclareUnicodeCharacter{C9A9}{\UTFK{C9A9}}%
+\DeclareUnicodeCharacter{C9AA}{\UTFK{C9AA}}%
+\DeclareUnicodeCharacter{C9AB}{\UTFK{C9AB}}%
+\DeclareUnicodeCharacter{C9AC}{\UTFK{C9AC}}%
+\DeclareUnicodeCharacter{C9AD}{\UTFK{C9AD}}%
+\DeclareUnicodeCharacter{C9AE}{\UTFK{C9AE}}%
+\DeclareUnicodeCharacter{C9AF}{\UTFK{C9AF}}%
+\DeclareUnicodeCharacter{C9B0}{\UTFK{C9B0}}%
+\DeclareUnicodeCharacter{C9B1}{\UTFK{C9B1}}%
+\DeclareUnicodeCharacter{C9B2}{\UTFK{C9B2}}%
+\DeclareUnicodeCharacter{C9B3}{\UTFK{C9B3}}%
+\DeclareUnicodeCharacter{C9B4}{\UTFK{C9B4}}%
+\DeclareUnicodeCharacter{C9B5}{\UTFK{C9B5}}%
+\DeclareUnicodeCharacter{C9B6}{\UTFK{C9B6}}%
+\DeclareUnicodeCharacter{C9B7}{\UTFK{C9B7}}%
+\DeclareUnicodeCharacter{C9B8}{\UTFK{C9B8}}%
+\DeclareUnicodeCharacter{C9B9}{\UTFK{C9B9}}%
+\DeclareUnicodeCharacter{C9BA}{\UTFK{C9BA}}%
+\DeclareUnicodeCharacter{C9BB}{\UTFK{C9BB}}%
+\DeclareUnicodeCharacter{C9BC}{\UTFK{C9BC}}%
+\DeclareUnicodeCharacter{C9BD}{\UTFK{C9BD}}%
+\DeclareUnicodeCharacter{C9BE}{\UTFK{C9BE}}%
+\DeclareUnicodeCharacter{C9BF}{\UTFK{C9BF}}%
+\DeclareUnicodeCharacter{C9C0}{\UTFK{C9C0}}%
+\DeclareUnicodeCharacter{C9C1}{\UTFK{C9C1}}%
+\DeclareUnicodeCharacter{C9C2}{\UTFK{C9C2}}%
+\DeclareUnicodeCharacter{C9C3}{\UTFK{C9C3}}%
+\DeclareUnicodeCharacter{C9C4}{\UTFK{C9C4}}%
+\DeclareUnicodeCharacter{C9C5}{\UTFK{C9C5}}%
+\DeclareUnicodeCharacter{C9C6}{\UTFK{C9C6}}%
+\DeclareUnicodeCharacter{C9C7}{\UTFK{C9C7}}%
+\DeclareUnicodeCharacter{C9C8}{\UTFK{C9C8}}%
+\DeclareUnicodeCharacter{C9C9}{\UTFK{C9C9}}%
+\DeclareUnicodeCharacter{C9CA}{\UTFK{C9CA}}%
+\DeclareUnicodeCharacter{C9CB}{\UTFK{C9CB}}%
+\DeclareUnicodeCharacter{C9CC}{\UTFK{C9CC}}%
+\DeclareUnicodeCharacter{C9CD}{\UTFK{C9CD}}%
+\DeclareUnicodeCharacter{C9CE}{\UTFK{C9CE}}%
+\DeclareUnicodeCharacter{C9CF}{\UTFK{C9CF}}%
+\DeclareUnicodeCharacter{C9D0}{\UTFK{C9D0}}%
+\DeclareUnicodeCharacter{C9D1}{\UTFK{C9D1}}%
+\DeclareUnicodeCharacter{C9D2}{\UTFK{C9D2}}%
+\DeclareUnicodeCharacter{C9D3}{\UTFK{C9D3}}%
+\DeclareUnicodeCharacter{C9D4}{\UTFK{C9D4}}%
+\DeclareUnicodeCharacter{C9D5}{\UTFK{C9D5}}%
+\DeclareUnicodeCharacter{C9D6}{\UTFK{C9D6}}%
+\DeclareUnicodeCharacter{C9D7}{\UTFK{C9D7}}%
+\DeclareUnicodeCharacter{C9D8}{\UTFK{C9D8}}%
+\DeclareUnicodeCharacter{C9D9}{\UTFK{C9D9}}%
+\DeclareUnicodeCharacter{C9DA}{\UTFK{C9DA}}%
+\DeclareUnicodeCharacter{C9DB}{\UTFK{C9DB}}%
+\DeclareUnicodeCharacter{C9DC}{\UTFK{C9DC}}%
+\DeclareUnicodeCharacter{C9DD}{\UTFK{C9DD}}%
+\DeclareUnicodeCharacter{C9DE}{\UTFK{C9DE}}%
+\DeclareUnicodeCharacter{C9DF}{\UTFK{C9DF}}%
+\DeclareUnicodeCharacter{C9E0}{\UTFK{C9E0}}%
+\DeclareUnicodeCharacter{C9E1}{\UTFK{C9E1}}%
+\DeclareUnicodeCharacter{C9E2}{\UTFK{C9E2}}%
+\DeclareUnicodeCharacter{C9E3}{\UTFK{C9E3}}%
+\DeclareUnicodeCharacter{C9E4}{\UTFK{C9E4}}%
+\DeclareUnicodeCharacter{C9E5}{\UTFK{C9E5}}%
+\DeclareUnicodeCharacter{C9E6}{\UTFK{C9E6}}%
+\DeclareUnicodeCharacter{C9E7}{\UTFK{C9E7}}%
+\DeclareUnicodeCharacter{C9E8}{\UTFK{C9E8}}%
+\DeclareUnicodeCharacter{C9E9}{\UTFK{C9E9}}%
+\DeclareUnicodeCharacter{C9EA}{\UTFK{C9EA}}%
+\DeclareUnicodeCharacter{C9EB}{\UTFK{C9EB}}%
+\DeclareUnicodeCharacter{C9EC}{\UTFK{C9EC}}%
+\DeclareUnicodeCharacter{C9ED}{\UTFK{C9ED}}%
+\DeclareUnicodeCharacter{C9EE}{\UTFK{C9EE}}%
+\DeclareUnicodeCharacter{C9EF}{\UTFK{C9EF}}%
+\DeclareUnicodeCharacter{C9F0}{\UTFK{C9F0}}%
+\DeclareUnicodeCharacter{C9F1}{\UTFK{C9F1}}%
+\DeclareUnicodeCharacter{C9F2}{\UTFK{C9F2}}%
+\DeclareUnicodeCharacter{C9F3}{\UTFK{C9F3}}%
+\DeclareUnicodeCharacter{C9F4}{\UTFK{C9F4}}%
+\DeclareUnicodeCharacter{C9F5}{\UTFK{C9F5}}%
+\DeclareUnicodeCharacter{C9F6}{\UTFK{C9F6}}%
+\DeclareUnicodeCharacter{C9F7}{\UTFK{C9F7}}%
+\DeclareUnicodeCharacter{C9F8}{\UTFK{C9F8}}%
+\DeclareUnicodeCharacter{C9F9}{\UTFK{C9F9}}%
+\DeclareUnicodeCharacter{C9FA}{\UTFK{C9FA}}%
+\DeclareUnicodeCharacter{C9FB}{\UTFK{C9FB}}%
+\DeclareUnicodeCharacter{C9FC}{\UTFK{C9FC}}%
+\DeclareUnicodeCharacter{C9FD}{\UTFK{C9FD}}%
+\DeclareUnicodeCharacter{C9FE}{\UTFK{C9FE}}%
+\DeclareUnicodeCharacter{C9FF}{\UTFK{C9FF}}%
+\DeclareUnicodeCharacter{CA00}{\UTFK{CA00}}%
+\DeclareUnicodeCharacter{CA01}{\UTFK{CA01}}%
+\DeclareUnicodeCharacter{CA02}{\UTFK{CA02}}%
+\DeclareUnicodeCharacter{CA03}{\UTFK{CA03}}%
+\DeclareUnicodeCharacter{CA04}{\UTFK{CA04}}%
+\DeclareUnicodeCharacter{CA05}{\UTFK{CA05}}%
+\DeclareUnicodeCharacter{CA06}{\UTFK{CA06}}%
+\DeclareUnicodeCharacter{CA07}{\UTFK{CA07}}%
+\DeclareUnicodeCharacter{CA08}{\UTFK{CA08}}%
+\DeclareUnicodeCharacter{CA09}{\UTFK{CA09}}%
+\DeclareUnicodeCharacter{CA0A}{\UTFK{CA0A}}%
+\DeclareUnicodeCharacter{CA0B}{\UTFK{CA0B}}%
+\DeclareUnicodeCharacter{CA0C}{\UTFK{CA0C}}%
+\DeclareUnicodeCharacter{CA0D}{\UTFK{CA0D}}%
+\DeclareUnicodeCharacter{CA0E}{\UTFK{CA0E}}%
+\DeclareUnicodeCharacter{CA0F}{\UTFK{CA0F}}%
+\DeclareUnicodeCharacter{CA10}{\UTFK{CA10}}%
+\DeclareUnicodeCharacter{CA11}{\UTFK{CA11}}%
+\DeclareUnicodeCharacter{CA12}{\UTFK{CA12}}%
+\DeclareUnicodeCharacter{CA13}{\UTFK{CA13}}%
+\DeclareUnicodeCharacter{CA14}{\UTFK{CA14}}%
+\DeclareUnicodeCharacter{CA15}{\UTFK{CA15}}%
+\DeclareUnicodeCharacter{CA16}{\UTFK{CA16}}%
+\DeclareUnicodeCharacter{CA17}{\UTFK{CA17}}%
+\DeclareUnicodeCharacter{CA18}{\UTFK{CA18}}%
+\DeclareUnicodeCharacter{CA19}{\UTFK{CA19}}%
+\DeclareUnicodeCharacter{CA1A}{\UTFK{CA1A}}%
+\DeclareUnicodeCharacter{CA1B}{\UTFK{CA1B}}%
+\DeclareUnicodeCharacter{CA1C}{\UTFK{CA1C}}%
+\DeclareUnicodeCharacter{CA1D}{\UTFK{CA1D}}%
+\DeclareUnicodeCharacter{CA1E}{\UTFK{CA1E}}%
+\DeclareUnicodeCharacter{CA1F}{\UTFK{CA1F}}%
+\DeclareUnicodeCharacter{CA20}{\UTFK{CA20}}%
+\DeclareUnicodeCharacter{CA21}{\UTFK{CA21}}%
+\DeclareUnicodeCharacter{CA22}{\UTFK{CA22}}%
+\DeclareUnicodeCharacter{CA23}{\UTFK{CA23}}%
+\DeclareUnicodeCharacter{CA24}{\UTFK{CA24}}%
+\DeclareUnicodeCharacter{CA25}{\UTFK{CA25}}%
+\DeclareUnicodeCharacter{CA26}{\UTFK{CA26}}%
+\DeclareUnicodeCharacter{CA27}{\UTFK{CA27}}%
+\DeclareUnicodeCharacter{CA28}{\UTFK{CA28}}%
+\DeclareUnicodeCharacter{CA29}{\UTFK{CA29}}%
+\DeclareUnicodeCharacter{CA2A}{\UTFK{CA2A}}%
+\DeclareUnicodeCharacter{CA2B}{\UTFK{CA2B}}%
+\DeclareUnicodeCharacter{CA2C}{\UTFK{CA2C}}%
+\DeclareUnicodeCharacter{CA2D}{\UTFK{CA2D}}%
+\DeclareUnicodeCharacter{CA2E}{\UTFK{CA2E}}%
+\DeclareUnicodeCharacter{CA2F}{\UTFK{CA2F}}%
+\DeclareUnicodeCharacter{CA30}{\UTFK{CA30}}%
+\DeclareUnicodeCharacter{CA31}{\UTFK{CA31}}%
+\DeclareUnicodeCharacter{CA32}{\UTFK{CA32}}%
+\DeclareUnicodeCharacter{CA33}{\UTFK{CA33}}%
+\DeclareUnicodeCharacter{CA34}{\UTFK{CA34}}%
+\DeclareUnicodeCharacter{CA35}{\UTFK{CA35}}%
+\DeclareUnicodeCharacter{CA36}{\UTFK{CA36}}%
+\DeclareUnicodeCharacter{CA37}{\UTFK{CA37}}%
+\DeclareUnicodeCharacter{CA38}{\UTFK{CA38}}%
+\DeclareUnicodeCharacter{CA39}{\UTFK{CA39}}%
+\DeclareUnicodeCharacter{CA3A}{\UTFK{CA3A}}%
+\DeclareUnicodeCharacter{CA3B}{\UTFK{CA3B}}%
+\DeclareUnicodeCharacter{CA3C}{\UTFK{CA3C}}%
+\DeclareUnicodeCharacter{CA3D}{\UTFK{CA3D}}%
+\DeclareUnicodeCharacter{CA3E}{\UTFK{CA3E}}%
+\DeclareUnicodeCharacter{CA3F}{\UTFK{CA3F}}%
+\DeclareUnicodeCharacter{CA40}{\UTFK{CA40}}%
+\DeclareUnicodeCharacter{CA41}{\UTFK{CA41}}%
+\DeclareUnicodeCharacter{CA42}{\UTFK{CA42}}%
+\DeclareUnicodeCharacter{CA43}{\UTFK{CA43}}%
+\DeclareUnicodeCharacter{CA44}{\UTFK{CA44}}%
+\DeclareUnicodeCharacter{CA45}{\UTFK{CA45}}%
+\DeclareUnicodeCharacter{CA46}{\UTFK{CA46}}%
+\DeclareUnicodeCharacter{CA47}{\UTFK{CA47}}%
+\DeclareUnicodeCharacter{CA48}{\UTFK{CA48}}%
+\DeclareUnicodeCharacter{CA49}{\UTFK{CA49}}%
+\DeclareUnicodeCharacter{CA4A}{\UTFK{CA4A}}%
+\DeclareUnicodeCharacter{CA4B}{\UTFK{CA4B}}%
+\DeclareUnicodeCharacter{CA4C}{\UTFK{CA4C}}%
+\DeclareUnicodeCharacter{CA4D}{\UTFK{CA4D}}%
+\DeclareUnicodeCharacter{CA4E}{\UTFK{CA4E}}%
+\DeclareUnicodeCharacter{CA4F}{\UTFK{CA4F}}%
+\DeclareUnicodeCharacter{CA50}{\UTFK{CA50}}%
+\DeclareUnicodeCharacter{CA51}{\UTFK{CA51}}%
+\DeclareUnicodeCharacter{CA52}{\UTFK{CA52}}%
+\DeclareUnicodeCharacter{CA53}{\UTFK{CA53}}%
+\DeclareUnicodeCharacter{CA54}{\UTFK{CA54}}%
+\DeclareUnicodeCharacter{CA55}{\UTFK{CA55}}%
+\DeclareUnicodeCharacter{CA56}{\UTFK{CA56}}%
+\DeclareUnicodeCharacter{CA57}{\UTFK{CA57}}%
+\DeclareUnicodeCharacter{CA58}{\UTFK{CA58}}%
+\DeclareUnicodeCharacter{CA59}{\UTFK{CA59}}%
+\DeclareUnicodeCharacter{CA5A}{\UTFK{CA5A}}%
+\DeclareUnicodeCharacter{CA5B}{\UTFK{CA5B}}%
+\DeclareUnicodeCharacter{CA5C}{\UTFK{CA5C}}%
+\DeclareUnicodeCharacter{CA5D}{\UTFK{CA5D}}%
+\DeclareUnicodeCharacter{CA5E}{\UTFK{CA5E}}%
+\DeclareUnicodeCharacter{CA5F}{\UTFK{CA5F}}%
+\DeclareUnicodeCharacter{CA60}{\UTFK{CA60}}%
+\DeclareUnicodeCharacter{CA61}{\UTFK{CA61}}%
+\DeclareUnicodeCharacter{CA62}{\UTFK{CA62}}%
+\DeclareUnicodeCharacter{CA63}{\UTFK{CA63}}%
+\DeclareUnicodeCharacter{CA64}{\UTFK{CA64}}%
+\DeclareUnicodeCharacter{CA65}{\UTFK{CA65}}%
+\DeclareUnicodeCharacter{CA66}{\UTFK{CA66}}%
+\DeclareUnicodeCharacter{CA67}{\UTFK{CA67}}%
+\DeclareUnicodeCharacter{CA68}{\UTFK{CA68}}%
+\DeclareUnicodeCharacter{CA69}{\UTFK{CA69}}%
+\DeclareUnicodeCharacter{CA6A}{\UTFK{CA6A}}%
+\DeclareUnicodeCharacter{CA6B}{\UTFK{CA6B}}%
+\DeclareUnicodeCharacter{CA6C}{\UTFK{CA6C}}%
+\DeclareUnicodeCharacter{CA6D}{\UTFK{CA6D}}%
+\DeclareUnicodeCharacter{CA6E}{\UTFK{CA6E}}%
+\DeclareUnicodeCharacter{CA6F}{\UTFK{CA6F}}%
+\DeclareUnicodeCharacter{CA70}{\UTFK{CA70}}%
+\DeclareUnicodeCharacter{CA71}{\UTFK{CA71}}%
+\DeclareUnicodeCharacter{CA72}{\UTFK{CA72}}%
+\DeclareUnicodeCharacter{CA73}{\UTFK{CA73}}%
+\DeclareUnicodeCharacter{CA74}{\UTFK{CA74}}%
+\DeclareUnicodeCharacter{CA75}{\UTFK{CA75}}%
+\DeclareUnicodeCharacter{CA76}{\UTFK{CA76}}%
+\DeclareUnicodeCharacter{CA77}{\UTFK{CA77}}%
+\DeclareUnicodeCharacter{CA78}{\UTFK{CA78}}%
+\DeclareUnicodeCharacter{CA79}{\UTFK{CA79}}%
+\DeclareUnicodeCharacter{CA7A}{\UTFK{CA7A}}%
+\DeclareUnicodeCharacter{CA7B}{\UTFK{CA7B}}%
+\DeclareUnicodeCharacter{CA7C}{\UTFK{CA7C}}%
+\DeclareUnicodeCharacter{CA7D}{\UTFK{CA7D}}%
+\DeclareUnicodeCharacter{CA7E}{\UTFK{CA7E}}%
+\DeclareUnicodeCharacter{CA7F}{\UTFK{CA7F}}%
+\DeclareUnicodeCharacter{CA80}{\UTFK{CA80}}%
+\DeclareUnicodeCharacter{CA81}{\UTFK{CA81}}%
+\DeclareUnicodeCharacter{CA82}{\UTFK{CA82}}%
+\DeclareUnicodeCharacter{CA83}{\UTFK{CA83}}%
+\DeclareUnicodeCharacter{CA84}{\UTFK{CA84}}%
+\DeclareUnicodeCharacter{CA85}{\UTFK{CA85}}%
+\DeclareUnicodeCharacter{CA86}{\UTFK{CA86}}%
+\DeclareUnicodeCharacter{CA87}{\UTFK{CA87}}%
+\DeclareUnicodeCharacter{CA88}{\UTFK{CA88}}%
+\DeclareUnicodeCharacter{CA89}{\UTFK{CA89}}%
+\DeclareUnicodeCharacter{CA8A}{\UTFK{CA8A}}%
+\DeclareUnicodeCharacter{CA8B}{\UTFK{CA8B}}%
+\DeclareUnicodeCharacter{CA8C}{\UTFK{CA8C}}%
+\DeclareUnicodeCharacter{CA8D}{\UTFK{CA8D}}%
+\DeclareUnicodeCharacter{CA8E}{\UTFK{CA8E}}%
+\DeclareUnicodeCharacter{CA8F}{\UTFK{CA8F}}%
+\DeclareUnicodeCharacter{CA90}{\UTFK{CA90}}%
+\DeclareUnicodeCharacter{CA91}{\UTFK{CA91}}%
+\DeclareUnicodeCharacter{CA92}{\UTFK{CA92}}%
+\DeclareUnicodeCharacter{CA93}{\UTFK{CA93}}%
+\DeclareUnicodeCharacter{CA94}{\UTFK{CA94}}%
+\DeclareUnicodeCharacter{CA95}{\UTFK{CA95}}%
+\DeclareUnicodeCharacter{CA96}{\UTFK{CA96}}%
+\DeclareUnicodeCharacter{CA97}{\UTFK{CA97}}%
+\DeclareUnicodeCharacter{CA98}{\UTFK{CA98}}%
+\DeclareUnicodeCharacter{CA99}{\UTFK{CA99}}%
+\DeclareUnicodeCharacter{CA9A}{\UTFK{CA9A}}%
+\DeclareUnicodeCharacter{CA9B}{\UTFK{CA9B}}%
+\DeclareUnicodeCharacter{CA9C}{\UTFK{CA9C}}%
+\DeclareUnicodeCharacter{CA9D}{\UTFK{CA9D}}%
+\DeclareUnicodeCharacter{CA9E}{\UTFK{CA9E}}%
+\DeclareUnicodeCharacter{CA9F}{\UTFK{CA9F}}%
+\DeclareUnicodeCharacter{CAA0}{\UTFK{CAA0}}%
+\DeclareUnicodeCharacter{CAA1}{\UTFK{CAA1}}%
+\DeclareUnicodeCharacter{CAA2}{\UTFK{CAA2}}%
+\DeclareUnicodeCharacter{CAA3}{\UTFK{CAA3}}%
+\DeclareUnicodeCharacter{CAA4}{\UTFK{CAA4}}%
+\DeclareUnicodeCharacter{CAA5}{\UTFK{CAA5}}%
+\DeclareUnicodeCharacter{CAA6}{\UTFK{CAA6}}%
+\DeclareUnicodeCharacter{CAA7}{\UTFK{CAA7}}%
+\DeclareUnicodeCharacter{CAA8}{\UTFK{CAA8}}%
+\DeclareUnicodeCharacter{CAA9}{\UTFK{CAA9}}%
+\DeclareUnicodeCharacter{CAAA}{\UTFK{CAAA}}%
+\DeclareUnicodeCharacter{CAAB}{\UTFK{CAAB}}%
+\DeclareUnicodeCharacter{CAAC}{\UTFK{CAAC}}%
+\DeclareUnicodeCharacter{CAAD}{\UTFK{CAAD}}%
+\DeclareUnicodeCharacter{CAAE}{\UTFK{CAAE}}%
+\DeclareUnicodeCharacter{CAAF}{\UTFK{CAAF}}%
+\DeclareUnicodeCharacter{CAB0}{\UTFK{CAB0}}%
+\DeclareUnicodeCharacter{CAB1}{\UTFK{CAB1}}%
+\DeclareUnicodeCharacter{CAB2}{\UTFK{CAB2}}%
+\DeclareUnicodeCharacter{CAB3}{\UTFK{CAB3}}%
+\DeclareUnicodeCharacter{CAB4}{\UTFK{CAB4}}%
+\DeclareUnicodeCharacter{CAB5}{\UTFK{CAB5}}%
+\DeclareUnicodeCharacter{CAB6}{\UTFK{CAB6}}%
+\DeclareUnicodeCharacter{CAB7}{\UTFK{CAB7}}%
+\DeclareUnicodeCharacter{CAB8}{\UTFK{CAB8}}%
+\DeclareUnicodeCharacter{CAB9}{\UTFK{CAB9}}%
+\DeclareUnicodeCharacter{CABA}{\UTFK{CABA}}%
+\DeclareUnicodeCharacter{CABB}{\UTFK{CABB}}%
+\DeclareUnicodeCharacter{CABC}{\UTFK{CABC}}%
+\DeclareUnicodeCharacter{CABD}{\UTFK{CABD}}%
+\DeclareUnicodeCharacter{CABE}{\UTFK{CABE}}%
+\DeclareUnicodeCharacter{CABF}{\UTFK{CABF}}%
+\DeclareUnicodeCharacter{CAC0}{\UTFK{CAC0}}%
+\DeclareUnicodeCharacter{CAC1}{\UTFK{CAC1}}%
+\DeclareUnicodeCharacter{CAC2}{\UTFK{CAC2}}%
+\DeclareUnicodeCharacter{CAC3}{\UTFK{CAC3}}%
+\DeclareUnicodeCharacter{CAC4}{\UTFK{CAC4}}%
+\DeclareUnicodeCharacter{CAC5}{\UTFK{CAC5}}%
+\DeclareUnicodeCharacter{CAC6}{\UTFK{CAC6}}%
+\DeclareUnicodeCharacter{CAC7}{\UTFK{CAC7}}%
+\DeclareUnicodeCharacter{CAC8}{\UTFK{CAC8}}%
+\DeclareUnicodeCharacter{CAC9}{\UTFK{CAC9}}%
+\DeclareUnicodeCharacter{CACA}{\UTFK{CACA}}%
+\DeclareUnicodeCharacter{CACB}{\UTFK{CACB}}%
+\DeclareUnicodeCharacter{CACC}{\UTFK{CACC}}%
+\DeclareUnicodeCharacter{CACD}{\UTFK{CACD}}%
+\DeclareUnicodeCharacter{CACE}{\UTFK{CACE}}%
+\DeclareUnicodeCharacter{CACF}{\UTFK{CACF}}%
+\DeclareUnicodeCharacter{CAD0}{\UTFK{CAD0}}%
+\DeclareUnicodeCharacter{CAD1}{\UTFK{CAD1}}%
+\DeclareUnicodeCharacter{CAD2}{\UTFK{CAD2}}%
+\DeclareUnicodeCharacter{CAD3}{\UTFK{CAD3}}%
+\DeclareUnicodeCharacter{CAD4}{\UTFK{CAD4}}%
+\DeclareUnicodeCharacter{CAD5}{\UTFK{CAD5}}%
+\DeclareUnicodeCharacter{CAD6}{\UTFK{CAD6}}%
+\DeclareUnicodeCharacter{CAD7}{\UTFK{CAD7}}%
+\DeclareUnicodeCharacter{CAD8}{\UTFK{CAD8}}%
+\DeclareUnicodeCharacter{CAD9}{\UTFK{CAD9}}%
+\DeclareUnicodeCharacter{CADA}{\UTFK{CADA}}%
+\DeclareUnicodeCharacter{CADB}{\UTFK{CADB}}%
+\DeclareUnicodeCharacter{CADC}{\UTFK{CADC}}%
+\DeclareUnicodeCharacter{CADD}{\UTFK{CADD}}%
+\DeclareUnicodeCharacter{CADE}{\UTFK{CADE}}%
+\DeclareUnicodeCharacter{CADF}{\UTFK{CADF}}%
+\DeclareUnicodeCharacter{CAE0}{\UTFK{CAE0}}%
+\DeclareUnicodeCharacter{CAE1}{\UTFK{CAE1}}%
+\DeclareUnicodeCharacter{CAE2}{\UTFK{CAE2}}%
+\DeclareUnicodeCharacter{CAE3}{\UTFK{CAE3}}%
+\DeclareUnicodeCharacter{CAE4}{\UTFK{CAE4}}%
+\DeclareUnicodeCharacter{CAE5}{\UTFK{CAE5}}%
+\DeclareUnicodeCharacter{CAE6}{\UTFK{CAE6}}%
+\DeclareUnicodeCharacter{CAE7}{\UTFK{CAE7}}%
+\DeclareUnicodeCharacter{CAE8}{\UTFK{CAE8}}%
+\DeclareUnicodeCharacter{CAE9}{\UTFK{CAE9}}%
+\DeclareUnicodeCharacter{CAEA}{\UTFK{CAEA}}%
+\DeclareUnicodeCharacter{CAEB}{\UTFK{CAEB}}%
+\DeclareUnicodeCharacter{CAEC}{\UTFK{CAEC}}%
+\DeclareUnicodeCharacter{CAED}{\UTFK{CAED}}%
+\DeclareUnicodeCharacter{CAEE}{\UTFK{CAEE}}%
+\DeclareUnicodeCharacter{CAEF}{\UTFK{CAEF}}%
+\DeclareUnicodeCharacter{CAF0}{\UTFK{CAF0}}%
+\DeclareUnicodeCharacter{CAF1}{\UTFK{CAF1}}%
+\DeclareUnicodeCharacter{CAF2}{\UTFK{CAF2}}%
+\DeclareUnicodeCharacter{CAF3}{\UTFK{CAF3}}%
+\DeclareUnicodeCharacter{CAF4}{\UTFK{CAF4}}%
+\DeclareUnicodeCharacter{CAF5}{\UTFK{CAF5}}%
+\DeclareUnicodeCharacter{CAF6}{\UTFK{CAF6}}%
+\DeclareUnicodeCharacter{CAF7}{\UTFK{CAF7}}%
+\DeclareUnicodeCharacter{CAF8}{\UTFK{CAF8}}%
+\DeclareUnicodeCharacter{CAF9}{\UTFK{CAF9}}%
+\DeclareUnicodeCharacter{CAFA}{\UTFK{CAFA}}%
+\DeclareUnicodeCharacter{CAFB}{\UTFK{CAFB}}%
+\DeclareUnicodeCharacter{CAFC}{\UTFK{CAFC}}%
+\DeclareUnicodeCharacter{CAFD}{\UTFK{CAFD}}%
+\DeclareUnicodeCharacter{CAFE}{\UTFK{CAFE}}%
+\DeclareUnicodeCharacter{CAFF}{\UTFK{CAFF}}%
+\DeclareUnicodeCharacter{CB00}{\UTFK{CB00}}%
+\DeclareUnicodeCharacter{CB01}{\UTFK{CB01}}%
+\DeclareUnicodeCharacter{CB02}{\UTFK{CB02}}%
+\DeclareUnicodeCharacter{CB03}{\UTFK{CB03}}%
+\DeclareUnicodeCharacter{CB04}{\UTFK{CB04}}%
+\DeclareUnicodeCharacter{CB05}{\UTFK{CB05}}%
+\DeclareUnicodeCharacter{CB06}{\UTFK{CB06}}%
+\DeclareUnicodeCharacter{CB07}{\UTFK{CB07}}%
+\DeclareUnicodeCharacter{CB08}{\UTFK{CB08}}%
+\DeclareUnicodeCharacter{CB09}{\UTFK{CB09}}%
+\DeclareUnicodeCharacter{CB0A}{\UTFK{CB0A}}%
+\DeclareUnicodeCharacter{CB0B}{\UTFK{CB0B}}%
+\DeclareUnicodeCharacter{CB0C}{\UTFK{CB0C}}%
+\DeclareUnicodeCharacter{CB0D}{\UTFK{CB0D}}%
+\DeclareUnicodeCharacter{CB0E}{\UTFK{CB0E}}%
+\DeclareUnicodeCharacter{CB0F}{\UTFK{CB0F}}%
+\DeclareUnicodeCharacter{CB10}{\UTFK{CB10}}%
+\DeclareUnicodeCharacter{CB11}{\UTFK{CB11}}%
+\DeclareUnicodeCharacter{CB12}{\UTFK{CB12}}%
+\DeclareUnicodeCharacter{CB13}{\UTFK{CB13}}%
+\DeclareUnicodeCharacter{CB14}{\UTFK{CB14}}%
+\DeclareUnicodeCharacter{CB15}{\UTFK{CB15}}%
+\DeclareUnicodeCharacter{CB16}{\UTFK{CB16}}%
+\DeclareUnicodeCharacter{CB17}{\UTFK{CB17}}%
+\DeclareUnicodeCharacter{CB18}{\UTFK{CB18}}%
+\DeclareUnicodeCharacter{CB19}{\UTFK{CB19}}%
+\DeclareUnicodeCharacter{CB1A}{\UTFK{CB1A}}%
+\DeclareUnicodeCharacter{CB1B}{\UTFK{CB1B}}%
+\DeclareUnicodeCharacter{CB1C}{\UTFK{CB1C}}%
+\DeclareUnicodeCharacter{CB1D}{\UTFK{CB1D}}%
+\DeclareUnicodeCharacter{CB1E}{\UTFK{CB1E}}%
+\DeclareUnicodeCharacter{CB1F}{\UTFK{CB1F}}%
+\DeclareUnicodeCharacter{CB20}{\UTFK{CB20}}%
+\DeclareUnicodeCharacter{CB21}{\UTFK{CB21}}%
+\DeclareUnicodeCharacter{CB22}{\UTFK{CB22}}%
+\DeclareUnicodeCharacter{CB23}{\UTFK{CB23}}%
+\DeclareUnicodeCharacter{CB24}{\UTFK{CB24}}%
+\DeclareUnicodeCharacter{CB25}{\UTFK{CB25}}%
+\DeclareUnicodeCharacter{CB26}{\UTFK{CB26}}%
+\DeclareUnicodeCharacter{CB27}{\UTFK{CB27}}%
+\DeclareUnicodeCharacter{CB28}{\UTFK{CB28}}%
+\DeclareUnicodeCharacter{CB29}{\UTFK{CB29}}%
+\DeclareUnicodeCharacter{CB2A}{\UTFK{CB2A}}%
+\DeclareUnicodeCharacter{CB2B}{\UTFK{CB2B}}%
+\DeclareUnicodeCharacter{CB2C}{\UTFK{CB2C}}%
+\DeclareUnicodeCharacter{CB2D}{\UTFK{CB2D}}%
+\DeclareUnicodeCharacter{CB2E}{\UTFK{CB2E}}%
+\DeclareUnicodeCharacter{CB2F}{\UTFK{CB2F}}%
+\DeclareUnicodeCharacter{CB30}{\UTFK{CB30}}%
+\DeclareUnicodeCharacter{CB31}{\UTFK{CB31}}%
+\DeclareUnicodeCharacter{CB32}{\UTFK{CB32}}%
+\DeclareUnicodeCharacter{CB33}{\UTFK{CB33}}%
+\DeclareUnicodeCharacter{CB34}{\UTFK{CB34}}%
+\DeclareUnicodeCharacter{CB35}{\UTFK{CB35}}%
+\DeclareUnicodeCharacter{CB36}{\UTFK{CB36}}%
+\DeclareUnicodeCharacter{CB37}{\UTFK{CB37}}%
+\DeclareUnicodeCharacter{CB38}{\UTFK{CB38}}%
+\DeclareUnicodeCharacter{CB39}{\UTFK{CB39}}%
+\DeclareUnicodeCharacter{CB3A}{\UTFK{CB3A}}%
+\DeclareUnicodeCharacter{CB3B}{\UTFK{CB3B}}%
+\DeclareUnicodeCharacter{CB3C}{\UTFK{CB3C}}%
+\DeclareUnicodeCharacter{CB3D}{\UTFK{CB3D}}%
+\DeclareUnicodeCharacter{CB3E}{\UTFK{CB3E}}%
+\DeclareUnicodeCharacter{CB3F}{\UTFK{CB3F}}%
+\DeclareUnicodeCharacter{CB40}{\UTFK{CB40}}%
+\DeclareUnicodeCharacter{CB41}{\UTFK{CB41}}%
+\DeclareUnicodeCharacter{CB42}{\UTFK{CB42}}%
+\DeclareUnicodeCharacter{CB43}{\UTFK{CB43}}%
+\DeclareUnicodeCharacter{CB44}{\UTFK{CB44}}%
+\DeclareUnicodeCharacter{CB45}{\UTFK{CB45}}%
+\DeclareUnicodeCharacter{CB46}{\UTFK{CB46}}%
+\DeclareUnicodeCharacter{CB47}{\UTFK{CB47}}%
+\DeclareUnicodeCharacter{CB48}{\UTFK{CB48}}%
+\DeclareUnicodeCharacter{CB49}{\UTFK{CB49}}%
+\DeclareUnicodeCharacter{CB4A}{\UTFK{CB4A}}%
+\DeclareUnicodeCharacter{CB4B}{\UTFK{CB4B}}%
+\DeclareUnicodeCharacter{CB4C}{\UTFK{CB4C}}%
+\DeclareUnicodeCharacter{CB4D}{\UTFK{CB4D}}%
+\DeclareUnicodeCharacter{CB4E}{\UTFK{CB4E}}%
+\DeclareUnicodeCharacter{CB4F}{\UTFK{CB4F}}%
+\DeclareUnicodeCharacter{CB50}{\UTFK{CB50}}%
+\DeclareUnicodeCharacter{CB51}{\UTFK{CB51}}%
+\DeclareUnicodeCharacter{CB52}{\UTFK{CB52}}%
+\DeclareUnicodeCharacter{CB53}{\UTFK{CB53}}%
+\DeclareUnicodeCharacter{CB54}{\UTFK{CB54}}%
+\DeclareUnicodeCharacter{CB55}{\UTFK{CB55}}%
+\DeclareUnicodeCharacter{CB56}{\UTFK{CB56}}%
+\DeclareUnicodeCharacter{CB57}{\UTFK{CB57}}%
+\DeclareUnicodeCharacter{CB58}{\UTFK{CB58}}%
+\DeclareUnicodeCharacter{CB59}{\UTFK{CB59}}%
+\DeclareUnicodeCharacter{CB5A}{\UTFK{CB5A}}%
+\DeclareUnicodeCharacter{CB5B}{\UTFK{CB5B}}%
+\DeclareUnicodeCharacter{CB5C}{\UTFK{CB5C}}%
+\DeclareUnicodeCharacter{CB5D}{\UTFK{CB5D}}%
+\DeclareUnicodeCharacter{CB5E}{\UTFK{CB5E}}%
+\DeclareUnicodeCharacter{CB5F}{\UTFK{CB5F}}%
+\DeclareUnicodeCharacter{CB60}{\UTFK{CB60}}%
+\DeclareUnicodeCharacter{CB61}{\UTFK{CB61}}%
+\DeclareUnicodeCharacter{CB62}{\UTFK{CB62}}%
+\DeclareUnicodeCharacter{CB63}{\UTFK{CB63}}%
+\DeclareUnicodeCharacter{CB64}{\UTFK{CB64}}%
+\DeclareUnicodeCharacter{CB65}{\UTFK{CB65}}%
+\DeclareUnicodeCharacter{CB66}{\UTFK{CB66}}%
+\DeclareUnicodeCharacter{CB67}{\UTFK{CB67}}%
+\DeclareUnicodeCharacter{CB68}{\UTFK{CB68}}%
+\DeclareUnicodeCharacter{CB69}{\UTFK{CB69}}%
+\DeclareUnicodeCharacter{CB6A}{\UTFK{CB6A}}%
+\DeclareUnicodeCharacter{CB6B}{\UTFK{CB6B}}%
+\DeclareUnicodeCharacter{CB6C}{\UTFK{CB6C}}%
+\DeclareUnicodeCharacter{CB6D}{\UTFK{CB6D}}%
+\DeclareUnicodeCharacter{CB6E}{\UTFK{CB6E}}%
+\DeclareUnicodeCharacter{CB6F}{\UTFK{CB6F}}%
+\DeclareUnicodeCharacter{CB70}{\UTFK{CB70}}%
+\DeclareUnicodeCharacter{CB71}{\UTFK{CB71}}%
+\DeclareUnicodeCharacter{CB72}{\UTFK{CB72}}%
+\DeclareUnicodeCharacter{CB73}{\UTFK{CB73}}%
+\DeclareUnicodeCharacter{CB74}{\UTFK{CB74}}%
+\DeclareUnicodeCharacter{CB75}{\UTFK{CB75}}%
+\DeclareUnicodeCharacter{CB76}{\UTFK{CB76}}%
+\DeclareUnicodeCharacter{CB77}{\UTFK{CB77}}%
+\DeclareUnicodeCharacter{CB78}{\UTFK{CB78}}%
+\DeclareUnicodeCharacter{CB79}{\UTFK{CB79}}%
+\DeclareUnicodeCharacter{CB7A}{\UTFK{CB7A}}%
+\DeclareUnicodeCharacter{CB7B}{\UTFK{CB7B}}%
+\DeclareUnicodeCharacter{CB7C}{\UTFK{CB7C}}%
+\DeclareUnicodeCharacter{CB7D}{\UTFK{CB7D}}%
+\DeclareUnicodeCharacter{CB7E}{\UTFK{CB7E}}%
+\DeclareUnicodeCharacter{CB7F}{\UTFK{CB7F}}%
+\DeclareUnicodeCharacter{CB80}{\UTFK{CB80}}%
+\DeclareUnicodeCharacter{CB81}{\UTFK{CB81}}%
+\DeclareUnicodeCharacter{CB82}{\UTFK{CB82}}%
+\DeclareUnicodeCharacter{CB83}{\UTFK{CB83}}%
+\DeclareUnicodeCharacter{CB84}{\UTFK{CB84}}%
+\DeclareUnicodeCharacter{CB85}{\UTFK{CB85}}%
+\DeclareUnicodeCharacter{CB86}{\UTFK{CB86}}%
+\DeclareUnicodeCharacter{CB87}{\UTFK{CB87}}%
+\DeclareUnicodeCharacter{CB88}{\UTFK{CB88}}%
+\DeclareUnicodeCharacter{CB89}{\UTFK{CB89}}%
+\DeclareUnicodeCharacter{CB8A}{\UTFK{CB8A}}%
+\DeclareUnicodeCharacter{CB8B}{\UTFK{CB8B}}%
+\DeclareUnicodeCharacter{CB8C}{\UTFK{CB8C}}%
+\DeclareUnicodeCharacter{CB8D}{\UTFK{CB8D}}%
+\DeclareUnicodeCharacter{CB8E}{\UTFK{CB8E}}%
+\DeclareUnicodeCharacter{CB8F}{\UTFK{CB8F}}%
+\DeclareUnicodeCharacter{CB90}{\UTFK{CB90}}%
+\DeclareUnicodeCharacter{CB91}{\UTFK{CB91}}%
+\DeclareUnicodeCharacter{CB92}{\UTFK{CB92}}%
+\DeclareUnicodeCharacter{CB93}{\UTFK{CB93}}%
+\DeclareUnicodeCharacter{CB94}{\UTFK{CB94}}%
+\DeclareUnicodeCharacter{CB95}{\UTFK{CB95}}%
+\DeclareUnicodeCharacter{CB96}{\UTFK{CB96}}%
+\DeclareUnicodeCharacter{CB97}{\UTFK{CB97}}%
+\DeclareUnicodeCharacter{CB98}{\UTFK{CB98}}%
+\DeclareUnicodeCharacter{CB99}{\UTFK{CB99}}%
+\DeclareUnicodeCharacter{CB9A}{\UTFK{CB9A}}%
+\DeclareUnicodeCharacter{CB9B}{\UTFK{CB9B}}%
+\DeclareUnicodeCharacter{CB9C}{\UTFK{CB9C}}%
+\DeclareUnicodeCharacter{CB9D}{\UTFK{CB9D}}%
+\DeclareUnicodeCharacter{CB9E}{\UTFK{CB9E}}%
+\DeclareUnicodeCharacter{CB9F}{\UTFK{CB9F}}%
+\DeclareUnicodeCharacter{CBA0}{\UTFK{CBA0}}%
+\DeclareUnicodeCharacter{CBA1}{\UTFK{CBA1}}%
+\DeclareUnicodeCharacter{CBA2}{\UTFK{CBA2}}%
+\DeclareUnicodeCharacter{CBA3}{\UTFK{CBA3}}%
+\DeclareUnicodeCharacter{CBA4}{\UTFK{CBA4}}%
+\DeclareUnicodeCharacter{CBA5}{\UTFK{CBA5}}%
+\DeclareUnicodeCharacter{CBA6}{\UTFK{CBA6}}%
+\DeclareUnicodeCharacter{CBA7}{\UTFK{CBA7}}%
+\DeclareUnicodeCharacter{CBA8}{\UTFK{CBA8}}%
+\DeclareUnicodeCharacter{CBA9}{\UTFK{CBA9}}%
+\DeclareUnicodeCharacter{CBAA}{\UTFK{CBAA}}%
+\DeclareUnicodeCharacter{CBAB}{\UTFK{CBAB}}%
+\DeclareUnicodeCharacter{CBAC}{\UTFK{CBAC}}%
+\DeclareUnicodeCharacter{CBAD}{\UTFK{CBAD}}%
+\DeclareUnicodeCharacter{CBAE}{\UTFK{CBAE}}%
+\DeclareUnicodeCharacter{CBAF}{\UTFK{CBAF}}%
+\DeclareUnicodeCharacter{CBB0}{\UTFK{CBB0}}%
+\DeclareUnicodeCharacter{CBB1}{\UTFK{CBB1}}%
+\DeclareUnicodeCharacter{CBB2}{\UTFK{CBB2}}%
+\DeclareUnicodeCharacter{CBB3}{\UTFK{CBB3}}%
+\DeclareUnicodeCharacter{CBB4}{\UTFK{CBB4}}%
+\DeclareUnicodeCharacter{CBB5}{\UTFK{CBB5}}%
+\DeclareUnicodeCharacter{CBB6}{\UTFK{CBB6}}%
+\DeclareUnicodeCharacter{CBB7}{\UTFK{CBB7}}%
+\DeclareUnicodeCharacter{CBB8}{\UTFK{CBB8}}%
+\DeclareUnicodeCharacter{CBB9}{\UTFK{CBB9}}%
+\DeclareUnicodeCharacter{CBBA}{\UTFK{CBBA}}%
+\DeclareUnicodeCharacter{CBBB}{\UTFK{CBBB}}%
+\DeclareUnicodeCharacter{CBBC}{\UTFK{CBBC}}%
+\DeclareUnicodeCharacter{CBBD}{\UTFK{CBBD}}%
+\DeclareUnicodeCharacter{CBBE}{\UTFK{CBBE}}%
+\DeclareUnicodeCharacter{CBBF}{\UTFK{CBBF}}%
+\DeclareUnicodeCharacter{CBC0}{\UTFK{CBC0}}%
+\DeclareUnicodeCharacter{CBC1}{\UTFK{CBC1}}%
+\DeclareUnicodeCharacter{CBC2}{\UTFK{CBC2}}%
+\DeclareUnicodeCharacter{CBC3}{\UTFK{CBC3}}%
+\DeclareUnicodeCharacter{CBC4}{\UTFK{CBC4}}%
+\DeclareUnicodeCharacter{CBC5}{\UTFK{CBC5}}%
+\DeclareUnicodeCharacter{CBC6}{\UTFK{CBC6}}%
+\DeclareUnicodeCharacter{CBC7}{\UTFK{CBC7}}%
+\DeclareUnicodeCharacter{CBC8}{\UTFK{CBC8}}%
+\DeclareUnicodeCharacter{CBC9}{\UTFK{CBC9}}%
+\DeclareUnicodeCharacter{CBCA}{\UTFK{CBCA}}%
+\DeclareUnicodeCharacter{CBCB}{\UTFK{CBCB}}%
+\DeclareUnicodeCharacter{CBCC}{\UTFK{CBCC}}%
+\DeclareUnicodeCharacter{CBCD}{\UTFK{CBCD}}%
+\DeclareUnicodeCharacter{CBCE}{\UTFK{CBCE}}%
+\DeclareUnicodeCharacter{CBCF}{\UTFK{CBCF}}%
+\DeclareUnicodeCharacter{CBD0}{\UTFK{CBD0}}%
+\DeclareUnicodeCharacter{CBD1}{\UTFK{CBD1}}%
+\DeclareUnicodeCharacter{CBD2}{\UTFK{CBD2}}%
+\DeclareUnicodeCharacter{CBD3}{\UTFK{CBD3}}%
+\DeclareUnicodeCharacter{CBD4}{\UTFK{CBD4}}%
+\DeclareUnicodeCharacter{CBD5}{\UTFK{CBD5}}%
+\DeclareUnicodeCharacter{CBD6}{\UTFK{CBD6}}%
+\DeclareUnicodeCharacter{CBD7}{\UTFK{CBD7}}%
+\DeclareUnicodeCharacter{CBD8}{\UTFK{CBD8}}%
+\DeclareUnicodeCharacter{CBD9}{\UTFK{CBD9}}%
+\DeclareUnicodeCharacter{CBDA}{\UTFK{CBDA}}%
+\DeclareUnicodeCharacter{CBDB}{\UTFK{CBDB}}%
+\DeclareUnicodeCharacter{CBDC}{\UTFK{CBDC}}%
+\DeclareUnicodeCharacter{CBDD}{\UTFK{CBDD}}%
+\DeclareUnicodeCharacter{CBDE}{\UTFK{CBDE}}%
+\DeclareUnicodeCharacter{CBDF}{\UTFK{CBDF}}%
+\DeclareUnicodeCharacter{CBE0}{\UTFK{CBE0}}%
+\DeclareUnicodeCharacter{CBE1}{\UTFK{CBE1}}%
+\DeclareUnicodeCharacter{CBE2}{\UTFK{CBE2}}%
+\DeclareUnicodeCharacter{CBE3}{\UTFK{CBE3}}%
+\DeclareUnicodeCharacter{CBE4}{\UTFK{CBE4}}%
+\DeclareUnicodeCharacter{CBE5}{\UTFK{CBE5}}%
+\DeclareUnicodeCharacter{CBE6}{\UTFK{CBE6}}%
+\DeclareUnicodeCharacter{CBE7}{\UTFK{CBE7}}%
+\DeclareUnicodeCharacter{CBE8}{\UTFK{CBE8}}%
+\DeclareUnicodeCharacter{CBE9}{\UTFK{CBE9}}%
+\DeclareUnicodeCharacter{CBEA}{\UTFK{CBEA}}%
+\DeclareUnicodeCharacter{CBEB}{\UTFK{CBEB}}%
+\DeclareUnicodeCharacter{CBEC}{\UTFK{CBEC}}%
+\DeclareUnicodeCharacter{CBED}{\UTFK{CBED}}%
+\DeclareUnicodeCharacter{CBEE}{\UTFK{CBEE}}%
+\DeclareUnicodeCharacter{CBEF}{\UTFK{CBEF}}%
+\DeclareUnicodeCharacter{CBF0}{\UTFK{CBF0}}%
+\DeclareUnicodeCharacter{CBF1}{\UTFK{CBF1}}%
+\DeclareUnicodeCharacter{CBF2}{\UTFK{CBF2}}%
+\DeclareUnicodeCharacter{CBF3}{\UTFK{CBF3}}%
+\DeclareUnicodeCharacter{CBF4}{\UTFK{CBF4}}%
+\DeclareUnicodeCharacter{CBF5}{\UTFK{CBF5}}%
+\DeclareUnicodeCharacter{CBF6}{\UTFK{CBF6}}%
+\DeclareUnicodeCharacter{CBF7}{\UTFK{CBF7}}%
+\DeclareUnicodeCharacter{CBF8}{\UTFK{CBF8}}%
+\DeclareUnicodeCharacter{CBF9}{\UTFK{CBF9}}%
+\DeclareUnicodeCharacter{CBFA}{\UTFK{CBFA}}%
+\DeclareUnicodeCharacter{CBFB}{\UTFK{CBFB}}%
+\DeclareUnicodeCharacter{CBFC}{\UTFK{CBFC}}%
+\DeclareUnicodeCharacter{CBFD}{\UTFK{CBFD}}%
+\DeclareUnicodeCharacter{CBFE}{\UTFK{CBFE}}%
+\DeclareUnicodeCharacter{CBFF}{\UTFK{CBFF}}%
+\DeclareUnicodeCharacter{CC00}{\UTFK{CC00}}%
+\DeclareUnicodeCharacter{CC01}{\UTFK{CC01}}%
+\DeclareUnicodeCharacter{CC02}{\UTFK{CC02}}%
+\DeclareUnicodeCharacter{CC03}{\UTFK{CC03}}%
+\DeclareUnicodeCharacter{CC04}{\UTFK{CC04}}%
+\DeclareUnicodeCharacter{CC05}{\UTFK{CC05}}%
+\DeclareUnicodeCharacter{CC06}{\UTFK{CC06}}%
+\DeclareUnicodeCharacter{CC07}{\UTFK{CC07}}%
+\DeclareUnicodeCharacter{CC08}{\UTFK{CC08}}%
+\DeclareUnicodeCharacter{CC09}{\UTFK{CC09}}%
+\DeclareUnicodeCharacter{CC0A}{\UTFK{CC0A}}%
+\DeclareUnicodeCharacter{CC0B}{\UTFK{CC0B}}%
+\DeclareUnicodeCharacter{CC0C}{\UTFK{CC0C}}%
+\DeclareUnicodeCharacter{CC0D}{\UTFK{CC0D}}%
+\DeclareUnicodeCharacter{CC0E}{\UTFK{CC0E}}%
+\DeclareUnicodeCharacter{CC0F}{\UTFK{CC0F}}%
+\DeclareUnicodeCharacter{CC10}{\UTFK{CC10}}%
+\DeclareUnicodeCharacter{CC11}{\UTFK{CC11}}%
+\DeclareUnicodeCharacter{CC12}{\UTFK{CC12}}%
+\DeclareUnicodeCharacter{CC13}{\UTFK{CC13}}%
+\DeclareUnicodeCharacter{CC14}{\UTFK{CC14}}%
+\DeclareUnicodeCharacter{CC15}{\UTFK{CC15}}%
+\DeclareUnicodeCharacter{CC16}{\UTFK{CC16}}%
+\DeclareUnicodeCharacter{CC17}{\UTFK{CC17}}%
+\DeclareUnicodeCharacter{CC18}{\UTFK{CC18}}%
+\DeclareUnicodeCharacter{CC19}{\UTFK{CC19}}%
+\DeclareUnicodeCharacter{CC1A}{\UTFK{CC1A}}%
+\DeclareUnicodeCharacter{CC1B}{\UTFK{CC1B}}%
+\DeclareUnicodeCharacter{CC1C}{\UTFK{CC1C}}%
+\DeclareUnicodeCharacter{CC1D}{\UTFK{CC1D}}%
+\DeclareUnicodeCharacter{CC1E}{\UTFK{CC1E}}%
+\DeclareUnicodeCharacter{CC1F}{\UTFK{CC1F}}%
+\DeclareUnicodeCharacter{CC20}{\UTFK{CC20}}%
+\DeclareUnicodeCharacter{CC21}{\UTFK{CC21}}%
+\DeclareUnicodeCharacter{CC22}{\UTFK{CC22}}%
+\DeclareUnicodeCharacter{CC23}{\UTFK{CC23}}%
+\DeclareUnicodeCharacter{CC24}{\UTFK{CC24}}%
+\DeclareUnicodeCharacter{CC25}{\UTFK{CC25}}%
+\DeclareUnicodeCharacter{CC26}{\UTFK{CC26}}%
+\DeclareUnicodeCharacter{CC27}{\UTFK{CC27}}%
+\DeclareUnicodeCharacter{CC28}{\UTFK{CC28}}%
+\DeclareUnicodeCharacter{CC29}{\UTFK{CC29}}%
+\DeclareUnicodeCharacter{CC2A}{\UTFK{CC2A}}%
+\DeclareUnicodeCharacter{CC2B}{\UTFK{CC2B}}%
+\DeclareUnicodeCharacter{CC2C}{\UTFK{CC2C}}%
+\DeclareUnicodeCharacter{CC2D}{\UTFK{CC2D}}%
+\DeclareUnicodeCharacter{CC2E}{\UTFK{CC2E}}%
+\DeclareUnicodeCharacter{CC2F}{\UTFK{CC2F}}%
+\DeclareUnicodeCharacter{CC30}{\UTFK{CC30}}%
+\DeclareUnicodeCharacter{CC31}{\UTFK{CC31}}%
+\DeclareUnicodeCharacter{CC32}{\UTFK{CC32}}%
+\DeclareUnicodeCharacter{CC33}{\UTFK{CC33}}%
+\DeclareUnicodeCharacter{CC34}{\UTFK{CC34}}%
+\DeclareUnicodeCharacter{CC35}{\UTFK{CC35}}%
+\DeclareUnicodeCharacter{CC36}{\UTFK{CC36}}%
+\DeclareUnicodeCharacter{CC37}{\UTFK{CC37}}%
+\DeclareUnicodeCharacter{CC38}{\UTFK{CC38}}%
+\DeclareUnicodeCharacter{CC39}{\UTFK{CC39}}%
+\DeclareUnicodeCharacter{CC3A}{\UTFK{CC3A}}%
+\DeclareUnicodeCharacter{CC3B}{\UTFK{CC3B}}%
+\DeclareUnicodeCharacter{CC3C}{\UTFK{CC3C}}%
+\DeclareUnicodeCharacter{CC3D}{\UTFK{CC3D}}%
+\DeclareUnicodeCharacter{CC3E}{\UTFK{CC3E}}%
+\DeclareUnicodeCharacter{CC3F}{\UTFK{CC3F}}%
+\DeclareUnicodeCharacter{CC40}{\UTFK{CC40}}%
+\DeclareUnicodeCharacter{CC41}{\UTFK{CC41}}%
+\DeclareUnicodeCharacter{CC42}{\UTFK{CC42}}%
+\DeclareUnicodeCharacter{CC43}{\UTFK{CC43}}%
+\DeclareUnicodeCharacter{CC44}{\UTFK{CC44}}%
+\DeclareUnicodeCharacter{CC45}{\UTFK{CC45}}%
+\DeclareUnicodeCharacter{CC46}{\UTFK{CC46}}%
+\DeclareUnicodeCharacter{CC47}{\UTFK{CC47}}%
+\DeclareUnicodeCharacter{CC48}{\UTFK{CC48}}%
+\DeclareUnicodeCharacter{CC49}{\UTFK{CC49}}%
+\DeclareUnicodeCharacter{CC4A}{\UTFK{CC4A}}%
+\DeclareUnicodeCharacter{CC4B}{\UTFK{CC4B}}%
+\DeclareUnicodeCharacter{CC4C}{\UTFK{CC4C}}%
+\DeclareUnicodeCharacter{CC4D}{\UTFK{CC4D}}%
+\DeclareUnicodeCharacter{CC4E}{\UTFK{CC4E}}%
+\DeclareUnicodeCharacter{CC4F}{\UTFK{CC4F}}%
+\DeclareUnicodeCharacter{CC50}{\UTFK{CC50}}%
+\DeclareUnicodeCharacter{CC51}{\UTFK{CC51}}%
+\DeclareUnicodeCharacter{CC52}{\UTFK{CC52}}%
+\DeclareUnicodeCharacter{CC53}{\UTFK{CC53}}%
+\DeclareUnicodeCharacter{CC54}{\UTFK{CC54}}%
+\DeclareUnicodeCharacter{CC55}{\UTFK{CC55}}%
+\DeclareUnicodeCharacter{CC56}{\UTFK{CC56}}%
+\DeclareUnicodeCharacter{CC57}{\UTFK{CC57}}%
+\DeclareUnicodeCharacter{CC58}{\UTFK{CC58}}%
+\DeclareUnicodeCharacter{CC59}{\UTFK{CC59}}%
+\DeclareUnicodeCharacter{CC5A}{\UTFK{CC5A}}%
+\DeclareUnicodeCharacter{CC5B}{\UTFK{CC5B}}%
+\DeclareUnicodeCharacter{CC5C}{\UTFK{CC5C}}%
+\DeclareUnicodeCharacter{CC5D}{\UTFK{CC5D}}%
+\DeclareUnicodeCharacter{CC5E}{\UTFK{CC5E}}%
+\DeclareUnicodeCharacter{CC5F}{\UTFK{CC5F}}%
+\DeclareUnicodeCharacter{CC60}{\UTFK{CC60}}%
+\DeclareUnicodeCharacter{CC61}{\UTFK{CC61}}%
+\DeclareUnicodeCharacter{CC62}{\UTFK{CC62}}%
+\DeclareUnicodeCharacter{CC63}{\UTFK{CC63}}%
+\DeclareUnicodeCharacter{CC64}{\UTFK{CC64}}%
+\DeclareUnicodeCharacter{CC65}{\UTFK{CC65}}%
+\DeclareUnicodeCharacter{CC66}{\UTFK{CC66}}%
+\DeclareUnicodeCharacter{CC67}{\UTFK{CC67}}%
+\DeclareUnicodeCharacter{CC68}{\UTFK{CC68}}%
+\DeclareUnicodeCharacter{CC69}{\UTFK{CC69}}%
+\DeclareUnicodeCharacter{CC6A}{\UTFK{CC6A}}%
+\DeclareUnicodeCharacter{CC6B}{\UTFK{CC6B}}%
+\DeclareUnicodeCharacter{CC6C}{\UTFK{CC6C}}%
+\DeclareUnicodeCharacter{CC6D}{\UTFK{CC6D}}%
+\DeclareUnicodeCharacter{CC6E}{\UTFK{CC6E}}%
+\DeclareUnicodeCharacter{CC6F}{\UTFK{CC6F}}%
+\DeclareUnicodeCharacter{CC70}{\UTFK{CC70}}%
+\DeclareUnicodeCharacter{CC71}{\UTFK{CC71}}%
+\DeclareUnicodeCharacter{CC72}{\UTFK{CC72}}%
+\DeclareUnicodeCharacter{CC73}{\UTFK{CC73}}%
+\DeclareUnicodeCharacter{CC74}{\UTFK{CC74}}%
+\DeclareUnicodeCharacter{CC75}{\UTFK{CC75}}%
+\DeclareUnicodeCharacter{CC76}{\UTFK{CC76}}%
+\DeclareUnicodeCharacter{CC77}{\UTFK{CC77}}%
+\DeclareUnicodeCharacter{CC78}{\UTFK{CC78}}%
+\DeclareUnicodeCharacter{CC79}{\UTFK{CC79}}%
+\DeclareUnicodeCharacter{CC7A}{\UTFK{CC7A}}%
+\DeclareUnicodeCharacter{CC7B}{\UTFK{CC7B}}%
+\DeclareUnicodeCharacter{CC7C}{\UTFK{CC7C}}%
+\DeclareUnicodeCharacter{CC7D}{\UTFK{CC7D}}%
+\DeclareUnicodeCharacter{CC7E}{\UTFK{CC7E}}%
+\DeclareUnicodeCharacter{CC7F}{\UTFK{CC7F}}%
+\DeclareUnicodeCharacter{CC80}{\UTFK{CC80}}%
+\DeclareUnicodeCharacter{CC81}{\UTFK{CC81}}%
+\DeclareUnicodeCharacter{CC82}{\UTFK{CC82}}%
+\DeclareUnicodeCharacter{CC83}{\UTFK{CC83}}%
+\DeclareUnicodeCharacter{CC84}{\UTFK{CC84}}%
+\DeclareUnicodeCharacter{CC85}{\UTFK{CC85}}%
+\DeclareUnicodeCharacter{CC86}{\UTFK{CC86}}%
+\DeclareUnicodeCharacter{CC87}{\UTFK{CC87}}%
+\DeclareUnicodeCharacter{CC88}{\UTFK{CC88}}%
+\DeclareUnicodeCharacter{CC89}{\UTFK{CC89}}%
+\DeclareUnicodeCharacter{CC8A}{\UTFK{CC8A}}%
+\DeclareUnicodeCharacter{CC8B}{\UTFK{CC8B}}%
+\DeclareUnicodeCharacter{CC8C}{\UTFK{CC8C}}%
+\DeclareUnicodeCharacter{CC8D}{\UTFK{CC8D}}%
+\DeclareUnicodeCharacter{CC8E}{\UTFK{CC8E}}%
+\DeclareUnicodeCharacter{CC8F}{\UTFK{CC8F}}%
+\DeclareUnicodeCharacter{CC90}{\UTFK{CC90}}%
+\DeclareUnicodeCharacter{CC91}{\UTFK{CC91}}%
+\DeclareUnicodeCharacter{CC92}{\UTFK{CC92}}%
+\DeclareUnicodeCharacter{CC93}{\UTFK{CC93}}%
+\DeclareUnicodeCharacter{CC94}{\UTFK{CC94}}%
+\DeclareUnicodeCharacter{CC95}{\UTFK{CC95}}%
+\DeclareUnicodeCharacter{CC96}{\UTFK{CC96}}%
+\DeclareUnicodeCharacter{CC97}{\UTFK{CC97}}%
+\DeclareUnicodeCharacter{CC98}{\UTFK{CC98}}%
+\DeclareUnicodeCharacter{CC99}{\UTFK{CC99}}%
+\DeclareUnicodeCharacter{CC9A}{\UTFK{CC9A}}%
+\DeclareUnicodeCharacter{CC9B}{\UTFK{CC9B}}%
+\DeclareUnicodeCharacter{CC9C}{\UTFK{CC9C}}%
+\DeclareUnicodeCharacter{CC9D}{\UTFK{CC9D}}%
+\DeclareUnicodeCharacter{CC9E}{\UTFK{CC9E}}%
+\DeclareUnicodeCharacter{CC9F}{\UTFK{CC9F}}%
+\DeclareUnicodeCharacter{CCA0}{\UTFK{CCA0}}%
+\DeclareUnicodeCharacter{CCA1}{\UTFK{CCA1}}%
+\DeclareUnicodeCharacter{CCA2}{\UTFK{CCA2}}%
+\DeclareUnicodeCharacter{CCA3}{\UTFK{CCA3}}%
+\DeclareUnicodeCharacter{CCA4}{\UTFK{CCA4}}%
+\DeclareUnicodeCharacter{CCA5}{\UTFK{CCA5}}%
+\DeclareUnicodeCharacter{CCA6}{\UTFK{CCA6}}%
+\DeclareUnicodeCharacter{CCA7}{\UTFK{CCA7}}%
+\DeclareUnicodeCharacter{CCA8}{\UTFK{CCA8}}%
+\DeclareUnicodeCharacter{CCA9}{\UTFK{CCA9}}%
+\DeclareUnicodeCharacter{CCAA}{\UTFK{CCAA}}%
+\DeclareUnicodeCharacter{CCAB}{\UTFK{CCAB}}%
+\DeclareUnicodeCharacter{CCAC}{\UTFK{CCAC}}%
+\DeclareUnicodeCharacter{CCAD}{\UTFK{CCAD}}%
+\DeclareUnicodeCharacter{CCAE}{\UTFK{CCAE}}%
+\DeclareUnicodeCharacter{CCAF}{\UTFK{CCAF}}%
+\DeclareUnicodeCharacter{CCB0}{\UTFK{CCB0}}%
+\DeclareUnicodeCharacter{CCB1}{\UTFK{CCB1}}%
+\DeclareUnicodeCharacter{CCB2}{\UTFK{CCB2}}%
+\DeclareUnicodeCharacter{CCB3}{\UTFK{CCB3}}%
+\DeclareUnicodeCharacter{CCB4}{\UTFK{CCB4}}%
+\DeclareUnicodeCharacter{CCB5}{\UTFK{CCB5}}%
+\DeclareUnicodeCharacter{CCB6}{\UTFK{CCB6}}%
+\DeclareUnicodeCharacter{CCB7}{\UTFK{CCB7}}%
+\DeclareUnicodeCharacter{CCB8}{\UTFK{CCB8}}%
+\DeclareUnicodeCharacter{CCB9}{\UTFK{CCB9}}%
+\DeclareUnicodeCharacter{CCBA}{\UTFK{CCBA}}%
+\DeclareUnicodeCharacter{CCBB}{\UTFK{CCBB}}%
+\DeclareUnicodeCharacter{CCBC}{\UTFK{CCBC}}%
+\DeclareUnicodeCharacter{CCBD}{\UTFK{CCBD}}%
+\DeclareUnicodeCharacter{CCBE}{\UTFK{CCBE}}%
+\DeclareUnicodeCharacter{CCBF}{\UTFK{CCBF}}%
+\DeclareUnicodeCharacter{CCC0}{\UTFK{CCC0}}%
+\DeclareUnicodeCharacter{CCC1}{\UTFK{CCC1}}%
+\DeclareUnicodeCharacter{CCC2}{\UTFK{CCC2}}%
+\DeclareUnicodeCharacter{CCC3}{\UTFK{CCC3}}%
+\DeclareUnicodeCharacter{CCC4}{\UTFK{CCC4}}%
+\DeclareUnicodeCharacter{CCC5}{\UTFK{CCC5}}%
+\DeclareUnicodeCharacter{CCC6}{\UTFK{CCC6}}%
+\DeclareUnicodeCharacter{CCC7}{\UTFK{CCC7}}%
+\DeclareUnicodeCharacter{CCC8}{\UTFK{CCC8}}%
+\DeclareUnicodeCharacter{CCC9}{\UTFK{CCC9}}%
+\DeclareUnicodeCharacter{CCCA}{\UTFK{CCCA}}%
+\DeclareUnicodeCharacter{CCCB}{\UTFK{CCCB}}%
+\DeclareUnicodeCharacter{CCCC}{\UTFK{CCCC}}%
+\DeclareUnicodeCharacter{CCCD}{\UTFK{CCCD}}%
+\DeclareUnicodeCharacter{CCCE}{\UTFK{CCCE}}%
+\DeclareUnicodeCharacter{CCCF}{\UTFK{CCCF}}%
+\DeclareUnicodeCharacter{CCD0}{\UTFK{CCD0}}%
+\DeclareUnicodeCharacter{CCD1}{\UTFK{CCD1}}%
+\DeclareUnicodeCharacter{CCD2}{\UTFK{CCD2}}%
+\DeclareUnicodeCharacter{CCD3}{\UTFK{CCD3}}%
+\DeclareUnicodeCharacter{CCD4}{\UTFK{CCD4}}%
+\DeclareUnicodeCharacter{CCD5}{\UTFK{CCD5}}%
+\DeclareUnicodeCharacter{CCD6}{\UTFK{CCD6}}%
+\DeclareUnicodeCharacter{CCD7}{\UTFK{CCD7}}%
+\DeclareUnicodeCharacter{CCD8}{\UTFK{CCD8}}%
+\DeclareUnicodeCharacter{CCD9}{\UTFK{CCD9}}%
+\DeclareUnicodeCharacter{CCDA}{\UTFK{CCDA}}%
+\DeclareUnicodeCharacter{CCDB}{\UTFK{CCDB}}%
+\DeclareUnicodeCharacter{CCDC}{\UTFK{CCDC}}%
+\DeclareUnicodeCharacter{CCDD}{\UTFK{CCDD}}%
+\DeclareUnicodeCharacter{CCDE}{\UTFK{CCDE}}%
+\DeclareUnicodeCharacter{CCDF}{\UTFK{CCDF}}%
+\DeclareUnicodeCharacter{CCE0}{\UTFK{CCE0}}%
+\DeclareUnicodeCharacter{CCE1}{\UTFK{CCE1}}%
+\DeclareUnicodeCharacter{CCE2}{\UTFK{CCE2}}%
+\DeclareUnicodeCharacter{CCE3}{\UTFK{CCE3}}%
+\DeclareUnicodeCharacter{CCE4}{\UTFK{CCE4}}%
+\DeclareUnicodeCharacter{CCE5}{\UTFK{CCE5}}%
+\DeclareUnicodeCharacter{CCE6}{\UTFK{CCE6}}%
+\DeclareUnicodeCharacter{CCE7}{\UTFK{CCE7}}%
+\DeclareUnicodeCharacter{CCE8}{\UTFK{CCE8}}%
+\DeclareUnicodeCharacter{CCE9}{\UTFK{CCE9}}%
+\DeclareUnicodeCharacter{CCEA}{\UTFK{CCEA}}%
+\DeclareUnicodeCharacter{CCEB}{\UTFK{CCEB}}%
+\DeclareUnicodeCharacter{CCEC}{\UTFK{CCEC}}%
+\DeclareUnicodeCharacter{CCED}{\UTFK{CCED}}%
+\DeclareUnicodeCharacter{CCEE}{\UTFK{CCEE}}%
+\DeclareUnicodeCharacter{CCEF}{\UTFK{CCEF}}%
+\DeclareUnicodeCharacter{CCF0}{\UTFK{CCF0}}%
+\DeclareUnicodeCharacter{CCF1}{\UTFK{CCF1}}%
+\DeclareUnicodeCharacter{CCF2}{\UTFK{CCF2}}%
+\DeclareUnicodeCharacter{CCF3}{\UTFK{CCF3}}%
+\DeclareUnicodeCharacter{CCF4}{\UTFK{CCF4}}%
+\DeclareUnicodeCharacter{CCF5}{\UTFK{CCF5}}%
+\DeclareUnicodeCharacter{CCF6}{\UTFK{CCF6}}%
+\DeclareUnicodeCharacter{CCF7}{\UTFK{CCF7}}%
+\DeclareUnicodeCharacter{CCF8}{\UTFK{CCF8}}%
+\DeclareUnicodeCharacter{CCF9}{\UTFK{CCF9}}%
+\DeclareUnicodeCharacter{CCFA}{\UTFK{CCFA}}%
+\DeclareUnicodeCharacter{CCFB}{\UTFK{CCFB}}%
+\DeclareUnicodeCharacter{CCFC}{\UTFK{CCFC}}%
+\DeclareUnicodeCharacter{CCFD}{\UTFK{CCFD}}%
+\DeclareUnicodeCharacter{CCFE}{\UTFK{CCFE}}%
+\DeclareUnicodeCharacter{CCFF}{\UTFK{CCFF}}%
+\DeclareUnicodeCharacter{CD00}{\UTFK{CD00}}%
+\DeclareUnicodeCharacter{CD01}{\UTFK{CD01}}%
+\DeclareUnicodeCharacter{CD02}{\UTFK{CD02}}%
+\DeclareUnicodeCharacter{CD03}{\UTFK{CD03}}%
+\DeclareUnicodeCharacter{CD04}{\UTFK{CD04}}%
+\DeclareUnicodeCharacter{CD05}{\UTFK{CD05}}%
+\DeclareUnicodeCharacter{CD06}{\UTFK{CD06}}%
+\DeclareUnicodeCharacter{CD07}{\UTFK{CD07}}%
+\DeclareUnicodeCharacter{CD08}{\UTFK{CD08}}%
+\DeclareUnicodeCharacter{CD09}{\UTFK{CD09}}%
+\DeclareUnicodeCharacter{CD0A}{\UTFK{CD0A}}%
+\DeclareUnicodeCharacter{CD0B}{\UTFK{CD0B}}%
+\DeclareUnicodeCharacter{CD0C}{\UTFK{CD0C}}%
+\DeclareUnicodeCharacter{CD0D}{\UTFK{CD0D}}%
+\DeclareUnicodeCharacter{CD0E}{\UTFK{CD0E}}%
+\DeclareUnicodeCharacter{CD0F}{\UTFK{CD0F}}%
+\DeclareUnicodeCharacter{CD10}{\UTFK{CD10}}%
+\DeclareUnicodeCharacter{CD11}{\UTFK{CD11}}%
+\DeclareUnicodeCharacter{CD12}{\UTFK{CD12}}%
+\DeclareUnicodeCharacter{CD13}{\UTFK{CD13}}%
+\DeclareUnicodeCharacter{CD14}{\UTFK{CD14}}%
+\DeclareUnicodeCharacter{CD15}{\UTFK{CD15}}%
+\DeclareUnicodeCharacter{CD16}{\UTFK{CD16}}%
+\DeclareUnicodeCharacter{CD17}{\UTFK{CD17}}%
+\DeclareUnicodeCharacter{CD18}{\UTFK{CD18}}%
+\DeclareUnicodeCharacter{CD19}{\UTFK{CD19}}%
+\DeclareUnicodeCharacter{CD1A}{\UTFK{CD1A}}%
+\DeclareUnicodeCharacter{CD1B}{\UTFK{CD1B}}%
+\DeclareUnicodeCharacter{CD1C}{\UTFK{CD1C}}%
+\DeclareUnicodeCharacter{CD1D}{\UTFK{CD1D}}%
+\DeclareUnicodeCharacter{CD1E}{\UTFK{CD1E}}%
+\DeclareUnicodeCharacter{CD1F}{\UTFK{CD1F}}%
+\DeclareUnicodeCharacter{CD20}{\UTFK{CD20}}%
+\DeclareUnicodeCharacter{CD21}{\UTFK{CD21}}%
+\DeclareUnicodeCharacter{CD22}{\UTFK{CD22}}%
+\DeclareUnicodeCharacter{CD23}{\UTFK{CD23}}%
+\DeclareUnicodeCharacter{CD24}{\UTFK{CD24}}%
+\DeclareUnicodeCharacter{CD25}{\UTFK{CD25}}%
+\DeclareUnicodeCharacter{CD26}{\UTFK{CD26}}%
+\DeclareUnicodeCharacter{CD27}{\UTFK{CD27}}%
+\DeclareUnicodeCharacter{CD28}{\UTFK{CD28}}%
+\DeclareUnicodeCharacter{CD29}{\UTFK{CD29}}%
+\DeclareUnicodeCharacter{CD2A}{\UTFK{CD2A}}%
+\DeclareUnicodeCharacter{CD2B}{\UTFK{CD2B}}%
+\DeclareUnicodeCharacter{CD2C}{\UTFK{CD2C}}%
+\DeclareUnicodeCharacter{CD2D}{\UTFK{CD2D}}%
+\DeclareUnicodeCharacter{CD2E}{\UTFK{CD2E}}%
+\DeclareUnicodeCharacter{CD2F}{\UTFK{CD2F}}%
+\DeclareUnicodeCharacter{CD30}{\UTFK{CD30}}%
+\DeclareUnicodeCharacter{CD31}{\UTFK{CD31}}%
+\DeclareUnicodeCharacter{CD32}{\UTFK{CD32}}%
+\DeclareUnicodeCharacter{CD33}{\UTFK{CD33}}%
+\DeclareUnicodeCharacter{CD34}{\UTFK{CD34}}%
+\DeclareUnicodeCharacter{CD35}{\UTFK{CD35}}%
+\DeclareUnicodeCharacter{CD36}{\UTFK{CD36}}%
+\DeclareUnicodeCharacter{CD37}{\UTFK{CD37}}%
+\DeclareUnicodeCharacter{CD38}{\UTFK{CD38}}%
+\DeclareUnicodeCharacter{CD39}{\UTFK{CD39}}%
+\DeclareUnicodeCharacter{CD3A}{\UTFK{CD3A}}%
+\DeclareUnicodeCharacter{CD3B}{\UTFK{CD3B}}%
+\DeclareUnicodeCharacter{CD3C}{\UTFK{CD3C}}%
+\DeclareUnicodeCharacter{CD3D}{\UTFK{CD3D}}%
+\DeclareUnicodeCharacter{CD3E}{\UTFK{CD3E}}%
+\DeclareUnicodeCharacter{CD3F}{\UTFK{CD3F}}%
+\DeclareUnicodeCharacter{CD40}{\UTFK{CD40}}%
+\DeclareUnicodeCharacter{CD41}{\UTFK{CD41}}%
+\DeclareUnicodeCharacter{CD42}{\UTFK{CD42}}%
+\DeclareUnicodeCharacter{CD43}{\UTFK{CD43}}%
+\DeclareUnicodeCharacter{CD44}{\UTFK{CD44}}%
+\DeclareUnicodeCharacter{CD45}{\UTFK{CD45}}%
+\DeclareUnicodeCharacter{CD46}{\UTFK{CD46}}%
+\DeclareUnicodeCharacter{CD47}{\UTFK{CD47}}%
+\DeclareUnicodeCharacter{CD48}{\UTFK{CD48}}%
+\DeclareUnicodeCharacter{CD49}{\UTFK{CD49}}%
+\DeclareUnicodeCharacter{CD4A}{\UTFK{CD4A}}%
+\DeclareUnicodeCharacter{CD4B}{\UTFK{CD4B}}%
+\DeclareUnicodeCharacter{CD4C}{\UTFK{CD4C}}%
+\DeclareUnicodeCharacter{CD4D}{\UTFK{CD4D}}%
+\DeclareUnicodeCharacter{CD4E}{\UTFK{CD4E}}%
+\DeclareUnicodeCharacter{CD4F}{\UTFK{CD4F}}%
+\DeclareUnicodeCharacter{CD50}{\UTFK{CD50}}%
+\DeclareUnicodeCharacter{CD51}{\UTFK{CD51}}%
+\DeclareUnicodeCharacter{CD52}{\UTFK{CD52}}%
+\DeclareUnicodeCharacter{CD53}{\UTFK{CD53}}%
+\DeclareUnicodeCharacter{CD54}{\UTFK{CD54}}%
+\DeclareUnicodeCharacter{CD55}{\UTFK{CD55}}%
+\DeclareUnicodeCharacter{CD56}{\UTFK{CD56}}%
+\DeclareUnicodeCharacter{CD57}{\UTFK{CD57}}%
+\DeclareUnicodeCharacter{CD58}{\UTFK{CD58}}%
+\DeclareUnicodeCharacter{CD59}{\UTFK{CD59}}%
+\DeclareUnicodeCharacter{CD5A}{\UTFK{CD5A}}%
+\DeclareUnicodeCharacter{CD5B}{\UTFK{CD5B}}%
+\DeclareUnicodeCharacter{CD5C}{\UTFK{CD5C}}%
+\DeclareUnicodeCharacter{CD5D}{\UTFK{CD5D}}%
+\DeclareUnicodeCharacter{CD5E}{\UTFK{CD5E}}%
+\DeclareUnicodeCharacter{CD5F}{\UTFK{CD5F}}%
+\DeclareUnicodeCharacter{CD60}{\UTFK{CD60}}%
+\DeclareUnicodeCharacter{CD61}{\UTFK{CD61}}%
+\DeclareUnicodeCharacter{CD62}{\UTFK{CD62}}%
+\DeclareUnicodeCharacter{CD63}{\UTFK{CD63}}%
+\DeclareUnicodeCharacter{CD64}{\UTFK{CD64}}%
+\DeclareUnicodeCharacter{CD65}{\UTFK{CD65}}%
+\DeclareUnicodeCharacter{CD66}{\UTFK{CD66}}%
+\DeclareUnicodeCharacter{CD67}{\UTFK{CD67}}%
+\DeclareUnicodeCharacter{CD68}{\UTFK{CD68}}%
+\DeclareUnicodeCharacter{CD69}{\UTFK{CD69}}%
+\DeclareUnicodeCharacter{CD6A}{\UTFK{CD6A}}%
+\DeclareUnicodeCharacter{CD6B}{\UTFK{CD6B}}%
+\DeclareUnicodeCharacter{CD6C}{\UTFK{CD6C}}%
+\DeclareUnicodeCharacter{CD6D}{\UTFK{CD6D}}%
+\DeclareUnicodeCharacter{CD6E}{\UTFK{CD6E}}%
+\DeclareUnicodeCharacter{CD6F}{\UTFK{CD6F}}%
+\DeclareUnicodeCharacter{CD70}{\UTFK{CD70}}%
+\DeclareUnicodeCharacter{CD71}{\UTFK{CD71}}%
+\DeclareUnicodeCharacter{CD72}{\UTFK{CD72}}%
+\DeclareUnicodeCharacter{CD73}{\UTFK{CD73}}%
+\DeclareUnicodeCharacter{CD74}{\UTFK{CD74}}%
+\DeclareUnicodeCharacter{CD75}{\UTFK{CD75}}%
+\DeclareUnicodeCharacter{CD76}{\UTFK{CD76}}%
+\DeclareUnicodeCharacter{CD77}{\UTFK{CD77}}%
+\DeclareUnicodeCharacter{CD78}{\UTFK{CD78}}%
+\DeclareUnicodeCharacter{CD79}{\UTFK{CD79}}%
+\DeclareUnicodeCharacter{CD7A}{\UTFK{CD7A}}%
+\DeclareUnicodeCharacter{CD7B}{\UTFK{CD7B}}%
+\DeclareUnicodeCharacter{CD7C}{\UTFK{CD7C}}%
+\DeclareUnicodeCharacter{CD7D}{\UTFK{CD7D}}%
+\DeclareUnicodeCharacter{CD7E}{\UTFK{CD7E}}%
+\DeclareUnicodeCharacter{CD7F}{\UTFK{CD7F}}%
+\DeclareUnicodeCharacter{CD80}{\UTFK{CD80}}%
+\DeclareUnicodeCharacter{CD81}{\UTFK{CD81}}%
+\DeclareUnicodeCharacter{CD82}{\UTFK{CD82}}%
+\DeclareUnicodeCharacter{CD83}{\UTFK{CD83}}%
+\DeclareUnicodeCharacter{CD84}{\UTFK{CD84}}%
+\DeclareUnicodeCharacter{CD85}{\UTFK{CD85}}%
+\DeclareUnicodeCharacter{CD86}{\UTFK{CD86}}%
+\DeclareUnicodeCharacter{CD87}{\UTFK{CD87}}%
+\DeclareUnicodeCharacter{CD88}{\UTFK{CD88}}%
+\DeclareUnicodeCharacter{CD89}{\UTFK{CD89}}%
+\DeclareUnicodeCharacter{CD8A}{\UTFK{CD8A}}%
+\DeclareUnicodeCharacter{CD8B}{\UTFK{CD8B}}%
+\DeclareUnicodeCharacter{CD8C}{\UTFK{CD8C}}%
+\DeclareUnicodeCharacter{CD8D}{\UTFK{CD8D}}%
+\DeclareUnicodeCharacter{CD8E}{\UTFK{CD8E}}%
+\DeclareUnicodeCharacter{CD8F}{\UTFK{CD8F}}%
+\DeclareUnicodeCharacter{CD90}{\UTFK{CD90}}%
+\DeclareUnicodeCharacter{CD91}{\UTFK{CD91}}%
+\DeclareUnicodeCharacter{CD92}{\UTFK{CD92}}%
+\DeclareUnicodeCharacter{CD93}{\UTFK{CD93}}%
+\DeclareUnicodeCharacter{CD94}{\UTFK{CD94}}%
+\DeclareUnicodeCharacter{CD95}{\UTFK{CD95}}%
+\DeclareUnicodeCharacter{CD96}{\UTFK{CD96}}%
+\DeclareUnicodeCharacter{CD97}{\UTFK{CD97}}%
+\DeclareUnicodeCharacter{CD98}{\UTFK{CD98}}%
+\DeclareUnicodeCharacter{CD99}{\UTFK{CD99}}%
+\DeclareUnicodeCharacter{CD9A}{\UTFK{CD9A}}%
+\DeclareUnicodeCharacter{CD9B}{\UTFK{CD9B}}%
+\DeclareUnicodeCharacter{CD9C}{\UTFK{CD9C}}%
+\DeclareUnicodeCharacter{CD9D}{\UTFK{CD9D}}%
+\DeclareUnicodeCharacter{CD9E}{\UTFK{CD9E}}%
+\DeclareUnicodeCharacter{CD9F}{\UTFK{CD9F}}%
+\DeclareUnicodeCharacter{CDA0}{\UTFK{CDA0}}%
+\DeclareUnicodeCharacter{CDA1}{\UTFK{CDA1}}%
+\DeclareUnicodeCharacter{CDA2}{\UTFK{CDA2}}%
+\DeclareUnicodeCharacter{CDA3}{\UTFK{CDA3}}%
+\DeclareUnicodeCharacter{CDA4}{\UTFK{CDA4}}%
+\DeclareUnicodeCharacter{CDA5}{\UTFK{CDA5}}%
+\DeclareUnicodeCharacter{CDA6}{\UTFK{CDA6}}%
+\DeclareUnicodeCharacter{CDA7}{\UTFK{CDA7}}%
+\DeclareUnicodeCharacter{CDA8}{\UTFK{CDA8}}%
+\DeclareUnicodeCharacter{CDA9}{\UTFK{CDA9}}%
+\DeclareUnicodeCharacter{CDAA}{\UTFK{CDAA}}%
+\DeclareUnicodeCharacter{CDAB}{\UTFK{CDAB}}%
+\DeclareUnicodeCharacter{CDAC}{\UTFK{CDAC}}%
+\DeclareUnicodeCharacter{CDAD}{\UTFK{CDAD}}%
+\DeclareUnicodeCharacter{CDAE}{\UTFK{CDAE}}%
+\DeclareUnicodeCharacter{CDAF}{\UTFK{CDAF}}%
+\DeclareUnicodeCharacter{CDB0}{\UTFK{CDB0}}%
+\DeclareUnicodeCharacter{CDB1}{\UTFK{CDB1}}%
+\DeclareUnicodeCharacter{CDB2}{\UTFK{CDB2}}%
+\DeclareUnicodeCharacter{CDB3}{\UTFK{CDB3}}%
+\DeclareUnicodeCharacter{CDB4}{\UTFK{CDB4}}%
+\DeclareUnicodeCharacter{CDB5}{\UTFK{CDB5}}%
+\DeclareUnicodeCharacter{CDB6}{\UTFK{CDB6}}%
+\DeclareUnicodeCharacter{CDB7}{\UTFK{CDB7}}%
+\DeclareUnicodeCharacter{CDB8}{\UTFK{CDB8}}%
+\DeclareUnicodeCharacter{CDB9}{\UTFK{CDB9}}%
+\DeclareUnicodeCharacter{CDBA}{\UTFK{CDBA}}%
+\DeclareUnicodeCharacter{CDBB}{\UTFK{CDBB}}%
+\DeclareUnicodeCharacter{CDBC}{\UTFK{CDBC}}%
+\DeclareUnicodeCharacter{CDBD}{\UTFK{CDBD}}%
+\DeclareUnicodeCharacter{CDBE}{\UTFK{CDBE}}%
+\DeclareUnicodeCharacter{CDBF}{\UTFK{CDBF}}%
+\DeclareUnicodeCharacter{CDC0}{\UTFK{CDC0}}%
+\DeclareUnicodeCharacter{CDC1}{\UTFK{CDC1}}%
+\DeclareUnicodeCharacter{CDC2}{\UTFK{CDC2}}%
+\DeclareUnicodeCharacter{CDC3}{\UTFK{CDC3}}%
+\DeclareUnicodeCharacter{CDC4}{\UTFK{CDC4}}%
+\DeclareUnicodeCharacter{CDC5}{\UTFK{CDC5}}%
+\DeclareUnicodeCharacter{CDC6}{\UTFK{CDC6}}%
+\DeclareUnicodeCharacter{CDC7}{\UTFK{CDC7}}%
+\DeclareUnicodeCharacter{CDC8}{\UTFK{CDC8}}%
+\DeclareUnicodeCharacter{CDC9}{\UTFK{CDC9}}%
+\DeclareUnicodeCharacter{CDCA}{\UTFK{CDCA}}%
+\DeclareUnicodeCharacter{CDCB}{\UTFK{CDCB}}%
+\DeclareUnicodeCharacter{CDCC}{\UTFK{CDCC}}%
+\DeclareUnicodeCharacter{CDCD}{\UTFK{CDCD}}%
+\DeclareUnicodeCharacter{CDCE}{\UTFK{CDCE}}%
+\DeclareUnicodeCharacter{CDCF}{\UTFK{CDCF}}%
+\DeclareUnicodeCharacter{CDD0}{\UTFK{CDD0}}%
+\DeclareUnicodeCharacter{CDD1}{\UTFK{CDD1}}%
+\DeclareUnicodeCharacter{CDD2}{\UTFK{CDD2}}%
+\DeclareUnicodeCharacter{CDD3}{\UTFK{CDD3}}%
+\DeclareUnicodeCharacter{CDD4}{\UTFK{CDD4}}%
+\DeclareUnicodeCharacter{CDD5}{\UTFK{CDD5}}%
+\DeclareUnicodeCharacter{CDD6}{\UTFK{CDD6}}%
+\DeclareUnicodeCharacter{CDD7}{\UTFK{CDD7}}%
+\DeclareUnicodeCharacter{CDD8}{\UTFK{CDD8}}%
+\DeclareUnicodeCharacter{CDD9}{\UTFK{CDD9}}%
+\DeclareUnicodeCharacter{CDDA}{\UTFK{CDDA}}%
+\DeclareUnicodeCharacter{CDDB}{\UTFK{CDDB}}%
+\DeclareUnicodeCharacter{CDDC}{\UTFK{CDDC}}%
+\DeclareUnicodeCharacter{CDDD}{\UTFK{CDDD}}%
+\DeclareUnicodeCharacter{CDDE}{\UTFK{CDDE}}%
+\DeclareUnicodeCharacter{CDDF}{\UTFK{CDDF}}%
+\DeclareUnicodeCharacter{CDE0}{\UTFK{CDE0}}%
+\DeclareUnicodeCharacter{CDE1}{\UTFK{CDE1}}%
+\DeclareUnicodeCharacter{CDE2}{\UTFK{CDE2}}%
+\DeclareUnicodeCharacter{CDE3}{\UTFK{CDE3}}%
+\DeclareUnicodeCharacter{CDE4}{\UTFK{CDE4}}%
+\DeclareUnicodeCharacter{CDE5}{\UTFK{CDE5}}%
+\DeclareUnicodeCharacter{CDE6}{\UTFK{CDE6}}%
+\DeclareUnicodeCharacter{CDE7}{\UTFK{CDE7}}%
+\DeclareUnicodeCharacter{CDE8}{\UTFK{CDE8}}%
+\DeclareUnicodeCharacter{CDE9}{\UTFK{CDE9}}%
+\DeclareUnicodeCharacter{CDEA}{\UTFK{CDEA}}%
+\DeclareUnicodeCharacter{CDEB}{\UTFK{CDEB}}%
+\DeclareUnicodeCharacter{CDEC}{\UTFK{CDEC}}%
+\DeclareUnicodeCharacter{CDED}{\UTFK{CDED}}%
+\DeclareUnicodeCharacter{CDEE}{\UTFK{CDEE}}%
+\DeclareUnicodeCharacter{CDEF}{\UTFK{CDEF}}%
+\DeclareUnicodeCharacter{CDF0}{\UTFK{CDF0}}%
+\DeclareUnicodeCharacter{CDF1}{\UTFK{CDF1}}%
+\DeclareUnicodeCharacter{CDF2}{\UTFK{CDF2}}%
+\DeclareUnicodeCharacter{CDF3}{\UTFK{CDF3}}%
+\DeclareUnicodeCharacter{CDF4}{\UTFK{CDF4}}%
+\DeclareUnicodeCharacter{CDF5}{\UTFK{CDF5}}%
+\DeclareUnicodeCharacter{CDF6}{\UTFK{CDF6}}%
+\DeclareUnicodeCharacter{CDF7}{\UTFK{CDF7}}%
+\DeclareUnicodeCharacter{CDF8}{\UTFK{CDF8}}%
+\DeclareUnicodeCharacter{CDF9}{\UTFK{CDF9}}%
+\DeclareUnicodeCharacter{CDFA}{\UTFK{CDFA}}%
+\DeclareUnicodeCharacter{CDFB}{\UTFK{CDFB}}%
+\DeclareUnicodeCharacter{CDFC}{\UTFK{CDFC}}%
+\DeclareUnicodeCharacter{CDFD}{\UTFK{CDFD}}%
+\DeclareUnicodeCharacter{CDFE}{\UTFK{CDFE}}%
+\DeclareUnicodeCharacter{CDFF}{\UTFK{CDFF}}%
+\DeclareUnicodeCharacter{CE00}{\UTFK{CE00}}%
+\DeclareUnicodeCharacter{CE01}{\UTFK{CE01}}%
+\DeclareUnicodeCharacter{CE02}{\UTFK{CE02}}%
+\DeclareUnicodeCharacter{CE03}{\UTFK{CE03}}%
+\DeclareUnicodeCharacter{CE04}{\UTFK{CE04}}%
+\DeclareUnicodeCharacter{CE05}{\UTFK{CE05}}%
+\DeclareUnicodeCharacter{CE06}{\UTFK{CE06}}%
+\DeclareUnicodeCharacter{CE07}{\UTFK{CE07}}%
+\DeclareUnicodeCharacter{CE08}{\UTFK{CE08}}%
+\DeclareUnicodeCharacter{CE09}{\UTFK{CE09}}%
+\DeclareUnicodeCharacter{CE0A}{\UTFK{CE0A}}%
+\DeclareUnicodeCharacter{CE0B}{\UTFK{CE0B}}%
+\DeclareUnicodeCharacter{CE0C}{\UTFK{CE0C}}%
+\DeclareUnicodeCharacter{CE0D}{\UTFK{CE0D}}%
+\DeclareUnicodeCharacter{CE0E}{\UTFK{CE0E}}%
+\DeclareUnicodeCharacter{CE0F}{\UTFK{CE0F}}%
+\DeclareUnicodeCharacter{CE10}{\UTFK{CE10}}%
+\DeclareUnicodeCharacter{CE11}{\UTFK{CE11}}%
+\DeclareUnicodeCharacter{CE12}{\UTFK{CE12}}%
+\DeclareUnicodeCharacter{CE13}{\UTFK{CE13}}%
+\DeclareUnicodeCharacter{CE14}{\UTFK{CE14}}%
+\DeclareUnicodeCharacter{CE15}{\UTFK{CE15}}%
+\DeclareUnicodeCharacter{CE16}{\UTFK{CE16}}%
+\DeclareUnicodeCharacter{CE17}{\UTFK{CE17}}%
+\DeclareUnicodeCharacter{CE18}{\UTFK{CE18}}%
+\DeclareUnicodeCharacter{CE19}{\UTFK{CE19}}%
+\DeclareUnicodeCharacter{CE1A}{\UTFK{CE1A}}%
+\DeclareUnicodeCharacter{CE1B}{\UTFK{CE1B}}%
+\DeclareUnicodeCharacter{CE1C}{\UTFK{CE1C}}%
+\DeclareUnicodeCharacter{CE1D}{\UTFK{CE1D}}%
+\DeclareUnicodeCharacter{CE1E}{\UTFK{CE1E}}%
+\DeclareUnicodeCharacter{CE1F}{\UTFK{CE1F}}%
+\DeclareUnicodeCharacter{CE20}{\UTFK{CE20}}%
+\DeclareUnicodeCharacter{CE21}{\UTFK{CE21}}%
+\DeclareUnicodeCharacter{CE22}{\UTFK{CE22}}%
+\DeclareUnicodeCharacter{CE23}{\UTFK{CE23}}%
+\DeclareUnicodeCharacter{CE24}{\UTFK{CE24}}%
+\DeclareUnicodeCharacter{CE25}{\UTFK{CE25}}%
+\DeclareUnicodeCharacter{CE26}{\UTFK{CE26}}%
+\DeclareUnicodeCharacter{CE27}{\UTFK{CE27}}%
+\DeclareUnicodeCharacter{CE28}{\UTFK{CE28}}%
+\DeclareUnicodeCharacter{CE29}{\UTFK{CE29}}%
+\DeclareUnicodeCharacter{CE2A}{\UTFK{CE2A}}%
+\DeclareUnicodeCharacter{CE2B}{\UTFK{CE2B}}%
+\DeclareUnicodeCharacter{CE2C}{\UTFK{CE2C}}%
+\DeclareUnicodeCharacter{CE2D}{\UTFK{CE2D}}%
+\DeclareUnicodeCharacter{CE2E}{\UTFK{CE2E}}%
+\DeclareUnicodeCharacter{CE2F}{\UTFK{CE2F}}%
+\DeclareUnicodeCharacter{CE30}{\UTFK{CE30}}%
+\DeclareUnicodeCharacter{CE31}{\UTFK{CE31}}%
+\DeclareUnicodeCharacter{CE32}{\UTFK{CE32}}%
+\DeclareUnicodeCharacter{CE33}{\UTFK{CE33}}%
+\DeclareUnicodeCharacter{CE34}{\UTFK{CE34}}%
+\DeclareUnicodeCharacter{CE35}{\UTFK{CE35}}%
+\DeclareUnicodeCharacter{CE36}{\UTFK{CE36}}%
+\DeclareUnicodeCharacter{CE37}{\UTFK{CE37}}%
+\DeclareUnicodeCharacter{CE38}{\UTFK{CE38}}%
+\DeclareUnicodeCharacter{CE39}{\UTFK{CE39}}%
+\DeclareUnicodeCharacter{CE3A}{\UTFK{CE3A}}%
+\DeclareUnicodeCharacter{CE3B}{\UTFK{CE3B}}%
+\DeclareUnicodeCharacter{CE3C}{\UTFK{CE3C}}%
+\DeclareUnicodeCharacter{CE3D}{\UTFK{CE3D}}%
+\DeclareUnicodeCharacter{CE3E}{\UTFK{CE3E}}%
+\DeclareUnicodeCharacter{CE3F}{\UTFK{CE3F}}%
+\DeclareUnicodeCharacter{CE40}{\UTFK{CE40}}%
+\DeclareUnicodeCharacter{CE41}{\UTFK{CE41}}%
+\DeclareUnicodeCharacter{CE42}{\UTFK{CE42}}%
+\DeclareUnicodeCharacter{CE43}{\UTFK{CE43}}%
+\DeclareUnicodeCharacter{CE44}{\UTFK{CE44}}%
+\DeclareUnicodeCharacter{CE45}{\UTFK{CE45}}%
+\DeclareUnicodeCharacter{CE46}{\UTFK{CE46}}%
+\DeclareUnicodeCharacter{CE47}{\UTFK{CE47}}%
+\DeclareUnicodeCharacter{CE48}{\UTFK{CE48}}%
+\DeclareUnicodeCharacter{CE49}{\UTFK{CE49}}%
+\DeclareUnicodeCharacter{CE4A}{\UTFK{CE4A}}%
+\DeclareUnicodeCharacter{CE4B}{\UTFK{CE4B}}%
+\DeclareUnicodeCharacter{CE4C}{\UTFK{CE4C}}%
+\DeclareUnicodeCharacter{CE4D}{\UTFK{CE4D}}%
+\DeclareUnicodeCharacter{CE4E}{\UTFK{CE4E}}%
+\DeclareUnicodeCharacter{CE4F}{\UTFK{CE4F}}%
+\DeclareUnicodeCharacter{CE50}{\UTFK{CE50}}%
+\DeclareUnicodeCharacter{CE51}{\UTFK{CE51}}%
+\DeclareUnicodeCharacter{CE52}{\UTFK{CE52}}%
+\DeclareUnicodeCharacter{CE53}{\UTFK{CE53}}%
+\DeclareUnicodeCharacter{CE54}{\UTFK{CE54}}%
+\DeclareUnicodeCharacter{CE55}{\UTFK{CE55}}%
+\DeclareUnicodeCharacter{CE56}{\UTFK{CE56}}%
+\DeclareUnicodeCharacter{CE57}{\UTFK{CE57}}%
+\DeclareUnicodeCharacter{CE58}{\UTFK{CE58}}%
+\DeclareUnicodeCharacter{CE59}{\UTFK{CE59}}%
+\DeclareUnicodeCharacter{CE5A}{\UTFK{CE5A}}%
+\DeclareUnicodeCharacter{CE5B}{\UTFK{CE5B}}%
+\DeclareUnicodeCharacter{CE5C}{\UTFK{CE5C}}%
+\DeclareUnicodeCharacter{CE5D}{\UTFK{CE5D}}%
+\DeclareUnicodeCharacter{CE5E}{\UTFK{CE5E}}%
+\DeclareUnicodeCharacter{CE5F}{\UTFK{CE5F}}%
+\DeclareUnicodeCharacter{CE60}{\UTFK{CE60}}%
+\DeclareUnicodeCharacter{CE61}{\UTFK{CE61}}%
+\DeclareUnicodeCharacter{CE62}{\UTFK{CE62}}%
+\DeclareUnicodeCharacter{CE63}{\UTFK{CE63}}%
+\DeclareUnicodeCharacter{CE64}{\UTFK{CE64}}%
+\DeclareUnicodeCharacter{CE65}{\UTFK{CE65}}%
+\DeclareUnicodeCharacter{CE66}{\UTFK{CE66}}%
+\DeclareUnicodeCharacter{CE67}{\UTFK{CE67}}%
+\DeclareUnicodeCharacter{CE68}{\UTFK{CE68}}%
+\DeclareUnicodeCharacter{CE69}{\UTFK{CE69}}%
+\DeclareUnicodeCharacter{CE6A}{\UTFK{CE6A}}%
+\DeclareUnicodeCharacter{CE6B}{\UTFK{CE6B}}%
+\DeclareUnicodeCharacter{CE6C}{\UTFK{CE6C}}%
+\DeclareUnicodeCharacter{CE6D}{\UTFK{CE6D}}%
+\DeclareUnicodeCharacter{CE6E}{\UTFK{CE6E}}%
+\DeclareUnicodeCharacter{CE6F}{\UTFK{CE6F}}%
+\DeclareUnicodeCharacter{CE70}{\UTFK{CE70}}%
+\DeclareUnicodeCharacter{CE71}{\UTFK{CE71}}%
+\DeclareUnicodeCharacter{CE72}{\UTFK{CE72}}%
+\DeclareUnicodeCharacter{CE73}{\UTFK{CE73}}%
+\DeclareUnicodeCharacter{CE74}{\UTFK{CE74}}%
+\DeclareUnicodeCharacter{CE75}{\UTFK{CE75}}%
+\DeclareUnicodeCharacter{CE76}{\UTFK{CE76}}%
+\DeclareUnicodeCharacter{CE77}{\UTFK{CE77}}%
+\DeclareUnicodeCharacter{CE78}{\UTFK{CE78}}%
+\DeclareUnicodeCharacter{CE79}{\UTFK{CE79}}%
+\DeclareUnicodeCharacter{CE7A}{\UTFK{CE7A}}%
+\DeclareUnicodeCharacter{CE7B}{\UTFK{CE7B}}%
+\DeclareUnicodeCharacter{CE7C}{\UTFK{CE7C}}%
+\DeclareUnicodeCharacter{CE7D}{\UTFK{CE7D}}%
+\DeclareUnicodeCharacter{CE7E}{\UTFK{CE7E}}%
+\DeclareUnicodeCharacter{CE7F}{\UTFK{CE7F}}%
+\DeclareUnicodeCharacter{CE80}{\UTFK{CE80}}%
+\DeclareUnicodeCharacter{CE81}{\UTFK{CE81}}%
+\DeclareUnicodeCharacter{CE82}{\UTFK{CE82}}%
+\DeclareUnicodeCharacter{CE83}{\UTFK{CE83}}%
+\DeclareUnicodeCharacter{CE84}{\UTFK{CE84}}%
+\DeclareUnicodeCharacter{CE85}{\UTFK{CE85}}%
+\DeclareUnicodeCharacter{CE86}{\UTFK{CE86}}%
+\DeclareUnicodeCharacter{CE87}{\UTFK{CE87}}%
+\DeclareUnicodeCharacter{CE88}{\UTFK{CE88}}%
+\DeclareUnicodeCharacter{CE89}{\UTFK{CE89}}%
+\DeclareUnicodeCharacter{CE8A}{\UTFK{CE8A}}%
+\DeclareUnicodeCharacter{CE8B}{\UTFK{CE8B}}%
+\DeclareUnicodeCharacter{CE8C}{\UTFK{CE8C}}%
+\DeclareUnicodeCharacter{CE8D}{\UTFK{CE8D}}%
+\DeclareUnicodeCharacter{CE8E}{\UTFK{CE8E}}%
+\DeclareUnicodeCharacter{CE8F}{\UTFK{CE8F}}%
+\DeclareUnicodeCharacter{CE90}{\UTFK{CE90}}%
+\DeclareUnicodeCharacter{CE91}{\UTFK{CE91}}%
+\DeclareUnicodeCharacter{CE92}{\UTFK{CE92}}%
+\DeclareUnicodeCharacter{CE93}{\UTFK{CE93}}%
+\DeclareUnicodeCharacter{CE94}{\UTFK{CE94}}%
+\DeclareUnicodeCharacter{CE95}{\UTFK{CE95}}%
+\DeclareUnicodeCharacter{CE96}{\UTFK{CE96}}%
+\DeclareUnicodeCharacter{CE97}{\UTFK{CE97}}%
+\DeclareUnicodeCharacter{CE98}{\UTFK{CE98}}%
+\DeclareUnicodeCharacter{CE99}{\UTFK{CE99}}%
+\DeclareUnicodeCharacter{CE9A}{\UTFK{CE9A}}%
+\DeclareUnicodeCharacter{CE9B}{\UTFK{CE9B}}%
+\DeclareUnicodeCharacter{CE9C}{\UTFK{CE9C}}%
+\DeclareUnicodeCharacter{CE9D}{\UTFK{CE9D}}%
+\DeclareUnicodeCharacter{CE9E}{\UTFK{CE9E}}%
+\DeclareUnicodeCharacter{CE9F}{\UTFK{CE9F}}%
+\DeclareUnicodeCharacter{CEA0}{\UTFK{CEA0}}%
+\DeclareUnicodeCharacter{CEA1}{\UTFK{CEA1}}%
+\DeclareUnicodeCharacter{CEA2}{\UTFK{CEA2}}%
+\DeclareUnicodeCharacter{CEA3}{\UTFK{CEA3}}%
+\DeclareUnicodeCharacter{CEA4}{\UTFK{CEA4}}%
+\DeclareUnicodeCharacter{CEA5}{\UTFK{CEA5}}%
+\DeclareUnicodeCharacter{CEA6}{\UTFK{CEA6}}%
+\DeclareUnicodeCharacter{CEA7}{\UTFK{CEA7}}%
+\DeclareUnicodeCharacter{CEA8}{\UTFK{CEA8}}%
+\DeclareUnicodeCharacter{CEA9}{\UTFK{CEA9}}%
+\DeclareUnicodeCharacter{CEAA}{\UTFK{CEAA}}%
+\DeclareUnicodeCharacter{CEAB}{\UTFK{CEAB}}%
+\DeclareUnicodeCharacter{CEAC}{\UTFK{CEAC}}%
+\DeclareUnicodeCharacter{CEAD}{\UTFK{CEAD}}%
+\DeclareUnicodeCharacter{CEAE}{\UTFK{CEAE}}%
+\DeclareUnicodeCharacter{CEAF}{\UTFK{CEAF}}%
+\DeclareUnicodeCharacter{CEB0}{\UTFK{CEB0}}%
+\DeclareUnicodeCharacter{CEB1}{\UTFK{CEB1}}%
+\DeclareUnicodeCharacter{CEB2}{\UTFK{CEB2}}%
+\DeclareUnicodeCharacter{CEB3}{\UTFK{CEB3}}%
+\DeclareUnicodeCharacter{CEB4}{\UTFK{CEB4}}%
+\DeclareUnicodeCharacter{CEB5}{\UTFK{CEB5}}%
+\DeclareUnicodeCharacter{CEB6}{\UTFK{CEB6}}%
+\DeclareUnicodeCharacter{CEB7}{\UTFK{CEB7}}%
+\DeclareUnicodeCharacter{CEB8}{\UTFK{CEB8}}%
+\DeclareUnicodeCharacter{CEB9}{\UTFK{CEB9}}%
+\DeclareUnicodeCharacter{CEBA}{\UTFK{CEBA}}%
+\DeclareUnicodeCharacter{CEBB}{\UTFK{CEBB}}%
+\DeclareUnicodeCharacter{CEBC}{\UTFK{CEBC}}%
+\DeclareUnicodeCharacter{CEBD}{\UTFK{CEBD}}%
+\DeclareUnicodeCharacter{CEBE}{\UTFK{CEBE}}%
+\DeclareUnicodeCharacter{CEBF}{\UTFK{CEBF}}%
+\DeclareUnicodeCharacter{CEC0}{\UTFK{CEC0}}%
+\DeclareUnicodeCharacter{CEC1}{\UTFK{CEC1}}%
+\DeclareUnicodeCharacter{CEC2}{\UTFK{CEC2}}%
+\DeclareUnicodeCharacter{CEC3}{\UTFK{CEC3}}%
+\DeclareUnicodeCharacter{CEC4}{\UTFK{CEC4}}%
+\DeclareUnicodeCharacter{CEC5}{\UTFK{CEC5}}%
+\DeclareUnicodeCharacter{CEC6}{\UTFK{CEC6}}%
+\DeclareUnicodeCharacter{CEC7}{\UTFK{CEC7}}%
+\DeclareUnicodeCharacter{CEC8}{\UTFK{CEC8}}%
+\DeclareUnicodeCharacter{CEC9}{\UTFK{CEC9}}%
+\DeclareUnicodeCharacter{CECA}{\UTFK{CECA}}%
+\DeclareUnicodeCharacter{CECB}{\UTFK{CECB}}%
+\DeclareUnicodeCharacter{CECC}{\UTFK{CECC}}%
+\DeclareUnicodeCharacter{CECD}{\UTFK{CECD}}%
+\DeclareUnicodeCharacter{CECE}{\UTFK{CECE}}%
+\DeclareUnicodeCharacter{CECF}{\UTFK{CECF}}%
+\DeclareUnicodeCharacter{CED0}{\UTFK{CED0}}%
+\DeclareUnicodeCharacter{CED1}{\UTFK{CED1}}%
+\DeclareUnicodeCharacter{CED2}{\UTFK{CED2}}%
+\DeclareUnicodeCharacter{CED3}{\UTFK{CED3}}%
+\DeclareUnicodeCharacter{CED4}{\UTFK{CED4}}%
+\DeclareUnicodeCharacter{CED5}{\UTFK{CED5}}%
+\DeclareUnicodeCharacter{CED6}{\UTFK{CED6}}%
+\DeclareUnicodeCharacter{CED7}{\UTFK{CED7}}%
+\DeclareUnicodeCharacter{CED8}{\UTFK{CED8}}%
+\DeclareUnicodeCharacter{CED9}{\UTFK{CED9}}%
+\DeclareUnicodeCharacter{CEDA}{\UTFK{CEDA}}%
+\DeclareUnicodeCharacter{CEDB}{\UTFK{CEDB}}%
+\DeclareUnicodeCharacter{CEDC}{\UTFK{CEDC}}%
+\DeclareUnicodeCharacter{CEDD}{\UTFK{CEDD}}%
+\DeclareUnicodeCharacter{CEDE}{\UTFK{CEDE}}%
+\DeclareUnicodeCharacter{CEDF}{\UTFK{CEDF}}%
+\DeclareUnicodeCharacter{CEE0}{\UTFK{CEE0}}%
+\DeclareUnicodeCharacter{CEE1}{\UTFK{CEE1}}%
+\DeclareUnicodeCharacter{CEE2}{\UTFK{CEE2}}%
+\DeclareUnicodeCharacter{CEE3}{\UTFK{CEE3}}%
+\DeclareUnicodeCharacter{CEE4}{\UTFK{CEE4}}%
+\DeclareUnicodeCharacter{CEE5}{\UTFK{CEE5}}%
+\DeclareUnicodeCharacter{CEE6}{\UTFK{CEE6}}%
+\DeclareUnicodeCharacter{CEE7}{\UTFK{CEE7}}%
+\DeclareUnicodeCharacter{CEE8}{\UTFK{CEE8}}%
+\DeclareUnicodeCharacter{CEE9}{\UTFK{CEE9}}%
+\DeclareUnicodeCharacter{CEEA}{\UTFK{CEEA}}%
+\DeclareUnicodeCharacter{CEEB}{\UTFK{CEEB}}%
+\DeclareUnicodeCharacter{CEEC}{\UTFK{CEEC}}%
+\DeclareUnicodeCharacter{CEED}{\UTFK{CEED}}%
+\DeclareUnicodeCharacter{CEEE}{\UTFK{CEEE}}%
+\DeclareUnicodeCharacter{CEEF}{\UTFK{CEEF}}%
+\DeclareUnicodeCharacter{CEF0}{\UTFK{CEF0}}%
+\DeclareUnicodeCharacter{CEF1}{\UTFK{CEF1}}%
+\DeclareUnicodeCharacter{CEF2}{\UTFK{CEF2}}%
+\DeclareUnicodeCharacter{CEF3}{\UTFK{CEF3}}%
+\DeclareUnicodeCharacter{CEF4}{\UTFK{CEF4}}%
+\DeclareUnicodeCharacter{CEF5}{\UTFK{CEF5}}%
+\DeclareUnicodeCharacter{CEF6}{\UTFK{CEF6}}%
+\DeclareUnicodeCharacter{CEF7}{\UTFK{CEF7}}%
+\DeclareUnicodeCharacter{CEF8}{\UTFK{CEF8}}%
+\DeclareUnicodeCharacter{CEF9}{\UTFK{CEF9}}%
+\DeclareUnicodeCharacter{CEFA}{\UTFK{CEFA}}%
+\DeclareUnicodeCharacter{CEFB}{\UTFK{CEFB}}%
+\DeclareUnicodeCharacter{CEFC}{\UTFK{CEFC}}%
+\DeclareUnicodeCharacter{CEFD}{\UTFK{CEFD}}%
+\DeclareUnicodeCharacter{CEFE}{\UTFK{CEFE}}%
+\DeclareUnicodeCharacter{CEFF}{\UTFK{CEFF}}%
+\DeclareUnicodeCharacter{CF00}{\UTFK{CF00}}%
+\DeclareUnicodeCharacter{CF01}{\UTFK{CF01}}%
+\DeclareUnicodeCharacter{CF02}{\UTFK{CF02}}%
+\DeclareUnicodeCharacter{CF03}{\UTFK{CF03}}%
+\DeclareUnicodeCharacter{CF04}{\UTFK{CF04}}%
+\DeclareUnicodeCharacter{CF05}{\UTFK{CF05}}%
+\DeclareUnicodeCharacter{CF06}{\UTFK{CF06}}%
+\DeclareUnicodeCharacter{CF07}{\UTFK{CF07}}%
+\DeclareUnicodeCharacter{CF08}{\UTFK{CF08}}%
+\DeclareUnicodeCharacter{CF09}{\UTFK{CF09}}%
+\DeclareUnicodeCharacter{CF0A}{\UTFK{CF0A}}%
+\DeclareUnicodeCharacter{CF0B}{\UTFK{CF0B}}%
+\DeclareUnicodeCharacter{CF0C}{\UTFK{CF0C}}%
+\DeclareUnicodeCharacter{CF0D}{\UTFK{CF0D}}%
+\DeclareUnicodeCharacter{CF0E}{\UTFK{CF0E}}%
+\DeclareUnicodeCharacter{CF0F}{\UTFK{CF0F}}%
+\DeclareUnicodeCharacter{CF10}{\UTFK{CF10}}%
+\DeclareUnicodeCharacter{CF11}{\UTFK{CF11}}%
+\DeclareUnicodeCharacter{CF12}{\UTFK{CF12}}%
+\DeclareUnicodeCharacter{CF13}{\UTFK{CF13}}%
+\DeclareUnicodeCharacter{CF14}{\UTFK{CF14}}%
+\DeclareUnicodeCharacter{CF15}{\UTFK{CF15}}%
+\DeclareUnicodeCharacter{CF16}{\UTFK{CF16}}%
+\DeclareUnicodeCharacter{CF17}{\UTFK{CF17}}%
+\DeclareUnicodeCharacter{CF18}{\UTFK{CF18}}%
+\DeclareUnicodeCharacter{CF19}{\UTFK{CF19}}%
+\DeclareUnicodeCharacter{CF1A}{\UTFK{CF1A}}%
+\DeclareUnicodeCharacter{CF1B}{\UTFK{CF1B}}%
+\DeclareUnicodeCharacter{CF1C}{\UTFK{CF1C}}%
+\DeclareUnicodeCharacter{CF1D}{\UTFK{CF1D}}%
+\DeclareUnicodeCharacter{CF1E}{\UTFK{CF1E}}%
+\DeclareUnicodeCharacter{CF1F}{\UTFK{CF1F}}%
+\DeclareUnicodeCharacter{CF20}{\UTFK{CF20}}%
+\DeclareUnicodeCharacter{CF21}{\UTFK{CF21}}%
+\DeclareUnicodeCharacter{CF22}{\UTFK{CF22}}%
+\DeclareUnicodeCharacter{CF23}{\UTFK{CF23}}%
+\DeclareUnicodeCharacter{CF24}{\UTFK{CF24}}%
+\DeclareUnicodeCharacter{CF25}{\UTFK{CF25}}%
+\DeclareUnicodeCharacter{CF26}{\UTFK{CF26}}%
+\DeclareUnicodeCharacter{CF27}{\UTFK{CF27}}%
+\DeclareUnicodeCharacter{CF28}{\UTFK{CF28}}%
+\DeclareUnicodeCharacter{CF29}{\UTFK{CF29}}%
+\DeclareUnicodeCharacter{CF2A}{\UTFK{CF2A}}%
+\DeclareUnicodeCharacter{CF2B}{\UTFK{CF2B}}%
+\DeclareUnicodeCharacter{CF2C}{\UTFK{CF2C}}%
+\DeclareUnicodeCharacter{CF2D}{\UTFK{CF2D}}%
+\DeclareUnicodeCharacter{CF2E}{\UTFK{CF2E}}%
+\DeclareUnicodeCharacter{CF2F}{\UTFK{CF2F}}%
+\DeclareUnicodeCharacter{CF30}{\UTFK{CF30}}%
+\DeclareUnicodeCharacter{CF31}{\UTFK{CF31}}%
+\DeclareUnicodeCharacter{CF32}{\UTFK{CF32}}%
+\DeclareUnicodeCharacter{CF33}{\UTFK{CF33}}%
+\DeclareUnicodeCharacter{CF34}{\UTFK{CF34}}%
+\DeclareUnicodeCharacter{CF35}{\UTFK{CF35}}%
+\DeclareUnicodeCharacter{CF36}{\UTFK{CF36}}%
+\DeclareUnicodeCharacter{CF37}{\UTFK{CF37}}%
+\DeclareUnicodeCharacter{CF38}{\UTFK{CF38}}%
+\DeclareUnicodeCharacter{CF39}{\UTFK{CF39}}%
+\DeclareUnicodeCharacter{CF3A}{\UTFK{CF3A}}%
+\DeclareUnicodeCharacter{CF3B}{\UTFK{CF3B}}%
+\DeclareUnicodeCharacter{CF3C}{\UTFK{CF3C}}%
+\DeclareUnicodeCharacter{CF3D}{\UTFK{CF3D}}%
+\DeclareUnicodeCharacter{CF3E}{\UTFK{CF3E}}%
+\DeclareUnicodeCharacter{CF3F}{\UTFK{CF3F}}%
+\DeclareUnicodeCharacter{CF40}{\UTFK{CF40}}%
+\DeclareUnicodeCharacter{CF41}{\UTFK{CF41}}%
+\DeclareUnicodeCharacter{CF42}{\UTFK{CF42}}%
+\DeclareUnicodeCharacter{CF43}{\UTFK{CF43}}%
+\DeclareUnicodeCharacter{CF44}{\UTFK{CF44}}%
+\DeclareUnicodeCharacter{CF45}{\UTFK{CF45}}%
+\DeclareUnicodeCharacter{CF46}{\UTFK{CF46}}%
+\DeclareUnicodeCharacter{CF47}{\UTFK{CF47}}%
+\DeclareUnicodeCharacter{CF48}{\UTFK{CF48}}%
+\DeclareUnicodeCharacter{CF49}{\UTFK{CF49}}%
+\DeclareUnicodeCharacter{CF4A}{\UTFK{CF4A}}%
+\DeclareUnicodeCharacter{CF4B}{\UTFK{CF4B}}%
+\DeclareUnicodeCharacter{CF4C}{\UTFK{CF4C}}%
+\DeclareUnicodeCharacter{CF4D}{\UTFK{CF4D}}%
+\DeclareUnicodeCharacter{CF4E}{\UTFK{CF4E}}%
+\DeclareUnicodeCharacter{CF4F}{\UTFK{CF4F}}%
+\DeclareUnicodeCharacter{CF50}{\UTFK{CF50}}%
+\DeclareUnicodeCharacter{CF51}{\UTFK{CF51}}%
+\DeclareUnicodeCharacter{CF52}{\UTFK{CF52}}%
+\DeclareUnicodeCharacter{CF53}{\UTFK{CF53}}%
+\DeclareUnicodeCharacter{CF54}{\UTFK{CF54}}%
+\DeclareUnicodeCharacter{CF55}{\UTFK{CF55}}%
+\DeclareUnicodeCharacter{CF56}{\UTFK{CF56}}%
+\DeclareUnicodeCharacter{CF57}{\UTFK{CF57}}%
+\DeclareUnicodeCharacter{CF58}{\UTFK{CF58}}%
+\DeclareUnicodeCharacter{CF59}{\UTFK{CF59}}%
+\DeclareUnicodeCharacter{CF5A}{\UTFK{CF5A}}%
+\DeclareUnicodeCharacter{CF5B}{\UTFK{CF5B}}%
+\DeclareUnicodeCharacter{CF5C}{\UTFK{CF5C}}%
+\DeclareUnicodeCharacter{CF5D}{\UTFK{CF5D}}%
+\DeclareUnicodeCharacter{CF5E}{\UTFK{CF5E}}%
+\DeclareUnicodeCharacter{CF5F}{\UTFK{CF5F}}%
+\DeclareUnicodeCharacter{CF60}{\UTFK{CF60}}%
+\DeclareUnicodeCharacter{CF61}{\UTFK{CF61}}%
+\DeclareUnicodeCharacter{CF62}{\UTFK{CF62}}%
+\DeclareUnicodeCharacter{CF63}{\UTFK{CF63}}%
+\DeclareUnicodeCharacter{CF64}{\UTFK{CF64}}%
+\DeclareUnicodeCharacter{CF65}{\UTFK{CF65}}%
+\DeclareUnicodeCharacter{CF66}{\UTFK{CF66}}%
+\DeclareUnicodeCharacter{CF67}{\UTFK{CF67}}%
+\DeclareUnicodeCharacter{CF68}{\UTFK{CF68}}%
+\DeclareUnicodeCharacter{CF69}{\UTFK{CF69}}%
+\DeclareUnicodeCharacter{CF6A}{\UTFK{CF6A}}%
+\DeclareUnicodeCharacter{CF6B}{\UTFK{CF6B}}%
+\DeclareUnicodeCharacter{CF6C}{\UTFK{CF6C}}%
+\DeclareUnicodeCharacter{CF6D}{\UTFK{CF6D}}%
+\DeclareUnicodeCharacter{CF6E}{\UTFK{CF6E}}%
+\DeclareUnicodeCharacter{CF6F}{\UTFK{CF6F}}%
+\DeclareUnicodeCharacter{CF70}{\UTFK{CF70}}%
+\DeclareUnicodeCharacter{CF71}{\UTFK{CF71}}%
+\DeclareUnicodeCharacter{CF72}{\UTFK{CF72}}%
+\DeclareUnicodeCharacter{CF73}{\UTFK{CF73}}%
+\DeclareUnicodeCharacter{CF74}{\UTFK{CF74}}%
+\DeclareUnicodeCharacter{CF75}{\UTFK{CF75}}%
+\DeclareUnicodeCharacter{CF76}{\UTFK{CF76}}%
+\DeclareUnicodeCharacter{CF77}{\UTFK{CF77}}%
+\DeclareUnicodeCharacter{CF78}{\UTFK{CF78}}%
+\DeclareUnicodeCharacter{CF79}{\UTFK{CF79}}%
+\DeclareUnicodeCharacter{CF7A}{\UTFK{CF7A}}%
+\DeclareUnicodeCharacter{CF7B}{\UTFK{CF7B}}%
+\DeclareUnicodeCharacter{CF7C}{\UTFK{CF7C}}%
+\DeclareUnicodeCharacter{CF7D}{\UTFK{CF7D}}%
+\DeclareUnicodeCharacter{CF7E}{\UTFK{CF7E}}%
+\DeclareUnicodeCharacter{CF7F}{\UTFK{CF7F}}%
+\DeclareUnicodeCharacter{CF80}{\UTFK{CF80}}%
+\DeclareUnicodeCharacter{CF81}{\UTFK{CF81}}%
+\DeclareUnicodeCharacter{CF82}{\UTFK{CF82}}%
+\DeclareUnicodeCharacter{CF83}{\UTFK{CF83}}%
+\DeclareUnicodeCharacter{CF84}{\UTFK{CF84}}%
+\DeclareUnicodeCharacter{CF85}{\UTFK{CF85}}%
+\DeclareUnicodeCharacter{CF86}{\UTFK{CF86}}%
+\DeclareUnicodeCharacter{CF87}{\UTFK{CF87}}%
+\DeclareUnicodeCharacter{CF88}{\UTFK{CF88}}%
+\DeclareUnicodeCharacter{CF89}{\UTFK{CF89}}%
+\DeclareUnicodeCharacter{CF8A}{\UTFK{CF8A}}%
+\DeclareUnicodeCharacter{CF8B}{\UTFK{CF8B}}%
+\DeclareUnicodeCharacter{CF8C}{\UTFK{CF8C}}%
+\DeclareUnicodeCharacter{CF8D}{\UTFK{CF8D}}%
+\DeclareUnicodeCharacter{CF8E}{\UTFK{CF8E}}%
+\DeclareUnicodeCharacter{CF8F}{\UTFK{CF8F}}%
+\DeclareUnicodeCharacter{CF90}{\UTFK{CF90}}%
+\DeclareUnicodeCharacter{CF91}{\UTFK{CF91}}%
+\DeclareUnicodeCharacter{CF92}{\UTFK{CF92}}%
+\DeclareUnicodeCharacter{CF93}{\UTFK{CF93}}%
+\DeclareUnicodeCharacter{CF94}{\UTFK{CF94}}%
+\DeclareUnicodeCharacter{CF95}{\UTFK{CF95}}%
+\DeclareUnicodeCharacter{CF96}{\UTFK{CF96}}%
+\DeclareUnicodeCharacter{CF97}{\UTFK{CF97}}%
+\DeclareUnicodeCharacter{CF98}{\UTFK{CF98}}%
+\DeclareUnicodeCharacter{CF99}{\UTFK{CF99}}%
+\DeclareUnicodeCharacter{CF9A}{\UTFK{CF9A}}%
+\DeclareUnicodeCharacter{CF9B}{\UTFK{CF9B}}%
+\DeclareUnicodeCharacter{CF9C}{\UTFK{CF9C}}%
+\DeclareUnicodeCharacter{CF9D}{\UTFK{CF9D}}%
+\DeclareUnicodeCharacter{CF9E}{\UTFK{CF9E}}%
+\DeclareUnicodeCharacter{CF9F}{\UTFK{CF9F}}%
+\DeclareUnicodeCharacter{CFA0}{\UTFK{CFA0}}%
+\DeclareUnicodeCharacter{CFA1}{\UTFK{CFA1}}%
+\DeclareUnicodeCharacter{CFA2}{\UTFK{CFA2}}%
+\DeclareUnicodeCharacter{CFA3}{\UTFK{CFA3}}%
+\DeclareUnicodeCharacter{CFA4}{\UTFK{CFA4}}%
+\DeclareUnicodeCharacter{CFA5}{\UTFK{CFA5}}%
+\DeclareUnicodeCharacter{CFA6}{\UTFK{CFA6}}%
+\DeclareUnicodeCharacter{CFA7}{\UTFK{CFA7}}%
+\DeclareUnicodeCharacter{CFA8}{\UTFK{CFA8}}%
+\DeclareUnicodeCharacter{CFA9}{\UTFK{CFA9}}%
+\DeclareUnicodeCharacter{CFAA}{\UTFK{CFAA}}%
+\DeclareUnicodeCharacter{CFAB}{\UTFK{CFAB}}%
+\DeclareUnicodeCharacter{CFAC}{\UTFK{CFAC}}%
+\DeclareUnicodeCharacter{CFAD}{\UTFK{CFAD}}%
+\DeclareUnicodeCharacter{CFAE}{\UTFK{CFAE}}%
+\DeclareUnicodeCharacter{CFAF}{\UTFK{CFAF}}%
+\DeclareUnicodeCharacter{CFB0}{\UTFK{CFB0}}%
+\DeclareUnicodeCharacter{CFB1}{\UTFK{CFB1}}%
+\DeclareUnicodeCharacter{CFB2}{\UTFK{CFB2}}%
+\DeclareUnicodeCharacter{CFB3}{\UTFK{CFB3}}%
+\DeclareUnicodeCharacter{CFB4}{\UTFK{CFB4}}%
+\DeclareUnicodeCharacter{CFB5}{\UTFK{CFB5}}%
+\DeclareUnicodeCharacter{CFB6}{\UTFK{CFB6}}%
+\DeclareUnicodeCharacter{CFB7}{\UTFK{CFB7}}%
+\DeclareUnicodeCharacter{CFB8}{\UTFK{CFB8}}%
+\DeclareUnicodeCharacter{CFB9}{\UTFK{CFB9}}%
+\DeclareUnicodeCharacter{CFBA}{\UTFK{CFBA}}%
+\DeclareUnicodeCharacter{CFBB}{\UTFK{CFBB}}%
+\DeclareUnicodeCharacter{CFBC}{\UTFK{CFBC}}%
+\DeclareUnicodeCharacter{CFBD}{\UTFK{CFBD}}%
+\DeclareUnicodeCharacter{CFBE}{\UTFK{CFBE}}%
+\DeclareUnicodeCharacter{CFBF}{\UTFK{CFBF}}%
+\DeclareUnicodeCharacter{CFC0}{\UTFK{CFC0}}%
+\DeclareUnicodeCharacter{CFC1}{\UTFK{CFC1}}%
+\DeclareUnicodeCharacter{CFC2}{\UTFK{CFC2}}%
+\DeclareUnicodeCharacter{CFC3}{\UTFK{CFC3}}%
+\DeclareUnicodeCharacter{CFC4}{\UTFK{CFC4}}%
+\DeclareUnicodeCharacter{CFC5}{\UTFK{CFC5}}%
+\DeclareUnicodeCharacter{CFC6}{\UTFK{CFC6}}%
+\DeclareUnicodeCharacter{CFC7}{\UTFK{CFC7}}%
+\DeclareUnicodeCharacter{CFC8}{\UTFK{CFC8}}%
+\DeclareUnicodeCharacter{CFC9}{\UTFK{CFC9}}%
+\DeclareUnicodeCharacter{CFCA}{\UTFK{CFCA}}%
+\DeclareUnicodeCharacter{CFCB}{\UTFK{CFCB}}%
+\DeclareUnicodeCharacter{CFCC}{\UTFK{CFCC}}%
+\DeclareUnicodeCharacter{CFCD}{\UTFK{CFCD}}%
+\DeclareUnicodeCharacter{CFCE}{\UTFK{CFCE}}%
+\DeclareUnicodeCharacter{CFCF}{\UTFK{CFCF}}%
+\DeclareUnicodeCharacter{CFD0}{\UTFK{CFD0}}%
+\DeclareUnicodeCharacter{CFD1}{\UTFK{CFD1}}%
+\DeclareUnicodeCharacter{CFD2}{\UTFK{CFD2}}%
+\DeclareUnicodeCharacter{CFD3}{\UTFK{CFD3}}%
+\DeclareUnicodeCharacter{CFD4}{\UTFK{CFD4}}%
+\DeclareUnicodeCharacter{CFD5}{\UTFK{CFD5}}%
+\DeclareUnicodeCharacter{CFD6}{\UTFK{CFD6}}%
+\DeclareUnicodeCharacter{CFD7}{\UTFK{CFD7}}%
+\DeclareUnicodeCharacter{CFD8}{\UTFK{CFD8}}%
+\DeclareUnicodeCharacter{CFD9}{\UTFK{CFD9}}%
+\DeclareUnicodeCharacter{CFDA}{\UTFK{CFDA}}%
+\DeclareUnicodeCharacter{CFDB}{\UTFK{CFDB}}%
+\DeclareUnicodeCharacter{CFDC}{\UTFK{CFDC}}%
+\DeclareUnicodeCharacter{CFDD}{\UTFK{CFDD}}%
+\DeclareUnicodeCharacter{CFDE}{\UTFK{CFDE}}%
+\DeclareUnicodeCharacter{CFDF}{\UTFK{CFDF}}%
+\DeclareUnicodeCharacter{CFE0}{\UTFK{CFE0}}%
+\DeclareUnicodeCharacter{CFE1}{\UTFK{CFE1}}%
+\DeclareUnicodeCharacter{CFE2}{\UTFK{CFE2}}%
+\DeclareUnicodeCharacter{CFE3}{\UTFK{CFE3}}%
+\DeclareUnicodeCharacter{CFE4}{\UTFK{CFE4}}%
+\DeclareUnicodeCharacter{CFE5}{\UTFK{CFE5}}%
+\DeclareUnicodeCharacter{CFE6}{\UTFK{CFE6}}%
+\DeclareUnicodeCharacter{CFE7}{\UTFK{CFE7}}%
+\DeclareUnicodeCharacter{CFE8}{\UTFK{CFE8}}%
+\DeclareUnicodeCharacter{CFE9}{\UTFK{CFE9}}%
+\DeclareUnicodeCharacter{CFEA}{\UTFK{CFEA}}%
+\DeclareUnicodeCharacter{CFEB}{\UTFK{CFEB}}%
+\DeclareUnicodeCharacter{CFEC}{\UTFK{CFEC}}%
+\DeclareUnicodeCharacter{CFED}{\UTFK{CFED}}%
+\DeclareUnicodeCharacter{CFEE}{\UTFK{CFEE}}%
+\DeclareUnicodeCharacter{CFEF}{\UTFK{CFEF}}%
+\DeclareUnicodeCharacter{CFF0}{\UTFK{CFF0}}%
+\DeclareUnicodeCharacter{CFF1}{\UTFK{CFF1}}%
+\DeclareUnicodeCharacter{CFF2}{\UTFK{CFF2}}%
+\DeclareUnicodeCharacter{CFF3}{\UTFK{CFF3}}%
+\DeclareUnicodeCharacter{CFF4}{\UTFK{CFF4}}%
+\DeclareUnicodeCharacter{CFF5}{\UTFK{CFF5}}%
+\DeclareUnicodeCharacter{CFF6}{\UTFK{CFF6}}%
+\DeclareUnicodeCharacter{CFF7}{\UTFK{CFF7}}%
+\DeclareUnicodeCharacter{CFF8}{\UTFK{CFF8}}%
+\DeclareUnicodeCharacter{CFF9}{\UTFK{CFF9}}%
+\DeclareUnicodeCharacter{CFFA}{\UTFK{CFFA}}%
+\DeclareUnicodeCharacter{CFFB}{\UTFK{CFFB}}%
+\DeclareUnicodeCharacter{CFFC}{\UTFK{CFFC}}%
+\DeclareUnicodeCharacter{CFFD}{\UTFK{CFFD}}%
+\DeclareUnicodeCharacter{CFFE}{\UTFK{CFFE}}%
+\DeclareUnicodeCharacter{CFFF}{\UTFK{CFFF}}%
+\DeclareUnicodeCharacter{D000}{\UTFK{D000}}%
+\DeclareUnicodeCharacter{D001}{\UTFK{D001}}%
+\DeclareUnicodeCharacter{D002}{\UTFK{D002}}%
+\DeclareUnicodeCharacter{D003}{\UTFK{D003}}%
+\DeclareUnicodeCharacter{D004}{\UTFK{D004}}%
+\DeclareUnicodeCharacter{D005}{\UTFK{D005}}%
+\DeclareUnicodeCharacter{D006}{\UTFK{D006}}%
+\DeclareUnicodeCharacter{D007}{\UTFK{D007}}%
+\DeclareUnicodeCharacter{D008}{\UTFK{D008}}%
+\DeclareUnicodeCharacter{D009}{\UTFK{D009}}%
+\DeclareUnicodeCharacter{D00A}{\UTFK{D00A}}%
+\DeclareUnicodeCharacter{D00B}{\UTFK{D00B}}%
+\DeclareUnicodeCharacter{D00C}{\UTFK{D00C}}%
+\DeclareUnicodeCharacter{D00D}{\UTFK{D00D}}%
+\DeclareUnicodeCharacter{D00E}{\UTFK{D00E}}%
+\DeclareUnicodeCharacter{D00F}{\UTFK{D00F}}%
+\DeclareUnicodeCharacter{D010}{\UTFK{D010}}%
+\DeclareUnicodeCharacter{D011}{\UTFK{D011}}%
+\DeclareUnicodeCharacter{D012}{\UTFK{D012}}%
+\DeclareUnicodeCharacter{D013}{\UTFK{D013}}%
+\DeclareUnicodeCharacter{D014}{\UTFK{D014}}%
+\DeclareUnicodeCharacter{D015}{\UTFK{D015}}%
+\DeclareUnicodeCharacter{D016}{\UTFK{D016}}%
+\DeclareUnicodeCharacter{D017}{\UTFK{D017}}%
+\DeclareUnicodeCharacter{D018}{\UTFK{D018}}%
+\DeclareUnicodeCharacter{D019}{\UTFK{D019}}%
+\DeclareUnicodeCharacter{D01A}{\UTFK{D01A}}%
+\DeclareUnicodeCharacter{D01B}{\UTFK{D01B}}%
+\DeclareUnicodeCharacter{D01C}{\UTFK{D01C}}%
+\DeclareUnicodeCharacter{D01D}{\UTFK{D01D}}%
+\DeclareUnicodeCharacter{D01E}{\UTFK{D01E}}%
+\DeclareUnicodeCharacter{D01F}{\UTFK{D01F}}%
+\DeclareUnicodeCharacter{D020}{\UTFK{D020}}%
+\DeclareUnicodeCharacter{D021}{\UTFK{D021}}%
+\DeclareUnicodeCharacter{D022}{\UTFK{D022}}%
+\DeclareUnicodeCharacter{D023}{\UTFK{D023}}%
+\DeclareUnicodeCharacter{D024}{\UTFK{D024}}%
+\DeclareUnicodeCharacter{D025}{\UTFK{D025}}%
+\DeclareUnicodeCharacter{D026}{\UTFK{D026}}%
+\DeclareUnicodeCharacter{D027}{\UTFK{D027}}%
+\DeclareUnicodeCharacter{D028}{\UTFK{D028}}%
+\DeclareUnicodeCharacter{D029}{\UTFK{D029}}%
+\DeclareUnicodeCharacter{D02A}{\UTFK{D02A}}%
+\DeclareUnicodeCharacter{D02B}{\UTFK{D02B}}%
+\DeclareUnicodeCharacter{D02C}{\UTFK{D02C}}%
+\DeclareUnicodeCharacter{D02D}{\UTFK{D02D}}%
+\DeclareUnicodeCharacter{D02E}{\UTFK{D02E}}%
+\DeclareUnicodeCharacter{D02F}{\UTFK{D02F}}%
+\DeclareUnicodeCharacter{D030}{\UTFK{D030}}%
+\DeclareUnicodeCharacter{D031}{\UTFK{D031}}%
+\DeclareUnicodeCharacter{D032}{\UTFK{D032}}%
+\DeclareUnicodeCharacter{D033}{\UTFK{D033}}%
+\DeclareUnicodeCharacter{D034}{\UTFK{D034}}%
+\DeclareUnicodeCharacter{D035}{\UTFK{D035}}%
+\DeclareUnicodeCharacter{D036}{\UTFK{D036}}%
+\DeclareUnicodeCharacter{D037}{\UTFK{D037}}%
+\DeclareUnicodeCharacter{D038}{\UTFK{D038}}%
+\DeclareUnicodeCharacter{D039}{\UTFK{D039}}%
+\DeclareUnicodeCharacter{D03A}{\UTFK{D03A}}%
+\DeclareUnicodeCharacter{D03B}{\UTFK{D03B}}%
+\DeclareUnicodeCharacter{D03C}{\UTFK{D03C}}%
+\DeclareUnicodeCharacter{D03D}{\UTFK{D03D}}%
+\DeclareUnicodeCharacter{D03E}{\UTFK{D03E}}%
+\DeclareUnicodeCharacter{D03F}{\UTFK{D03F}}%
+\DeclareUnicodeCharacter{D040}{\UTFK{D040}}%
+\DeclareUnicodeCharacter{D041}{\UTFK{D041}}%
+\DeclareUnicodeCharacter{D042}{\UTFK{D042}}%
+\DeclareUnicodeCharacter{D043}{\UTFK{D043}}%
+\DeclareUnicodeCharacter{D044}{\UTFK{D044}}%
+\DeclareUnicodeCharacter{D045}{\UTFK{D045}}%
+\DeclareUnicodeCharacter{D046}{\UTFK{D046}}%
+\DeclareUnicodeCharacter{D047}{\UTFK{D047}}%
+\DeclareUnicodeCharacter{D048}{\UTFK{D048}}%
+\DeclareUnicodeCharacter{D049}{\UTFK{D049}}%
+\DeclareUnicodeCharacter{D04A}{\UTFK{D04A}}%
+\DeclareUnicodeCharacter{D04B}{\UTFK{D04B}}%
+\DeclareUnicodeCharacter{D04C}{\UTFK{D04C}}%
+\DeclareUnicodeCharacter{D04D}{\UTFK{D04D}}%
+\DeclareUnicodeCharacter{D04E}{\UTFK{D04E}}%
+\DeclareUnicodeCharacter{D04F}{\UTFK{D04F}}%
+\DeclareUnicodeCharacter{D050}{\UTFK{D050}}%
+\DeclareUnicodeCharacter{D051}{\UTFK{D051}}%
+\DeclareUnicodeCharacter{D052}{\UTFK{D052}}%
+\DeclareUnicodeCharacter{D053}{\UTFK{D053}}%
+\DeclareUnicodeCharacter{D054}{\UTFK{D054}}%
+\DeclareUnicodeCharacter{D055}{\UTFK{D055}}%
+\DeclareUnicodeCharacter{D056}{\UTFK{D056}}%
+\DeclareUnicodeCharacter{D057}{\UTFK{D057}}%
+\DeclareUnicodeCharacter{D058}{\UTFK{D058}}%
+\DeclareUnicodeCharacter{D059}{\UTFK{D059}}%
+\DeclareUnicodeCharacter{D05A}{\UTFK{D05A}}%
+\DeclareUnicodeCharacter{D05B}{\UTFK{D05B}}%
+\DeclareUnicodeCharacter{D05C}{\UTFK{D05C}}%
+\DeclareUnicodeCharacter{D05D}{\UTFK{D05D}}%
+\DeclareUnicodeCharacter{D05E}{\UTFK{D05E}}%
+\DeclareUnicodeCharacter{D05F}{\UTFK{D05F}}%
+\DeclareUnicodeCharacter{D060}{\UTFK{D060}}%
+\DeclareUnicodeCharacter{D061}{\UTFK{D061}}%
+\DeclareUnicodeCharacter{D062}{\UTFK{D062}}%
+\DeclareUnicodeCharacter{D063}{\UTFK{D063}}%
+\DeclareUnicodeCharacter{D064}{\UTFK{D064}}%
+\DeclareUnicodeCharacter{D065}{\UTFK{D065}}%
+\DeclareUnicodeCharacter{D066}{\UTFK{D066}}%
+\DeclareUnicodeCharacter{D067}{\UTFK{D067}}%
+\DeclareUnicodeCharacter{D068}{\UTFK{D068}}%
+\DeclareUnicodeCharacter{D069}{\UTFK{D069}}%
+\DeclareUnicodeCharacter{D06A}{\UTFK{D06A}}%
+\DeclareUnicodeCharacter{D06B}{\UTFK{D06B}}%
+\DeclareUnicodeCharacter{D06C}{\UTFK{D06C}}%
+\DeclareUnicodeCharacter{D06D}{\UTFK{D06D}}%
+\DeclareUnicodeCharacter{D06E}{\UTFK{D06E}}%
+\DeclareUnicodeCharacter{D06F}{\UTFK{D06F}}%
+\DeclareUnicodeCharacter{D070}{\UTFK{D070}}%
+\DeclareUnicodeCharacter{D071}{\UTFK{D071}}%
+\DeclareUnicodeCharacter{D072}{\UTFK{D072}}%
+\DeclareUnicodeCharacter{D073}{\UTFK{D073}}%
+\DeclareUnicodeCharacter{D074}{\UTFK{D074}}%
+\DeclareUnicodeCharacter{D075}{\UTFK{D075}}%
+\DeclareUnicodeCharacter{D076}{\UTFK{D076}}%
+\DeclareUnicodeCharacter{D077}{\UTFK{D077}}%
+\DeclareUnicodeCharacter{D078}{\UTFK{D078}}%
+\DeclareUnicodeCharacter{D079}{\UTFK{D079}}%
+\DeclareUnicodeCharacter{D07A}{\UTFK{D07A}}%
+\DeclareUnicodeCharacter{D07B}{\UTFK{D07B}}%
+\DeclareUnicodeCharacter{D07C}{\UTFK{D07C}}%
+\DeclareUnicodeCharacter{D07D}{\UTFK{D07D}}%
+\DeclareUnicodeCharacter{D07E}{\UTFK{D07E}}%
+\DeclareUnicodeCharacter{D07F}{\UTFK{D07F}}%
+\DeclareUnicodeCharacter{D080}{\UTFK{D080}}%
+\DeclareUnicodeCharacter{D081}{\UTFK{D081}}%
+\DeclareUnicodeCharacter{D082}{\UTFK{D082}}%
+\DeclareUnicodeCharacter{D083}{\UTFK{D083}}%
+\DeclareUnicodeCharacter{D084}{\UTFK{D084}}%
+\DeclareUnicodeCharacter{D085}{\UTFK{D085}}%
+\DeclareUnicodeCharacter{D086}{\UTFK{D086}}%
+\DeclareUnicodeCharacter{D087}{\UTFK{D087}}%
+\DeclareUnicodeCharacter{D088}{\UTFK{D088}}%
+\DeclareUnicodeCharacter{D089}{\UTFK{D089}}%
+\DeclareUnicodeCharacter{D08A}{\UTFK{D08A}}%
+\DeclareUnicodeCharacter{D08B}{\UTFK{D08B}}%
+\DeclareUnicodeCharacter{D08C}{\UTFK{D08C}}%
+\DeclareUnicodeCharacter{D08D}{\UTFK{D08D}}%
+\DeclareUnicodeCharacter{D08E}{\UTFK{D08E}}%
+\DeclareUnicodeCharacter{D08F}{\UTFK{D08F}}%
+\DeclareUnicodeCharacter{D090}{\UTFK{D090}}%
+\DeclareUnicodeCharacter{D091}{\UTFK{D091}}%
+\DeclareUnicodeCharacter{D092}{\UTFK{D092}}%
+\DeclareUnicodeCharacter{D093}{\UTFK{D093}}%
+\DeclareUnicodeCharacter{D094}{\UTFK{D094}}%
+\DeclareUnicodeCharacter{D095}{\UTFK{D095}}%
+\DeclareUnicodeCharacter{D096}{\UTFK{D096}}%
+\DeclareUnicodeCharacter{D097}{\UTFK{D097}}%
+\DeclareUnicodeCharacter{D098}{\UTFK{D098}}%
+\DeclareUnicodeCharacter{D099}{\UTFK{D099}}%
+\DeclareUnicodeCharacter{D09A}{\UTFK{D09A}}%
+\DeclareUnicodeCharacter{D09B}{\UTFK{D09B}}%
+\DeclareUnicodeCharacter{D09C}{\UTFK{D09C}}%
+\DeclareUnicodeCharacter{D09D}{\UTFK{D09D}}%
+\DeclareUnicodeCharacter{D09E}{\UTFK{D09E}}%
+\DeclareUnicodeCharacter{D09F}{\UTFK{D09F}}%
+\DeclareUnicodeCharacter{D0A0}{\UTFK{D0A0}}%
+\DeclareUnicodeCharacter{D0A1}{\UTFK{D0A1}}%
+\DeclareUnicodeCharacter{D0A2}{\UTFK{D0A2}}%
+\DeclareUnicodeCharacter{D0A3}{\UTFK{D0A3}}%
+\DeclareUnicodeCharacter{D0A4}{\UTFK{D0A4}}%
+\DeclareUnicodeCharacter{D0A5}{\UTFK{D0A5}}%
+\DeclareUnicodeCharacter{D0A6}{\UTFK{D0A6}}%
+\DeclareUnicodeCharacter{D0A7}{\UTFK{D0A7}}%
+\DeclareUnicodeCharacter{D0A8}{\UTFK{D0A8}}%
+\DeclareUnicodeCharacter{D0A9}{\UTFK{D0A9}}%
+\DeclareUnicodeCharacter{D0AA}{\UTFK{D0AA}}%
+\DeclareUnicodeCharacter{D0AB}{\UTFK{D0AB}}%
+\DeclareUnicodeCharacter{D0AC}{\UTFK{D0AC}}%
+\DeclareUnicodeCharacter{D0AD}{\UTFK{D0AD}}%
+\DeclareUnicodeCharacter{D0AE}{\UTFK{D0AE}}%
+\DeclareUnicodeCharacter{D0AF}{\UTFK{D0AF}}%
+\DeclareUnicodeCharacter{D0B0}{\UTFK{D0B0}}%
+\DeclareUnicodeCharacter{D0B1}{\UTFK{D0B1}}%
+\DeclareUnicodeCharacter{D0B2}{\UTFK{D0B2}}%
+\DeclareUnicodeCharacter{D0B3}{\UTFK{D0B3}}%
+\DeclareUnicodeCharacter{D0B4}{\UTFK{D0B4}}%
+\DeclareUnicodeCharacter{D0B5}{\UTFK{D0B5}}%
+\DeclareUnicodeCharacter{D0B6}{\UTFK{D0B6}}%
+\DeclareUnicodeCharacter{D0B7}{\UTFK{D0B7}}%
+\DeclareUnicodeCharacter{D0B8}{\UTFK{D0B8}}%
+\DeclareUnicodeCharacter{D0B9}{\UTFK{D0B9}}%
+\DeclareUnicodeCharacter{D0BA}{\UTFK{D0BA}}%
+\DeclareUnicodeCharacter{D0BB}{\UTFK{D0BB}}%
+\DeclareUnicodeCharacter{D0BC}{\UTFK{D0BC}}%
+\DeclareUnicodeCharacter{D0BD}{\UTFK{D0BD}}%
+\DeclareUnicodeCharacter{D0BE}{\UTFK{D0BE}}%
+\DeclareUnicodeCharacter{D0BF}{\UTFK{D0BF}}%
+\DeclareUnicodeCharacter{D0C0}{\UTFK{D0C0}}%
+\DeclareUnicodeCharacter{D0C1}{\UTFK{D0C1}}%
+\DeclareUnicodeCharacter{D0C2}{\UTFK{D0C2}}%
+\DeclareUnicodeCharacter{D0C3}{\UTFK{D0C3}}%
+\DeclareUnicodeCharacter{D0C4}{\UTFK{D0C4}}%
+\DeclareUnicodeCharacter{D0C5}{\UTFK{D0C5}}%
+\DeclareUnicodeCharacter{D0C6}{\UTFK{D0C6}}%
+\DeclareUnicodeCharacter{D0C7}{\UTFK{D0C7}}%
+\DeclareUnicodeCharacter{D0C8}{\UTFK{D0C8}}%
+\DeclareUnicodeCharacter{D0C9}{\UTFK{D0C9}}%
+\DeclareUnicodeCharacter{D0CA}{\UTFK{D0CA}}%
+\DeclareUnicodeCharacter{D0CB}{\UTFK{D0CB}}%
+\DeclareUnicodeCharacter{D0CC}{\UTFK{D0CC}}%
+\DeclareUnicodeCharacter{D0CD}{\UTFK{D0CD}}%
+\DeclareUnicodeCharacter{D0CE}{\UTFK{D0CE}}%
+\DeclareUnicodeCharacter{D0CF}{\UTFK{D0CF}}%
+\DeclareUnicodeCharacter{D0D0}{\UTFK{D0D0}}%
+\DeclareUnicodeCharacter{D0D1}{\UTFK{D0D1}}%
+\DeclareUnicodeCharacter{D0D2}{\UTFK{D0D2}}%
+\DeclareUnicodeCharacter{D0D3}{\UTFK{D0D3}}%
+\DeclareUnicodeCharacter{D0D4}{\UTFK{D0D4}}%
+\DeclareUnicodeCharacter{D0D5}{\UTFK{D0D5}}%
+\DeclareUnicodeCharacter{D0D6}{\UTFK{D0D6}}%
+\DeclareUnicodeCharacter{D0D7}{\UTFK{D0D7}}%
+\DeclareUnicodeCharacter{D0D8}{\UTFK{D0D8}}%
+\DeclareUnicodeCharacter{D0D9}{\UTFK{D0D9}}%
+\DeclareUnicodeCharacter{D0DA}{\UTFK{D0DA}}%
+\DeclareUnicodeCharacter{D0DB}{\UTFK{D0DB}}%
+\DeclareUnicodeCharacter{D0DC}{\UTFK{D0DC}}%
+\DeclareUnicodeCharacter{D0DD}{\UTFK{D0DD}}%
+\DeclareUnicodeCharacter{D0DE}{\UTFK{D0DE}}%
+\DeclareUnicodeCharacter{D0DF}{\UTFK{D0DF}}%
+\DeclareUnicodeCharacter{D0E0}{\UTFK{D0E0}}%
+\DeclareUnicodeCharacter{D0E1}{\UTFK{D0E1}}%
+\DeclareUnicodeCharacter{D0E2}{\UTFK{D0E2}}%
+\DeclareUnicodeCharacter{D0E3}{\UTFK{D0E3}}%
+\DeclareUnicodeCharacter{D0E4}{\UTFK{D0E4}}%
+\DeclareUnicodeCharacter{D0E5}{\UTFK{D0E5}}%
+\DeclareUnicodeCharacter{D0E6}{\UTFK{D0E6}}%
+\DeclareUnicodeCharacter{D0E7}{\UTFK{D0E7}}%
+\DeclareUnicodeCharacter{D0E8}{\UTFK{D0E8}}%
+\DeclareUnicodeCharacter{D0E9}{\UTFK{D0E9}}%
+\DeclareUnicodeCharacter{D0EA}{\UTFK{D0EA}}%
+\DeclareUnicodeCharacter{D0EB}{\UTFK{D0EB}}%
+\DeclareUnicodeCharacter{D0EC}{\UTFK{D0EC}}%
+\DeclareUnicodeCharacter{D0ED}{\UTFK{D0ED}}%
+\DeclareUnicodeCharacter{D0EE}{\UTFK{D0EE}}%
+\DeclareUnicodeCharacter{D0EF}{\UTFK{D0EF}}%
+\DeclareUnicodeCharacter{D0F0}{\UTFK{D0F0}}%
+\DeclareUnicodeCharacter{D0F1}{\UTFK{D0F1}}%
+\DeclareUnicodeCharacter{D0F2}{\UTFK{D0F2}}%
+\DeclareUnicodeCharacter{D0F3}{\UTFK{D0F3}}%
+\DeclareUnicodeCharacter{D0F4}{\UTFK{D0F4}}%
+\DeclareUnicodeCharacter{D0F5}{\UTFK{D0F5}}%
+\DeclareUnicodeCharacter{D0F6}{\UTFK{D0F6}}%
+\DeclareUnicodeCharacter{D0F7}{\UTFK{D0F7}}%
+\DeclareUnicodeCharacter{D0F8}{\UTFK{D0F8}}%
+\DeclareUnicodeCharacter{D0F9}{\UTFK{D0F9}}%
+\DeclareUnicodeCharacter{D0FA}{\UTFK{D0FA}}%
+\DeclareUnicodeCharacter{D0FB}{\UTFK{D0FB}}%
+\DeclareUnicodeCharacter{D0FC}{\UTFK{D0FC}}%
+\DeclareUnicodeCharacter{D0FD}{\UTFK{D0FD}}%
+\DeclareUnicodeCharacter{D0FE}{\UTFK{D0FE}}%
+\DeclareUnicodeCharacter{D0FF}{\UTFK{D0FF}}%
+\DeclareUnicodeCharacter{D100}{\UTFK{D100}}%
+\DeclareUnicodeCharacter{D101}{\UTFK{D101}}%
+\DeclareUnicodeCharacter{D102}{\UTFK{D102}}%
+\DeclareUnicodeCharacter{D103}{\UTFK{D103}}%
+\DeclareUnicodeCharacter{D104}{\UTFK{D104}}%
+\DeclareUnicodeCharacter{D105}{\UTFK{D105}}%
+\DeclareUnicodeCharacter{D106}{\UTFK{D106}}%
+\DeclareUnicodeCharacter{D107}{\UTFK{D107}}%
+\DeclareUnicodeCharacter{D108}{\UTFK{D108}}%
+\DeclareUnicodeCharacter{D109}{\UTFK{D109}}%
+\DeclareUnicodeCharacter{D10A}{\UTFK{D10A}}%
+\DeclareUnicodeCharacter{D10B}{\UTFK{D10B}}%
+\DeclareUnicodeCharacter{D10C}{\UTFK{D10C}}%
+\DeclareUnicodeCharacter{D10D}{\UTFK{D10D}}%
+\DeclareUnicodeCharacter{D10E}{\UTFK{D10E}}%
+\DeclareUnicodeCharacter{D10F}{\UTFK{D10F}}%
+\DeclareUnicodeCharacter{D110}{\UTFK{D110}}%
+\DeclareUnicodeCharacter{D111}{\UTFK{D111}}%
+\DeclareUnicodeCharacter{D112}{\UTFK{D112}}%
+\DeclareUnicodeCharacter{D113}{\UTFK{D113}}%
+\DeclareUnicodeCharacter{D114}{\UTFK{D114}}%
+\DeclareUnicodeCharacter{D115}{\UTFK{D115}}%
+\DeclareUnicodeCharacter{D116}{\UTFK{D116}}%
+\DeclareUnicodeCharacter{D117}{\UTFK{D117}}%
+\DeclareUnicodeCharacter{D118}{\UTFK{D118}}%
+\DeclareUnicodeCharacter{D119}{\UTFK{D119}}%
+\DeclareUnicodeCharacter{D11A}{\UTFK{D11A}}%
+\DeclareUnicodeCharacter{D11B}{\UTFK{D11B}}%
+\DeclareUnicodeCharacter{D11C}{\UTFK{D11C}}%
+\DeclareUnicodeCharacter{D11D}{\UTFK{D11D}}%
+\DeclareUnicodeCharacter{D11E}{\UTFK{D11E}}%
+\DeclareUnicodeCharacter{D11F}{\UTFK{D11F}}%
+\DeclareUnicodeCharacter{D120}{\UTFK{D120}}%
+\DeclareUnicodeCharacter{D121}{\UTFK{D121}}%
+\DeclareUnicodeCharacter{D122}{\UTFK{D122}}%
+\DeclareUnicodeCharacter{D123}{\UTFK{D123}}%
+\DeclareUnicodeCharacter{D124}{\UTFK{D124}}%
+\DeclareUnicodeCharacter{D125}{\UTFK{D125}}%
+\DeclareUnicodeCharacter{D126}{\UTFK{D126}}%
+\DeclareUnicodeCharacter{D127}{\UTFK{D127}}%
+\DeclareUnicodeCharacter{D128}{\UTFK{D128}}%
+\DeclareUnicodeCharacter{D129}{\UTFK{D129}}%
+\DeclareUnicodeCharacter{D12A}{\UTFK{D12A}}%
+\DeclareUnicodeCharacter{D12B}{\UTFK{D12B}}%
+\DeclareUnicodeCharacter{D12C}{\UTFK{D12C}}%
+\DeclareUnicodeCharacter{D12D}{\UTFK{D12D}}%
+\DeclareUnicodeCharacter{D12E}{\UTFK{D12E}}%
+\DeclareUnicodeCharacter{D12F}{\UTFK{D12F}}%
+\DeclareUnicodeCharacter{D130}{\UTFK{D130}}%
+\DeclareUnicodeCharacter{D131}{\UTFK{D131}}%
+\DeclareUnicodeCharacter{D132}{\UTFK{D132}}%
+\DeclareUnicodeCharacter{D133}{\UTFK{D133}}%
+\DeclareUnicodeCharacter{D134}{\UTFK{D134}}%
+\DeclareUnicodeCharacter{D135}{\UTFK{D135}}%
+\DeclareUnicodeCharacter{D136}{\UTFK{D136}}%
+\DeclareUnicodeCharacter{D137}{\UTFK{D137}}%
+\DeclareUnicodeCharacter{D138}{\UTFK{D138}}%
+\DeclareUnicodeCharacter{D139}{\UTFK{D139}}%
+\DeclareUnicodeCharacter{D13A}{\UTFK{D13A}}%
+\DeclareUnicodeCharacter{D13B}{\UTFK{D13B}}%
+\DeclareUnicodeCharacter{D13C}{\UTFK{D13C}}%
+\DeclareUnicodeCharacter{D13D}{\UTFK{D13D}}%
+\DeclareUnicodeCharacter{D13E}{\UTFK{D13E}}%
+\DeclareUnicodeCharacter{D13F}{\UTFK{D13F}}%
+\DeclareUnicodeCharacter{D140}{\UTFK{D140}}%
+\DeclareUnicodeCharacter{D141}{\UTFK{D141}}%
+\DeclareUnicodeCharacter{D142}{\UTFK{D142}}%
+\DeclareUnicodeCharacter{D143}{\UTFK{D143}}%
+\DeclareUnicodeCharacter{D144}{\UTFK{D144}}%
+\DeclareUnicodeCharacter{D145}{\UTFK{D145}}%
+\DeclareUnicodeCharacter{D146}{\UTFK{D146}}%
+\DeclareUnicodeCharacter{D147}{\UTFK{D147}}%
+\DeclareUnicodeCharacter{D148}{\UTFK{D148}}%
+\DeclareUnicodeCharacter{D149}{\UTFK{D149}}%
+\DeclareUnicodeCharacter{D14A}{\UTFK{D14A}}%
+\DeclareUnicodeCharacter{D14B}{\UTFK{D14B}}%
+\DeclareUnicodeCharacter{D14C}{\UTFK{D14C}}%
+\DeclareUnicodeCharacter{D14D}{\UTFK{D14D}}%
+\DeclareUnicodeCharacter{D14E}{\UTFK{D14E}}%
+\DeclareUnicodeCharacter{D14F}{\UTFK{D14F}}%
+\DeclareUnicodeCharacter{D150}{\UTFK{D150}}%
+\DeclareUnicodeCharacter{D151}{\UTFK{D151}}%
+\DeclareUnicodeCharacter{D152}{\UTFK{D152}}%
+\DeclareUnicodeCharacter{D153}{\UTFK{D153}}%
+\DeclareUnicodeCharacter{D154}{\UTFK{D154}}%
+\DeclareUnicodeCharacter{D155}{\UTFK{D155}}%
+\DeclareUnicodeCharacter{D156}{\UTFK{D156}}%
+\DeclareUnicodeCharacter{D157}{\UTFK{D157}}%
+\DeclareUnicodeCharacter{D158}{\UTFK{D158}}%
+\DeclareUnicodeCharacter{D159}{\UTFK{D159}}%
+\DeclareUnicodeCharacter{D15A}{\UTFK{D15A}}%
+\DeclareUnicodeCharacter{D15B}{\UTFK{D15B}}%
+\DeclareUnicodeCharacter{D15C}{\UTFK{D15C}}%
+\DeclareUnicodeCharacter{D15D}{\UTFK{D15D}}%
+\DeclareUnicodeCharacter{D15E}{\UTFK{D15E}}%
+\DeclareUnicodeCharacter{D15F}{\UTFK{D15F}}%
+\DeclareUnicodeCharacter{D160}{\UTFK{D160}}%
+\DeclareUnicodeCharacter{D161}{\UTFK{D161}}%
+\DeclareUnicodeCharacter{D162}{\UTFK{D162}}%
+\DeclareUnicodeCharacter{D163}{\UTFK{D163}}%
+\DeclareUnicodeCharacter{D164}{\UTFK{D164}}%
+\DeclareUnicodeCharacter{D165}{\UTFK{D165}}%
+\DeclareUnicodeCharacter{D166}{\UTFK{D166}}%
+\DeclareUnicodeCharacter{D167}{\UTFK{D167}}%
+\DeclareUnicodeCharacter{D168}{\UTFK{D168}}%
+\DeclareUnicodeCharacter{D169}{\UTFK{D169}}%
+\DeclareUnicodeCharacter{D16A}{\UTFK{D16A}}%
+\DeclareUnicodeCharacter{D16B}{\UTFK{D16B}}%
+\DeclareUnicodeCharacter{D16C}{\UTFK{D16C}}%
+\DeclareUnicodeCharacter{D16D}{\UTFK{D16D}}%
+\DeclareUnicodeCharacter{D16E}{\UTFK{D16E}}%
+\DeclareUnicodeCharacter{D16F}{\UTFK{D16F}}%
+\DeclareUnicodeCharacter{D170}{\UTFK{D170}}%
+\DeclareUnicodeCharacter{D171}{\UTFK{D171}}%
+\DeclareUnicodeCharacter{D172}{\UTFK{D172}}%
+\DeclareUnicodeCharacter{D173}{\UTFK{D173}}%
+\DeclareUnicodeCharacter{D174}{\UTFK{D174}}%
+\DeclareUnicodeCharacter{D175}{\UTFK{D175}}%
+\DeclareUnicodeCharacter{D176}{\UTFK{D176}}%
+\DeclareUnicodeCharacter{D177}{\UTFK{D177}}%
+\DeclareUnicodeCharacter{D178}{\UTFK{D178}}%
+\DeclareUnicodeCharacter{D179}{\UTFK{D179}}%
+\DeclareUnicodeCharacter{D17A}{\UTFK{D17A}}%
+\DeclareUnicodeCharacter{D17B}{\UTFK{D17B}}%
+\DeclareUnicodeCharacter{D17C}{\UTFK{D17C}}%
+\DeclareUnicodeCharacter{D17D}{\UTFK{D17D}}%
+\DeclareUnicodeCharacter{D17E}{\UTFK{D17E}}%
+\DeclareUnicodeCharacter{D17F}{\UTFK{D17F}}%
+\DeclareUnicodeCharacter{D180}{\UTFK{D180}}%
+\DeclareUnicodeCharacter{D181}{\UTFK{D181}}%
+\DeclareUnicodeCharacter{D182}{\UTFK{D182}}%
+\DeclareUnicodeCharacter{D183}{\UTFK{D183}}%
+\DeclareUnicodeCharacter{D184}{\UTFK{D184}}%
+\DeclareUnicodeCharacter{D185}{\UTFK{D185}}%
+\DeclareUnicodeCharacter{D186}{\UTFK{D186}}%
+\DeclareUnicodeCharacter{D187}{\UTFK{D187}}%
+\DeclareUnicodeCharacter{D188}{\UTFK{D188}}%
+\DeclareUnicodeCharacter{D189}{\UTFK{D189}}%
+\DeclareUnicodeCharacter{D18A}{\UTFK{D18A}}%
+\DeclareUnicodeCharacter{D18B}{\UTFK{D18B}}%
+\DeclareUnicodeCharacter{D18C}{\UTFK{D18C}}%
+\DeclareUnicodeCharacter{D18D}{\UTFK{D18D}}%
+\DeclareUnicodeCharacter{D18E}{\UTFK{D18E}}%
+\DeclareUnicodeCharacter{D18F}{\UTFK{D18F}}%
+\DeclareUnicodeCharacter{D190}{\UTFK{D190}}%
+\DeclareUnicodeCharacter{D191}{\UTFK{D191}}%
+\DeclareUnicodeCharacter{D192}{\UTFK{D192}}%
+\DeclareUnicodeCharacter{D193}{\UTFK{D193}}%
+\DeclareUnicodeCharacter{D194}{\UTFK{D194}}%
+\DeclareUnicodeCharacter{D195}{\UTFK{D195}}%
+\DeclareUnicodeCharacter{D196}{\UTFK{D196}}%
+\DeclareUnicodeCharacter{D197}{\UTFK{D197}}%
+\DeclareUnicodeCharacter{D198}{\UTFK{D198}}%
+\DeclareUnicodeCharacter{D199}{\UTFK{D199}}%
+\DeclareUnicodeCharacter{D19A}{\UTFK{D19A}}%
+\DeclareUnicodeCharacter{D19B}{\UTFK{D19B}}%
+\DeclareUnicodeCharacter{D19C}{\UTFK{D19C}}%
+\DeclareUnicodeCharacter{D19D}{\UTFK{D19D}}%
+\DeclareUnicodeCharacter{D19E}{\UTFK{D19E}}%
+\DeclareUnicodeCharacter{D19F}{\UTFK{D19F}}%
+\DeclareUnicodeCharacter{D1A0}{\UTFK{D1A0}}%
+\DeclareUnicodeCharacter{D1A1}{\UTFK{D1A1}}%
+\DeclareUnicodeCharacter{D1A2}{\UTFK{D1A2}}%
+\DeclareUnicodeCharacter{D1A3}{\UTFK{D1A3}}%
+\DeclareUnicodeCharacter{D1A4}{\UTFK{D1A4}}%
+\DeclareUnicodeCharacter{D1A5}{\UTFK{D1A5}}%
+\DeclareUnicodeCharacter{D1A6}{\UTFK{D1A6}}%
+\DeclareUnicodeCharacter{D1A7}{\UTFK{D1A7}}%
+\DeclareUnicodeCharacter{D1A8}{\UTFK{D1A8}}%
+\DeclareUnicodeCharacter{D1A9}{\UTFK{D1A9}}%
+\DeclareUnicodeCharacter{D1AA}{\UTFK{D1AA}}%
+\DeclareUnicodeCharacter{D1AB}{\UTFK{D1AB}}%
+\DeclareUnicodeCharacter{D1AC}{\UTFK{D1AC}}%
+\DeclareUnicodeCharacter{D1AD}{\UTFK{D1AD}}%
+\DeclareUnicodeCharacter{D1AE}{\UTFK{D1AE}}%
+\DeclareUnicodeCharacter{D1AF}{\UTFK{D1AF}}%
+\DeclareUnicodeCharacter{D1B0}{\UTFK{D1B0}}%
+\DeclareUnicodeCharacter{D1B1}{\UTFK{D1B1}}%
+\DeclareUnicodeCharacter{D1B2}{\UTFK{D1B2}}%
+\DeclareUnicodeCharacter{D1B3}{\UTFK{D1B3}}%
+\DeclareUnicodeCharacter{D1B4}{\UTFK{D1B4}}%
+\DeclareUnicodeCharacter{D1B5}{\UTFK{D1B5}}%
+\DeclareUnicodeCharacter{D1B6}{\UTFK{D1B6}}%
+\DeclareUnicodeCharacter{D1B7}{\UTFK{D1B7}}%
+\DeclareUnicodeCharacter{D1B8}{\UTFK{D1B8}}%
+\DeclareUnicodeCharacter{D1B9}{\UTFK{D1B9}}%
+\DeclareUnicodeCharacter{D1BA}{\UTFK{D1BA}}%
+\DeclareUnicodeCharacter{D1BB}{\UTFK{D1BB}}%
+\DeclareUnicodeCharacter{D1BC}{\UTFK{D1BC}}%
+\DeclareUnicodeCharacter{D1BD}{\UTFK{D1BD}}%
+\DeclareUnicodeCharacter{D1BE}{\UTFK{D1BE}}%
+\DeclareUnicodeCharacter{D1BF}{\UTFK{D1BF}}%
+\DeclareUnicodeCharacter{D1C0}{\UTFK{D1C0}}%
+\DeclareUnicodeCharacter{D1C1}{\UTFK{D1C1}}%
+\DeclareUnicodeCharacter{D1C2}{\UTFK{D1C2}}%
+\DeclareUnicodeCharacter{D1C3}{\UTFK{D1C3}}%
+\DeclareUnicodeCharacter{D1C4}{\UTFK{D1C4}}%
+\DeclareUnicodeCharacter{D1C5}{\UTFK{D1C5}}%
+\DeclareUnicodeCharacter{D1C6}{\UTFK{D1C6}}%
+\DeclareUnicodeCharacter{D1C7}{\UTFK{D1C7}}%
+\DeclareUnicodeCharacter{D1C8}{\UTFK{D1C8}}%
+\DeclareUnicodeCharacter{D1C9}{\UTFK{D1C9}}%
+\DeclareUnicodeCharacter{D1CA}{\UTFK{D1CA}}%
+\DeclareUnicodeCharacter{D1CB}{\UTFK{D1CB}}%
+\DeclareUnicodeCharacter{D1CC}{\UTFK{D1CC}}%
+\DeclareUnicodeCharacter{D1CD}{\UTFK{D1CD}}%
+\DeclareUnicodeCharacter{D1CE}{\UTFK{D1CE}}%
+\DeclareUnicodeCharacter{D1CF}{\UTFK{D1CF}}%
+\DeclareUnicodeCharacter{D1D0}{\UTFK{D1D0}}%
+\DeclareUnicodeCharacter{D1D1}{\UTFK{D1D1}}%
+\DeclareUnicodeCharacter{D1D2}{\UTFK{D1D2}}%
+\DeclareUnicodeCharacter{D1D3}{\UTFK{D1D3}}%
+\DeclareUnicodeCharacter{D1D4}{\UTFK{D1D4}}%
+\DeclareUnicodeCharacter{D1D5}{\UTFK{D1D5}}%
+\DeclareUnicodeCharacter{D1D6}{\UTFK{D1D6}}%
+\DeclareUnicodeCharacter{D1D7}{\UTFK{D1D7}}%
+\DeclareUnicodeCharacter{D1D8}{\UTFK{D1D8}}%
+\DeclareUnicodeCharacter{D1D9}{\UTFK{D1D9}}%
+\DeclareUnicodeCharacter{D1DA}{\UTFK{D1DA}}%
+\DeclareUnicodeCharacter{D1DB}{\UTFK{D1DB}}%
+\DeclareUnicodeCharacter{D1DC}{\UTFK{D1DC}}%
+\DeclareUnicodeCharacter{D1DD}{\UTFK{D1DD}}%
+\DeclareUnicodeCharacter{D1DE}{\UTFK{D1DE}}%
+\DeclareUnicodeCharacter{D1DF}{\UTFK{D1DF}}%
+\DeclareUnicodeCharacter{D1E0}{\UTFK{D1E0}}%
+\DeclareUnicodeCharacter{D1E1}{\UTFK{D1E1}}%
+\DeclareUnicodeCharacter{D1E2}{\UTFK{D1E2}}%
+\DeclareUnicodeCharacter{D1E3}{\UTFK{D1E3}}%
+\DeclareUnicodeCharacter{D1E4}{\UTFK{D1E4}}%
+\DeclareUnicodeCharacter{D1E5}{\UTFK{D1E5}}%
+\DeclareUnicodeCharacter{D1E6}{\UTFK{D1E6}}%
+\DeclareUnicodeCharacter{D1E7}{\UTFK{D1E7}}%
+\DeclareUnicodeCharacter{D1E8}{\UTFK{D1E8}}%
+\DeclareUnicodeCharacter{D1E9}{\UTFK{D1E9}}%
+\DeclareUnicodeCharacter{D1EA}{\UTFK{D1EA}}%
+\DeclareUnicodeCharacter{D1EB}{\UTFK{D1EB}}%
+\DeclareUnicodeCharacter{D1EC}{\UTFK{D1EC}}%
+\DeclareUnicodeCharacter{D1ED}{\UTFK{D1ED}}%
+\DeclareUnicodeCharacter{D1EE}{\UTFK{D1EE}}%
+\DeclareUnicodeCharacter{D1EF}{\UTFK{D1EF}}%
+\DeclareUnicodeCharacter{D1F0}{\UTFK{D1F0}}%
+\DeclareUnicodeCharacter{D1F1}{\UTFK{D1F1}}%
+\DeclareUnicodeCharacter{D1F2}{\UTFK{D1F2}}%
+\DeclareUnicodeCharacter{D1F3}{\UTFK{D1F3}}%
+\DeclareUnicodeCharacter{D1F4}{\UTFK{D1F4}}%
+\DeclareUnicodeCharacter{D1F5}{\UTFK{D1F5}}%
+\DeclareUnicodeCharacter{D1F6}{\UTFK{D1F6}}%
+\DeclareUnicodeCharacter{D1F7}{\UTFK{D1F7}}%
+\DeclareUnicodeCharacter{D1F8}{\UTFK{D1F8}}%
+\DeclareUnicodeCharacter{D1F9}{\UTFK{D1F9}}%
+\DeclareUnicodeCharacter{D1FA}{\UTFK{D1FA}}%
+\DeclareUnicodeCharacter{D1FB}{\UTFK{D1FB}}%
+\DeclareUnicodeCharacter{D1FC}{\UTFK{D1FC}}%
+\DeclareUnicodeCharacter{D1FD}{\UTFK{D1FD}}%
+\DeclareUnicodeCharacter{D1FE}{\UTFK{D1FE}}%
+\DeclareUnicodeCharacter{D1FF}{\UTFK{D1FF}}%
+\DeclareUnicodeCharacter{D200}{\UTFK{D200}}%
+\DeclareUnicodeCharacter{D201}{\UTFK{D201}}%
+\DeclareUnicodeCharacter{D202}{\UTFK{D202}}%
+\DeclareUnicodeCharacter{D203}{\UTFK{D203}}%
+\DeclareUnicodeCharacter{D204}{\UTFK{D204}}%
+\DeclareUnicodeCharacter{D205}{\UTFK{D205}}%
+\DeclareUnicodeCharacter{D206}{\UTFK{D206}}%
+\DeclareUnicodeCharacter{D207}{\UTFK{D207}}%
+\DeclareUnicodeCharacter{D208}{\UTFK{D208}}%
+\DeclareUnicodeCharacter{D209}{\UTFK{D209}}%
+\DeclareUnicodeCharacter{D20A}{\UTFK{D20A}}%
+\DeclareUnicodeCharacter{D20B}{\UTFK{D20B}}%
+\DeclareUnicodeCharacter{D20C}{\UTFK{D20C}}%
+\DeclareUnicodeCharacter{D20D}{\UTFK{D20D}}%
+\DeclareUnicodeCharacter{D20E}{\UTFK{D20E}}%
+\DeclareUnicodeCharacter{D20F}{\UTFK{D20F}}%
+\DeclareUnicodeCharacter{D210}{\UTFK{D210}}%
+\DeclareUnicodeCharacter{D211}{\UTFK{D211}}%
+\DeclareUnicodeCharacter{D212}{\UTFK{D212}}%
+\DeclareUnicodeCharacter{D213}{\UTFK{D213}}%
+\DeclareUnicodeCharacter{D214}{\UTFK{D214}}%
+\DeclareUnicodeCharacter{D215}{\UTFK{D215}}%
+\DeclareUnicodeCharacter{D216}{\UTFK{D216}}%
+\DeclareUnicodeCharacter{D217}{\UTFK{D217}}%
+\DeclareUnicodeCharacter{D218}{\UTFK{D218}}%
+\DeclareUnicodeCharacter{D219}{\UTFK{D219}}%
+\DeclareUnicodeCharacter{D21A}{\UTFK{D21A}}%
+\DeclareUnicodeCharacter{D21B}{\UTFK{D21B}}%
+\DeclareUnicodeCharacter{D21C}{\UTFK{D21C}}%
+\DeclareUnicodeCharacter{D21D}{\UTFK{D21D}}%
+\DeclareUnicodeCharacter{D21E}{\UTFK{D21E}}%
+\DeclareUnicodeCharacter{D21F}{\UTFK{D21F}}%
+\DeclareUnicodeCharacter{D220}{\UTFK{D220}}%
+\DeclareUnicodeCharacter{D221}{\UTFK{D221}}%
+\DeclareUnicodeCharacter{D222}{\UTFK{D222}}%
+\DeclareUnicodeCharacter{D223}{\UTFK{D223}}%
+\DeclareUnicodeCharacter{D224}{\UTFK{D224}}%
+\DeclareUnicodeCharacter{D225}{\UTFK{D225}}%
+\DeclareUnicodeCharacter{D226}{\UTFK{D226}}%
+\DeclareUnicodeCharacter{D227}{\UTFK{D227}}%
+\DeclareUnicodeCharacter{D228}{\UTFK{D228}}%
+\DeclareUnicodeCharacter{D229}{\UTFK{D229}}%
+\DeclareUnicodeCharacter{D22A}{\UTFK{D22A}}%
+\DeclareUnicodeCharacter{D22B}{\UTFK{D22B}}%
+\DeclareUnicodeCharacter{D22C}{\UTFK{D22C}}%
+\DeclareUnicodeCharacter{D22D}{\UTFK{D22D}}%
+\DeclareUnicodeCharacter{D22E}{\UTFK{D22E}}%
+\DeclareUnicodeCharacter{D22F}{\UTFK{D22F}}%
+\DeclareUnicodeCharacter{D230}{\UTFK{D230}}%
+\DeclareUnicodeCharacter{D231}{\UTFK{D231}}%
+\DeclareUnicodeCharacter{D232}{\UTFK{D232}}%
+\DeclareUnicodeCharacter{D233}{\UTFK{D233}}%
+\DeclareUnicodeCharacter{D234}{\UTFK{D234}}%
+\DeclareUnicodeCharacter{D235}{\UTFK{D235}}%
+\DeclareUnicodeCharacter{D236}{\UTFK{D236}}%
+\DeclareUnicodeCharacter{D237}{\UTFK{D237}}%
+\DeclareUnicodeCharacter{D238}{\UTFK{D238}}%
+\DeclareUnicodeCharacter{D239}{\UTFK{D239}}%
+\DeclareUnicodeCharacter{D23A}{\UTFK{D23A}}%
+\DeclareUnicodeCharacter{D23B}{\UTFK{D23B}}%
+\DeclareUnicodeCharacter{D23C}{\UTFK{D23C}}%
+\DeclareUnicodeCharacter{D23D}{\UTFK{D23D}}%
+\DeclareUnicodeCharacter{D23E}{\UTFK{D23E}}%
+\DeclareUnicodeCharacter{D23F}{\UTFK{D23F}}%
+\DeclareUnicodeCharacter{D240}{\UTFK{D240}}%
+\DeclareUnicodeCharacter{D241}{\UTFK{D241}}%
+\DeclareUnicodeCharacter{D242}{\UTFK{D242}}%
+\DeclareUnicodeCharacter{D243}{\UTFK{D243}}%
+\DeclareUnicodeCharacter{D244}{\UTFK{D244}}%
+\DeclareUnicodeCharacter{D245}{\UTFK{D245}}%
+\DeclareUnicodeCharacter{D246}{\UTFK{D246}}%
+\DeclareUnicodeCharacter{D247}{\UTFK{D247}}%
+\DeclareUnicodeCharacter{D248}{\UTFK{D248}}%
+\DeclareUnicodeCharacter{D249}{\UTFK{D249}}%
+\DeclareUnicodeCharacter{D24A}{\UTFK{D24A}}%
+\DeclareUnicodeCharacter{D24B}{\UTFK{D24B}}%
+\DeclareUnicodeCharacter{D24C}{\UTFK{D24C}}%
+\DeclareUnicodeCharacter{D24D}{\UTFK{D24D}}%
+\DeclareUnicodeCharacter{D24E}{\UTFK{D24E}}%
+\DeclareUnicodeCharacter{D24F}{\UTFK{D24F}}%
+\DeclareUnicodeCharacter{D250}{\UTFK{D250}}%
+\DeclareUnicodeCharacter{D251}{\UTFK{D251}}%
+\DeclareUnicodeCharacter{D252}{\UTFK{D252}}%
+\DeclareUnicodeCharacter{D253}{\UTFK{D253}}%
+\DeclareUnicodeCharacter{D254}{\UTFK{D254}}%
+\DeclareUnicodeCharacter{D255}{\UTFK{D255}}%
+\DeclareUnicodeCharacter{D256}{\UTFK{D256}}%
+\DeclareUnicodeCharacter{D257}{\UTFK{D257}}%
+\DeclareUnicodeCharacter{D258}{\UTFK{D258}}%
+\DeclareUnicodeCharacter{D259}{\UTFK{D259}}%
+\DeclareUnicodeCharacter{D25A}{\UTFK{D25A}}%
+\DeclareUnicodeCharacter{D25B}{\UTFK{D25B}}%
+\DeclareUnicodeCharacter{D25C}{\UTFK{D25C}}%
+\DeclareUnicodeCharacter{D25D}{\UTFK{D25D}}%
+\DeclareUnicodeCharacter{D25E}{\UTFK{D25E}}%
+\DeclareUnicodeCharacter{D25F}{\UTFK{D25F}}%
+\DeclareUnicodeCharacter{D260}{\UTFK{D260}}%
+\DeclareUnicodeCharacter{D261}{\UTFK{D261}}%
+\DeclareUnicodeCharacter{D262}{\UTFK{D262}}%
+\DeclareUnicodeCharacter{D263}{\UTFK{D263}}%
+\DeclareUnicodeCharacter{D264}{\UTFK{D264}}%
+\DeclareUnicodeCharacter{D265}{\UTFK{D265}}%
+\DeclareUnicodeCharacter{D266}{\UTFK{D266}}%
+\DeclareUnicodeCharacter{D267}{\UTFK{D267}}%
+\DeclareUnicodeCharacter{D268}{\UTFK{D268}}%
+\DeclareUnicodeCharacter{D269}{\UTFK{D269}}%
+\DeclareUnicodeCharacter{D26A}{\UTFK{D26A}}%
+\DeclareUnicodeCharacter{D26B}{\UTFK{D26B}}%
+\DeclareUnicodeCharacter{D26C}{\UTFK{D26C}}%
+\DeclareUnicodeCharacter{D26D}{\UTFK{D26D}}%
+\DeclareUnicodeCharacter{D26E}{\UTFK{D26E}}%
+\DeclareUnicodeCharacter{D26F}{\UTFK{D26F}}%
+\DeclareUnicodeCharacter{D270}{\UTFK{D270}}%
+\DeclareUnicodeCharacter{D271}{\UTFK{D271}}%
+\DeclareUnicodeCharacter{D272}{\UTFK{D272}}%
+\DeclareUnicodeCharacter{D273}{\UTFK{D273}}%
+\DeclareUnicodeCharacter{D274}{\UTFK{D274}}%
+\DeclareUnicodeCharacter{D275}{\UTFK{D275}}%
+\DeclareUnicodeCharacter{D276}{\UTFK{D276}}%
+\DeclareUnicodeCharacter{D277}{\UTFK{D277}}%
+\DeclareUnicodeCharacter{D278}{\UTFK{D278}}%
+\DeclareUnicodeCharacter{D279}{\UTFK{D279}}%
+\DeclareUnicodeCharacter{D27A}{\UTFK{D27A}}%
+\DeclareUnicodeCharacter{D27B}{\UTFK{D27B}}%
+\DeclareUnicodeCharacter{D27C}{\UTFK{D27C}}%
+\DeclareUnicodeCharacter{D27D}{\UTFK{D27D}}%
+\DeclareUnicodeCharacter{D27E}{\UTFK{D27E}}%
+\DeclareUnicodeCharacter{D27F}{\UTFK{D27F}}%
+\DeclareUnicodeCharacter{D280}{\UTFK{D280}}%
+\DeclareUnicodeCharacter{D281}{\UTFK{D281}}%
+\DeclareUnicodeCharacter{D282}{\UTFK{D282}}%
+\DeclareUnicodeCharacter{D283}{\UTFK{D283}}%
+\DeclareUnicodeCharacter{D284}{\UTFK{D284}}%
+\DeclareUnicodeCharacter{D285}{\UTFK{D285}}%
+\DeclareUnicodeCharacter{D286}{\UTFK{D286}}%
+\DeclareUnicodeCharacter{D287}{\UTFK{D287}}%
+\DeclareUnicodeCharacter{D288}{\UTFK{D288}}%
+\DeclareUnicodeCharacter{D289}{\UTFK{D289}}%
+\DeclareUnicodeCharacter{D28A}{\UTFK{D28A}}%
+\DeclareUnicodeCharacter{D28B}{\UTFK{D28B}}%
+\DeclareUnicodeCharacter{D28C}{\UTFK{D28C}}%
+\DeclareUnicodeCharacter{D28D}{\UTFK{D28D}}%
+\DeclareUnicodeCharacter{D28E}{\UTFK{D28E}}%
+\DeclareUnicodeCharacter{D28F}{\UTFK{D28F}}%
+\DeclareUnicodeCharacter{D290}{\UTFK{D290}}%
+\DeclareUnicodeCharacter{D291}{\UTFK{D291}}%
+\DeclareUnicodeCharacter{D292}{\UTFK{D292}}%
+\DeclareUnicodeCharacter{D293}{\UTFK{D293}}%
+\DeclareUnicodeCharacter{D294}{\UTFK{D294}}%
+\DeclareUnicodeCharacter{D295}{\UTFK{D295}}%
+\DeclareUnicodeCharacter{D296}{\UTFK{D296}}%
+\DeclareUnicodeCharacter{D297}{\UTFK{D297}}%
+\DeclareUnicodeCharacter{D298}{\UTFK{D298}}%
+\DeclareUnicodeCharacter{D299}{\UTFK{D299}}%
+\DeclareUnicodeCharacter{D29A}{\UTFK{D29A}}%
+\DeclareUnicodeCharacter{D29B}{\UTFK{D29B}}%
+\DeclareUnicodeCharacter{D29C}{\UTFK{D29C}}%
+\DeclareUnicodeCharacter{D29D}{\UTFK{D29D}}%
+\DeclareUnicodeCharacter{D29E}{\UTFK{D29E}}%
+\DeclareUnicodeCharacter{D29F}{\UTFK{D29F}}%
+\DeclareUnicodeCharacter{D2A0}{\UTFK{D2A0}}%
+\DeclareUnicodeCharacter{D2A1}{\UTFK{D2A1}}%
+\DeclareUnicodeCharacter{D2A2}{\UTFK{D2A2}}%
+\DeclareUnicodeCharacter{D2A3}{\UTFK{D2A3}}%
+\DeclareUnicodeCharacter{D2A4}{\UTFK{D2A4}}%
+\DeclareUnicodeCharacter{D2A5}{\UTFK{D2A5}}%
+\DeclareUnicodeCharacter{D2A6}{\UTFK{D2A6}}%
+\DeclareUnicodeCharacter{D2A7}{\UTFK{D2A7}}%
+\DeclareUnicodeCharacter{D2A8}{\UTFK{D2A8}}%
+\DeclareUnicodeCharacter{D2A9}{\UTFK{D2A9}}%
+\DeclareUnicodeCharacter{D2AA}{\UTFK{D2AA}}%
+\DeclareUnicodeCharacter{D2AB}{\UTFK{D2AB}}%
+\DeclareUnicodeCharacter{D2AC}{\UTFK{D2AC}}%
+\DeclareUnicodeCharacter{D2AD}{\UTFK{D2AD}}%
+\DeclareUnicodeCharacter{D2AE}{\UTFK{D2AE}}%
+\DeclareUnicodeCharacter{D2AF}{\UTFK{D2AF}}%
+\DeclareUnicodeCharacter{D2B0}{\UTFK{D2B0}}%
+\DeclareUnicodeCharacter{D2B1}{\UTFK{D2B1}}%
+\DeclareUnicodeCharacter{D2B2}{\UTFK{D2B2}}%
+\DeclareUnicodeCharacter{D2B3}{\UTFK{D2B3}}%
+\DeclareUnicodeCharacter{D2B4}{\UTFK{D2B4}}%
+\DeclareUnicodeCharacter{D2B5}{\UTFK{D2B5}}%
+\DeclareUnicodeCharacter{D2B6}{\UTFK{D2B6}}%
+\DeclareUnicodeCharacter{D2B7}{\UTFK{D2B7}}%
+\DeclareUnicodeCharacter{D2B8}{\UTFK{D2B8}}%
+\DeclareUnicodeCharacter{D2B9}{\UTFK{D2B9}}%
+\DeclareUnicodeCharacter{D2BA}{\UTFK{D2BA}}%
+\DeclareUnicodeCharacter{D2BB}{\UTFK{D2BB}}%
+\DeclareUnicodeCharacter{D2BC}{\UTFK{D2BC}}%
+\DeclareUnicodeCharacter{D2BD}{\UTFK{D2BD}}%
+\DeclareUnicodeCharacter{D2BE}{\UTFK{D2BE}}%
+\DeclareUnicodeCharacter{D2BF}{\UTFK{D2BF}}%
+\DeclareUnicodeCharacter{D2C0}{\UTFK{D2C0}}%
+\DeclareUnicodeCharacter{D2C1}{\UTFK{D2C1}}%
+\DeclareUnicodeCharacter{D2C2}{\UTFK{D2C2}}%
+\DeclareUnicodeCharacter{D2C3}{\UTFK{D2C3}}%
+\DeclareUnicodeCharacter{D2C4}{\UTFK{D2C4}}%
+\DeclareUnicodeCharacter{D2C5}{\UTFK{D2C5}}%
+\DeclareUnicodeCharacter{D2C6}{\UTFK{D2C6}}%
+\DeclareUnicodeCharacter{D2C7}{\UTFK{D2C7}}%
+\DeclareUnicodeCharacter{D2C8}{\UTFK{D2C8}}%
+\DeclareUnicodeCharacter{D2C9}{\UTFK{D2C9}}%
+\DeclareUnicodeCharacter{D2CA}{\UTFK{D2CA}}%
+\DeclareUnicodeCharacter{D2CB}{\UTFK{D2CB}}%
+\DeclareUnicodeCharacter{D2CC}{\UTFK{D2CC}}%
+\DeclareUnicodeCharacter{D2CD}{\UTFK{D2CD}}%
+\DeclareUnicodeCharacter{D2CE}{\UTFK{D2CE}}%
+\DeclareUnicodeCharacter{D2CF}{\UTFK{D2CF}}%
+\DeclareUnicodeCharacter{D2D0}{\UTFK{D2D0}}%
+\DeclareUnicodeCharacter{D2D1}{\UTFK{D2D1}}%
+\DeclareUnicodeCharacter{D2D2}{\UTFK{D2D2}}%
+\DeclareUnicodeCharacter{D2D3}{\UTFK{D2D3}}%
+\DeclareUnicodeCharacter{D2D4}{\UTFK{D2D4}}%
+\DeclareUnicodeCharacter{D2D5}{\UTFK{D2D5}}%
+\DeclareUnicodeCharacter{D2D6}{\UTFK{D2D6}}%
+\DeclareUnicodeCharacter{D2D7}{\UTFK{D2D7}}%
+\DeclareUnicodeCharacter{D2D8}{\UTFK{D2D8}}%
+\DeclareUnicodeCharacter{D2D9}{\UTFK{D2D9}}%
+\DeclareUnicodeCharacter{D2DA}{\UTFK{D2DA}}%
+\DeclareUnicodeCharacter{D2DB}{\UTFK{D2DB}}%
+\DeclareUnicodeCharacter{D2DC}{\UTFK{D2DC}}%
+\DeclareUnicodeCharacter{D2DD}{\UTFK{D2DD}}%
+\DeclareUnicodeCharacter{D2DE}{\UTFK{D2DE}}%
+\DeclareUnicodeCharacter{D2DF}{\UTFK{D2DF}}%
+\DeclareUnicodeCharacter{D2E0}{\UTFK{D2E0}}%
+\DeclareUnicodeCharacter{D2E1}{\UTFK{D2E1}}%
+\DeclareUnicodeCharacter{D2E2}{\UTFK{D2E2}}%
+\DeclareUnicodeCharacter{D2E3}{\UTFK{D2E3}}%
+\DeclareUnicodeCharacter{D2E4}{\UTFK{D2E4}}%
+\DeclareUnicodeCharacter{D2E5}{\UTFK{D2E5}}%
+\DeclareUnicodeCharacter{D2E6}{\UTFK{D2E6}}%
+\DeclareUnicodeCharacter{D2E7}{\UTFK{D2E7}}%
+\DeclareUnicodeCharacter{D2E8}{\UTFK{D2E8}}%
+\DeclareUnicodeCharacter{D2E9}{\UTFK{D2E9}}%
+\DeclareUnicodeCharacter{D2EA}{\UTFK{D2EA}}%
+\DeclareUnicodeCharacter{D2EB}{\UTFK{D2EB}}%
+\DeclareUnicodeCharacter{D2EC}{\UTFK{D2EC}}%
+\DeclareUnicodeCharacter{D2ED}{\UTFK{D2ED}}%
+\DeclareUnicodeCharacter{D2EE}{\UTFK{D2EE}}%
+\DeclareUnicodeCharacter{D2EF}{\UTFK{D2EF}}%
+\DeclareUnicodeCharacter{D2F0}{\UTFK{D2F0}}%
+\DeclareUnicodeCharacter{D2F1}{\UTFK{D2F1}}%
+\DeclareUnicodeCharacter{D2F2}{\UTFK{D2F2}}%
+\DeclareUnicodeCharacter{D2F3}{\UTFK{D2F3}}%
+\DeclareUnicodeCharacter{D2F4}{\UTFK{D2F4}}%
+\DeclareUnicodeCharacter{D2F5}{\UTFK{D2F5}}%
+\DeclareUnicodeCharacter{D2F6}{\UTFK{D2F6}}%
+\DeclareUnicodeCharacter{D2F7}{\UTFK{D2F7}}%
+\DeclareUnicodeCharacter{D2F8}{\UTFK{D2F8}}%
+\DeclareUnicodeCharacter{D2F9}{\UTFK{D2F9}}%
+\DeclareUnicodeCharacter{D2FA}{\UTFK{D2FA}}%
+\DeclareUnicodeCharacter{D2FB}{\UTFK{D2FB}}%
+\DeclareUnicodeCharacter{D2FC}{\UTFK{D2FC}}%
+\DeclareUnicodeCharacter{D2FD}{\UTFK{D2FD}}%
+\DeclareUnicodeCharacter{D2FE}{\UTFK{D2FE}}%
+\DeclareUnicodeCharacter{D2FF}{\UTFK{D2FF}}%
+\DeclareUnicodeCharacter{D300}{\UTFK{D300}}%
+\DeclareUnicodeCharacter{D301}{\UTFK{D301}}%
+\DeclareUnicodeCharacter{D302}{\UTFK{D302}}%
+\DeclareUnicodeCharacter{D303}{\UTFK{D303}}%
+\DeclareUnicodeCharacter{D304}{\UTFK{D304}}%
+\DeclareUnicodeCharacter{D305}{\UTFK{D305}}%
+\DeclareUnicodeCharacter{D306}{\UTFK{D306}}%
+\DeclareUnicodeCharacter{D307}{\UTFK{D307}}%
+\DeclareUnicodeCharacter{D308}{\UTFK{D308}}%
+\DeclareUnicodeCharacter{D309}{\UTFK{D309}}%
+\DeclareUnicodeCharacter{D30A}{\UTFK{D30A}}%
+\DeclareUnicodeCharacter{D30B}{\UTFK{D30B}}%
+\DeclareUnicodeCharacter{D30C}{\UTFK{D30C}}%
+\DeclareUnicodeCharacter{D30D}{\UTFK{D30D}}%
+\DeclareUnicodeCharacter{D30E}{\UTFK{D30E}}%
+\DeclareUnicodeCharacter{D30F}{\UTFK{D30F}}%
+\DeclareUnicodeCharacter{D310}{\UTFK{D310}}%
+\DeclareUnicodeCharacter{D311}{\UTFK{D311}}%
+\DeclareUnicodeCharacter{D312}{\UTFK{D312}}%
+\DeclareUnicodeCharacter{D313}{\UTFK{D313}}%
+\DeclareUnicodeCharacter{D314}{\UTFK{D314}}%
+\DeclareUnicodeCharacter{D315}{\UTFK{D315}}%
+\DeclareUnicodeCharacter{D316}{\UTFK{D316}}%
+\DeclareUnicodeCharacter{D317}{\UTFK{D317}}%
+\DeclareUnicodeCharacter{D318}{\UTFK{D318}}%
+\DeclareUnicodeCharacter{D319}{\UTFK{D319}}%
+\DeclareUnicodeCharacter{D31A}{\UTFK{D31A}}%
+\DeclareUnicodeCharacter{D31B}{\UTFK{D31B}}%
+\DeclareUnicodeCharacter{D31C}{\UTFK{D31C}}%
+\DeclareUnicodeCharacter{D31D}{\UTFK{D31D}}%
+\DeclareUnicodeCharacter{D31E}{\UTFK{D31E}}%
+\DeclareUnicodeCharacter{D31F}{\UTFK{D31F}}%
+\DeclareUnicodeCharacter{D320}{\UTFK{D320}}%
+\DeclareUnicodeCharacter{D321}{\UTFK{D321}}%
+\DeclareUnicodeCharacter{D322}{\UTFK{D322}}%
+\DeclareUnicodeCharacter{D323}{\UTFK{D323}}%
+\DeclareUnicodeCharacter{D324}{\UTFK{D324}}%
+\DeclareUnicodeCharacter{D325}{\UTFK{D325}}%
+\DeclareUnicodeCharacter{D326}{\UTFK{D326}}%
+\DeclareUnicodeCharacter{D327}{\UTFK{D327}}%
+\DeclareUnicodeCharacter{D328}{\UTFK{D328}}%
+\DeclareUnicodeCharacter{D329}{\UTFK{D329}}%
+\DeclareUnicodeCharacter{D32A}{\UTFK{D32A}}%
+\DeclareUnicodeCharacter{D32B}{\UTFK{D32B}}%
+\DeclareUnicodeCharacter{D32C}{\UTFK{D32C}}%
+\DeclareUnicodeCharacter{D32D}{\UTFK{D32D}}%
+\DeclareUnicodeCharacter{D32E}{\UTFK{D32E}}%
+\DeclareUnicodeCharacter{D32F}{\UTFK{D32F}}%
+\DeclareUnicodeCharacter{D330}{\UTFK{D330}}%
+\DeclareUnicodeCharacter{D331}{\UTFK{D331}}%
+\DeclareUnicodeCharacter{D332}{\UTFK{D332}}%
+\DeclareUnicodeCharacter{D333}{\UTFK{D333}}%
+\DeclareUnicodeCharacter{D334}{\UTFK{D334}}%
+\DeclareUnicodeCharacter{D335}{\UTFK{D335}}%
+\DeclareUnicodeCharacter{D336}{\UTFK{D336}}%
+\DeclareUnicodeCharacter{D337}{\UTFK{D337}}%
+\DeclareUnicodeCharacter{D338}{\UTFK{D338}}%
+\DeclareUnicodeCharacter{D339}{\UTFK{D339}}%
+\DeclareUnicodeCharacter{D33A}{\UTFK{D33A}}%
+\DeclareUnicodeCharacter{D33B}{\UTFK{D33B}}%
+\DeclareUnicodeCharacter{D33C}{\UTFK{D33C}}%
+\DeclareUnicodeCharacter{D33D}{\UTFK{D33D}}%
+\DeclareUnicodeCharacter{D33E}{\UTFK{D33E}}%
+\DeclareUnicodeCharacter{D33F}{\UTFK{D33F}}%
+\DeclareUnicodeCharacter{D340}{\UTFK{D340}}%
+\DeclareUnicodeCharacter{D341}{\UTFK{D341}}%
+\DeclareUnicodeCharacter{D342}{\UTFK{D342}}%
+\DeclareUnicodeCharacter{D343}{\UTFK{D343}}%
+\DeclareUnicodeCharacter{D344}{\UTFK{D344}}%
+\DeclareUnicodeCharacter{D345}{\UTFK{D345}}%
+\DeclareUnicodeCharacter{D346}{\UTFK{D346}}%
+\DeclareUnicodeCharacter{D347}{\UTFK{D347}}%
+\DeclareUnicodeCharacter{D348}{\UTFK{D348}}%
+\DeclareUnicodeCharacter{D349}{\UTFK{D349}}%
+\DeclareUnicodeCharacter{D34A}{\UTFK{D34A}}%
+\DeclareUnicodeCharacter{D34B}{\UTFK{D34B}}%
+\DeclareUnicodeCharacter{D34C}{\UTFK{D34C}}%
+\DeclareUnicodeCharacter{D34D}{\UTFK{D34D}}%
+\DeclareUnicodeCharacter{D34E}{\UTFK{D34E}}%
+\DeclareUnicodeCharacter{D34F}{\UTFK{D34F}}%
+\DeclareUnicodeCharacter{D350}{\UTFK{D350}}%
+\DeclareUnicodeCharacter{D351}{\UTFK{D351}}%
+\DeclareUnicodeCharacter{D352}{\UTFK{D352}}%
+\DeclareUnicodeCharacter{D353}{\UTFK{D353}}%
+\DeclareUnicodeCharacter{D354}{\UTFK{D354}}%
+\DeclareUnicodeCharacter{D355}{\UTFK{D355}}%
+\DeclareUnicodeCharacter{D356}{\UTFK{D356}}%
+\DeclareUnicodeCharacter{D357}{\UTFK{D357}}%
+\DeclareUnicodeCharacter{D358}{\UTFK{D358}}%
+\DeclareUnicodeCharacter{D359}{\UTFK{D359}}%
+\DeclareUnicodeCharacter{D35A}{\UTFK{D35A}}%
+\DeclareUnicodeCharacter{D35B}{\UTFK{D35B}}%
+\DeclareUnicodeCharacter{D35C}{\UTFK{D35C}}%
+\DeclareUnicodeCharacter{D35D}{\UTFK{D35D}}%
+\DeclareUnicodeCharacter{D35E}{\UTFK{D35E}}%
+\DeclareUnicodeCharacter{D35F}{\UTFK{D35F}}%
+\DeclareUnicodeCharacter{D360}{\UTFK{D360}}%
+\DeclareUnicodeCharacter{D361}{\UTFK{D361}}%
+\DeclareUnicodeCharacter{D362}{\UTFK{D362}}%
+\DeclareUnicodeCharacter{D363}{\UTFK{D363}}%
+\DeclareUnicodeCharacter{D364}{\UTFK{D364}}%
+\DeclareUnicodeCharacter{D365}{\UTFK{D365}}%
+\DeclareUnicodeCharacter{D366}{\UTFK{D366}}%
+\DeclareUnicodeCharacter{D367}{\UTFK{D367}}%
+\DeclareUnicodeCharacter{D368}{\UTFK{D368}}%
+\DeclareUnicodeCharacter{D369}{\UTFK{D369}}%
+\DeclareUnicodeCharacter{D36A}{\UTFK{D36A}}%
+\DeclareUnicodeCharacter{D36B}{\UTFK{D36B}}%
+\DeclareUnicodeCharacter{D36C}{\UTFK{D36C}}%
+\DeclareUnicodeCharacter{D36D}{\UTFK{D36D}}%
+\DeclareUnicodeCharacter{D36E}{\UTFK{D36E}}%
+\DeclareUnicodeCharacter{D36F}{\UTFK{D36F}}%
+\DeclareUnicodeCharacter{D370}{\UTFK{D370}}%
+\DeclareUnicodeCharacter{D371}{\UTFK{D371}}%
+\DeclareUnicodeCharacter{D372}{\UTFK{D372}}%
+\DeclareUnicodeCharacter{D373}{\UTFK{D373}}%
+\DeclareUnicodeCharacter{D374}{\UTFK{D374}}%
+\DeclareUnicodeCharacter{D375}{\UTFK{D375}}%
+\DeclareUnicodeCharacter{D376}{\UTFK{D376}}%
+\DeclareUnicodeCharacter{D377}{\UTFK{D377}}%
+\DeclareUnicodeCharacter{D378}{\UTFK{D378}}%
+\DeclareUnicodeCharacter{D379}{\UTFK{D379}}%
+\DeclareUnicodeCharacter{D37A}{\UTFK{D37A}}%
+\DeclareUnicodeCharacter{D37B}{\UTFK{D37B}}%
+\DeclareUnicodeCharacter{D37C}{\UTFK{D37C}}%
+\DeclareUnicodeCharacter{D37D}{\UTFK{D37D}}%
+\DeclareUnicodeCharacter{D37E}{\UTFK{D37E}}%
+\DeclareUnicodeCharacter{D37F}{\UTFK{D37F}}%
+\DeclareUnicodeCharacter{D380}{\UTFK{D380}}%
+\DeclareUnicodeCharacter{D381}{\UTFK{D381}}%
+\DeclareUnicodeCharacter{D382}{\UTFK{D382}}%
+\DeclareUnicodeCharacter{D383}{\UTFK{D383}}%
+\DeclareUnicodeCharacter{D384}{\UTFK{D384}}%
+\DeclareUnicodeCharacter{D385}{\UTFK{D385}}%
+\DeclareUnicodeCharacter{D386}{\UTFK{D386}}%
+\DeclareUnicodeCharacter{D387}{\UTFK{D387}}%
+\DeclareUnicodeCharacter{D388}{\UTFK{D388}}%
+\DeclareUnicodeCharacter{D389}{\UTFK{D389}}%
+\DeclareUnicodeCharacter{D38A}{\UTFK{D38A}}%
+\DeclareUnicodeCharacter{D38B}{\UTFK{D38B}}%
+\DeclareUnicodeCharacter{D38C}{\UTFK{D38C}}%
+\DeclareUnicodeCharacter{D38D}{\UTFK{D38D}}%
+\DeclareUnicodeCharacter{D38E}{\UTFK{D38E}}%
+\DeclareUnicodeCharacter{D38F}{\UTFK{D38F}}%
+\DeclareUnicodeCharacter{D390}{\UTFK{D390}}%
+\DeclareUnicodeCharacter{D391}{\UTFK{D391}}%
+\DeclareUnicodeCharacter{D392}{\UTFK{D392}}%
+\DeclareUnicodeCharacter{D393}{\UTFK{D393}}%
+\DeclareUnicodeCharacter{D394}{\UTFK{D394}}%
+\DeclareUnicodeCharacter{D395}{\UTFK{D395}}%
+\DeclareUnicodeCharacter{D396}{\UTFK{D396}}%
+\DeclareUnicodeCharacter{D397}{\UTFK{D397}}%
+\DeclareUnicodeCharacter{D398}{\UTFK{D398}}%
+\DeclareUnicodeCharacter{D399}{\UTFK{D399}}%
+\DeclareUnicodeCharacter{D39A}{\UTFK{D39A}}%
+\DeclareUnicodeCharacter{D39B}{\UTFK{D39B}}%
+\DeclareUnicodeCharacter{D39C}{\UTFK{D39C}}%
+\DeclareUnicodeCharacter{D39D}{\UTFK{D39D}}%
+\DeclareUnicodeCharacter{D39E}{\UTFK{D39E}}%
+\DeclareUnicodeCharacter{D39F}{\UTFK{D39F}}%
+\DeclareUnicodeCharacter{D3A0}{\UTFK{D3A0}}%
+\DeclareUnicodeCharacter{D3A1}{\UTFK{D3A1}}%
+\DeclareUnicodeCharacter{D3A2}{\UTFK{D3A2}}%
+\DeclareUnicodeCharacter{D3A3}{\UTFK{D3A3}}%
+\DeclareUnicodeCharacter{D3A4}{\UTFK{D3A4}}%
+\DeclareUnicodeCharacter{D3A5}{\UTFK{D3A5}}%
+\DeclareUnicodeCharacter{D3A6}{\UTFK{D3A6}}%
+\DeclareUnicodeCharacter{D3A7}{\UTFK{D3A7}}%
+\DeclareUnicodeCharacter{D3A8}{\UTFK{D3A8}}%
+\DeclareUnicodeCharacter{D3A9}{\UTFK{D3A9}}%
+\DeclareUnicodeCharacter{D3AA}{\UTFK{D3AA}}%
+\DeclareUnicodeCharacter{D3AB}{\UTFK{D3AB}}%
+\DeclareUnicodeCharacter{D3AC}{\UTFK{D3AC}}%
+\DeclareUnicodeCharacter{D3AD}{\UTFK{D3AD}}%
+\DeclareUnicodeCharacter{D3AE}{\UTFK{D3AE}}%
+\DeclareUnicodeCharacter{D3AF}{\UTFK{D3AF}}%
+\DeclareUnicodeCharacter{D3B0}{\UTFK{D3B0}}%
+\DeclareUnicodeCharacter{D3B1}{\UTFK{D3B1}}%
+\DeclareUnicodeCharacter{D3B2}{\UTFK{D3B2}}%
+\DeclareUnicodeCharacter{D3B3}{\UTFK{D3B3}}%
+\DeclareUnicodeCharacter{D3B4}{\UTFK{D3B4}}%
+\DeclareUnicodeCharacter{D3B5}{\UTFK{D3B5}}%
+\DeclareUnicodeCharacter{D3B6}{\UTFK{D3B6}}%
+\DeclareUnicodeCharacter{D3B7}{\UTFK{D3B7}}%
+\DeclareUnicodeCharacter{D3B8}{\UTFK{D3B8}}%
+\DeclareUnicodeCharacter{D3B9}{\UTFK{D3B9}}%
+\DeclareUnicodeCharacter{D3BA}{\UTFK{D3BA}}%
+\DeclareUnicodeCharacter{D3BB}{\UTFK{D3BB}}%
+\DeclareUnicodeCharacter{D3BC}{\UTFK{D3BC}}%
+\DeclareUnicodeCharacter{D3BD}{\UTFK{D3BD}}%
+\DeclareUnicodeCharacter{D3BE}{\UTFK{D3BE}}%
+\DeclareUnicodeCharacter{D3BF}{\UTFK{D3BF}}%
+\DeclareUnicodeCharacter{D3C0}{\UTFK{D3C0}}%
+\DeclareUnicodeCharacter{D3C1}{\UTFK{D3C1}}%
+\DeclareUnicodeCharacter{D3C2}{\UTFK{D3C2}}%
+\DeclareUnicodeCharacter{D3C3}{\UTFK{D3C3}}%
+\DeclareUnicodeCharacter{D3C4}{\UTFK{D3C4}}%
+\DeclareUnicodeCharacter{D3C5}{\UTFK{D3C5}}%
+\DeclareUnicodeCharacter{D3C6}{\UTFK{D3C6}}%
+\DeclareUnicodeCharacter{D3C7}{\UTFK{D3C7}}%
+\DeclareUnicodeCharacter{D3C8}{\UTFK{D3C8}}%
+\DeclareUnicodeCharacter{D3C9}{\UTFK{D3C9}}%
+\DeclareUnicodeCharacter{D3CA}{\UTFK{D3CA}}%
+\DeclareUnicodeCharacter{D3CB}{\UTFK{D3CB}}%
+\DeclareUnicodeCharacter{D3CC}{\UTFK{D3CC}}%
+\DeclareUnicodeCharacter{D3CD}{\UTFK{D3CD}}%
+\DeclareUnicodeCharacter{D3CE}{\UTFK{D3CE}}%
+\DeclareUnicodeCharacter{D3CF}{\UTFK{D3CF}}%
+\DeclareUnicodeCharacter{D3D0}{\UTFK{D3D0}}%
+\DeclareUnicodeCharacter{D3D1}{\UTFK{D3D1}}%
+\DeclareUnicodeCharacter{D3D2}{\UTFK{D3D2}}%
+\DeclareUnicodeCharacter{D3D3}{\UTFK{D3D3}}%
+\DeclareUnicodeCharacter{D3D4}{\UTFK{D3D4}}%
+\DeclareUnicodeCharacter{D3D5}{\UTFK{D3D5}}%
+\DeclareUnicodeCharacter{D3D6}{\UTFK{D3D6}}%
+\DeclareUnicodeCharacter{D3D7}{\UTFK{D3D7}}%
+\DeclareUnicodeCharacter{D3D8}{\UTFK{D3D8}}%
+\DeclareUnicodeCharacter{D3D9}{\UTFK{D3D9}}%
+\DeclareUnicodeCharacter{D3DA}{\UTFK{D3DA}}%
+\DeclareUnicodeCharacter{D3DB}{\UTFK{D3DB}}%
+\DeclareUnicodeCharacter{D3DC}{\UTFK{D3DC}}%
+\DeclareUnicodeCharacter{D3DD}{\UTFK{D3DD}}%
+\DeclareUnicodeCharacter{D3DE}{\UTFK{D3DE}}%
+\DeclareUnicodeCharacter{D3DF}{\UTFK{D3DF}}%
+\DeclareUnicodeCharacter{D3E0}{\UTFK{D3E0}}%
+\DeclareUnicodeCharacter{D3E1}{\UTFK{D3E1}}%
+\DeclareUnicodeCharacter{D3E2}{\UTFK{D3E2}}%
+\DeclareUnicodeCharacter{D3E3}{\UTFK{D3E3}}%
+\DeclareUnicodeCharacter{D3E4}{\UTFK{D3E4}}%
+\DeclareUnicodeCharacter{D3E5}{\UTFK{D3E5}}%
+\DeclareUnicodeCharacter{D3E6}{\UTFK{D3E6}}%
+\DeclareUnicodeCharacter{D3E7}{\UTFK{D3E7}}%
+\DeclareUnicodeCharacter{D3E8}{\UTFK{D3E8}}%
+\DeclareUnicodeCharacter{D3E9}{\UTFK{D3E9}}%
+\DeclareUnicodeCharacter{D3EA}{\UTFK{D3EA}}%
+\DeclareUnicodeCharacter{D3EB}{\UTFK{D3EB}}%
+\DeclareUnicodeCharacter{D3EC}{\UTFK{D3EC}}%
+\DeclareUnicodeCharacter{D3ED}{\UTFK{D3ED}}%
+\DeclareUnicodeCharacter{D3EE}{\UTFK{D3EE}}%
+\DeclareUnicodeCharacter{D3EF}{\UTFK{D3EF}}%
+\DeclareUnicodeCharacter{D3F0}{\UTFK{D3F0}}%
+\DeclareUnicodeCharacter{D3F1}{\UTFK{D3F1}}%
+\DeclareUnicodeCharacter{D3F2}{\UTFK{D3F2}}%
+\DeclareUnicodeCharacter{D3F3}{\UTFK{D3F3}}%
+\DeclareUnicodeCharacter{D3F4}{\UTFK{D3F4}}%
+\DeclareUnicodeCharacter{D3F5}{\UTFK{D3F5}}%
+\DeclareUnicodeCharacter{D3F6}{\UTFK{D3F6}}%
+\DeclareUnicodeCharacter{D3F7}{\UTFK{D3F7}}%
+\DeclareUnicodeCharacter{D3F8}{\UTFK{D3F8}}%
+\DeclareUnicodeCharacter{D3F9}{\UTFK{D3F9}}%
+\DeclareUnicodeCharacter{D3FA}{\UTFK{D3FA}}%
+\DeclareUnicodeCharacter{D3FB}{\UTFK{D3FB}}%
+\DeclareUnicodeCharacter{D3FC}{\UTFK{D3FC}}%
+\DeclareUnicodeCharacter{D3FD}{\UTFK{D3FD}}%
+\DeclareUnicodeCharacter{D3FE}{\UTFK{D3FE}}%
+\DeclareUnicodeCharacter{D3FF}{\UTFK{D3FF}}%
+\DeclareUnicodeCharacter{D400}{\UTFK{D400}}%
+\DeclareUnicodeCharacter{D401}{\UTFK{D401}}%
+\DeclareUnicodeCharacter{D402}{\UTFK{D402}}%
+\DeclareUnicodeCharacter{D403}{\UTFK{D403}}%
+\DeclareUnicodeCharacter{D404}{\UTFK{D404}}%
+\DeclareUnicodeCharacter{D405}{\UTFK{D405}}%
+\DeclareUnicodeCharacter{D406}{\UTFK{D406}}%
+\DeclareUnicodeCharacter{D407}{\UTFK{D407}}%
+\DeclareUnicodeCharacter{D408}{\UTFK{D408}}%
+\DeclareUnicodeCharacter{D409}{\UTFK{D409}}%
+\DeclareUnicodeCharacter{D40A}{\UTFK{D40A}}%
+\DeclareUnicodeCharacter{D40B}{\UTFK{D40B}}%
+\DeclareUnicodeCharacter{D40C}{\UTFK{D40C}}%
+\DeclareUnicodeCharacter{D40D}{\UTFK{D40D}}%
+\DeclareUnicodeCharacter{D40E}{\UTFK{D40E}}%
+\DeclareUnicodeCharacter{D40F}{\UTFK{D40F}}%
+\DeclareUnicodeCharacter{D410}{\UTFK{D410}}%
+\DeclareUnicodeCharacter{D411}{\UTFK{D411}}%
+\DeclareUnicodeCharacter{D412}{\UTFK{D412}}%
+\DeclareUnicodeCharacter{D413}{\UTFK{D413}}%
+\DeclareUnicodeCharacter{D414}{\UTFK{D414}}%
+\DeclareUnicodeCharacter{D415}{\UTFK{D415}}%
+\DeclareUnicodeCharacter{D416}{\UTFK{D416}}%
+\DeclareUnicodeCharacter{D417}{\UTFK{D417}}%
+\DeclareUnicodeCharacter{D418}{\UTFK{D418}}%
+\DeclareUnicodeCharacter{D419}{\UTFK{D419}}%
+\DeclareUnicodeCharacter{D41A}{\UTFK{D41A}}%
+\DeclareUnicodeCharacter{D41B}{\UTFK{D41B}}%
+\DeclareUnicodeCharacter{D41C}{\UTFK{D41C}}%
+\DeclareUnicodeCharacter{D41D}{\UTFK{D41D}}%
+\DeclareUnicodeCharacter{D41E}{\UTFK{D41E}}%
+\DeclareUnicodeCharacter{D41F}{\UTFK{D41F}}%
+\DeclareUnicodeCharacter{D420}{\UTFK{D420}}%
+\DeclareUnicodeCharacter{D421}{\UTFK{D421}}%
+\DeclareUnicodeCharacter{D422}{\UTFK{D422}}%
+\DeclareUnicodeCharacter{D423}{\UTFK{D423}}%
+\DeclareUnicodeCharacter{D424}{\UTFK{D424}}%
+\DeclareUnicodeCharacter{D425}{\UTFK{D425}}%
+\DeclareUnicodeCharacter{D426}{\UTFK{D426}}%
+\DeclareUnicodeCharacter{D427}{\UTFK{D427}}%
+\DeclareUnicodeCharacter{D428}{\UTFK{D428}}%
+\DeclareUnicodeCharacter{D429}{\UTFK{D429}}%
+\DeclareUnicodeCharacter{D42A}{\UTFK{D42A}}%
+\DeclareUnicodeCharacter{D42B}{\UTFK{D42B}}%
+\DeclareUnicodeCharacter{D42C}{\UTFK{D42C}}%
+\DeclareUnicodeCharacter{D42D}{\UTFK{D42D}}%
+\DeclareUnicodeCharacter{D42E}{\UTFK{D42E}}%
+\DeclareUnicodeCharacter{D42F}{\UTFK{D42F}}%
+\DeclareUnicodeCharacter{D430}{\UTFK{D430}}%
+\DeclareUnicodeCharacter{D431}{\UTFK{D431}}%
+\DeclareUnicodeCharacter{D432}{\UTFK{D432}}%
+\DeclareUnicodeCharacter{D433}{\UTFK{D433}}%
+\DeclareUnicodeCharacter{D434}{\UTFK{D434}}%
+\DeclareUnicodeCharacter{D435}{\UTFK{D435}}%
+\DeclareUnicodeCharacter{D436}{\UTFK{D436}}%
+\DeclareUnicodeCharacter{D437}{\UTFK{D437}}%
+\DeclareUnicodeCharacter{D438}{\UTFK{D438}}%
+\DeclareUnicodeCharacter{D439}{\UTFK{D439}}%
+\DeclareUnicodeCharacter{D43A}{\UTFK{D43A}}%
+\DeclareUnicodeCharacter{D43B}{\UTFK{D43B}}%
+\DeclareUnicodeCharacter{D43C}{\UTFK{D43C}}%
+\DeclareUnicodeCharacter{D43D}{\UTFK{D43D}}%
+\DeclareUnicodeCharacter{D43E}{\UTFK{D43E}}%
+\DeclareUnicodeCharacter{D43F}{\UTFK{D43F}}%
+\DeclareUnicodeCharacter{D440}{\UTFK{D440}}%
+\DeclareUnicodeCharacter{D441}{\UTFK{D441}}%
+\DeclareUnicodeCharacter{D442}{\UTFK{D442}}%
+\DeclareUnicodeCharacter{D443}{\UTFK{D443}}%
+\DeclareUnicodeCharacter{D444}{\UTFK{D444}}%
+\DeclareUnicodeCharacter{D445}{\UTFK{D445}}%
+\DeclareUnicodeCharacter{D446}{\UTFK{D446}}%
+\DeclareUnicodeCharacter{D447}{\UTFK{D447}}%
+\DeclareUnicodeCharacter{D448}{\UTFK{D448}}%
+\DeclareUnicodeCharacter{D449}{\UTFK{D449}}%
+\DeclareUnicodeCharacter{D44A}{\UTFK{D44A}}%
+\DeclareUnicodeCharacter{D44B}{\UTFK{D44B}}%
+\DeclareUnicodeCharacter{D44C}{\UTFK{D44C}}%
+\DeclareUnicodeCharacter{D44D}{\UTFK{D44D}}%
+\DeclareUnicodeCharacter{D44E}{\UTFK{D44E}}%
+\DeclareUnicodeCharacter{D44F}{\UTFK{D44F}}%
+\DeclareUnicodeCharacter{D450}{\UTFK{D450}}%
+\DeclareUnicodeCharacter{D451}{\UTFK{D451}}%
+\DeclareUnicodeCharacter{D452}{\UTFK{D452}}%
+\DeclareUnicodeCharacter{D453}{\UTFK{D453}}%
+\DeclareUnicodeCharacter{D454}{\UTFK{D454}}%
+\DeclareUnicodeCharacter{D455}{\UTFK{D455}}%
+\DeclareUnicodeCharacter{D456}{\UTFK{D456}}%
+\DeclareUnicodeCharacter{D457}{\UTFK{D457}}%
+\DeclareUnicodeCharacter{D458}{\UTFK{D458}}%
+\DeclareUnicodeCharacter{D459}{\UTFK{D459}}%
+\DeclareUnicodeCharacter{D45A}{\UTFK{D45A}}%
+\DeclareUnicodeCharacter{D45B}{\UTFK{D45B}}%
+\DeclareUnicodeCharacter{D45C}{\UTFK{D45C}}%
+\DeclareUnicodeCharacter{D45D}{\UTFK{D45D}}%
+\DeclareUnicodeCharacter{D45E}{\UTFK{D45E}}%
+\DeclareUnicodeCharacter{D45F}{\UTFK{D45F}}%
+\DeclareUnicodeCharacter{D460}{\UTFK{D460}}%
+\DeclareUnicodeCharacter{D461}{\UTFK{D461}}%
+\DeclareUnicodeCharacter{D462}{\UTFK{D462}}%
+\DeclareUnicodeCharacter{D463}{\UTFK{D463}}%
+\DeclareUnicodeCharacter{D464}{\UTFK{D464}}%
+\DeclareUnicodeCharacter{D465}{\UTFK{D465}}%
+\DeclareUnicodeCharacter{D466}{\UTFK{D466}}%
+\DeclareUnicodeCharacter{D467}{\UTFK{D467}}%
+\DeclareUnicodeCharacter{D468}{\UTFK{D468}}%
+\DeclareUnicodeCharacter{D469}{\UTFK{D469}}%
+\DeclareUnicodeCharacter{D46A}{\UTFK{D46A}}%
+\DeclareUnicodeCharacter{D46B}{\UTFK{D46B}}%
+\DeclareUnicodeCharacter{D46C}{\UTFK{D46C}}%
+\DeclareUnicodeCharacter{D46D}{\UTFK{D46D}}%
+\DeclareUnicodeCharacter{D46E}{\UTFK{D46E}}%
+\DeclareUnicodeCharacter{D46F}{\UTFK{D46F}}%
+\DeclareUnicodeCharacter{D470}{\UTFK{D470}}%
+\DeclareUnicodeCharacter{D471}{\UTFK{D471}}%
+\DeclareUnicodeCharacter{D472}{\UTFK{D472}}%
+\DeclareUnicodeCharacter{D473}{\UTFK{D473}}%
+\DeclareUnicodeCharacter{D474}{\UTFK{D474}}%
+\DeclareUnicodeCharacter{D475}{\UTFK{D475}}%
+\DeclareUnicodeCharacter{D476}{\UTFK{D476}}%
+\DeclareUnicodeCharacter{D477}{\UTFK{D477}}%
+\DeclareUnicodeCharacter{D478}{\UTFK{D478}}%
+\DeclareUnicodeCharacter{D479}{\UTFK{D479}}%
+\DeclareUnicodeCharacter{D47A}{\UTFK{D47A}}%
+\DeclareUnicodeCharacter{D47B}{\UTFK{D47B}}%
+\DeclareUnicodeCharacter{D47C}{\UTFK{D47C}}%
+\DeclareUnicodeCharacter{D47D}{\UTFK{D47D}}%
+\DeclareUnicodeCharacter{D47E}{\UTFK{D47E}}%
+\DeclareUnicodeCharacter{D47F}{\UTFK{D47F}}%
+\DeclareUnicodeCharacter{D480}{\UTFK{D480}}%
+\DeclareUnicodeCharacter{D481}{\UTFK{D481}}%
+\DeclareUnicodeCharacter{D482}{\UTFK{D482}}%
+\DeclareUnicodeCharacter{D483}{\UTFK{D483}}%
+\DeclareUnicodeCharacter{D484}{\UTFK{D484}}%
+\DeclareUnicodeCharacter{D485}{\UTFK{D485}}%
+\DeclareUnicodeCharacter{D486}{\UTFK{D486}}%
+\DeclareUnicodeCharacter{D487}{\UTFK{D487}}%
+\DeclareUnicodeCharacter{D488}{\UTFK{D488}}%
+\DeclareUnicodeCharacter{D489}{\UTFK{D489}}%
+\DeclareUnicodeCharacter{D48A}{\UTFK{D48A}}%
+\DeclareUnicodeCharacter{D48B}{\UTFK{D48B}}%
+\DeclareUnicodeCharacter{D48C}{\UTFK{D48C}}%
+\DeclareUnicodeCharacter{D48D}{\UTFK{D48D}}%
+\DeclareUnicodeCharacter{D48E}{\UTFK{D48E}}%
+\DeclareUnicodeCharacter{D48F}{\UTFK{D48F}}%
+\DeclareUnicodeCharacter{D490}{\UTFK{D490}}%
+\DeclareUnicodeCharacter{D491}{\UTFK{D491}}%
+\DeclareUnicodeCharacter{D492}{\UTFK{D492}}%
+\DeclareUnicodeCharacter{D493}{\UTFK{D493}}%
+\DeclareUnicodeCharacter{D494}{\UTFK{D494}}%
+\DeclareUnicodeCharacter{D495}{\UTFK{D495}}%
+\DeclareUnicodeCharacter{D496}{\UTFK{D496}}%
+\DeclareUnicodeCharacter{D497}{\UTFK{D497}}%
+\DeclareUnicodeCharacter{D498}{\UTFK{D498}}%
+\DeclareUnicodeCharacter{D499}{\UTFK{D499}}%
+\DeclareUnicodeCharacter{D49A}{\UTFK{D49A}}%
+\DeclareUnicodeCharacter{D49B}{\UTFK{D49B}}%
+\DeclareUnicodeCharacter{D49C}{\UTFK{D49C}}%
+\DeclareUnicodeCharacter{D49D}{\UTFK{D49D}}%
+\DeclareUnicodeCharacter{D49E}{\UTFK{D49E}}%
+\DeclareUnicodeCharacter{D49F}{\UTFK{D49F}}%
+\DeclareUnicodeCharacter{D4A0}{\UTFK{D4A0}}%
+\DeclareUnicodeCharacter{D4A1}{\UTFK{D4A1}}%
+\DeclareUnicodeCharacter{D4A2}{\UTFK{D4A2}}%
+\DeclareUnicodeCharacter{D4A3}{\UTFK{D4A3}}%
+\DeclareUnicodeCharacter{D4A4}{\UTFK{D4A4}}%
+\DeclareUnicodeCharacter{D4A5}{\UTFK{D4A5}}%
+\DeclareUnicodeCharacter{D4A6}{\UTFK{D4A6}}%
+\DeclareUnicodeCharacter{D4A7}{\UTFK{D4A7}}%
+\DeclareUnicodeCharacter{D4A8}{\UTFK{D4A8}}%
+\DeclareUnicodeCharacter{D4A9}{\UTFK{D4A9}}%
+\DeclareUnicodeCharacter{D4AA}{\UTFK{D4AA}}%
+\DeclareUnicodeCharacter{D4AB}{\UTFK{D4AB}}%
+\DeclareUnicodeCharacter{D4AC}{\UTFK{D4AC}}%
+\DeclareUnicodeCharacter{D4AD}{\UTFK{D4AD}}%
+\DeclareUnicodeCharacter{D4AE}{\UTFK{D4AE}}%
+\DeclareUnicodeCharacter{D4AF}{\UTFK{D4AF}}%
+\DeclareUnicodeCharacter{D4B0}{\UTFK{D4B0}}%
+\DeclareUnicodeCharacter{D4B1}{\UTFK{D4B1}}%
+\DeclareUnicodeCharacter{D4B2}{\UTFK{D4B2}}%
+\DeclareUnicodeCharacter{D4B3}{\UTFK{D4B3}}%
+\DeclareUnicodeCharacter{D4B4}{\UTFK{D4B4}}%
+\DeclareUnicodeCharacter{D4B5}{\UTFK{D4B5}}%
+\DeclareUnicodeCharacter{D4B6}{\UTFK{D4B6}}%
+\DeclareUnicodeCharacter{D4B7}{\UTFK{D4B7}}%
+\DeclareUnicodeCharacter{D4B8}{\UTFK{D4B8}}%
+\DeclareUnicodeCharacter{D4B9}{\UTFK{D4B9}}%
+\DeclareUnicodeCharacter{D4BA}{\UTFK{D4BA}}%
+\DeclareUnicodeCharacter{D4BB}{\UTFK{D4BB}}%
+\DeclareUnicodeCharacter{D4BC}{\UTFK{D4BC}}%
+\DeclareUnicodeCharacter{D4BD}{\UTFK{D4BD}}%
+\DeclareUnicodeCharacter{D4BE}{\UTFK{D4BE}}%
+\DeclareUnicodeCharacter{D4BF}{\UTFK{D4BF}}%
+\DeclareUnicodeCharacter{D4C0}{\UTFK{D4C0}}%
+\DeclareUnicodeCharacter{D4C1}{\UTFK{D4C1}}%
+\DeclareUnicodeCharacter{D4C2}{\UTFK{D4C2}}%
+\DeclareUnicodeCharacter{D4C3}{\UTFK{D4C3}}%
+\DeclareUnicodeCharacter{D4C4}{\UTFK{D4C4}}%
+\DeclareUnicodeCharacter{D4C5}{\UTFK{D4C5}}%
+\DeclareUnicodeCharacter{D4C6}{\UTFK{D4C6}}%
+\DeclareUnicodeCharacter{D4C7}{\UTFK{D4C7}}%
+\DeclareUnicodeCharacter{D4C8}{\UTFK{D4C8}}%
+\DeclareUnicodeCharacter{D4C9}{\UTFK{D4C9}}%
+\DeclareUnicodeCharacter{D4CA}{\UTFK{D4CA}}%
+\DeclareUnicodeCharacter{D4CB}{\UTFK{D4CB}}%
+\DeclareUnicodeCharacter{D4CC}{\UTFK{D4CC}}%
+\DeclareUnicodeCharacter{D4CD}{\UTFK{D4CD}}%
+\DeclareUnicodeCharacter{D4CE}{\UTFK{D4CE}}%
+\DeclareUnicodeCharacter{D4CF}{\UTFK{D4CF}}%
+\DeclareUnicodeCharacter{D4D0}{\UTFK{D4D0}}%
+\DeclareUnicodeCharacter{D4D1}{\UTFK{D4D1}}%
+\DeclareUnicodeCharacter{D4D2}{\UTFK{D4D2}}%
+\DeclareUnicodeCharacter{D4D3}{\UTFK{D4D3}}%
+\DeclareUnicodeCharacter{D4D4}{\UTFK{D4D4}}%
+\DeclareUnicodeCharacter{D4D5}{\UTFK{D4D5}}%
+\DeclareUnicodeCharacter{D4D6}{\UTFK{D4D6}}%
+\DeclareUnicodeCharacter{D4D7}{\UTFK{D4D7}}%
+\DeclareUnicodeCharacter{D4D8}{\UTFK{D4D8}}%
+\DeclareUnicodeCharacter{D4D9}{\UTFK{D4D9}}%
+\DeclareUnicodeCharacter{D4DA}{\UTFK{D4DA}}%
+\DeclareUnicodeCharacter{D4DB}{\UTFK{D4DB}}%
+\DeclareUnicodeCharacter{D4DC}{\UTFK{D4DC}}%
+\DeclareUnicodeCharacter{D4DD}{\UTFK{D4DD}}%
+\DeclareUnicodeCharacter{D4DE}{\UTFK{D4DE}}%
+\DeclareUnicodeCharacter{D4DF}{\UTFK{D4DF}}%
+\DeclareUnicodeCharacter{D4E0}{\UTFK{D4E0}}%
+\DeclareUnicodeCharacter{D4E1}{\UTFK{D4E1}}%
+\DeclareUnicodeCharacter{D4E2}{\UTFK{D4E2}}%
+\DeclareUnicodeCharacter{D4E3}{\UTFK{D4E3}}%
+\DeclareUnicodeCharacter{D4E4}{\UTFK{D4E4}}%
+\DeclareUnicodeCharacter{D4E5}{\UTFK{D4E5}}%
+\DeclareUnicodeCharacter{D4E6}{\UTFK{D4E6}}%
+\DeclareUnicodeCharacter{D4E7}{\UTFK{D4E7}}%
+\DeclareUnicodeCharacter{D4E8}{\UTFK{D4E8}}%
+\DeclareUnicodeCharacter{D4E9}{\UTFK{D4E9}}%
+\DeclareUnicodeCharacter{D4EA}{\UTFK{D4EA}}%
+\DeclareUnicodeCharacter{D4EB}{\UTFK{D4EB}}%
+\DeclareUnicodeCharacter{D4EC}{\UTFK{D4EC}}%
+\DeclareUnicodeCharacter{D4ED}{\UTFK{D4ED}}%
+\DeclareUnicodeCharacter{D4EE}{\UTFK{D4EE}}%
+\DeclareUnicodeCharacter{D4EF}{\UTFK{D4EF}}%
+\DeclareUnicodeCharacter{D4F0}{\UTFK{D4F0}}%
+\DeclareUnicodeCharacter{D4F1}{\UTFK{D4F1}}%
+\DeclareUnicodeCharacter{D4F2}{\UTFK{D4F2}}%
+\DeclareUnicodeCharacter{D4F3}{\UTFK{D4F3}}%
+\DeclareUnicodeCharacter{D4F4}{\UTFK{D4F4}}%
+\DeclareUnicodeCharacter{D4F5}{\UTFK{D4F5}}%
+\DeclareUnicodeCharacter{D4F6}{\UTFK{D4F6}}%
+\DeclareUnicodeCharacter{D4F7}{\UTFK{D4F7}}%
+\DeclareUnicodeCharacter{D4F8}{\UTFK{D4F8}}%
+\DeclareUnicodeCharacter{D4F9}{\UTFK{D4F9}}%
+\DeclareUnicodeCharacter{D4FA}{\UTFK{D4FA}}%
+\DeclareUnicodeCharacter{D4FB}{\UTFK{D4FB}}%
+\DeclareUnicodeCharacter{D4FC}{\UTFK{D4FC}}%
+\DeclareUnicodeCharacter{D4FD}{\UTFK{D4FD}}%
+\DeclareUnicodeCharacter{D4FE}{\UTFK{D4FE}}%
+\DeclareUnicodeCharacter{D4FF}{\UTFK{D4FF}}%
+\DeclareUnicodeCharacter{D500}{\UTFK{D500}}%
+\DeclareUnicodeCharacter{D501}{\UTFK{D501}}%
+\DeclareUnicodeCharacter{D502}{\UTFK{D502}}%
+\DeclareUnicodeCharacter{D503}{\UTFK{D503}}%
+\DeclareUnicodeCharacter{D504}{\UTFK{D504}}%
+\DeclareUnicodeCharacter{D505}{\UTFK{D505}}%
+\DeclareUnicodeCharacter{D506}{\UTFK{D506}}%
+\DeclareUnicodeCharacter{D507}{\UTFK{D507}}%
+\DeclareUnicodeCharacter{D508}{\UTFK{D508}}%
+\DeclareUnicodeCharacter{D509}{\UTFK{D509}}%
+\DeclareUnicodeCharacter{D50A}{\UTFK{D50A}}%
+\DeclareUnicodeCharacter{D50B}{\UTFK{D50B}}%
+\DeclareUnicodeCharacter{D50C}{\UTFK{D50C}}%
+\DeclareUnicodeCharacter{D50D}{\UTFK{D50D}}%
+\DeclareUnicodeCharacter{D50E}{\UTFK{D50E}}%
+\DeclareUnicodeCharacter{D50F}{\UTFK{D50F}}%
+\DeclareUnicodeCharacter{D510}{\UTFK{D510}}%
+\DeclareUnicodeCharacter{D511}{\UTFK{D511}}%
+\DeclareUnicodeCharacter{D512}{\UTFK{D512}}%
+\DeclareUnicodeCharacter{D513}{\UTFK{D513}}%
+\DeclareUnicodeCharacter{D514}{\UTFK{D514}}%
+\DeclareUnicodeCharacter{D515}{\UTFK{D515}}%
+\DeclareUnicodeCharacter{D516}{\UTFK{D516}}%
+\DeclareUnicodeCharacter{D517}{\UTFK{D517}}%
+\DeclareUnicodeCharacter{D518}{\UTFK{D518}}%
+\DeclareUnicodeCharacter{D519}{\UTFK{D519}}%
+\DeclareUnicodeCharacter{D51A}{\UTFK{D51A}}%
+\DeclareUnicodeCharacter{D51B}{\UTFK{D51B}}%
+\DeclareUnicodeCharacter{D51C}{\UTFK{D51C}}%
+\DeclareUnicodeCharacter{D51D}{\UTFK{D51D}}%
+\DeclareUnicodeCharacter{D51E}{\UTFK{D51E}}%
+\DeclareUnicodeCharacter{D51F}{\UTFK{D51F}}%
+\DeclareUnicodeCharacter{D520}{\UTFK{D520}}%
+\DeclareUnicodeCharacter{D521}{\UTFK{D521}}%
+\DeclareUnicodeCharacter{D522}{\UTFK{D522}}%
+\DeclareUnicodeCharacter{D523}{\UTFK{D523}}%
+\DeclareUnicodeCharacter{D524}{\UTFK{D524}}%
+\DeclareUnicodeCharacter{D525}{\UTFK{D525}}%
+\DeclareUnicodeCharacter{D526}{\UTFK{D526}}%
+\DeclareUnicodeCharacter{D527}{\UTFK{D527}}%
+\DeclareUnicodeCharacter{D528}{\UTFK{D528}}%
+\DeclareUnicodeCharacter{D529}{\UTFK{D529}}%
+\DeclareUnicodeCharacter{D52A}{\UTFK{D52A}}%
+\DeclareUnicodeCharacter{D52B}{\UTFK{D52B}}%
+\DeclareUnicodeCharacter{D52C}{\UTFK{D52C}}%
+\DeclareUnicodeCharacter{D52D}{\UTFK{D52D}}%
+\DeclareUnicodeCharacter{D52E}{\UTFK{D52E}}%
+\DeclareUnicodeCharacter{D52F}{\UTFK{D52F}}%
+\DeclareUnicodeCharacter{D530}{\UTFK{D530}}%
+\DeclareUnicodeCharacter{D531}{\UTFK{D531}}%
+\DeclareUnicodeCharacter{D532}{\UTFK{D532}}%
+\DeclareUnicodeCharacter{D533}{\UTFK{D533}}%
+\DeclareUnicodeCharacter{D534}{\UTFK{D534}}%
+\DeclareUnicodeCharacter{D535}{\UTFK{D535}}%
+\DeclareUnicodeCharacter{D536}{\UTFK{D536}}%
+\DeclareUnicodeCharacter{D537}{\UTFK{D537}}%
+\DeclareUnicodeCharacter{D538}{\UTFK{D538}}%
+\DeclareUnicodeCharacter{D539}{\UTFK{D539}}%
+\DeclareUnicodeCharacter{D53A}{\UTFK{D53A}}%
+\DeclareUnicodeCharacter{D53B}{\UTFK{D53B}}%
+\DeclareUnicodeCharacter{D53C}{\UTFK{D53C}}%
+\DeclareUnicodeCharacter{D53D}{\UTFK{D53D}}%
+\DeclareUnicodeCharacter{D53E}{\UTFK{D53E}}%
+\DeclareUnicodeCharacter{D53F}{\UTFK{D53F}}%
+\DeclareUnicodeCharacter{D540}{\UTFK{D540}}%
+\DeclareUnicodeCharacter{D541}{\UTFK{D541}}%
+\DeclareUnicodeCharacter{D542}{\UTFK{D542}}%
+\DeclareUnicodeCharacter{D543}{\UTFK{D543}}%
+\DeclareUnicodeCharacter{D544}{\UTFK{D544}}%
+\DeclareUnicodeCharacter{D545}{\UTFK{D545}}%
+\DeclareUnicodeCharacter{D546}{\UTFK{D546}}%
+\DeclareUnicodeCharacter{D547}{\UTFK{D547}}%
+\DeclareUnicodeCharacter{D548}{\UTFK{D548}}%
+\DeclareUnicodeCharacter{D549}{\UTFK{D549}}%
+\DeclareUnicodeCharacter{D54A}{\UTFK{D54A}}%
+\DeclareUnicodeCharacter{D54B}{\UTFK{D54B}}%
+\DeclareUnicodeCharacter{D54C}{\UTFK{D54C}}%
+\DeclareUnicodeCharacter{D54D}{\UTFK{D54D}}%
+\DeclareUnicodeCharacter{D54E}{\UTFK{D54E}}%
+\DeclareUnicodeCharacter{D54F}{\UTFK{D54F}}%
+\DeclareUnicodeCharacter{D550}{\UTFK{D550}}%
+\DeclareUnicodeCharacter{D551}{\UTFK{D551}}%
+\DeclareUnicodeCharacter{D552}{\UTFK{D552}}%
+\DeclareUnicodeCharacter{D553}{\UTFK{D553}}%
+\DeclareUnicodeCharacter{D554}{\UTFK{D554}}%
+\DeclareUnicodeCharacter{D555}{\UTFK{D555}}%
+\DeclareUnicodeCharacter{D556}{\UTFK{D556}}%
+\DeclareUnicodeCharacter{D557}{\UTFK{D557}}%
+\DeclareUnicodeCharacter{D558}{\UTFK{D558}}%
+\DeclareUnicodeCharacter{D559}{\UTFK{D559}}%
+\DeclareUnicodeCharacter{D55A}{\UTFK{D55A}}%
+\DeclareUnicodeCharacter{D55B}{\UTFK{D55B}}%
+\DeclareUnicodeCharacter{D55C}{\UTFK{D55C}}%
+\DeclareUnicodeCharacter{D55D}{\UTFK{D55D}}%
+\DeclareUnicodeCharacter{D55E}{\UTFK{D55E}}%
+\DeclareUnicodeCharacter{D55F}{\UTFK{D55F}}%
+\DeclareUnicodeCharacter{D560}{\UTFK{D560}}%
+\DeclareUnicodeCharacter{D561}{\UTFK{D561}}%
+\DeclareUnicodeCharacter{D562}{\UTFK{D562}}%
+\DeclareUnicodeCharacter{D563}{\UTFK{D563}}%
+\DeclareUnicodeCharacter{D564}{\UTFK{D564}}%
+\DeclareUnicodeCharacter{D565}{\UTFK{D565}}%
+\DeclareUnicodeCharacter{D566}{\UTFK{D566}}%
+\DeclareUnicodeCharacter{D567}{\UTFK{D567}}%
+\DeclareUnicodeCharacter{D568}{\UTFK{D568}}%
+\DeclareUnicodeCharacter{D569}{\UTFK{D569}}%
+\DeclareUnicodeCharacter{D56A}{\UTFK{D56A}}%
+\DeclareUnicodeCharacter{D56B}{\UTFK{D56B}}%
+\DeclareUnicodeCharacter{D56C}{\UTFK{D56C}}%
+\DeclareUnicodeCharacter{D56D}{\UTFK{D56D}}%
+\DeclareUnicodeCharacter{D56E}{\UTFK{D56E}}%
+\DeclareUnicodeCharacter{D56F}{\UTFK{D56F}}%
+\DeclareUnicodeCharacter{D570}{\UTFK{D570}}%
+\DeclareUnicodeCharacter{D571}{\UTFK{D571}}%
+\DeclareUnicodeCharacter{D572}{\UTFK{D572}}%
+\DeclareUnicodeCharacter{D573}{\UTFK{D573}}%
+\DeclareUnicodeCharacter{D574}{\UTFK{D574}}%
+\DeclareUnicodeCharacter{D575}{\UTFK{D575}}%
+\DeclareUnicodeCharacter{D576}{\UTFK{D576}}%
+\DeclareUnicodeCharacter{D577}{\UTFK{D577}}%
+\DeclareUnicodeCharacter{D578}{\UTFK{D578}}%
+\DeclareUnicodeCharacter{D579}{\UTFK{D579}}%
+\DeclareUnicodeCharacter{D57A}{\UTFK{D57A}}%
+\DeclareUnicodeCharacter{D57B}{\UTFK{D57B}}%
+\DeclareUnicodeCharacter{D57C}{\UTFK{D57C}}%
+\DeclareUnicodeCharacter{D57D}{\UTFK{D57D}}%
+\DeclareUnicodeCharacter{D57E}{\UTFK{D57E}}%
+\DeclareUnicodeCharacter{D57F}{\UTFK{D57F}}%
+\DeclareUnicodeCharacter{D580}{\UTFK{D580}}%
+\DeclareUnicodeCharacter{D581}{\UTFK{D581}}%
+\DeclareUnicodeCharacter{D582}{\UTFK{D582}}%
+\DeclareUnicodeCharacter{D583}{\UTFK{D583}}%
+\DeclareUnicodeCharacter{D584}{\UTFK{D584}}%
+\DeclareUnicodeCharacter{D585}{\UTFK{D585}}%
+\DeclareUnicodeCharacter{D586}{\UTFK{D586}}%
+\DeclareUnicodeCharacter{D587}{\UTFK{D587}}%
+\DeclareUnicodeCharacter{D588}{\UTFK{D588}}%
+\DeclareUnicodeCharacter{D589}{\UTFK{D589}}%
+\DeclareUnicodeCharacter{D58A}{\UTFK{D58A}}%
+\DeclareUnicodeCharacter{D58B}{\UTFK{D58B}}%
+\DeclareUnicodeCharacter{D58C}{\UTFK{D58C}}%
+\DeclareUnicodeCharacter{D58D}{\UTFK{D58D}}%
+\DeclareUnicodeCharacter{D58E}{\UTFK{D58E}}%
+\DeclareUnicodeCharacter{D58F}{\UTFK{D58F}}%
+\DeclareUnicodeCharacter{D590}{\UTFK{D590}}%
+\DeclareUnicodeCharacter{D591}{\UTFK{D591}}%
+\DeclareUnicodeCharacter{D592}{\UTFK{D592}}%
+\DeclareUnicodeCharacter{D593}{\UTFK{D593}}%
+\DeclareUnicodeCharacter{D594}{\UTFK{D594}}%
+\DeclareUnicodeCharacter{D595}{\UTFK{D595}}%
+\DeclareUnicodeCharacter{D596}{\UTFK{D596}}%
+\DeclareUnicodeCharacter{D597}{\UTFK{D597}}%
+\DeclareUnicodeCharacter{D598}{\UTFK{D598}}%
+\DeclareUnicodeCharacter{D599}{\UTFK{D599}}%
+\DeclareUnicodeCharacter{D59A}{\UTFK{D59A}}%
+\DeclareUnicodeCharacter{D59B}{\UTFK{D59B}}%
+\DeclareUnicodeCharacter{D59C}{\UTFK{D59C}}%
+\DeclareUnicodeCharacter{D59D}{\UTFK{D59D}}%
+\DeclareUnicodeCharacter{D59E}{\UTFK{D59E}}%
+\DeclareUnicodeCharacter{D59F}{\UTFK{D59F}}%
+\DeclareUnicodeCharacter{D5A0}{\UTFK{D5A0}}%
+\DeclareUnicodeCharacter{D5A1}{\UTFK{D5A1}}%
+\DeclareUnicodeCharacter{D5A2}{\UTFK{D5A2}}%
+\DeclareUnicodeCharacter{D5A3}{\UTFK{D5A3}}%
+\DeclareUnicodeCharacter{D5A4}{\UTFK{D5A4}}%
+\DeclareUnicodeCharacter{D5A5}{\UTFK{D5A5}}%
+\DeclareUnicodeCharacter{D5A6}{\UTFK{D5A6}}%
+\DeclareUnicodeCharacter{D5A7}{\UTFK{D5A7}}%
+\DeclareUnicodeCharacter{D5A8}{\UTFK{D5A8}}%
+\DeclareUnicodeCharacter{D5A9}{\UTFK{D5A9}}%
+\DeclareUnicodeCharacter{D5AA}{\UTFK{D5AA}}%
+\DeclareUnicodeCharacter{D5AB}{\UTFK{D5AB}}%
+\DeclareUnicodeCharacter{D5AC}{\UTFK{D5AC}}%
+\DeclareUnicodeCharacter{D5AD}{\UTFK{D5AD}}%
+\DeclareUnicodeCharacter{D5AE}{\UTFK{D5AE}}%
+\DeclareUnicodeCharacter{D5AF}{\UTFK{D5AF}}%
+\DeclareUnicodeCharacter{D5B0}{\UTFK{D5B0}}%
+\DeclareUnicodeCharacter{D5B1}{\UTFK{D5B1}}%
+\DeclareUnicodeCharacter{D5B2}{\UTFK{D5B2}}%
+\DeclareUnicodeCharacter{D5B3}{\UTFK{D5B3}}%
+\DeclareUnicodeCharacter{D5B4}{\UTFK{D5B4}}%
+\DeclareUnicodeCharacter{D5B5}{\UTFK{D5B5}}%
+\DeclareUnicodeCharacter{D5B6}{\UTFK{D5B6}}%
+\DeclareUnicodeCharacter{D5B7}{\UTFK{D5B7}}%
+\DeclareUnicodeCharacter{D5B8}{\UTFK{D5B8}}%
+\DeclareUnicodeCharacter{D5B9}{\UTFK{D5B9}}%
+\DeclareUnicodeCharacter{D5BA}{\UTFK{D5BA}}%
+\DeclareUnicodeCharacter{D5BB}{\UTFK{D5BB}}%
+\DeclareUnicodeCharacter{D5BC}{\UTFK{D5BC}}%
+\DeclareUnicodeCharacter{D5BD}{\UTFK{D5BD}}%
+\DeclareUnicodeCharacter{D5BE}{\UTFK{D5BE}}%
+\DeclareUnicodeCharacter{D5BF}{\UTFK{D5BF}}%
+\DeclareUnicodeCharacter{D5C0}{\UTFK{D5C0}}%
+\DeclareUnicodeCharacter{D5C1}{\UTFK{D5C1}}%
+\DeclareUnicodeCharacter{D5C2}{\UTFK{D5C2}}%
+\DeclareUnicodeCharacter{D5C3}{\UTFK{D5C3}}%
+\DeclareUnicodeCharacter{D5C4}{\UTFK{D5C4}}%
+\DeclareUnicodeCharacter{D5C5}{\UTFK{D5C5}}%
+\DeclareUnicodeCharacter{D5C6}{\UTFK{D5C6}}%
+\DeclareUnicodeCharacter{D5C7}{\UTFK{D5C7}}%
+\DeclareUnicodeCharacter{D5C8}{\UTFK{D5C8}}%
+\DeclareUnicodeCharacter{D5C9}{\UTFK{D5C9}}%
+\DeclareUnicodeCharacter{D5CA}{\UTFK{D5CA}}%
+\DeclareUnicodeCharacter{D5CB}{\UTFK{D5CB}}%
+\DeclareUnicodeCharacter{D5CC}{\UTFK{D5CC}}%
+\DeclareUnicodeCharacter{D5CD}{\UTFK{D5CD}}%
+\DeclareUnicodeCharacter{D5CE}{\UTFK{D5CE}}%
+\DeclareUnicodeCharacter{D5CF}{\UTFK{D5CF}}%
+\DeclareUnicodeCharacter{D5D0}{\UTFK{D5D0}}%
+\DeclareUnicodeCharacter{D5D1}{\UTFK{D5D1}}%
+\DeclareUnicodeCharacter{D5D2}{\UTFK{D5D2}}%
+\DeclareUnicodeCharacter{D5D3}{\UTFK{D5D3}}%
+\DeclareUnicodeCharacter{D5D4}{\UTFK{D5D4}}%
+\DeclareUnicodeCharacter{D5D5}{\UTFK{D5D5}}%
+\DeclareUnicodeCharacter{D5D6}{\UTFK{D5D6}}%
+\DeclareUnicodeCharacter{D5D7}{\UTFK{D5D7}}%
+\DeclareUnicodeCharacter{D5D8}{\UTFK{D5D8}}%
+\DeclareUnicodeCharacter{D5D9}{\UTFK{D5D9}}%
+\DeclareUnicodeCharacter{D5DA}{\UTFK{D5DA}}%
+\DeclareUnicodeCharacter{D5DB}{\UTFK{D5DB}}%
+\DeclareUnicodeCharacter{D5DC}{\UTFK{D5DC}}%
+\DeclareUnicodeCharacter{D5DD}{\UTFK{D5DD}}%
+\DeclareUnicodeCharacter{D5DE}{\UTFK{D5DE}}%
+\DeclareUnicodeCharacter{D5DF}{\UTFK{D5DF}}%
+\DeclareUnicodeCharacter{D5E0}{\UTFK{D5E0}}%
+\DeclareUnicodeCharacter{D5E1}{\UTFK{D5E1}}%
+\DeclareUnicodeCharacter{D5E2}{\UTFK{D5E2}}%
+\DeclareUnicodeCharacter{D5E3}{\UTFK{D5E3}}%
+\DeclareUnicodeCharacter{D5E4}{\UTFK{D5E4}}%
+\DeclareUnicodeCharacter{D5E5}{\UTFK{D5E5}}%
+\DeclareUnicodeCharacter{D5E6}{\UTFK{D5E6}}%
+\DeclareUnicodeCharacter{D5E7}{\UTFK{D5E7}}%
+\DeclareUnicodeCharacter{D5E8}{\UTFK{D5E8}}%
+\DeclareUnicodeCharacter{D5E9}{\UTFK{D5E9}}%
+\DeclareUnicodeCharacter{D5EA}{\UTFK{D5EA}}%
+\DeclareUnicodeCharacter{D5EB}{\UTFK{D5EB}}%
+\DeclareUnicodeCharacter{D5EC}{\UTFK{D5EC}}%
+\DeclareUnicodeCharacter{D5ED}{\UTFK{D5ED}}%
+\DeclareUnicodeCharacter{D5EE}{\UTFK{D5EE}}%
+\DeclareUnicodeCharacter{D5EF}{\UTFK{D5EF}}%
+\DeclareUnicodeCharacter{D5F0}{\UTFK{D5F0}}%
+\DeclareUnicodeCharacter{D5F1}{\UTFK{D5F1}}%
+\DeclareUnicodeCharacter{D5F2}{\UTFK{D5F2}}%
+\DeclareUnicodeCharacter{D5F3}{\UTFK{D5F3}}%
+\DeclareUnicodeCharacter{D5F4}{\UTFK{D5F4}}%
+\DeclareUnicodeCharacter{D5F5}{\UTFK{D5F5}}%
+\DeclareUnicodeCharacter{D5F6}{\UTFK{D5F6}}%
+\DeclareUnicodeCharacter{D5F7}{\UTFK{D5F7}}%
+\DeclareUnicodeCharacter{D5F8}{\UTFK{D5F8}}%
+\DeclareUnicodeCharacter{D5F9}{\UTFK{D5F9}}%
+\DeclareUnicodeCharacter{D5FA}{\UTFK{D5FA}}%
+\DeclareUnicodeCharacter{D5FB}{\UTFK{D5FB}}%
+\DeclareUnicodeCharacter{D5FC}{\UTFK{D5FC}}%
+\DeclareUnicodeCharacter{D5FD}{\UTFK{D5FD}}%
+\DeclareUnicodeCharacter{D5FE}{\UTFK{D5FE}}%
+\DeclareUnicodeCharacter{D5FF}{\UTFK{D5FF}}%
+\DeclareUnicodeCharacter{D600}{\UTFK{D600}}%
+\DeclareUnicodeCharacter{D601}{\UTFK{D601}}%
+\DeclareUnicodeCharacter{D602}{\UTFK{D602}}%
+\DeclareUnicodeCharacter{D603}{\UTFK{D603}}%
+\DeclareUnicodeCharacter{D604}{\UTFK{D604}}%
+\DeclareUnicodeCharacter{D605}{\UTFK{D605}}%
+\DeclareUnicodeCharacter{D606}{\UTFK{D606}}%
+\DeclareUnicodeCharacter{D607}{\UTFK{D607}}%
+\DeclareUnicodeCharacter{D608}{\UTFK{D608}}%
+\DeclareUnicodeCharacter{D609}{\UTFK{D609}}%
+\DeclareUnicodeCharacter{D60A}{\UTFK{D60A}}%
+\DeclareUnicodeCharacter{D60B}{\UTFK{D60B}}%
+\DeclareUnicodeCharacter{D60C}{\UTFK{D60C}}%
+\DeclareUnicodeCharacter{D60D}{\UTFK{D60D}}%
+\DeclareUnicodeCharacter{D60E}{\UTFK{D60E}}%
+\DeclareUnicodeCharacter{D60F}{\UTFK{D60F}}%
+\DeclareUnicodeCharacter{D610}{\UTFK{D610}}%
+\DeclareUnicodeCharacter{D611}{\UTFK{D611}}%
+\DeclareUnicodeCharacter{D612}{\UTFK{D612}}%
+\DeclareUnicodeCharacter{D613}{\UTFK{D613}}%
+\DeclareUnicodeCharacter{D614}{\UTFK{D614}}%
+\DeclareUnicodeCharacter{D615}{\UTFK{D615}}%
+\DeclareUnicodeCharacter{D616}{\UTFK{D616}}%
+\DeclareUnicodeCharacter{D617}{\UTFK{D617}}%
+\DeclareUnicodeCharacter{D618}{\UTFK{D618}}%
+\DeclareUnicodeCharacter{D619}{\UTFK{D619}}%
+\DeclareUnicodeCharacter{D61A}{\UTFK{D61A}}%
+\DeclareUnicodeCharacter{D61B}{\UTFK{D61B}}%
+\DeclareUnicodeCharacter{D61C}{\UTFK{D61C}}%
+\DeclareUnicodeCharacter{D61D}{\UTFK{D61D}}%
+\DeclareUnicodeCharacter{D61E}{\UTFK{D61E}}%
+\DeclareUnicodeCharacter{D61F}{\UTFK{D61F}}%
+\DeclareUnicodeCharacter{D620}{\UTFK{D620}}%
+\DeclareUnicodeCharacter{D621}{\UTFK{D621}}%
+\DeclareUnicodeCharacter{D622}{\UTFK{D622}}%
+\DeclareUnicodeCharacter{D623}{\UTFK{D623}}%
+\DeclareUnicodeCharacter{D624}{\UTFK{D624}}%
+\DeclareUnicodeCharacter{D625}{\UTFK{D625}}%
+\DeclareUnicodeCharacter{D626}{\UTFK{D626}}%
+\DeclareUnicodeCharacter{D627}{\UTFK{D627}}%
+\DeclareUnicodeCharacter{D628}{\UTFK{D628}}%
+\DeclareUnicodeCharacter{D629}{\UTFK{D629}}%
+\DeclareUnicodeCharacter{D62A}{\UTFK{D62A}}%
+\DeclareUnicodeCharacter{D62B}{\UTFK{D62B}}%
+\DeclareUnicodeCharacter{D62C}{\UTFK{D62C}}%
+\DeclareUnicodeCharacter{D62D}{\UTFK{D62D}}%
+\DeclareUnicodeCharacter{D62E}{\UTFK{D62E}}%
+\DeclareUnicodeCharacter{D62F}{\UTFK{D62F}}%
+\DeclareUnicodeCharacter{D630}{\UTFK{D630}}%
+\DeclareUnicodeCharacter{D631}{\UTFK{D631}}%
+\DeclareUnicodeCharacter{D632}{\UTFK{D632}}%
+\DeclareUnicodeCharacter{D633}{\UTFK{D633}}%
+\DeclareUnicodeCharacter{D634}{\UTFK{D634}}%
+\DeclareUnicodeCharacter{D635}{\UTFK{D635}}%
+\DeclareUnicodeCharacter{D636}{\UTFK{D636}}%
+\DeclareUnicodeCharacter{D637}{\UTFK{D637}}%
+\DeclareUnicodeCharacter{D638}{\UTFK{D638}}%
+\DeclareUnicodeCharacter{D639}{\UTFK{D639}}%
+\DeclareUnicodeCharacter{D63A}{\UTFK{D63A}}%
+\DeclareUnicodeCharacter{D63B}{\UTFK{D63B}}%
+\DeclareUnicodeCharacter{D63C}{\UTFK{D63C}}%
+\DeclareUnicodeCharacter{D63D}{\UTFK{D63D}}%
+\DeclareUnicodeCharacter{D63E}{\UTFK{D63E}}%
+\DeclareUnicodeCharacter{D63F}{\UTFK{D63F}}%
+\DeclareUnicodeCharacter{D640}{\UTFK{D640}}%
+\DeclareUnicodeCharacter{D641}{\UTFK{D641}}%
+\DeclareUnicodeCharacter{D642}{\UTFK{D642}}%
+\DeclareUnicodeCharacter{D643}{\UTFK{D643}}%
+\DeclareUnicodeCharacter{D644}{\UTFK{D644}}%
+\DeclareUnicodeCharacter{D645}{\UTFK{D645}}%
+\DeclareUnicodeCharacter{D646}{\UTFK{D646}}%
+\DeclareUnicodeCharacter{D647}{\UTFK{D647}}%
+\DeclareUnicodeCharacter{D648}{\UTFK{D648}}%
+\DeclareUnicodeCharacter{D649}{\UTFK{D649}}%
+\DeclareUnicodeCharacter{D64A}{\UTFK{D64A}}%
+\DeclareUnicodeCharacter{D64B}{\UTFK{D64B}}%
+\DeclareUnicodeCharacter{D64C}{\UTFK{D64C}}%
+\DeclareUnicodeCharacter{D64D}{\UTFK{D64D}}%
+\DeclareUnicodeCharacter{D64E}{\UTFK{D64E}}%
+\DeclareUnicodeCharacter{D64F}{\UTFK{D64F}}%
+\DeclareUnicodeCharacter{D650}{\UTFK{D650}}%
+\DeclareUnicodeCharacter{D651}{\UTFK{D651}}%
+\DeclareUnicodeCharacter{D652}{\UTFK{D652}}%
+\DeclareUnicodeCharacter{D653}{\UTFK{D653}}%
+\DeclareUnicodeCharacter{D654}{\UTFK{D654}}%
+\DeclareUnicodeCharacter{D655}{\UTFK{D655}}%
+\DeclareUnicodeCharacter{D656}{\UTFK{D656}}%
+\DeclareUnicodeCharacter{D657}{\UTFK{D657}}%
+\DeclareUnicodeCharacter{D658}{\UTFK{D658}}%
+\DeclareUnicodeCharacter{D659}{\UTFK{D659}}%
+\DeclareUnicodeCharacter{D65A}{\UTFK{D65A}}%
+\DeclareUnicodeCharacter{D65B}{\UTFK{D65B}}%
+\DeclareUnicodeCharacter{D65C}{\UTFK{D65C}}%
+\DeclareUnicodeCharacter{D65D}{\UTFK{D65D}}%
+\DeclareUnicodeCharacter{D65E}{\UTFK{D65E}}%
+\DeclareUnicodeCharacter{D65F}{\UTFK{D65F}}%
+\DeclareUnicodeCharacter{D660}{\UTFK{D660}}%
+\DeclareUnicodeCharacter{D661}{\UTFK{D661}}%
+\DeclareUnicodeCharacter{D662}{\UTFK{D662}}%
+\DeclareUnicodeCharacter{D663}{\UTFK{D663}}%
+\DeclareUnicodeCharacter{D664}{\UTFK{D664}}%
+\DeclareUnicodeCharacter{D665}{\UTFK{D665}}%
+\DeclareUnicodeCharacter{D666}{\UTFK{D666}}%
+\DeclareUnicodeCharacter{D667}{\UTFK{D667}}%
+\DeclareUnicodeCharacter{D668}{\UTFK{D668}}%
+\DeclareUnicodeCharacter{D669}{\UTFK{D669}}%
+\DeclareUnicodeCharacter{D66A}{\UTFK{D66A}}%
+\DeclareUnicodeCharacter{D66B}{\UTFK{D66B}}%
+\DeclareUnicodeCharacter{D66C}{\UTFK{D66C}}%
+\DeclareUnicodeCharacter{D66D}{\UTFK{D66D}}%
+\DeclareUnicodeCharacter{D66E}{\UTFK{D66E}}%
+\DeclareUnicodeCharacter{D66F}{\UTFK{D66F}}%
+\DeclareUnicodeCharacter{D670}{\UTFK{D670}}%
+\DeclareUnicodeCharacter{D671}{\UTFK{D671}}%
+\DeclareUnicodeCharacter{D672}{\UTFK{D672}}%
+\DeclareUnicodeCharacter{D673}{\UTFK{D673}}%
+\DeclareUnicodeCharacter{D674}{\UTFK{D674}}%
+\DeclareUnicodeCharacter{D675}{\UTFK{D675}}%
+\DeclareUnicodeCharacter{D676}{\UTFK{D676}}%
+\DeclareUnicodeCharacter{D677}{\UTFK{D677}}%
+\DeclareUnicodeCharacter{D678}{\UTFK{D678}}%
+\DeclareUnicodeCharacter{D679}{\UTFK{D679}}%
+\DeclareUnicodeCharacter{D67A}{\UTFK{D67A}}%
+\DeclareUnicodeCharacter{D67B}{\UTFK{D67B}}%
+\DeclareUnicodeCharacter{D67C}{\UTFK{D67C}}%
+\DeclareUnicodeCharacter{D67D}{\UTFK{D67D}}%
+\DeclareUnicodeCharacter{D67E}{\UTFK{D67E}}%
+\DeclareUnicodeCharacter{D67F}{\UTFK{D67F}}%
+\DeclareUnicodeCharacter{D680}{\UTFK{D680}}%
+\DeclareUnicodeCharacter{D681}{\UTFK{D681}}%
+\DeclareUnicodeCharacter{D682}{\UTFK{D682}}%
+\DeclareUnicodeCharacter{D683}{\UTFK{D683}}%
+\DeclareUnicodeCharacter{D684}{\UTFK{D684}}%
+\DeclareUnicodeCharacter{D685}{\UTFK{D685}}%
+\DeclareUnicodeCharacter{D686}{\UTFK{D686}}%
+\DeclareUnicodeCharacter{D687}{\UTFK{D687}}%
+\DeclareUnicodeCharacter{D688}{\UTFK{D688}}%
+\DeclareUnicodeCharacter{D689}{\UTFK{D689}}%
+\DeclareUnicodeCharacter{D68A}{\UTFK{D68A}}%
+\DeclareUnicodeCharacter{D68B}{\UTFK{D68B}}%
+\DeclareUnicodeCharacter{D68C}{\UTFK{D68C}}%
+\DeclareUnicodeCharacter{D68D}{\UTFK{D68D}}%
+\DeclareUnicodeCharacter{D68E}{\UTFK{D68E}}%
+\DeclareUnicodeCharacter{D68F}{\UTFK{D68F}}%
+\DeclareUnicodeCharacter{D690}{\UTFK{D690}}%
+\DeclareUnicodeCharacter{D691}{\UTFK{D691}}%
+\DeclareUnicodeCharacter{D692}{\UTFK{D692}}%
+\DeclareUnicodeCharacter{D693}{\UTFK{D693}}%
+\DeclareUnicodeCharacter{D694}{\UTFK{D694}}%
+\DeclareUnicodeCharacter{D695}{\UTFK{D695}}%
+\DeclareUnicodeCharacter{D696}{\UTFK{D696}}%
+\DeclareUnicodeCharacter{D697}{\UTFK{D697}}%
+\DeclareUnicodeCharacter{D698}{\UTFK{D698}}%
+\DeclareUnicodeCharacter{D699}{\UTFK{D699}}%
+\DeclareUnicodeCharacter{D69A}{\UTFK{D69A}}%
+\DeclareUnicodeCharacter{D69B}{\UTFK{D69B}}%
+\DeclareUnicodeCharacter{D69C}{\UTFK{D69C}}%
+\DeclareUnicodeCharacter{D69D}{\UTFK{D69D}}%
+\DeclareUnicodeCharacter{D69E}{\UTFK{D69E}}%
+\DeclareUnicodeCharacter{D69F}{\UTFK{D69F}}%
+\DeclareUnicodeCharacter{D6A0}{\UTFK{D6A0}}%
+\DeclareUnicodeCharacter{D6A1}{\UTFK{D6A1}}%
+\DeclareUnicodeCharacter{D6A2}{\UTFK{D6A2}}%
+\DeclareUnicodeCharacter{D6A3}{\UTFK{D6A3}}%
+\DeclareUnicodeCharacter{D6A4}{\UTFK{D6A4}}%
+\DeclareUnicodeCharacter{D6A5}{\UTFK{D6A5}}%
+\DeclareUnicodeCharacter{D6A6}{\UTFK{D6A6}}%
+\DeclareUnicodeCharacter{D6A7}{\UTFK{D6A7}}%
+\DeclareUnicodeCharacter{D6A8}{\UTFK{D6A8}}%
+\DeclareUnicodeCharacter{D6A9}{\UTFK{D6A9}}%
+\DeclareUnicodeCharacter{D6AA}{\UTFK{D6AA}}%
+\DeclareUnicodeCharacter{D6AB}{\UTFK{D6AB}}%
+\DeclareUnicodeCharacter{D6AC}{\UTFK{D6AC}}%
+\DeclareUnicodeCharacter{D6AD}{\UTFK{D6AD}}%
+\DeclareUnicodeCharacter{D6AE}{\UTFK{D6AE}}%
+\DeclareUnicodeCharacter{D6AF}{\UTFK{D6AF}}%
+\DeclareUnicodeCharacter{D6B0}{\UTFK{D6B0}}%
+\DeclareUnicodeCharacter{D6B1}{\UTFK{D6B1}}%
+\DeclareUnicodeCharacter{D6B2}{\UTFK{D6B2}}%
+\DeclareUnicodeCharacter{D6B3}{\UTFK{D6B3}}%
+\DeclareUnicodeCharacter{D6B4}{\UTFK{D6B4}}%
+\DeclareUnicodeCharacter{D6B5}{\UTFK{D6B5}}%
+\DeclareUnicodeCharacter{D6B6}{\UTFK{D6B6}}%
+\DeclareUnicodeCharacter{D6B7}{\UTFK{D6B7}}%
+\DeclareUnicodeCharacter{D6B8}{\UTFK{D6B8}}%
+\DeclareUnicodeCharacter{D6B9}{\UTFK{D6B9}}%
+\DeclareUnicodeCharacter{D6BA}{\UTFK{D6BA}}%
+\DeclareUnicodeCharacter{D6BB}{\UTFK{D6BB}}%
+\DeclareUnicodeCharacter{D6BC}{\UTFK{D6BC}}%
+\DeclareUnicodeCharacter{D6BD}{\UTFK{D6BD}}%
+\DeclareUnicodeCharacter{D6BE}{\UTFK{D6BE}}%
+\DeclareUnicodeCharacter{D6BF}{\UTFK{D6BF}}%
+\DeclareUnicodeCharacter{D6C0}{\UTFK{D6C0}}%
+\DeclareUnicodeCharacter{D6C1}{\UTFK{D6C1}}%
+\DeclareUnicodeCharacter{D6C2}{\UTFK{D6C2}}%
+\DeclareUnicodeCharacter{D6C3}{\UTFK{D6C3}}%
+\DeclareUnicodeCharacter{D6C4}{\UTFK{D6C4}}%
+\DeclareUnicodeCharacter{D6C5}{\UTFK{D6C5}}%
+\DeclareUnicodeCharacter{D6C6}{\UTFK{D6C6}}%
+\DeclareUnicodeCharacter{D6C7}{\UTFK{D6C7}}%
+\DeclareUnicodeCharacter{D6C8}{\UTFK{D6C8}}%
+\DeclareUnicodeCharacter{D6C9}{\UTFK{D6C9}}%
+\DeclareUnicodeCharacter{D6CA}{\UTFK{D6CA}}%
+\DeclareUnicodeCharacter{D6CB}{\UTFK{D6CB}}%
+\DeclareUnicodeCharacter{D6CC}{\UTFK{D6CC}}%
+\DeclareUnicodeCharacter{D6CD}{\UTFK{D6CD}}%
+\DeclareUnicodeCharacter{D6CE}{\UTFK{D6CE}}%
+\DeclareUnicodeCharacter{D6CF}{\UTFK{D6CF}}%
+\DeclareUnicodeCharacter{D6D0}{\UTFK{D6D0}}%
+\DeclareUnicodeCharacter{D6D1}{\UTFK{D6D1}}%
+\DeclareUnicodeCharacter{D6D2}{\UTFK{D6D2}}%
+\DeclareUnicodeCharacter{D6D3}{\UTFK{D6D3}}%
+\DeclareUnicodeCharacter{D6D4}{\UTFK{D6D4}}%
+\DeclareUnicodeCharacter{D6D5}{\UTFK{D6D5}}%
+\DeclareUnicodeCharacter{D6D6}{\UTFK{D6D6}}%
+\DeclareUnicodeCharacter{D6D7}{\UTFK{D6D7}}%
+\DeclareUnicodeCharacter{D6D8}{\UTFK{D6D8}}%
+\DeclareUnicodeCharacter{D6D9}{\UTFK{D6D9}}%
+\DeclareUnicodeCharacter{D6DA}{\UTFK{D6DA}}%
+\DeclareUnicodeCharacter{D6DB}{\UTFK{D6DB}}%
+\DeclareUnicodeCharacter{D6DC}{\UTFK{D6DC}}%
+\DeclareUnicodeCharacter{D6DD}{\UTFK{D6DD}}%
+\DeclareUnicodeCharacter{D6DE}{\UTFK{D6DE}}%
+\DeclareUnicodeCharacter{D6DF}{\UTFK{D6DF}}%
+\DeclareUnicodeCharacter{D6E0}{\UTFK{D6E0}}%
+\DeclareUnicodeCharacter{D6E1}{\UTFK{D6E1}}%
+\DeclareUnicodeCharacter{D6E2}{\UTFK{D6E2}}%
+\DeclareUnicodeCharacter{D6E3}{\UTFK{D6E3}}%
+\DeclareUnicodeCharacter{D6E4}{\UTFK{D6E4}}%
+\DeclareUnicodeCharacter{D6E5}{\UTFK{D6E5}}%
+\DeclareUnicodeCharacter{D6E6}{\UTFK{D6E6}}%
+\DeclareUnicodeCharacter{D6E7}{\UTFK{D6E7}}%
+\DeclareUnicodeCharacter{D6E8}{\UTFK{D6E8}}%
+\DeclareUnicodeCharacter{D6E9}{\UTFK{D6E9}}%
+\DeclareUnicodeCharacter{D6EA}{\UTFK{D6EA}}%
+\DeclareUnicodeCharacter{D6EB}{\UTFK{D6EB}}%
+\DeclareUnicodeCharacter{D6EC}{\UTFK{D6EC}}%
+\DeclareUnicodeCharacter{D6ED}{\UTFK{D6ED}}%
+\DeclareUnicodeCharacter{D6EE}{\UTFK{D6EE}}%
+\DeclareUnicodeCharacter{D6EF}{\UTFK{D6EF}}%
+\DeclareUnicodeCharacter{D6F0}{\UTFK{D6F0}}%
+\DeclareUnicodeCharacter{D6F1}{\UTFK{D6F1}}%
+\DeclareUnicodeCharacter{D6F2}{\UTFK{D6F2}}%
+\DeclareUnicodeCharacter{D6F3}{\UTFK{D6F3}}%
+\DeclareUnicodeCharacter{D6F4}{\UTFK{D6F4}}%
+\DeclareUnicodeCharacter{D6F5}{\UTFK{D6F5}}%
+\DeclareUnicodeCharacter{D6F6}{\UTFK{D6F6}}%
+\DeclareUnicodeCharacter{D6F7}{\UTFK{D6F7}}%
+\DeclareUnicodeCharacter{D6F8}{\UTFK{D6F8}}%
+\DeclareUnicodeCharacter{D6F9}{\UTFK{D6F9}}%
+\DeclareUnicodeCharacter{D6FA}{\UTFK{D6FA}}%
+\DeclareUnicodeCharacter{D6FB}{\UTFK{D6FB}}%
+\DeclareUnicodeCharacter{D6FC}{\UTFK{D6FC}}%
+\DeclareUnicodeCharacter{D6FD}{\UTFK{D6FD}}%
+\DeclareUnicodeCharacter{D6FE}{\UTFK{D6FE}}%
+\DeclareUnicodeCharacter{D6FF}{\UTFK{D6FF}}%
+\DeclareUnicodeCharacter{D700}{\UTFK{D700}}%
+\DeclareUnicodeCharacter{D701}{\UTFK{D701}}%
+\DeclareUnicodeCharacter{D702}{\UTFK{D702}}%
+\DeclareUnicodeCharacter{D703}{\UTFK{D703}}%
+\DeclareUnicodeCharacter{D704}{\UTFK{D704}}%
+\DeclareUnicodeCharacter{D705}{\UTFK{D705}}%
+\DeclareUnicodeCharacter{D706}{\UTFK{D706}}%
+\DeclareUnicodeCharacter{D707}{\UTFK{D707}}%
+\DeclareUnicodeCharacter{D708}{\UTFK{D708}}%
+\DeclareUnicodeCharacter{D709}{\UTFK{D709}}%
+\DeclareUnicodeCharacter{D70A}{\UTFK{D70A}}%
+\DeclareUnicodeCharacter{D70B}{\UTFK{D70B}}%
+\DeclareUnicodeCharacter{D70C}{\UTFK{D70C}}%
+\DeclareUnicodeCharacter{D70D}{\UTFK{D70D}}%
+\DeclareUnicodeCharacter{D70E}{\UTFK{D70E}}%
+\DeclareUnicodeCharacter{D70F}{\UTFK{D70F}}%
+\DeclareUnicodeCharacter{D710}{\UTFK{D710}}%
+\DeclareUnicodeCharacter{D711}{\UTFK{D711}}%
+\DeclareUnicodeCharacter{D712}{\UTFK{D712}}%
+\DeclareUnicodeCharacter{D713}{\UTFK{D713}}%
+\DeclareUnicodeCharacter{D714}{\UTFK{D714}}%
+\DeclareUnicodeCharacter{D715}{\UTFK{D715}}%
+\DeclareUnicodeCharacter{D716}{\UTFK{D716}}%
+\DeclareUnicodeCharacter{D717}{\UTFK{D717}}%
+\DeclareUnicodeCharacter{D718}{\UTFK{D718}}%
+\DeclareUnicodeCharacter{D719}{\UTFK{D719}}%
+\DeclareUnicodeCharacter{D71A}{\UTFK{D71A}}%
+\DeclareUnicodeCharacter{D71B}{\UTFK{D71B}}%
+\DeclareUnicodeCharacter{D71C}{\UTFK{D71C}}%
+\DeclareUnicodeCharacter{D71D}{\UTFK{D71D}}%
+\DeclareUnicodeCharacter{D71E}{\UTFK{D71E}}%
+\DeclareUnicodeCharacter{D71F}{\UTFK{D71F}}%
+\DeclareUnicodeCharacter{D720}{\UTFK{D720}}%
+\DeclareUnicodeCharacter{D721}{\UTFK{D721}}%
+\DeclareUnicodeCharacter{D722}{\UTFK{D722}}%
+\DeclareUnicodeCharacter{D723}{\UTFK{D723}}%
+\DeclareUnicodeCharacter{D724}{\UTFK{D724}}%
+\DeclareUnicodeCharacter{D725}{\UTFK{D725}}%
+\DeclareUnicodeCharacter{D726}{\UTFK{D726}}%
+\DeclareUnicodeCharacter{D727}{\UTFK{D727}}%
+\DeclareUnicodeCharacter{D728}{\UTFK{D728}}%
+\DeclareUnicodeCharacter{D729}{\UTFK{D729}}%
+\DeclareUnicodeCharacter{D72A}{\UTFK{D72A}}%
+\DeclareUnicodeCharacter{D72B}{\UTFK{D72B}}%
+\DeclareUnicodeCharacter{D72C}{\UTFK{D72C}}%
+\DeclareUnicodeCharacter{D72D}{\UTFK{D72D}}%
+\DeclareUnicodeCharacter{D72E}{\UTFK{D72E}}%
+\DeclareUnicodeCharacter{D72F}{\UTFK{D72F}}%
+\DeclareUnicodeCharacter{D730}{\UTFK{D730}}%
+\DeclareUnicodeCharacter{D731}{\UTFK{D731}}%
+\DeclareUnicodeCharacter{D732}{\UTFK{D732}}%
+\DeclareUnicodeCharacter{D733}{\UTFK{D733}}%
+\DeclareUnicodeCharacter{D734}{\UTFK{D734}}%
+\DeclareUnicodeCharacter{D735}{\UTFK{D735}}%
+\DeclareUnicodeCharacter{D736}{\UTFK{D736}}%
+\DeclareUnicodeCharacter{D737}{\UTFK{D737}}%
+\DeclareUnicodeCharacter{D738}{\UTFK{D738}}%
+\DeclareUnicodeCharacter{D739}{\UTFK{D739}}%
+\DeclareUnicodeCharacter{D73A}{\UTFK{D73A}}%
+\DeclareUnicodeCharacter{D73B}{\UTFK{D73B}}%
+\DeclareUnicodeCharacter{D73C}{\UTFK{D73C}}%
+\DeclareUnicodeCharacter{D73D}{\UTFK{D73D}}%
+\DeclareUnicodeCharacter{D73E}{\UTFK{D73E}}%
+\DeclareUnicodeCharacter{D73F}{\UTFK{D73F}}%
+\DeclareUnicodeCharacter{D740}{\UTFK{D740}}%
+\DeclareUnicodeCharacter{D741}{\UTFK{D741}}%
+\DeclareUnicodeCharacter{D742}{\UTFK{D742}}%
+\DeclareUnicodeCharacter{D743}{\UTFK{D743}}%
+\DeclareUnicodeCharacter{D744}{\UTFK{D744}}%
+\DeclareUnicodeCharacter{D745}{\UTFK{D745}}%
+\DeclareUnicodeCharacter{D746}{\UTFK{D746}}%
+\DeclareUnicodeCharacter{D747}{\UTFK{D747}}%
+\DeclareUnicodeCharacter{D748}{\UTFK{D748}}%
+\DeclareUnicodeCharacter{D749}{\UTFK{D749}}%
+\DeclareUnicodeCharacter{D74A}{\UTFK{D74A}}%
+\DeclareUnicodeCharacter{D74B}{\UTFK{D74B}}%
+\DeclareUnicodeCharacter{D74C}{\UTFK{D74C}}%
+\DeclareUnicodeCharacter{D74D}{\UTFK{D74D}}%
+\DeclareUnicodeCharacter{D74E}{\UTFK{D74E}}%
+\DeclareUnicodeCharacter{D74F}{\UTFK{D74F}}%
+\DeclareUnicodeCharacter{D750}{\UTFK{D750}}%
+\DeclareUnicodeCharacter{D751}{\UTFK{D751}}%
+\DeclareUnicodeCharacter{D752}{\UTFK{D752}}%
+\DeclareUnicodeCharacter{D753}{\UTFK{D753}}%
+\DeclareUnicodeCharacter{D754}{\UTFK{D754}}%
+\DeclareUnicodeCharacter{D755}{\UTFK{D755}}%
+\DeclareUnicodeCharacter{D756}{\UTFK{D756}}%
+\DeclareUnicodeCharacter{D757}{\UTFK{D757}}%
+\DeclareUnicodeCharacter{D758}{\UTFK{D758}}%
+\DeclareUnicodeCharacter{D759}{\UTFK{D759}}%
+\DeclareUnicodeCharacter{D75A}{\UTFK{D75A}}%
+\DeclareUnicodeCharacter{D75B}{\UTFK{D75B}}%
+\DeclareUnicodeCharacter{D75C}{\UTFK{D75C}}%
+\DeclareUnicodeCharacter{D75D}{\UTFK{D75D}}%
+\DeclareUnicodeCharacter{D75E}{\UTFK{D75E}}%
+\DeclareUnicodeCharacter{D75F}{\UTFK{D75F}}%
+\DeclareUnicodeCharacter{D760}{\UTFK{D760}}%
+\DeclareUnicodeCharacter{D761}{\UTFK{D761}}%
+\DeclareUnicodeCharacter{D762}{\UTFK{D762}}%
+\DeclareUnicodeCharacter{D763}{\UTFK{D763}}%
+\DeclareUnicodeCharacter{D764}{\UTFK{D764}}%
+\DeclareUnicodeCharacter{D765}{\UTFK{D765}}%
+\DeclareUnicodeCharacter{D766}{\UTFK{D766}}%
+\DeclareUnicodeCharacter{D767}{\UTFK{D767}}%
+\DeclareUnicodeCharacter{D768}{\UTFK{D768}}%
+\DeclareUnicodeCharacter{D769}{\UTFK{D769}}%
+\DeclareUnicodeCharacter{D76A}{\UTFK{D76A}}%
+\DeclareUnicodeCharacter{D76B}{\UTFK{D76B}}%
+\DeclareUnicodeCharacter{D76C}{\UTFK{D76C}}%
+\DeclareUnicodeCharacter{D76D}{\UTFK{D76D}}%
+\DeclareUnicodeCharacter{D76E}{\UTFK{D76E}}%
+\DeclareUnicodeCharacter{D76F}{\UTFK{D76F}}%
+\DeclareUnicodeCharacter{D770}{\UTFK{D770}}%
+\DeclareUnicodeCharacter{D771}{\UTFK{D771}}%
+\DeclareUnicodeCharacter{D772}{\UTFK{D772}}%
+\DeclareUnicodeCharacter{D773}{\UTFK{D773}}%
+\DeclareUnicodeCharacter{D774}{\UTFK{D774}}%
+\DeclareUnicodeCharacter{D775}{\UTFK{D775}}%
+\DeclareUnicodeCharacter{D776}{\UTFK{D776}}%
+\DeclareUnicodeCharacter{D777}{\UTFK{D777}}%
+\DeclareUnicodeCharacter{D778}{\UTFK{D778}}%
+\DeclareUnicodeCharacter{D779}{\UTFK{D779}}%
+\DeclareUnicodeCharacter{D77A}{\UTFK{D77A}}%
+\DeclareUnicodeCharacter{D77B}{\UTFK{D77B}}%
+\DeclareUnicodeCharacter{D77C}{\UTFK{D77C}}%
+\DeclareUnicodeCharacter{D77D}{\UTFK{D77D}}%
+\DeclareUnicodeCharacter{D77E}{\UTFK{D77E}}%
+\DeclareUnicodeCharacter{D77F}{\UTFK{D77F}}%
+\DeclareUnicodeCharacter{D780}{\UTFK{D780}}%
+\DeclareUnicodeCharacter{D781}{\UTFK{D781}}%
+\DeclareUnicodeCharacter{D782}{\UTFK{D782}}%
+\DeclareUnicodeCharacter{D783}{\UTFK{D783}}%
+\DeclareUnicodeCharacter{D784}{\UTFK{D784}}%
+\DeclareUnicodeCharacter{D785}{\UTFK{D785}}%
+\DeclareUnicodeCharacter{D786}{\UTFK{D786}}%
+\DeclareUnicodeCharacter{D787}{\UTFK{D787}}%
+\DeclareUnicodeCharacter{D788}{\UTFK{D788}}%
+\DeclareUnicodeCharacter{D789}{\UTFK{D789}}%
+\DeclareUnicodeCharacter{D78A}{\UTFK{D78A}}%
+\DeclareUnicodeCharacter{D78B}{\UTFK{D78B}}%
+\DeclareUnicodeCharacter{D78C}{\UTFK{D78C}}%
+\DeclareUnicodeCharacter{D78D}{\UTFK{D78D}}%
+\DeclareUnicodeCharacter{D78E}{\UTFK{D78E}}%
+\DeclareUnicodeCharacter{D78F}{\UTFK{D78F}}%
+\DeclareUnicodeCharacter{D790}{\UTFK{D790}}%
+\DeclareUnicodeCharacter{D791}{\UTFK{D791}}%
+\DeclareUnicodeCharacter{D792}{\UTFK{D792}}%
+\DeclareUnicodeCharacter{D793}{\UTFK{D793}}%
+\DeclareUnicodeCharacter{D794}{\UTFK{D794}}%
+\DeclareUnicodeCharacter{D795}{\UTFK{D795}}%
+\DeclareUnicodeCharacter{D796}{\UTFK{D796}}%
+\DeclareUnicodeCharacter{D797}{\UTFK{D797}}%
+\DeclareUnicodeCharacter{D798}{\UTFK{D798}}%
+\DeclareUnicodeCharacter{D799}{\UTFK{D799}}%
+\DeclareUnicodeCharacter{D79A}{\UTFK{D79A}}%
+\DeclareUnicodeCharacter{D79B}{\UTFK{D79B}}%
+\DeclareUnicodeCharacter{D79C}{\UTFK{D79C}}%
+\DeclareUnicodeCharacter{D79D}{\UTFK{D79D}}%
+\DeclareUnicodeCharacter{D79E}{\UTFK{D79E}}%
+\DeclareUnicodeCharacter{D79F}{\UTFK{D79F}}%
+\DeclareUnicodeCharacter{D7A0}{\UTFK{D7A0}}%
+\DeclareUnicodeCharacter{D7A1}{\UTFK{D7A1}}%
+\DeclareUnicodeCharacter{D7A2}{\UTFK{D7A2}}%
+\DeclareUnicodeCharacter{D7A3}{\UTFK{D7A3}}%
+\DeclareUnicodeCharacter{D7A4}{\UTFK{D7A4}}%
+\DeclareUnicodeCharacter{D7A5}{\UTFK{D7A5}}%
+\DeclareUnicodeCharacter{D7A6}{\UTFK{D7A6}}%
+\DeclareUnicodeCharacter{D7A7}{\UTFK{D7A7}}%
+\DeclareUnicodeCharacter{D7A8}{\UTFK{D7A8}}%
+\DeclareUnicodeCharacter{D7A9}{\UTFK{D7A9}}%
+\DeclareUnicodeCharacter{D7AA}{\UTFK{D7AA}}%
+\DeclareUnicodeCharacter{D7AB}{\UTFK{D7AB}}%
+\DeclareUnicodeCharacter{D7AC}{\UTFK{D7AC}}%
+\DeclareUnicodeCharacter{D7AD}{\UTFK{D7AD}}%
+\DeclareUnicodeCharacter{D7AE}{\UTFK{D7AE}}%
+\DeclareUnicodeCharacter{D7AF}{\UTFK{D7AF}}%
diff --git a/language/japanese/japanese-otf/sty/otf.sty b/language/japanese/japanese-otf/sty/otf.sty
new file mode 100644
index 0000000000..c747f5d6a8
--- /dev/null
+++ b/language/japanese/japanese-otf/sty/otf.sty
@@ -0,0 +1,405 @@
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{otf}[2019/04/01 v1.7b8 psitau]
+\RequirePackage{keyval}
+%for processing options
+\newif\if@kana \@kanafalse
+\newif\if@macro \@macrotrue
+\newif\if@deluxe \@deluxefalse
+\newif\if@replace \@replacetrue
+\newif\if@bold \@boldfalse
+\newif\if@burasage \@burasagefalse
+\newif\if@newglyph \@newglyphfalse
+\newif\if@otf@uplatex \@otf@uplatexfalse
+\newif\if@otf@scale \@otf@scalefalse
+\newif\if@jsclasses \@jsclassesfalse
+
+\DeclareOption{nomacro}{\@macrofalse}
+\DeclareOption{nomacros}{\@macrofalse}
+\DeclareOption{noreplace}{\@replacefalse}
+\DeclareOption{bold}{\@replacetrue\@boldtrue}
+\DeclareOption{expert}{\@replacetrue\@kanatrue}
+\DeclareOption{deluxe}{\@boldfalse\@replacetrue\@deluxetrue}
+\DeclareOption{multi}{\AtEndOfPackage{\RequirePackage{mlutf}\RequirePackage{mlcid}}}
+\DeclareOption{burasage}{\@burasagetrue}
+\DeclareOption{uplatex}{\@otf@uplatextrue}
+\DeclareOption{jis2004}{\@newglyphtrue}
+\DeclareOption*{\otfpkg@setkey}
+\def\otfpkg@setkey{\expandafter\otfpkg@setkey@a\expandafter{\CurrentOption}}
+\def\otfpkg@setkey@a{\setkeys{otfpkg}}
+\define@key{otfpkg}{scale}{\@otf@scaletrue\def\utf@sc@le{#1}}
+
+\def\otf@JYn{\if@otf@uplatex JY2\else JY1\fi}
+\def\otf@JTn{\if@otf@uplatex JT2\else JT1\fi}
+\def\otf@pfx@{\if@otf@uplatex up\else \fi}
+\def\brsg@pfx@{\if@burasage brsg\else\fi}
+\def\nlck@sfx@{\if@newglyph n\else\fi}
+\ProcessOptions\relax
+%user interface
+%force catcode of \" be 12
+\count@\catcode`\"
+\catcode`\"=12
+\if@deluxe
+ \DeclareRobustCommand{\UTF}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\edef\reserved@b{\mgdefault}%
+ \ifx\k@family\reserved@a \kanjifamily{utfjg}\else\ifx\k@family\reserved@b
+ \kanjifamily{utfjmg}\else\kanjifamily{utfj}\fi\fi%
+ \uppercase{\set@character="#1}%
+ \endgroup%
+ }
+ \DeclareRobustCommand{\CID}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\edef\reserved@b{\mgdefault}%
+ \ifx\k@family\reserved@a \kanjifamily{cidjg}\else\ifx\k@family\reserved@b
+ \kanjifamily{cidjmg}\else\kanjifamily{cidj}\fi\fi%
+ \set@character=#1%
+ \endgroup%
+ }
+\else
+ \DeclareRobustCommand{\UTF}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{utfj}\uppercase{\set@character="#1}%
+ \endgroup%
+ }
+ \DeclareRobustCommand{\CID}[1]{\begingroup%
+ \edef\reserved@a{\gtdefault}\ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily{cidj}\set@character=#1%
+ \endgroup%
+ }
+\fi
+\gdef\Redefine@UTF{\@ifpackageloaded{hyperref}{%
+ \def\hyper@UTF##1{\ifHy@pdfstring\0x##1\else\csname UTF \endcsname{##1}\fi}
+ \def\UTF{\protect\hyper@UTF}}{}
+}
+\AtBeginDocument{\Redefine@UTF}
+%internal macros
+%macros by iNOUE Koich!
+\newcommand\set@character{\afterassignment\put@character\@tempcnta}
+\newcommand\put@character{%
+ \@tempcntb=\@tempcnta
+ \divide\@tempcntb by "1000
+ \kanjishape{\ifcase\@tempcntb0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or a\or b\or c\or d\or e\or f\fi}%
+ \selectfont%
+ \multiply\@tempcntb by "1000
+ \advance\@tempcnta by -\@tempcntb
+ \@tempcntb=\@tempcnta
+ \divide\@tempcntb by "40
+ \multiply\@tempcntb by "C0
+ \advance\@tempcnta by \@tempcntb
+ \if@otf@uplatex
+ \advance\@tempcnta by "113030
+ \char\@tempcnta%
+ \else
+ \advance\@tempcnta by "3030
+ \char\jis\@tempcnta%
+ \fi
+}
+\catcode`\"=\count@
+%end of changing catcode of \"
+\def\Declare@FontShape#1#2#3#4{%
+ \Declare@FontShapeEnc{\otf@JYn}{#1}{#2}{#4}{h}#3\@nil
+ \Declare@FontShapeEnc{\otf@JTn}{#1}{#2}{#4}{v}#3\@nil}
+\def\Declare@FontShapeEnc#1#2#3#4#5#6{\ifx\@nil#6\else
+ \DeclareFontShape{#1}{#2}{#3}{#6}{<->s*[\utf@sc@le]#4#6-#5}{}%
+ \Declare@FontShape@Enc{#1}{#2}{#3}{#4}{#5}\fi}
+\def\Declare@FontShape@Enc#1\fi{\fi\Declare@FontShapeEnc#1}
+\if@otf@scale
+ \relax
+\else
+ \@ifundefined{Cjascale}{%
+ %for jsclasses
+ \@ifclassloaded{jsreport}{\@jsclassestrue}{}
+ \@ifclassloaded{jsarticle}{\@jsclassestrue}{}
+ \@ifclassloaded{jsbook}{\@jsclassestrue}{}
+ \if@jsclasses\def\utf@sc@le{0.92469}\else\def\utf@sc@le{0.962216}\fi
+ }{\edef\utf@sc@le{\Cjascale}}
+\fi
+%definitions of alt-normal font family
+\if@replace
+ \DeclareErrorKanjiFont{\otf@JYn}{hmc}{m}{n}{10}
+ \DeclareKanjiSubstitution{\otf@JYn}{hmc}{m}{n}
+ \DeclareKanjiSubstitution{\otf@JTn}{hmc}{m}{n}
+ \DeclareKanjiFamily{\otf@JYn}{hmc}{}
+ \DeclareKanjiFamily{\otf@JTn}{hmc}{}
+ \DeclareKanjiFamily{\otf@JYn}{hgt}{}
+ \DeclareKanjiFamily{\otf@JTn}{hgt}{}
+ \DeclareRelationFont{\otf@JYn}{hmc}{m}{}{OT1}{cmr}{m}{}
+ \DeclareRelationFont{\otf@JTn}{hmc}{m}{}{OT1}{cmr}{m}{}
+ \DeclareRelationFont{\otf@JYn}{hmc}{bx}{}{OT1}{cmr}{bx}{}
+ \DeclareRelationFont{\otf@JTn}{hmc}{bx}{}{OT1}{cmr}{bx}{}
+ \if@deluxe
+ \DeclareRelationFont{\otf@JYn}{hgt}{m}{}{OT1}{cmss}{m}{}
+ \DeclareRelationFont{\otf@JTn}{hgt}{m}{}{OT1}{cmss}{m}{}
+ \DeclareRelationFont{\otf@JYn}{hgt}{bx}{}{OT1}{cmss}{bx}{}
+ \DeclareRelationFont{\otf@JTn}{hgt}{bx}{}{OT1}{cmss}{bx}{}
+ \else
+ \DeclareRelationFont{\otf@JYn}{hgt}{m}{}{OT1}{cmr}{bx}{}
+ \DeclareRelationFont{\otf@JTn}{hgt}{m}{}{OT1}{cmr}{bx}{}
+ \DeclareRelationFont{\otf@JYn}{hgt}{bx}{}{OT1}{cmr}{bx}{}
+ \DeclareRelationFont{\otf@JTn}{hgt}{bx}{}{OT1}{cmr}{bx}{}
+ \fi
+ \@ifpackageloaded{jisx0213}{\relax}{\def\mcdefault{hmc}\def\gtdefault{hgt}}
+ \@ifundefined{if@enablejfam}{%if disablejfam option is not available, do nothing.
+ }{%
+ \if@enablejfam
+ \if@compatibility\else
+ \DeclareSymbolFont{mincho}{\otf@JYn}{hmc}{m}{n}
+ \DeclareSymbolFontAlphabet{\mathmc}{mincho}
+ \SetSymbolFont{mincho}{bold}{\otf@JYn}{hmc}{bx}{n}
+ \DeclareMathAlphabet{\mathgt}{\otf@JYn}{hgt}{m}{n}
+ \SetMathAlphabet{\mathgt}{bold}{\otf@JYn}{hgt}{bx}{n}
+ \jfam\symmincho
+ \fi
+ \fi
+ }
+\fi
+\if@kana
+ \DeclareKanjiFamily{\otf@JYn}{ruby}{}
+ \DeclareKanjiFamily{\otf@JTn}{ruby}{}
+ \newcommand{\rubydefault}{ruby}
+ \if@deluxe
+ \DeclareKanjiFamily{\otf@JYn}{rubyg}{}
+ \DeclareKanjiFamily{\otf@JTn}{rubyg}{}
+ \DeclareRelationFont{\otf@JYn}{rubyg}{m}{}{OT1}{cmss}{m}{}
+ \DeclareRelationFont{\otf@JTn}{rubyg}{m}{}{OT1}{cmss}{m}{}
+ \DeclareRobustCommand\rubyfamily{\edef\reserved@a{\gtdefault}%
+ \edef\reserved@b{\mgdefault}%
+ \ifx\k@family\reserved@a \kanjifamily{rubyg}\else\ifx\k@family\reserved@b
+ \kanjifamily{rubymg}\else \kanjifamily{ruby}\fi\fi%
+ \selectfont}
+ \else
+ \DeclareRobustCommand\rubyfamily{\edef\reserved@a{\gtdefault}%
+ \ifx\k@family\reserved@a \kanjiseries{bx}\fi%
+ \kanjifamily\rubydefault\selectfont}
+ \fi
+ \AtBeginDocument{\ifx\rubykatuji\@undefined\else\def\rubykatuji{\rubyfamily\tiny}\fi}
+\fi
+%definition of normal font shape
+\if@kana
+ \DeclareFontShape{\otf@JYn}{hmc}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{ruby}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminr-h}{}
+ \DeclareFontShape{\otf@JTn}{ruby}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminr-v}{}
+\else
+ \if@replace
+ \DeclareFontShape{\otf@JYn}{hmc}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlminr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlminr\nlck@sfx@-v}{}
+ \fi
+\fi
+\if@replace\if@deluxe
+ \if@kana
+ \DeclareFontShape{\otf@JYn}{hmc}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminb\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothb\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminb-h}{}
+ \DeclareFontShape{\otf@JTn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminb-v}{}
+ \DeclareFontShape{\otf@JYn}{rubyg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothr-h}{}
+ \DeclareFontShape{\otf@JTn}{rubyg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothr-v}{}
+ \DeclareFontShape{\otf@JYn}{rubyg}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothb-h}{}
+ \DeclareFontShape{\otf@JTn}{rubyg}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothb-v}{}
+ \else
+ \DeclareFontShape{\otf@JYn}{hmc}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlminb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlminb\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothb\nlck@sfx@-v}{}
+ \fi
+\else
+ \if@kana
+ \if@bold
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothb\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothb\nlck@sfx@-v}{}
+ \else
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expgothr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{ruby}{bx}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubygothr\nlck@sfx@-v}{}
+ \fi
+ \else
+ \if@bold
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothb\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothb\nlck@sfx@-v}{}
+ \else
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgothr\nlck@sfx@-v}{}
+ \fi
+ \fi
+ \DeclareFontShape{\otf@JYn}{hmc}{bx}{n}{<->ssub*hgt/m/n}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{bx}{n}{<->ssub*hgt/m/n}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{bx}{n}{<->ssub*hgt/m/n}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{bx}{n}{<->ssub*hgt/m/n}{}
+\fi\fi
+%definition of extra fonts: maru gothic family, light series, eb series, prop. shape
+\if@deluxe
+ \def\mgdefault{mg}
+ \def\propdefault{prp}
+ \def\ebdefault{eb}
+ \def\ltdefault{l}
+ \DeclareKanjiFamily{\otf@JYn}{mg}{}
+ \DeclareKanjiFamily{\otf@JTn}{mg}{}
+ \DeclareRelationFont{\otf@JYn}{mg}{m}{}{OT1}{cmss}{m}{}
+ \DeclareRelationFont{\otf@JTn}{mg}{m}{}{OT1}{cmss}{m}{}
+ \DeclareMathAlphabet{\mathmg}{\otf@JYn}{mg}{m}{n}
+ \DeclareRobustCommand\mgfamily{\not@math@alphabet\mgfamily\mathmg%
+ \kanjifamily\mgdefault\selectfont}
+ \DeclareTextFontCommand{\textmg}{\mgfamily}
+ \DeclareKanjiFamily{\otf@JYn}{rubymg}{}
+ \DeclareKanjiFamily{\otf@JTn}{rubymg}{}
+ \DeclareRelationFont{\otf@JYn}{rubymg}{m}{}{OT1}{cmss}{m}{}
+ \DeclareRelationFont{\otf@JTn}{rubymg}{m}{}{OT1}{cmss}{m}{}
+ \DeclareRobustCommand\propshape
+ {\not@math@alphabet\propshape\relax
+ \kanjishape\propdefault\selectfont}
+ \DeclareRobustCommand\ebseries
+ {\not@math@alphabet\ebseries\relax
+ \kanjiseries\ebdefault\selectfont}
+ \DeclareRobustCommand\ltseries
+ {\not@math@alphabet\ltseries\relax
+ \kanjiseries\ltdefault\selectfont}
+ \if@kana
+ \DeclareFontShape{\otf@JYn}{mg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expmgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{mg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expmgothr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{rubymg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubymgothr-h}{}
+ \DeclareFontShape{\otf@JTn}{rubymg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubymgothr-v}{}
+ \DeclareFontShape{\otf@JYn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminl\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ expminl\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{ruby}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminl-h}{}
+ \DeclareFontShape{\otf@JTn}{ruby}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ rubyminl-v}{}
+ \else
+ \DeclareFontShape{\otf@JYn}{mg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlmgothr\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{mg}{m}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlmgothr\nlck@sfx@-v}{}
+ \DeclareFontShape{\otf@JYn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ nmlminl\nlck@sfx@-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{l}{n}{<-> s * [\utf@sc@le] \otf@pfx@ nmlminl\nlck@sfx@-v}{}
+ \fi
+ \DeclareFontShape{\otf@JYn}{hgt}{eb}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgotheb-h}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{eb}{n}{<-> s * [\utf@sc@le] \otf@pfx@ \brsg@pfx@ nmlgotheb-v}{}
+ \DeclareFontShape{\otf@JYn}{hmc}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiraminw3-h}{}
+ \DeclareFontShape{\otf@JYn}{hmc}{bx}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiraminw6-h}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phirakakuw3-h}{}
+ \DeclareFontShape{\otf@JYn}{hgt}{bx}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phirakakuw6-h}{}
+ \DeclareFontShape{\otf@JYn}{mg}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiramaruw4-h}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiraminw3-v}{}
+ \DeclareFontShape{\otf@JTn}{hmc}{bx}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiraminw6-v}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phirakakuw3-v}{}
+ \DeclareFontShape{\otf@JTn}{hgt}{bx}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phirakakuw6-v}{}
+ \DeclareFontShape{\otf@JTn}{mg}{m}{prp}{<-> s * [\utf@sc@le] \otf@pfx@ phiramaruw4-v}{}
+\fi
+%definition of normal utf/cid fonts
+\DeclareKanjiFamily{\otf@JYn}{utfj}{}
+\DeclareKanjiFamily{\otf@JTn}{utfj}{}
+\DeclareKanjiFamily{\otf@JYn}{cidj}{}
+\DeclareKanjiFamily{\otf@JTn}{cidj}{}
+\Declare@FontShape{utfj}{m}{0123456789abcdef}{utfjmr\nlck@sfx@}
+\Declare@FontShape{cidj}{m}{012345}{cidjmr}
+%definition of other utf/cid fonts
+\if@deluxe
+ \Declare@FontShape{utfj}{bx}{0123456789abcdef}{utfjmb\nlck@sfx@}
+ \Declare@FontShape{cidj}{bx}{012345}{cidjmb}
+ \DeclareKanjiFamily{\otf@JYn}{utfjg}{}
+ \DeclareKanjiFamily{\otf@JTn}{utfjg}{}
+ \DeclareKanjiFamily{\otf@JYn}{cidjg}{}
+ \DeclareKanjiFamily{\otf@JTn}{cidjg}{}
+ \Declare@FontShape{utfjg}{m}{0123456789abcdef}{utfjgr\nlck@sfx@}
+ \Declare@FontShape{cidjg}{m}{012345}{cidjgr}
+ \Declare@FontShape{utfjg}{bx}{0123456789abcdef}{utfjgb\nlck@sfx@}
+ \Declare@FontShape{cidjg}{bx}{012345}{cidjgb}
+ \DeclareKanjiFamily{\otf@JYn}{utfjmg}{}
+ \DeclareKanjiFamily{\otf@JTn}{utfjmg}{}
+ \DeclareKanjiFamily{\otf@JYn}{cidjmg}{}
+ \DeclareKanjiFamily{\otf@JTn}{cidjmg}{}
+ \Declare@FontShape{utfjmg}{m}{0123456789abcdef}{utfjmgr\nlck@sfx@}
+ \Declare@FontShape{cidjmg}{m}{012345}{cidjmgr}
+ \Declare@FontShape{utfj}{l}{0123456789abcdef}{utfjml\nlck@sfx@}
+ \Declare@FontShape{cidj}{l}{012345}{cidjml}
+\else
+ \if@bold
+ \Declare@FontShape{utfj}{bx}{0123456789abcdef}{utfjgb\nlck@sfx@}
+ \Declare@FontShape{cidj}{bx}{012345}{cidjgb}
+ \else
+ \Declare@FontShape{utfj}{bx}{0123456789abcdef}{utfjgr\nlck@sfx@}
+ \Declare@FontShape{cidj}{bx}{012345}{cidjgr}
+ \fi
+\fi
+\if@macro
+ %input ajmacros.sty
+ \IfFileExists{ajmacros.sty}{\RequirePackage{ajmacros}}{\PackageError{otf}{No File ajmacros.sty!}{}}%2003/03/12
+ %for literature
+ \DeclareRobustCommand\ajKunoji{\iftdir\mbox{\UTF{3033}\UTF{3035}}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \DeclareRobustCommand\ajKunojiwithBou{\iftdir\mbox{\bou{\mbox{\UTF{3033}}}\bou{\mbox{\UTF{3035}}}}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \DeclareRobustCommand\ajDKunoji{\iftdir\mbox{\UTF{3034}\UTF{3035}}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \DeclareRobustCommand\ajDKunojiwithBou{\iftdir\mbox{\bou{\mbox{\UTF{3034}}}\bou{\mbox{\UTF{3035}}}}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \newcommand\ajNinoji{\CID{12106}}
+ \newcommand\ajvarNinoji{\iftdir\CID{12107}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \newcommand\ajYusuriten{\iftdir\CID{16193}\else
+ \PackageError{otf}{A TATE character in YOKO mode!}{Change a direction to TATE.}%2003/03/12
+ \fi}
+ \newcommand\ajMasu{\UTF{303c}}
+ \newcommand\ajYori{\UTF{309f}}
+ \newcommand\ajKoto{\UTF{30ff}}
+ \newcommand\ajUta{\UTF{303d}}
+ %dingbats
+ \newcommand\ajCommandKey{\UTF{2318}}
+ \newcommand\ajReturnKey{\UTF{23ce}}
+ \newcommand\ajCheckmark{\UTF{2713}}
+ \newcommand\ajVisibleSpace{\UTF{2423}}
+ \newcommand\ajSenteMark{\UTF{2617}}
+ \newcommand\ajGoteMark{\UTF{2616}}
+ \newcommand\ajClub{\UTF{2663}}
+ \newcommand\ajHeart{\UTF{2661}}
+ \newcommand\ajSpade{\UTF{2660}}
+ \newcommand\ajDiamond{\UTF{2662}}
+ \newcommand\ajvarClub{\UTF{2667}}
+ \newcommand\ajvarHeart{\UTF{2665}}
+ \newcommand\ajvarSpade{\UTF{2664}}
+ \newcommand\ajvarDiamond{\UTF{2666}}
+ \newcommand\ajPhone{\UTF{260e}}
+ \newcommand\ajPostal{\UTF{3020}}
+ \newcommand\ajvarPostal{\UTF{3036}}
+ \newcommand\ajSun{\UTF{2600}}
+ \newcommand\ajCloud{\UTF{2601}}
+ \newcommand\ajUmbrella{\UTF{2602}}
+ \newcommand\ajSnowman{\UTF{2603}}
+ \newcommand\ajJIS{\UTF{3004}}
+ \newcommand\ajJAS{\CID{12088}}
+ \newcommand\ajBall{\CID{12097}}
+ \newcommand\ajHotSpring{\UTF{2668}}
+ \newcommand\ajWhiteSesame{\UTF{fe46}}
+ \newcommand\ajBlackSesame{\UTF{fe45}}
+ \newcommand\ajWhiteFlorette{\UTF{2740}}
+ \newcommand\ajBlackFlorette{\UTF{273f}}
+ \newcommand\ajRightBArrow{\CID{8206}}
+ \newcommand\ajLeftBArrow{\CID{8207}}
+ \newcommand\ajUpBArrow{\CID{8208}}
+ \newcommand\ajDownBArrow{\CID{8209}}
+ \newcommand\ajRightHand{\CID{8219}}
+ \newcommand\ajLeftHand{\CID{8220}}
+ \newcommand\ajUpHand{\CID{8221}}
+ \newcommand\ajDownHand{\CID{8222}}
+ \newcommand\ajRightScissors{\CID{12176}}
+ \newcommand\ajLeftScissors{\CID{12175}}
+ \newcommand\ajUpScissors{\CID{12177}}
+ \newcommand\ajDownScissors{\CID{12178}}
+ \newcommand\ajRightWArrow{\CID{12197}}
+ \newcommand\ajLeftWArrow{\CID{12196}}
+ \newcommand\ajUpWArrow{\CID{12198}}
+ \newcommand\ajDownWArrow{\CID{12199}}
+ \newcommand\ajRightDownArrow{\CID{12202}}
+ \newcommand\ajLeftDownArrow{\CID{12203}}
+ \newcommand\ajLeftUpArrow{\CID{12204}}
+ \newcommand\ajRightUpArrow{\CID{12205}}
+\fi
+\endinput
diff --git a/language/japanese/japanese-otf/sty/redeffont.sty b/language/japanese/japanese-otf/sty/redeffont.sty
new file mode 100644
index 0000000000..5582db0162
--- /dev/null
+++ b/language/japanese/japanese-otf/sty/redeffont.sty
@@ -0,0 +1,211 @@
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{redeffont}[2019/04/01 v1.2.3 psitau]
+
+\newif\if@asciiclasses \@asciiclassesfalse
+\newif\if@articleclass \@articleclassfalse
+\newif\if@bookclass \@bookclassfalse
+\@ifclassloaded{jarticle}{\@asciiclassestrue\@articleclasstrue}{}
+\@ifclassloaded{jbook}{\@asciiclassestrue\@bookclasstrue}{}
+\@ifclassloaded{jreport}{\@asciiclassestrue}{}
+\@ifclassloaded{tarticle}{\@asciiclassestrue\@articleclasstrue}{}
+\@ifclassloaded{tbook}{\@asciiclassestrue\@bookclasstrue}{}
+\@ifclassloaded{treport}{\@asciiclassestrue}{}
+
+\if@asciiclasses \else \endinput\fi
+\def\otf@tmp{\newif\if@mainmatter}
+\if@articleclass\otf@tmp\fi
+
+\def\headfont{\gtfamily\bfseries}
+\def\part@head@font{\headfont}
+\def\chapter@head@font{\headfont}
+\def\section@head@font{\headfont}
+\def\subsection@head@font{\headfont}
+\def\subsubsection@head@font{\headfont}
+\def\paragraph@head@font{\headfont}
+\def\subparagraph@head@font{\headfont}
+\def\abstract@head@font{\headfont}
+\def\description@label@font{\headfont}
+\def\toc@part@font{\headfont}
+\def\toc@chapter@font{\headfont}
+\def\toc@section@font{\headfont}
+\renewcommand{\section}{\@startsection{section}{1}{\z@}%
+ {1.5\Cvs \@plus.5\Cdp \@minus.2\Cdp}%
+ {.5\Cvs \@plus.3\Cdp}%
+ {\reset@font\Large\section@head@font}}%changed
+\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
+ {1.5\Cvs \@plus.5\Cdp \@minus.2\Cdp}%
+ {.5\Cvs \@plus.3\Cdp}%
+ {\reset@font\large\subsection@head@font}}%changed
+\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
+ {1.5\Cvs \@plus.5\Cdp \@minus.2\Cdp}%
+ {.5\Cvs \@plus.3\Cdp}%
+ {\reset@font\normalsize\subsubsection@head@font}}%changed
+\renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus 1ex \@minus .2ex}%
+ {-1em}%
+ {\reset@font\normalsize\paragraph@head@font}}%changed
+\renewcommand{\subparagraph}{\@startsection{subparagraph}{5}{\z@}%
+ {3.25ex \@plus 1ex \@minus .2ex}%
+ {-1em}%
+ {\reset@font\normalsize\subparagraph@head@font}}%changed
+\renewcommand{\descriptionlabel}[1]{%
+ \hspace\labelsep\normalfont\description@label@font#1}%changed
+
+\if@bookclass \relax\else
+ \if@titlepage
+ \renewenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \@beginparpenalty\@lowpenalty
+ \begin{center}%
+ {\abstract@head@font\abstractname}%changed
+ \@endparpenalty\@M
+ \end{center}}%
+ {\par\vfil\null\endtitlepage}
+ \else
+ \renewenvironment{abstract}{%
+ \if@twocolumn
+ \section*{\abstractname}%
+ \else
+ \small
+ \begin{center}%
+ {\abstract@head@font\abstractname\vspace{-.5em}\vspace{\z@}}%changed
+ \end{center}%
+ \quotation
+ \fi}{\if@twocolumn\else\endquotation\fi}
+ \fi
+\fi%end of \if@bookclass
+
+\if@articleclass
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{%
+ \prepartname\thepart\postpartname\hspace{1zw}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\parindent\z@\raggedright
+ \interlinepenalty\@M\reset@font
+ \ifnum \c@secnumdepth >\m@ne
+ \Large\part@head@font\prepartname\thepart\postpartname%changed
+ \par\nobreak
+ \fi
+ \huge\part@head@font#2\par}%changed
+ \nobreak\vskip3ex\@afterheading}
+\def\@spart#1{{%
+ \parindent\z@\raggedright
+ \interlinepenalty\@M\reset@font
+ \huge\part@head@font#1\par}%changed
+ \nobreak\vskip3ex\@afterheading}
+\renewcommand*{\l@part}[2]{%
+ \ifnum \c@tocdepth >-2\relax
+ \addpenalty{\@secpenalty}%
+ \addvspace{2.25em \@plus\p@}%
+ \begingroup
+ \parindent\z@\rightskip\@pnumwidth
+ \parfillskip-\@pnumwidth
+ {\leavevmode\large\toc@part@font%changed
+ \setlength\@lnumwidth{4zw}%
+ #1\hfil\nobreak
+ \hbox to\@pnumwidth{\hss#2}}\par
+ \nobreak
+ \if@compatibility
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \fi
+ \endgroup
+ \fi}
+\renewcommand*{\l@section}[2]{%
+ \ifnum \c@tocdepth >\z@
+ \addpenalty{\@secpenalty}%
+ \addvspace{1.0em \@plus\p@}%
+ \begingroup
+ \parindent\z@ \rightskip\@pnumwidth \parfillskip-\rightskip
+ \leavevmode\toc@section@font%changed
+ \setlength\@lnumwidth{1.5em}%
+ \advance\leftskip\@lnumwidth \hskip-\leftskip
+ #1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par
+ \endgroup
+ \fi}
+
+\else%\if@articleclass-->false
+
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{%
+ \prepartname\thepart\postpartname\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty\@M\reset@font
+ \ifnum \c@secnumdepth >-2\relax
+ \huge\part@head@font\prepartname\thepart\postpartname%changed
+ \par\vskip20\p@
+ \fi
+ \Huge\part@head@font#2\par}%changed
+ \@endpart}
+\def\@spart#1{{%
+ \centering
+ \interlinepenalty\@M\reset@font
+ \Huge\part@head@font#1\par}%changed
+ \@endpart}
+\renewcommand*{\l@part}[2]{%
+ \ifnum \c@tocdepth >-2\relax
+ \addpenalty{-\@highpenalty}%
+ \addvspace{2.25em \@plus\p@}%
+ \begingroup
+ \parindent\z@\rightskip\@pnumwidth
+ \parfillskip-\@pnumwidth
+ {\leavevmode\large\toc@part@font%changed
+ \setlength\@lnumwidth{4zw}%
+ #1\hfil\nobreak
+ \hbox to\@pnumwidth{\hss#2}}\par
+ \nobreak
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \endgroup
+ \fi}
+\renewcommand*{\l@chapter}[2]{%
+ \ifnum \c@tocdepth >\m@ne
+ \addpenalty{-\@highpenalty}%
+ \addvspace{1.0em \@plus\p@}%
+ \begingroup
+ \parindent\z@ \rightskip\@pnumwidth \parfillskip-\rightskip
+ \leavevmode\toc@chapter@font%changed
+ \setlength\@lnumwidth{4zw}%
+ \advance\leftskip\@lnumwidth \hskip-\leftskip
+ #1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par
+ \penalty\@highpenalty
+ \endgroup
+ \fi}
+\def\@makechapterhead#1{\hbox{}%
+ \vskip2\Cvs
+ {\parindent\z@
+ \raggedright
+ \reset@font\huge\chapter@head@font%changed
+ \leavevmode
+ \ifnum \c@secnumdepth >\m@ne
+ \setlength\@tempdima{\linewidth}%
+ \if@mainmatter
+ \setbox\z@\hbox{\@chapapp\thechapter\@chappos\hskip1zw}%
+ \addtolength\@tempdima{-\wd\z@}%
+ \unhbox\z@\nobreak
+ \fi
+ \vtop{\hsize\@tempdima#1}%
+ \else
+ #1\relax
+ \fi}\nobreak\vskip3\Cvs}
+\def\@makeschapterhead#1{\hbox{}%
+ \vskip2\Cvs
+ {\parindent\z@
+ \raggedright
+ \reset@font\huge\chapter@head@font%changed
+ \leavevmode
+ \setlength\@tempdima{\linewidth}%
+ \vtop{\hsize\@tempdima#1}}\vskip3\Cvs}
+\fi%end of \if@articleclass
diff --git a/language/japanese/japanese-otf/test/brsgtest.tex b/language/japanese/japanese-otf/test/brsgtest.tex
new file mode 100644
index 0000000000..7b812f4bcf
--- /dev/null
+++ b/language/japanese/japanese-otf/test/brsgtest.tex
@@ -0,0 +1,153 @@
+\documentclass[twocolumn]{tbook}
+\usepackage[deluxe,expert,burasage]{otf}
+\textwidth 13zw
+\columnsep 3zw
+\columnseprule 1pt
+\linewidth 5zw
+\parindent 0zw
+\pagestyle{empty}
+%\parskip \baselineskip
+\begin{document}
+C
+D
+
+CCCCD
+
+CCCD
+
+CDD
+
+Bvu
+
+\newpage
+
+\textgt{^Cvʂ́Agݍ킹B}
+
+
+
+i
+
+j
+
+E
+
+B
+
+\
+
+H
+
+A
+
+i
+
+ii
+
+ij
+
+iE
+
+iB
+
+i\
+
+iH
+
+iA
+
+j
+
+ji
+
+jj
+
+jE
+
+jB
+
+j\
+
+jH
+
+jA
+
+E
+
+Ei
+
+Ej
+
+EE
+
+EB
+
+E\
+
+EH
+
+EA
+
+B
+
+Bi
+
+Bj
+
+BE
+
+BB
+
+B\
+
+BH
+
+BA
+
+\
+
+\i
+
+\j
+
+\E
+
+\B
+
+\\
+
+\H
+
+\A
+
+H
+
+Hi
+
+Hj
+
+HE
+
+HB
+
+H\
+
+HH
+
+HA
+
+A
+
+Ai
+
+Aj
+
+AE
+
+AB
+
+A\
+
+AH
+
+AA
+\end{document}
diff --git a/language/japanese/japanese-otf/test/jis2004.tex b/language/japanese/japanese-otf/test/jis2004.tex
new file mode 100644
index 0000000000..8842d51b0a
--- /dev/null
+++ b/language/japanese/japanese-otf/test/jis2004.tex
@@ -0,0 +1,59 @@
+\documentclass[a4paper,titlepage, draft]{jarticle}
+%\documentclass[a4paper,titlepage, draft,landscape]{jarticle}
+\usepackage[deluxe, expert, multi, jis2004]{otf}
+%\usepackage[deluxe, multi, jis2004]{otf}
+%\usepackage[expert, multi, jis2004]{otf}
+%\usepackage[multi, jis2004]{otf}
+%\usepackage[bold, multi, jis2004]{otf}
+%\usepackage[noreplace, multi, jis2004]{otf}
+\usepackage{redeffont}
+\usepackage{furikana}
+\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\ajCIDVarDef{$B$j(B}{12746}
+\ajCIDVarDef{$B9b(B}{8705}
+\ajUTFVarDef{$B2*(B}{9DD7}
+\pagestyle{empty}
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+\def\testglyph{$B0)020;0n0q0s0|1*191=1B2(2`2g2v2z3"3*3k3s3x4M4e5+5@5b5d5h6*6B6O6t6{6}7)777d7q7~8#808A9+9<9Q9t9y:5:g;';*;,;-;A<]<^=6=]=r=s>%>d>s?*?V?`@"@q@y@z@|@}A'A9ALB7B=B\B}C)C.C7CpCuD=DHDJDTDrE"E'E.EFEHEKERFTF[FfFgFjG)GWGgGiG}H$H@HTHpHuI#I/I5I?I@INI`JCJMJNJSJZJ\JyK)KpKxLYL_LbLlLzL|M2NzN{N|O1QMRWR{S^SsWQY([y\t`Da1a4aVc.c^d'd@g'g[gjiJigj$kCpKpWqYrm(B}
+\def\testutf{\UTF{9022}\UTF{82A6}\UTF{98F4}\UTF{6EA2}\UTF{8328}\UTF{9C2F}\UTF{6DEB}\UTF{8FC2}\UTF{53A9}\UTF{5642}\UTF{990C}\UTF{8956}\UTF{8FE6}\UTF{7259}\UTF{5EFB}\UTF{6062}\UTF{6666}\UTF{87F9}\UTF{845B}\UTF{9784}\UTF{91DC}\UTF{7FF0}\UTF{7FEB}\UTF{5FBD}\UTF{7947}\UTF{6C72}\UTF{7078}\UTF{7B08}\UTF{537F}\UTF{9957}\UTF{50C5}\UTF{55B0}\UTF{6ADB}\UTF{5C51}\UTF{7C82}\UTF{7941}\UTF{9699}\UTF{5026}\UTF{6372}\UTF{727D}\UTF{9375}\UTF{8AFA}\UTF{5DF7}\UTF{6897}\UTF{818F}\UTF{9D60}\UTF{7511}\UTF{53C9}\UTF{698A}\UTF{85A9}\UTF{9BD6}\UTF{9306}\UTF{9BAB}\UTF{9910}\UTF{6753}\UTF{707C}\UTF{914B}\UTF{696F}\UTF{85AF}\UTF{85F7}\UTF{54E8}\UTF{9798}\UTF{6756}\UTF{8755}\UTF{8A0A}\UTF{9017}\UTF{647A}\UTF{64B0}\UTF{714E}\UTF{717D}\UTF{7A7F}\UTF{7BAD}\UTF{8A6E}\UTF{564C}\UTF{9061}\UTF{63C3}\UTF{905C}\UTF{817F}\UTF{86F8}\UTF{8FBF}\UTF{6A3D}\UTF{6B4E}\UTF{8A3B}\UTF{7026}\UTF{6357}\UTF{69CC}\UTF{939A}\UTF{8FBB}\UTF{633A}\UTF{912D}\UTF{64E2}\UTF{6EBA}\UTF{514E}\UTF{5835}\UTF{5C60}\UTF{8CED}\UTF{701E}\UTF{9041}\UTF{8B0E}\UTF{7058}\UTF{6962}\UTF{79B0}\UTF{724C}\UTF{9019}\UTF{79E4}\UTF{99C1}\UTF{7BB8}\UTF{53DB}\UTF{633D}\UTF{8AB9}\UTF{6A0B}\UTF{7A17}\UTF{903C}\UTF{8B2C}\UTF{8C79}\UTF{5EDF}\UTF{7015}\UTF{65A7}\UTF{853D}\UTF{77A5}\UTF{8511}\UTF{7BC7}\UTF{5A29}\UTF{97AD}\UTF{5E96}\UTF{84EC}\UTF{9C52}\UTF{8FC4}\UTF{5132}\UTF{9905}\UTF{7C7E}\UTF{723A}\UTF{9453}\UTF{6108}\UTF{7337}\UTF{6F23}\UTF{7149}\UTF{7C3E}\UTF{6994}\UTF{5C62}\UTF{51A4}\UTF{53DF}\UTF{54AC}\UTF{5632}\UTF{56C0}\UTF{5F98}\UTF{6241}\UTF{68D8}\UTF{6A59}\UTF{72E1}\UTF{7515}\UTF{7526}\UTF{75BC}\UTF{795F}\UTF{7AC8}\UTF{7B75}\UTF{7BDD}\UTF{8171}\UTF{8258}\UTF{8292}\UTF{8654}\UTF{8703}\UTF{8805}\UTF{8A1D}\UTF{9744}\UTF{9771}\UTF{9A19}\UTF{9D09}\UTF{4FF1}\UTF{525D}\UTF{541E}\UTF{5653}\UTF{59F8}\UTF{5C5B}\UTF{5E77}\UTF{7626}\UTF{7E6B}\UTF{646F}\UTF{FA40}\UTF{FA20}\UTF{8B7F}\UTF{609E}\UTF{7152}\UTF{9A4A}\UTF{5906}\UTF{66B5}}
+\begin{document}
+[mc/m]
+
+\testglyph
+
+\testutf
+
+{\bfseries%
+[mc/bx]
+
+\testglyph
+
+\testutf
+}
+
+{\gtfamily
+[gt/m]
+
+\testglyph
+
+\testutf
+
+{\bfseries%
+[gt/bx]
+
+\testglyph
+
+\testutf
+}}
+
+{\mgfamily
+[mg/m]
+
+\testglyph
+
+\testutf
+}
+\end{document}
diff --git a/language/japanese/japanese-otf/test/koreanexample.tex b/language/japanese/japanese-otf/test/koreanexample.tex
new file mode 100644
index 0000000000..cf2b8ade3a
--- /dev/null
+++ b/language/japanese/japanese-otf/test/koreanexample.tex
@@ -0,0 +1,44 @@
+\documentclass[papersize]{jsarticle}
+\usepackage[utf8]{inputenc}
+\usepackage[expert, multi]{otf}
+\input{otf-hangul.dfu}
+\DeclareUnicodeCharacter{5F3A}{\UTF{5F3A}}% 強
+\DeclareUnicodeCharacter{654E}{\UTF{654E}}% 教
+\DeclareUnicodeCharacter{5FB5}{\UTF{5FB5}}% 徴 jisl34k_uo.dfu: 1-84-36 cjk
+\usepackage{palatino}
+\renewcommand{\ttdefault}{lmtt}
+\usepackage{url}
+\pagestyle{empty}
+
+\begin{document}
+
+% 横書き (horizontal writing)
+\fbox{\vbox{\hsize=21zw
+{\TeX}はスタンフォード大学のクヌース教授によって開発された組版システムであり、組版の美しさと強力なマクロ機能を特徴としている。\par
+\bigskip
+{\noautoxspacing
+{\TeX}은 스탠포드 大學의 크누스 敎授에 의해 開發된 組版 시스템으로, 組版의 美와 强力한 매크로 機能이 特徵이다.\par
+}}}
+
+% 縦書き (vertical writing)
+\fbox{\vbox{\hsize=21zw \tate\adjustbaseline
+{\TeX}はスタンフォード大学のクヌース教授によって開発された組版システムであり、組版の美しさと強力なマクロ機能を特徴としている。\par
+\bigskip
+{\noautoxspacing
+{\TeX}은 스탠포드 大學의 크누스 敎授에 의해 開發된 組版 시스템으로、組版의 美와 强力한 매크로 機能이 特徵이다。
+\par}}}
+
+\begin{thebibliography}{9}
+ \bibitem{OkumuraCho2004}
+ Cho, J.-H. and Okumura, H.:
+ Typesetting CJK languages with Omega, \TeX, XML, and Digital Typography,
+ Lecture Notes in Computer Science \textbf{3130}, Springer, 2004,
+ pp.~139--148. \newline\url{http://project.ktug.or.kr/omega-cjk/cjk-otp/}.
+ \bibitem{TsuchimuraKuroki2008}
+ Tsuchimura, N. and Kuroki, Y.:
+ Development of Japanese \TeX\ environment,
+ \textit{The Asian Journal of \TeX}, \textbf{2}~(2008), pp.~53--62.
+ \newblock\url{http://ajt.ktug.kr/assets/2008/5/1/0201tsuchimura_kuroki.pdf}.
+\end{thebibliography}
+
+\end{document}
diff --git a/language/japanese/japanese-otf/test/otftest.tex b/language/japanese/japanese-otf/test/otftest.tex
new file mode 100644
index 0000000000..57bee19e10
--- /dev/null
+++ b/language/japanese/japanese-otf/test/otftest.tex
@@ -0,0 +1,148 @@
+\documentclass[a4paper,titlepage, draft]{jarticle}
+%\documentclass[a4paper,titlepage, draft,landscape]{jarticle}
+\usepackage[deluxe, expert, multi]{otf}
+%\usepackage[deluxe, multi]{otf}
+%\usepackage[expert, multi]{otf}
+%\usepackage[multi]{otf}
+%\usepackage[bold, multi]{otf}
+%\usepackage[noreplace, multi]{otf}
+\usepackage{redeffont}
+\usepackage{furikana}
+\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\ajCIDVarDef{$B$j(B}{12746}
+\ajCIDVarDef{$B9b(B}{8705}
+\ajUTFVarDef{$B2*(B}{9DD7}
+\pagestyle{empty}
+\makeatletter
+\ifx\rubyfamily\@undefined\let\rubyfamily=\relax\fi
+\ifx\mgfamily\@undefined\let\mgfamily=\relax\fi
+\makeatother
+\begin{document}
+\section{$B8+=P$7(B}
+
+$B%*%W%7%g%s!'(B\texttt{expert}, \texttt{deluxe}
+
+\vspace{\baselineskip}
+\begin{tabular}{l||ccccc}
+$B%U%)%s%H(B & $B2>L>(B & $B4A;z(B & UTF & CID & $B%k%S(B\\
+\hline
+mc/m & $B$R$i$+$J(B & $B4A;z(B & \UTF{9DD7} & \CID{8705} & {\rubyfamily $B?6$j$+$J(B}\\
+mc/bx & {\bfseries $B$R$i$+$J(B} & {\bfseries $B4A;z(B} & {\bfseries\UTF{9DD7}} & {\bfseries\CID{8705}} & {\bfseries\rubyfamily $B?6$j$+$J(B}\\
+gt/m & {\gtfamily $B$R$i$+$J(B} & {\gtfamily $B4A;z(B} & {\gtfamily\UTF{9DD7}} & {\gtfamily\CID{8705}} & {\gtfamily\rubyfamily $B?6$j$+$J(B}\\
+gt/bx & {\gtfamily\bfseries $B$R$i$+$J(B} & {\gtfamily\bfseries $B4A;z(B} & {\gtfamily\bfseries\UTF{9DD7}} & {\gtfamily\bfseries\CID{8705}} & {\gtfamily\bfseries\rubyfamily $B?6$j$+$J(B}\\
+mg/m & {\mgfamily $B$R$i$+$J(B} & {\mgfamily $B4A;z(B} & {\mgfamily\UTF{9DD7}} & {\mgfamily\CID{8705}} & {\mgfamily\rubyfamily $B?6$j$+$J(B}\\
+\end{tabular}
+\vspace{\baselineskip}
+
+$BF|K\!'(B\UTF{9aa8}$B!!4JBN;z!'(B\UTFC{9aa8}$B!!HKqs;z!'(B\UTFT{9aa8}$B!!D+A/!'(B\UTFK{9aa8}
+
+$BF|K\!'(B\UTF{6d77}$B!!4JBN;z!'(B\UTFC{6d77}$B!!HKqs;z!'(B\UTFT{6d77}$B!!D+A/!'(B\UTFK{6d77}
+
+\kana{$B4A;z(B}{$B?6$j$+$J(B}{\bfseries \kana{$B4A;z(B}{$B?6$j$+$J(B}}%
+{\gtfamily\kana{$B4A;z(B}{$B?6$j$+$J(B}\bfseries \kana{$B4A;z(B}{$B?6$j$+$J(B}}
+{\mgfamily\kana{$B4A;z(B}{$B?6$j$+$J(B}}
+
+\kana{\UTF{9DD7}}{$B$+$J(B}\kana{$B2*(B}{$B$+$J(B}
+
+\Kana[3]{\UTFK{c548},\UTFK{b155},\UTFK{d558},\UTFK{c138},\UTFK{c694}}{$B%"%s(B,$B%K%g%s(B,$B%O(B,$B%;(B,$B%h(B}
+
+\clearpage
+[mc/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\bfseries%
+[mc/bx]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+
+{\gtfamily
+[gt/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\bfseries%
+[gt/bx]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}}
+
+{\mgfamily
+[mg/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+
+{\rubyfamily%
+[ruby/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\bfseries%
+[ruby/bx]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}}
+
+{\gtfamily\rubyfamily%
+[rubyg/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+{\gtfamily\rubyfamily\bfseries%
+[rubyg/bx]
+
+\fbox{\hbox{\tate\Huge $B$!(B}}
+
+\fbox{\hbox{\yoko\Huge $B$!(B}}
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}}
+
+{\mgfamily\rubyfamily%
+[rubymg/m]
+
+$B$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
+$B$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!3!4!5!6!<(B
+
+$B%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
+$B%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+\end{document}
diff --git a/language/japanese/japanese-otf/test/pkanatest.tex b/language/japanese/japanese-otf/test/pkanatest.tex
new file mode 100644
index 0000000000..dda71ea41f
--- /dev/null
+++ b/language/japanese/japanese-otf/test/pkanatest.tex
@@ -0,0 +1,32 @@
+\documentclass[a4paper]{jarticle}
+\usepackage[deluxe]{otf}
+\pagestyle{empty}
+\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\begin{document}
+\huge
+\kanjiskip 0pt plus 1sp minus 1sp
+\xkanjiskip 0.25zw plus 1sp minus 1sp
+{\propshape
+\noindent $B!3!4!5!6!<$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+\bfseries
+\noindent $B!3!4!5!6!<$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+
+{\gtfamily\mdseries\propshape
+\noindent $B!3!4!5!6!<$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+
+\bfseries\propshape
+\noindent $B!3!4!5!6!<$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+
+{\mgfamily\propshape
+\noindent $B!3!4!5!6!<$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B}
+
+{\gtfamily\ebseries
+\noindent $B!3!4!5!6!<$!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v(B
+}
+
+
+\end{document}
+
diff --git a/language/japanese/japanese-otf/test/pkanatest2.tex b/language/japanese/japanese-otf/test/pkanatest2.tex
new file mode 100644
index 0000000000..79c0107fe3
--- /dev/null
+++ b/language/japanese/japanese-otf/test/pkanatest2.tex
@@ -0,0 +1,47 @@
+\documentclass[a4paper,draft,twocolumn]{jarticle}
+\usepackage[deluxe]{otf}
+\pagestyle{empty}
+\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+\parindent=0zw
+\textwidth=25zw
+\columnsep=1zw
+\makeatletter
+\long\def\test{$B$R$i$+$J!V$R$i$+$J!W$R$i$+$J!V$R$i!W!V$+$J!W(B\par
+$B4A;z4A;z!V4A;z4A;z!W4A;z4A;z!V4A;z!W!V4A;z!W(B\par
+$B$R$i$+$J!V$R$i$+$J!W4A;z4A;z!V4A;z!W$R$i$+$J(B\par
+$B<!$O!H0zMQId!I$N!F%F%9%H!G$G$9!%(B\par
+$B9TKv$N6hE@$OA43Q%I%j$K!#$J$j$^$9!#(B
+$B""""""""""""""""""""""""(B
+$B""""""""!"""""""!"""""""!#(B\par
+$B9TKv$NFIE@$OH>3Q%I%j$K!"$J$j$^$9!#(B\par
+$B""""""""""""""""""""""""(B
+$B""""""""!"""""""!"""""""!"""""""!#""""""!#(B\par
+$B5?LdId$N8e$K6uGr$OF~$k$G$7$g$&$+!)F~$C$?!*%*%C%1%$$G$9!%(B\par
+\hbox to 2.5zw{$B4A!';z(B}
+\setbox1=\hbox{$B$"(B}
+\dimen1=\wd1 \advance\dimen1 by .5zw
+\advance\dimen1 by \wd1
+\hbox to \dimen1{$B$"!'$"(B}
+\dimen1=\wd1 \advance\dimen1 by 1.75zw
+\hbox to \dimen1{$B4A!'$"(B}
+%\hbox to \dimen1{$B4A(B\hfil $B$"(B}
+\hbox to 7zw{$B4A;z!V4A;z!W4A;z(B}
+\setbox1=\hbox{$B$R$i(B}
+\dimen1=\wd1 \multiply\dimen1 by 3
+\advance\dimen1 by 1zw
+\hbox to \dimen1{$B$R$i!V$R$i!W$R$i(B}
+}
+\makeatother
+\begin{document}
+%\kanjiskip 0pt plus 1sp minus 1sp
+\begingroup
+\propshape
+{\bfseries $B%W%m%]!<%7%g%J%kAH$NNc(B}
+
+\test
+\endgroup
+\newpage
+{\bfseries $B$Y$?AH$_$NNc(B}
+
+\test
+\end{document}
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgothb-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpgothb-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgothb-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpgothb-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgothbn-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpgothbn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgothbn-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpgothbn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgotheb-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpgotheb-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgotheb-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpgotheb-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgothebn-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpgothebn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgothebn-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpgothebn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgothr-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpgothr-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgothr-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpgothr-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgothrn-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpgothrn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpgothrn-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpgothrn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpmgothr-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpmgothr-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpmgothr-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpmgothr-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpmgothrn-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpmgothrn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpmgothrn-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpmgothrn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminb-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpminb-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminb-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpminb-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminbn-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpminbn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminbn-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpminbn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminl-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpminl-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminl-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpminl-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminln-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpminln-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminln-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpminln-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminr-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpminr-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminr-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpminr-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminrn-h.tfm b/language/japanese/japanese-otf/tfm/brsgexpminrn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgexpminrn-v.tfm b/language/japanese/japanese-otf/tfm/brsgexpminrn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgexpminrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgothb-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgothb-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgothb-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgothb-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgothbn-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgothbn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgothbn-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgothbn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgotheb-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgotheb-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgotheb-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgotheb-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgothebn-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgothebn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgothebn-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgothebn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgothr-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgothr-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgothr-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgothr-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgothrn-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgothrn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlgothrn-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlgothrn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlmgothr-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlmgothr-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlmgothr-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlmgothr-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlmgothrn-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlmgothrn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlmgothrn-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlmgothrn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminb-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminb-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminb-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminb-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminbn-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminbn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminbn-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminbn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminl-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminl-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminl-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminl-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminln-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminln-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminln-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminln-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminr-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminr-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminr-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminr-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminrn-h.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminrn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/brsgnmlminrn-v.tfm b/language/japanese/japanese-otf/tfm/brsgnmlminrn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/brsgnmlminrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr0-h.tfm b/language/japanese/japanese-otf/tfm/cidcgr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr0-v.tfm b/language/japanese/japanese-otf/tfm/cidcgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr1-h.tfm b/language/japanese/japanese-otf/tfm/cidcgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr1-v.tfm b/language/japanese/japanese-otf/tfm/cidcgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr2-h.tfm b/language/japanese/japanese-otf/tfm/cidcgr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr2-v.tfm b/language/japanese/japanese-otf/tfm/cidcgr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr3-h.tfm b/language/japanese/japanese-otf/tfm/cidcgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr3-v.tfm b/language/japanese/japanese-otf/tfm/cidcgr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr4-h.tfm b/language/japanese/japanese-otf/tfm/cidcgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr4-v.tfm b/language/japanese/japanese-otf/tfm/cidcgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr5-h.tfm b/language/japanese/japanese-otf/tfm/cidcgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr5-v.tfm b/language/japanese/japanese-otf/tfm/cidcgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr6-h.tfm b/language/japanese/japanese-otf/tfm/cidcgr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr6-v.tfm b/language/japanese/japanese-otf/tfm/cidcgr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr7-h.tfm b/language/japanese/japanese-otf/tfm/cidcgr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcgr7-v.tfm b/language/japanese/japanese-otf/tfm/cidcgr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcgr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr0-h.tfm b/language/japanese/japanese-otf/tfm/cidcmr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr0-v.tfm b/language/japanese/japanese-otf/tfm/cidcmr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr1-h.tfm b/language/japanese/japanese-otf/tfm/cidcmr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr1-v.tfm b/language/japanese/japanese-otf/tfm/cidcmr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr2-h.tfm b/language/japanese/japanese-otf/tfm/cidcmr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr2-v.tfm b/language/japanese/japanese-otf/tfm/cidcmr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr3-h.tfm b/language/japanese/japanese-otf/tfm/cidcmr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr3-v.tfm b/language/japanese/japanese-otf/tfm/cidcmr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr4-h.tfm b/language/japanese/japanese-otf/tfm/cidcmr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr4-v.tfm b/language/japanese/japanese-otf/tfm/cidcmr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr5-h.tfm b/language/japanese/japanese-otf/tfm/cidcmr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr5-v.tfm b/language/japanese/japanese-otf/tfm/cidcmr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr6-h.tfm b/language/japanese/japanese-otf/tfm/cidcmr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr6-v.tfm b/language/japanese/japanese-otf/tfm/cidcmr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr7-h.tfm b/language/japanese/japanese-otf/tfm/cidcmr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidcmr7-v.tfm b/language/japanese/japanese-otf/tfm/cidcmr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidcmr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb0-h.tfm b/language/japanese/japanese-otf/tfm/cidjgb0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb0-v.tfm b/language/japanese/japanese-otf/tfm/cidjgb0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb1-h.tfm b/language/japanese/japanese-otf/tfm/cidjgb1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb1-v.tfm b/language/japanese/japanese-otf/tfm/cidjgb1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb2-h.tfm b/language/japanese/japanese-otf/tfm/cidjgb2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb2-v.tfm b/language/japanese/japanese-otf/tfm/cidjgb2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb3-h.tfm b/language/japanese/japanese-otf/tfm/cidjgb3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb3-v.tfm b/language/japanese/japanese-otf/tfm/cidjgb3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb4-h.tfm b/language/japanese/japanese-otf/tfm/cidjgb4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb4-v.tfm b/language/japanese/japanese-otf/tfm/cidjgb4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb5-h.tfm b/language/japanese/japanese-otf/tfm/cidjgb5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgb5-v.tfm b/language/japanese/japanese-otf/tfm/cidjgb5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgb5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge0-h.tfm b/language/japanese/japanese-otf/tfm/cidjge0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge0-v.tfm b/language/japanese/japanese-otf/tfm/cidjge0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge1-h.tfm b/language/japanese/japanese-otf/tfm/cidjge1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge1-v.tfm b/language/japanese/japanese-otf/tfm/cidjge1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge2-h.tfm b/language/japanese/japanese-otf/tfm/cidjge2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge2-v.tfm b/language/japanese/japanese-otf/tfm/cidjge2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge3-h.tfm b/language/japanese/japanese-otf/tfm/cidjge3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge3-v.tfm b/language/japanese/japanese-otf/tfm/cidjge3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge4-h.tfm b/language/japanese/japanese-otf/tfm/cidjge4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge4-v.tfm b/language/japanese/japanese-otf/tfm/cidjge4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge5-h.tfm b/language/japanese/japanese-otf/tfm/cidjge5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjge5-v.tfm b/language/japanese/japanese-otf/tfm/cidjge5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjge5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr0-h.tfm b/language/japanese/japanese-otf/tfm/cidjgr0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr0-v.tfm b/language/japanese/japanese-otf/tfm/cidjgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr1-h.tfm b/language/japanese/japanese-otf/tfm/cidjgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr1-v.tfm b/language/japanese/japanese-otf/tfm/cidjgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr2-h.tfm b/language/japanese/japanese-otf/tfm/cidjgr2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr2-v.tfm b/language/japanese/japanese-otf/tfm/cidjgr2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr3-h.tfm b/language/japanese/japanese-otf/tfm/cidjgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr3-v.tfm b/language/japanese/japanese-otf/tfm/cidjgr3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr4-h.tfm b/language/japanese/japanese-otf/tfm/cidjgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr4-v.tfm b/language/japanese/japanese-otf/tfm/cidjgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr5-h.tfm b/language/japanese/japanese-otf/tfm/cidjgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjgr5-v.tfm b/language/japanese/japanese-otf/tfm/cidjgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjgr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb0-h.tfm b/language/japanese/japanese-otf/tfm/cidjmb0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb0-v.tfm b/language/japanese/japanese-otf/tfm/cidjmb0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb1-h.tfm b/language/japanese/japanese-otf/tfm/cidjmb1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb1-v.tfm b/language/japanese/japanese-otf/tfm/cidjmb1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb2-h.tfm b/language/japanese/japanese-otf/tfm/cidjmb2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb2-v.tfm b/language/japanese/japanese-otf/tfm/cidjmb2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb3-h.tfm b/language/japanese/japanese-otf/tfm/cidjmb3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb3-v.tfm b/language/japanese/japanese-otf/tfm/cidjmb3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb4-h.tfm b/language/japanese/japanese-otf/tfm/cidjmb4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb4-v.tfm b/language/japanese/japanese-otf/tfm/cidjmb4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb5-h.tfm b/language/japanese/japanese-otf/tfm/cidjmb5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmb5-v.tfm b/language/japanese/japanese-otf/tfm/cidjmb5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmb5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr0-h.tfm b/language/japanese/japanese-otf/tfm/cidjmgr0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr0-v.tfm b/language/japanese/japanese-otf/tfm/cidjmgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr1-h.tfm b/language/japanese/japanese-otf/tfm/cidjmgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr1-v.tfm b/language/japanese/japanese-otf/tfm/cidjmgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr2-h.tfm b/language/japanese/japanese-otf/tfm/cidjmgr2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr2-v.tfm b/language/japanese/japanese-otf/tfm/cidjmgr2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr3-h.tfm b/language/japanese/japanese-otf/tfm/cidjmgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr3-v.tfm b/language/japanese/japanese-otf/tfm/cidjmgr3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr4-h.tfm b/language/japanese/japanese-otf/tfm/cidjmgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr4-v.tfm b/language/japanese/japanese-otf/tfm/cidjmgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr5-h.tfm b/language/japanese/japanese-otf/tfm/cidjmgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmgr5-v.tfm b/language/japanese/japanese-otf/tfm/cidjmgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmgr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml0-h.tfm b/language/japanese/japanese-otf/tfm/cidjml0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml0-v.tfm b/language/japanese/japanese-otf/tfm/cidjml0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml1-h.tfm b/language/japanese/japanese-otf/tfm/cidjml1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml1-v.tfm b/language/japanese/japanese-otf/tfm/cidjml1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml2-h.tfm b/language/japanese/japanese-otf/tfm/cidjml2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml2-v.tfm b/language/japanese/japanese-otf/tfm/cidjml2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml3-h.tfm b/language/japanese/japanese-otf/tfm/cidjml3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml3-v.tfm b/language/japanese/japanese-otf/tfm/cidjml3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml4-h.tfm b/language/japanese/japanese-otf/tfm/cidjml4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml4-v.tfm b/language/japanese/japanese-otf/tfm/cidjml4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml5-h.tfm b/language/japanese/japanese-otf/tfm/cidjml5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjml5-v.tfm b/language/japanese/japanese-otf/tfm/cidjml5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjml5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr0-h.tfm b/language/japanese/japanese-otf/tfm/cidjmr0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr0-v.tfm b/language/japanese/japanese-otf/tfm/cidjmr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr1-h.tfm b/language/japanese/japanese-otf/tfm/cidjmr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr1-v.tfm b/language/japanese/japanese-otf/tfm/cidjmr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr2-h.tfm b/language/japanese/japanese-otf/tfm/cidjmr2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr2-v.tfm b/language/japanese/japanese-otf/tfm/cidjmr2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr3-h.tfm b/language/japanese/japanese-otf/tfm/cidjmr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr3-v.tfm b/language/japanese/japanese-otf/tfm/cidjmr3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr4-h.tfm b/language/japanese/japanese-otf/tfm/cidjmr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr4-v.tfm b/language/japanese/japanese-otf/tfm/cidjmr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr5-h.tfm b/language/japanese/japanese-otf/tfm/cidjmr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidjmr5-v.tfm b/language/japanese/japanese-otf/tfm/cidjmr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidjmr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkgr0-h.tfm b/language/japanese/japanese-otf/tfm/cidkgr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkgr0-v.tfm b/language/japanese/japanese-otf/tfm/cidkgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkgr1-h.tfm b/language/japanese/japanese-otf/tfm/cidkgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkgr1-v.tfm b/language/japanese/japanese-otf/tfm/cidkgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkgr2-h.tfm b/language/japanese/japanese-otf/tfm/cidkgr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkgr2-v.tfm b/language/japanese/japanese-otf/tfm/cidkgr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkgr3-h.tfm b/language/japanese/japanese-otf/tfm/cidkgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkgr3-v.tfm b/language/japanese/japanese-otf/tfm/cidkgr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkgr4-h.tfm b/language/japanese/japanese-otf/tfm/cidkgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkgr4-v.tfm b/language/japanese/japanese-otf/tfm/cidkgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkmr0-h.tfm b/language/japanese/japanese-otf/tfm/cidkmr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkmr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkmr0-v.tfm b/language/japanese/japanese-otf/tfm/cidkmr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkmr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkmr1-h.tfm b/language/japanese/japanese-otf/tfm/cidkmr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkmr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkmr1-v.tfm b/language/japanese/japanese-otf/tfm/cidkmr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkmr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkmr2-h.tfm b/language/japanese/japanese-otf/tfm/cidkmr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkmr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkmr2-v.tfm b/language/japanese/japanese-otf/tfm/cidkmr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkmr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkmr3-h.tfm b/language/japanese/japanese-otf/tfm/cidkmr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkmr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkmr3-v.tfm b/language/japanese/japanese-otf/tfm/cidkmr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkmr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkmr4-h.tfm b/language/japanese/japanese-otf/tfm/cidkmr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkmr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidkmr4-v.tfm b/language/japanese/japanese-otf/tfm/cidkmr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidkmr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtgr0-h.tfm b/language/japanese/japanese-otf/tfm/cidtgr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtgr0-v.tfm b/language/japanese/japanese-otf/tfm/cidtgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtgr1-h.tfm b/language/japanese/japanese-otf/tfm/cidtgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtgr1-v.tfm b/language/japanese/japanese-otf/tfm/cidtgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtgr2-h.tfm b/language/japanese/japanese-otf/tfm/cidtgr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtgr2-v.tfm b/language/japanese/japanese-otf/tfm/cidtgr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtgr3-h.tfm b/language/japanese/japanese-otf/tfm/cidtgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtgr3-v.tfm b/language/japanese/japanese-otf/tfm/cidtgr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtgr4-h.tfm b/language/japanese/japanese-otf/tfm/cidtgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtgr4-v.tfm b/language/japanese/japanese-otf/tfm/cidtgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtmr0-h.tfm b/language/japanese/japanese-otf/tfm/cidtmr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtmr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtmr0-v.tfm b/language/japanese/japanese-otf/tfm/cidtmr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtmr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtmr1-h.tfm b/language/japanese/japanese-otf/tfm/cidtmr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtmr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtmr1-v.tfm b/language/japanese/japanese-otf/tfm/cidtmr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtmr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtmr2-h.tfm b/language/japanese/japanese-otf/tfm/cidtmr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtmr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtmr2-v.tfm b/language/japanese/japanese-otf/tfm/cidtmr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtmr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtmr3-h.tfm b/language/japanese/japanese-otf/tfm/cidtmr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtmr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtmr3-v.tfm b/language/japanese/japanese-otf/tfm/cidtmr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtmr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtmr4-h.tfm b/language/japanese/japanese-otf/tfm/cidtmr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtmr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/cidtmr4-v.tfm b/language/japanese/japanese-otf/tfm/cidtmr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/cidtmr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgothb-h.tfm b/language/japanese/japanese-otf/tfm/expgothb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgothb-v.tfm b/language/japanese/japanese-otf/tfm/expgothb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgothbn-h.tfm b/language/japanese/japanese-otf/tfm/expgothbn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgothbn-v.tfm b/language/japanese/japanese-otf/tfm/expgothbn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgotheb-h.tfm b/language/japanese/japanese-otf/tfm/expgotheb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgotheb-v.tfm b/language/japanese/japanese-otf/tfm/expgotheb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgothebn-h.tfm b/language/japanese/japanese-otf/tfm/expgothebn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgothebn-v.tfm b/language/japanese/japanese-otf/tfm/expgothebn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgothr-h.tfm b/language/japanese/japanese-otf/tfm/expgothr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgothr-v.tfm b/language/japanese/japanese-otf/tfm/expgothr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgothrn-h.tfm b/language/japanese/japanese-otf/tfm/expgothrn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expgothrn-v.tfm b/language/japanese/japanese-otf/tfm/expgothrn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expmgothr-h.tfm b/language/japanese/japanese-otf/tfm/expmgothr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expmgothr-v.tfm b/language/japanese/japanese-otf/tfm/expmgothr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expmgothrn-h.tfm b/language/japanese/japanese-otf/tfm/expmgothrn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expmgothrn-v.tfm b/language/japanese/japanese-otf/tfm/expmgothrn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminb-h.tfm b/language/japanese/japanese-otf/tfm/expminb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminb-v.tfm b/language/japanese/japanese-otf/tfm/expminb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminbn-h.tfm b/language/japanese/japanese-otf/tfm/expminbn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminbn-v.tfm b/language/japanese/japanese-otf/tfm/expminbn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminl-h.tfm b/language/japanese/japanese-otf/tfm/expminl-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminl-v.tfm b/language/japanese/japanese-otf/tfm/expminl-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminln-h.tfm b/language/japanese/japanese-otf/tfm/expminln-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminln-v.tfm b/language/japanese/japanese-otf/tfm/expminln-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminr-h.tfm b/language/japanese/japanese-otf/tfm/expminr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminr-v.tfm b/language/japanese/japanese-otf/tfm/expminr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminrn-h.tfm b/language/japanese/japanese-otf/tfm/expminrn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/expminrn-v.tfm b/language/japanese/japanese-otf/tfm/expminrn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/expminrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgothb-h.tfm b/language/japanese/japanese-otf/tfm/hgothb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgothb-v.tfm b/language/japanese/japanese-otf/tfm/hgothb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgothbn-h.tfm b/language/japanese/japanese-otf/tfm/hgothbn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgothbn-v.tfm b/language/japanese/japanese-otf/tfm/hgothbn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgotheb-h.tfm b/language/japanese/japanese-otf/tfm/hgotheb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgotheb-v.tfm b/language/japanese/japanese-otf/tfm/hgotheb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgothebn-h.tfm b/language/japanese/japanese-otf/tfm/hgothebn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgothebn-v.tfm b/language/japanese/japanese-otf/tfm/hgothebn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgothr-h.tfm b/language/japanese/japanese-otf/tfm/hgothr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgothr-v.tfm b/language/japanese/japanese-otf/tfm/hgothr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgothrn-h.tfm b/language/japanese/japanese-otf/tfm/hgothrn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hgothrn-v.tfm b/language/japanese/japanese-otf/tfm/hgothrn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hmgothr-h.tfm b/language/japanese/japanese-otf/tfm/hmgothr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hmgothr-v.tfm b/language/japanese/japanese-otf/tfm/hmgothr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hmgothrn-h.tfm b/language/japanese/japanese-otf/tfm/hmgothrn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hmgothrn-v.tfm b/language/japanese/japanese-otf/tfm/hmgothrn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminb-h.tfm b/language/japanese/japanese-otf/tfm/hminb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminb-v.tfm b/language/japanese/japanese-otf/tfm/hminb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminbn-h.tfm b/language/japanese/japanese-otf/tfm/hminbn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminbn-v.tfm b/language/japanese/japanese-otf/tfm/hminbn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminl-h.tfm b/language/japanese/japanese-otf/tfm/hminl-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminl-v.tfm b/language/japanese/japanese-otf/tfm/hminl-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminln-h.tfm b/language/japanese/japanese-otf/tfm/hminln-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminln-v.tfm b/language/japanese/japanese-otf/tfm/hminln-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminr-h.tfm b/language/japanese/japanese-otf/tfm/hminr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminr-v.tfm b/language/japanese/japanese-otf/tfm/hminr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminrn-h.tfm b/language/japanese/japanese-otf/tfm/hminrn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/hminrn-v.tfm b/language/japanese/japanese-otf/tfm/hminrn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/hminrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgothb-h.tfm b/language/japanese/japanese-otf/tfm/nmlgothb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgothb-v.tfm b/language/japanese/japanese-otf/tfm/nmlgothb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgothbn-h.tfm b/language/japanese/japanese-otf/tfm/nmlgothbn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgothbn-v.tfm b/language/japanese/japanese-otf/tfm/nmlgothbn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgotheb-h.tfm b/language/japanese/japanese-otf/tfm/nmlgotheb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgotheb-v.tfm b/language/japanese/japanese-otf/tfm/nmlgotheb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgothebn-h.tfm b/language/japanese/japanese-otf/tfm/nmlgothebn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgothebn-v.tfm b/language/japanese/japanese-otf/tfm/nmlgothebn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgothr-h.tfm b/language/japanese/japanese-otf/tfm/nmlgothr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgothr-v.tfm b/language/japanese/japanese-otf/tfm/nmlgothr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgothrn-h.tfm b/language/japanese/japanese-otf/tfm/nmlgothrn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlgothrn-v.tfm b/language/japanese/japanese-otf/tfm/nmlgothrn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlmgothr-h.tfm b/language/japanese/japanese-otf/tfm/nmlmgothr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlmgothr-v.tfm b/language/japanese/japanese-otf/tfm/nmlmgothr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlmgothrn-h.tfm b/language/japanese/japanese-otf/tfm/nmlmgothrn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlmgothrn-v.tfm b/language/japanese/japanese-otf/tfm/nmlmgothrn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminb-h.tfm b/language/japanese/japanese-otf/tfm/nmlminb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminb-v.tfm b/language/japanese/japanese-otf/tfm/nmlminb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminbn-h.tfm b/language/japanese/japanese-otf/tfm/nmlminbn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminbn-v.tfm b/language/japanese/japanese-otf/tfm/nmlminbn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminl-h.tfm b/language/japanese/japanese-otf/tfm/nmlminl-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminl-v.tfm b/language/japanese/japanese-otf/tfm/nmlminl-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminln-h.tfm b/language/japanese/japanese-otf/tfm/nmlminln-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminln-v.tfm b/language/japanese/japanese-otf/tfm/nmlminln-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminr-h.tfm b/language/japanese/japanese-otf/tfm/nmlminr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminr-v.tfm b/language/japanese/japanese-otf/tfm/nmlminr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminrn-h.tfm b/language/japanese/japanese-otf/tfm/nmlminrn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/nmlminrn-v.tfm b/language/japanese/japanese-otf/tfm/nmlminrn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/nmlminrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ccgr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ccgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ccgr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ccgr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ccgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ccgr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ccmr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ccmr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ccmr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ccmr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ccmr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ccmr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjgb-h.tfm b/language/japanese/japanese-otf/tfm/otf-cjgb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjgb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjgb-v.tfm b/language/japanese/japanese-otf/tfm/otf-cjgb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjgb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjge-h.tfm b/language/japanese/japanese-otf/tfm/otf-cjge-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjge-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjge-v.tfm b/language/japanese/japanese-otf/tfm/otf-cjge-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjge-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjgr-h.tfm b/language/japanese/japanese-otf/tfm/otf-cjgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjgr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjgr-v.tfm b/language/japanese/japanese-otf/tfm/otf-cjgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjgr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjmb-h.tfm b/language/japanese/japanese-otf/tfm/otf-cjmb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjmb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjmb-v.tfm b/language/japanese/japanese-otf/tfm/otf-cjmb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjmb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjmgr-h.tfm b/language/japanese/japanese-otf/tfm/otf-cjmgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjmgr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjmgr-v.tfm b/language/japanese/japanese-otf/tfm/otf-cjmgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjmgr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjml-h.tfm b/language/japanese/japanese-otf/tfm/otf-cjml-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjml-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjml-v.tfm b/language/japanese/japanese-otf/tfm/otf-cjml-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjml-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjmr-h.tfm b/language/japanese/japanese-otf/tfm/otf-cjmr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjmr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-cjmr-v.tfm b/language/japanese/japanese-otf/tfm/otf-cjmr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-cjmr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ckgr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ckgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ckgr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ckgr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ckgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ckgr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ckmr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ckmr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ckmr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ckmr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ckmr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ckmr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ctgr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ctgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ctgr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ctgr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ctgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ctgr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ctmr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ctmr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ctmr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ctmr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ctmr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ctmr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ucgr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ucgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ucgr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ucgr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ucgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ucgr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ucmr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ucmr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ucmr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ucmr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ucmr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ucmr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujgb-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujgb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujgb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujgb-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujgb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujgb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujgbn-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujgbn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujgbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujgbn-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujgbn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujgbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujge-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujge-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujge-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujge-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujge-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujge-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujgen-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujgen-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujgen-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujgen-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujgen-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujgen-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujgr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujgr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujgr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujgr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujgrn-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujgrn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujgrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujgrn-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujgrn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujgrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmb-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujmb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmb-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujmb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmbn-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujmbn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmbn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmbn-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujmbn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmbn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmgr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujmgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmgr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmgr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujmgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmgr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmgrn-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujmgrn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmgrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmgrn-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujmgrn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmgrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujml-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujml-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujml-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujml-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujml-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujml-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmln-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujmln-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmln-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmln-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujmln-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmln-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujmr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujmr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmrn-h.tfm b/language/japanese/japanese-otf/tfm/otf-ujmrn-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmrn-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ujmrn-v.tfm b/language/japanese/japanese-otf/tfm/otf-ujmrn-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ujmrn-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ukgr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ukgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ukgr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ukgr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ukgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ukgr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ukmr-h.tfm b/language/japanese/japanese-otf/tfm/otf-ukmr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ukmr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-ukmr-v.tfm b/language/japanese/japanese-otf/tfm/otf-ukmr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-ukmr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-utgr-h.tfm b/language/japanese/japanese-otf/tfm/otf-utgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-utgr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-utgr-v.tfm b/language/japanese/japanese-otf/tfm/otf-utgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-utgr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-utmr-h.tfm b/language/japanese/japanese-otf/tfm/otf-utmr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-utmr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/otf-utmr-v.tfm b/language/japanese/japanese-otf/tfm/otf-utmr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/otf-utmr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubygothb-h.tfm b/language/japanese/japanese-otf/tfm/rubygothb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubygothb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubygothb-v.tfm b/language/japanese/japanese-otf/tfm/rubygothb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubygothb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubygotheb-h.tfm b/language/japanese/japanese-otf/tfm/rubygotheb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubygotheb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubygotheb-v.tfm b/language/japanese/japanese-otf/tfm/rubygotheb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubygotheb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubygothr-h.tfm b/language/japanese/japanese-otf/tfm/rubygothr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubygothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubygothr-v.tfm b/language/japanese/japanese-otf/tfm/rubygothr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubygothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubymgothr-h.tfm b/language/japanese/japanese-otf/tfm/rubymgothr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubymgothr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubymgothr-v.tfm b/language/japanese/japanese-otf/tfm/rubymgothr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubymgothr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubyminb-h.tfm b/language/japanese/japanese-otf/tfm/rubyminb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubyminb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubyminb-v.tfm b/language/japanese/japanese-otf/tfm/rubyminb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubyminb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubyminl-h.tfm b/language/japanese/japanese-otf/tfm/rubyminl-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubyminl-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubyminl-v.tfm b/language/japanese/japanese-otf/tfm/rubyminl-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubyminl-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubyminr-h.tfm b/language/japanese/japanese-otf/tfm/rubyminr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubyminr-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/rubyminr-v.tfm b/language/japanese/japanese-otf/tfm/rubyminr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/rubyminr-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr0-h.tfm b/language/japanese/japanese-otf/tfm/utfcgr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr0-v.tfm b/language/japanese/japanese-otf/tfm/utfcgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr1-h.tfm b/language/japanese/japanese-otf/tfm/utfcgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr1-v.tfm b/language/japanese/japanese-otf/tfm/utfcgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr2-h.tfm b/language/japanese/japanese-otf/tfm/utfcgr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr2-v.tfm b/language/japanese/japanese-otf/tfm/utfcgr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr3-h.tfm b/language/japanese/japanese-otf/tfm/utfcgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr3-v.tfm b/language/japanese/japanese-otf/tfm/utfcgr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr4-h.tfm b/language/japanese/japanese-otf/tfm/utfcgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr4-v.tfm b/language/japanese/japanese-otf/tfm/utfcgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr5-h.tfm b/language/japanese/japanese-otf/tfm/utfcgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr5-v.tfm b/language/japanese/japanese-otf/tfm/utfcgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr6-h.tfm b/language/japanese/japanese-otf/tfm/utfcgr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr6-v.tfm b/language/japanese/japanese-otf/tfm/utfcgr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr7-h.tfm b/language/japanese/japanese-otf/tfm/utfcgr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr7-v.tfm b/language/japanese/japanese-otf/tfm/utfcgr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr8-h.tfm b/language/japanese/japanese-otf/tfm/utfcgr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr8-v.tfm b/language/japanese/japanese-otf/tfm/utfcgr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr9-h.tfm b/language/japanese/japanese-otf/tfm/utfcgr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgr9-v.tfm b/language/japanese/japanese-otf/tfm/utfcgr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgra-h.tfm b/language/japanese/japanese-otf/tfm/utfcgra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgra-v.tfm b/language/japanese/japanese-otf/tfm/utfcgra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgrb-h.tfm b/language/japanese/japanese-otf/tfm/utfcgrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgrb-v.tfm b/language/japanese/japanese-otf/tfm/utfcgrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgrc-h.tfm b/language/japanese/japanese-otf/tfm/utfcgrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgrc-v.tfm b/language/japanese/japanese-otf/tfm/utfcgrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgrd-h.tfm b/language/japanese/japanese-otf/tfm/utfcgrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgrd-v.tfm b/language/japanese/japanese-otf/tfm/utfcgrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgre-h.tfm b/language/japanese/japanese-otf/tfm/utfcgre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgre-v.tfm b/language/japanese/japanese-otf/tfm/utfcgre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgrf-h.tfm b/language/japanese/japanese-otf/tfm/utfcgrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcgrf-v.tfm b/language/japanese/japanese-otf/tfm/utfcgrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcgrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr0-h.tfm b/language/japanese/japanese-otf/tfm/utfcmr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr0-v.tfm b/language/japanese/japanese-otf/tfm/utfcmr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr1-h.tfm b/language/japanese/japanese-otf/tfm/utfcmr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr1-v.tfm b/language/japanese/japanese-otf/tfm/utfcmr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr2-h.tfm b/language/japanese/japanese-otf/tfm/utfcmr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr2-v.tfm b/language/japanese/japanese-otf/tfm/utfcmr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr3-h.tfm b/language/japanese/japanese-otf/tfm/utfcmr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr3-v.tfm b/language/japanese/japanese-otf/tfm/utfcmr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr4-h.tfm b/language/japanese/japanese-otf/tfm/utfcmr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr4-v.tfm b/language/japanese/japanese-otf/tfm/utfcmr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr5-h.tfm b/language/japanese/japanese-otf/tfm/utfcmr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr5-v.tfm b/language/japanese/japanese-otf/tfm/utfcmr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr6-h.tfm b/language/japanese/japanese-otf/tfm/utfcmr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr6-v.tfm b/language/japanese/japanese-otf/tfm/utfcmr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr7-h.tfm b/language/japanese/japanese-otf/tfm/utfcmr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr7-v.tfm b/language/japanese/japanese-otf/tfm/utfcmr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr8-h.tfm b/language/japanese/japanese-otf/tfm/utfcmr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr8-v.tfm b/language/japanese/japanese-otf/tfm/utfcmr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr9-h.tfm b/language/japanese/japanese-otf/tfm/utfcmr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmr9-v.tfm b/language/japanese/japanese-otf/tfm/utfcmr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmra-h.tfm b/language/japanese/japanese-otf/tfm/utfcmra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmra-v.tfm b/language/japanese/japanese-otf/tfm/utfcmra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmrb-h.tfm b/language/japanese/japanese-otf/tfm/utfcmrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmrb-v.tfm b/language/japanese/japanese-otf/tfm/utfcmrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmrc-h.tfm b/language/japanese/japanese-otf/tfm/utfcmrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmrc-v.tfm b/language/japanese/japanese-otf/tfm/utfcmrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmrd-h.tfm b/language/japanese/japanese-otf/tfm/utfcmrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmrd-v.tfm b/language/japanese/japanese-otf/tfm/utfcmrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmre-h.tfm b/language/japanese/japanese-otf/tfm/utfcmre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmre-v.tfm b/language/japanese/japanese-otf/tfm/utfcmre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmrf-h.tfm b/language/japanese/japanese-otf/tfm/utfcmrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfcmrf-v.tfm b/language/japanese/japanese-otf/tfm/utfcmrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfcmrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr0-h.tfm b/language/japanese/japanese-otf/tfm/utfgr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr0-v.tfm b/language/japanese/japanese-otf/tfm/utfgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr1-h.tfm b/language/japanese/japanese-otf/tfm/utfgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr1-v.tfm b/language/japanese/japanese-otf/tfm/utfgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr2-h.tfm b/language/japanese/japanese-otf/tfm/utfgr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr2-v.tfm b/language/japanese/japanese-otf/tfm/utfgr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr3-h.tfm b/language/japanese/japanese-otf/tfm/utfgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr3-v.tfm b/language/japanese/japanese-otf/tfm/utfgr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr4-h.tfm b/language/japanese/japanese-otf/tfm/utfgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr4-v.tfm b/language/japanese/japanese-otf/tfm/utfgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr5-h.tfm b/language/japanese/japanese-otf/tfm/utfgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr5-v.tfm b/language/japanese/japanese-otf/tfm/utfgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr6-h.tfm b/language/japanese/japanese-otf/tfm/utfgr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr6-v.tfm b/language/japanese/japanese-otf/tfm/utfgr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr7-h.tfm b/language/japanese/japanese-otf/tfm/utfgr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr7-v.tfm b/language/japanese/japanese-otf/tfm/utfgr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr8-h.tfm b/language/japanese/japanese-otf/tfm/utfgr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr8-v.tfm b/language/japanese/japanese-otf/tfm/utfgr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr9-h.tfm b/language/japanese/japanese-otf/tfm/utfgr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgr9-v.tfm b/language/japanese/japanese-otf/tfm/utfgr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgra-h.tfm b/language/japanese/japanese-otf/tfm/utfgra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgra-v.tfm b/language/japanese/japanese-otf/tfm/utfgra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgrb-h.tfm b/language/japanese/japanese-otf/tfm/utfgrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgrb-v.tfm b/language/japanese/japanese-otf/tfm/utfgrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgrc-h.tfm b/language/japanese/japanese-otf/tfm/utfgrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgrc-v.tfm b/language/japanese/japanese-otf/tfm/utfgrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgrd-h.tfm b/language/japanese/japanese-otf/tfm/utfgrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgrd-v.tfm b/language/japanese/japanese-otf/tfm/utfgrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgre-h.tfm b/language/japanese/japanese-otf/tfm/utfgre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgre-v.tfm b/language/japanese/japanese-otf/tfm/utfgre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgrf-h.tfm b/language/japanese/japanese-otf/tfm/utfgrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfgrf-v.tfm b/language/japanese/japanese-otf/tfm/utfgrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfgrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb0-h.tfm b/language/japanese/japanese-otf/tfm/utfjgb0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb0-v.tfm b/language/japanese/japanese-otf/tfm/utfjgb0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb1-h.tfm b/language/japanese/japanese-otf/tfm/utfjgb1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb1-v.tfm b/language/japanese/japanese-otf/tfm/utfjgb1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb2-h.tfm b/language/japanese/japanese-otf/tfm/utfjgb2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb2-v.tfm b/language/japanese/japanese-otf/tfm/utfjgb2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb3-h.tfm b/language/japanese/japanese-otf/tfm/utfjgb3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb3-v.tfm b/language/japanese/japanese-otf/tfm/utfjgb3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb4-h.tfm b/language/japanese/japanese-otf/tfm/utfjgb4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb4-v.tfm b/language/japanese/japanese-otf/tfm/utfjgb4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb5-h.tfm b/language/japanese/japanese-otf/tfm/utfjgb5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb5-v.tfm b/language/japanese/japanese-otf/tfm/utfjgb5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb6-h.tfm b/language/japanese/japanese-otf/tfm/utfjgb6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb6-v.tfm b/language/japanese/japanese-otf/tfm/utfjgb6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb7-h.tfm b/language/japanese/japanese-otf/tfm/utfjgb7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb7-v.tfm b/language/japanese/japanese-otf/tfm/utfjgb7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb8-h.tfm b/language/japanese/japanese-otf/tfm/utfjgb8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb8-v.tfm b/language/japanese/japanese-otf/tfm/utfjgb8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb9-h.tfm b/language/japanese/japanese-otf/tfm/utfjgb9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgb9-v.tfm b/language/japanese/japanese-otf/tfm/utfjgb9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgb9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgba-h.tfm b/language/japanese/japanese-otf/tfm/utfjgba-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgba-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgba-v.tfm b/language/japanese/japanese-otf/tfm/utfjgba-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgba-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbb-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbb-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbc-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbc-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbd-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbd-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbe-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbe-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbe-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbe-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbe-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbe-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbf-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbf-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn0-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbn0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn0-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbn0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn1-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbn1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn1-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbn1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn2-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbn2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn2-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbn2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn3-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbn3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn3-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbn3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn4-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbn4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn4-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbn4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn5-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbn5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn5-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbn5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn6-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbn6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn6-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbn6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn7-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbn7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn7-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbn7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn8-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbn8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn8-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbn8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn9-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbn9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbn9-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbn9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbn9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbna-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbna-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbna-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbna-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbna-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbna-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbnb-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbnb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbnb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbnb-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbnb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbnb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbnc-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbnc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbnc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbnc-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbnc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbnc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbnd-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbnd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbnd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbnd-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbnd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbnd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbne-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbne-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbne-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbne-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbne-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbne-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbnf-h.tfm b/language/japanese/japanese-otf/tfm/utfjgbnf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbnf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgbnf-v.tfm b/language/japanese/japanese-otf/tfm/utfjgbnf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgbnf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge0-h.tfm b/language/japanese/japanese-otf/tfm/utfjge0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge0-v.tfm b/language/japanese/japanese-otf/tfm/utfjge0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge1-h.tfm b/language/japanese/japanese-otf/tfm/utfjge1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge1-v.tfm b/language/japanese/japanese-otf/tfm/utfjge1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge2-h.tfm b/language/japanese/japanese-otf/tfm/utfjge2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge2-v.tfm b/language/japanese/japanese-otf/tfm/utfjge2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge3-h.tfm b/language/japanese/japanese-otf/tfm/utfjge3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge3-v.tfm b/language/japanese/japanese-otf/tfm/utfjge3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge4-h.tfm b/language/japanese/japanese-otf/tfm/utfjge4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge4-v.tfm b/language/japanese/japanese-otf/tfm/utfjge4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge5-h.tfm b/language/japanese/japanese-otf/tfm/utfjge5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge5-v.tfm b/language/japanese/japanese-otf/tfm/utfjge5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge6-h.tfm b/language/japanese/japanese-otf/tfm/utfjge6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge6-v.tfm b/language/japanese/japanese-otf/tfm/utfjge6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge7-h.tfm b/language/japanese/japanese-otf/tfm/utfjge7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge7-v.tfm b/language/japanese/japanese-otf/tfm/utfjge7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge8-h.tfm b/language/japanese/japanese-otf/tfm/utfjge8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge8-v.tfm b/language/japanese/japanese-otf/tfm/utfjge8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge9-h.tfm b/language/japanese/japanese-otf/tfm/utfjge9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjge9-v.tfm b/language/japanese/japanese-otf/tfm/utfjge9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjge9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgea-h.tfm b/language/japanese/japanese-otf/tfm/utfjgea-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgea-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgea-v.tfm b/language/japanese/japanese-otf/tfm/utfjgea-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgea-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgeb-h.tfm b/language/japanese/japanese-otf/tfm/utfjgeb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgeb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgeb-v.tfm b/language/japanese/japanese-otf/tfm/utfjgeb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgeb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgec-h.tfm b/language/japanese/japanese-otf/tfm/utfjgec-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgec-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgec-v.tfm b/language/japanese/japanese-otf/tfm/utfjgec-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgec-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjged-h.tfm b/language/japanese/japanese-otf/tfm/utfjged-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjged-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjged-v.tfm b/language/japanese/japanese-otf/tfm/utfjged-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjged-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgee-h.tfm b/language/japanese/japanese-otf/tfm/utfjgee-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgee-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgee-v.tfm b/language/japanese/japanese-otf/tfm/utfjgee-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgee-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgef-h.tfm b/language/japanese/japanese-otf/tfm/utfjgef-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgef-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgef-v.tfm b/language/japanese/japanese-otf/tfm/utfjgef-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgef-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen0-h.tfm b/language/japanese/japanese-otf/tfm/utfjgen0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen0-v.tfm b/language/japanese/japanese-otf/tfm/utfjgen0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen1-h.tfm b/language/japanese/japanese-otf/tfm/utfjgen1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen1-v.tfm b/language/japanese/japanese-otf/tfm/utfjgen1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen2-h.tfm b/language/japanese/japanese-otf/tfm/utfjgen2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen2-v.tfm b/language/japanese/japanese-otf/tfm/utfjgen2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen3-h.tfm b/language/japanese/japanese-otf/tfm/utfjgen3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen3-v.tfm b/language/japanese/japanese-otf/tfm/utfjgen3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen4-h.tfm b/language/japanese/japanese-otf/tfm/utfjgen4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen4-v.tfm b/language/japanese/japanese-otf/tfm/utfjgen4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen5-h.tfm b/language/japanese/japanese-otf/tfm/utfjgen5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen5-v.tfm b/language/japanese/japanese-otf/tfm/utfjgen5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen6-h.tfm b/language/japanese/japanese-otf/tfm/utfjgen6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen6-v.tfm b/language/japanese/japanese-otf/tfm/utfjgen6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen7-h.tfm b/language/japanese/japanese-otf/tfm/utfjgen7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen7-v.tfm b/language/japanese/japanese-otf/tfm/utfjgen7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen8-h.tfm b/language/japanese/japanese-otf/tfm/utfjgen8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen8-v.tfm b/language/japanese/japanese-otf/tfm/utfjgen8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen9-h.tfm b/language/japanese/japanese-otf/tfm/utfjgen9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgen9-v.tfm b/language/japanese/japanese-otf/tfm/utfjgen9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgen9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgena-h.tfm b/language/japanese/japanese-otf/tfm/utfjgena-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgena-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgena-v.tfm b/language/japanese/japanese-otf/tfm/utfjgena-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgena-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgenb-h.tfm b/language/japanese/japanese-otf/tfm/utfjgenb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgenb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgenb-v.tfm b/language/japanese/japanese-otf/tfm/utfjgenb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgenb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgenc-h.tfm b/language/japanese/japanese-otf/tfm/utfjgenc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgenc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgenc-v.tfm b/language/japanese/japanese-otf/tfm/utfjgenc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgenc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgend-h.tfm b/language/japanese/japanese-otf/tfm/utfjgend-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgend-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgend-v.tfm b/language/japanese/japanese-otf/tfm/utfjgend-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgend-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgene-h.tfm b/language/japanese/japanese-otf/tfm/utfjgene-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgene-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgene-v.tfm b/language/japanese/japanese-otf/tfm/utfjgene-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgene-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgenf-h.tfm b/language/japanese/japanese-otf/tfm/utfjgenf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgenf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgenf-v.tfm b/language/japanese/japanese-otf/tfm/utfjgenf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgenf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr0-h.tfm b/language/japanese/japanese-otf/tfm/utfjgr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr0-v.tfm b/language/japanese/japanese-otf/tfm/utfjgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr1-h.tfm b/language/japanese/japanese-otf/tfm/utfjgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr1-v.tfm b/language/japanese/japanese-otf/tfm/utfjgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr2-h.tfm b/language/japanese/japanese-otf/tfm/utfjgr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr2-v.tfm b/language/japanese/japanese-otf/tfm/utfjgr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr3-h.tfm b/language/japanese/japanese-otf/tfm/utfjgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr3-v.tfm b/language/japanese/japanese-otf/tfm/utfjgr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr4-h.tfm b/language/japanese/japanese-otf/tfm/utfjgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr4-v.tfm b/language/japanese/japanese-otf/tfm/utfjgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr5-h.tfm b/language/japanese/japanese-otf/tfm/utfjgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr5-v.tfm b/language/japanese/japanese-otf/tfm/utfjgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr6-h.tfm b/language/japanese/japanese-otf/tfm/utfjgr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr6-v.tfm b/language/japanese/japanese-otf/tfm/utfjgr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr7-h.tfm b/language/japanese/japanese-otf/tfm/utfjgr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr7-v.tfm b/language/japanese/japanese-otf/tfm/utfjgr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr8-h.tfm b/language/japanese/japanese-otf/tfm/utfjgr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr8-v.tfm b/language/japanese/japanese-otf/tfm/utfjgr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr9-h.tfm b/language/japanese/japanese-otf/tfm/utfjgr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgr9-v.tfm b/language/japanese/japanese-otf/tfm/utfjgr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgra-h.tfm b/language/japanese/japanese-otf/tfm/utfjgra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgra-v.tfm b/language/japanese/japanese-otf/tfm/utfjgra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrb-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrb-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrc-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrc-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrd-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrd-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgre-h.tfm b/language/japanese/japanese-otf/tfm/utfjgre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgre-v.tfm b/language/japanese/japanese-otf/tfm/utfjgre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrf-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrf-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn0-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrn0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn0-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrn0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn1-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrn1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn1-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrn1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn2-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrn2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn2-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrn2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn3-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrn3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn3-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrn3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn4-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrn4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn4-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrn4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn5-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrn5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn5-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrn5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn6-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrn6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn6-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrn6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn7-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrn7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn7-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrn7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn8-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrn8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn8-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrn8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn9-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrn9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrn9-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrn9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrn9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrna-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrna-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrna-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrna-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrna-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrna-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrnb-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrnb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrnb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrnb-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrnb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrnb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrnc-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrnc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrnc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrnc-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrnc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrnc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrnd-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrnd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrnd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrnd-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrnd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrnd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrne-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrne-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrne-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrne-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrne-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrne-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrnf-h.tfm b/language/japanese/japanese-otf/tfm/utfjgrnf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrnf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjgrnf-v.tfm b/language/japanese/japanese-otf/tfm/utfjgrnf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjgrnf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb0-h.tfm b/language/japanese/japanese-otf/tfm/utfjmb0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb0-v.tfm b/language/japanese/japanese-otf/tfm/utfjmb0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb1-h.tfm b/language/japanese/japanese-otf/tfm/utfjmb1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb1-v.tfm b/language/japanese/japanese-otf/tfm/utfjmb1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb2-h.tfm b/language/japanese/japanese-otf/tfm/utfjmb2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb2-v.tfm b/language/japanese/japanese-otf/tfm/utfjmb2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb3-h.tfm b/language/japanese/japanese-otf/tfm/utfjmb3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb3-v.tfm b/language/japanese/japanese-otf/tfm/utfjmb3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb4-h.tfm b/language/japanese/japanese-otf/tfm/utfjmb4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb4-v.tfm b/language/japanese/japanese-otf/tfm/utfjmb4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb5-h.tfm b/language/japanese/japanese-otf/tfm/utfjmb5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb5-v.tfm b/language/japanese/japanese-otf/tfm/utfjmb5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb6-h.tfm b/language/japanese/japanese-otf/tfm/utfjmb6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb6-v.tfm b/language/japanese/japanese-otf/tfm/utfjmb6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb7-h.tfm b/language/japanese/japanese-otf/tfm/utfjmb7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb7-v.tfm b/language/japanese/japanese-otf/tfm/utfjmb7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb8-h.tfm b/language/japanese/japanese-otf/tfm/utfjmb8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb8-v.tfm b/language/japanese/japanese-otf/tfm/utfjmb8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb9-h.tfm b/language/japanese/japanese-otf/tfm/utfjmb9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmb9-v.tfm b/language/japanese/japanese-otf/tfm/utfjmb9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmb9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmba-h.tfm b/language/japanese/japanese-otf/tfm/utfjmba-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmba-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmba-v.tfm b/language/japanese/japanese-otf/tfm/utfjmba-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmba-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbb-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbb-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbc-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbc-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbd-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbd-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbe-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbe-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbe-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbe-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbe-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbe-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbf-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbf-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn0-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbn0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn0-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbn0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn1-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbn1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn1-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbn1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn2-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbn2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn2-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbn2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn3-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbn3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn3-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbn3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn4-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbn4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn4-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbn4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn5-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbn5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn5-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbn5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn6-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbn6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn6-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbn6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn7-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbn7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn7-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbn7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn8-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbn8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn8-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbn8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn9-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbn9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbn9-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbn9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbn9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbna-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbna-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbna-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbna-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbna-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbna-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbnb-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbnb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbnb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbnb-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbnb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbnb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbnc-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbnc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbnc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbnc-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbnc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbnc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbnd-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbnd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbnd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbnd-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbnd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbnd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbne-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbne-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbne-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbne-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbne-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbne-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbnf-h.tfm b/language/japanese/japanese-otf/tfm/utfjmbnf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbnf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmbnf-v.tfm b/language/japanese/japanese-otf/tfm/utfjmbnf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmbnf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr0-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr0-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr1-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr1-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr2-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr2-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr3-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr3-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr4-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr4-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr5-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr5-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr6-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr6-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr7-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr7-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr8-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr8-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr9-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgr9-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgra-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgra-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrb-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrb-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrc-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrc-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrd-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrd-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgre-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgre-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrf-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrf-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn0-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn0-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn1-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn1-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn2-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn2-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn3-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn3-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn4-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn4-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn5-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn5-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn6-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn6-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn7-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn7-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn8-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn8-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn9-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrn9-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrn9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrn9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrna-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrna-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrna-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrna-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrna-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrna-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrnb-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrnb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrnb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrnb-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrnb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrnb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrnc-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrnc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrnc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrnc-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrnc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrnc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrnd-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrnd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrnd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrnd-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrnd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrnd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrne-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrne-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrne-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrne-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrne-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrne-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrnf-h.tfm b/language/japanese/japanese-otf/tfm/utfjmgrnf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrnf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmgrnf-v.tfm b/language/japanese/japanese-otf/tfm/utfjmgrnf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmgrnf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml0-h.tfm b/language/japanese/japanese-otf/tfm/utfjml0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml0-v.tfm b/language/japanese/japanese-otf/tfm/utfjml0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml1-h.tfm b/language/japanese/japanese-otf/tfm/utfjml1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml1-v.tfm b/language/japanese/japanese-otf/tfm/utfjml1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml2-h.tfm b/language/japanese/japanese-otf/tfm/utfjml2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml2-v.tfm b/language/japanese/japanese-otf/tfm/utfjml2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml3-h.tfm b/language/japanese/japanese-otf/tfm/utfjml3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml3-v.tfm b/language/japanese/japanese-otf/tfm/utfjml3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml4-h.tfm b/language/japanese/japanese-otf/tfm/utfjml4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml4-v.tfm b/language/japanese/japanese-otf/tfm/utfjml4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml5-h.tfm b/language/japanese/japanese-otf/tfm/utfjml5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml5-v.tfm b/language/japanese/japanese-otf/tfm/utfjml5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml6-h.tfm b/language/japanese/japanese-otf/tfm/utfjml6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml6-v.tfm b/language/japanese/japanese-otf/tfm/utfjml6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml7-h.tfm b/language/japanese/japanese-otf/tfm/utfjml7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml7-v.tfm b/language/japanese/japanese-otf/tfm/utfjml7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml8-h.tfm b/language/japanese/japanese-otf/tfm/utfjml8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml8-v.tfm b/language/japanese/japanese-otf/tfm/utfjml8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml9-h.tfm b/language/japanese/japanese-otf/tfm/utfjml9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjml9-v.tfm b/language/japanese/japanese-otf/tfm/utfjml9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjml9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmla-h.tfm b/language/japanese/japanese-otf/tfm/utfjmla-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmla-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmla-v.tfm b/language/japanese/japanese-otf/tfm/utfjmla-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmla-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlb-h.tfm b/language/japanese/japanese-otf/tfm/utfjmlb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlb-v.tfm b/language/japanese/japanese-otf/tfm/utfjmlb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlc-h.tfm b/language/japanese/japanese-otf/tfm/utfjmlc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlc-v.tfm b/language/japanese/japanese-otf/tfm/utfjmlc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmld-h.tfm b/language/japanese/japanese-otf/tfm/utfjmld-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmld-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmld-v.tfm b/language/japanese/japanese-otf/tfm/utfjmld-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmld-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmle-h.tfm b/language/japanese/japanese-otf/tfm/utfjmle-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmle-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmle-v.tfm b/language/japanese/japanese-otf/tfm/utfjmle-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmle-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlf-h.tfm b/language/japanese/japanese-otf/tfm/utfjmlf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlf-v.tfm b/language/japanese/japanese-otf/tfm/utfjmlf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln0-h.tfm b/language/japanese/japanese-otf/tfm/utfjmln0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln0-v.tfm b/language/japanese/japanese-otf/tfm/utfjmln0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln1-h.tfm b/language/japanese/japanese-otf/tfm/utfjmln1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln1-v.tfm b/language/japanese/japanese-otf/tfm/utfjmln1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln2-h.tfm b/language/japanese/japanese-otf/tfm/utfjmln2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln2-v.tfm b/language/japanese/japanese-otf/tfm/utfjmln2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln3-h.tfm b/language/japanese/japanese-otf/tfm/utfjmln3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln3-v.tfm b/language/japanese/japanese-otf/tfm/utfjmln3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln4-h.tfm b/language/japanese/japanese-otf/tfm/utfjmln4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln4-v.tfm b/language/japanese/japanese-otf/tfm/utfjmln4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln5-h.tfm b/language/japanese/japanese-otf/tfm/utfjmln5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln5-v.tfm b/language/japanese/japanese-otf/tfm/utfjmln5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln6-h.tfm b/language/japanese/japanese-otf/tfm/utfjmln6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln6-v.tfm b/language/japanese/japanese-otf/tfm/utfjmln6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln7-h.tfm b/language/japanese/japanese-otf/tfm/utfjmln7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln7-v.tfm b/language/japanese/japanese-otf/tfm/utfjmln7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln8-h.tfm b/language/japanese/japanese-otf/tfm/utfjmln8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln8-v.tfm b/language/japanese/japanese-otf/tfm/utfjmln8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln9-h.tfm b/language/japanese/japanese-otf/tfm/utfjmln9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmln9-v.tfm b/language/japanese/japanese-otf/tfm/utfjmln9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmln9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlna-h.tfm b/language/japanese/japanese-otf/tfm/utfjmlna-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlna-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlna-v.tfm b/language/japanese/japanese-otf/tfm/utfjmlna-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlna-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlnb-h.tfm b/language/japanese/japanese-otf/tfm/utfjmlnb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlnb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlnb-v.tfm b/language/japanese/japanese-otf/tfm/utfjmlnb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlnb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlnc-h.tfm b/language/japanese/japanese-otf/tfm/utfjmlnc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlnc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlnc-v.tfm b/language/japanese/japanese-otf/tfm/utfjmlnc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlnc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlnd-h.tfm b/language/japanese/japanese-otf/tfm/utfjmlnd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlnd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlnd-v.tfm b/language/japanese/japanese-otf/tfm/utfjmlnd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlnd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlne-h.tfm b/language/japanese/japanese-otf/tfm/utfjmlne-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlne-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlne-v.tfm b/language/japanese/japanese-otf/tfm/utfjmlne-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlne-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlnf-h.tfm b/language/japanese/japanese-otf/tfm/utfjmlnf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlnf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmlnf-v.tfm b/language/japanese/japanese-otf/tfm/utfjmlnf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmlnf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr0-h.tfm b/language/japanese/japanese-otf/tfm/utfjmr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr0-v.tfm b/language/japanese/japanese-otf/tfm/utfjmr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr1-h.tfm b/language/japanese/japanese-otf/tfm/utfjmr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr1-v.tfm b/language/japanese/japanese-otf/tfm/utfjmr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr2-h.tfm b/language/japanese/japanese-otf/tfm/utfjmr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr2-v.tfm b/language/japanese/japanese-otf/tfm/utfjmr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr3-h.tfm b/language/japanese/japanese-otf/tfm/utfjmr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr3-v.tfm b/language/japanese/japanese-otf/tfm/utfjmr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr4-h.tfm b/language/japanese/japanese-otf/tfm/utfjmr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr4-v.tfm b/language/japanese/japanese-otf/tfm/utfjmr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr5-h.tfm b/language/japanese/japanese-otf/tfm/utfjmr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr5-v.tfm b/language/japanese/japanese-otf/tfm/utfjmr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr6-h.tfm b/language/japanese/japanese-otf/tfm/utfjmr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr6-v.tfm b/language/japanese/japanese-otf/tfm/utfjmr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr7-h.tfm b/language/japanese/japanese-otf/tfm/utfjmr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr7-v.tfm b/language/japanese/japanese-otf/tfm/utfjmr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr8-h.tfm b/language/japanese/japanese-otf/tfm/utfjmr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr8-v.tfm b/language/japanese/japanese-otf/tfm/utfjmr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr9-h.tfm b/language/japanese/japanese-otf/tfm/utfjmr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmr9-v.tfm b/language/japanese/japanese-otf/tfm/utfjmr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmra-h.tfm b/language/japanese/japanese-otf/tfm/utfjmra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmra-v.tfm b/language/japanese/japanese-otf/tfm/utfjmra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrb-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrb-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrc-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrc-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrd-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrd-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmre-h.tfm b/language/japanese/japanese-otf/tfm/utfjmre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmre-v.tfm b/language/japanese/japanese-otf/tfm/utfjmre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrf-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrf-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn0-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrn0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn0-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrn0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn1-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrn1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn1-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrn1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn2-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrn2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn2-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrn2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn3-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrn3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn3-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrn3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn4-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrn4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn4-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrn4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn5-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrn5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn5-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrn5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn6-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrn6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn6-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrn6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn7-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrn7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn7-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrn7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn8-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrn8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn8-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrn8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn9-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrn9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrn9-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrn9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrn9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrna-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrna-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrna-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrna-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrna-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrna-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrnb-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrnb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrnb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrnb-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrnb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrnb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrnc-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrnc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrnc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrnc-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrnc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrnc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrnd-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrnd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrnd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrnd-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrnd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrnd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrne-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrne-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrne-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrne-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrne-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrne-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrnf-h.tfm b/language/japanese/japanese-otf/tfm/utfjmrnf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrnf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfjmrnf-v.tfm b/language/japanese/japanese-otf/tfm/utfjmrnf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfjmrnf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr0-h.tfm b/language/japanese/japanese-otf/tfm/utfkgr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr0-v.tfm b/language/japanese/japanese-otf/tfm/utfkgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr1-h.tfm b/language/japanese/japanese-otf/tfm/utfkgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr1-v.tfm b/language/japanese/japanese-otf/tfm/utfkgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr2-h.tfm b/language/japanese/japanese-otf/tfm/utfkgr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr2-v.tfm b/language/japanese/japanese-otf/tfm/utfkgr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr3-h.tfm b/language/japanese/japanese-otf/tfm/utfkgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr3-v.tfm b/language/japanese/japanese-otf/tfm/utfkgr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr4-h.tfm b/language/japanese/japanese-otf/tfm/utfkgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr4-v.tfm b/language/japanese/japanese-otf/tfm/utfkgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr5-h.tfm b/language/japanese/japanese-otf/tfm/utfkgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr5-v.tfm b/language/japanese/japanese-otf/tfm/utfkgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr6-h.tfm b/language/japanese/japanese-otf/tfm/utfkgr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr6-v.tfm b/language/japanese/japanese-otf/tfm/utfkgr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr7-h.tfm b/language/japanese/japanese-otf/tfm/utfkgr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr7-v.tfm b/language/japanese/japanese-otf/tfm/utfkgr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr8-h.tfm b/language/japanese/japanese-otf/tfm/utfkgr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr8-v.tfm b/language/japanese/japanese-otf/tfm/utfkgr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr9-h.tfm b/language/japanese/japanese-otf/tfm/utfkgr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgr9-v.tfm b/language/japanese/japanese-otf/tfm/utfkgr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgra-h.tfm b/language/japanese/japanese-otf/tfm/utfkgra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgra-v.tfm b/language/japanese/japanese-otf/tfm/utfkgra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgrb-h.tfm b/language/japanese/japanese-otf/tfm/utfkgrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgrb-v.tfm b/language/japanese/japanese-otf/tfm/utfkgrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgrc-h.tfm b/language/japanese/japanese-otf/tfm/utfkgrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgrc-v.tfm b/language/japanese/japanese-otf/tfm/utfkgrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgrd-h.tfm b/language/japanese/japanese-otf/tfm/utfkgrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgrd-v.tfm b/language/japanese/japanese-otf/tfm/utfkgrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgre-h.tfm b/language/japanese/japanese-otf/tfm/utfkgre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgre-v.tfm b/language/japanese/japanese-otf/tfm/utfkgre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgrf-h.tfm b/language/japanese/japanese-otf/tfm/utfkgrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkgrf-v.tfm b/language/japanese/japanese-otf/tfm/utfkgrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkgrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr0-h.tfm b/language/japanese/japanese-otf/tfm/utfkmr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr0-v.tfm b/language/japanese/japanese-otf/tfm/utfkmr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr1-h.tfm b/language/japanese/japanese-otf/tfm/utfkmr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr1-v.tfm b/language/japanese/japanese-otf/tfm/utfkmr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr2-h.tfm b/language/japanese/japanese-otf/tfm/utfkmr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr2-v.tfm b/language/japanese/japanese-otf/tfm/utfkmr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr3-h.tfm b/language/japanese/japanese-otf/tfm/utfkmr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr3-v.tfm b/language/japanese/japanese-otf/tfm/utfkmr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr4-h.tfm b/language/japanese/japanese-otf/tfm/utfkmr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr4-v.tfm b/language/japanese/japanese-otf/tfm/utfkmr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr5-h.tfm b/language/japanese/japanese-otf/tfm/utfkmr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr5-v.tfm b/language/japanese/japanese-otf/tfm/utfkmr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr6-h.tfm b/language/japanese/japanese-otf/tfm/utfkmr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr6-v.tfm b/language/japanese/japanese-otf/tfm/utfkmr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr7-h.tfm b/language/japanese/japanese-otf/tfm/utfkmr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr7-v.tfm b/language/japanese/japanese-otf/tfm/utfkmr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr8-h.tfm b/language/japanese/japanese-otf/tfm/utfkmr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr8-v.tfm b/language/japanese/japanese-otf/tfm/utfkmr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr9-h.tfm b/language/japanese/japanese-otf/tfm/utfkmr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmr9-v.tfm b/language/japanese/japanese-otf/tfm/utfkmr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmra-h.tfm b/language/japanese/japanese-otf/tfm/utfkmra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmra-v.tfm b/language/japanese/japanese-otf/tfm/utfkmra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmrb-h.tfm b/language/japanese/japanese-otf/tfm/utfkmrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmrb-v.tfm b/language/japanese/japanese-otf/tfm/utfkmrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmrc-h.tfm b/language/japanese/japanese-otf/tfm/utfkmrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmrc-v.tfm b/language/japanese/japanese-otf/tfm/utfkmrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmrd-h.tfm b/language/japanese/japanese-otf/tfm/utfkmrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmrd-v.tfm b/language/japanese/japanese-otf/tfm/utfkmrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmre-h.tfm b/language/japanese/japanese-otf/tfm/utfkmre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmre-v.tfm b/language/japanese/japanese-otf/tfm/utfkmre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmrf-h.tfm b/language/japanese/japanese-otf/tfm/utfkmrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfkmrf-v.tfm b/language/japanese/japanese-otf/tfm/utfkmrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfkmrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr0-h.tfm b/language/japanese/japanese-otf/tfm/utfmr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr0-v.tfm b/language/japanese/japanese-otf/tfm/utfmr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr1-h.tfm b/language/japanese/japanese-otf/tfm/utfmr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr1-v.tfm b/language/japanese/japanese-otf/tfm/utfmr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr2-h.tfm b/language/japanese/japanese-otf/tfm/utfmr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr2-v.tfm b/language/japanese/japanese-otf/tfm/utfmr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr3-h.tfm b/language/japanese/japanese-otf/tfm/utfmr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr3-v.tfm b/language/japanese/japanese-otf/tfm/utfmr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr4-h.tfm b/language/japanese/japanese-otf/tfm/utfmr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr4-v.tfm b/language/japanese/japanese-otf/tfm/utfmr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr5-h.tfm b/language/japanese/japanese-otf/tfm/utfmr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr5-v.tfm b/language/japanese/japanese-otf/tfm/utfmr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr6-h.tfm b/language/japanese/japanese-otf/tfm/utfmr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr6-v.tfm b/language/japanese/japanese-otf/tfm/utfmr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr7-h.tfm b/language/japanese/japanese-otf/tfm/utfmr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr7-v.tfm b/language/japanese/japanese-otf/tfm/utfmr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr8-h.tfm b/language/japanese/japanese-otf/tfm/utfmr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr8-v.tfm b/language/japanese/japanese-otf/tfm/utfmr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr9-h.tfm b/language/japanese/japanese-otf/tfm/utfmr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmr9-v.tfm b/language/japanese/japanese-otf/tfm/utfmr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmra-h.tfm b/language/japanese/japanese-otf/tfm/utfmra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmra-v.tfm b/language/japanese/japanese-otf/tfm/utfmra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmrb-h.tfm b/language/japanese/japanese-otf/tfm/utfmrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmrb-v.tfm b/language/japanese/japanese-otf/tfm/utfmrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmrc-h.tfm b/language/japanese/japanese-otf/tfm/utfmrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmrc-v.tfm b/language/japanese/japanese-otf/tfm/utfmrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmrd-h.tfm b/language/japanese/japanese-otf/tfm/utfmrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmrd-v.tfm b/language/japanese/japanese-otf/tfm/utfmrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmre-h.tfm b/language/japanese/japanese-otf/tfm/utfmre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmre-v.tfm b/language/japanese/japanese-otf/tfm/utfmre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmrf-h.tfm b/language/japanese/japanese-otf/tfm/utfmrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utfmrf-v.tfm b/language/japanese/japanese-otf/tfm/utfmrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utfmrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr0-h.tfm b/language/japanese/japanese-otf/tfm/utftgr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr0-v.tfm b/language/japanese/japanese-otf/tfm/utftgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr1-h.tfm b/language/japanese/japanese-otf/tfm/utftgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr1-v.tfm b/language/japanese/japanese-otf/tfm/utftgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr2-h.tfm b/language/japanese/japanese-otf/tfm/utftgr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr2-v.tfm b/language/japanese/japanese-otf/tfm/utftgr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr3-h.tfm b/language/japanese/japanese-otf/tfm/utftgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr3-v.tfm b/language/japanese/japanese-otf/tfm/utftgr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr4-h.tfm b/language/japanese/japanese-otf/tfm/utftgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr4-v.tfm b/language/japanese/japanese-otf/tfm/utftgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr5-h.tfm b/language/japanese/japanese-otf/tfm/utftgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr5-v.tfm b/language/japanese/japanese-otf/tfm/utftgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr6-h.tfm b/language/japanese/japanese-otf/tfm/utftgr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr6-v.tfm b/language/japanese/japanese-otf/tfm/utftgr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr7-h.tfm b/language/japanese/japanese-otf/tfm/utftgr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr7-v.tfm b/language/japanese/japanese-otf/tfm/utftgr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr8-h.tfm b/language/japanese/japanese-otf/tfm/utftgr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr8-v.tfm b/language/japanese/japanese-otf/tfm/utftgr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr9-h.tfm b/language/japanese/japanese-otf/tfm/utftgr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgr9-v.tfm b/language/japanese/japanese-otf/tfm/utftgr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgra-h.tfm b/language/japanese/japanese-otf/tfm/utftgra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgra-v.tfm b/language/japanese/japanese-otf/tfm/utftgra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgrb-h.tfm b/language/japanese/japanese-otf/tfm/utftgrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgrb-v.tfm b/language/japanese/japanese-otf/tfm/utftgrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgrc-h.tfm b/language/japanese/japanese-otf/tfm/utftgrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgrc-v.tfm b/language/japanese/japanese-otf/tfm/utftgrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgrd-h.tfm b/language/japanese/japanese-otf/tfm/utftgrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgrd-v.tfm b/language/japanese/japanese-otf/tfm/utftgrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgre-h.tfm b/language/japanese/japanese-otf/tfm/utftgre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgre-v.tfm b/language/japanese/japanese-otf/tfm/utftgre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgrf-h.tfm b/language/japanese/japanese-otf/tfm/utftgrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftgrf-v.tfm b/language/japanese/japanese-otf/tfm/utftgrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftgrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr0-h.tfm b/language/japanese/japanese-otf/tfm/utftmr0-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr0-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr0-v.tfm b/language/japanese/japanese-otf/tfm/utftmr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr0-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr1-h.tfm b/language/japanese/japanese-otf/tfm/utftmr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr1-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr1-v.tfm b/language/japanese/japanese-otf/tfm/utftmr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr1-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr2-h.tfm b/language/japanese/japanese-otf/tfm/utftmr2-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr2-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr2-v.tfm b/language/japanese/japanese-otf/tfm/utftmr2-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr2-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr3-h.tfm b/language/japanese/japanese-otf/tfm/utftmr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr3-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr3-v.tfm b/language/japanese/japanese-otf/tfm/utftmr3-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr3-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr4-h.tfm b/language/japanese/japanese-otf/tfm/utftmr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr4-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr4-v.tfm b/language/japanese/japanese-otf/tfm/utftmr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr4-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr5-h.tfm b/language/japanese/japanese-otf/tfm/utftmr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr5-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr5-v.tfm b/language/japanese/japanese-otf/tfm/utftmr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr5-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr6-h.tfm b/language/japanese/japanese-otf/tfm/utftmr6-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr6-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr6-v.tfm b/language/japanese/japanese-otf/tfm/utftmr6-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr6-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr7-h.tfm b/language/japanese/japanese-otf/tfm/utftmr7-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr7-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr7-v.tfm b/language/japanese/japanese-otf/tfm/utftmr7-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr7-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr8-h.tfm b/language/japanese/japanese-otf/tfm/utftmr8-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr8-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr8-v.tfm b/language/japanese/japanese-otf/tfm/utftmr8-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr8-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr9-h.tfm b/language/japanese/japanese-otf/tfm/utftmr9-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr9-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmr9-v.tfm b/language/japanese/japanese-otf/tfm/utftmr9-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmr9-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmra-h.tfm b/language/japanese/japanese-otf/tfm/utftmra-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmra-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmra-v.tfm b/language/japanese/japanese-otf/tfm/utftmra-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmra-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmrb-h.tfm b/language/japanese/japanese-otf/tfm/utftmrb-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmrb-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmrb-v.tfm b/language/japanese/japanese-otf/tfm/utftmrb-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmrb-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmrc-h.tfm b/language/japanese/japanese-otf/tfm/utftmrc-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmrc-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmrc-v.tfm b/language/japanese/japanese-otf/tfm/utftmrc-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmrc-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmrd-h.tfm b/language/japanese/japanese-otf/tfm/utftmrd-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmrd-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmrd-v.tfm b/language/japanese/japanese-otf/tfm/utftmrd-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmrd-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmre-h.tfm b/language/japanese/japanese-otf/tfm/utftmre-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmre-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmre-v.tfm b/language/japanese/japanese-otf/tfm/utftmre-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmre-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmrf-h.tfm b/language/japanese/japanese-otf/tfm/utftmrf-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmrf-h.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/tfm/utftmrf-v.tfm b/language/japanese/japanese-otf/tfm/utftmrf-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/japanese-otf/tfm/utftmrf-v.tfm
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgothb-h.vf b/language/japanese/japanese-otf/vf/brsgexpgothb-h.vf
new file mode 100644
index 0000000000..0d851db824
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgothb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgothb-v.vf b/language/japanese/japanese-otf/vf/brsgexpgothb-v.vf
new file mode 100644
index 0000000000..4b7c1cd434
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgothb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgothbn-h.vf b/language/japanese/japanese-otf/vf/brsgexpgothbn-h.vf
new file mode 100644
index 0000000000..450ce9a26d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgothbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgothbn-v.vf b/language/japanese/japanese-otf/vf/brsgexpgothbn-v.vf
new file mode 100644
index 0000000000..3664bebefd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgothbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgotheb-h.vf b/language/japanese/japanese-otf/vf/brsgexpgotheb-h.vf
new file mode 100644
index 0000000000..e07bb87c16
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgotheb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgotheb-v.vf b/language/japanese/japanese-otf/vf/brsgexpgotheb-v.vf
new file mode 100644
index 0000000000..67a148cfec
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgotheb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgothebn-h.vf b/language/japanese/japanese-otf/vf/brsgexpgothebn-h.vf
new file mode 100644
index 0000000000..aafd03bbd6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgothebn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgothebn-v.vf b/language/japanese/japanese-otf/vf/brsgexpgothebn-v.vf
new file mode 100644
index 0000000000..c445520a46
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgothebn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgothr-h.vf b/language/japanese/japanese-otf/vf/brsgexpgothr-h.vf
new file mode 100644
index 0000000000..10d3fc1140
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgothr-v.vf b/language/japanese/japanese-otf/vf/brsgexpgothr-v.vf
new file mode 100644
index 0000000000..e8ac13793e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgothrn-h.vf b/language/japanese/japanese-otf/vf/brsgexpgothrn-h.vf
new file mode 100644
index 0000000000..34596cfa63
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpgothrn-v.vf b/language/japanese/japanese-otf/vf/brsgexpgothrn-v.vf
new file mode 100644
index 0000000000..25b62ae101
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpmgothr-h.vf b/language/japanese/japanese-otf/vf/brsgexpmgothr-h.vf
new file mode 100644
index 0000000000..7a584e5fd9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpmgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpmgothr-v.vf b/language/japanese/japanese-otf/vf/brsgexpmgothr-v.vf
new file mode 100644
index 0000000000..62cd4e9de2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpmgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpmgothrn-h.vf b/language/japanese/japanese-otf/vf/brsgexpmgothrn-h.vf
new file mode 100644
index 0000000000..402c2e421c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpmgothrn-v.vf b/language/japanese/japanese-otf/vf/brsgexpmgothrn-v.vf
new file mode 100644
index 0000000000..e88f4a2759
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminb-h.vf b/language/japanese/japanese-otf/vf/brsgexpminb-h.vf
new file mode 100644
index 0000000000..542a25537f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminb-v.vf b/language/japanese/japanese-otf/vf/brsgexpminb-v.vf
new file mode 100644
index 0000000000..2fb376495a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminbn-h.vf b/language/japanese/japanese-otf/vf/brsgexpminbn-h.vf
new file mode 100644
index 0000000000..5b03d106f8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminbn-v.vf b/language/japanese/japanese-otf/vf/brsgexpminbn-v.vf
new file mode 100644
index 0000000000..157ac6ea30
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminl-h.vf b/language/japanese/japanese-otf/vf/brsgexpminl-h.vf
new file mode 100644
index 0000000000..15308449ca
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminl-v.vf b/language/japanese/japanese-otf/vf/brsgexpminl-v.vf
new file mode 100644
index 0000000000..b1b7120ae3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminln-h.vf b/language/japanese/japanese-otf/vf/brsgexpminln-h.vf
new file mode 100644
index 0000000000..52dce159f5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminln-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminln-v.vf b/language/japanese/japanese-otf/vf/brsgexpminln-v.vf
new file mode 100644
index 0000000000..41298c2fac
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminln-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminr-h.vf b/language/japanese/japanese-otf/vf/brsgexpminr-h.vf
new file mode 100644
index 0000000000..452909002f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminr-v.vf b/language/japanese/japanese-otf/vf/brsgexpminr-v.vf
new file mode 100644
index 0000000000..62a8f15a36
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminrn-h.vf b/language/japanese/japanese-otf/vf/brsgexpminrn-h.vf
new file mode 100644
index 0000000000..dac27fab3b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgexpminrn-v.vf b/language/japanese/japanese-otf/vf/brsgexpminrn-v.vf
new file mode 100644
index 0000000000..dcf69ebe3d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgexpminrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgothb-h.vf b/language/japanese/japanese-otf/vf/brsgnmlgothb-h.vf
new file mode 100644
index 0000000000..e91692cf5d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgothb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgothb-v.vf b/language/japanese/japanese-otf/vf/brsgnmlgothb-v.vf
new file mode 100644
index 0000000000..5c57eb3fc1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgothb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgothbn-h.vf b/language/japanese/japanese-otf/vf/brsgnmlgothbn-h.vf
new file mode 100644
index 0000000000..9191fa31e0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgothbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgothbn-v.vf b/language/japanese/japanese-otf/vf/brsgnmlgothbn-v.vf
new file mode 100644
index 0000000000..bda0b66059
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgothbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgotheb-h.vf b/language/japanese/japanese-otf/vf/brsgnmlgotheb-h.vf
new file mode 100644
index 0000000000..c24ea739fd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgotheb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgotheb-v.vf b/language/japanese/japanese-otf/vf/brsgnmlgotheb-v.vf
new file mode 100644
index 0000000000..ea7f882df3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgotheb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgothebn-h.vf b/language/japanese/japanese-otf/vf/brsgnmlgothebn-h.vf
new file mode 100644
index 0000000000..cfc151c744
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgothebn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgothebn-v.vf b/language/japanese/japanese-otf/vf/brsgnmlgothebn-v.vf
new file mode 100644
index 0000000000..87fd210005
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgothebn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgothr-h.vf b/language/japanese/japanese-otf/vf/brsgnmlgothr-h.vf
new file mode 100644
index 0000000000..645156b585
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgothr-v.vf b/language/japanese/japanese-otf/vf/brsgnmlgothr-v.vf
new file mode 100644
index 0000000000..29fddb4501
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgothrn-h.vf b/language/japanese/japanese-otf/vf/brsgnmlgothrn-h.vf
new file mode 100644
index 0000000000..0d7713131c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlgothrn-v.vf b/language/japanese/japanese-otf/vf/brsgnmlgothrn-v.vf
new file mode 100644
index 0000000000..021ce29194
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlmgothr-h.vf b/language/japanese/japanese-otf/vf/brsgnmlmgothr-h.vf
new file mode 100644
index 0000000000..a2a59d3d7c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlmgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlmgothr-v.vf b/language/japanese/japanese-otf/vf/brsgnmlmgothr-v.vf
new file mode 100644
index 0000000000..8ca2168af9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlmgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlmgothrn-h.vf b/language/japanese/japanese-otf/vf/brsgnmlmgothrn-h.vf
new file mode 100644
index 0000000000..1b46f3e95b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlmgothrn-v.vf b/language/japanese/japanese-otf/vf/brsgnmlmgothrn-v.vf
new file mode 100644
index 0000000000..e4ee12b6b4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminb-h.vf b/language/japanese/japanese-otf/vf/brsgnmlminb-h.vf
new file mode 100644
index 0000000000..a2c8e77201
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminb-v.vf b/language/japanese/japanese-otf/vf/brsgnmlminb-v.vf
new file mode 100644
index 0000000000..10a7b4f6f1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminbn-h.vf b/language/japanese/japanese-otf/vf/brsgnmlminbn-h.vf
new file mode 100644
index 0000000000..a67098fda2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminbn-v.vf b/language/japanese/japanese-otf/vf/brsgnmlminbn-v.vf
new file mode 100644
index 0000000000..c16807efe3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminl-h.vf b/language/japanese/japanese-otf/vf/brsgnmlminl-h.vf
new file mode 100644
index 0000000000..0ccbaf2b53
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminl-v.vf b/language/japanese/japanese-otf/vf/brsgnmlminl-v.vf
new file mode 100644
index 0000000000..4de561f439
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminln-h.vf b/language/japanese/japanese-otf/vf/brsgnmlminln-h.vf
new file mode 100644
index 0000000000..45b0f88a60
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminln-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminln-v.vf b/language/japanese/japanese-otf/vf/brsgnmlminln-v.vf
new file mode 100644
index 0000000000..c35be70de4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminln-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminr-h.vf b/language/japanese/japanese-otf/vf/brsgnmlminr-h.vf
new file mode 100644
index 0000000000..77fe963809
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminr-v.vf b/language/japanese/japanese-otf/vf/brsgnmlminr-v.vf
new file mode 100644
index 0000000000..4529a83b39
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminrn-h.vf b/language/japanese/japanese-otf/vf/brsgnmlminrn-h.vf
new file mode 100644
index 0000000000..52837b9eec
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/brsgnmlminrn-v.vf b/language/japanese/japanese-otf/vf/brsgnmlminrn-v.vf
new file mode 100644
index 0000000000..0600c2fc42
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/brsgnmlminrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr0-h.vf b/language/japanese/japanese-otf/vf/cidcgr0-h.vf
new file mode 100644
index 0000000000..5e7df25a3f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr0-v.vf b/language/japanese/japanese-otf/vf/cidcgr0-v.vf
new file mode 100644
index 0000000000..8085203739
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr1-h.vf b/language/japanese/japanese-otf/vf/cidcgr1-h.vf
new file mode 100644
index 0000000000..aa7fc95957
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr1-v.vf b/language/japanese/japanese-otf/vf/cidcgr1-v.vf
new file mode 100644
index 0000000000..ea3f3b8921
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr2-h.vf b/language/japanese/japanese-otf/vf/cidcgr2-h.vf
new file mode 100644
index 0000000000..212cad5f0c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr2-v.vf b/language/japanese/japanese-otf/vf/cidcgr2-v.vf
new file mode 100644
index 0000000000..830771e7ef
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr3-h.vf b/language/japanese/japanese-otf/vf/cidcgr3-h.vf
new file mode 100644
index 0000000000..397d46393c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr3-v.vf b/language/japanese/japanese-otf/vf/cidcgr3-v.vf
new file mode 100644
index 0000000000..4355b98bc3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr4-h.vf b/language/japanese/japanese-otf/vf/cidcgr4-h.vf
new file mode 100644
index 0000000000..4919186931
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr4-v.vf b/language/japanese/japanese-otf/vf/cidcgr4-v.vf
new file mode 100644
index 0000000000..5f2cc1e2e7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr5-h.vf b/language/japanese/japanese-otf/vf/cidcgr5-h.vf
new file mode 100644
index 0000000000..e6e958d23c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr5-v.vf b/language/japanese/japanese-otf/vf/cidcgr5-v.vf
new file mode 100644
index 0000000000..2e8790f93c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr6-h.vf b/language/japanese/japanese-otf/vf/cidcgr6-h.vf
new file mode 100644
index 0000000000..38cc796a66
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr6-v.vf b/language/japanese/japanese-otf/vf/cidcgr6-v.vf
new file mode 100644
index 0000000000..03e5369188
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr7-h.vf b/language/japanese/japanese-otf/vf/cidcgr7-h.vf
new file mode 100644
index 0000000000..1faee206d3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcgr7-v.vf b/language/japanese/japanese-otf/vf/cidcgr7-v.vf
new file mode 100644
index 0000000000..0847904f32
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcgr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr0-h.vf b/language/japanese/japanese-otf/vf/cidcmr0-h.vf
new file mode 100644
index 0000000000..6aa196bb7a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr0-v.vf b/language/japanese/japanese-otf/vf/cidcmr0-v.vf
new file mode 100644
index 0000000000..b091573c79
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr1-h.vf b/language/japanese/japanese-otf/vf/cidcmr1-h.vf
new file mode 100644
index 0000000000..f651190001
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr1-v.vf b/language/japanese/japanese-otf/vf/cidcmr1-v.vf
new file mode 100644
index 0000000000..ad7550c6b6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr2-h.vf b/language/japanese/japanese-otf/vf/cidcmr2-h.vf
new file mode 100644
index 0000000000..ca9819abf3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr2-v.vf b/language/japanese/japanese-otf/vf/cidcmr2-v.vf
new file mode 100644
index 0000000000..d83a8c6290
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr3-h.vf b/language/japanese/japanese-otf/vf/cidcmr3-h.vf
new file mode 100644
index 0000000000..7f4e70682e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr3-v.vf b/language/japanese/japanese-otf/vf/cidcmr3-v.vf
new file mode 100644
index 0000000000..a803d3d4e3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr4-h.vf b/language/japanese/japanese-otf/vf/cidcmr4-h.vf
new file mode 100644
index 0000000000..aff7b0d6bc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr4-v.vf b/language/japanese/japanese-otf/vf/cidcmr4-v.vf
new file mode 100644
index 0000000000..27ae0940d8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr5-h.vf b/language/japanese/japanese-otf/vf/cidcmr5-h.vf
new file mode 100644
index 0000000000..47f1c0ff5d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr5-v.vf b/language/japanese/japanese-otf/vf/cidcmr5-v.vf
new file mode 100644
index 0000000000..bd6b8b033a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr6-h.vf b/language/japanese/japanese-otf/vf/cidcmr6-h.vf
new file mode 100644
index 0000000000..aa230930f7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr6-v.vf b/language/japanese/japanese-otf/vf/cidcmr6-v.vf
new file mode 100644
index 0000000000..443a0a829c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr7-h.vf b/language/japanese/japanese-otf/vf/cidcmr7-h.vf
new file mode 100644
index 0000000000..d8eb65ab53
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidcmr7-v.vf b/language/japanese/japanese-otf/vf/cidcmr7-v.vf
new file mode 100644
index 0000000000..4aed176f75
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidcmr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb0-h.vf b/language/japanese/japanese-otf/vf/cidjgb0-h.vf
new file mode 100644
index 0000000000..2fa327c68a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb0-v.vf b/language/japanese/japanese-otf/vf/cidjgb0-v.vf
new file mode 100644
index 0000000000..03915c785b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb1-h.vf b/language/japanese/japanese-otf/vf/cidjgb1-h.vf
new file mode 100644
index 0000000000..e90c97a62a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb1-v.vf b/language/japanese/japanese-otf/vf/cidjgb1-v.vf
new file mode 100644
index 0000000000..e79f44d815
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb2-h.vf b/language/japanese/japanese-otf/vf/cidjgb2-h.vf
new file mode 100644
index 0000000000..60c9c8beee
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb2-v.vf b/language/japanese/japanese-otf/vf/cidjgb2-v.vf
new file mode 100644
index 0000000000..8d10b83024
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb3-h.vf b/language/japanese/japanese-otf/vf/cidjgb3-h.vf
new file mode 100644
index 0000000000..0da49a0a0f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb3-v.vf b/language/japanese/japanese-otf/vf/cidjgb3-v.vf
new file mode 100644
index 0000000000..698993e111
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb4-h.vf b/language/japanese/japanese-otf/vf/cidjgb4-h.vf
new file mode 100644
index 0000000000..8c55b1b02b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb4-v.vf b/language/japanese/japanese-otf/vf/cidjgb4-v.vf
new file mode 100644
index 0000000000..1c0592a7a6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb5-h.vf b/language/japanese/japanese-otf/vf/cidjgb5-h.vf
new file mode 100644
index 0000000000..97f18a557c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgb5-v.vf b/language/japanese/japanese-otf/vf/cidjgb5-v.vf
new file mode 100644
index 0000000000..3fed6f104e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgb5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge0-h.vf b/language/japanese/japanese-otf/vf/cidjge0-h.vf
new file mode 100644
index 0000000000..d6367a3da5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge0-v.vf b/language/japanese/japanese-otf/vf/cidjge0-v.vf
new file mode 100644
index 0000000000..db1f54aa09
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge1-h.vf b/language/japanese/japanese-otf/vf/cidjge1-h.vf
new file mode 100644
index 0000000000..a10aa0480c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge1-v.vf b/language/japanese/japanese-otf/vf/cidjge1-v.vf
new file mode 100644
index 0000000000..934554798c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge2-h.vf b/language/japanese/japanese-otf/vf/cidjge2-h.vf
new file mode 100644
index 0000000000..32698532f7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge2-v.vf b/language/japanese/japanese-otf/vf/cidjge2-v.vf
new file mode 100644
index 0000000000..475329323c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge3-h.vf b/language/japanese/japanese-otf/vf/cidjge3-h.vf
new file mode 100644
index 0000000000..0d03112ebd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge3-v.vf b/language/japanese/japanese-otf/vf/cidjge3-v.vf
new file mode 100644
index 0000000000..fbbbb5bf48
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge4-h.vf b/language/japanese/japanese-otf/vf/cidjge4-h.vf
new file mode 100644
index 0000000000..a42307f7c2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge4-v.vf b/language/japanese/japanese-otf/vf/cidjge4-v.vf
new file mode 100644
index 0000000000..e6a2d16f19
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge5-h.vf b/language/japanese/japanese-otf/vf/cidjge5-h.vf
new file mode 100644
index 0000000000..4971c622c6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjge5-v.vf b/language/japanese/japanese-otf/vf/cidjge5-v.vf
new file mode 100644
index 0000000000..aa52158950
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjge5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr0-h.vf b/language/japanese/japanese-otf/vf/cidjgr0-h.vf
new file mode 100644
index 0000000000..e2a37d9bef
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr0-v.vf b/language/japanese/japanese-otf/vf/cidjgr0-v.vf
new file mode 100644
index 0000000000..6e6b0e5ce3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr1-h.vf b/language/japanese/japanese-otf/vf/cidjgr1-h.vf
new file mode 100644
index 0000000000..0e2427864c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr1-v.vf b/language/japanese/japanese-otf/vf/cidjgr1-v.vf
new file mode 100644
index 0000000000..8473cc289f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr2-h.vf b/language/japanese/japanese-otf/vf/cidjgr2-h.vf
new file mode 100644
index 0000000000..a5eb1353b2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr2-v.vf b/language/japanese/japanese-otf/vf/cidjgr2-v.vf
new file mode 100644
index 0000000000..43fb4747e2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr3-h.vf b/language/japanese/japanese-otf/vf/cidjgr3-h.vf
new file mode 100644
index 0000000000..6f7b37f93f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr3-v.vf b/language/japanese/japanese-otf/vf/cidjgr3-v.vf
new file mode 100644
index 0000000000..ae4a9b1723
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr4-h.vf b/language/japanese/japanese-otf/vf/cidjgr4-h.vf
new file mode 100644
index 0000000000..958099075f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr4-v.vf b/language/japanese/japanese-otf/vf/cidjgr4-v.vf
new file mode 100644
index 0000000000..a0900fac53
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr5-h.vf b/language/japanese/japanese-otf/vf/cidjgr5-h.vf
new file mode 100644
index 0000000000..fff5dbe5c2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjgr5-v.vf b/language/japanese/japanese-otf/vf/cidjgr5-v.vf
new file mode 100644
index 0000000000..64a2322465
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjgr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb0-h.vf b/language/japanese/japanese-otf/vf/cidjmb0-h.vf
new file mode 100644
index 0000000000..b632c7a3ef
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb0-v.vf b/language/japanese/japanese-otf/vf/cidjmb0-v.vf
new file mode 100644
index 0000000000..d5bacf4aa6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb1-h.vf b/language/japanese/japanese-otf/vf/cidjmb1-h.vf
new file mode 100644
index 0000000000..cf544f6ba7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb1-v.vf b/language/japanese/japanese-otf/vf/cidjmb1-v.vf
new file mode 100644
index 0000000000..811343e00c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb2-h.vf b/language/japanese/japanese-otf/vf/cidjmb2-h.vf
new file mode 100644
index 0000000000..1bac70210b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb2-v.vf b/language/japanese/japanese-otf/vf/cidjmb2-v.vf
new file mode 100644
index 0000000000..95823d915e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb3-h.vf b/language/japanese/japanese-otf/vf/cidjmb3-h.vf
new file mode 100644
index 0000000000..85267d6230
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb3-v.vf b/language/japanese/japanese-otf/vf/cidjmb3-v.vf
new file mode 100644
index 0000000000..10c1ac21cd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb4-h.vf b/language/japanese/japanese-otf/vf/cidjmb4-h.vf
new file mode 100644
index 0000000000..64a86919c3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb4-v.vf b/language/japanese/japanese-otf/vf/cidjmb4-v.vf
new file mode 100644
index 0000000000..aa9dd370d2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb5-h.vf b/language/japanese/japanese-otf/vf/cidjmb5-h.vf
new file mode 100644
index 0000000000..b44f96bed7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmb5-v.vf b/language/japanese/japanese-otf/vf/cidjmb5-v.vf
new file mode 100644
index 0000000000..472984f083
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmb5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr0-h.vf b/language/japanese/japanese-otf/vf/cidjmgr0-h.vf
new file mode 100644
index 0000000000..0af6b4c921
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr0-v.vf b/language/japanese/japanese-otf/vf/cidjmgr0-v.vf
new file mode 100644
index 0000000000..6aac3778a8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr1-h.vf b/language/japanese/japanese-otf/vf/cidjmgr1-h.vf
new file mode 100644
index 0000000000..5675cc15a0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr1-v.vf b/language/japanese/japanese-otf/vf/cidjmgr1-v.vf
new file mode 100644
index 0000000000..37457428aa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr2-h.vf b/language/japanese/japanese-otf/vf/cidjmgr2-h.vf
new file mode 100644
index 0000000000..6e5a600b60
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr2-v.vf b/language/japanese/japanese-otf/vf/cidjmgr2-v.vf
new file mode 100644
index 0000000000..32a456acc5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr3-h.vf b/language/japanese/japanese-otf/vf/cidjmgr3-h.vf
new file mode 100644
index 0000000000..805d7c4879
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr3-v.vf b/language/japanese/japanese-otf/vf/cidjmgr3-v.vf
new file mode 100644
index 0000000000..3dfd81f966
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr4-h.vf b/language/japanese/japanese-otf/vf/cidjmgr4-h.vf
new file mode 100644
index 0000000000..55399ada06
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr4-v.vf b/language/japanese/japanese-otf/vf/cidjmgr4-v.vf
new file mode 100644
index 0000000000..d8ebb74da0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr5-h.vf b/language/japanese/japanese-otf/vf/cidjmgr5-h.vf
new file mode 100644
index 0000000000..cf67a0492a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmgr5-v.vf b/language/japanese/japanese-otf/vf/cidjmgr5-v.vf
new file mode 100644
index 0000000000..b55d7a5b05
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmgr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml0-h.vf b/language/japanese/japanese-otf/vf/cidjml0-h.vf
new file mode 100644
index 0000000000..37e670283f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml0-v.vf b/language/japanese/japanese-otf/vf/cidjml0-v.vf
new file mode 100644
index 0000000000..4eac866d4e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml1-h.vf b/language/japanese/japanese-otf/vf/cidjml1-h.vf
new file mode 100644
index 0000000000..f7c517d967
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml1-v.vf b/language/japanese/japanese-otf/vf/cidjml1-v.vf
new file mode 100644
index 0000000000..f969b493b1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml2-h.vf b/language/japanese/japanese-otf/vf/cidjml2-h.vf
new file mode 100644
index 0000000000..107780737f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml2-v.vf b/language/japanese/japanese-otf/vf/cidjml2-v.vf
new file mode 100644
index 0000000000..0aca0e5fd9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml3-h.vf b/language/japanese/japanese-otf/vf/cidjml3-h.vf
new file mode 100644
index 0000000000..b121795ceb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml3-v.vf b/language/japanese/japanese-otf/vf/cidjml3-v.vf
new file mode 100644
index 0000000000..fb4186d257
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml4-h.vf b/language/japanese/japanese-otf/vf/cidjml4-h.vf
new file mode 100644
index 0000000000..2281832ced
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml4-v.vf b/language/japanese/japanese-otf/vf/cidjml4-v.vf
new file mode 100644
index 0000000000..817e9ec1ed
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml5-h.vf b/language/japanese/japanese-otf/vf/cidjml5-h.vf
new file mode 100644
index 0000000000..aba7bdc822
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjml5-v.vf b/language/japanese/japanese-otf/vf/cidjml5-v.vf
new file mode 100644
index 0000000000..d2d2fc501a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjml5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr0-h.vf b/language/japanese/japanese-otf/vf/cidjmr0-h.vf
new file mode 100644
index 0000000000..dfa2c563db
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr0-v.vf b/language/japanese/japanese-otf/vf/cidjmr0-v.vf
new file mode 100644
index 0000000000..91aaa9874a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr1-h.vf b/language/japanese/japanese-otf/vf/cidjmr1-h.vf
new file mode 100644
index 0000000000..e3f5254de0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr1-v.vf b/language/japanese/japanese-otf/vf/cidjmr1-v.vf
new file mode 100644
index 0000000000..4b16eb2922
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr2-h.vf b/language/japanese/japanese-otf/vf/cidjmr2-h.vf
new file mode 100644
index 0000000000..c2eab47762
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr2-v.vf b/language/japanese/japanese-otf/vf/cidjmr2-v.vf
new file mode 100644
index 0000000000..6279b4bd56
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr3-h.vf b/language/japanese/japanese-otf/vf/cidjmr3-h.vf
new file mode 100644
index 0000000000..51c25a4a62
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr3-v.vf b/language/japanese/japanese-otf/vf/cidjmr3-v.vf
new file mode 100644
index 0000000000..f8f0b39b27
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr4-h.vf b/language/japanese/japanese-otf/vf/cidjmr4-h.vf
new file mode 100644
index 0000000000..2da7eaa16d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr4-v.vf b/language/japanese/japanese-otf/vf/cidjmr4-v.vf
new file mode 100644
index 0000000000..e2311b9f6d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr5-h.vf b/language/japanese/japanese-otf/vf/cidjmr5-h.vf
new file mode 100644
index 0000000000..202e631dcf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidjmr5-v.vf b/language/japanese/japanese-otf/vf/cidjmr5-v.vf
new file mode 100644
index 0000000000..5db35d1544
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidjmr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkgr0-h.vf b/language/japanese/japanese-otf/vf/cidkgr0-h.vf
new file mode 100644
index 0000000000..d9cb7a5a8d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkgr0-v.vf b/language/japanese/japanese-otf/vf/cidkgr0-v.vf
new file mode 100644
index 0000000000..a80e80074b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkgr1-h.vf b/language/japanese/japanese-otf/vf/cidkgr1-h.vf
new file mode 100644
index 0000000000..b6e135aa14
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkgr1-v.vf b/language/japanese/japanese-otf/vf/cidkgr1-v.vf
new file mode 100644
index 0000000000..122b35c846
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkgr2-h.vf b/language/japanese/japanese-otf/vf/cidkgr2-h.vf
new file mode 100644
index 0000000000..cd30169b56
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkgr2-v.vf b/language/japanese/japanese-otf/vf/cidkgr2-v.vf
new file mode 100644
index 0000000000..ae3a6d4a62
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkgr3-h.vf b/language/japanese/japanese-otf/vf/cidkgr3-h.vf
new file mode 100644
index 0000000000..97c90d490f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkgr3-v.vf b/language/japanese/japanese-otf/vf/cidkgr3-v.vf
new file mode 100644
index 0000000000..d3485977d0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkgr4-h.vf b/language/japanese/japanese-otf/vf/cidkgr4-h.vf
new file mode 100644
index 0000000000..97b0399744
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkgr4-v.vf b/language/japanese/japanese-otf/vf/cidkgr4-v.vf
new file mode 100644
index 0000000000..5f2d7f4603
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkmr0-h.vf b/language/japanese/japanese-otf/vf/cidkmr0-h.vf
new file mode 100644
index 0000000000..30a818cdcd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkmr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkmr0-v.vf b/language/japanese/japanese-otf/vf/cidkmr0-v.vf
new file mode 100644
index 0000000000..48af1e6cee
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkmr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkmr1-h.vf b/language/japanese/japanese-otf/vf/cidkmr1-h.vf
new file mode 100644
index 0000000000..a43561a794
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkmr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkmr1-v.vf b/language/japanese/japanese-otf/vf/cidkmr1-v.vf
new file mode 100644
index 0000000000..0a02647edd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkmr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkmr2-h.vf b/language/japanese/japanese-otf/vf/cidkmr2-h.vf
new file mode 100644
index 0000000000..921e915d32
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkmr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkmr2-v.vf b/language/japanese/japanese-otf/vf/cidkmr2-v.vf
new file mode 100644
index 0000000000..5cc7ff5b97
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkmr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkmr3-h.vf b/language/japanese/japanese-otf/vf/cidkmr3-h.vf
new file mode 100644
index 0000000000..1a8a267449
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkmr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkmr3-v.vf b/language/japanese/japanese-otf/vf/cidkmr3-v.vf
new file mode 100644
index 0000000000..78f8bdc480
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkmr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkmr4-h.vf b/language/japanese/japanese-otf/vf/cidkmr4-h.vf
new file mode 100644
index 0000000000..ce1143d0c1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkmr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidkmr4-v.vf b/language/japanese/japanese-otf/vf/cidkmr4-v.vf
new file mode 100644
index 0000000000..c3ceb994c7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidkmr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtgr0-h.vf b/language/japanese/japanese-otf/vf/cidtgr0-h.vf
new file mode 100644
index 0000000000..8ef50eafbb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtgr0-v.vf b/language/japanese/japanese-otf/vf/cidtgr0-v.vf
new file mode 100644
index 0000000000..d44d2d7abf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtgr1-h.vf b/language/japanese/japanese-otf/vf/cidtgr1-h.vf
new file mode 100644
index 0000000000..ff76053c15
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtgr1-v.vf b/language/japanese/japanese-otf/vf/cidtgr1-v.vf
new file mode 100644
index 0000000000..3489366050
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtgr2-h.vf b/language/japanese/japanese-otf/vf/cidtgr2-h.vf
new file mode 100644
index 0000000000..526ba542e2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtgr2-v.vf b/language/japanese/japanese-otf/vf/cidtgr2-v.vf
new file mode 100644
index 0000000000..f6db0ec8d8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtgr3-h.vf b/language/japanese/japanese-otf/vf/cidtgr3-h.vf
new file mode 100644
index 0000000000..9b0c98b69e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtgr3-v.vf b/language/japanese/japanese-otf/vf/cidtgr3-v.vf
new file mode 100644
index 0000000000..c7535e8011
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtgr4-h.vf b/language/japanese/japanese-otf/vf/cidtgr4-h.vf
new file mode 100644
index 0000000000..6bdfc71f8e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtgr4-v.vf b/language/japanese/japanese-otf/vf/cidtgr4-v.vf
new file mode 100644
index 0000000000..e2249acc97
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtmr0-h.vf b/language/japanese/japanese-otf/vf/cidtmr0-h.vf
new file mode 100644
index 0000000000..9876d40da2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtmr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtmr0-v.vf b/language/japanese/japanese-otf/vf/cidtmr0-v.vf
new file mode 100644
index 0000000000..0da8ad6674
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtmr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtmr1-h.vf b/language/japanese/japanese-otf/vf/cidtmr1-h.vf
new file mode 100644
index 0000000000..23f605706f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtmr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtmr1-v.vf b/language/japanese/japanese-otf/vf/cidtmr1-v.vf
new file mode 100644
index 0000000000..c596d1b969
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtmr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtmr2-h.vf b/language/japanese/japanese-otf/vf/cidtmr2-h.vf
new file mode 100644
index 0000000000..28ea2665a5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtmr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtmr2-v.vf b/language/japanese/japanese-otf/vf/cidtmr2-v.vf
new file mode 100644
index 0000000000..081e7fb44c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtmr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtmr3-h.vf b/language/japanese/japanese-otf/vf/cidtmr3-h.vf
new file mode 100644
index 0000000000..69ffb5330b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtmr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtmr3-v.vf b/language/japanese/japanese-otf/vf/cidtmr3-v.vf
new file mode 100644
index 0000000000..3c5b863b10
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtmr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtmr4-h.vf b/language/japanese/japanese-otf/vf/cidtmr4-h.vf
new file mode 100644
index 0000000000..c5089e4cba
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtmr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/cidtmr4-v.vf b/language/japanese/japanese-otf/vf/cidtmr4-v.vf
new file mode 100644
index 0000000000..81ca4d6f5f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/cidtmr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgothb-h.vf b/language/japanese/japanese-otf/vf/expgothb-h.vf
new file mode 100644
index 0000000000..b3e3fceff4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgothb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgothb-v.vf b/language/japanese/japanese-otf/vf/expgothb-v.vf
new file mode 100644
index 0000000000..fffcfbd1e1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgothb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgothbn-h.vf b/language/japanese/japanese-otf/vf/expgothbn-h.vf
new file mode 100644
index 0000000000..8d9fd30bf6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgothbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgothbn-v.vf b/language/japanese/japanese-otf/vf/expgothbn-v.vf
new file mode 100644
index 0000000000..b7f7519ad3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgothbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgotheb-h.vf b/language/japanese/japanese-otf/vf/expgotheb-h.vf
new file mode 100644
index 0000000000..7a9ff93f29
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgotheb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgotheb-v.vf b/language/japanese/japanese-otf/vf/expgotheb-v.vf
new file mode 100644
index 0000000000..4f6e63bd9a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgotheb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgothebn-h.vf b/language/japanese/japanese-otf/vf/expgothebn-h.vf
new file mode 100644
index 0000000000..5b65ab9542
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgothebn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgothebn-v.vf b/language/japanese/japanese-otf/vf/expgothebn-v.vf
new file mode 100644
index 0000000000..e09a459ebf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgothebn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgothr-h.vf b/language/japanese/japanese-otf/vf/expgothr-h.vf
new file mode 100644
index 0000000000..497d22100b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgothr-v.vf b/language/japanese/japanese-otf/vf/expgothr-v.vf
new file mode 100644
index 0000000000..e62c40bf70
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgothrn-h.vf b/language/japanese/japanese-otf/vf/expgothrn-h.vf
new file mode 100644
index 0000000000..f9157d40af
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expgothrn-v.vf b/language/japanese/japanese-otf/vf/expgothrn-v.vf
new file mode 100644
index 0000000000..7cd89d7d6d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expmgothr-h.vf b/language/japanese/japanese-otf/vf/expmgothr-h.vf
new file mode 100644
index 0000000000..d47ceaac92
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expmgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expmgothr-v.vf b/language/japanese/japanese-otf/vf/expmgothr-v.vf
new file mode 100644
index 0000000000..dfc8c38067
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expmgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expmgothrn-h.vf b/language/japanese/japanese-otf/vf/expmgothrn-h.vf
new file mode 100644
index 0000000000..611a8c1ec9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expmgothrn-v.vf b/language/japanese/japanese-otf/vf/expmgothrn-v.vf
new file mode 100644
index 0000000000..af9c277374
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminb-h.vf b/language/japanese/japanese-otf/vf/expminb-h.vf
new file mode 100644
index 0000000000..0c0e2e71aa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminb-v.vf b/language/japanese/japanese-otf/vf/expminb-v.vf
new file mode 100644
index 0000000000..f4162ef08d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminbn-h.vf b/language/japanese/japanese-otf/vf/expminbn-h.vf
new file mode 100644
index 0000000000..4115f974e9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminbn-v.vf b/language/japanese/japanese-otf/vf/expminbn-v.vf
new file mode 100644
index 0000000000..d44c89c94d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminl-h.vf b/language/japanese/japanese-otf/vf/expminl-h.vf
new file mode 100644
index 0000000000..e4abd4977c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminl-v.vf b/language/japanese/japanese-otf/vf/expminl-v.vf
new file mode 100644
index 0000000000..53b88662c0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminln-h.vf b/language/japanese/japanese-otf/vf/expminln-h.vf
new file mode 100644
index 0000000000..af53bf231c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminln-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminln-v.vf b/language/japanese/japanese-otf/vf/expminln-v.vf
new file mode 100644
index 0000000000..4205d829cb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminln-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminr-h.vf b/language/japanese/japanese-otf/vf/expminr-h.vf
new file mode 100644
index 0000000000..530fb80de3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminr-v.vf b/language/japanese/japanese-otf/vf/expminr-v.vf
new file mode 100644
index 0000000000..74406a3cb2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminrn-h.vf b/language/japanese/japanese-otf/vf/expminrn-h.vf
new file mode 100644
index 0000000000..5a290fb08c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/expminrn-v.vf b/language/japanese/japanese-otf/vf/expminrn-v.vf
new file mode 100644
index 0000000000..6b0fb27e67
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/expminrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgothb-h.vf b/language/japanese/japanese-otf/vf/nmlgothb-h.vf
new file mode 100644
index 0000000000..c4a2af9ede
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgothb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgothb-v.vf b/language/japanese/japanese-otf/vf/nmlgothb-v.vf
new file mode 100644
index 0000000000..a5f413608e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgothb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgothbn-h.vf b/language/japanese/japanese-otf/vf/nmlgothbn-h.vf
new file mode 100644
index 0000000000..6c7b00be7a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgothbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgothbn-v.vf b/language/japanese/japanese-otf/vf/nmlgothbn-v.vf
new file mode 100644
index 0000000000..9fdecf671c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgothbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgotheb-h.vf b/language/japanese/japanese-otf/vf/nmlgotheb-h.vf
new file mode 100644
index 0000000000..9a4d46a136
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgotheb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgotheb-v.vf b/language/japanese/japanese-otf/vf/nmlgotheb-v.vf
new file mode 100644
index 0000000000..b9d577147f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgotheb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgothebn-h.vf b/language/japanese/japanese-otf/vf/nmlgothebn-h.vf
new file mode 100644
index 0000000000..8aa104bfc0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgothebn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgothebn-v.vf b/language/japanese/japanese-otf/vf/nmlgothebn-v.vf
new file mode 100644
index 0000000000..1e5619a6f9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgothebn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgothr-h.vf b/language/japanese/japanese-otf/vf/nmlgothr-h.vf
new file mode 100644
index 0000000000..b4a448746c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgothr-v.vf b/language/japanese/japanese-otf/vf/nmlgothr-v.vf
new file mode 100644
index 0000000000..aeab99ff1d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgothrn-h.vf b/language/japanese/japanese-otf/vf/nmlgothrn-h.vf
new file mode 100644
index 0000000000..7b6ab174aa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlgothrn-v.vf b/language/japanese/japanese-otf/vf/nmlgothrn-v.vf
new file mode 100644
index 0000000000..cd958dff0b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlmgothr-h.vf b/language/japanese/japanese-otf/vf/nmlmgothr-h.vf
new file mode 100644
index 0000000000..7574958318
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlmgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlmgothr-v.vf b/language/japanese/japanese-otf/vf/nmlmgothr-v.vf
new file mode 100644
index 0000000000..51718bcfcd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlmgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlmgothrn-h.vf b/language/japanese/japanese-otf/vf/nmlmgothrn-h.vf
new file mode 100644
index 0000000000..9c04584ade
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlmgothrn-v.vf b/language/japanese/japanese-otf/vf/nmlmgothrn-v.vf
new file mode 100644
index 0000000000..9138caa75e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminb-h.vf b/language/japanese/japanese-otf/vf/nmlminb-h.vf
new file mode 100644
index 0000000000..85cd619573
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminb-v.vf b/language/japanese/japanese-otf/vf/nmlminb-v.vf
new file mode 100644
index 0000000000..6909a59962
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminbn-h.vf b/language/japanese/japanese-otf/vf/nmlminbn-h.vf
new file mode 100644
index 0000000000..c171c1ba59
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminbn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminbn-v.vf b/language/japanese/japanese-otf/vf/nmlminbn-v.vf
new file mode 100644
index 0000000000..5af99a0065
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminbn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminl-h.vf b/language/japanese/japanese-otf/vf/nmlminl-h.vf
new file mode 100644
index 0000000000..59d9e4828b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminl-v.vf b/language/japanese/japanese-otf/vf/nmlminl-v.vf
new file mode 100644
index 0000000000..07e8b7725f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminln-h.vf b/language/japanese/japanese-otf/vf/nmlminln-h.vf
new file mode 100644
index 0000000000..e84cd3bcc4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminln-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminln-v.vf b/language/japanese/japanese-otf/vf/nmlminln-v.vf
new file mode 100644
index 0000000000..05061e7e77
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminln-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminr-h.vf b/language/japanese/japanese-otf/vf/nmlminr-h.vf
new file mode 100644
index 0000000000..dcde7fa494
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminr-v.vf b/language/japanese/japanese-otf/vf/nmlminr-v.vf
new file mode 100644
index 0000000000..5cc39d4d7d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminrn-h.vf b/language/japanese/japanese-otf/vf/nmlminrn-h.vf
new file mode 100644
index 0000000000..f92e26079f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminrn-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/nmlminrn-v.vf b/language/japanese/japanese-otf/vf/nmlminrn-v.vf
new file mode 100644
index 0000000000..e172f9bdbc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/nmlminrn-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubygothb-h.vf b/language/japanese/japanese-otf/vf/rubygothb-h.vf
new file mode 100644
index 0000000000..f717f384f2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubygothb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubygothb-v.vf b/language/japanese/japanese-otf/vf/rubygothb-v.vf
new file mode 100644
index 0000000000..61cd74d23a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubygothb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubygotheb-h.vf b/language/japanese/japanese-otf/vf/rubygotheb-h.vf
new file mode 100644
index 0000000000..54237fd1ae
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubygotheb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubygotheb-v.vf b/language/japanese/japanese-otf/vf/rubygotheb-v.vf
new file mode 100644
index 0000000000..2f3c8abe4e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubygotheb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubygothr-h.vf b/language/japanese/japanese-otf/vf/rubygothr-h.vf
new file mode 100644
index 0000000000..be356a6f0b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubygothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubygothr-v.vf b/language/japanese/japanese-otf/vf/rubygothr-v.vf
new file mode 100644
index 0000000000..483602e244
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubygothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubymgothr-h.vf b/language/japanese/japanese-otf/vf/rubymgothr-h.vf
new file mode 100644
index 0000000000..0ab821718e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubymgothr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubymgothr-v.vf b/language/japanese/japanese-otf/vf/rubymgothr-v.vf
new file mode 100644
index 0000000000..923061a57f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubymgothr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubyminb-h.vf b/language/japanese/japanese-otf/vf/rubyminb-h.vf
new file mode 100644
index 0000000000..9a32bc2965
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubyminb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubyminb-v.vf b/language/japanese/japanese-otf/vf/rubyminb-v.vf
new file mode 100644
index 0000000000..6c58072071
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubyminb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubyminl-h.vf b/language/japanese/japanese-otf/vf/rubyminl-h.vf
new file mode 100644
index 0000000000..9f6989c0e3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubyminl-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubyminl-v.vf b/language/japanese/japanese-otf/vf/rubyminl-v.vf
new file mode 100644
index 0000000000..9319d3dea9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubyminl-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubyminr-h.vf b/language/japanese/japanese-otf/vf/rubyminr-h.vf
new file mode 100644
index 0000000000..60cfdd7ff3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubyminr-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/rubyminr-v.vf b/language/japanese/japanese-otf/vf/rubyminr-v.vf
new file mode 100644
index 0000000000..479b15f88d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/rubyminr-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr0-h.vf b/language/japanese/japanese-otf/vf/utfcgr0-h.vf
new file mode 100644
index 0000000000..8cc0662813
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr0-v.vf b/language/japanese/japanese-otf/vf/utfcgr0-v.vf
new file mode 100644
index 0000000000..04d2c93bb6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr1-h.vf b/language/japanese/japanese-otf/vf/utfcgr1-h.vf
new file mode 100644
index 0000000000..001144b7a9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr1-v.vf b/language/japanese/japanese-otf/vf/utfcgr1-v.vf
new file mode 100644
index 0000000000..726d4df24a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr2-h.vf b/language/japanese/japanese-otf/vf/utfcgr2-h.vf
new file mode 100644
index 0000000000..555375adac
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr2-v.vf b/language/japanese/japanese-otf/vf/utfcgr2-v.vf
new file mode 100644
index 0000000000..882f637340
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr3-h.vf b/language/japanese/japanese-otf/vf/utfcgr3-h.vf
new file mode 100644
index 0000000000..916154ab68
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr3-v.vf b/language/japanese/japanese-otf/vf/utfcgr3-v.vf
new file mode 100644
index 0000000000..14e211152d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr4-h.vf b/language/japanese/japanese-otf/vf/utfcgr4-h.vf
new file mode 100644
index 0000000000..9ccb076a9c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr4-v.vf b/language/japanese/japanese-otf/vf/utfcgr4-v.vf
new file mode 100644
index 0000000000..17a05fae05
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr5-h.vf b/language/japanese/japanese-otf/vf/utfcgr5-h.vf
new file mode 100644
index 0000000000..a4e917f020
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr5-v.vf b/language/japanese/japanese-otf/vf/utfcgr5-v.vf
new file mode 100644
index 0000000000..81eadbc938
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr6-h.vf b/language/japanese/japanese-otf/vf/utfcgr6-h.vf
new file mode 100644
index 0000000000..c8b12d195f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr6-v.vf b/language/japanese/japanese-otf/vf/utfcgr6-v.vf
new file mode 100644
index 0000000000..d300252dad
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr7-h.vf b/language/japanese/japanese-otf/vf/utfcgr7-h.vf
new file mode 100644
index 0000000000..0011677cf3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr7-v.vf b/language/japanese/japanese-otf/vf/utfcgr7-v.vf
new file mode 100644
index 0000000000..9fecfd758f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr8-h.vf b/language/japanese/japanese-otf/vf/utfcgr8-h.vf
new file mode 100644
index 0000000000..3b3a0a5de3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr8-v.vf b/language/japanese/japanese-otf/vf/utfcgr8-v.vf
new file mode 100644
index 0000000000..442fef4561
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr9-h.vf b/language/japanese/japanese-otf/vf/utfcgr9-h.vf
new file mode 100644
index 0000000000..e82b899f62
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgr9-v.vf b/language/japanese/japanese-otf/vf/utfcgr9-v.vf
new file mode 100644
index 0000000000..4ec104d6c9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgra-h.vf b/language/japanese/japanese-otf/vf/utfcgra-h.vf
new file mode 100644
index 0000000000..801834e479
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgra-v.vf b/language/japanese/japanese-otf/vf/utfcgra-v.vf
new file mode 100644
index 0000000000..ed88625962
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgrb-h.vf b/language/japanese/japanese-otf/vf/utfcgrb-h.vf
new file mode 100644
index 0000000000..9bc418d44e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgrb-v.vf b/language/japanese/japanese-otf/vf/utfcgrb-v.vf
new file mode 100644
index 0000000000..65208ddb50
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgrc-h.vf b/language/japanese/japanese-otf/vf/utfcgrc-h.vf
new file mode 100644
index 0000000000..889fc20db6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgrc-v.vf b/language/japanese/japanese-otf/vf/utfcgrc-v.vf
new file mode 100644
index 0000000000..a76e25fa3f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgrd-h.vf b/language/japanese/japanese-otf/vf/utfcgrd-h.vf
new file mode 100644
index 0000000000..bb8264b911
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgrd-v.vf b/language/japanese/japanese-otf/vf/utfcgrd-v.vf
new file mode 100644
index 0000000000..a6d0d59d02
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgre-h.vf b/language/japanese/japanese-otf/vf/utfcgre-h.vf
new file mode 100644
index 0000000000..614c6f1457
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgre-v.vf b/language/japanese/japanese-otf/vf/utfcgre-v.vf
new file mode 100644
index 0000000000..37698076a6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgrf-h.vf b/language/japanese/japanese-otf/vf/utfcgrf-h.vf
new file mode 100644
index 0000000000..af88efbb68
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcgrf-v.vf b/language/japanese/japanese-otf/vf/utfcgrf-v.vf
new file mode 100644
index 0000000000..aa22d50213
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcgrf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr0-h.vf b/language/japanese/japanese-otf/vf/utfcmr0-h.vf
new file mode 100644
index 0000000000..77c8377f5d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr0-v.vf b/language/japanese/japanese-otf/vf/utfcmr0-v.vf
new file mode 100644
index 0000000000..53476440ec
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr1-h.vf b/language/japanese/japanese-otf/vf/utfcmr1-h.vf
new file mode 100644
index 0000000000..1da3440e9e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr1-v.vf b/language/japanese/japanese-otf/vf/utfcmr1-v.vf
new file mode 100644
index 0000000000..c2096b7e0e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr2-h.vf b/language/japanese/japanese-otf/vf/utfcmr2-h.vf
new file mode 100644
index 0000000000..008662f2b7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr2-v.vf b/language/japanese/japanese-otf/vf/utfcmr2-v.vf
new file mode 100644
index 0000000000..e67611d439
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr3-h.vf b/language/japanese/japanese-otf/vf/utfcmr3-h.vf
new file mode 100644
index 0000000000..1ebfc21837
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr3-v.vf b/language/japanese/japanese-otf/vf/utfcmr3-v.vf
new file mode 100644
index 0000000000..e87fa68392
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr4-h.vf b/language/japanese/japanese-otf/vf/utfcmr4-h.vf
new file mode 100644
index 0000000000..87a162fc2d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr4-v.vf b/language/japanese/japanese-otf/vf/utfcmr4-v.vf
new file mode 100644
index 0000000000..39e6f889f5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr5-h.vf b/language/japanese/japanese-otf/vf/utfcmr5-h.vf
new file mode 100644
index 0000000000..9e7e5d2861
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr5-v.vf b/language/japanese/japanese-otf/vf/utfcmr5-v.vf
new file mode 100644
index 0000000000..bc2ad6e916
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr6-h.vf b/language/japanese/japanese-otf/vf/utfcmr6-h.vf
new file mode 100644
index 0000000000..7d0bd4fb24
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr6-v.vf b/language/japanese/japanese-otf/vf/utfcmr6-v.vf
new file mode 100644
index 0000000000..9f9c1a811e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr7-h.vf b/language/japanese/japanese-otf/vf/utfcmr7-h.vf
new file mode 100644
index 0000000000..795480e824
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr7-v.vf b/language/japanese/japanese-otf/vf/utfcmr7-v.vf
new file mode 100644
index 0000000000..8bedfe3b33
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr8-h.vf b/language/japanese/japanese-otf/vf/utfcmr8-h.vf
new file mode 100644
index 0000000000..ad131dbae3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr8-v.vf b/language/japanese/japanese-otf/vf/utfcmr8-v.vf
new file mode 100644
index 0000000000..ec24b6f7b7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr9-h.vf b/language/japanese/japanese-otf/vf/utfcmr9-h.vf
new file mode 100644
index 0000000000..0185aa1b15
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmr9-v.vf b/language/japanese/japanese-otf/vf/utfcmr9-v.vf
new file mode 100644
index 0000000000..4acc9a99b8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmra-h.vf b/language/japanese/japanese-otf/vf/utfcmra-h.vf
new file mode 100644
index 0000000000..c1c893fb6f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmra-v.vf b/language/japanese/japanese-otf/vf/utfcmra-v.vf
new file mode 100644
index 0000000000..5bc8528fec
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmrb-h.vf b/language/japanese/japanese-otf/vf/utfcmrb-h.vf
new file mode 100644
index 0000000000..47798bc387
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmrb-v.vf b/language/japanese/japanese-otf/vf/utfcmrb-v.vf
new file mode 100644
index 0000000000..dbbc6f0251
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmrc-h.vf b/language/japanese/japanese-otf/vf/utfcmrc-h.vf
new file mode 100644
index 0000000000..9e874de569
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmrc-v.vf b/language/japanese/japanese-otf/vf/utfcmrc-v.vf
new file mode 100644
index 0000000000..0a5f210c7a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmrd-h.vf b/language/japanese/japanese-otf/vf/utfcmrd-h.vf
new file mode 100644
index 0000000000..b6ccee0a1d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmrd-v.vf b/language/japanese/japanese-otf/vf/utfcmrd-v.vf
new file mode 100644
index 0000000000..fe810fc1c3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmre-h.vf b/language/japanese/japanese-otf/vf/utfcmre-h.vf
new file mode 100644
index 0000000000..ca65dba042
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmre-v.vf b/language/japanese/japanese-otf/vf/utfcmre-v.vf
new file mode 100644
index 0000000000..f7b78fe323
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmrf-h.vf b/language/japanese/japanese-otf/vf/utfcmrf-h.vf
new file mode 100644
index 0000000000..463e3944ad
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfcmrf-v.vf b/language/japanese/japanese-otf/vf/utfcmrf-v.vf
new file mode 100644
index 0000000000..1560bcc49a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfcmrf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr0-h.vf b/language/japanese/japanese-otf/vf/utfgr0-h.vf
new file mode 100644
index 0000000000..88d2439d6c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr0-v.vf b/language/japanese/japanese-otf/vf/utfgr0-v.vf
new file mode 100644
index 0000000000..2d752161f0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr1-h.vf b/language/japanese/japanese-otf/vf/utfgr1-h.vf
new file mode 100644
index 0000000000..045a8cce79
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr1-v.vf b/language/japanese/japanese-otf/vf/utfgr1-v.vf
new file mode 100644
index 0000000000..f5951d799f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr2-h.vf b/language/japanese/japanese-otf/vf/utfgr2-h.vf
new file mode 100644
index 0000000000..ee4753d9cf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr2-v.vf b/language/japanese/japanese-otf/vf/utfgr2-v.vf
new file mode 100644
index 0000000000..ca43fbdad0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr3-h.vf b/language/japanese/japanese-otf/vf/utfgr3-h.vf
new file mode 100644
index 0000000000..d06f888ec4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr3-v.vf b/language/japanese/japanese-otf/vf/utfgr3-v.vf
new file mode 100644
index 0000000000..4c6918949c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr4-h.vf b/language/japanese/japanese-otf/vf/utfgr4-h.vf
new file mode 100644
index 0000000000..3c3f91b20f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr4-v.vf b/language/japanese/japanese-otf/vf/utfgr4-v.vf
new file mode 100644
index 0000000000..f868bdb4dc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr5-h.vf b/language/japanese/japanese-otf/vf/utfgr5-h.vf
new file mode 100644
index 0000000000..5f82d523cc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr5-v.vf b/language/japanese/japanese-otf/vf/utfgr5-v.vf
new file mode 100644
index 0000000000..ccb11e94b8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr6-h.vf b/language/japanese/japanese-otf/vf/utfgr6-h.vf
new file mode 100644
index 0000000000..3c26dcd45f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr6-v.vf b/language/japanese/japanese-otf/vf/utfgr6-v.vf
new file mode 100644
index 0000000000..b68c10a565
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr7-h.vf b/language/japanese/japanese-otf/vf/utfgr7-h.vf
new file mode 100644
index 0000000000..d4f5878845
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr7-v.vf b/language/japanese/japanese-otf/vf/utfgr7-v.vf
new file mode 100644
index 0000000000..6b39ad3a9d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr8-h.vf b/language/japanese/japanese-otf/vf/utfgr8-h.vf
new file mode 100644
index 0000000000..2d122511a2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr8-v.vf b/language/japanese/japanese-otf/vf/utfgr8-v.vf
new file mode 100644
index 0000000000..873b45eedc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr9-h.vf b/language/japanese/japanese-otf/vf/utfgr9-h.vf
new file mode 100644
index 0000000000..251315ce08
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgr9-v.vf b/language/japanese/japanese-otf/vf/utfgr9-v.vf
new file mode 100644
index 0000000000..4c2bf20652
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgra-h.vf b/language/japanese/japanese-otf/vf/utfgra-h.vf
new file mode 100644
index 0000000000..2024c2fc8f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgra-v.vf b/language/japanese/japanese-otf/vf/utfgra-v.vf
new file mode 100644
index 0000000000..4fb7f7cc00
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgrb-h.vf b/language/japanese/japanese-otf/vf/utfgrb-h.vf
new file mode 100644
index 0000000000..736dc469e2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgrb-v.vf b/language/japanese/japanese-otf/vf/utfgrb-v.vf
new file mode 100644
index 0000000000..6ecd9365ec
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgrc-h.vf b/language/japanese/japanese-otf/vf/utfgrc-h.vf
new file mode 100644
index 0000000000..223611467b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgrc-v.vf b/language/japanese/japanese-otf/vf/utfgrc-v.vf
new file mode 100644
index 0000000000..d4fa2b62db
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgrd-h.vf b/language/japanese/japanese-otf/vf/utfgrd-h.vf
new file mode 100644
index 0000000000..bbff80b716
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgrd-v.vf b/language/japanese/japanese-otf/vf/utfgrd-v.vf
new file mode 100644
index 0000000000..2e2ea59a84
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgre-h.vf b/language/japanese/japanese-otf/vf/utfgre-h.vf
new file mode 100644
index 0000000000..6e9db5d548
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgre-v.vf b/language/japanese/japanese-otf/vf/utfgre-v.vf
new file mode 100644
index 0000000000..e178dec7d6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgrf-h.vf b/language/japanese/japanese-otf/vf/utfgrf-h.vf
new file mode 100644
index 0000000000..1cd97a6d2a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfgrf-v.vf b/language/japanese/japanese-otf/vf/utfgrf-v.vf
new file mode 100644
index 0000000000..66172ee933
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfgrf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb0-h.vf b/language/japanese/japanese-otf/vf/utfjgb0-h.vf
new file mode 100644
index 0000000000..256d616b66
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb0-v.vf b/language/japanese/japanese-otf/vf/utfjgb0-v.vf
new file mode 100644
index 0000000000..fec2c84efa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb1-h.vf b/language/japanese/japanese-otf/vf/utfjgb1-h.vf
new file mode 100644
index 0000000000..490bc35e08
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb1-v.vf b/language/japanese/japanese-otf/vf/utfjgb1-v.vf
new file mode 100644
index 0000000000..5611ac3231
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb2-h.vf b/language/japanese/japanese-otf/vf/utfjgb2-h.vf
new file mode 100644
index 0000000000..7fc5c75dbd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb2-v.vf b/language/japanese/japanese-otf/vf/utfjgb2-v.vf
new file mode 100644
index 0000000000..e546065dd3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb3-h.vf b/language/japanese/japanese-otf/vf/utfjgb3-h.vf
new file mode 100644
index 0000000000..05312a6ec3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb3-v.vf b/language/japanese/japanese-otf/vf/utfjgb3-v.vf
new file mode 100644
index 0000000000..4fdd929c06
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb4-h.vf b/language/japanese/japanese-otf/vf/utfjgb4-h.vf
new file mode 100644
index 0000000000..a2e853deed
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb4-v.vf b/language/japanese/japanese-otf/vf/utfjgb4-v.vf
new file mode 100644
index 0000000000..a619597556
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb5-h.vf b/language/japanese/japanese-otf/vf/utfjgb5-h.vf
new file mode 100644
index 0000000000..b4bbcea591
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb5-v.vf b/language/japanese/japanese-otf/vf/utfjgb5-v.vf
new file mode 100644
index 0000000000..6c06a183dd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb6-h.vf b/language/japanese/japanese-otf/vf/utfjgb6-h.vf
new file mode 100644
index 0000000000..4236b0afe1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb6-v.vf b/language/japanese/japanese-otf/vf/utfjgb6-v.vf
new file mode 100644
index 0000000000..7a239b87ac
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb7-h.vf b/language/japanese/japanese-otf/vf/utfjgb7-h.vf
new file mode 100644
index 0000000000..ffa939f1fc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb7-v.vf b/language/japanese/japanese-otf/vf/utfjgb7-v.vf
new file mode 100644
index 0000000000..dd995adfdf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb8-h.vf b/language/japanese/japanese-otf/vf/utfjgb8-h.vf
new file mode 100644
index 0000000000..e669dd6d20
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb8-v.vf b/language/japanese/japanese-otf/vf/utfjgb8-v.vf
new file mode 100644
index 0000000000..54baed1e2a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb9-h.vf b/language/japanese/japanese-otf/vf/utfjgb9-h.vf
new file mode 100644
index 0000000000..cb84bae291
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgb9-v.vf b/language/japanese/japanese-otf/vf/utfjgb9-v.vf
new file mode 100644
index 0000000000..fbe1ec97f8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgb9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgba-h.vf b/language/japanese/japanese-otf/vf/utfjgba-h.vf
new file mode 100644
index 0000000000..21b41427f9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgba-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgba-v.vf b/language/japanese/japanese-otf/vf/utfjgba-v.vf
new file mode 100644
index 0000000000..702f711088
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgba-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbb-h.vf b/language/japanese/japanese-otf/vf/utfjgbb-h.vf
new file mode 100644
index 0000000000..1f323587d9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbb-v.vf b/language/japanese/japanese-otf/vf/utfjgbb-v.vf
new file mode 100644
index 0000000000..4e556806bd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbc-h.vf b/language/japanese/japanese-otf/vf/utfjgbc-h.vf
new file mode 100644
index 0000000000..a82c3b776a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbc-v.vf b/language/japanese/japanese-otf/vf/utfjgbc-v.vf
new file mode 100644
index 0000000000..d1560782ad
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbd-h.vf b/language/japanese/japanese-otf/vf/utfjgbd-h.vf
new file mode 100644
index 0000000000..93b9a35f40
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbd-v.vf b/language/japanese/japanese-otf/vf/utfjgbd-v.vf
new file mode 100644
index 0000000000..6a3228defa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbe-h.vf b/language/japanese/japanese-otf/vf/utfjgbe-h.vf
new file mode 100644
index 0000000000..5db2e4e845
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbe-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbe-v.vf b/language/japanese/japanese-otf/vf/utfjgbe-v.vf
new file mode 100644
index 0000000000..c91095118c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbe-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbf-h.vf b/language/japanese/japanese-otf/vf/utfjgbf-h.vf
new file mode 100644
index 0000000000..57ccaed460
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbf-v.vf b/language/japanese/japanese-otf/vf/utfjgbf-v.vf
new file mode 100644
index 0000000000..d6b51af5b0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn0-h.vf b/language/japanese/japanese-otf/vf/utfjgbn0-h.vf
new file mode 100644
index 0000000000..c1cb907bf6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn0-v.vf b/language/japanese/japanese-otf/vf/utfjgbn0-v.vf
new file mode 100644
index 0000000000..76bae58d4d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn1-h.vf b/language/japanese/japanese-otf/vf/utfjgbn1-h.vf
new file mode 100644
index 0000000000..db18cbae2c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn1-v.vf b/language/japanese/japanese-otf/vf/utfjgbn1-v.vf
new file mode 100644
index 0000000000..595cd0a0a9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn2-h.vf b/language/japanese/japanese-otf/vf/utfjgbn2-h.vf
new file mode 100644
index 0000000000..e8c9dce6e5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn2-v.vf b/language/japanese/japanese-otf/vf/utfjgbn2-v.vf
new file mode 100644
index 0000000000..e754f4bf95
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn3-h.vf b/language/japanese/japanese-otf/vf/utfjgbn3-h.vf
new file mode 100644
index 0000000000..2862de363d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn3-v.vf b/language/japanese/japanese-otf/vf/utfjgbn3-v.vf
new file mode 100644
index 0000000000..9fac7c8bd9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn4-h.vf b/language/japanese/japanese-otf/vf/utfjgbn4-h.vf
new file mode 100644
index 0000000000..655b4dde07
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn4-v.vf b/language/japanese/japanese-otf/vf/utfjgbn4-v.vf
new file mode 100644
index 0000000000..05c65084ae
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn5-h.vf b/language/japanese/japanese-otf/vf/utfjgbn5-h.vf
new file mode 100644
index 0000000000..dbfa285342
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn5-v.vf b/language/japanese/japanese-otf/vf/utfjgbn5-v.vf
new file mode 100644
index 0000000000..50f1b96480
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn6-h.vf b/language/japanese/japanese-otf/vf/utfjgbn6-h.vf
new file mode 100644
index 0000000000..a9e2cb9419
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn6-v.vf b/language/japanese/japanese-otf/vf/utfjgbn6-v.vf
new file mode 100644
index 0000000000..c5f8deefc8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn7-h.vf b/language/japanese/japanese-otf/vf/utfjgbn7-h.vf
new file mode 100644
index 0000000000..d63604352a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn7-v.vf b/language/japanese/japanese-otf/vf/utfjgbn7-v.vf
new file mode 100644
index 0000000000..ce4ed2467b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn8-h.vf b/language/japanese/japanese-otf/vf/utfjgbn8-h.vf
new file mode 100644
index 0000000000..5483b2f391
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn8-v.vf b/language/japanese/japanese-otf/vf/utfjgbn8-v.vf
new file mode 100644
index 0000000000..beea9d090a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn9-h.vf b/language/japanese/japanese-otf/vf/utfjgbn9-h.vf
new file mode 100644
index 0000000000..6652efccdc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbn9-v.vf b/language/japanese/japanese-otf/vf/utfjgbn9-v.vf
new file mode 100644
index 0000000000..480c68c0be
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbn9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbna-h.vf b/language/japanese/japanese-otf/vf/utfjgbna-h.vf
new file mode 100644
index 0000000000..6b6ca4b905
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbna-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbna-v.vf b/language/japanese/japanese-otf/vf/utfjgbna-v.vf
new file mode 100644
index 0000000000..f02d45a1ec
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbna-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbnb-h.vf b/language/japanese/japanese-otf/vf/utfjgbnb-h.vf
new file mode 100644
index 0000000000..8a7f2f2968
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbnb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbnb-v.vf b/language/japanese/japanese-otf/vf/utfjgbnb-v.vf
new file mode 100644
index 0000000000..542178a867
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbnb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbnc-h.vf b/language/japanese/japanese-otf/vf/utfjgbnc-h.vf
new file mode 100644
index 0000000000..3749ea1755
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbnc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbnc-v.vf b/language/japanese/japanese-otf/vf/utfjgbnc-v.vf
new file mode 100644
index 0000000000..d3834b396c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbnc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbnd-h.vf b/language/japanese/japanese-otf/vf/utfjgbnd-h.vf
new file mode 100644
index 0000000000..f2e5284191
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbnd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbnd-v.vf b/language/japanese/japanese-otf/vf/utfjgbnd-v.vf
new file mode 100644
index 0000000000..7fc55b9409
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbnd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbne-h.vf b/language/japanese/japanese-otf/vf/utfjgbne-h.vf
new file mode 100644
index 0000000000..81d141c5bb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbne-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbne-v.vf b/language/japanese/japanese-otf/vf/utfjgbne-v.vf
new file mode 100644
index 0000000000..1a957a147a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbne-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbnf-h.vf b/language/japanese/japanese-otf/vf/utfjgbnf-h.vf
new file mode 100644
index 0000000000..d79f294509
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbnf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgbnf-v.vf b/language/japanese/japanese-otf/vf/utfjgbnf-v.vf
new file mode 100644
index 0000000000..988b29d6c7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgbnf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge0-h.vf b/language/japanese/japanese-otf/vf/utfjge0-h.vf
new file mode 100644
index 0000000000..fbe0c5f154
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge0-v.vf b/language/japanese/japanese-otf/vf/utfjge0-v.vf
new file mode 100644
index 0000000000..ca2cf91a31
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge1-h.vf b/language/japanese/japanese-otf/vf/utfjge1-h.vf
new file mode 100644
index 0000000000..debb97c224
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge1-v.vf b/language/japanese/japanese-otf/vf/utfjge1-v.vf
new file mode 100644
index 0000000000..a9c85512f1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge2-h.vf b/language/japanese/japanese-otf/vf/utfjge2-h.vf
new file mode 100644
index 0000000000..d53a05b2a8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge2-v.vf b/language/japanese/japanese-otf/vf/utfjge2-v.vf
new file mode 100644
index 0000000000..1128ae5ffd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge3-h.vf b/language/japanese/japanese-otf/vf/utfjge3-h.vf
new file mode 100644
index 0000000000..8aabc54769
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge3-v.vf b/language/japanese/japanese-otf/vf/utfjge3-v.vf
new file mode 100644
index 0000000000..cf6648cfaa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge4-h.vf b/language/japanese/japanese-otf/vf/utfjge4-h.vf
new file mode 100644
index 0000000000..a2179bd674
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge4-v.vf b/language/japanese/japanese-otf/vf/utfjge4-v.vf
new file mode 100644
index 0000000000..ee742d0ec0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge5-h.vf b/language/japanese/japanese-otf/vf/utfjge5-h.vf
new file mode 100644
index 0000000000..5366722b18
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge5-v.vf b/language/japanese/japanese-otf/vf/utfjge5-v.vf
new file mode 100644
index 0000000000..43e64bab93
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge6-h.vf b/language/japanese/japanese-otf/vf/utfjge6-h.vf
new file mode 100644
index 0000000000..5fec805b20
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge6-v.vf b/language/japanese/japanese-otf/vf/utfjge6-v.vf
new file mode 100644
index 0000000000..37c2c80ee8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge7-h.vf b/language/japanese/japanese-otf/vf/utfjge7-h.vf
new file mode 100644
index 0000000000..c8bf93108b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge7-v.vf b/language/japanese/japanese-otf/vf/utfjge7-v.vf
new file mode 100644
index 0000000000..ca1262828d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge8-h.vf b/language/japanese/japanese-otf/vf/utfjge8-h.vf
new file mode 100644
index 0000000000..06aa3d0ffe
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge8-v.vf b/language/japanese/japanese-otf/vf/utfjge8-v.vf
new file mode 100644
index 0000000000..40643ddfb7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge9-h.vf b/language/japanese/japanese-otf/vf/utfjge9-h.vf
new file mode 100644
index 0000000000..28be8cf3d4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjge9-v.vf b/language/japanese/japanese-otf/vf/utfjge9-v.vf
new file mode 100644
index 0000000000..631cb93173
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjge9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgea-h.vf b/language/japanese/japanese-otf/vf/utfjgea-h.vf
new file mode 100644
index 0000000000..098caa1bf6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgea-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgea-v.vf b/language/japanese/japanese-otf/vf/utfjgea-v.vf
new file mode 100644
index 0000000000..7278d2616f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgea-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgeb-h.vf b/language/japanese/japanese-otf/vf/utfjgeb-h.vf
new file mode 100644
index 0000000000..fdc4c65fc0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgeb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgeb-v.vf b/language/japanese/japanese-otf/vf/utfjgeb-v.vf
new file mode 100644
index 0000000000..aad757fb13
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgeb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgec-h.vf b/language/japanese/japanese-otf/vf/utfjgec-h.vf
new file mode 100644
index 0000000000..a5a4b626dc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgec-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgec-v.vf b/language/japanese/japanese-otf/vf/utfjgec-v.vf
new file mode 100644
index 0000000000..fed2da3aca
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgec-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjged-h.vf b/language/japanese/japanese-otf/vf/utfjged-h.vf
new file mode 100644
index 0000000000..75791adaf1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjged-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjged-v.vf b/language/japanese/japanese-otf/vf/utfjged-v.vf
new file mode 100644
index 0000000000..14d5f61681
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjged-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgee-h.vf b/language/japanese/japanese-otf/vf/utfjgee-h.vf
new file mode 100644
index 0000000000..91e158f6df
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgee-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgee-v.vf b/language/japanese/japanese-otf/vf/utfjgee-v.vf
new file mode 100644
index 0000000000..f8e94f64c8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgee-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgef-h.vf b/language/japanese/japanese-otf/vf/utfjgef-h.vf
new file mode 100644
index 0000000000..967bcd1736
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgef-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgef-v.vf b/language/japanese/japanese-otf/vf/utfjgef-v.vf
new file mode 100644
index 0000000000..a3d1d52dd1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgef-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen0-h.vf b/language/japanese/japanese-otf/vf/utfjgen0-h.vf
new file mode 100644
index 0000000000..ff8169dfc6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen0-v.vf b/language/japanese/japanese-otf/vf/utfjgen0-v.vf
new file mode 100644
index 0000000000..a8ebf7b89e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen1-h.vf b/language/japanese/japanese-otf/vf/utfjgen1-h.vf
new file mode 100644
index 0000000000..9a15ed6b63
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen1-v.vf b/language/japanese/japanese-otf/vf/utfjgen1-v.vf
new file mode 100644
index 0000000000..a8ed632644
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen2-h.vf b/language/japanese/japanese-otf/vf/utfjgen2-h.vf
new file mode 100644
index 0000000000..183b2f8d6e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen2-v.vf b/language/japanese/japanese-otf/vf/utfjgen2-v.vf
new file mode 100644
index 0000000000..c7cd9e8f8f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen3-h.vf b/language/japanese/japanese-otf/vf/utfjgen3-h.vf
new file mode 100644
index 0000000000..724a419767
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen3-v.vf b/language/japanese/japanese-otf/vf/utfjgen3-v.vf
new file mode 100644
index 0000000000..6ac211513b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen4-h.vf b/language/japanese/japanese-otf/vf/utfjgen4-h.vf
new file mode 100644
index 0000000000..b9e596043d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen4-v.vf b/language/japanese/japanese-otf/vf/utfjgen4-v.vf
new file mode 100644
index 0000000000..7a92fbc986
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen5-h.vf b/language/japanese/japanese-otf/vf/utfjgen5-h.vf
new file mode 100644
index 0000000000..572d55544b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen5-v.vf b/language/japanese/japanese-otf/vf/utfjgen5-v.vf
new file mode 100644
index 0000000000..b3307c7e4d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen6-h.vf b/language/japanese/japanese-otf/vf/utfjgen6-h.vf
new file mode 100644
index 0000000000..c68dbb0937
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen6-v.vf b/language/japanese/japanese-otf/vf/utfjgen6-v.vf
new file mode 100644
index 0000000000..95b331c9a7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen7-h.vf b/language/japanese/japanese-otf/vf/utfjgen7-h.vf
new file mode 100644
index 0000000000..f7521f5c28
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen7-v.vf b/language/japanese/japanese-otf/vf/utfjgen7-v.vf
new file mode 100644
index 0000000000..f4461bf1ee
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen8-h.vf b/language/japanese/japanese-otf/vf/utfjgen8-h.vf
new file mode 100644
index 0000000000..7938d8be21
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen8-v.vf b/language/japanese/japanese-otf/vf/utfjgen8-v.vf
new file mode 100644
index 0000000000..064b81f30a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen9-h.vf b/language/japanese/japanese-otf/vf/utfjgen9-h.vf
new file mode 100644
index 0000000000..f0248fcd00
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgen9-v.vf b/language/japanese/japanese-otf/vf/utfjgen9-v.vf
new file mode 100644
index 0000000000..dd7eb25aad
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgen9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgena-h.vf b/language/japanese/japanese-otf/vf/utfjgena-h.vf
new file mode 100644
index 0000000000..4c4b28a3e7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgena-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgena-v.vf b/language/japanese/japanese-otf/vf/utfjgena-v.vf
new file mode 100644
index 0000000000..df8bba23eb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgena-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgenb-h.vf b/language/japanese/japanese-otf/vf/utfjgenb-h.vf
new file mode 100644
index 0000000000..1cb4e78278
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgenb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgenb-v.vf b/language/japanese/japanese-otf/vf/utfjgenb-v.vf
new file mode 100644
index 0000000000..8492301b48
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgenb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgenc-h.vf b/language/japanese/japanese-otf/vf/utfjgenc-h.vf
new file mode 100644
index 0000000000..0362b8ce24
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgenc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgenc-v.vf b/language/japanese/japanese-otf/vf/utfjgenc-v.vf
new file mode 100644
index 0000000000..a43b3e2b88
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgenc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgend-h.vf b/language/japanese/japanese-otf/vf/utfjgend-h.vf
new file mode 100644
index 0000000000..11417ab09e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgend-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgend-v.vf b/language/japanese/japanese-otf/vf/utfjgend-v.vf
new file mode 100644
index 0000000000..515f118d61
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgend-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgene-h.vf b/language/japanese/japanese-otf/vf/utfjgene-h.vf
new file mode 100644
index 0000000000..7b7adb80f5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgene-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgene-v.vf b/language/japanese/japanese-otf/vf/utfjgene-v.vf
new file mode 100644
index 0000000000..1648dd4878
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgene-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgenf-h.vf b/language/japanese/japanese-otf/vf/utfjgenf-h.vf
new file mode 100644
index 0000000000..1f0d4d4eff
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgenf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgenf-v.vf b/language/japanese/japanese-otf/vf/utfjgenf-v.vf
new file mode 100644
index 0000000000..479eb5193e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgenf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr0-h.vf b/language/japanese/japanese-otf/vf/utfjgr0-h.vf
new file mode 100644
index 0000000000..8a9e98665f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr0-v.vf b/language/japanese/japanese-otf/vf/utfjgr0-v.vf
new file mode 100644
index 0000000000..d07d95adeb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr1-h.vf b/language/japanese/japanese-otf/vf/utfjgr1-h.vf
new file mode 100644
index 0000000000..4a94aab064
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr1-v.vf b/language/japanese/japanese-otf/vf/utfjgr1-v.vf
new file mode 100644
index 0000000000..4b0a0da841
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr2-h.vf b/language/japanese/japanese-otf/vf/utfjgr2-h.vf
new file mode 100644
index 0000000000..2357f7b4cb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr2-v.vf b/language/japanese/japanese-otf/vf/utfjgr2-v.vf
new file mode 100644
index 0000000000..eb8a597095
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr3-h.vf b/language/japanese/japanese-otf/vf/utfjgr3-h.vf
new file mode 100644
index 0000000000..1e5b5a0369
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr3-v.vf b/language/japanese/japanese-otf/vf/utfjgr3-v.vf
new file mode 100644
index 0000000000..3b6400f60f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr4-h.vf b/language/japanese/japanese-otf/vf/utfjgr4-h.vf
new file mode 100644
index 0000000000..319263b54a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr4-v.vf b/language/japanese/japanese-otf/vf/utfjgr4-v.vf
new file mode 100644
index 0000000000..b19326b0ef
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr5-h.vf b/language/japanese/japanese-otf/vf/utfjgr5-h.vf
new file mode 100644
index 0000000000..4e192e0930
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr5-v.vf b/language/japanese/japanese-otf/vf/utfjgr5-v.vf
new file mode 100644
index 0000000000..1882beeda7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr6-h.vf b/language/japanese/japanese-otf/vf/utfjgr6-h.vf
new file mode 100644
index 0000000000..bd6f4f36e9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr6-v.vf b/language/japanese/japanese-otf/vf/utfjgr6-v.vf
new file mode 100644
index 0000000000..2d5d8d0718
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr7-h.vf b/language/japanese/japanese-otf/vf/utfjgr7-h.vf
new file mode 100644
index 0000000000..b2c85bfdf0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr7-v.vf b/language/japanese/japanese-otf/vf/utfjgr7-v.vf
new file mode 100644
index 0000000000..a250e12064
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr8-h.vf b/language/japanese/japanese-otf/vf/utfjgr8-h.vf
new file mode 100644
index 0000000000..4cc61c3f47
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr8-v.vf b/language/japanese/japanese-otf/vf/utfjgr8-v.vf
new file mode 100644
index 0000000000..f4713d39fb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr9-h.vf b/language/japanese/japanese-otf/vf/utfjgr9-h.vf
new file mode 100644
index 0000000000..cd50466c55
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgr9-v.vf b/language/japanese/japanese-otf/vf/utfjgr9-v.vf
new file mode 100644
index 0000000000..92734cf3e1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgra-h.vf b/language/japanese/japanese-otf/vf/utfjgra-h.vf
new file mode 100644
index 0000000000..f471a297b8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgra-v.vf b/language/japanese/japanese-otf/vf/utfjgra-v.vf
new file mode 100644
index 0000000000..5fc435290e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrb-h.vf b/language/japanese/japanese-otf/vf/utfjgrb-h.vf
new file mode 100644
index 0000000000..21365c1961
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrb-v.vf b/language/japanese/japanese-otf/vf/utfjgrb-v.vf
new file mode 100644
index 0000000000..699bde1a82
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrc-h.vf b/language/japanese/japanese-otf/vf/utfjgrc-h.vf
new file mode 100644
index 0000000000..5dbc501a57
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrc-v.vf b/language/japanese/japanese-otf/vf/utfjgrc-v.vf
new file mode 100644
index 0000000000..dad51ad5ad
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrd-h.vf b/language/japanese/japanese-otf/vf/utfjgrd-h.vf
new file mode 100644
index 0000000000..c53e84f684
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrd-v.vf b/language/japanese/japanese-otf/vf/utfjgrd-v.vf
new file mode 100644
index 0000000000..f43d64e820
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgre-h.vf b/language/japanese/japanese-otf/vf/utfjgre-h.vf
new file mode 100644
index 0000000000..3523a38571
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgre-v.vf b/language/japanese/japanese-otf/vf/utfjgre-v.vf
new file mode 100644
index 0000000000..8842960e7e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrf-h.vf b/language/japanese/japanese-otf/vf/utfjgrf-h.vf
new file mode 100644
index 0000000000..c69336d63f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrf-v.vf b/language/japanese/japanese-otf/vf/utfjgrf-v.vf
new file mode 100644
index 0000000000..0752bdba80
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn0-h.vf b/language/japanese/japanese-otf/vf/utfjgrn0-h.vf
new file mode 100644
index 0000000000..7a7caeb2a5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn0-v.vf b/language/japanese/japanese-otf/vf/utfjgrn0-v.vf
new file mode 100644
index 0000000000..10c2bb6be6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn1-h.vf b/language/japanese/japanese-otf/vf/utfjgrn1-h.vf
new file mode 100644
index 0000000000..88e6d70d0b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn1-v.vf b/language/japanese/japanese-otf/vf/utfjgrn1-v.vf
new file mode 100644
index 0000000000..d7ec358f57
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn2-h.vf b/language/japanese/japanese-otf/vf/utfjgrn2-h.vf
new file mode 100644
index 0000000000..9460b48ab4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn2-v.vf b/language/japanese/japanese-otf/vf/utfjgrn2-v.vf
new file mode 100644
index 0000000000..4b751c9e28
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn3-h.vf b/language/japanese/japanese-otf/vf/utfjgrn3-h.vf
new file mode 100644
index 0000000000..d69ce67790
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn3-v.vf b/language/japanese/japanese-otf/vf/utfjgrn3-v.vf
new file mode 100644
index 0000000000..704091534e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn4-h.vf b/language/japanese/japanese-otf/vf/utfjgrn4-h.vf
new file mode 100644
index 0000000000..1e3c18bd8f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn4-v.vf b/language/japanese/japanese-otf/vf/utfjgrn4-v.vf
new file mode 100644
index 0000000000..5410c20e99
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn5-h.vf b/language/japanese/japanese-otf/vf/utfjgrn5-h.vf
new file mode 100644
index 0000000000..b1699739f6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn5-v.vf b/language/japanese/japanese-otf/vf/utfjgrn5-v.vf
new file mode 100644
index 0000000000..4d0645e9ad
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn6-h.vf b/language/japanese/japanese-otf/vf/utfjgrn6-h.vf
new file mode 100644
index 0000000000..54f215e32f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn6-v.vf b/language/japanese/japanese-otf/vf/utfjgrn6-v.vf
new file mode 100644
index 0000000000..bf70ed875e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn7-h.vf b/language/japanese/japanese-otf/vf/utfjgrn7-h.vf
new file mode 100644
index 0000000000..4f90c7ebfc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn7-v.vf b/language/japanese/japanese-otf/vf/utfjgrn7-v.vf
new file mode 100644
index 0000000000..9ef6989491
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn8-h.vf b/language/japanese/japanese-otf/vf/utfjgrn8-h.vf
new file mode 100644
index 0000000000..93c20154dd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn8-v.vf b/language/japanese/japanese-otf/vf/utfjgrn8-v.vf
new file mode 100644
index 0000000000..8c4596cefe
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn9-h.vf b/language/japanese/japanese-otf/vf/utfjgrn9-h.vf
new file mode 100644
index 0000000000..6db5b6f561
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrn9-v.vf b/language/japanese/japanese-otf/vf/utfjgrn9-v.vf
new file mode 100644
index 0000000000..fbbb3806f4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrn9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrna-h.vf b/language/japanese/japanese-otf/vf/utfjgrna-h.vf
new file mode 100644
index 0000000000..708025d191
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrna-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrna-v.vf b/language/japanese/japanese-otf/vf/utfjgrna-v.vf
new file mode 100644
index 0000000000..8704ff815f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrna-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrnb-h.vf b/language/japanese/japanese-otf/vf/utfjgrnb-h.vf
new file mode 100644
index 0000000000..5a7bd2c156
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrnb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrnb-v.vf b/language/japanese/japanese-otf/vf/utfjgrnb-v.vf
new file mode 100644
index 0000000000..7229593c18
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrnb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrnc-h.vf b/language/japanese/japanese-otf/vf/utfjgrnc-h.vf
new file mode 100644
index 0000000000..d95745242b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrnc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrnc-v.vf b/language/japanese/japanese-otf/vf/utfjgrnc-v.vf
new file mode 100644
index 0000000000..e3f6f979c7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrnc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrnd-h.vf b/language/japanese/japanese-otf/vf/utfjgrnd-h.vf
new file mode 100644
index 0000000000..6d0fd53072
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrnd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrnd-v.vf b/language/japanese/japanese-otf/vf/utfjgrnd-v.vf
new file mode 100644
index 0000000000..c41f115175
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrnd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrne-h.vf b/language/japanese/japanese-otf/vf/utfjgrne-h.vf
new file mode 100644
index 0000000000..54d1fd0d3f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrne-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrne-v.vf b/language/japanese/japanese-otf/vf/utfjgrne-v.vf
new file mode 100644
index 0000000000..b633753a9f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrne-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrnf-h.vf b/language/japanese/japanese-otf/vf/utfjgrnf-h.vf
new file mode 100644
index 0000000000..40ac1a5dd3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrnf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjgrnf-v.vf b/language/japanese/japanese-otf/vf/utfjgrnf-v.vf
new file mode 100644
index 0000000000..f5f041aa3d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjgrnf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb0-h.vf b/language/japanese/japanese-otf/vf/utfjmb0-h.vf
new file mode 100644
index 0000000000..da31c33e5f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb0-v.vf b/language/japanese/japanese-otf/vf/utfjmb0-v.vf
new file mode 100644
index 0000000000..0c9850ab46
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb1-h.vf b/language/japanese/japanese-otf/vf/utfjmb1-h.vf
new file mode 100644
index 0000000000..2175c4f8f9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb1-v.vf b/language/japanese/japanese-otf/vf/utfjmb1-v.vf
new file mode 100644
index 0000000000..3d3c5def78
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb2-h.vf b/language/japanese/japanese-otf/vf/utfjmb2-h.vf
new file mode 100644
index 0000000000..f1c9625ee4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb2-v.vf b/language/japanese/japanese-otf/vf/utfjmb2-v.vf
new file mode 100644
index 0000000000..e38cd53528
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb3-h.vf b/language/japanese/japanese-otf/vf/utfjmb3-h.vf
new file mode 100644
index 0000000000..0afb570c36
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb3-v.vf b/language/japanese/japanese-otf/vf/utfjmb3-v.vf
new file mode 100644
index 0000000000..999971b3f8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb4-h.vf b/language/japanese/japanese-otf/vf/utfjmb4-h.vf
new file mode 100644
index 0000000000..e22c2d16fc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb4-v.vf b/language/japanese/japanese-otf/vf/utfjmb4-v.vf
new file mode 100644
index 0000000000..915c2455e8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb5-h.vf b/language/japanese/japanese-otf/vf/utfjmb5-h.vf
new file mode 100644
index 0000000000..f50ea908e9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb5-v.vf b/language/japanese/japanese-otf/vf/utfjmb5-v.vf
new file mode 100644
index 0000000000..4c6b375f33
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb6-h.vf b/language/japanese/japanese-otf/vf/utfjmb6-h.vf
new file mode 100644
index 0000000000..a898533257
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb6-v.vf b/language/japanese/japanese-otf/vf/utfjmb6-v.vf
new file mode 100644
index 0000000000..aa1893c4ea
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb7-h.vf b/language/japanese/japanese-otf/vf/utfjmb7-h.vf
new file mode 100644
index 0000000000..1dc11cc860
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb7-v.vf b/language/japanese/japanese-otf/vf/utfjmb7-v.vf
new file mode 100644
index 0000000000..b7e1d1af42
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb8-h.vf b/language/japanese/japanese-otf/vf/utfjmb8-h.vf
new file mode 100644
index 0000000000..3176ee2593
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb8-v.vf b/language/japanese/japanese-otf/vf/utfjmb8-v.vf
new file mode 100644
index 0000000000..ffbf330107
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb9-h.vf b/language/japanese/japanese-otf/vf/utfjmb9-h.vf
new file mode 100644
index 0000000000..60fcc592f5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmb9-v.vf b/language/japanese/japanese-otf/vf/utfjmb9-v.vf
new file mode 100644
index 0000000000..1c35429baa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmb9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmba-h.vf b/language/japanese/japanese-otf/vf/utfjmba-h.vf
new file mode 100644
index 0000000000..a8faf8bc68
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmba-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmba-v.vf b/language/japanese/japanese-otf/vf/utfjmba-v.vf
new file mode 100644
index 0000000000..07443b5c46
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmba-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbb-h.vf b/language/japanese/japanese-otf/vf/utfjmbb-h.vf
new file mode 100644
index 0000000000..b8e19a43e6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbb-v.vf b/language/japanese/japanese-otf/vf/utfjmbb-v.vf
new file mode 100644
index 0000000000..f27b8e89ac
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbc-h.vf b/language/japanese/japanese-otf/vf/utfjmbc-h.vf
new file mode 100644
index 0000000000..3c88d345ea
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbc-v.vf b/language/japanese/japanese-otf/vf/utfjmbc-v.vf
new file mode 100644
index 0000000000..e2ecb93496
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbd-h.vf b/language/japanese/japanese-otf/vf/utfjmbd-h.vf
new file mode 100644
index 0000000000..aaa2d93e5b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbd-v.vf b/language/japanese/japanese-otf/vf/utfjmbd-v.vf
new file mode 100644
index 0000000000..fa6ee4bbee
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbe-h.vf b/language/japanese/japanese-otf/vf/utfjmbe-h.vf
new file mode 100644
index 0000000000..5cec80e7bd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbe-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbe-v.vf b/language/japanese/japanese-otf/vf/utfjmbe-v.vf
new file mode 100644
index 0000000000..8e0e4073ce
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbe-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbf-h.vf b/language/japanese/japanese-otf/vf/utfjmbf-h.vf
new file mode 100644
index 0000000000..f88199ad94
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbf-v.vf b/language/japanese/japanese-otf/vf/utfjmbf-v.vf
new file mode 100644
index 0000000000..50c6dfd63a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn0-h.vf b/language/japanese/japanese-otf/vf/utfjmbn0-h.vf
new file mode 100644
index 0000000000..85df8537ea
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn0-v.vf b/language/japanese/japanese-otf/vf/utfjmbn0-v.vf
new file mode 100644
index 0000000000..ae90623985
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn1-h.vf b/language/japanese/japanese-otf/vf/utfjmbn1-h.vf
new file mode 100644
index 0000000000..a96156bdeb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn1-v.vf b/language/japanese/japanese-otf/vf/utfjmbn1-v.vf
new file mode 100644
index 0000000000..780da8aec7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn2-h.vf b/language/japanese/japanese-otf/vf/utfjmbn2-h.vf
new file mode 100644
index 0000000000..37d9ade38a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn2-v.vf b/language/japanese/japanese-otf/vf/utfjmbn2-v.vf
new file mode 100644
index 0000000000..de6169745d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn3-h.vf b/language/japanese/japanese-otf/vf/utfjmbn3-h.vf
new file mode 100644
index 0000000000..00a38123d6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn3-v.vf b/language/japanese/japanese-otf/vf/utfjmbn3-v.vf
new file mode 100644
index 0000000000..a511aa2613
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn4-h.vf b/language/japanese/japanese-otf/vf/utfjmbn4-h.vf
new file mode 100644
index 0000000000..9e0e51e95c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn4-v.vf b/language/japanese/japanese-otf/vf/utfjmbn4-v.vf
new file mode 100644
index 0000000000..026048924a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn5-h.vf b/language/japanese/japanese-otf/vf/utfjmbn5-h.vf
new file mode 100644
index 0000000000..f6ef357566
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn5-v.vf b/language/japanese/japanese-otf/vf/utfjmbn5-v.vf
new file mode 100644
index 0000000000..edac509637
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn6-h.vf b/language/japanese/japanese-otf/vf/utfjmbn6-h.vf
new file mode 100644
index 0000000000..e5cb22ffc7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn6-v.vf b/language/japanese/japanese-otf/vf/utfjmbn6-v.vf
new file mode 100644
index 0000000000..e4b7a2a3b7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn7-h.vf b/language/japanese/japanese-otf/vf/utfjmbn7-h.vf
new file mode 100644
index 0000000000..354d87c8ef
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn7-v.vf b/language/japanese/japanese-otf/vf/utfjmbn7-v.vf
new file mode 100644
index 0000000000..6a6ed7d81a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn8-h.vf b/language/japanese/japanese-otf/vf/utfjmbn8-h.vf
new file mode 100644
index 0000000000..f344fae7b6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn8-v.vf b/language/japanese/japanese-otf/vf/utfjmbn8-v.vf
new file mode 100644
index 0000000000..1f1dfbca0e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn9-h.vf b/language/japanese/japanese-otf/vf/utfjmbn9-h.vf
new file mode 100644
index 0000000000..95a0387cf1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbn9-v.vf b/language/japanese/japanese-otf/vf/utfjmbn9-v.vf
new file mode 100644
index 0000000000..5e338226a4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbn9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbna-h.vf b/language/japanese/japanese-otf/vf/utfjmbna-h.vf
new file mode 100644
index 0000000000..4608a9a756
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbna-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbna-v.vf b/language/japanese/japanese-otf/vf/utfjmbna-v.vf
new file mode 100644
index 0000000000..2885ab5bc5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbna-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbnb-h.vf b/language/japanese/japanese-otf/vf/utfjmbnb-h.vf
new file mode 100644
index 0000000000..638a7dc38a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbnb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbnb-v.vf b/language/japanese/japanese-otf/vf/utfjmbnb-v.vf
new file mode 100644
index 0000000000..d28d487b7b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbnb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbnc-h.vf b/language/japanese/japanese-otf/vf/utfjmbnc-h.vf
new file mode 100644
index 0000000000..fea65067ac
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbnc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbnc-v.vf b/language/japanese/japanese-otf/vf/utfjmbnc-v.vf
new file mode 100644
index 0000000000..c6700e9016
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbnc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbnd-h.vf b/language/japanese/japanese-otf/vf/utfjmbnd-h.vf
new file mode 100644
index 0000000000..0e99ece4ba
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbnd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbnd-v.vf b/language/japanese/japanese-otf/vf/utfjmbnd-v.vf
new file mode 100644
index 0000000000..a21bdf6129
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbnd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbne-h.vf b/language/japanese/japanese-otf/vf/utfjmbne-h.vf
new file mode 100644
index 0000000000..3e9e9e5af3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbne-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbne-v.vf b/language/japanese/japanese-otf/vf/utfjmbne-v.vf
new file mode 100644
index 0000000000..49741fa065
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbne-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbnf-h.vf b/language/japanese/japanese-otf/vf/utfjmbnf-h.vf
new file mode 100644
index 0000000000..9d0e79378d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbnf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmbnf-v.vf b/language/japanese/japanese-otf/vf/utfjmbnf-v.vf
new file mode 100644
index 0000000000..78f7221209
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmbnf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr0-h.vf b/language/japanese/japanese-otf/vf/utfjmgr0-h.vf
new file mode 100644
index 0000000000..cb8b36eda0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr0-v.vf b/language/japanese/japanese-otf/vf/utfjmgr0-v.vf
new file mode 100644
index 0000000000..11d718aa21
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr1-h.vf b/language/japanese/japanese-otf/vf/utfjmgr1-h.vf
new file mode 100644
index 0000000000..db00c1fdec
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr1-v.vf b/language/japanese/japanese-otf/vf/utfjmgr1-v.vf
new file mode 100644
index 0000000000..d3b5fe057d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr2-h.vf b/language/japanese/japanese-otf/vf/utfjmgr2-h.vf
new file mode 100644
index 0000000000..1e5f01adce
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr2-v.vf b/language/japanese/japanese-otf/vf/utfjmgr2-v.vf
new file mode 100644
index 0000000000..3a82a91a15
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr3-h.vf b/language/japanese/japanese-otf/vf/utfjmgr3-h.vf
new file mode 100644
index 0000000000..d4435c452f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr3-v.vf b/language/japanese/japanese-otf/vf/utfjmgr3-v.vf
new file mode 100644
index 0000000000..c13d5ecd9d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr4-h.vf b/language/japanese/japanese-otf/vf/utfjmgr4-h.vf
new file mode 100644
index 0000000000..a2ea3f7b8d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr4-v.vf b/language/japanese/japanese-otf/vf/utfjmgr4-v.vf
new file mode 100644
index 0000000000..dd40b8e86b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr5-h.vf b/language/japanese/japanese-otf/vf/utfjmgr5-h.vf
new file mode 100644
index 0000000000..db1b7e837f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr5-v.vf b/language/japanese/japanese-otf/vf/utfjmgr5-v.vf
new file mode 100644
index 0000000000..8aa08d4ba9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr6-h.vf b/language/japanese/japanese-otf/vf/utfjmgr6-h.vf
new file mode 100644
index 0000000000..b623e48ebc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr6-v.vf b/language/japanese/japanese-otf/vf/utfjmgr6-v.vf
new file mode 100644
index 0000000000..035158090c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr7-h.vf b/language/japanese/japanese-otf/vf/utfjmgr7-h.vf
new file mode 100644
index 0000000000..d8656dfe48
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr7-v.vf b/language/japanese/japanese-otf/vf/utfjmgr7-v.vf
new file mode 100644
index 0000000000..2673060492
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr8-h.vf b/language/japanese/japanese-otf/vf/utfjmgr8-h.vf
new file mode 100644
index 0000000000..f062d52d4a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr8-v.vf b/language/japanese/japanese-otf/vf/utfjmgr8-v.vf
new file mode 100644
index 0000000000..99a34e3e75
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr9-h.vf b/language/japanese/japanese-otf/vf/utfjmgr9-h.vf
new file mode 100644
index 0000000000..88fdd5cd08
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgr9-v.vf b/language/japanese/japanese-otf/vf/utfjmgr9-v.vf
new file mode 100644
index 0000000000..e6334703e3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgra-h.vf b/language/japanese/japanese-otf/vf/utfjmgra-h.vf
new file mode 100644
index 0000000000..52e55af0fa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgra-v.vf b/language/japanese/japanese-otf/vf/utfjmgra-v.vf
new file mode 100644
index 0000000000..817e4e5a2e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrb-h.vf b/language/japanese/japanese-otf/vf/utfjmgrb-h.vf
new file mode 100644
index 0000000000..579e05eb88
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrb-v.vf b/language/japanese/japanese-otf/vf/utfjmgrb-v.vf
new file mode 100644
index 0000000000..6292867d14
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrc-h.vf b/language/japanese/japanese-otf/vf/utfjmgrc-h.vf
new file mode 100644
index 0000000000..55de9d448e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrc-v.vf b/language/japanese/japanese-otf/vf/utfjmgrc-v.vf
new file mode 100644
index 0000000000..3e9de18a4b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrd-h.vf b/language/japanese/japanese-otf/vf/utfjmgrd-h.vf
new file mode 100644
index 0000000000..74805b5c0e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrd-v.vf b/language/japanese/japanese-otf/vf/utfjmgrd-v.vf
new file mode 100644
index 0000000000..8f020cb502
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgre-h.vf b/language/japanese/japanese-otf/vf/utfjmgre-h.vf
new file mode 100644
index 0000000000..c6a9447ba7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgre-v.vf b/language/japanese/japanese-otf/vf/utfjmgre-v.vf
new file mode 100644
index 0000000000..0c757311c3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrf-h.vf b/language/japanese/japanese-otf/vf/utfjmgrf-h.vf
new file mode 100644
index 0000000000..fbb1242855
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrf-v.vf b/language/japanese/japanese-otf/vf/utfjmgrf-v.vf
new file mode 100644
index 0000000000..84945e3dfb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn0-h.vf b/language/japanese/japanese-otf/vf/utfjmgrn0-h.vf
new file mode 100644
index 0000000000..51e7d1664f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn0-v.vf b/language/japanese/japanese-otf/vf/utfjmgrn0-v.vf
new file mode 100644
index 0000000000..7d98d6fb8b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn1-h.vf b/language/japanese/japanese-otf/vf/utfjmgrn1-h.vf
new file mode 100644
index 0000000000..84882013a7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn1-v.vf b/language/japanese/japanese-otf/vf/utfjmgrn1-v.vf
new file mode 100644
index 0000000000..60c5e057a6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn2-h.vf b/language/japanese/japanese-otf/vf/utfjmgrn2-h.vf
new file mode 100644
index 0000000000..eec9f54872
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn2-v.vf b/language/japanese/japanese-otf/vf/utfjmgrn2-v.vf
new file mode 100644
index 0000000000..9cb125aab0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn3-h.vf b/language/japanese/japanese-otf/vf/utfjmgrn3-h.vf
new file mode 100644
index 0000000000..08fb880005
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn3-v.vf b/language/japanese/japanese-otf/vf/utfjmgrn3-v.vf
new file mode 100644
index 0000000000..f120fdda93
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn4-h.vf b/language/japanese/japanese-otf/vf/utfjmgrn4-h.vf
new file mode 100644
index 0000000000..693d879e68
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn4-v.vf b/language/japanese/japanese-otf/vf/utfjmgrn4-v.vf
new file mode 100644
index 0000000000..ec45dc130f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn5-h.vf b/language/japanese/japanese-otf/vf/utfjmgrn5-h.vf
new file mode 100644
index 0000000000..e9dac920ca
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn5-v.vf b/language/japanese/japanese-otf/vf/utfjmgrn5-v.vf
new file mode 100644
index 0000000000..f78a9bf1c6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn6-h.vf b/language/japanese/japanese-otf/vf/utfjmgrn6-h.vf
new file mode 100644
index 0000000000..8e4b3e33ef
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn6-v.vf b/language/japanese/japanese-otf/vf/utfjmgrn6-v.vf
new file mode 100644
index 0000000000..694be707ff
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn7-h.vf b/language/japanese/japanese-otf/vf/utfjmgrn7-h.vf
new file mode 100644
index 0000000000..4664b260ce
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn7-v.vf b/language/japanese/japanese-otf/vf/utfjmgrn7-v.vf
new file mode 100644
index 0000000000..80f2d966ec
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn8-h.vf b/language/japanese/japanese-otf/vf/utfjmgrn8-h.vf
new file mode 100644
index 0000000000..9fd6603de2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn8-v.vf b/language/japanese/japanese-otf/vf/utfjmgrn8-v.vf
new file mode 100644
index 0000000000..b641ad985d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn9-h.vf b/language/japanese/japanese-otf/vf/utfjmgrn9-h.vf
new file mode 100644
index 0000000000..a183ff9d1a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrn9-v.vf b/language/japanese/japanese-otf/vf/utfjmgrn9-v.vf
new file mode 100644
index 0000000000..08890fd2e2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrn9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrna-h.vf b/language/japanese/japanese-otf/vf/utfjmgrna-h.vf
new file mode 100644
index 0000000000..48d929e7fc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrna-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrna-v.vf b/language/japanese/japanese-otf/vf/utfjmgrna-v.vf
new file mode 100644
index 0000000000..5402caddba
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrna-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrnb-h.vf b/language/japanese/japanese-otf/vf/utfjmgrnb-h.vf
new file mode 100644
index 0000000000..0cf6d1c5d5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrnb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrnb-v.vf b/language/japanese/japanese-otf/vf/utfjmgrnb-v.vf
new file mode 100644
index 0000000000..03f496c4dc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrnb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrnc-h.vf b/language/japanese/japanese-otf/vf/utfjmgrnc-h.vf
new file mode 100644
index 0000000000..443a764dcf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrnc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrnc-v.vf b/language/japanese/japanese-otf/vf/utfjmgrnc-v.vf
new file mode 100644
index 0000000000..fef975d0a5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrnc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrnd-h.vf b/language/japanese/japanese-otf/vf/utfjmgrnd-h.vf
new file mode 100644
index 0000000000..fa513f68e1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrnd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrnd-v.vf b/language/japanese/japanese-otf/vf/utfjmgrnd-v.vf
new file mode 100644
index 0000000000..e9d250c072
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrnd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrne-h.vf b/language/japanese/japanese-otf/vf/utfjmgrne-h.vf
new file mode 100644
index 0000000000..df67eb16c5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrne-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrne-v.vf b/language/japanese/japanese-otf/vf/utfjmgrne-v.vf
new file mode 100644
index 0000000000..d3729e02d0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrne-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrnf-h.vf b/language/japanese/japanese-otf/vf/utfjmgrnf-h.vf
new file mode 100644
index 0000000000..95cd9ff913
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrnf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmgrnf-v.vf b/language/japanese/japanese-otf/vf/utfjmgrnf-v.vf
new file mode 100644
index 0000000000..d2e2c0c296
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmgrnf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml0-h.vf b/language/japanese/japanese-otf/vf/utfjml0-h.vf
new file mode 100644
index 0000000000..3ae714f858
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml0-v.vf b/language/japanese/japanese-otf/vf/utfjml0-v.vf
new file mode 100644
index 0000000000..fe63570a48
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml1-h.vf b/language/japanese/japanese-otf/vf/utfjml1-h.vf
new file mode 100644
index 0000000000..55f096e61d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml1-v.vf b/language/japanese/japanese-otf/vf/utfjml1-v.vf
new file mode 100644
index 0000000000..f9a7802ffc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml2-h.vf b/language/japanese/japanese-otf/vf/utfjml2-h.vf
new file mode 100644
index 0000000000..2cdd518a52
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml2-v.vf b/language/japanese/japanese-otf/vf/utfjml2-v.vf
new file mode 100644
index 0000000000..760d416c61
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml3-h.vf b/language/japanese/japanese-otf/vf/utfjml3-h.vf
new file mode 100644
index 0000000000..224eddb95e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml3-v.vf b/language/japanese/japanese-otf/vf/utfjml3-v.vf
new file mode 100644
index 0000000000..72ae78d543
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml4-h.vf b/language/japanese/japanese-otf/vf/utfjml4-h.vf
new file mode 100644
index 0000000000..2a9466fcdd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml4-v.vf b/language/japanese/japanese-otf/vf/utfjml4-v.vf
new file mode 100644
index 0000000000..39992d8b95
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml5-h.vf b/language/japanese/japanese-otf/vf/utfjml5-h.vf
new file mode 100644
index 0000000000..df6b32bef7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml5-v.vf b/language/japanese/japanese-otf/vf/utfjml5-v.vf
new file mode 100644
index 0000000000..4af19a4d5f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml6-h.vf b/language/japanese/japanese-otf/vf/utfjml6-h.vf
new file mode 100644
index 0000000000..1916675d6f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml6-v.vf b/language/japanese/japanese-otf/vf/utfjml6-v.vf
new file mode 100644
index 0000000000..6dd612c1fe
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml7-h.vf b/language/japanese/japanese-otf/vf/utfjml7-h.vf
new file mode 100644
index 0000000000..9d0f40e7c8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml7-v.vf b/language/japanese/japanese-otf/vf/utfjml7-v.vf
new file mode 100644
index 0000000000..7387603276
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml8-h.vf b/language/japanese/japanese-otf/vf/utfjml8-h.vf
new file mode 100644
index 0000000000..51078d4c86
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml8-v.vf b/language/japanese/japanese-otf/vf/utfjml8-v.vf
new file mode 100644
index 0000000000..029f2bfd29
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml9-h.vf b/language/japanese/japanese-otf/vf/utfjml9-h.vf
new file mode 100644
index 0000000000..1335fa2292
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjml9-v.vf b/language/japanese/japanese-otf/vf/utfjml9-v.vf
new file mode 100644
index 0000000000..0c0304a4df
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjml9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmla-h.vf b/language/japanese/japanese-otf/vf/utfjmla-h.vf
new file mode 100644
index 0000000000..3e32ffaef0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmla-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmla-v.vf b/language/japanese/japanese-otf/vf/utfjmla-v.vf
new file mode 100644
index 0000000000..2acce762b7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmla-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlb-h.vf b/language/japanese/japanese-otf/vf/utfjmlb-h.vf
new file mode 100644
index 0000000000..6ef8e959df
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlb-v.vf b/language/japanese/japanese-otf/vf/utfjmlb-v.vf
new file mode 100644
index 0000000000..2f805b8dcb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlc-h.vf b/language/japanese/japanese-otf/vf/utfjmlc-h.vf
new file mode 100644
index 0000000000..758448268f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlc-v.vf b/language/japanese/japanese-otf/vf/utfjmlc-v.vf
new file mode 100644
index 0000000000..9d0e59a876
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmld-h.vf b/language/japanese/japanese-otf/vf/utfjmld-h.vf
new file mode 100644
index 0000000000..684c566f50
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmld-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmld-v.vf b/language/japanese/japanese-otf/vf/utfjmld-v.vf
new file mode 100644
index 0000000000..02916202e9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmld-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmle-h.vf b/language/japanese/japanese-otf/vf/utfjmle-h.vf
new file mode 100644
index 0000000000..e14a89b45b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmle-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmle-v.vf b/language/japanese/japanese-otf/vf/utfjmle-v.vf
new file mode 100644
index 0000000000..320e3efc6b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmle-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlf-h.vf b/language/japanese/japanese-otf/vf/utfjmlf-h.vf
new file mode 100644
index 0000000000..68cf616d75
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlf-v.vf b/language/japanese/japanese-otf/vf/utfjmlf-v.vf
new file mode 100644
index 0000000000..cd42354ad8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln0-h.vf b/language/japanese/japanese-otf/vf/utfjmln0-h.vf
new file mode 100644
index 0000000000..62f6ab2d7f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln0-v.vf b/language/japanese/japanese-otf/vf/utfjmln0-v.vf
new file mode 100644
index 0000000000..23b6739117
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln1-h.vf b/language/japanese/japanese-otf/vf/utfjmln1-h.vf
new file mode 100644
index 0000000000..6ae292b383
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln1-v.vf b/language/japanese/japanese-otf/vf/utfjmln1-v.vf
new file mode 100644
index 0000000000..7e31ca6c01
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln2-h.vf b/language/japanese/japanese-otf/vf/utfjmln2-h.vf
new file mode 100644
index 0000000000..689c0dc21f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln2-v.vf b/language/japanese/japanese-otf/vf/utfjmln2-v.vf
new file mode 100644
index 0000000000..c358caeeff
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln3-h.vf b/language/japanese/japanese-otf/vf/utfjmln3-h.vf
new file mode 100644
index 0000000000..8e99cebd22
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln3-v.vf b/language/japanese/japanese-otf/vf/utfjmln3-v.vf
new file mode 100644
index 0000000000..88a26a1607
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln4-h.vf b/language/japanese/japanese-otf/vf/utfjmln4-h.vf
new file mode 100644
index 0000000000..be57d787d1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln4-v.vf b/language/japanese/japanese-otf/vf/utfjmln4-v.vf
new file mode 100644
index 0000000000..d6275a2f39
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln5-h.vf b/language/japanese/japanese-otf/vf/utfjmln5-h.vf
new file mode 100644
index 0000000000..00e8123dfa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln5-v.vf b/language/japanese/japanese-otf/vf/utfjmln5-v.vf
new file mode 100644
index 0000000000..e0b53ececd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln6-h.vf b/language/japanese/japanese-otf/vf/utfjmln6-h.vf
new file mode 100644
index 0000000000..ee148cb711
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln6-v.vf b/language/japanese/japanese-otf/vf/utfjmln6-v.vf
new file mode 100644
index 0000000000..bd334b4777
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln7-h.vf b/language/japanese/japanese-otf/vf/utfjmln7-h.vf
new file mode 100644
index 0000000000..a8490a61f6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln7-v.vf b/language/japanese/japanese-otf/vf/utfjmln7-v.vf
new file mode 100644
index 0000000000..f61573fb2b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln8-h.vf b/language/japanese/japanese-otf/vf/utfjmln8-h.vf
new file mode 100644
index 0000000000..8fdb83a1b0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln8-v.vf b/language/japanese/japanese-otf/vf/utfjmln8-v.vf
new file mode 100644
index 0000000000..aa1fa19e4f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln9-h.vf b/language/japanese/japanese-otf/vf/utfjmln9-h.vf
new file mode 100644
index 0000000000..8f63c6f50f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmln9-v.vf b/language/japanese/japanese-otf/vf/utfjmln9-v.vf
new file mode 100644
index 0000000000..4add616f95
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmln9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlna-h.vf b/language/japanese/japanese-otf/vf/utfjmlna-h.vf
new file mode 100644
index 0000000000..c80191bc56
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlna-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlna-v.vf b/language/japanese/japanese-otf/vf/utfjmlna-v.vf
new file mode 100644
index 0000000000..07d776cae1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlna-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlnb-h.vf b/language/japanese/japanese-otf/vf/utfjmlnb-h.vf
new file mode 100644
index 0000000000..ea20d2097f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlnb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlnb-v.vf b/language/japanese/japanese-otf/vf/utfjmlnb-v.vf
new file mode 100644
index 0000000000..26eac626d7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlnb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlnc-h.vf b/language/japanese/japanese-otf/vf/utfjmlnc-h.vf
new file mode 100644
index 0000000000..8dcadfacb4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlnc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlnc-v.vf b/language/japanese/japanese-otf/vf/utfjmlnc-v.vf
new file mode 100644
index 0000000000..d65c49fce9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlnc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlnd-h.vf b/language/japanese/japanese-otf/vf/utfjmlnd-h.vf
new file mode 100644
index 0000000000..0417df9a3a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlnd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlnd-v.vf b/language/japanese/japanese-otf/vf/utfjmlnd-v.vf
new file mode 100644
index 0000000000..474d15415d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlnd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlne-h.vf b/language/japanese/japanese-otf/vf/utfjmlne-h.vf
new file mode 100644
index 0000000000..11bc45ab84
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlne-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlne-v.vf b/language/japanese/japanese-otf/vf/utfjmlne-v.vf
new file mode 100644
index 0000000000..1734496889
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlne-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlnf-h.vf b/language/japanese/japanese-otf/vf/utfjmlnf-h.vf
new file mode 100644
index 0000000000..26348e32ae
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlnf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmlnf-v.vf b/language/japanese/japanese-otf/vf/utfjmlnf-v.vf
new file mode 100644
index 0000000000..74e55c4bb5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmlnf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr0-h.vf b/language/japanese/japanese-otf/vf/utfjmr0-h.vf
new file mode 100644
index 0000000000..e2df0f5aab
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr0-v.vf b/language/japanese/japanese-otf/vf/utfjmr0-v.vf
new file mode 100644
index 0000000000..4ec61b7fd6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr1-h.vf b/language/japanese/japanese-otf/vf/utfjmr1-h.vf
new file mode 100644
index 0000000000..5a5781b20f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr1-v.vf b/language/japanese/japanese-otf/vf/utfjmr1-v.vf
new file mode 100644
index 0000000000..9e0fa94a16
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr2-h.vf b/language/japanese/japanese-otf/vf/utfjmr2-h.vf
new file mode 100644
index 0000000000..9d19d61146
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr2-v.vf b/language/japanese/japanese-otf/vf/utfjmr2-v.vf
new file mode 100644
index 0000000000..1b76a65bb3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr3-h.vf b/language/japanese/japanese-otf/vf/utfjmr3-h.vf
new file mode 100644
index 0000000000..629c80b4dc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr3-v.vf b/language/japanese/japanese-otf/vf/utfjmr3-v.vf
new file mode 100644
index 0000000000..299e07ce2e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr4-h.vf b/language/japanese/japanese-otf/vf/utfjmr4-h.vf
new file mode 100644
index 0000000000..1799255190
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr4-v.vf b/language/japanese/japanese-otf/vf/utfjmr4-v.vf
new file mode 100644
index 0000000000..b0334dd25b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr5-h.vf b/language/japanese/japanese-otf/vf/utfjmr5-h.vf
new file mode 100644
index 0000000000..6d2c24ae73
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr5-v.vf b/language/japanese/japanese-otf/vf/utfjmr5-v.vf
new file mode 100644
index 0000000000..367dea52dc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr6-h.vf b/language/japanese/japanese-otf/vf/utfjmr6-h.vf
new file mode 100644
index 0000000000..51290d3447
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr6-v.vf b/language/japanese/japanese-otf/vf/utfjmr6-v.vf
new file mode 100644
index 0000000000..2d3f83f9b8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr7-h.vf b/language/japanese/japanese-otf/vf/utfjmr7-h.vf
new file mode 100644
index 0000000000..94666abc2b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr7-v.vf b/language/japanese/japanese-otf/vf/utfjmr7-v.vf
new file mode 100644
index 0000000000..bcff2b73ff
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr8-h.vf b/language/japanese/japanese-otf/vf/utfjmr8-h.vf
new file mode 100644
index 0000000000..473531b733
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr8-v.vf b/language/japanese/japanese-otf/vf/utfjmr8-v.vf
new file mode 100644
index 0000000000..9a432fab8f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr9-h.vf b/language/japanese/japanese-otf/vf/utfjmr9-h.vf
new file mode 100644
index 0000000000..b1ee37f5f9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmr9-v.vf b/language/japanese/japanese-otf/vf/utfjmr9-v.vf
new file mode 100644
index 0000000000..9872f0fb11
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmra-h.vf b/language/japanese/japanese-otf/vf/utfjmra-h.vf
new file mode 100644
index 0000000000..00a89a0b03
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmra-v.vf b/language/japanese/japanese-otf/vf/utfjmra-v.vf
new file mode 100644
index 0000000000..3eacb5c9a0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrb-h.vf b/language/japanese/japanese-otf/vf/utfjmrb-h.vf
new file mode 100644
index 0000000000..cf4124493b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrb-v.vf b/language/japanese/japanese-otf/vf/utfjmrb-v.vf
new file mode 100644
index 0000000000..f5f076ce7c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrc-h.vf b/language/japanese/japanese-otf/vf/utfjmrc-h.vf
new file mode 100644
index 0000000000..427ec4dbf9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrc-v.vf b/language/japanese/japanese-otf/vf/utfjmrc-v.vf
new file mode 100644
index 0000000000..be314be23a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrd-h.vf b/language/japanese/japanese-otf/vf/utfjmrd-h.vf
new file mode 100644
index 0000000000..d8fc51a9cf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrd-v.vf b/language/japanese/japanese-otf/vf/utfjmrd-v.vf
new file mode 100644
index 0000000000..448d6f4592
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmre-h.vf b/language/japanese/japanese-otf/vf/utfjmre-h.vf
new file mode 100644
index 0000000000..8d4a1ed92f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmre-v.vf b/language/japanese/japanese-otf/vf/utfjmre-v.vf
new file mode 100644
index 0000000000..19e8090cac
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrf-h.vf b/language/japanese/japanese-otf/vf/utfjmrf-h.vf
new file mode 100644
index 0000000000..74b7f0caa1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrf-v.vf b/language/japanese/japanese-otf/vf/utfjmrf-v.vf
new file mode 100644
index 0000000000..0e39de3cc3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn0-h.vf b/language/japanese/japanese-otf/vf/utfjmrn0-h.vf
new file mode 100644
index 0000000000..e096adc9dd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn0-v.vf b/language/japanese/japanese-otf/vf/utfjmrn0-v.vf
new file mode 100644
index 0000000000..26deb17eca
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn1-h.vf b/language/japanese/japanese-otf/vf/utfjmrn1-h.vf
new file mode 100644
index 0000000000..b5405b2679
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn1-v.vf b/language/japanese/japanese-otf/vf/utfjmrn1-v.vf
new file mode 100644
index 0000000000..796b4dd276
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn2-h.vf b/language/japanese/japanese-otf/vf/utfjmrn2-h.vf
new file mode 100644
index 0000000000..6d90f345cf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn2-v.vf b/language/japanese/japanese-otf/vf/utfjmrn2-v.vf
new file mode 100644
index 0000000000..35625c8a87
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn3-h.vf b/language/japanese/japanese-otf/vf/utfjmrn3-h.vf
new file mode 100644
index 0000000000..e28043722a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn3-v.vf b/language/japanese/japanese-otf/vf/utfjmrn3-v.vf
new file mode 100644
index 0000000000..1d9b13566d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn4-h.vf b/language/japanese/japanese-otf/vf/utfjmrn4-h.vf
new file mode 100644
index 0000000000..e190199f58
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn4-v.vf b/language/japanese/japanese-otf/vf/utfjmrn4-v.vf
new file mode 100644
index 0000000000..7d1b3293fc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn5-h.vf b/language/japanese/japanese-otf/vf/utfjmrn5-h.vf
new file mode 100644
index 0000000000..4a5657f097
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn5-v.vf b/language/japanese/japanese-otf/vf/utfjmrn5-v.vf
new file mode 100644
index 0000000000..640a083e97
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn6-h.vf b/language/japanese/japanese-otf/vf/utfjmrn6-h.vf
new file mode 100644
index 0000000000..d440cabcf8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn6-v.vf b/language/japanese/japanese-otf/vf/utfjmrn6-v.vf
new file mode 100644
index 0000000000..8bcdccbfc7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn7-h.vf b/language/japanese/japanese-otf/vf/utfjmrn7-h.vf
new file mode 100644
index 0000000000..47cb609df8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn7-v.vf b/language/japanese/japanese-otf/vf/utfjmrn7-v.vf
new file mode 100644
index 0000000000..b266dcd8fa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn8-h.vf b/language/japanese/japanese-otf/vf/utfjmrn8-h.vf
new file mode 100644
index 0000000000..ca0487e940
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn8-v.vf b/language/japanese/japanese-otf/vf/utfjmrn8-v.vf
new file mode 100644
index 0000000000..a285f48d0a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn9-h.vf b/language/japanese/japanese-otf/vf/utfjmrn9-h.vf
new file mode 100644
index 0000000000..ec5b804a08
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrn9-v.vf b/language/japanese/japanese-otf/vf/utfjmrn9-v.vf
new file mode 100644
index 0000000000..55c4840646
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrn9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrna-h.vf b/language/japanese/japanese-otf/vf/utfjmrna-h.vf
new file mode 100644
index 0000000000..e3a959b39c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrna-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrna-v.vf b/language/japanese/japanese-otf/vf/utfjmrna-v.vf
new file mode 100644
index 0000000000..20e5ef4181
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrna-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrnb-h.vf b/language/japanese/japanese-otf/vf/utfjmrnb-h.vf
new file mode 100644
index 0000000000..30b79e35c8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrnb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrnb-v.vf b/language/japanese/japanese-otf/vf/utfjmrnb-v.vf
new file mode 100644
index 0000000000..4f187fc4a6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrnb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrnc-h.vf b/language/japanese/japanese-otf/vf/utfjmrnc-h.vf
new file mode 100644
index 0000000000..d563c8a8b8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrnc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrnc-v.vf b/language/japanese/japanese-otf/vf/utfjmrnc-v.vf
new file mode 100644
index 0000000000..fa06a2b188
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrnc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrnd-h.vf b/language/japanese/japanese-otf/vf/utfjmrnd-h.vf
new file mode 100644
index 0000000000..4d73092574
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrnd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrnd-v.vf b/language/japanese/japanese-otf/vf/utfjmrnd-v.vf
new file mode 100644
index 0000000000..978b91cb0a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrnd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrne-h.vf b/language/japanese/japanese-otf/vf/utfjmrne-h.vf
new file mode 100644
index 0000000000..22061c32af
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrne-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrne-v.vf b/language/japanese/japanese-otf/vf/utfjmrne-v.vf
new file mode 100644
index 0000000000..ca5b4f1ad2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrne-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrnf-h.vf b/language/japanese/japanese-otf/vf/utfjmrnf-h.vf
new file mode 100644
index 0000000000..dc6a62219c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrnf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfjmrnf-v.vf b/language/japanese/japanese-otf/vf/utfjmrnf-v.vf
new file mode 100644
index 0000000000..089a2d5d92
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfjmrnf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr0-h.vf b/language/japanese/japanese-otf/vf/utfkgr0-h.vf
new file mode 100644
index 0000000000..7f4556acff
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr0-v.vf b/language/japanese/japanese-otf/vf/utfkgr0-v.vf
new file mode 100644
index 0000000000..f3d376a383
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr1-h.vf b/language/japanese/japanese-otf/vf/utfkgr1-h.vf
new file mode 100644
index 0000000000..86bf27894b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr1-v.vf b/language/japanese/japanese-otf/vf/utfkgr1-v.vf
new file mode 100644
index 0000000000..19c4f91b97
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr2-h.vf b/language/japanese/japanese-otf/vf/utfkgr2-h.vf
new file mode 100644
index 0000000000..7318fb66e2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr2-v.vf b/language/japanese/japanese-otf/vf/utfkgr2-v.vf
new file mode 100644
index 0000000000..b42ac7fffd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr3-h.vf b/language/japanese/japanese-otf/vf/utfkgr3-h.vf
new file mode 100644
index 0000000000..d7bc899559
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr3-v.vf b/language/japanese/japanese-otf/vf/utfkgr3-v.vf
new file mode 100644
index 0000000000..dd6b151bf9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr4-h.vf b/language/japanese/japanese-otf/vf/utfkgr4-h.vf
new file mode 100644
index 0000000000..b6d5309da8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr4-v.vf b/language/japanese/japanese-otf/vf/utfkgr4-v.vf
new file mode 100644
index 0000000000..52f0795053
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr5-h.vf b/language/japanese/japanese-otf/vf/utfkgr5-h.vf
new file mode 100644
index 0000000000..2099a07fdd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr5-v.vf b/language/japanese/japanese-otf/vf/utfkgr5-v.vf
new file mode 100644
index 0000000000..3fdcbb4afe
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr6-h.vf b/language/japanese/japanese-otf/vf/utfkgr6-h.vf
new file mode 100644
index 0000000000..0b3f91c4ef
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr6-v.vf b/language/japanese/japanese-otf/vf/utfkgr6-v.vf
new file mode 100644
index 0000000000..9d4dd7d759
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr7-h.vf b/language/japanese/japanese-otf/vf/utfkgr7-h.vf
new file mode 100644
index 0000000000..c56ee53f13
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr7-v.vf b/language/japanese/japanese-otf/vf/utfkgr7-v.vf
new file mode 100644
index 0000000000..404c0ee131
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr8-h.vf b/language/japanese/japanese-otf/vf/utfkgr8-h.vf
new file mode 100644
index 0000000000..f3e879cdcf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr8-v.vf b/language/japanese/japanese-otf/vf/utfkgr8-v.vf
new file mode 100644
index 0000000000..779196076b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr9-h.vf b/language/japanese/japanese-otf/vf/utfkgr9-h.vf
new file mode 100644
index 0000000000..857d0bb9c9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgr9-v.vf b/language/japanese/japanese-otf/vf/utfkgr9-v.vf
new file mode 100644
index 0000000000..130fb9a9f4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgra-h.vf b/language/japanese/japanese-otf/vf/utfkgra-h.vf
new file mode 100644
index 0000000000..b16cde3a40
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgra-v.vf b/language/japanese/japanese-otf/vf/utfkgra-v.vf
new file mode 100644
index 0000000000..d07d9ba02b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgrb-h.vf b/language/japanese/japanese-otf/vf/utfkgrb-h.vf
new file mode 100644
index 0000000000..638386984d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgrb-v.vf b/language/japanese/japanese-otf/vf/utfkgrb-v.vf
new file mode 100644
index 0000000000..85d46e7631
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgrc-h.vf b/language/japanese/japanese-otf/vf/utfkgrc-h.vf
new file mode 100644
index 0000000000..9940f05cf1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgrc-v.vf b/language/japanese/japanese-otf/vf/utfkgrc-v.vf
new file mode 100644
index 0000000000..88faec1c26
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgrd-h.vf b/language/japanese/japanese-otf/vf/utfkgrd-h.vf
new file mode 100644
index 0000000000..2e0d1aeebc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgrd-v.vf b/language/japanese/japanese-otf/vf/utfkgrd-v.vf
new file mode 100644
index 0000000000..c4e328859b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgre-h.vf b/language/japanese/japanese-otf/vf/utfkgre-h.vf
new file mode 100644
index 0000000000..90860be5e0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgre-v.vf b/language/japanese/japanese-otf/vf/utfkgre-v.vf
new file mode 100644
index 0000000000..5742913af8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgrf-h.vf b/language/japanese/japanese-otf/vf/utfkgrf-h.vf
new file mode 100644
index 0000000000..fbd536ff01
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkgrf-v.vf b/language/japanese/japanese-otf/vf/utfkgrf-v.vf
new file mode 100644
index 0000000000..6509f2476f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkgrf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr0-h.vf b/language/japanese/japanese-otf/vf/utfkmr0-h.vf
new file mode 100644
index 0000000000..4e1196e1a4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr0-v.vf b/language/japanese/japanese-otf/vf/utfkmr0-v.vf
new file mode 100644
index 0000000000..d075ad8e27
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr1-h.vf b/language/japanese/japanese-otf/vf/utfkmr1-h.vf
new file mode 100644
index 0000000000..44d28cde6a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr1-v.vf b/language/japanese/japanese-otf/vf/utfkmr1-v.vf
new file mode 100644
index 0000000000..c36d6da267
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr2-h.vf b/language/japanese/japanese-otf/vf/utfkmr2-h.vf
new file mode 100644
index 0000000000..0bce4086f5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr2-v.vf b/language/japanese/japanese-otf/vf/utfkmr2-v.vf
new file mode 100644
index 0000000000..093e81cdba
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr3-h.vf b/language/japanese/japanese-otf/vf/utfkmr3-h.vf
new file mode 100644
index 0000000000..7b4a0811e2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr3-v.vf b/language/japanese/japanese-otf/vf/utfkmr3-v.vf
new file mode 100644
index 0000000000..4a80655cc1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr4-h.vf b/language/japanese/japanese-otf/vf/utfkmr4-h.vf
new file mode 100644
index 0000000000..fe9e912849
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr4-v.vf b/language/japanese/japanese-otf/vf/utfkmr4-v.vf
new file mode 100644
index 0000000000..0857352472
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr5-h.vf b/language/japanese/japanese-otf/vf/utfkmr5-h.vf
new file mode 100644
index 0000000000..733f156097
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr5-v.vf b/language/japanese/japanese-otf/vf/utfkmr5-v.vf
new file mode 100644
index 0000000000..c29f8f2a8b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr6-h.vf b/language/japanese/japanese-otf/vf/utfkmr6-h.vf
new file mode 100644
index 0000000000..d83c4160ed
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr6-v.vf b/language/japanese/japanese-otf/vf/utfkmr6-v.vf
new file mode 100644
index 0000000000..9a37950050
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr7-h.vf b/language/japanese/japanese-otf/vf/utfkmr7-h.vf
new file mode 100644
index 0000000000..0978e31ae2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr7-v.vf b/language/japanese/japanese-otf/vf/utfkmr7-v.vf
new file mode 100644
index 0000000000..75327ec46b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr8-h.vf b/language/japanese/japanese-otf/vf/utfkmr8-h.vf
new file mode 100644
index 0000000000..11b0c10d83
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr8-v.vf b/language/japanese/japanese-otf/vf/utfkmr8-v.vf
new file mode 100644
index 0000000000..7cd952fa0f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr9-h.vf b/language/japanese/japanese-otf/vf/utfkmr9-h.vf
new file mode 100644
index 0000000000..db85ef220d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmr9-v.vf b/language/japanese/japanese-otf/vf/utfkmr9-v.vf
new file mode 100644
index 0000000000..c01ad6929c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmra-h.vf b/language/japanese/japanese-otf/vf/utfkmra-h.vf
new file mode 100644
index 0000000000..14372e4378
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmra-v.vf b/language/japanese/japanese-otf/vf/utfkmra-v.vf
new file mode 100644
index 0000000000..eeaf985f49
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmrb-h.vf b/language/japanese/japanese-otf/vf/utfkmrb-h.vf
new file mode 100644
index 0000000000..6784dba57e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmrb-v.vf b/language/japanese/japanese-otf/vf/utfkmrb-v.vf
new file mode 100644
index 0000000000..58dc0ea0c5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmrc-h.vf b/language/japanese/japanese-otf/vf/utfkmrc-h.vf
new file mode 100644
index 0000000000..cc433ecb34
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmrc-v.vf b/language/japanese/japanese-otf/vf/utfkmrc-v.vf
new file mode 100644
index 0000000000..b73e26cc51
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmrd-h.vf b/language/japanese/japanese-otf/vf/utfkmrd-h.vf
new file mode 100644
index 0000000000..c38da7a8e7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmrd-v.vf b/language/japanese/japanese-otf/vf/utfkmrd-v.vf
new file mode 100644
index 0000000000..2f005e51bf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmre-h.vf b/language/japanese/japanese-otf/vf/utfkmre-h.vf
new file mode 100644
index 0000000000..c905ba3455
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmre-v.vf b/language/japanese/japanese-otf/vf/utfkmre-v.vf
new file mode 100644
index 0000000000..825bc31f9d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmrf-h.vf b/language/japanese/japanese-otf/vf/utfkmrf-h.vf
new file mode 100644
index 0000000000..3c7592d675
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfkmrf-v.vf b/language/japanese/japanese-otf/vf/utfkmrf-v.vf
new file mode 100644
index 0000000000..7096c6ecbd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfkmrf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr0-h.vf b/language/japanese/japanese-otf/vf/utfmr0-h.vf
new file mode 100644
index 0000000000..82fd6a63aa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr0-v.vf b/language/japanese/japanese-otf/vf/utfmr0-v.vf
new file mode 100644
index 0000000000..4e64777dae
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr1-h.vf b/language/japanese/japanese-otf/vf/utfmr1-h.vf
new file mode 100644
index 0000000000..a0ead224d7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr1-v.vf b/language/japanese/japanese-otf/vf/utfmr1-v.vf
new file mode 100644
index 0000000000..561605472e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr2-h.vf b/language/japanese/japanese-otf/vf/utfmr2-h.vf
new file mode 100644
index 0000000000..2ad942b79f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr2-v.vf b/language/japanese/japanese-otf/vf/utfmr2-v.vf
new file mode 100644
index 0000000000..19338491e6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr3-h.vf b/language/japanese/japanese-otf/vf/utfmr3-h.vf
new file mode 100644
index 0000000000..ec78b20911
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr3-v.vf b/language/japanese/japanese-otf/vf/utfmr3-v.vf
new file mode 100644
index 0000000000..fa76a42da4
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr4-h.vf b/language/japanese/japanese-otf/vf/utfmr4-h.vf
new file mode 100644
index 0000000000..622ce72d20
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr4-v.vf b/language/japanese/japanese-otf/vf/utfmr4-v.vf
new file mode 100644
index 0000000000..71d73cb2cf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr5-h.vf b/language/japanese/japanese-otf/vf/utfmr5-h.vf
new file mode 100644
index 0000000000..e4c83b374a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr5-v.vf b/language/japanese/japanese-otf/vf/utfmr5-v.vf
new file mode 100644
index 0000000000..282b01abd9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr6-h.vf b/language/japanese/japanese-otf/vf/utfmr6-h.vf
new file mode 100644
index 0000000000..7e92c1d8f8
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr6-v.vf b/language/japanese/japanese-otf/vf/utfmr6-v.vf
new file mode 100644
index 0000000000..fb1d7751f6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr7-h.vf b/language/japanese/japanese-otf/vf/utfmr7-h.vf
new file mode 100644
index 0000000000..8dc9594e02
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr7-v.vf b/language/japanese/japanese-otf/vf/utfmr7-v.vf
new file mode 100644
index 0000000000..72e9b15ce9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr8-h.vf b/language/japanese/japanese-otf/vf/utfmr8-h.vf
new file mode 100644
index 0000000000..4026ef62c6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr8-v.vf b/language/japanese/japanese-otf/vf/utfmr8-v.vf
new file mode 100644
index 0000000000..02e32832f6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr9-h.vf b/language/japanese/japanese-otf/vf/utfmr9-h.vf
new file mode 100644
index 0000000000..9a97022e55
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmr9-v.vf b/language/japanese/japanese-otf/vf/utfmr9-v.vf
new file mode 100644
index 0000000000..9388ee8a5f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmra-h.vf b/language/japanese/japanese-otf/vf/utfmra-h.vf
new file mode 100644
index 0000000000..3b5369ffac
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmra-v.vf b/language/japanese/japanese-otf/vf/utfmra-v.vf
new file mode 100644
index 0000000000..e8f4063b8f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmrb-h.vf b/language/japanese/japanese-otf/vf/utfmrb-h.vf
new file mode 100644
index 0000000000..8b4d436a8b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmrb-v.vf b/language/japanese/japanese-otf/vf/utfmrb-v.vf
new file mode 100644
index 0000000000..8584ae3d68
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmrc-h.vf b/language/japanese/japanese-otf/vf/utfmrc-h.vf
new file mode 100644
index 0000000000..8485f5b1fd
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmrc-v.vf b/language/japanese/japanese-otf/vf/utfmrc-v.vf
new file mode 100644
index 0000000000..03a6e8e522
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmrd-h.vf b/language/japanese/japanese-otf/vf/utfmrd-h.vf
new file mode 100644
index 0000000000..2395628713
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmrd-v.vf b/language/japanese/japanese-otf/vf/utfmrd-v.vf
new file mode 100644
index 0000000000..ccc268c891
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmre-h.vf b/language/japanese/japanese-otf/vf/utfmre-h.vf
new file mode 100644
index 0000000000..00397209a6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmre-v.vf b/language/japanese/japanese-otf/vf/utfmre-v.vf
new file mode 100644
index 0000000000..df771a4753
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmrf-h.vf b/language/japanese/japanese-otf/vf/utfmrf-h.vf
new file mode 100644
index 0000000000..30b826f5bf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utfmrf-v.vf b/language/japanese/japanese-otf/vf/utfmrf-v.vf
new file mode 100644
index 0000000000..5497c0655e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utfmrf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr0-h.vf b/language/japanese/japanese-otf/vf/utftgr0-h.vf
new file mode 100644
index 0000000000..2530a8bfd0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr0-v.vf b/language/japanese/japanese-otf/vf/utftgr0-v.vf
new file mode 100644
index 0000000000..ac6a7c9dbf
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr1-h.vf b/language/japanese/japanese-otf/vf/utftgr1-h.vf
new file mode 100644
index 0000000000..0cbc62b253
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr1-v.vf b/language/japanese/japanese-otf/vf/utftgr1-v.vf
new file mode 100644
index 0000000000..f0d4da75db
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr2-h.vf b/language/japanese/japanese-otf/vf/utftgr2-h.vf
new file mode 100644
index 0000000000..b4b04472ef
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr2-v.vf b/language/japanese/japanese-otf/vf/utftgr2-v.vf
new file mode 100644
index 0000000000..73bb0f59dc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr3-h.vf b/language/japanese/japanese-otf/vf/utftgr3-h.vf
new file mode 100644
index 0000000000..935f7478d5
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr3-v.vf b/language/japanese/japanese-otf/vf/utftgr3-v.vf
new file mode 100644
index 0000000000..674b12f084
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr4-h.vf b/language/japanese/japanese-otf/vf/utftgr4-h.vf
new file mode 100644
index 0000000000..f2c2db1274
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr4-v.vf b/language/japanese/japanese-otf/vf/utftgr4-v.vf
new file mode 100644
index 0000000000..25d5ef0056
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr5-h.vf b/language/japanese/japanese-otf/vf/utftgr5-h.vf
new file mode 100644
index 0000000000..51ae27d1d1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr5-v.vf b/language/japanese/japanese-otf/vf/utftgr5-v.vf
new file mode 100644
index 0000000000..1820869548
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr6-h.vf b/language/japanese/japanese-otf/vf/utftgr6-h.vf
new file mode 100644
index 0000000000..1cd1b9b96b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr6-v.vf b/language/japanese/japanese-otf/vf/utftgr6-v.vf
new file mode 100644
index 0000000000..77152c71e7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr7-h.vf b/language/japanese/japanese-otf/vf/utftgr7-h.vf
new file mode 100644
index 0000000000..327984a610
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr7-v.vf b/language/japanese/japanese-otf/vf/utftgr7-v.vf
new file mode 100644
index 0000000000..3212eb09aa
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr8-h.vf b/language/japanese/japanese-otf/vf/utftgr8-h.vf
new file mode 100644
index 0000000000..9876cc9af2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr8-v.vf b/language/japanese/japanese-otf/vf/utftgr8-v.vf
new file mode 100644
index 0000000000..aeec2cee71
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr9-h.vf b/language/japanese/japanese-otf/vf/utftgr9-h.vf
new file mode 100644
index 0000000000..417b5b545a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgr9-v.vf b/language/japanese/japanese-otf/vf/utftgr9-v.vf
new file mode 100644
index 0000000000..c64721ecb2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgra-h.vf b/language/japanese/japanese-otf/vf/utftgra-h.vf
new file mode 100644
index 0000000000..d517ca4fae
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgra-v.vf b/language/japanese/japanese-otf/vf/utftgra-v.vf
new file mode 100644
index 0000000000..8d0dbb559c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgrb-h.vf b/language/japanese/japanese-otf/vf/utftgrb-h.vf
new file mode 100644
index 0000000000..90b691d471
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgrb-v.vf b/language/japanese/japanese-otf/vf/utftgrb-v.vf
new file mode 100644
index 0000000000..ff8ec0d9a9
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgrc-h.vf b/language/japanese/japanese-otf/vf/utftgrc-h.vf
new file mode 100644
index 0000000000..b73407284f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgrc-v.vf b/language/japanese/japanese-otf/vf/utftgrc-v.vf
new file mode 100644
index 0000000000..14a3e77107
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgrd-h.vf b/language/japanese/japanese-otf/vf/utftgrd-h.vf
new file mode 100644
index 0000000000..cf28795c72
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgrd-v.vf b/language/japanese/japanese-otf/vf/utftgrd-v.vf
new file mode 100644
index 0000000000..8a7ee5c635
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgre-h.vf b/language/japanese/japanese-otf/vf/utftgre-h.vf
new file mode 100644
index 0000000000..32b1d305dc
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgre-v.vf b/language/japanese/japanese-otf/vf/utftgre-v.vf
new file mode 100644
index 0000000000..7570a2f4a0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgrf-h.vf b/language/japanese/japanese-otf/vf/utftgrf-h.vf
new file mode 100644
index 0000000000..48acc6c4b3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftgrf-v.vf b/language/japanese/japanese-otf/vf/utftgrf-v.vf
new file mode 100644
index 0000000000..fde5296c2c
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftgrf-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr0-h.vf b/language/japanese/japanese-otf/vf/utftmr0-h.vf
new file mode 100644
index 0000000000..edc6e6b2ae
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr0-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr0-v.vf b/language/japanese/japanese-otf/vf/utftmr0-v.vf
new file mode 100644
index 0000000000..6596a3602d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr0-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr1-h.vf b/language/japanese/japanese-otf/vf/utftmr1-h.vf
new file mode 100644
index 0000000000..61a7d25218
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr1-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr1-v.vf b/language/japanese/japanese-otf/vf/utftmr1-v.vf
new file mode 100644
index 0000000000..c7ba8a1bb6
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr1-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr2-h.vf b/language/japanese/japanese-otf/vf/utftmr2-h.vf
new file mode 100644
index 0000000000..f8d714b1f2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr2-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr2-v.vf b/language/japanese/japanese-otf/vf/utftmr2-v.vf
new file mode 100644
index 0000000000..6067673a87
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr2-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr3-h.vf b/language/japanese/japanese-otf/vf/utftmr3-h.vf
new file mode 100644
index 0000000000..dd8d8511e1
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr3-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr3-v.vf b/language/japanese/japanese-otf/vf/utftmr3-v.vf
new file mode 100644
index 0000000000..46bd4873c0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr3-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr4-h.vf b/language/japanese/japanese-otf/vf/utftmr4-h.vf
new file mode 100644
index 0000000000..910cdd67cb
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr4-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr4-v.vf b/language/japanese/japanese-otf/vf/utftmr4-v.vf
new file mode 100644
index 0000000000..2a2880a455
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr4-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr5-h.vf b/language/japanese/japanese-otf/vf/utftmr5-h.vf
new file mode 100644
index 0000000000..eeee18822e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr5-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr5-v.vf b/language/japanese/japanese-otf/vf/utftmr5-v.vf
new file mode 100644
index 0000000000..509d9785ac
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr5-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr6-h.vf b/language/japanese/japanese-otf/vf/utftmr6-h.vf
new file mode 100644
index 0000000000..e3935d2ec2
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr6-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr6-v.vf b/language/japanese/japanese-otf/vf/utftmr6-v.vf
new file mode 100644
index 0000000000..8d7ebaaff7
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr6-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr7-h.vf b/language/japanese/japanese-otf/vf/utftmr7-h.vf
new file mode 100644
index 0000000000..dbb5bd787b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr7-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr7-v.vf b/language/japanese/japanese-otf/vf/utftmr7-v.vf
new file mode 100644
index 0000000000..e4af5aa87b
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr7-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr8-h.vf b/language/japanese/japanese-otf/vf/utftmr8-h.vf
new file mode 100644
index 0000000000..98dfffd77a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr8-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr8-v.vf b/language/japanese/japanese-otf/vf/utftmr8-v.vf
new file mode 100644
index 0000000000..127c830086
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr8-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr9-h.vf b/language/japanese/japanese-otf/vf/utftmr9-h.vf
new file mode 100644
index 0000000000..28a6e2af26
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr9-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmr9-v.vf b/language/japanese/japanese-otf/vf/utftmr9-v.vf
new file mode 100644
index 0000000000..10ab37f775
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmr9-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmra-h.vf b/language/japanese/japanese-otf/vf/utftmra-h.vf
new file mode 100644
index 0000000000..581802bf27
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmra-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmra-v.vf b/language/japanese/japanese-otf/vf/utftmra-v.vf
new file mode 100644
index 0000000000..ac1bb5ce8f
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmra-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmrb-h.vf b/language/japanese/japanese-otf/vf/utftmrb-h.vf
new file mode 100644
index 0000000000..e99edbaf0a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmrb-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmrb-v.vf b/language/japanese/japanese-otf/vf/utftmrb-v.vf
new file mode 100644
index 0000000000..060b7179d3
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmrb-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmrc-h.vf b/language/japanese/japanese-otf/vf/utftmrc-h.vf
new file mode 100644
index 0000000000..d422540c6e
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmrc-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmrc-v.vf b/language/japanese/japanese-otf/vf/utftmrc-v.vf
new file mode 100644
index 0000000000..defb98b6d0
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmrc-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmrd-h.vf b/language/japanese/japanese-otf/vf/utftmrd-h.vf
new file mode 100644
index 0000000000..e0680fce17
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmrd-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmrd-v.vf b/language/japanese/japanese-otf/vf/utftmrd-v.vf
new file mode 100644
index 0000000000..d664e2f43a
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmrd-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmre-h.vf b/language/japanese/japanese-otf/vf/utftmre-h.vf
new file mode 100644
index 0000000000..e0e8cccc40
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmre-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmre-v.vf b/language/japanese/japanese-otf/vf/utftmre-v.vf
new file mode 100644
index 0000000000..3c790d6203
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmre-v.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmrf-h.vf b/language/japanese/japanese-otf/vf/utftmrf-h.vf
new file mode 100644
index 0000000000..dd04ab8f46
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmrf-h.vf
Binary files differ
diff --git a/language/japanese/japanese-otf/vf/utftmrf-v.vf b/language/japanese/japanese-otf/vf/utftmrf-v.vf
new file mode 100644
index 0000000000..9ab3568b0d
--- /dev/null
+++ b/language/japanese/japanese-otf/vf/utftmrf-v.vf
Binary files differ
diff --git a/language/japanese/jlreq/LICENSE b/language/japanese/jlreq/LICENSE
new file mode 100644
index 0000000000..26d0b676d2
--- /dev/null
+++ b/language/japanese/jlreq/LICENSE
@@ -0,0 +1,12 @@
+(2-clause BSD license)
+jlreq and jlreq-trimmarks
+Copyright 2017-2019, Noriyuki Abe.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/language/japanese/jlreq/Makefile b/language/japanese/jlreq/Makefile
new file mode 100644
index 0000000000..5899a07c8f
--- /dev/null
+++ b/language/japanese/jlreq/Makefile
@@ -0,0 +1,185 @@
+TEXMF:=$(shell kpsewhich -var-value=TEXMFHOME)
+MAKEJVFCNF:=$(shell ls -R $(shell kpsewhich --var-value=TEXMFDIST)/fonts/source | awk '/:$$/{sub(/:$$/,"");f=$$0} tolower($$0) ~ /makejvf-upjpn\.cnf$$/{print f"/"$$0}' | head -n 1)
+
+all: jfm
+
+jfm: \
+ jfm-jlreqv.lua \
+ jlreq.tfm bjlreq.tfm zjlreq.tfm bzjlreq.tfm \
+ jlreq.vf bjlreq.vf zjlreq.vf bzjlreq.vf \
+ ujlreq.tfm ubjlreq.tfm uzjlreq.tfm ubzjlreq.tfm \
+ ujlreq.vf ubjlreq.vf uzjlreq.vf ubzjlreq.vf \
+ ujlreq-q.tfm ubjlreq-q.tfm uzjlreq-q.tfm ubzjlreq-q.tfm \
+ ujlreq-q.vf ubjlreq-q.vf uzjlreq-q.vf ubzjlreq-q.vf \
+ jlreqg.tfm bjlreqg.tfm zjlreqg.tfm bzjlreqg.tfm \
+ jlreqg.vf bjlreqg.vf zjlreqg.vf bzjlreqg.vf \
+ ujlreqg.tfm ubjlreqg.tfm uzjlreqg.tfm ubzjlreqg.tfm \
+ ujlreqg.vf ubjlreqg.vf uzjlreqg.vf ubzjlreqg.vf \
+ ujlreqg-q.tfm ubjlreqg-q.tfm uzjlreqg-q.tfm ubzjlreqg-q.tfm \
+ ujlreqg-q.vf ubjlreqg-q.vf uzjlreqg-q.vf ubzjlreqg-q.vf \
+ jlreq-v.tfm bjlreq-v.tfm zjlreq-v.tfm bzjlreq-v.tfm \
+ jlreq-v.vf bjlreq-v.vf zjlreq-v.vf bzjlreq-v.vf \
+ ujlreq-v.tfm ubjlreq-v.tfm uzjlreq-v.tfm ubzjlreq-v.tfm \
+ ujlreq-v.vf ubjlreq-v.vf uzjlreq-v.vf ubzjlreq-v.vf \
+ jlreqg-v.tfm bjlreqg-v.tfm zjlreqg-v.tfm bzjlreqg-v.tfm \
+ jlreqg-v.vf bjlreqg-v.vf zjlreqg-v.vf bzjlreqg-v.vf \
+ ujlreqg-v.tfm ubjlreqg-v.tfm uzjlreqg-v.tfm ubzjlreqg-v.tfm \
+ ujlreqg-v.vf ubjlreqg-v.vf uzjlreqg-v.vf ubzjlreqg-v.vf \
+
+ rm -f rml.tfm rmlv.tfm gbm.tfm gbmv.tfm uprml-h.tfm uprml-hq.tfm upgbm-h.tfm upgbm-hq.tfm uprml-v.tfm uprml-vq.tfm upgbm-v.tfm upgbm-vq.tfm
+
+# .pl
+u%-v.pl: jfm-%v-pl.lua luajfm2pl.lua
+ texlua luajfm2pl.lua $*v-pl $@
+
+%-v.pl: jfm-%v-pl.lua luajfm2pl.lua
+ texlua luajfm2pl.lua --noutf $*v-pl $@
+
+u%.pl: jfm-%-pl.lua luajfm2pl.lua
+ texlua luajfm2pl.lua $*-pl $@
+
+%.pl: jfm-%-pl.lua luajfm2pl.lua
+ texlua luajfm2pl.lua --noutf $*-pl $@
+
+# .vf
+u%g-q.vf: u%g-q.tfm
+ makejvf -i -u jisq $< upgbm-hq.tfm
+
+u%-q.vf: u%-q.tfm
+ makejvf -i -u jisq $< uprml-hq.tfm
+
+u%g-v.vf: u%g-v.tfm
+ makejvf -i -u custom -t ${MAKEJVFCNF} $< upgbm-v.tfm
+
+u%g.vf: u%g.tfm u%g-q.tfm
+ makejvf -i -u custom -t ${MAKEJVFCNF} -H -U u$*g-q $< upgbm-h.tfm
+
+%g-v.vf: %g-v.tfm
+ makejvf -i $< gbmv.tfm
+
+%g.vf: %g.tfm
+ makejvf -i $< gbm.tfm
+
+u%-v.vf: u%-v.tfm
+ makejvf -i -u custom -t ${MAKEJVFCNF} $< uprml-v.tfm
+
+%-v.vf: %-v.tfm
+ makejvf -i $< rmlv.tfm
+
+u%.vf: u%.tfm u%-q.tfm
+ makejvf -i -u custom -t ${MAKEJVFCNF} -H -U u$*-q $< uprml-h.tfm
+
+%.vf: %.tfm
+ makejvf -i $< rml.tfm
+
+# .tfm
+u%-q.tfm: u%.pl
+ uppltotf -kanji=uptex $< $@
+
+u%g-q.tfm: u%-q.tfm
+ cp $< $@
+
+%g-v.tfm: %-v.tfm
+ cp $< $@
+
+%g.tfm: %.tfm
+ cp $< $@
+
+u%.tfm: u%.pl
+ uppltotf -kanji=uptex $< $@
+
+%.tfm: %.pl
+ ppltotf -kanji=utf8 $< $@
+
+jfm-jlreqv.lua jfm-jlreq-pl.lua jfm-bjlreq-pl.lua jfm-zjlreq-pl.lua jfm-bzjlreq-pl.lua jfm-jlreqv-pl.lua jfm-bjlreqv-pl.lua jfm-zjlreqv-pl.lua jfm-bzjlreqv-pl.lua: make_variant_jfm.lua jfm-jlreq.lua
+ texlua make_variant_jfm.lua
+
+doc: pdfdoc htmldoc
+
+latexdoc: jlreq.tex jlreq-ja.tex
+
+jlreq%tex: README%md README-template.tex
+ pandoc --verbose -f gfm -t latex --pdf-engine=lualatex --template README-template.tex $< -o $@
+
+pdfdoc: jlreq.pdf jlreq-ja.pdf
+
+jlreq.pdf: README.md README-template.tex
+ sed -e "s/\\[README-ja.md\\](README-ja.md)/[jlreq-ja.pdf](jlreq-ja.pdf)/" README.md | pandoc --verbose -f gfm -t latex --pdf-engine=lualatex --template README-template.tex -o $@
+
+jlreq-ja.pdf: README-ja.md README-template.tex
+ pandoc --verbose -f gfm -t latex --pdf-engine=lualatex --template README-template.tex $< -o $@
+
+htmldoc: jlreq.html jlreq-ja.html jlreq-trimmarks.html jlreq-trimmarks-ja.html
+
+jlreq-ja.html: README-ja.md README-template.html
+ pandoc --verbose -f gfm -t html5 -V lang=ja -M title=jlreq --template README-template.html -o jlreq-ja.html README-ja.md
+
+jlreq.html: README.md README-template.html
+ sed -e "s/\\[README-ja.md\\](README-ja.md)/[jlreq-ja.html](jlreq-ja.html)/" README.md | pandoc --verbose -f gfm -t html5 -V lang=en -M title=jlreq --template README-template.html -o jlreq.html
+
+jlreq-trimmarks-ja.html: jlreq-trimmarks-ja.md README-template.html
+ pandoc --verbose -f gfm -t html5 -V lang=ja -M title=jlreq-trimmarks --template README-template.html -o jlreq-trimmarks-ja.html jlreq-trimmarks-ja.md
+
+jlreq-trimmarks.html: jlreq-trimmarks.md README-template.html
+ pandoc --verbose -f gfm -t html5 -V lang=en -M title=jlreq-trimmarks --template README-template.html -o jlreq-trimmarks.html jlreq-trimmarks.md
+
+
+jfm-install: jfm
+ mkdir -p ${TEXMF}/fonts/tfm/public/jlreq
+ install *.tfm ${TEXMF}/fonts/tfm/public/jlreq
+ mkdir -p ${TEXMF}/fonts/vf/public/jlreq
+ install *.vf ${TEXMF}/fonts/vf/public/jlreq
+ mkdir -p ${TEXMF}/tex/luatex/jlreq
+ install jfm-jlreqv.lua jfm-jlreq.lua ${TEXMF}/tex/luatex/jlreq
+
+cls-install:
+ mkdir -p ${TEXMF}/tex/latex/jlreq
+ install jlreq-helpers.sty ${TEXMF}/tex/latex/jlreq
+ install jlreq.cls ${TEXMF}/tex/latex/jlreq
+
+sty-install:
+ mkdir -p ${TEXMF}/tex/latex/jlreq
+ install jlreq-trimmarks.sty ${TEXMF}/tex/latex/jlreq
+
+install: jfm-install cls-install sty-install
+
+tds: jfm jlreq.cls README.md README-ja.md LICENSE jlreq.html jlreq-ja.html jlreq-trimmarks.html jlreq-trimmarks-ja.html
+ mkdir -p ./tds/fonts/tfm/public/jlreq
+ cp -f *.tfm ./tds/fonts/tfm/public/jlreq
+ mkdir -p ./tds/fonts/vf/public/jlreq
+ cp -f *.vf ./tds/fonts/vf/public/jlreq
+ mkdir -p ./tds/tex/luatex/jlreq
+ cp jfm-jlreq.lua ./tds/tex/luatex/jlreq
+ cp jfm-jlreqv.lua ./tds/tex/luatex/jlreq
+ mkdir -p ./tds/tex/latex/jlreq
+ cp jlreq.cls ./tds/tex/latex/jlreq
+ cp jlreq-helpers.sty ./tds/tex/latex/jlreq
+ cp jlreq-trimmarks.sty ./tds/tex/latex/jlreq
+ mkdir -p ./tds/doc/latex/jlreq
+ cp README.md ./tds/doc/latex/jlreq
+ cp README-ja.md ./tds/doc/latex/jlreq
+ cp jlreq-trimmarks.md ./tds/doc/latex/jlreq
+ cp jlreq-trimmarks-ja.md ./tds/doc/latex/jlreq
+ cp LICENSE ./tds/doc/latex/jlreq
+ cp jlreq.html ./tds/doc/latex/jlreq
+ cp jlreq-ja.html ./tds/doc/latex/jlreq
+ cp jlreq-trimmarks.html ./tds/doc/latex/jlreq
+ cp jlreq-trimmarks-ja.html ./tds/doc/latex/jlreq
+
+uninstall:
+ rm -rf ${TEXMF}/fonts/tfm/public/jlreq
+ rm -rf ${TEXMF}/fonts/vf/public/jlreq
+ rm -rf ${TEXMF}/tex/luatex/jlreq
+ rm -rf ${TEXMF}/tex/latex/jlreq
+
+jfmclean:
+ rm -f *jlreq*.tfm *jlreq*.pl *jlreq*.vf
+ rm -f jfm-jlreqv.lua
+ rm -f jfm-*jlreq*-pl.lua
+
+docclean:
+ rm -f jlreq.tex jlreq.pdf jlreq.html jlreq-ja.tex jlreq-ja.pdf jlreq-ja.html jlreq-trimmarks.html jlreq-trimmarks-ja.html
+
+clean: jfmclean docclean
+
+
diff --git a/language/japanese/jlreq/README-ja.md b/language/japanese/jlreq/README-ja.md
new file mode 100644
index 0000000000..8425fdbbf1
--- /dev/null
+++ b/language/japanese/jlreq/README-ja.md
@@ -0,0 +1,450 @@
+# jlreq
+
+## これは何?
+[日本語組版処理の要件](https://www.w3.org/TR/jlreq/ja/)の実装を試みる[LuaTeX-ja](https://osdn.jp/projects/luatex-ja/wiki/FrontPage) / pLaTeX / upLaTeX用のクラスファイルと,それに必要なJFMの組み合わせです.
+
+## 提供されるもの
+クラスファイルjlreq.clsと,横書きLuaTeX-ja用のJFMであるjfm-jlreq.luaが用意されています.また,縦書きのJFMやpLaTeX / upLaTeX 用のJFMを生成するいくつかのスクリプトがあります.
+
+## インストール
+`make`で必要なJFMを生成してください.その後,
+
+* *.tfm -> $TEXMF/fonts/tfm/public/jlreq
+* *.vf -> $TEXMF/fonts/vf/public/jlreq
+* jfm-jlreq.lua, jfm-jlreqv.lua -> $TEXMF/tex/luatex/jlreq
+* jlreq.cls, jlreq-helpers.sty -> $TEXMF/tex/latex/jlreq
+
+と配置します.`make install`とすると,$TEXMF=$TEXMFHOMEとしてこのコピーを行います.
+
+## 使い方
+通常通り
+```latex
+\documentclass{jlreq}
+```
+とします.これで横書きのarticle相当の文書クラスとなります.エンジンは自動判定されますが,指定する場合はクラスオプションに`platex/uplatex/lualatex`のいずれかを渡してください.縦書きにするには`tate`オプションを渡します.また,reportやbook相当の文書クラスとするには,それぞれ`report`や`book`オプションを渡します.たとえば,縦書きの本を作成するには
+```latex
+\documentclass[tate,book]{jlreq}
+```
+とします.
+
+その他,`oneside / twoside / onecolumn / twocolumn / titlepage / notitlepage / draft / final / openright / openany / leqno / fleqn`というよくあるオプションを受け付けます.
+
+標準的な文書クラスと同じように中身を書くことができますが,次のような命令が追加 / 拡張されています.なお,本ドキュメントでは[日本語組版処理の要件](https://www.w3.org/TR/jlreq/ja/)における用語を断りなく使います.
+
+### `\jlreqsetup`
+設定用命令です.プリアンブルでしか使えません.文書に対する設定は,クラスオプションとして行うか`\jlreqsetup`を通じて行うかします.どちらで設定するかは設定項目によります.
+
+### `\section`
+`\section*[running head]{見出し文字列}[副題]`というように,通常の書式に加えて副題を受け付けられるように拡張されています.その他,`\part`(articleのみ),`\chapter`(book/reportのみ),`\subsection`,`\subsubsection`も副題を受け付けます.
+
+### `abstract`環境
+プリアンブルにもかけるようになっています.プリアンブルに書かれた場合は,`\maketitle`とともに出力されます.二段組の場合は,段組にならず概要を出力することができます.
+
+### `\sidenote`
+この命令は傍注の幅が正の時にのみ定義されます.デフォルトの基本版面ではこの幅は0に設定されています.従って`\sidenote`は定義されません.後の基本版面の設定を参考にしてください.
+
+`\sidenote`は傍注(縦組みの場合は脚注)を出力します.内部では`\marginpar`を使っています.デフォルトでは`\footnote`と同様の書式となりますが,`\jlreqsetup`で`sidenote_type=symbol`が指定されている場合,その書式は`\sidenote{該当項目}{注}`となります.たとえば
+```latex
+刊行できる\sidenote{原稿}{印刷などの方法により……}を入手する仕事である.
+```
+とします.後の説明も参照してください.
+
+
+### `\endnote`
+後注を指定します.`\footnote`と同様の書式です.デフォルトでは,注自身の出力は見出し直前に行われます.この動作は`\jlreqsetup`に`endnote_position`を渡すことで制御できます.詳しくは後の注関係の説明をご覧ください.また`\theendnotes`を実行するとその場に出力をします.
+
+### `\warichu`
+割注を出力します.行分割位置などは自動で計算されます.(複数回のコンパイルが必要.)`\warichu*`ではこれらの位置を手動で指定できます.書式は
+```
+\warichu*{(一行目前) & (一行目後)\\ (二行目前) & (二行目後)...}
+```
+です.`&`が省略されている場合は自動で調整されます.
+
+### `\tatechuyoko`
+縦中横を出力します.`\tatechuyoko{<文字列>}`とします.縦書きでない場所で使うとエラーになります.
+
+### `\jafontsize`
+和文フォントサイズを指定する`\fontsize`です.クラスオプションで`jafontscale=0.9`とされている場合,`\fontsize{9pt}{15pt}`とすると和文フォントのサイズは`8.1pt`となりますが,`\jafontsize{9pt}{15pt}`とすると`9pt`となります.(欧文フォントサイズは`10pt`となる.)なお,第二引数は`\fontsize`の第二引数と全く同じです.
+
+### `\ `
+全角空白(U+3000)一文字からなるマクロです.和字間隔を挿入します.LuaLaTeXでは` `のみでも和字間隔を入力できます.
+
+### その他
+* ルビや圏点は提供されません.[PXrubrica](https://github.com/zr-tex8r/PXrubrica)または`luatexja-ruby`(LuaLaTeX,LuaTeX-jaパッケージに付属)を使うと良いかと思います.
+* 日本語組版処理の要件2.3.2.dによれば,横組みにおける二段組の最後のページの各段の行数は揃えることが望ましいとされていますが,この処理は行われません.`nidanfloat`パッケージを使い,
+
+ ```latex
+ \usepackage[balance]{nidanfloat}
+ ```
+
+ とするとこの処理が行われます.ただし,最終ページでの`\newpage`や`\clearpage`が正しく動作しません.詳しくは`nidanfloat`パッケージのマニュアルをご覧ください.
+* フォントを設定する機能は有していません.和文フォントは,LuaLaTeX利用時は`luatexja-fontspec`や`luatexja-preset`(いずれもLuaTeX-jaパッケージに付属)により設定することができます.dvipdfmxを使う場合は,[PXchfon](https://github.com/zr-tex8r/PXchfon)での設定が可能です.
+
+
+## 各種設計
+設計はクラスオプションまたは`\jlreqsetup`によりkeyval形式で行います.ただし,クラスオプションではLaTeXの実装により,本来可能な入力が受け付けられないがケースあります.多くの場合は空白を除くことにより解決します.
+
+以下では次の用法を使います.
+
+* `[A/B]`:AまたはBです.`[A/B/C]`等も同様.
+* `<寸法>`:TeXが認識する寸法です.簡単な式(`10pt+10pt`のような)を使うこともできます.また,クラスオプションでは,場合によっては次のような特殊な値を使うこともできます.(これらはpLaTeX / upLaTeXではもとから利用可能ですが,LuaLaTeXでも利用可能なように処理されています.)`\jlreqsetup`内のような場所では,常に`\zw`や`\zh`により全角幅が記述できます.以下,たとえば`Q`が利用可能な場合は`<寸法;Q>`のように記述します.
+ - `Q`:0.25mmと解釈されます.
+ - `zw`, `zh`:全角幅として解釈されます.
+* `<コード>`:LaTeXのコードです.
+* `<フォント設定コード>`:`\Large`や`\bfseries`のようなフォント設定の命令です.`\Large\bfseries`のように複数指定することもできます.
+
+
+### 基本版面
+クラスオプションです.
+
+* `paper=[<紙サイズ名>/{<寸法>,<寸法>}]`:紙サイズです.紙サイズ名はa0からa10,b0からb10,c2からc8を指定できます.B列はJIS B列です.また,`{<横>,<縦>}`と直接寸法を指定することもできます.
+* `fontsize=<寸法;Q>`:欧文フォントサイズ.デフォルトは10pt.
+* `jafontsize=<寸法;Q>`:和文フォントサイズ.
+* `jafontscale=<実数値>`:欧文フォントと和文フォントの比(和文 / 欧文).`fontsize`と`jafontsize`が両方指定されている場合は無視される.デフォルトは1.
+* `line_length=<寸法;zw,zh>`:一行の長さ.デフォルトは字送り方向の紙幅の0.75倍.実際の値は一文字の長さの整数倍になるように補正されます.
+* `number_of_lines=<自然数値>`:一ページの行数.デフォルトは行送り方向の紙幅の0.75倍になるような値.
+* `gutter=<寸法;zw,zh>`:のどの余白の大きさ.
+ - `tate`無指定時は奇数ページ左,偶数ページ右の余白
+ - `tate`指定時は奇数ページ右,偶数ページ左の余白
+ - `twoside`が指定されていない時は,常に奇数ページ扱いで余白が設定される
+* `head_space=<寸法;zw,zh>`:天の空き量.デフォルトは中央寄せになるような値.
+* `foot_space=<寸法;zw,zh>`:地の空き量.デフォルトは中央寄せになるような値.
+* `baselineskip=<寸法;Q,zw,zh>`:行送り.デフォルトは`jafontsize`の1.7倍.
+* `linegap=<寸法;Q,zw,zh>`:行間.
+* `headfoot_sidemargin=<寸法;zw,zh>`:柱やノンブルの左右の空き.
+* `column_gap=<寸法;zw,zh>`:段間(`twocolumn`指定時のみ).
+* `sidenote_length=<寸法;zw,zh>`:傍注の幅を指定します.
+
+### 組み方
+クラスオプションです.
+* `open_bracket_pos=[zenkaku_tentsuki/zenkakunibu_nibu/nibu_tentsuki]`:始め括弧が行頭に来た際の配置方法を指定します.それぞれ段落開始全角折り返し行頭天付き(デフォルト),段落開始全角二分折り返し行頭二分,段落開始二分折り返し行頭天付きを意味します.
+* `hanging_punctuation`:ぶら下げ組をします.
+
+### 逆ノンブル
+クラスオプションです.
+* `use_reverse_pagination`:逆ノンブルの機能を利用可能にします.`jlreqreversepage`という「読み取り専用のカウンタ」が定義されます.(本物のカウンタではありません.)`\arabic`などの命令や`\value`が適用可能です.また`\thejlreqreversepage`が`\arabic{jlreqreversepage}`として定義されます.
+
+### 注関係
+`\jlreqsetup`で指定します.
+
+* `reference_mark=[inline/interlinear]`:合印の配置方法を指定します.`inline`にすると該当項目の後ろの行中に配置します.`interlinear`を指定すると該当項目の上(横組)または右(縦組)に配置します.
+* `footnote_second_indent=<寸法>`: 脚注(横書き時)または傍注(縦書き時)の二行目以降の字下げ量を指定します.一行目からの相対字下げ量です.
+* `sidenote_type=[number/symbol]`:傍注と本文との対応の方法を指定します.`number`が規定で,注の位置に通し番号が入り,それにより対応が示されます.`symbol`とすると,注の位置に特定の記号が入り,また注がついている単語が強調されます.
+* `sidenote_symbol=<コード>`:`sidenote_symbol=symbol`の時に,注の位置に入る記号.デフォルト*
+* `sidenote_keyword_font=<フォント設定コード>`:`sidenote_symbol=symbol`の時に,注のついている単語のフォント指定.デフォルトは無し(強調しない)
+* `endnote_second_indent=<寸法>`: 後柱の二行目以降の字下げ量を指定します.一行目からの相対字下げ量です.
+* `endnote_position=[headings/paragraph/{_<見出し名1>,_<見出し名2>,...}]`:後注の出力場所を指定します.`headings`は各見出しの直前(デフォルト),`paragraph`は改段落の際に出力します.また,`endnote_position={_chapter,_section}`とすると,`\chapter`と`\section`の直前に出力します.
+
+### キャプション
+図表のキャプションを`\jlreqsetup`で変更できます.全ての設定で,各環境ごとの設定をすることができます.例えば`caption_font=\normalsize,table=\Large`とすると,table環境内では`\Large`が適用され,そのほかの環境内では`\normalsize`が適用されます.他の設定も同様です.
+* `caption_font=<フォント設定コード>`:キャプション自身のフォントを指定します.
+* `caption_label_font=<フォント設定コード>`:キャプションのラベルのフォントを指定します.
+* `caption_after_label_space=<寸法>`:ラベルとキャプションの間の空きを指定します.
+* `caption_label_format=<コード>`:ラベルの書式を指定します.`caption_label_format={#1:}`のようにします.`#1`が「図1」のような番号に置換されます.
+* `caption_align=[left/right/center/bottom/top]`:キャプションの場所を指定します.
+
+### 引用
+`quote / quotation / verse`環境の挙動を`\jlreqsetup`で指定できます.
+* `quote_indent=<寸法>`:字下げを指定します.デフォルトは2\zwです.一行の長さが文字サイズの整数倍になるように調整されます.
+* `quote_end_indent=<寸法>`:字上げを指定します.デフォルトは0\zwです.
+* `quote_beforeafter_space=<寸法>`:前後の空きを指定します.`quote_beforeafter_space=1\baselineskip`とすると一行あきます.
+* `quote_fontsize=[normalsize/small/footnotesize/scriptsize/tiny]`:フォントサイズを指定します.
+
+### 箇条書き
+`\jlreqsetup`で指定します.
+* `itemization_beforeafter_space=<寸法>`:箇条書きの前後の空きを指定します.`itemization_beforeafter_space={i=<寸法>}`とするとトップレベルのみに設定を行います.`itemization_beforeafter_space={0pt,i=10pt,ii=5pt}`とすれば,レベル1の箇条書きに10ptを,レベル2のそれに5ptを,それ以外には0ptを設定します.レベルは上記のように小文字ローマ数字で指定します.
+* `itemization_itemsep=<寸法>`:項目同士の空きを指定します.
+
+### 定理環境
+`\jlreqsetup`で指定します.
+* `theorem_beforeafter_space=<寸法>`:定理環境の前後の空きを指定します.
+
+### 前付きなど
+`\fontmatter` / `\mainmatter` / `\backmatter` / `\appendix`での処理を`\jlreqsetup`で指定できます.
+* `frontmatter_pagebreak=[cleardoublepage/clearpage/]`:`\frontmatter`実行時の改ページを実行する命令名を指定します.空にすると何もしません.
+* `frontmatter_counter={<カウンタ名>={value=<値>, the=<コード>, restore=[true/false]},...}`:`\frontmatter`時でのカウンタの操作を指定します.例えば`chapter={value=0,the={[\arabic{chapter]}}`とすると,`chapter`カウンタの値が`0`になり,`\thechapter`が`[\arabic{chapter}]`となります.デフォルトでは`\mainmatter`時に値と`\the<カウンタ名>`の定義を戻しますが,`restore=false`とするとこの動きが抑制されます.
+* `frontmatter_heading={<見出し命令名>={<設定>},...}`:見出し命令の動きを変更します.`\Delare***Heading`で指定できる項目の他以下を受け付けます.
+ - `heading_type=[Tobira/Block/Runin/Cutin/Modify]`:見出しの種類です.`Modify`が指定された場合は`\ModifyHeading`での変更となります.
+ - `heading_level=<数値>`:見出し命令のレベルを設定します.指定されなかった場合は,`\frontmatter`実行時の値が使われます.`heading_type=Modify`の時は無視されます.
+ - `restore=[true/false]`:`true`が指定されると,`\mainmatter`で元の定義を復帰します.デフォルトは`true`です.
+* `frontmatter_pagestyle={<ページスタイル名>[,restore=[true/false]]}`:`\frontmatter`実行時にここで指定されたページスタイルへと切り替えます.デフォルトでは`\mainmatter`時にもとのページスタイルに戻しますが,`restore=false`を指定すると戻しません.
+* `frontmatter_pagination={<ページ番号指定>[,continuous,independent]}`:ページ番号の出力形式を,`frontmatter_pagination=roman`のようにLaTeXの命令名で指定します.更に`continuous`が指定されると通しノンブルとなります.`independent`で別ノンブルです.
+* `frontmatter_precode=<コード>`:`\frontmatter`時に最初に実行されるコードです.
+* `frontmatter_postcode=<コード>`:`\frontmatter`時に最後に実行されるコードです.
+
+`frontmatter`を`mainmatter`や`backmatter`,`appendix`へと変えた設定も存在します.ただし,以下のような違いがあります.
+* `restore=[true/false]`は無効な設定です.
+* `mainmatter_pagination`に`continuous`と`independent`は指定できません.
+* `appendix_pagebreak`,`appendix_pagestyle`,`appendix_pagination`はありません.
+
+
+## 見出し
+新しい見出しを`\New***Heading`という命令で作ることができます(***には見出しの種類に応じた文字列が入る).書式はすべて
+
+```
+\New***Heading{<命令名>}{<レベル>}{<設定>}
+```
+
+となっています.また,`\Renew***Heading`,`\Provide***Heading`,`\Declare***Heading`も同時に用意されます.それぞれ
+
+* `\Renew***Heading`:指定した名前の命令が定義されていなければエラー.
+* `\Provide***Heading`:指定した名前の命令が定義されていない場合に限り見出し命令の定義が行われる.
+* `\Declare***Heading`:指定した名前の命令が定義されているか否かによらず新しく見出し命令を定義する.
+
+となっています.
+
+### 扉見出し
+`\NewTobiraHeading`で作成します.通常のクラスファイルにおける`\section`等と同じ書式の命令ができます.設定は以下の通り.
+
+* `type=[han/naka]`:`han`だと半扉見出しを,`naka`だと中扉見出しを作ります.
+* `pagestyle=<ページスタイル名>`:見出し箇所のページスタイルを指定します.
+* `label_format=<コード>`:ラベルを出力する命令を指定します.たとえば`label_format={第\thechapter 章}`のように指定します.
+* `format=<コード>`:実際に出力する書式を指定します.`format={\null\vfil {\Huge\bfseries #1#2}}`のようにします.`#1`はラベルに,`#2`は見出し文字列に置き換えられます.この中では`\jlreqHeadingLabel`,`\jlreqHeadingText`という命令が利用可能です.いずれも引数を一つとる命令で,それぞれラベル,見出し文字列が空ならば空に,そうでなければ与えられた引数自身を出力します.例えば`format={[\jlreqHeadingLabel{Label=#1}]}`と指定されていれば,ラベルが空でない時には`[Label=<ラベル>]`を,そうでなければ`[]`を出力します.
+* `number=[true/false]`:採番を行うかを指定します.ただし,`number=false`の場合でも対応するカウンタは定義されます.また`\the<カウンタ名>`の変更もされないので,必要ならば再定義が必要になります.
+
+### 別行見出し
+`\NewBlockHeading`で作成します.`\<命令名>*[running head]{見出し文字列}[副題]`という書式の命令を作成します.設定は以下の通り.
+
+#### 書式関連
+* `font=<フォント設定コード>`:見出しのフォントを指定します.
+* `subtitle_font=<フォント設定コード>`:副題のフォントを指定します.
+* `label_format=<コード>`:ラベルのフォーマットを指定します.`label_format={第\thechapter 章}`などのようにします.
+* `subtitle_format=<コード>`:副題のフォーマットを指定します.`subtitle_format={「#1」}`のようにします.`#1`は副題自身に置き換えられます.
+* `format=<コード>`:見出し全体のフォーマットを指定します.`#1`がラベル,`#2`が見出し文字列,`#3`が副題に置き換えられます.内部では`\jlreqHeadingLabel`,`\jlreqHeadingText`,`\jlreqHeadingSubtitle`という命令が利用可能です.いずれも引数を一つとる命令で,それぞれラベル,見出し文字列,副題が空ならば空に,そうでなければ与えられた引数自身を出力します.例えば`format={[\jlreqHeadingLabel{Label=#1}]}`と指定されていれば,ラベルが空でない時には`[Label=<ラベル>]`を,そうでなければ`[]`を出力します.なお,実際に`#1`が置き換えられるのはラベル自身ではなく,それに空きの調整などが入ったコードです.従って,予期しない結果を得ることもあり得ます.`#2`,`#3`も同様です.
+
+#### インデント関連
+* `align=[left/center/right]`:見出し位置の横方向の配置場所を指定します.
+* `indent=<寸法>`:見出し全体の字下げ量を指定します.
+* `end_indent=<寸法>`:見出し全体の字上げ量を指定します.
+* `after_label_space=<寸法>`:ラベル後,見出し文字列までの空きを指定します.
+* `second_heading_text_indent=[<寸法>/{<寸法>,<寸法>}]`:見出し文字列の二行目以降のインデントを指定します.見出し文字列一行目の頭を起点として指定しますが,`second_heading_text_indent=*1\zw`のように先頭に`*`をつけるとラベルの頭を起点としての指定になります.また,`second_heading_text_indent={<ラベルがある時>,<ラベルがない時>}`という指定をすると,ラベルの有無に応じて値を変更することができます.`<ラベルがある時>`の指定ではやはり`*`を使うことができます.
+* `subtitle_indent=<寸法>`:副題のインデント量を指定します.見出し文字列の一行目を起点として指定します.ただし,`subtitle_indent=*1\zw`のように先頭に`*`をつけるとラベルの頭を起点としての指定になります.`subtitle_break=true`の時のみ有効です.
+
+#### その他
+* `subtitle_break=[true/false]`:見出し文字列と副題の間を改行するか指定します.
+* `allowbreak_if_evenpage=[true/false]`:見出しが偶数ページにあった場合,その直後の改ページを許可します.
+* `pagebreak=[clearpage/cleardoublepage/clearcolumn/nariyuki/begin_with_odd_page/begin_with_even_page]`:見出し直前の改ページを指定します.それぞれ,改ページ,`\cleardoublepage`実行,改段,なりゆき,奇数ページ開始,偶数ページ開始,です.
+* `afterindent=[true/false]`:見出し直後の段落の字下げを行うかを指定します.
+* `column_spanning=[true/false]`: 段抜きの見出しにします.`pagebreak=nariyuki`または`pagebreak=clearcolumn`の時には無視されます.
+* `number=[true/false]`:採番を行うかを指定します.`\NewTobiraHeading`と同様の注意が必要です.
+
+#### 行取り
+行取りの指定は以下のいずれかの方法で行うことができます.
+
+* 行数を指定し,その中央に配置します.`lines=<自然数値>`により行数を指定します.`before_lines=<自然数値>`や`after_lines=<自然数値>`により,さらに前後に追加する行数を指定します.たとえば`lines=3,after_lines=1`とすれば,四行の中に配置され,前の空きよりも後ろの空きの方が一行分大きくなります.`before_lines`により指定された空きはページ頭には入りませんが,`before_lines=*1`というように`*`を先頭につけると常に入るようになります.
+* 行数と,前後いずれかの空きを指定します.`lines=<自然数値>`により行数を,`before_space=<寸法>`または`after_space=<寸法>`のいずれかの指定によりそれぞれ前または後ろの空きを指定します.
+* 前後の空きを指定します.`before_space=<寸法>`および`after_space=<寸法>`を指定します.
+
+#### 連続して掲げる見出しの行取り
+``\SetBlockHeadingSpaces``により,見出しが連続して掲げられたときの行取りを設定することができます.``\SetBlockHeadingSpaces``は
+
+```latex
+\SetBlockHeadingSpaces{
+ {_part{lines=3,before_lines=1},_section{lines=2},_subsection{lines=2}}
+ [lines=5]{_section,23pt,_subsection,16pt}
+}
+```
+
+のように使います.この意味は次の通りです.
+
+* `\part`,`\section`,`\subsection`という順番で見出しが掲げられていて,その前後が見出しでない場合は,`\part`は三行取り+前に一行空き,`\section`と`\subsection`は二行取りとなります.
+* `\section`,`\subsection`という順番で見出しが掲げられていて,その前後が見出しでない場合は,全体で五行取りとし,`\section`と`\subsection`との間に`23pt`の空き,`\subsection`の後に`16pt`の空きを入れます.
+
+個々の設定は以下のようになります.
+
+* 各々の``{}``内には``_<見出し命令名>``か``<寸法>``をカンマ区切りで並べます.
+* 先頭に``[]``で囲まれた設定を追加できます.これは連続して掲げられた見出し全体への設定となります.``lines / before_lines / after_lines / before_space / after_space``が利用可能です.各々の意味は上述の行取り指定と同じです.
+* 寸法はそのまま空き量を表します.
+* ``_<見出し命令名>``の後に``{}``で囲まれた設定を追加することで,その見出しの空き量を設定します.設定しない場合は前後に空きが入りません.
+* 見出しに対する``{}``で囲まれた設定内では,``lines / before_lines / after_lines / before_space / after_space``が利用可能です.各々の意味は上述の行取り指定と同じです.
+* ``{}``で囲まれた部分を``*``のみにすると(例えば``_section{*}``とすると)単独で掲げた場合と同じ設定を使います.
+
+なお,見出しが連続しているかは単純に別行見出しの命令が並んで書かれているかのみで判断します.従ってそれらの命令間に出力には関係しないような命令が挟まっていたとしても,見出しが連続して掲げられているとは判断されません.ただし,見出し命令の間に空白,改行または`\label[<オプション>]{<引数>}…{<引数>}`という形のもののみが挟まれている場合は,見出しが連続していると判断されます.
+
+### 同行見出し
+`\NewRuninHeading`で作成します.通常の文書クラスにおける`\section`と同様の,`\<命令名>*[running head]{見出し文字列}`という書式の命令が作成されます.設定は以下の通り.
+
+* `font=<フォント設定コード>`:見出しのフォントを指定します.
+* `indent=<寸法>` 見出し文字列全体の字下げ量を指定します.
+* `after_label_space=<寸法>`:ラベル後,見出し文字列までの空きを指定します.
+* `label_format=<コード>`:ラベルのフォーマットを指定します.`label_format={\theparagraph}`などのようにします.
+* `number=[true/false]':採番を行うかを指定します.`\NewTobiraHeading`と同様の注意が必要です.
+
+### 窓見出し
+`\NewCutinHeading`で作成します.`\<命令名>{見出し文字列}`という書式の命令を作成します.設定は以下の通り.
+
+* `font=<フォント設定コード>`:見出しのフォントを指定します.
+* `indent=<寸法>`:見出し全体の字下げ量を指定します.
+* `after_space=<寸法>`:見出しと本文との間の空きを指定します.
+* `onelinemax=<寸法>`, `twolinemax=<寸法>`:見出し文字列の長さが`onelinemax`以下ならば一行で,`twolinemax`以下ならば二行で窓見出しを出力します.それ以上の場合は三行です.デフォルトはそれぞれ6文字,20文字の長さ.
+
+### `\ModifyHeading`
+既に(上のどれかを使い)定義された見出し命令の設定を変更します.たとえば
+```latex
+\ModifyHeading{section}{lines=10}
+```
+とすると,`\section`のフォントなどの設定はそのままに,行取りのみが10行に変更されます.見出しの種類を変更することはできません.
+
+### `\SaveHeading`
+見出し命令の定義を待避します.
+```latex
+\SaveHeading{section}{\restoresection} % \sectionの中身を\restoresectionに待避.
+\RenewBlockHeading{section}{1}{font=……} % \sectionを新しく定義する.
+……
+\restoresection % \sectionの中身を元に戻す.
+```
+のように使います.
+
+## ページスタイル
+```
+\NewPageStyle{<ページスタイル名>}{<設定>}
+```
+によりページスタイルを定義することができます.`<設定>`はkeyval形式です.定義したページスタイルは`\pagestyle`で適用できます.設定は以下の通り.
+
+* `yoko`:横書きで上下に出力します.デフォルト.
+* `tate`:縦書きで小口側に出力します.
+* `running_head_font=<フォント設定命令>`:柱のフォントを指定します.
+* `nombre_font=<フォント設定命令>`:ノンブルのフォントを指定します.
+* `running_head_position`, `nombre_position`:柱とノンブルの位置を指定します.`yoko`か`tate`のどちらが指定されているかで指定方法が変わります.
+ - `yoko`指定時:`top-left`のように指定できます.`top / bottom / center / left / right / gutter / fore-edge`が使えます.`gutter`はのど,`fore-edge`は小口です.`left`,`right`の指定は奇数ページに対するものです.`twoside`が指定されている場合,偶数ページはその逆になります.
+ - `tate`指定時:`<寸法>`が指定できます.`running_head_position`は柱の天からの下げ量を,`nombre_position`はノンブルの地からの上げ量を指定します.
+* `nombre=<書式>`:出力するノンブルを指定します.デフォルトは`\thepage`.
+* `odd_running_head=<書式>`,`even_running_head=<書式>`:それぞれ奇数ページ,偶数ページの柱を指定します.`_section`のように`_`から始まる名前を指定すると,対応する見出しを出力します.(`_section`だと現在の`\section`を出力する.)
+* `mark_format={[odd=<書式>/even=<書式>/_<見出し命令名>=<書式>],...}`:見出しを柱に出力する際のフォーマットを指定します.`mark_format={_section={節\thesection:#1},_chapter={第\thechapter 章\quad #1}}`のように指定します.見出し命令名の代わりに`odd`や`even`も指定でき,それぞれ奇数ページ/偶数ページの柱の書式になります.`\pagestyle`実行時に`\sectionmark`等を定義することで実現しています.
+* `nombre_ii=<書式>`: 二つ目のノンブルを指定します.`nombre_ii_position`で場所指定,`nombre_ii_font`でフォント設定もできます.指定方法は`nombre`や`nombre_position`と同じです.`odd_running_head_ii`,`even_running_head_ii`,`running_head_ii_position`,`running_head_ii_font`もあります.`nombre_ii_position`や`running_head_ii_position`が指定されなかった場合,`yoko`指定時にはそれぞれ`nombre_position`および`running_head_position`と同じ位置に設定されます.`tate`指定時は一つ目のノンブルや柱に続く場所に表示されます.
+
+
+`\RenewPageStyle`,`\ProvidePageStyle`,`\DeclarePageStyle`もあります.`\ModifyPageStyle`により既存のページスタイルを改変することが可能です.
+
+## JFM
+以下のような独自のJFMを使います.パッケージによっては,パッケージ独自のJFMや,また標準のJFMを使うように設定がし直される場合があります.本クラスファイルで使用するJFMを使う場合には,パッケージオプションなどを適切に与えて設定をする必要があります.
+
+### pLaTeX/upLaTeXの場合
+JFMの名前は次の通りです.`[]`で囲まれている文字は設定により入ったり入らなかったりします.
+```
+[u][b][z]jlreq[g][-v]
+```
+それぞれの文字は以下の場合に入ります.
+
+* `u`: upLaTeX利用時
+* `b`: ぶら下げ組み利用時.(クラスオプションに`hanging_punctuation`が指定された時.)
+* `z`: 行頭における開き括弧類の前の空きが,段落開始時が全角二分,折り返し時が二分の時.(クラスオプションに`open_bracket_pos=zenkakunibu_nibu`が指定された時.)
+* `g`: ゴシック用フォント.
+* `-v`: 縦書き用.
+
+例えば,ぶら下げ組みを利用せず,クラスオプションに`open_bracket_pos=zenkakunibu_nibu`が指定されいてるソースをpLaTeXで処理した場合,横書き明朝体には`zjlreq`という名前のJFMが使われます.
+
+### LuaLaTeXの場合
+* 横書き用のJFMは`jlreq`
+* 縦書き用のJFMは`jlreqv`
+
+となります.ゴシックも同じJFMを使います.本クラスファイルは,LuaTeX-ja標準のJFMをこれらに変更します.
+
+
+## その他
+* クラスオプション`jlreq_notes`が渡されると,日本語組版処理の記述と矛盾する設定が行われた場合に通知がされます.
+
+## ライセンス
+このパッケージは二条項BSDライセンスの元で配布されています.詳しくは[LICENSE](LICENSE)をご覧ください.
+
+## 履歴
+* 2017-02-08
+ - 最初のバージョン.
+* 2017-02-17
+ - いくつかバグを修正.
+ - クラスオプション/`\jlreqsetup`にいくつかのキーを追加/変更.
+ - `abstract`環境を実装.
+ - パッケージを読み込んでいるだけのはやめた.
+* 2017-03-14
+ - いくつかバグを修正.
+ - 和文ファミリを欧文ファミリに従属させるようにした.
+ - `\DeclareBlockHeading`にオプションをたくさん追加.
+ - quote環境などを調整するオプションを追加.
+* 2017-03-20
+ - バグ修正.
+ - `\footnote / \sidenote / \endnote`の周りに必要ならば空白を挿入するようにした.
+* 2017-04-04
+ - バグ修正.
+ - `\DeclarePageStyle`に`tate`と`font`オプションを追加.
+* 2017-04-29
+ - バグ修正
+ - `jafontsize`と`jafontscale`をクラスオプションに,また`\jafontsize`を追加.
+ - `\tatechuyoko`を追加.
+ - クラスオプション`jlreq_warnings`を`jlreq_notes`に変更.
+ - いくつかのクラスオプションを`\jlreqsetup`に移動.
+ - いくつかのオプションを`\jlreqsetup`に追加.
+ - クラスオプションの`paper={<縦>,<横>}`を`paper={<横>,<縦>}`に変更.
+* 2017-06-11
+ - `plext` / `lltjext`の読み込みを中止.
+ - `\DeclareBlockHeading`に`align`を追加.`indent=center`や`end_indent=center`を廃止.
+ - 一部の`\kcatcode` (upLaTeX時) を変更.
+* 2017-08-13
+ - `column_spanning`を`\DeclareBlockHeading`に追加.
+ - ページレイアウトにおける「本文の長さ」に傍注の長さを入れるようにした.
+ - 傍注の長さのデフォルトを0とした.
+ - 傍注の長さが0の時には`\sidenote`を定義しないようにした.
+ - 和字間隔を挿入する命令を追加.
+* 2017-08-29
+ - 縦書きでも著者名が横書きで出てしまうバグを修正.
+* 2017-11-23
+ - バグ修正
+ - `\SetBlockHeadingSpaces`を追加.
+ - `\contentsname` と `\indexname`に入っていたスペースを削除.
+* 2017-12-02
+ - バグ修正
+* 2017-12-22
+ - JFMを改善.
+ - 別行見出しの間の`\label`の検出方法を変更.
+ - `\theequation`,`\thefigure`,`\thetable`に章番号を追加.
+* 2018-02-01
+ - 縦書きの傍注は奇数ページにのみ出るようにした(改善の余地ありかも).
+ - LuaTeX時に`\fnfixbottomtrue`を追加.
+ - キャプション関係のオプションを`\jlreqsetup`に追加.
+ - `itemization_beforeafter_space`を拡張.
+ - バグ修正.
+* 2018-04-11
+ - 縦書き二段組みの傍注を下段に出すようにした.
+ - `begin_width_(odd|even)_page`を`\DeclareBlockHeading`に追加.
+ - `\labelenumi`らをjarticleなどにあわせた.
+ - `column_gap`クラスオプションを使うとコンパイルできなかったバグ修正.
+ - `mark_format`を`\DeclarePageStyle`に追加.
+* 2018-05-19
+ - 目次内のラベルの長さを今までよりも長くした.
+ - 一部のマクロをjlreq-helpers.styに分離した.
+ - バグ修正.
+* 2018-06-17
+ - シリーズbもゴシックにするようにした.
+ - バグ修正.
+* 2018-08-08
+ - `\DeclarePageStyle`に`nombre_ii`等を追加.
+ - バグ修正.
+ - `\jlreqsetup`に`footnote_second_indent`と`endnote_second_indent`を追加.
+* 2018-08-15
+ - バグ修正.
+* 2018-09-01
+ - `\mag`が`1000`でない場合も動くようにした(つもり).
+ - バグ修正.
+* 2018-12-10
+ - 見出し命令を作る命令に`number=[true/false]`を追加.
+ - `\frontmatter`等の挙動を設定できるようにした.
+ - `\jlreqHeadingLabel`等を扉見出しと別行見出しの`format`内で使えるようにした.
+ - バグ修正
+* 2019-01-15
+ - `\NewPageStyle`に`nombre_font`などを追加.`font`もまだ有効だが以降非推奨とする.
+ - `\NewBlockHeading`の`format`に`#1`が含まれてもエラーが起こらないようにした.
+ - `\jlreqsetup`の`caption_label_format`などを拡張.
+ - バグ修正.
+* 2019-04-01
+ - 逆ノンブルを利用可能にするクラスオプション`use_reverse_pagination`を追加.
+ - `zref`パッケージの利用をやめた.
+ - 新元号を追加.
+ - バグ修正.
+* 2019-05-07
+ - わずかな誤差で行数が減ってしまうのを防ぐために,`\textwidth`と`\textheight`を少しだけ増やした.
+ - `\DeclarePageStyle`内の`running_head_ii`などの実装を変更.
+ - バグ修正
+
+
+--------------
+Noriyuki Abe
+https://github.com/abenori/jlreq
diff --git a/language/japanese/jlreq/README-template.html b/language/japanese/jlreq/README-template.html
new file mode 100644
index 0000000000..ac39350120
--- /dev/null
+++ b/language/japanese/jlreq/README-template.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html$if(lang)$ lang="$lang$"$endif$>
+<head>
+ <meta charset="utf-8">
+ <meta name="generator" content="pandoc">
+ <title>$title$</title>
+ <style>
+ .markdown-body {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ background-color: white;
+ padding: 30px;
+ line-height: 170%;
+ }
+ h1{
+ font-size: 200%;
+ }
+ h2{
+ border-style: solid;
+ border-width: 0 0 0.1em 0em;
+ padding: 0 0 0.2em 0em;
+ border-color: #EEEEEE;
+ margin-top: 2em;
+ }
+ h3{
+ border-style: solid;
+ border-width: 0 0 0 0.5em;
+ padding: 0 0 0 0.5em;
+ border-color: #EEEEEE;
+ margin-top: 2em;
+ }
+ code{
+ white-space: pre;
+ font-weight: normal;
+ background-color: #F4F4F4;
+ border-color: #F4F4F4;
+ border-style: solid;
+ border-width: .2em .5em;
+ border-radius: .2em;
+ }
+ pre{
+ background-color: #F8F8F8;
+ border-color: #F8F8F8;
+ border-width: 1em;
+ border-style: solid;
+ border-radius: .5em;
+ padding: 0;
+ margin: 0;
+ line-height: 130%;
+ }
+ pre code{
+ background-color: #F8F8F8;
+ border-style: none;
+ }
+$if(highlighting-css)$
+ div.sourceCode { overflow-x: auto; text-indent: 0em;}
+ code span.kw { color: #007020; font-weight: bold; } /* Keyword */
+ code span.dt { color: #902000; } /* DataType */
+ code span.dv { color: #40a070; } /* DecVal */
+ code span.bn { color: #40a070; } /* BaseN */
+ code span.fl { color: #40a070; } /* Float */
+ code span.ch { color: #4070a0; } /* Char */
+ code span.st { color: #4070a0; } /* String */
+ code span.co { color: #008000; } /* Comment */
+ code span.ot { color: #007020; } /* Other */
+ code span.al { color: #ff0000; font-weight: bold; } /* Alert */
+ code span.fu { color: #0040FF; } /* Function */
+ code span.er { color: #ff0000; font-weight: bold; } /* Error */
+ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
+ code span.cn { color: #880000; } /* Constant */
+ code span.sc { color: #4070a0; } /* SpecialChar */
+ code span.vs { color: #4070a0; } /* VerbatimString */
+ code span.ss { color: #bb6688; } /* SpecialString */
+ code span.im { } /* Import */
+ code span.va { color: #19177c; } /* Variable */
+ code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
+ code span.op { color: #666666; } /* Operator */
+ code span.bu { color: #0040FF; } /* BuiltIn */
+ code span.ex { } /* Extension */
+ code span.pp { color: #bc7a00; } /* Preprocessor */
+ code span.at { color: #7d9029; } /* Attribute */
+ code span.do { color: #ba2121; font-style: italic; } /* Documentation */
+ code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
+ code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
+ code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
+$endif$
+ </style>
+</head>
+<body>
+<article class="markdown-body">
+$body$
+</article>
+</body>
+</html>
diff --git a/language/japanese/jlreq/README-template.tex b/language/japanese/jlreq/README-template.tex
new file mode 100644
index 0000000000..f8b87bf115
--- /dev/null
+++ b/language/japanese/jlreq/README-template.tex
@@ -0,0 +1,68 @@
+\documentclass[paper=a4,fontsize=11pt,jafontscale=0.92,lualatex]{jlreq}
+\usepackage[jfm_yoko=jlreq,jfm_tate=jlreqv,hiragino-pron,nfssonly]{luatexja-preset}
+\usepackage[unicode=true]{hyperref}
+\hypersetup{pdfborder={0 0 0},breaklinks=true,colorlinks=true,linkcolor=blue,urlcolor=blue}
+\usepackage[T1]{fontenc}
+\newcommand{\tightlist}{}
+\setlength{\parindent}{0pt}
+\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
+\renewcommand{\thesection}{}
+\renewcommand{\thesubsection}{\arabic{subsection}}
+\ModifyHeading{section}{font={\Huge\bfseries\sffamily},indent=0pt,after_label_space=0pt}
+\ModifyHeading{paragraph}{indent=0pt}
+% \ttfamilyを戻す
+\makeatletter
+\DeclareRobustCommand\ttfamily{\not@math@alphabet\ttfamily\mathtt\romanfamily\ttdefault\selectfont}
+\makeatother
+\ltjsetparameter{alxspmode={`\\,allow}}
+\ltjsetparameter{alxspmode={`*,allow}}
+\usepackage{xcolor}
+\usepackage{fancyvrb}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins}
+\usepackage{moreverb}
+\renewenvironment{verbatim}{\begingroup\tcbverbatimwrite{\jobname.tmp}}
+{\endtcbverbatimwrite\endgroup
+\begin{Shaded}
+\verbatimtabinput{\jobname.tmp}
+\end{Shaded}
+}
+\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
+\newtcolorbox{Shaded}{colframe=white,beforeafter skip=1\zw}
+\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
+\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
+\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
+\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
+\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
+\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
+\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
+\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
+\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
+\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
+\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
+\newcommand{\ImportTok}[1]{#1}
+\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{#1}}
+\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{#1}}
+\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{#1}}}
+\newcommand{\CommentVarTok}[1]{\textcolor[HTML]{008000}{\textbf{#1}}}
+\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
+\newcommand{\FunctionTok}[1]{\textcolor[HTML]{0040FF}{#1}}
+\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
+\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
+\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
+\newcommand{\BuiltInTok}[1]{\textcolor[HTML]{0040FF}{#1}}
+\newcommand{\ExtensionTok}[1]{#1}
+\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
+\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
+\newcommand{\RegionMarkerTok}[1]{#1}
+\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
+\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
+\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
+\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
+\newcommand{\NormalTok}[1]{#1}
+
+%\setcounter{secnumdepth}{0}
+
+\begin{document}
+$body$
+\end{document}
diff --git a/language/japanese/jlreq/README.md b/language/japanese/jlreq/README.md
new file mode 100644
index 0000000000..8d8b287954
--- /dev/null
+++ b/language/japanese/jlreq/README.md
@@ -0,0 +1,122 @@
+# jlreq
+
+## What is this?
+This package provides the class file and JFM (Japanese font metric) files for LuaTeX-ja / pLaTeX / upLaTeX. This aims to implement [Requirements for Japanese Text Layout](https://www.w3.org/TR/jlreq/).
+
+## Installation
+Run `make` to generate JFM files. Move the files as follows:
+
+* *.tfm -> $TEXMF/fonts/tfm/public/jlreq
+* *.vf -> $TEXMF/fonts/vf/public/jlreq
+* jfm-jlreq.lua, jfm-jlreqv.lua -> $TEXMF/tex/luatex/jlreq
+* jlreq.cls, jlreq-helpers.sty -> $TEXMF/tex/latex/jlreq
+
+The other way to install is just to run `make install`. It will install all files in `$TEXMFHOME`.
+
+## Usage
+See [README-ja.md](README-ja.md) (in Japanese).
+
+## LICENSE
+This package is distributed under the BSD 2-Clause License. See [LICENSE](LICENSE).
+
+## CHANGELOG
+* 2017-02-08
+ - First release.
+* 2017-02-17
+ - Fixed bugs.
+ - Implement `abstract` environment.
+ - Changed/Added some keys to class option/`\jlreqsetup`
+ - Stopped to load `pxrubirica`, `luatexja-ruby` and `nidanfloat`.
+* 2017-03-14
+ - Fixed bugs.
+ - `\sffamily` etc. also change the Japanese font family.
+ - Added many options to `\DeclareBlockHeading`.
+ - Some options related to `quote` environment etc.
+* 2017-03-20
+ - Fixed bugs.
+ - Insert some spaces around `\footnote / \sidenote / \endnote`.
+* 2017-04-04
+ - Fixed a bug.
+ - Added options `tate` and `font` to `\DeclarePageStyle`.
+* 2017-04-29
+ - Fixed bugs.
+ - Added `jafontsize` and `jafontscale` options and `\jafontsize`.
+ - Added `\tatechuyoko`.
+ - `jlreq_warnings` -> `jlreq_notes` (class option).
+ - Moved some class options to `\jlreqsetup`.
+ - Added some options to `\jlreqsetup`.
+ - `paper={<height>,<width>}` -> `paper={<width>,<height>}`.
+* 2017-06-11
+ - Stopped to load `plext` and `lltjext`.
+ - Added `align` to `\DeclareBlockHeading` and delete `indent=center`, `end_indent=center`.
+ - Changed `\kcatcode` for some characters (upLaTeX).
+* 2017-08-13
+ - Added `column_spanning` to `\DeclareBlockHeading`.
+ - Sidenotes are a part of the main text now.
+ - Changed the default length of sidenotes to 0.
+ - jlreq does not define `\sidenote` if the length for sidenotes is zero.
+ - Added a command for the full-width ideographic space.
+* 2017-08-29
+ - Fixed a bug.
+* 2017-11-23
+ - Fixed bugs.
+ - Added `\SetBlockHeadingSpaces`.
+ - Removed a space from `\contentsname` and `\indexname`.
+* 2017-12-02
+ - Fixed bugs.
+* 2017-12-22
+ - Improved JFM.
+ - Change the way to detect `\label` between block headings.
+ - Added chapter number to `\theequation`,`\thefigure`,`\thetable`.
+* 2018-02-01
+ - Sidenotes appears only odd pages in `tate` mode.
+ - Added `\fnfixbottomtrue` for LuaLaTeX.
+ - Added some options related to captions.
+ - Extended `itemization_beforeafter_space`.
+ - Fixed bugs.
+* 2018-04-11
+ - Sidenotes (`\footnote`) appears in the second column in `tate` mode.
+ - Added options `begin_widh_(odd|even)_page` to `\DeclareBlockHeading`.
+ - Changed `\labelenumi` as in `jarticle` etc.
+ - Fix a bug on `column_gap` class option.
+ - Added `mark_format` to `\DeclarePageStyle`.
+* 2018-05-19
+ - Made the width of the label in the table of contents longer.
+ - Moved some macros to jlreq-helpers.sty
+ - Fixed bugs.
+* 2018-06-17
+ - Gothic font is attached to font shape 'b'.
+ - Fixed bugs.
+* 2018-08-08
+ - Added `nombre_ii` etc. to `\DeclarePageStyle`.
+ - Fixed bugs.
+ - Added `footnote_second_indent` and `endnote_second_indent` to `\jlreqsetup`.
+* 2018-08-15
+ - Fixed bugs.
+* 2018-09-01
+ - jlreq works with unusual `\mag`.
+ - Fixed bugs.
+* 2018-12-10
+ - Added `number=[true/false]` to `\New***Heading`.
+ - Added options for `\frontmatter` etc in `\jlreqsetup`.
+ - Made `\jlreqHeadingLabel` etc available in `format` in `\NewTobiraHeading` and `\NewBlockHeading`.
+ - Fixed bugs.
+* 2019-01-15
+ - Added `nombre_font` etc to `\NewPageStyle`. `font` is deprecated.
+ - `format` without `#1` is allowed in `\NewBlockHeading`.
+ - Extended `caption_label_format` etc. in `\jlreqsetup`.
+ - Fixed bugs.
+* 2019-04-01
+ - Added `use_reverse_pagination` to the class option.
+ - Stopped to use `zref` package.
+ - New regnal year.
+ - Fixed bugs.
+* 2019-05-07
+ - Added a small length to `\textwidth` and `\textheight'.
+ - Changed the implementation of `running_head_ii` etc. in `\DeclarePageStyle`.
+ - Fixed bugs.
+
+
+--------------
+Noriyuki Abe
+https://github.com/abenori/jlreq
diff --git a/language/japanese/jlreq/jfm-jlreq.lua b/language/japanese/jlreq/jfm-jlreq.lua
new file mode 100644
index 0000000000..b5e2342b6c
--- /dev/null
+++ b/language/japanese/jlreq/jfm-jlreq.lua
@@ -0,0 +1,1195 @@
+--[[
+3.1.3
+3.1.6.a
+]]
+
+--[[
+優先順位は,第n段階を3 - nに対応させる.
+ 段階 1, 2, 3, 4, 5, 6
+priority 2, 1, 0,-1,-2,-3
+xkanjiskipは{1,-3},kanjiskip={0,0}
+\ltjsetparameter{stretch_priority={kanjiskip=1,xkanjiskip=-3}}
+\ltjsetparameter{stretch_priority={kanjiskip=0,xkanjiskip=0}}
+]]
+
+local stretch_width = 0.25 -- 空き第四段階の空き量
+
+local hyphen_glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, stretch_width, 0, priority = {-1,0}},
+ [9] = {0, 0, 0},
+ [10] = {0, 0, 0},
+ [11] = {0, 0, 0},
+ [12] = {0, stretch_width, 0, priority = {-1,0}},
+ [13] = {0, stretch_width, 0, priority = {-1,0}},
+ [14] = {0, stretch_width, 0, priority = {-1,0}},
+ [15] = {0, stretch_width, 0, priority = {-1,0}},
+ [16] = {0, stretch_width, 0, priority = {-1,0}},
+ [0] = {0, stretch_width, 0, priority = {-1,0}},
+ [27] = {0, stretch_width, 0, priority = {-1,0}},
+--[[
+ [20] = {0, 0, 0},
+ [21] = {0, 0, 0},
+ [22] = {0, 0, 0},
+ [23] = {0, 0, 0},
+ [24] = {0, 0, 0},
+ [25] = {0, 0, 0},
+ [26] = {0, 0, 0},
+ [28] = {0, 0, 0},
+ [29] = {0, 0, 0},
+ [30] = {0, 0, 0},
+]]
+}
+
+local jfm = {
+ dir = 'yoko',
+ zw = 1.0,
+ zh = 1.0,
+ version = 3,
+ -- 文字クラス4,9,10,11,15,16,19との間は(x)kanjiskipで調整する.
+ kanjiskip = {0, 0.25, 0},
+ xkanjiskip = {0.25, 0.25, 0.125},
+
+ -- alignは適当
+ [1] = { -- 初め括弧類
+ chars = {'(', '〔', '[', '{', '〈', '《', '「', '『', '【', '⦅', '〘', '〖', '«', '〝',
+ '‘', '“'},
+ width = 0.5,height = 0.88,depth = 0.12,
+ align = 'right',
+ glue = {
+ [1] = {0, 0, 0},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0, 0},
+ [9] = {0, 0, 0},
+ [10] = {0, 0, 0},
+ [11] = {0, 0, 0},
+ [12] = {0, 0, 0},
+ [13] = {0, 0, 0},
+ [14] = {0, 0, 0},
+ [15] = {0, 0, 0},
+ [16] = {0, 0, 0},
+ [0] = {0, 0, 0},
+ [27] = {0, 0, 0},
+--[[
+ [20] = {0, 0, 0},
+ [21] = {0, 0, 0},
+ [22] = {0, 0, 0},
+ [23] = {0, 0, 0},
+ [24] = {0, 0, 0},
+ [25] = {0, 0, 0},
+ [26] = {0, 0, 0},
+ [28] = {0, 0, 0},
+ [29] = {0, 0, 0},
+ [30] = {0, 0, 0},
+ -- [22][23] 注1
+ ]]
+ },
+ },
+
+ [2] = { -- 終わり括弧類
+ chars = { ')', '〕', ']', '}', '〉', '》', '」', '』', '】', '⦆', '〙', '〗', '»', '〟',
+ '’', '”'},
+ width = 0.5,height = 0.88,depth = 0.12,
+ align = 'left',
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [301] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [302] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [4] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [9] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [10] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [11] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [12] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [13] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [14] = {0, stretch_width, 0, priority = {-1,0}},
+ [15] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [16] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [0] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [27] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [22] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [23] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [24] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [25] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [26] = {0.5, 0, 0, ratio = 0, priority = {0,-2}},
+ [28] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [29] = {0, 0, 0},
+ [30] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ ]]
+ },
+ end_adjust = {0.5,0},
+ },
+
+ -- [3*]はハイフン類.幅が違うので分ける.
+ [300] = {
+ chars = {'‐'},
+ width = 0.25,height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = hyphen_glue,-- 上の方で定義
+ },
+
+ [301] = {
+ chars = {'゠', '–'},
+ width = 0.5,height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = hyphen_glue,
+ },
+
+ [302] = {
+ chars = {'〜'},
+ width = 1,height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = hyphen_glue,
+ },
+
+ [4] = { -- 区切り約物
+ chars = {'!', '?', '‼', '⁇', '⁈', '⁉'},
+ width = 1,height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, stretch_width, 0.25, ratio = 1, priority = {-1,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, stretch_width, 0, priority = {-1,0}},
+ [9] = {0, 0, 0},
+ [10] = {0, 0, 0},
+ [11] = {0, 0, 0},
+ [12] = {0, stretch_width, 0, priority = {-1,0}},
+ [13] = {0, stretch_width, 0, priority = {-1,0}},
+ [14] = {0, stretch_width, 0, priority = {-1,0}},
+ [15] = {0, stretch_width, 0, priority = {-1,0}},
+ [16] = {0, stretch_width, 0, priority = {-1,0}},
+ [0] = {0, stretch_width, 0, priority = {-1,0}},
+-- [27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [22] = {0, 0, 0},
+ [23] = {0, 0, 0},
+ [24] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [25] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ [28] = {0, 0, 0},
+ [29] = {0, 0, 0},
+ [30] = {0, 0, 0},
+ ]]
+ },
+ },
+
+ [5] = { -- 中点類
+ chars = {'・', ':',
+ ';'
+ },
+ width = 0.5,height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = {
+ [1] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
+ [2] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [300] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [301] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [302] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [4] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [5] = {0.5, 0, 0.5, ratio = 0.5, priority = {0,-1}},
+ [6] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [7] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [8] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
+ [9] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [10] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [11] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [12] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
+ [13] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
+ [14] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
+ [15] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
+ [16] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
+ [0] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
+ [27] = {0.25, stretch_width, 0.25, ratio = 0, priority = {-1,-1}},
+ --[[
+ [20] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [21] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [22] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [23] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [24] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [25] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [26] = {0.25, 0, 0, ratio = 0, priority = {0,-1}},
+ [28] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [29] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ [30] = {0.25, 0, 0.25, ratio = 0, priority = {0,-1}},
+ ]]
+ },
+ end_adjust = {0.25,0}, -- 0.25 -> 0は詰め,優先順位は第三段階
+ },
+
+ [6] = { -- 句点類
+ chars = {'。',
+ '.'}, -- 縦書きでは使わない
+ width = 0.5,height = 0.88,depth = 0.12,
+ align = 'left',
+ glue = {
+ [1] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
+ [2] = {0, 0, 0},
+ [300] = {0.5, 0, 0, ratio = 0},
+ [301] = {0.5, 0, 0, ratio = 0},
+ [302] = {0.5, 0, 0, ratio = 0},
+ [4] = {0.5, 0, 0, ratio = 0},
+ [5] = {0.75, 0, 0.25, ratio = 0.33333333, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
+ [9] = {0.5, 0, 0, ratio = 0},
+ [10] = {0.5, 0, 0, ratio = 0},
+ [11] = {0.5, 0, 0, ratio = 0},
+ [12] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
+ [13] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
+ [14] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
+ [15] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
+ [16] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
+ [0] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
+ [27] = {0.5, stretch_width, 0, ratio = 0, priority = {-1,0}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0.5, 0, 0, ratio = 0},
+ [22] = {0.5, 0, 0, ratio = 0},
+ [23] = {0.5, 0, 0, ratio = 0},
+ [24] = {0.5, 0, 0, ratio = 0},
+ [25] = {0.5, 0, 0, ratio = 0},
+ [26] = {0.5, 0, 0, ratio = 0},
+ [28] = {0.5, 0, 0, ratio = 0},
+ [29] = {0.5, 0, 0, ratio = 0},
+ [30] = {0.5, 0, 0, ratio = 0},
+ ]]
+ },
+ end_adjust = {0.5, 0},
+ },
+
+ [7] = { -- 読点類
+ chars = {'、',
+ ','}, -- 縦書きでは使わない
+ width = 0.5,height = 0.88,depth = 0.12,
+ align = 'left',
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [301] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [302] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [4] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [5] = {0.75, 0, 0.75, ratio = 0.33333333, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [9] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [10] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [11] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [12] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [13] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [14] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [15] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [16] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [0] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ [27] = {0.5, stretch_width, 0.5, ratio = 0, priority = {-1,-2}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [22] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [23] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [24] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [25] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [26] = {0.5, 0, 0, ratio = 0, priority = {0,-2}},
+ [28] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [29] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ [30] = {0.5, 0, 0.5, ratio = 0, priority = {0,-2}},
+ ]]
+ },
+ end_adjust = {0.5, 0},
+ },
+
+ [8] = { -- 分離禁止文字
+ chars = {'—', '…', '‥', '〳', '〴', '〵'},
+ width = 1,height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0, 0}, -- 空き注4
+-- [9] = {0, 0.25, 0, priority = {0,0}},
+-- [10] = {0, 0.25, 0, priority = {0,0}},
+-- [11] = {0, 0.25, 0, priority = {0,0}},
+-- [12] = {0, 0.25, 0, priority = {0,0}},
+-- [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+-- [15] = {0, 0.25, 0, priority = {0,0}},
+-- [16] = {0, 0.25, 0, priority = {0,0}},
+ [0] = {0, 0.25, 0, priority = {0,0}},
+ [27] = {0, 0.25, 0, priority = {0,0}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0, 0.25, 0, priority = {0,0}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0, 0, 0},
+ [25] = {0, 0, 0},
+ [26] = {0, 0, 0},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ ]]
+ },
+ },
+
+ [9] = { -- 繰返し記号
+ chars = {'ヽ', 'ヾ', 'ゝ', 'ゞ', '々', '〻'},
+ height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, stretch_width, 0, priority = {-1,0}},
+-- [9] = {0, 0.25, 0, priority = {0,0}},
+-- [10] = {0, 0.25, 0, priority = {0,0}},
+-- [11] = {0, 0.25, 0, priority = {0,0}},
+-- [12] = {0, 0.25, 0, priority = {0,0}},
+-- [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, stretch_width, 0, priority = {-1,0}},
+-- [15] = {0, 0.25, 0, priority = {0,0}},
+-- [16] = {0, 0.25, 0, priority = {0,0}},
+-- [0] = {0, 0.25, 0, priority = {0,0}},
+-- [27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [25] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ ]]
+ },
+ },
+
+ [10] = { -- 長音記号
+ chars = {'ー'},
+ height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, stretch_width, 0, priority = {-1,0}},
+-- [9] = {0, 0.25, 0, priority = {0,0}},
+-- [10] = {0, 0.25, 0, priority = {0,0}},
+-- [11] = {0, 0.25, 0, priority = {0,0}},
+-- [12] = {0, 0.25, 0, priority = {0,0}},
+-- [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, stretch_width, 0, priority = {-1,0}},
+-- [15] = {0, 0.25, 0, priority = {0,0}},
+-- [16] = {0, 0.25, 0, priority = {0,0}},
+-- [0] = {0, 0.25, 0, priority = {0,0}},
+-- [27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [25] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ ]]
+ },
+ },
+
+ [11] = { -- 小書きの仮名
+ chars = {'ぁ', 'ぃ', 'ぅ', 'ぇ', 'ぉ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'っ', 'ゃ', 'ゅ', 'ょ', 'ゎ', 'ゕ', 'ゖ', 'ッ', 'ャ', 'ュ', 'ョ', 'ヮ', 'ヵ', 'ヶ', 'ㇰ', 'ㇱ', 'ㇲ', 'ㇳ', 'ㇴ', 'ㇵ', 'ㇶ', 'ㇷ', 'ㇸ', 'ㇹ', 'ㇺ', 'ㇻ', 'ㇼ', 'ㇽ', 'ㇾ', 'ㇿ', 'ㇷ゚'},
+ height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, stretch_width, 0, priority = {-1,0}},
+-- [9] = {0, 0.25, 0, priority = {0,0}},
+-- [10] = {0, 0.25, 0, priority = {0,0}},
+-- [11] = {0, 0.25, 0, priority = {0,0}},
+-- [12] = {0, 0.25, 0, priority = {0,0}},
+-- [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, stretch_width, 0, priority = {-1,0}},
+-- [15] = {0, 0.25, 0, priority = {0,0}},
+-- [16] = {0, 0.25, 0, priority = {0,0}},
+-- [0] = {0, 0.25, 0, priority = {0,0}},
+-- [27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0, 0.125, ratio = 0, priority = {1,-3}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0.25, 0, 0.125, ratio = 0, priority = {1,-3}},
+ [25] = {0.25, 0, 0.125, ratio = 0, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ ]]
+ },
+ },
+
+ [12] = { -- 前置省略記号
+ chars = {'¥', '$', '£', '#', '€', '№'},
+ height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = {
+ [1] = {0.5, 0, 0.5, ratio = 1, priority = {0,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+-- [8] = {0, 0.25, 0, priority = {0,0}},
+-- [9] = {0, 0.25, 0, priority = {0,0}},
+-- [10] = {0, 0.25, 0, priority = {0,0}},
+-- [11] = {0, 0.25, 0, priority = {0,0}},
+-- [12] = {0, 0.25, 0, priority = {0,0}},
+-- [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+-- [15] = {0, 0.25, 0, priority = {0,0}},
+-- [16] = {0, 0.25, 0, priority = {0,0}},
+ [0] = {0, 0.25, 0, priority = {0,0}},
+ [27] = {0, 0.25, 0, priority = {0,0}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0, 0.25, 0, priority = {0,0}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0, 0, 0},
+ [25] = {0, 0.25, 0, priority = {0,0}},
+ [26] = {0, 0, 0},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ ]]
+ },
+ },
+
+ [13] = { -- 後置省略記号
+ chars = {'°', '′', '″', '℃', '¢', '%', '‰', '㏋', 'ℓ', '㌃', '㌍', '㌔', '㌘', '㌢', '㌣', '㌦', '㌧', '㌫', '㌶', '㌻', '㍉', '㍊', '㍍', '㍑', '㍗', '㎎', '㎏', '㎜', '㎝', '㎞', '㎡', '㏄'},
+ height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+-- [8] = {0, 0.25, 0, priority = {0,0}},
+-- [9] = {0, 0.25, 0, priority = {0,0}},
+-- [10] = {0, 0.25, 0, priority = {0,0}},
+-- [11] = {0, 0.25, 0, priority = {0,0}},
+-- [12] = {0, 0.25, 0, priority = {0,0}},
+-- [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, stretch_width, 0, priority = {-1,0}},
+-- [15] = {0, 0.25, 0, priority = {0,0}},
+-- [16] = {0, 0.25, 0, priority = {0,0}},
+ [0] = {0, 0.25, 0, priority = {0,0}},
+ [27] = {0, 0.25, 0, priority = {0,0}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0, 0.25, 0, priority = {0,0}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0, 0.25, 0, priority = {0,0}},
+ [25] = {0, 0.25, 0, priority = {0,0}},
+ [26] = {0, 0, 0},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ ]]
+ },
+ },
+
+ [14] = { -- 和字間隔
+ chars = {' '},
+ align = 'middle',
+ width= 1,height = 0.88,depth = 0.12,
+ glue = {
+ [1] = {0, stretch_width, 0, priority = {-1,0}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, stretch_width, 0, priority = {-1,0}},
+ [9] = {0, 0, 0},
+ [10] = {0, 0, 0},
+ [11] = {0, 0, 0},
+ [12] = {0, stretch_width, 0, priority = {-1,0}},
+ [13] = {0, stretch_width, 0, priority = {-1,0}},
+ [14] = {0, stretch_width, 0, priority = {-1,0}},
+ [15] = {0, stretch_width, 0, priority = {-1,0}},
+ [16] = {0, stretch_width, 0, priority = {-1,0}},
+ [0] = {0, stretch_width, 0, priority = {-1,0}},
+ [27] = {0, stretch_width, 0, priority = {-1,0}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0, 0, 0},
+ [22] = {0, 0, 0},
+ [23] = {0, 0, 0},
+ [24] = {0, 0, 0},
+ [25] = {0, 0, 0},
+ [26] = {0, 0, 0},
+ [28] = {0, 0, 0},
+ [29] = {0, 0, 0},
+ [30] = {0, 0, 0},
+ ]]
+ },
+ },
+
+ [15] = { -- 平仮名
+ chars = {'あ', 'い', 'う', 'え', 'お', 'か', 'が', 'き', 'ぎ', 'く', 'ぐ', 'け', 'げ', 'こ', 'ご', 'さ', 'ざ', 'し', 'じ', 'す', 'ず', 'せ', 'ぜ', 'そ', 'ぞ', 'た', 'だ', 'ち', 'ぢ', 'つ', 'づ', 'て', 'で', 'と', 'ど', 'な', 'に', 'ぬ', 'ね', 'の', 'は', 'ば', 'ぱ', 'ひ', 'び', 'ぴ', 'ふ', 'ぶ', 'ぷ', 'へ', 'べ', 'ぺ', 'ほ', 'ぼ', 'ぽ', 'ま', 'み', 'む', 'め', 'も', 'や', 'ゆ', 'よ', 'ら', 'り', 'る', 'れ', 'ろ', 'わ', 'ゐ', 'ゑ', 'を', 'ん', 'ゔ', 'か゚', 'き゚', 'く゚', 'け゚', 'こ゚'},
+ height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+-- [8] = {0, 0.25, 0, priority = {0,0}},
+-- [9] = {0, 0.25, 0, priority = {0,0}},
+-- [10] = {0, 0.25, 0, priority = {0,0}},
+-- [11] = {0, 0.25, 0, priority = {0,0}},
+-- [12] = {0, 0.25, 0, priority = {0,0}},
+-- [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+-- [15] = {0, 0.25, 0, priority = {0,0}},
+-- [16] = {0, 0.25, 0, priority = {0,0}},
+-- [0] = {0, 0.25, 0, priority = {0,0}},
+-- [27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [25] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ ]]
+ --[[
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ ]]
+ },
+ },
+
+ [16] = { -- 片仮名
+ chars = {'ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'ガ', 'キ', 'ギ', 'ク', 'グ', 'ケ', 'ゲ', 'コ', 'ゴ', 'サ', 'ザ', 'シ', 'ジ', 'ス', 'ズ', 'セ', 'ゼ', 'ソ', 'ゾ', 'タ', 'ダ', 'チ', 'ヂ', 'ツ', 'ヅ', 'テ', 'デ', 'ト', 'ド', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'バ', 'パ', 'ヒ', 'ビ', 'ピ', 'フ', 'ブ', 'プ', 'ヘ', 'ベ', 'ペ', 'ホ', 'ボ', 'ポ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ヰ', 'ヱ', 'ヲ', 'ン', 'ヴ', 'ヷ', 'ヸ', 'ヹ', 'ヺ', 'カ゚', 'キ゚', 'ク゚', 'ケ゚', 'コ゚', 'セ゚', 'ツ゚', 'ト゚'},
+ height = 0.88,depth = 0.12,
+ align = 'middle',
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+-- [8] = {0, 0.25, 0, priority = {0,0}},
+-- [9] = {0, 0.25, 0, priority = {0,0}},
+-- [10] = {0, 0.25, 0, priority = {0,0}},
+-- [11] = {0, 0.25, 0, priority = {0,0}},
+-- [12] = {0, 0.25, 0, priority = {0,0}},
+-- [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+-- [15] = {0, 0.25, 0, priority = {0,0}},
+-- [16] = {0, 0.25, 0, priority = {0,0}},
+-- [0] = {0, 0.25, 0, priority = {0,0}},
+-- [27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [25] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ ]]
+ --[[
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ ]]
+ },
+ },
+
+ --[[
+ [17] = { -- 等号類
+ chars = {'=', '≠', '≒', '≃', '≅', '≈', '≡', '≢', '<', '>', '≦', '≧', '≪', '≫', '≶', '≷', '⋚', '⋛', '∧', '∨', '⌅', '⌆', '⊂', '⊃', '⊄', '⊅', '⊆', '⊇', '⊊', '⊋', '∈', '∋', '∉', '∪', '∩', '∥', '∦', '⇒', '⇔', '↔', '∽', '∝', '⊥', '⊕', '⊗'},
+ align = 'middle',
+ width = 1,
+ },
+
+ [18] = { -- 演算記号
+ chars = {'+', '-', '×', '÷', '±', '∓'},
+ align = 'middle',
+ width = 1,
+ },
+ ]]
+
+ -- [19] -- 漢字等:「その他の和文」として[0]で扱う
+ [0] = { -- = [19]
+ left = 0,
+ align = 'middle',
+ width = 1,height = 0.88,depth = 0.12,
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+-- [8] = {0, 0.25, 0, priority = {0,0}},
+-- [9] = {0, 0.25, 0, priority = {0,0}},
+-- [10] = {0, 0.25, 0, priority = {0,0}},
+-- [11] = {0, 0.25, 0, priority = {0,0}},
+-- [12] = {0, 0.25, 0, priority = {0,0}},
+-- [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+-- [15] = {0, 0.25, 0, priority = {0,0}},
+-- [16] = {0, 0.25, 0, priority = {0,0}},
+-- [0] = {0, 0.25, 0, priority = {0,0}},
+-- [27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ --[[
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [25] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ ]]
+ },
+ },
+
+
+ --[[
+ [20] = { -- 合印中の文字
+ glue = {
+ [1] = {0,5, 0, 0.5, ratio = 1, priority = {0,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0.25, 0, priority = {0,0}},
+ [9] = {0, 0.25, 0, priority = {0,0}},
+ [10] = {0, 0.25, 0, priority = {0,0}},
+ [11] = {0, 0.25, 0, priority = {0,0}},
+ [12] = {0, 0.25, 0, priority = {0,0}},
+ [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+ [15] = {0, 0.25, 0, priority = {0,0}},
+ [16] = {0, 0.25, 0, priority = {0,0}},
+ [0] = {0, 0.25, 0, priority = {0,0}},
+ [20] = {0, 0, 0},
+ [21] = {0, 0.25, 0, priority = {0,0}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0, 0.25, 0, priority = {0,0}},
+ [25] = {0, 0.25, 0, priority = {0,0}},
+ [26] = {0, 0, 0},
+ [27] = {0, 0.25, 0, priority = {0,0}},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ },
+ },
+
+ [21] = {-- 親文字群中の文字(添え字付き)
+ glue = {
+ [1] = {0,5, 0, 0.5, ratio = 1, priority = {0,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0.25, 0, priority = {0,0}},
+ [9] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [10] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [11] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [12] = {0, 0.25, 0, priority = {0,0}},
+ [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+ [15] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [16] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [0] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [20] = {0, 0, 0},
+ [21] = {0, 0, 0},-- 注9,空け注5
+ [22] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [23] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [24] = {0, 0.25, 0, priority = {0,0}},
+ [25] = {0, 0.25, 0, priority = {0,0}},
+ [26] = {0, 0, 0},
+ [27] = {0, 0.25, 0, priority = {0,0}},
+ [28] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},表6と表3が整合的でない
+ [29] = {0, 0, 0},
+ [30] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ },
+ },
+
+ [22] = { -- 親文字群中の文字(熟語ルビ以外のルビ付き)
+ glue = {
+ [1] = {0,5, 0, 0.5, ratio = 1, priority = {0,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0.25, 0, priority = {0,0}},
+ [9] = {0, 0.25, 0, priority = {0,0}},
+ [10] = {0, 0.25, 0, priority = {0,0}},
+ [11] = {0, 0.25, 0, priority = {0,0}},
+ [12] = {0, 0.25, 0, priority = {0,0}},
+ [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+ [15] = {0, 0.25, 0, priority = {0,0}},
+ [16] = {0, 0.25, 0, priority = {0,0}},
+ [0] = {0, 0.25, 0, priority = {0,0}},
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [22] = {0, 0.25, 0, priority = {0,0}}, -- 空け注10
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [25] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ [27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ },
+ },
+
+ [23] = { -- 親文字群中の文字(熟語ルビ付き)
+ glue = {
+ [1] = {0,5, 0, 0.5, ratio = 1, priority = {0,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0.25, 0, priority = {0,0}},
+ [9] = {0, 0.25, 0, priority = {0,0}},
+ [10] = {0, 0.25, 0, priority = {0,0}},
+ [11] = {0, 0.25, 0, priority = {0,0}},
+ [12] = {0, 0.25, 0, priority = {0,0}},
+ [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+ [15] = {0, 0.25, 0, priority = {0,0}},
+ [16] = {0, 0.25, 0, priority = {0,0}},
+ [0] = {0, 0.25, 0, priority = {0,0}},
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},-- 空け注7
+ [24] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [25] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ [27] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ },
+ },
+
+ [24] = { -- 連数字中の文字
+ chars = {' ', ',', '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'},
+ glue = {
+ [1] = {0,5, 0, 0.5, ratio = 1, priority = {0,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0.25, 0, priority = {0,0}},
+ [9] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [10] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [11] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [12] = {0, 0.25, 0, priority = {0,0}},
+ [13] = {0, 0, 0},-- 空け注8
+ [14] = {0, 0, 0},
+ [15] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [16] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [0] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [20] = {0, 0, 0},
+ [21] = {0, 0.25, 0, priority = {0,0}},
+ [22] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [23] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [24] = {0, 0, 0},
+ [25] = {0.25, 0, 0, ratio = 0},
+ [26] = {0, 0, 0},
+ [27] = {0, 0, 0},-- 空け注9
+ [28] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [29] = {0, 0, 0},
+ [30] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ }
+ },
+
+ [25] = { -- 単位記号中の文字
+ chars = {' ', '(', ')', '/', '1', '2', '3', '4', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'Ω', 'μ', '℧', 'Å', '−', '・'},
+ glue = {
+ [1] = {0,5, 0, 0.5, ratio = 1, priority = {0,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},-- 注12
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0.25, 0, priority = {0,0}},
+ [9] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [10] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [11] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [12] = {0, 0.25, 0, priority = {0,0}},
+ [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+ [15] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [16] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [0] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [20] = {0, 0, 0},
+ [21] = {0, 0.25, 0, priority = {0,0}},
+ [22] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [23] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [24] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [25] = {0, 0, 0},
+ [26] = {0, 0, 0},
+ [27] = {0, 0, 0},
+ [28] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [29] = {0, 0, 0},
+ [30] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ }
+ },
+
+ [26] = { -- 欧文間隔
+ chars = {' '},
+ glue = { -- 表3の方には記述がないのは何故?
+ [1] = {0.5, 0, 0.5, ratio = 1},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0, 0},
+ [9] = {0, 0, 0},
+ [10] = {0, 0, 0},
+ [11] = {0, 0, 0},
+ [12] = {0, 0, 0},
+ [13] = {0, 0, 0},
+ [14] = {0, 0, 0},
+ [15] = {0, 0, 0},
+ [16] = {0, 0, 0},
+ [0] = {0, 0, 0},
+ [21] = {0, 0, 0},
+ [22] = {0, 0, 0},
+ [23] = {0, 0, 0},
+ [24] = {0, 0, 0},
+ [25] = {0, 0, 0},
+ [26] = {0, 0, 0},
+ [27] = {0, 0, 0},
+ [28] = {0, 0, 0},
+ [29] = {0, 0, 0},-- 注13, (空け)注4
+ [30] = {0, 0, 0},
+ }
+ },
+]]
+ [27] = {-- 欧文
+ chars = {'alchar'},
+ glue = {
+ [1] = {0.5, stretch_width, 0.5, ratio = 1, priority = {-1,-2}},
+ [2] = {0, 0, 0},
+ [300] = {0, 0, 0},
+ [301] = {0, 0, 0},
+ [302] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0.25, 0, priority = {0,0}},
+-- [9] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+-- [10] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+-- [11] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [12] = {0, 0.25, 0, priority = {0,0}},
+ [13] = {0, 0.25, 0, priority = {0,0}},-- 空け注10
+ [14] = {0, 0, 0},
+-- [15] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+-- [16] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+-- [0] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+-- [27] = {0, 0, 0, ratio = 0, priority = {1,0}},
+--[[
+ [20] = {0, 0, 0},
+ [21] = {0, 0.25, 0, priority = {0,0}},
+ [22] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [23] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [24] = {0, 0, 0},
+ [25] = {0.25, 0, 0.125, ratio = 0, priority = {0,-1}},
+ [26] = {0, 0, 0},
+ [27] = {0, 0, 0},
+ [28] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+ [29] = {0, 0, 0},
+ [30] = {0.25, 0.25, 0.125, ratio = 0, priority = {1,-3}},
+--]]
+ }
+ },
+--[[
+ [28] = { -- 割注始め括弧類
+ chars = {'(', '〔', '['},
+ glue = {
+ [1] = {0, 0, 0},
+ [2] = {0, 0, 0},
+ [3] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0, 0, 0},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0, 0},
+ [9] = {0, 0, 0},-- 注14
+ [10] = {0, 0, 0},-- 注15
+ [11] = {0, 0, 0},-- 注16
+ [12] = {0, 0, 0},
+ [13] = {0, 0, 0},
+ [14] = {0, 0, 0},
+ [15] = {0, 0, 0},
+ [16] = {0, 0, 0},
+ [0] = {0, 0, 0},
+ [20] = {0, 0, 0},
+ [21] = {0, 0, 0},
+ [22] = {0, 0, 0},
+ [23] = {0, 0, 0},
+ [24] = {0, 0, 0},
+ [25] = {0, 0, 0},
+ [26] = {0, 0, 0}, -- 注13, (空け)注4
+ [27] = {0, 0, 0},
+ [28] = {0, 0, 0},
+ [29] = {0, 0, 0},
+ [30] = {0, 0, 0},
+ }
+ },
+
+ [29] = { -- 割注終わり括弧類
+ chars = {')', '〕', ']'},
+ glue = {
+ [1] = {0.5, 0, 0.5, ratio = 1, priority = {0,-2}},
+ [2] = {0, 0, 0},
+ [3] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0.25, 0, priority = {0,0}},
+ [9] = {0, 0.25, 0, priority = {0,0}},
+ [10] = {0, 0.25, 0, priority = {0,0}},
+ [11] = {0, 0.25, 0, priority = {0,0}},
+ [12] = {0, 0.25, 0, priority = {0,0}},
+ [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+ [15] = {0, 0.25, 0, priority = {0,0}},
+ [16] = {0, 0.25, 0, priority = {0,0}},
+ [0] = {0, 0.25, 0, priority = {0,0}},
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0.25, 0.25, 0.125, ratio = 1}, priority = {1,-3},
+ [25] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ [27] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ }
+ },
+
+ [30] = { -- 縦中横中の文字
+ glue = {
+ [1] = {0.5, 0, 0.5, ratio = 1, priority = {0,-2}},
+ [2] = {0, 0, 0},
+ [3] = {0, 0, 0},
+ [4] = {0, 0, 0},
+ [5] = {0.25, 0, 0.25, ratio = 1, priority = {0,-1}},
+ [6] = {0, 0, 0},
+ [7] = {0, 0, 0},
+ [8] = {0, 0.25, 0, priority = {0,0}},
+ [9] = {0, 0.25, 0, priority = {0,0}},
+ [10] = {0, 0.25, 0, priority = {0,0}},
+ [11] = {0, 0.25, 0, priority = {0,0}},
+ [12] = {0, 0.25, 0, priority = {0,0}},
+ [13] = {0, 0.25, 0, priority = {0,0}},
+ [14] = {0, 0, 0},
+ [15] = {0, 0.25, 0, priority = {0,0}},
+ [16] = {0, 0.25, 0, priority = {0,0}},
+ [0] = {0, 0.25, 0, priority = {0,0}},
+ [20] = {0, 0, 0},
+ [21] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [22] = {0, 0.25, 0, priority = {0,0}},
+ [23] = {0, 0.25, 0, priority = {0,0}},
+ [24] = {0.25, 0.25, 0.125, ratio = 1}, priority = {1,-3},
+ [25] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [26] = {0, 0, 0},
+ [27] = {0.25, 0.25, 0.125, ratio = 1, priority = {1,-3}},
+ [28] = {0, 0.25, 0, priority = {0,0}},
+ [29] = {0, 0, 0},
+ [30] = {0, 0.25, 0, priority = {0,0}},
+ }
+ },
+ ]]
+
+ [90] = { -- 行頭
+ chars = {'parbdd','boxbdd'},
+ glue = {
+ [1] = {0, 0, 0}, -- 行頭括弧はベタ組
+ },
+ },
+}
+
+local function add_space(before,after,glueorkern,space,ratio)
+ if jfm[before][glueorkern] == nil then jfm[before][glueorkern] = {} end
+ if jfm[before][glueorkern][after] == nil then jfm[before][glueorkern][after] = {0} end
+ local origratio = jfm[before][glueorkern][after].ratio
+ if origratio == nil then origratio = 0.5 end
+ jfm[before][glueorkern][after].ratio = (jfm[before][glueorkern][after][1] * origratio + space * ratio) / (jfm[before][glueorkern][after][1] + ratio)
+ jfm[before][glueorkern][after][1] = jfm[before][glueorkern][after][1] + space
+end
+
+if jlreq ~= nil then
+ if type(jlreq.open_bracket_pos) == "string" then
+ local r = jlreq.open_bracket_pos:find("_")
+ local danraku = jlreq.open_bracket_pos:sub(1,r - 1)
+ local orikaeshi = jlreq.open_bracket_pos:sub(r + 1)
+
+ -- 折り返し行頭の開き括弧を二分下げる……つもり
+ if orikaeshi == "nibu" then
+ -- widthを二分増やし,その代わりJFMグルーを二分減らす
+ jfm[1].width = jfm[1].width + 0.5
+ for k,v in pairs(jfm) do
+ if type(k) == "number" then
+ add_space(k,1,"glue",-0.5,1)
+ end
+ end
+ end
+
+ -- 段落行頭の下げ
+ if danraku == "zenkakunibu" then
+ add_space(90,1,"glue",0.5,1)
+ elseif danraku == "nibu" then
+ add_space(90,1,"glue",-0.5,1)
+ end
+ end
+
+ -- ぶら下げ組を有効にする.
+ if jlreq.burasage == true then
+ for _,class in ipairs({6,7}) do
+ table.insert(jfm[class].end_adjust,-0.5)
+ end
+ end
+end
+
+
+luatexja.jfont.define_jfm(jfm)
diff --git a/language/japanese/jlreq/jlreq-helpers.sty b/language/japanese/jlreq/jlreq-helpers.sty
new file mode 100644
index 0000000000..5591c6261b
--- /dev/null
+++ b/language/japanese/jlreq/jlreq-helpers.sty
@@ -0,0 +1,555 @@
+% エンジン非依存のマクロ集
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{jlreq-helpers}[2018/08/15 jlreq-helpers]
+\RequirePackage{xkeyval,etoolbox}
+
+%. helper1
+\newcount\jlreq@tempcnta
+\newcount\jlreq@tempcntb
+\newcount\jlreq@tempcntc
+\newdimen\jlreq@tempdima
+\newdimen\jlreq@tempdimb
+\newdimen\jlreq@tempdimc
+\newskip\jlreq@tempskipa
+\newskip\jlreq@tempskipb
+\newskip\jlreq@tempskipc
+\newif\ifjlreq@tempa
+\newif\ifjlreq@tempb
+\newif\ifjlreq@tempc
+\newbox\jlreq@tempboxa
+\newbox\jlreq@tempboxb
+\newbox\jlreq@tempboxc
+% 計算結果を返すための変数
+\newdimen\jlreq@resultdimen
+\newskip\jlreq@resultskip
+\newbox\jlreq@resultbox
+\newif\ifjlreq@result
+\newcount\jlreq@resultcnt
+
+\def\jlreq@uniqtoken{\jlreq@uniqtoken}
+\def\jlreq@endmark{\jlreq@endmark}
+\long\def\jlreq@deleteuntileendmark#1\jlreq@endmark{}
+
+\def\jlreq@expandafter@ii{\expandafter\expandafter\expandafter}
+\edef\jlreq@expandafter@iii{\expandonce{\jlreq@expandafter@ii}\noexpand\expandafter\expandonce{\jlreq@expandafter@ii}}
+\edef\jlreq@expandtwice#1{\expandonce{\jlreq@expandafter@ii}\noexpand\unexpanded\expandonce{\jlreq@expandafter@ii}{#1}}
+\edef\jlreq@expand@three#1{\expandonce{\jlreq@expandafter@iii}\noexpand\unexpanded\expandonce{\jlreq@expandafter@iii}{#1}}
+
+% \jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@の形で使う
+% 二回展開すると,#1の先頭(ただし空白は無視される)を取り出す.#1が空の場合は\jlreq@uniqtoken,先頭が{の場合は\bgroupとなる
+\def\jlreq@endmark@{\jlreq@endmark@} % \jlreq@getfirsttokenだけのためのendmark
+\long\def\jlreq@getfirsttoken#1#{\jlreq@getfirsttoken@#1\bgroup\jlreq@endmark@}
+\long\def\jlreq@getfirsttoken@#1#2\jlreq@endmark@#3\jlreq@endmark@{#1}
+% 与えられたトークン列が空か(展開はしないでチェック)
+\long\def\jlreq@ifempty#1{\expandafter\ifx\expandafter\relax\detokenize{#1}\relax\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+% #1の先頭トークンが#2か(ただし#1が空ならば#2=\jlreq@uniqtoken,#1={ならば#2=\bgroupでTRUEとなる)
+\long\edef\jlreq@iffirsttoken#1#2{%
+ % スペースチェック
+ \unexpanded{\expandafter\expandafter\expandafter\jlreq@deleteuntileendmark\expandafter\ifx\expandafter}\expandonce{\space}\noexpand\detokenize{#1}\unexpanded{\@undefined\jlreq@endmark\expandafter\@firstoftwo\else\jlreq@endmark\expandafter\@secondoftwo\fi}{%
+ \noexpand\ifx\expandonce{\space}#2\unexpanded{\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}%
+ }{%
+ \noexpand\jlreq@iffirsttoken@ignorespaces{#1}{#2}%
+ }%
+}
+% こちらは先頭のスペースを読み飛ばす
+\long\def\jlreq@iffirsttoken@ignorespaces#1#2{%
+ \expandafter\expandafter\expandafter\ifx\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@#2\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+
+% #1が\jlreq@endmarkか
+\long\def\jlreq@ifendmark#1{\jlreq@iffirsttoken{#1}{\jlreq@endmark}}
+
+% 条件.\jlreq@if{ifnum\@count=1 \fi}{<TRUE>}{<FALSE>}みたいに使う
+\def\jlreq@if@endmark{\jlreq@if@endmark}
+\def\jlreq@if#1{\jlreq@if@#1\jlreq@if@endmark}
+\@gobbletwo\if\if
+\def\jlreq@if@#1\fi\jlreq@if@endmark{#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+
+% #1の先頭が引数なしのマクロか
+\long\def\jlreq@ifmacro@noargument#1{%
+ \jlreq@ifempty{#1}{\@secondoftwo}{%
+ \jlreq@iffirsttoken{#1}{ }{\@secondoftwo}{%
+ \expandafter\expandafter\expandafter\jlreq@ifmacro@noargument@\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@
+}}}
+\long\def\jlreq@ifmacro@noargument@#1{\expandafter\jlreq@ifmacro@noargument@@\expandafter{\meaning #1}}
+\edef\jlreq@do{%
+ \unexpanded{\def\jlreq@ifmacro@noargument@@}##1{\noexpand\jlreq@ifmacro@noargument@@@##1\expandonce{\detokenize{macro:->}}\noexpand\jlreq@endmark}
+ \unexpanded{\def\jlreq@ifmacro@noargument@@@}##1\expandonce{\detokenize{macro:->}}##2\noexpand\jlreq@endmark{\noexpand\jlreq@ifempty{##1}}
+}
+\jlreq@do
+
+% #1(skipレジスタ)が0か(展開不可).
+\newcommand*\jlreq@ifgluezero[1]{%
+ \begingroup
+ \edef\@tempa{\the#1}%
+ \edef\@tempb{\detokenize{0.0pt}}%
+ \edef\jlreq@do{\ifx\@tempa\@tempb\noexpand\@firstoftwo\else\noexpand\@secondoftwo\fi}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+% #1が#2で終わるか(展開不可)
+\newcommand*{\jlreq@ifendswith}[2]{%
+ \jlreq@ifempty{#2}{\@firstoftwo}{%
+ \begingroup
+ \def\jlreq@tempa##1#2\jlreq@uniqtoken##2\jlreq@endmark{%
+ \edef\jlreq@do{\jlreq@ifempty{##2}{\noexpand\@secondoftwo}{\noexpand\@firstoftwo}}%
+ }%
+ \jlreq@tempa#1\jlreq@uniqtoken#2\jlreq@uniqtoken\jlreq@endmark
+ \expandafter\endgroup
+ \jlreq@do
+ }%
+}
+% #1が#2で始まるか(展開不可)
+\newcommand*{\jlreq@ifstartswith}[2]{%
+ \jlreq@ifempty{#2}{\@firstoftwo}{%
+ \jlreq@ifempty{#1}{\@secondoftwo}{%
+ \begingroup
+ \def\jlreq@tempa##1#2##2\jlreq@endmark{%
+ \edef\jlreq@do{\jlreq@ifempty{##1}{\noexpand\@firstoftwo}{\noexpand\@secondoftwo}}%
+ }%
+ \jlreq@tempa#1#2\jlreq@endmark
+ \expandafter\endgroup
+ \jlreq@do
+ }%
+ }%
+}
+% #1が#2を含むか(展開不可){}内に#2があってもFALSE判定.
+\newcommand*{\jlreq@ifcontains}[2]{%
+ \jlreq@ifempty{#2}{\@firstoftwo}{%
+ \begingroup
+ \def\jlreq@tempa##1#2##2\jlreq@endmark{%
+ \edef\jlreq@do{\jlreq@ifempty{##2}{\noexpand\@secondoftwo}{\noexpand\@firstoftwo}}%
+ }%
+ \jlreq@tempa#1#2\jlreq@endmark
+ \expandafter\endgroup
+ \jlreq@do
+ }%
+}
+
+% @removeelementの括弧があっても動くかもしれない版
+% #2から#1を消して#3に入れる
+\newcommand*{\jlreq@helper@removeelement}[3]{%
+ \begingroup
+ \edef\jlreq@tempa{\unexpanded{#1}}% 消したいやつ
+ \def\jlreq@tempb{}% 消していない分を放り込んでいく
+ \jlreq@tempatrue% 最初の\jlreq@tempbへの追加か.
+ \jlreq@helper@removeelement@#2,\jlreq@endmark,%
+ \edef\jlreq@do{\unexpanded{\def#3}{\expandonce{\jlreq@tempb}}}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+\def\jlreq@helper@removeelement@#1,{%
+ \jlreq@ifendmark{#1}{}{%
+ \edef\@tempa{\unexpanded{#1}}%
+ \ifx\jlreq@tempa\@tempa\expandafter\@gobble\else\expandafter\@firstofone\fi{%
+ \eappto\jlreq@tempb{\ifjlreq@tempa\else,\fi\unexpanded{#1}}%
+ \jlreq@tempafalse
+ }%
+ \jlreq@helper@removeelement@
+ }%
+}
+
+% 空白を無視しない\@ifnextchar
+\newcommand{\jlreq@ifnextchar}[3]{%
+ \let\reserved@d=#1%
+ \edef\reserved@a{\unexpanded{#2}}%
+ \edef\reserved@b{\unexpanded{#3}}%
+ \futurelet\jlreq@nextchar\jlreq@ifnextchar@
+}
+\def\jlreq@ifnextchar@{%
+ \ifx\jlreq@nextchar\reserved@d\let\reserved@b\reserved@a\fi
+ \reserved@b
+}
+% 空白を無視しない\@ifsart
+\newcommand*{\jlreq@ifstar}[2]{\jlreq@ifnextchar *{\edef\reserved@a*{\unexpanded{#1}}\reserved@a}{#2}}
+% カンマで区切って,その前と後ろを\jlreq@resulta,\jlreq@resultbに入れる
+% もしカンマがない場合は\ifjlreq@resultがfalseになる.
+\newcommand*{\jlreq@helper@dividebycomma}[1]{\jlreq@helper@dividebycomma@#1,\jlreq@endmark}
+\def\jlreq@helper@dividebycomma@#1,#2\jlreq@endmark{%
+ \jlreq@helper@trim{#1}{\jlreq@resulta}%
+ \jlreq@helper@trim{#2}{\jlreq@resultb}%
+ \jlreq@if{\ifx\jlreq@resultb\@empty\fi}{%
+ \jlreq@resultfalse
+ }{%
+ \jlreq@resulttrue
+ \expandafter\def\expandafter\jlreq@resultb\expandafter{\jlreq@helper@removelastcomma#2\jlreq@endmark}%
+ \expandafter\jlreq@helper@trim\expandafter{\jlreq@resultb}{\jlreq@resultb}%
+ }%
+}
+\def\jlreq@helper@removelastcomma#1,\jlreq@endmark{#1}
+
+% vbox #1の最後を\jlreq@resultboxに入れる
+% #1の最後の行は消える
+\newcommand*{\jlreq@getlastbox}[1]{%
+ \setbox#1=\vbox{\unvbox#1\relax
+ \unskip\unskip\unpenalty\global\setbox\jlreq@resultbox=\lastbox}%
+ \ifhbox\jlreq@resultbox
+ \global\setbox\jlreq@resultbox=\hbox{%
+ \unhbox\jlreq@resultbox\unskip\unskip\unpenalty}%
+ \else
+ \global\setbox\jlreq@resultbox=\copy\voidb@x
+ \fi
+}
+
+% 簡易なkeyvalのパース.
+% \jlreq@parsekeyval*[family=jlreq@key]{ % *ありは\setkeys*を使う
+% {key}{\def\val{#1}}
+% {key1,key2}{\def\val{#1}} % key1=valとkey2=valを受け付けるようになる
+% *{key}{\def\val{#1}} % デフォルト値を空文字列にする
+% {key}[choice1,choice2]{\def\valchoice{#1}}
+%}{parse対象}
+\newcommand*{\jlreq@parsekeyval}{%
+ \@ifstar{\jlreq@helper@parsekeyval@{*}}{\jlreq@helper@parsekeyval@{}}%
+}
+\def\jlreq@helper@parsekeyval@#1{%
+ \@ifnextchar[{\jlreq@helper@parsekeyval@@{#1}}{\jlreq@helper@parsekeyval@@{#1}[jlreq@key]}%
+}
+\long\def\jlreq@helper@parsekeyval@@#1[#2]#3#4{%
+ \begingroup
+ \def\jlreq@do{}% \setkeysの結果処理がここに入れられる(よってループ内で利用不可)
+ \jlreq@helper@parsekeyval@@@{#2}#3{\jlreq@endmark}%
+ \setkeys#1{#2}{#4}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+\def\jlreq@helper@parsekeyval@@@#1#2#{%
+ \jlreq@iffirsttoken@ignorespaces{#2}{*}{%
+ \jlreq@helper@parsekeyval@@@definekeywithdefault{#1}%
+ }{%
+ \jlreq@helper@parsekeyval@@@@{#1}%
+ }%
+}
+\long\def\jlreq@helper@parsekeyval@@@@#1#2{%
+ \jlreq@ifendmark{#2}{}{%
+ \@ifnextchar[{\jlreq@helper@parsekeyval@@@choicekey{#1}{#2}}{\jlreq@helper@parsekeyval@@@definekey{#1}{#2}}%
+ }%
+}
+\long\def\jlreq@helper@parsekeyval@@@choicekey#1#2[#3]#4{%
+ \@for\@tempa:=#2\do{%
+ \edef\jlreq@next{\unexpanded{\define@choicekey{#1}}{\expandonce{\@tempa}}}%
+ \jlreq@next{#3}{\eappto\jlreq@do{\unexpanded{#4}}}%
+ }%
+ \jlreq@helper@parsekeyval@@@{#1}%
+}
+\long\def\jlreq@helper@parsekeyval@@@definekeywithdefault#1#2#3{%
+ \@for\@tempa:=#2\do{%
+ \edef\jlreq@next{\unexpanded{\define@key{#1}}{\expandonce{\@tempa}}}%
+ \jlreq@next[]{\eappto\jlreq@do{\unexpanded{#3}}}%
+ }%
+ \jlreq@helper@parsekeyval@@@{#1}%
+}
+\long\def\jlreq@helper@parsekeyval@@@definekey#1#2#3{%
+ \@for\@tempa:=#2\do{%
+ \edef\jlreq@next{\unexpanded{\define@key{#1}}{\expandonce{\@tempa}}}%
+ \jlreq@next{\eappto\jlreq@do{\unexpanded{#3}}}%
+ }%
+ \jlreq@helper@parsekeyval@@@{#1}%
+}
+
+% キー指定しないkeyval(独自実装)
+% \jlreq@parsekeyval@nokey{<action>}{<parse対象>}
+% action内では#1=key, #2=val
+% \ifjlreq@parsekeyval@nokey@novalue{<true code>}{<false code>}でvalueがないか判定できる.
+% *つきは<parse対象>を一回だけ展開する.
+\def\jlreq@parsekeyval@nokey{\@ifstar{\jlreq@parsekeyval@nokey@{*}}{\jlreq@parsekeyval@nokey@{}}}
+\newcommand{\jlreq@parsekeyval@nokey@}[3]{%
+ \begingroup
+ \long\def\jlreq@do{}%
+ \long\def\jlreq@parsekeyval@nokey@execute##1##2{#2}%
+ \jlreq@ifempty{#1}{%
+ \jlreq@parsekeyval@nokey@i@wuniq\jlreq@uniqtoken#3,\jlreq@endmark,%
+ }{%
+ \expandafter\jlreq@parsekeyval@nokey@i@wuniq\expandafter\jlreq@uniqtoken#3,\jlreq@endmark,%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+\long\def\jlreq@parsekeyval@nokey@i@wuniq#1,{\expandafter\jlreq@parsekeyval@nokey@i\expandafter{\@gobble#1}}
+\long\def\jlreq@parsekeyval@nokey@i#1{\jlreq@ifendmark{#1}{}{\jlreq@parsekeyval@nokey@ii@wuniq\jlreq@uniqtoken#1=\jlreq@endmark}}
+\long\def\jlreq@parsekeyval@nokey@ii@wuniq#1=#2\jlreq@endmark{\expandafter\jlreq@parsekeyval@nokey@ii\expandafter{\@gobble#1}{#2}}%
+\long\def\jlreq@parsekeyval@nokey@ii#1#2{%
+ \jlreq@ifempty{#2}{\jlreq@parsekeyval@nokey@iii{*}{#2}{#1}}{%
+ \edef\jlreq@tempa{%
+ \noexpand\jlreq@parsekeyval@nokey@iii{}{\jlreq@parsekeyval@nokey@removeequal{#2}}{\unexpanded{#1}}%
+ }%
+ \jlreq@tempa
+ }%
+}
+% valueが与えられていない場合は#1=*になる.そうでなければ#1は空
+\long\def\jlreq@parsekeyval@nokey@iii#1#2#3{%
+ \jlreq@remove@spaceandbracket{#2}{\jlreq@tempa}%
+ \jlreq@remove@spaceandbracket{#3}{\jlreq@tempb}%
+ \ifx\jlreq@tempb\@empty\else
+ \edef\@tempa{\noexpand\jlreq@parsekeyval@nokey@iv{#1}{\expandonce{\jlreq@tempb}}{\expandonce{\jlreq@tempa}}}%
+ \@tempa
+ \fi
+ \jlreq@parsekeyval@nokey@i@wuniq\jlreq@uniqtoken
+}
+\long\def\jlreq@parsekeyval@nokey@iv#1#2#3{%
+ \eappto\jlreq@do{%
+ \unexpanded{\let\ifjlreq@parsekeyval@nokey@novalue}\jlreq@ifempty{#1}{\noexpand\@secondoftwo}{\noexpand\@firstoftwo}%
+ \expandonce{\jlreq@parsekeyval@nokey@execute{#2}{#3}}%
+ }%
+}
+\long\def\jlreq@parsekeyval@nokey@removeequal#1{\jlreq@parsekeyval@nokey@removeequal@\jlreq@uniqtoken#1\jlreq@endmark}
+\long\def\jlreq@parsekeyval@nokey@removeequal@#1=\jlreq@endmark{\expandafter\unexpanded\expandafter{\@gobble#1}}
+
+% #1の先頭のスペースを削除し,#2に入れる.
+\long\def\jlreq@helper@trim#1#2{\edef#2{\jlreq@helper@trim@i{#1}}}
+\def\jlreq@do#1{% #1 = " "として後で実行
+ \long\def\jlreq@helper@trim@i##1{%
+ \jlreq@iffirsttoken{##1}{#1}%
+ % 先頭スペースの除去.{}を外さないために\jlreq@uniqtokenを前後にいったん挟む.
+ {\jlreq@helper@trim@ii##1\jlreq@uniqtoken\jlreq@endmark}%
+ % 後方スペースの除去.先頭に\jlreq@uniqtokenを加えて{}が外れるのを防ぐ.
+ {\jlreq@helper@trim@iii\jlreq@uniqtoken##1\jlreq@uniqtoken#1\jlreq@uniqtoken\jlreq@endmark}%
+ }
+ \long\def\jlreq@helper@trim@ii#1##1\jlreq@endmark{%
+ \expandafter\expandafter\expandafter\jlreq@helper@trim@i\jlreq@helper@trim@vi\jlreq@uniqtoken##1\jlreq@endmark
+ }
+ \long\def\jlreq@helper@trim@iii##1#1\jlreq@uniqtoken##2\jlreq@endmark{%
+ \jlreq@ifempty{##2}%
+ {\expandafter\jlreq@helper@trim@iv\jlreq@helper@trim@v##1\jlreq@endmark}%
+ {\jlreq@helper@trim@iii##1\jlreq@uniqtoken#1\jlreq@uniqtoken\jlreq@endmark}%
+ }%
+ \long\def\jlreq@helper@trim@iv##1{\expandafter\unexpanded\expandafter{\@gobble ##1}}
+ \long\def\jlreq@helper@trim@v##1\jlreq@uniqtoken\jlreq@endmark{{##1}}
+ \long\def\jlreq@helper@trim@vi##1\jlreq@uniqtoken\jlreq@endmark{\expandafter{\@gobble ##1}}
+}
+\jlreq@do{ }
+
+\long\def\jlreq@remove@spaceandbracket#1#2{%
+ \begingroup
+ \jlreq@helper@trim{#1}{\jlreq@tempa}%
+ \edef\jlreq@do{\unexpanded{\jlreq@remove@spaceandbracket@{#2}}\expandonce{\jlreq@tempa}\noexpand\jlreq@endmark}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+\long\def\jlreq@remove@spaceandbracket@#1#2\jlreq@endmark{\edef#1{\unexpanded{#2}}}
+
+% \jlreq@switch{str}{
+% {str}{abcd}
+% {str1}{xyz}
+%}[default: input = #1] -> abcd
+%または
+%
+% \jlreq@switch{str}{
+% {str}{abcd}
+% {str1}{xyz}
+% {default} % ここは#1を受け付けない(パラメータトークンを受け付けたい場合のため).
+%} -> abcd
+% strは\edefで展開されるが,\jlreq@switch*の場合は展開されない.
+% 第一引数は\jlreq@tempaに入れておく.
+\long\def\jlreq@helper@switch@executeoption#1[#2]{%
+ \begingroup
+ \def\jlreq@do##1{#2}%
+ \expandafter\endgroup
+ \jlreq@do{#1}%
+}
+\long\def\jlreq@helper@removeoption[#1]{}
+\newcommand{\jlreq@switch}{\@ifstar{\jlreq@switch@{*}}{\jlreq@switch@{}}}
+\newcommand{\jlreq@switch@}[3]{%
+ \begingroup
+ \let\jlreq@do\@undefined
+ \edef\jlreq@tempa{\jlreq@ifempty{#1}{#2}{\unexpanded{#2}}}% ループ中ずっと保存する
+ \jlreq@helper@switch@{#1}#3\jlreq@endmark
+ \ifx\jlreq@do\@undefined
+ \edef\jlreq@do{\unexpanded{\jlreq@ifnextchar[{\jlreq@helper@switch@executeoption{#2}}{}}}%
+ \else
+ \appto\jlreq@do{\@ifnextchar[{\jlreq@helper@removeoption}{}}%
+ \fi
+ \expandafter\endgroup
+ \jlreq@do
+}
+\long\def\jlreq@helper@switch@#1#2{%
+ \jlreq@ifendmark{#2}{}{\jlreq@helper@switch@@{#1}{#2}}%
+}
+
+\long\def\jlreq@helper@switch@@#1#2#3{%
+ \jlreq@ifendmark{#3}{%
+ \edef\jlreq@do{\unexpanded{#2}}%
+ }{%
+ \edef\jlreq@tempb{\jlreq@ifempty{#1}{#2}{\unexpanded{#2}}}%
+ \jlreq@if{\ifx\jlreq@tempa\jlreq@tempb\fi}{%
+ \edef\jlreq@do{\unexpanded{#3}}%
+ \jlreq@deleteuntileendmark
+ }{%
+ \jlreq@helper@switch@{#1}%
+ }%
+ }%
+}
+
+% オレオレラベル……
+% \jlreq@reference@ref{ラベル名}{デフォルト値}
+\def\jlreq@reference@ref#1{\jlreq@if{\expandafter\ifx\csname jlreq@reference@#1\endcsname\fi}{\csname jlreq@reference@#1\endcsname}}
+% \jlreq@reference@label{ラベル名}{値}
+\def\jlreq@reference@label#1#2{\protected@write\@auxout{}{\string\@newl@bel{jlreq@reference}{#1}{#2}}}%
+\def\jlreq@reference@immediate@write#1#2{\immediate\write\@auxout{\string\@newl@bel{jlreq@reference}{#1}{#2}}}%
+\def\jlreq@reference@ifexist#1{\jlreq@if{\expandafter\ifx\csname jlreq@reference@#1\endcsname\fi}}
+
+% 自動生成されるラベル用の番号
+\newcount\jlreq@reference@count
+\jlreq@reference@count=0
+
+% 現在のページを得る
+\newcount\jlreq@currentpage
+\newcommand*{\jlreq@setcurrentpage}{%
+ \global\advance\jlreq@reference@count by 1
+ \jlreq@reference@label{jlreq@currentpage.\the\jlreq@reference@count}{\noexpand\arabic{page}}%
+ \global\jlreq@currentpage=\jlreq@reference@ref{jlreq@currentpage.\the\jlreq@reference@count}{\the\c@page}\relax
+}
+
+% 先頭にあるマクロを展開しまくった結果の先頭を#2に入れる.
+\newcommand{\jlreq@getfirsttoken@expandmacros}[2]{%
+ \jlreq@iffirsttoken{#1}{ }{\def#2{ }}{%
+ \jlreq@ifempty{#1}{\def#2{}}{%
+ \jlreq@ifmacro@noargument{#1}{%
+ \expandafter\jlreq@getfirsttoken@expandmacros\expandafter{#1}{#2}%
+ }{%
+ \expandafter\expandafter\expandafter\jlreq@getfirsttoken@expandmacros@\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@{#2}%
+ }%
+ }%
+ }%
+}
+\def\jlreq@getfirsttoken@expandmacros@#1#2{\def#2{#1}}
+
+\def\jlreq@helper@checktokenlist#1#2{%
+ \jlreq@ifendmark{#2}{\@firstoftwo}%
+ {%
+ \jlreq@if{\ifnum0#1{#2}>0 \fi}%
+ {\jlreq@helper@checktokenlist{#1}}%
+ {\expandafter\@secondoftwo\jlreq@deleteuntileendmark}%
+ }%
+}
+\def\jlreq@helper@chknumlist#1{\ifx#101\fi\ifx#111\fi\ifx#121\fi\ifx#131\fi\ifx#141\fi\ifx#151\fi\ifx#161\fi\ifx#171\fi\ifx#181\fi\ifx#191\fi}
+\def\jlreq@helper@chkfloatlist#1{\jlreq@helper@chknumlist{#1}\ifx#1.1\fi}
+% #1が[0-9\.]*に当てはまるか.
+\newcommand*{\jlreq@iffloat}[1]{\jlreq@helper@checktokenlist{\jlreq@helper@chkfloatlist}#1\jlreq@endmark}
+\newcommand*{\jlreq@ifnumber}[1]{\jlreq@helper@checktokenlist{\jlreq@helper@chknumlist}#1\jlreq@endmark}
+
+% \jlreq@ifprimitive#1#2#3: #1がprimitiveならば#2を,そうでなければ#3を実行する
+% (\if(pdf)primitiveを避けるようにしている.)
+\newcommand*{\jlreq@ifprimitive}[1]{%
+ \begingroup
+ \edef\@tempa{\string#1}%
+ \edef\@tempb{\meaning#1}%
+ \expandafter\endgroup
+ \ifx\@tempa\@tempb\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+
+\newcommand*{\jlreq@helper@guessengine}{%
+ \jlreq@ifprimitive\directlua{%
+ \let\jlreq@result=l%
+ }{%
+ \jlreq@ifprimitive\ucs{%
+ \let\jlreq@result=u%
+ }{%
+ \let\jlreq@result=p%
+ }%
+ }%
+}
+
+% #1を\@undefinedに,既に\@undefinedならば#2{#1}を呼ぶ
+\newcommand*{\jlreq@helper@undefcs}[2]{%
+ \ifundef{#1}{#2{#1}}{\undef{#1}}%
+}
+% \if版
+\newcommand*{\jlreq@helper@undefif}[2]{%
+ \ifundef{#1}{#2{#1}}{%
+ \edef\@tempa{\expandafter\@gobble\string#1}%
+ \edef\@tempa{\expandafter\@gobbletwo\@tempa}%
+ \undef{#1}%
+ \expandafter\undef\expandafter{\csname\@tempa true\endcsname}%
+ \expandafter\undef\expandafter{\csname\@tempa false\endcsname}%
+ }%
+}
+
+% 紙サイズ一覧
+\@namedef{jlreq@helper@papersizelist@a0}{{841mm}{1189mm}}
+\@namedef{jlreq@helper@papersizelist@a1}{{594mm}{841mm}}
+\@namedef{jlreq@helper@papersizelist@a2}{{420mm}{594mm}}
+\@namedef{jlreq@helper@papersizelist@a3}{{297mm}{420mm}}
+\@namedef{jlreq@helper@papersizelist@a4}{{210mm}{297mm}}
+\@namedef{jlreq@helper@papersizelist@a5}{{148mm}{210mm}}
+\@namedef{jlreq@helper@papersizelist@a6}{{105mm}{148mm}}
+\@namedef{jlreq@helper@papersizelist@a7}{{74mm}{105mm}}
+\@namedef{jlreq@helper@papersizelist@a8}{{52mm}{74mm}}
+\@namedef{jlreq@helper@papersizelist@a9}{{37mm}{52mm}}
+\@namedef{jlreq@helper@papersizelist@a10}{{26mm}{37mm}}
+
+\@namedef{jlreq@helper@papersizelist@b0}{{1030mm}{1456mm}}
+\@namedef{jlreq@helper@papersizelist@b1}{{728mm}{1030mm}}
+\@namedef{jlreq@helper@papersizelist@b2}{{515mm}{728mm}}
+\@namedef{jlreq@helper@papersizelist@b3}{{364mm}{515mm}}
+\@namedef{jlreq@helper@papersizelist@b4}{{257mm}{364mm}}
+\@namedef{jlreq@helper@papersizelist@b5}{{182mm}{257mm}}
+\@namedef{jlreq@helper@papersizelist@b6}{{128mm}{182mm}}
+\@namedef{jlreq@helper@papersizelist@b7}{{91mm}{128mm}}
+\@namedef{jlreq@helper@papersizelist@b8}{{64mm}{91mm}}
+\@namedef{jlreq@helper@papersizelist@b9}{{45mm}{64mm}}
+\@namedef{jlreq@helper@papersizelist@b10}{{32mm}{45mm}}
+
+\@namedef{jlreq@helper@papersizelist@c2}{{458mm}{648mm}}
+\@namedef{jlreq@helper@papersizelist@c3}{{324mm}{458mm}}
+\@namedef{jlreq@helper@papersizelist@c4}{{229mm}{354mm}}
+\@namedef{jlreq@helper@papersizelist@c5}{{162mm}{229mm}}
+\@namedef{jlreq@helper@papersizelist@c6}{{114mm}{162mm}}
+\@namedef{jlreq@helper@papersizelist@c7}{{81mm}{114mm}}
+\@namedef{jlreq@helper@papersizelist@c8}{{57mm}{81mm}}
+
+\@namedef{jlreq@helper@papersizelist@a4var}{{210mm}{283mm}}
+\@namedef{jlreq@helper@papersizelist@b5var}{{182mm}{230mm}}
+
+\@namedef{jlreq@helper@papersizelist@letter}{{8.5in}{11in}}
+\@namedef{jlreq@helper@papersizelist@legal}{{8.5in}{14in}}
+\@namedef{jlreq@helper@papersizelist@executive}{{7.25in}{10.5in}}
+\@namedef{jlreq@helper@papersizelist@hagaki}{{100mm}{148mm}}
+
+% #1÷#2を\jlreq@resultdimenに入れる.(#1,#2は寸法を与える.)
+\newcommand*{\jlreq@helper@divide}[2]{%
+ \begingroup
+ \@tempdima=\dimexpr#1\relax\@tempdimb=\dimexpr#2\relax
+ % 分母を正にする
+ \ifdim\@tempdimb<0pt \@tempdima=-\@tempdima\@tempdimb=-\@tempdimb\fi
+ % \jlreq@tempdima*\@tempdimb <= \@tempdima < (\jlreq@tempdima + 1)*\@tempdimb
+ % となる整数\jlreq@tempdimaを捜し,\jlreq@tempdimb=\jlreq@tempdima + 1とする
+ \jlreq@tempdima=0pt
+ \ifdim\@tempdima<0pt
+ \loop\ifdim\strip@pt\jlreq@tempdima\@tempdimb>\@tempdima\advance\jlreq@tempdima by -1pt\repeat
+ \else
+ \loop\ifdim\strip@pt\jlreq@tempdima\@tempdimb<\@tempdima\advance\jlreq@tempdima by 1pt\repeat
+ \ifdim\strip@pt\jlreq@tempdima\@tempdimb=\@tempdima\else\advance\jlreq@tempdima by -1pt\fi
+ \fi
+ \jlreq@tempdimb=\dimexpr\jlreq@tempdima + 1pt\relax
+ % \jlreq@tempdimaと\jlreq@tempdimbで挟んでいく二分法
+ \jlreq@tempcnta=0 % 無限ループを避けるためのカウンタ
+ \loop\ifnum\numexpr\ifdim\dimexpr\jlreq@tempdimb - \jlreq@tempdima\relax>1sp 1\else0\fi*\ifnum\jlreq@tempcnta<100 1\else 0\fi\relax=1
+ \jlreq@tempdimc=\dimexpr(\jlreq@tempdima+\jlreq@tempdimb)/2\relax
+ \ifdim\strip@pt\jlreq@tempdimc\@tempdimb>\@tempdima\jlreq@tempdimb=\jlreq@tempdimc
+ \else\jlreq@tempdima=\jlreq@tempdimc\fi
+ \advance\jlreq@tempcnta by 1
+ \repeat
+ \edef\jlreq@do{\noexpand\jlreq@resultdimen=\the\jlreq@tempdima\noexpand\relax}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\def\jlreq@for@noexpand#1:={\@for#1:=\@empty}
+
+\def\jlreq@helper@swap#1#2{%
+ \let\jlreq@helper@swaptoken=#1%
+ \let#1=#2%
+ \let#2=\jlreq@helper@swaptoken
+ \let\jlreq@helper@swaptoken=\@undefined
+}
+\def\jlreq@helper@swap@register#1#2{%
+ \edef\jlreq@helper@swaptoken{\the#1}%
+ #1=#2%
+ #2=\jlreq@helper@swaptoken\relax
+ \let\jlreq@helper@swaptoken=\@undefined
+}
+
+\endinput
+
diff --git a/language/japanese/jlreq/jlreq-ja.pdf b/language/japanese/jlreq/jlreq-ja.pdf
new file mode 100644
index 0000000000..4febdac26e
--- /dev/null
+++ b/language/japanese/jlreq/jlreq-ja.pdf
Binary files differ
diff --git a/language/japanese/jlreq/jlreq-trimmarks-ja.md b/language/japanese/jlreq/jlreq-trimmarks-ja.md
new file mode 100644
index 0000000000..7531072932
--- /dev/null
+++ b/language/japanese/jlreq/jlreq-trimmarks-ja.md
@@ -0,0 +1,165 @@
+# jlreq-trimmarks
+
+## これは何?
+トンボ(トリムマーク)を出力するためのパッケージです.[LuaTeX-ja](https://osdn.jp/projects/luatex-ja/wiki/FrontPage) / pLaTeX / upLaTeX / dvipdfmx / Dvips / dviout上で動きます.jlreqクラスファイルのみでなく,汎用的に動くように設計されています.以下の機能を提供します.
+
+* トンボの出力
+* 可能な場合には,TrimBox / BleedBoxを設定
+* 紙サイズの設定
+
+なお,本パッケージは[日本語組版処理の要件](https://www.w3.org/TR/jlreq/ja/) (JLReq)とは無縁です.JLReqにはトンボに関する記述はありません.
+
+## インストール
+$TEXMF/tex/latex/jlreq内にjlreq-trimmarks.styとjlreq-helpers.styを配置してください.
+
+
+## 使い方
+ドライバおよびエンジンを指定して`\usepackage`で読み込みます.エンジンは省略が可能です.
+
+````
+\usepackage[dvipdfmx,platex]{jlreq-trimmarks}
+````
+
+なお,クラスファイルの`tombow`オプションは使わないでください.
+
+## ノート
+jlreq-trimmarksは紙サイズを設定しますが,その他のパッケージとの兼ね合いで正しく機能しないことがあります.その際は[bxpapersize](https://github.com/zr-tex8r/BXpapersize)のようなより強力なパッケージを試してみてください.
+
+## オプション
+以下のパッケージオプションを受け付けます.keyval形式です.
+
+### `platex`, `uplatex`, `lulatex`
+エンジンの指定です.省略時は,
+
+* `jlreq`クラスファイルを読み込んでいる場合はそれと連動する
+* そうでなければ自動推定
+
+です.
+
+### `dvipdfmx`,`dvips`,`dviout`
+dviドライバの指定です.エンジンに`lualatex`を利用する場合は指定する必要はありません.省略時は`dvipdfmx`が使われます.
+
+### `trimmarks_paper`
+トンボ付きの紙サイズを指定します.
+* `trimmarks_paper=a4`のように,`a0--a10`, `b0--b10`, `c2--c8`(BはJIS B列)を指定できる他,`trimmarks_paper={<width>,<height>}`と直接寸法を指定することができます.
+* `a4+{1cm,2cm}`や`{10cm,20cm}+{1cm,2cm}`のように`<紙サイズ>+{<寸法横>,<寸法縦>}`とした場合は,指定された紙サイズから指定された寸法だけ増やした紙サイズを設定します.
+* `a4+2cm`は`a4+{2cm,2cm}`と等価です.
+* `+2cm`と紙サイズの部分を省略すると,現在の紙サイズを利用します.
+* デフォルトは`+2in`です.
+
+### `landscape`
+紙のサイズの縦と横とを入れ替えます.ただし入れ替えるのは`trimmarks_paper`で明示的に指定された値に限ります.例えば`landscape,trimmarks_paper=+{1cm,2cm}`とすると,もともとの紙サイズ(これは入れ替わらない)の横幅が2cm増え,縦幅が1cm増えた紙サイズとなります.
+
+### `show`
+出力する対象を指定します.`show={trimmarks,banner,digital}`のようにカンマ区切りのリストを与えます.引数を与えない場合は全て表示します.
+
+* `trimmarks`:トンボ自身を出力します.
+* `banner`:日付などを出力します.
+* `digital`:TrimBoxとBleedBoxの設定を行います(デジタルトンボ).
+* `no`:何も表示しません.
+
+### `bleed_margin`
+仕上がりと裁ち落としの間(ドブ)の長さを指定します.次のようにすると,上下左右を独立に変更できます.
+```latex
+\usepackage[bleed_margin={top=3mm,bottom=5mm,gutter=0mm,fore-edge=2mm}]{jlreq-trimmarks}
+```
+
+## `\jlreqtrimmarkssetup`
+パッケージオプションで指定できない設定を行えます.keyval形式です.
+
+### `banner`
+`show=banner`時に出力される文字列.通常は左上に出力されますが,四つ角および上下左右の中心に出力することもできます.指定は
+```latex
+\jlreqtrimmarkssetup{
+ banner={
+ <場所(上下,左右中央)>={
+ <細かな位置>={
+ <ページ数の偶奇に応じて>={
+ <表示項目>
+ }
+ }
+ }
+ }
+}
+```
+のようになります.キー名は省略することもできます.例えば次のように指定します.
+
+```latex
+\jlreqtrimmarkssetup{
+ banner={
+ top-right={
+ tate={
+ odd={奇数ページの右上に縦書きで表示},
+ even={偶数ページの右上に縦書きで表示},
+ },
+ yoko={右上に横書きで表示}, % ページの偶奇によらず共通
+ corner={右上角に横書きで表示},
+ in-yoko={右上版面内に横書きで表示},
+ in-tate={右上版面内に縦書きで表示},
+ },
+ bottom-center={
+ left={中央下の左に表示}, % odd=, even=も使用可能
+ right={中央下の右に表示},
+ in={中央下の版面内に表示},
+ },
+ center-gutter={
+ above={ノド側中央の上側に表示},
+ below={ノド側中央の下側に表示},
+ },
+ }
+}
+```
+場所は`top/bottom/center`と`left/right/center/gutter/fore-edge`の可能な組み合わせが指定可能です.各項目に`\thepage`を指定するとページ数を出力できます.
+
+次のような指定も可能です.
+```latex
+\jlreqtrimmarkssetup{
+ banner={
+ tate={左上に縦書き}, % 場所が省略されるとtop-leftと見なされる.
+ odd={左上奇数ページ}, % 省略されたのでyokoと見なされる.
+ top-right={
+ odd={右上奇数ページ} % ここもyokoが省略されている.
+ }
+ }
+}
+```
+
+
+### `trimmarks_width`
+トンボ自身の太さを指定します.
+
+### ` color`
+トンボの色.この機能を利用するには,あらかじめ`\color`を定義するパッケージ(`color`パッケージまたはその派生)を読み込んでおく必要があります.ここでの指定は次のようにして`\color`命令に変換されます.
+
+* `cy`や`myk`のように`cmyk`という文字列の一部の場合は,`cmyk`で指定された色のみの色になります.例えば`color=cy`は`\color[cmyk]{1,0,1,0}`となります.
+* そうでない場合は`\color`の引数に回されます.`[***]`という形が先行する場合は,`\color`のオプションとして扱われます.例えば以下のようになります.
+
+ - `black` -> `\color{black}`
+ - `[cmyk]0.5,0.5,0.5,0` -> `\color[cmyk]{0.5,0.5,0.5,0}`
+
+## ライセンス
+このパッケージは二条項BSDライセンスの元で配布されています.詳しくは[LICENSE](LICENSE)をご覧ください.
+
+## 履歴
+* 2018-05-19
+ - 最初のバージョン
+* 2018-06-17
+ - バグ修正.
+* 2018-08-08
+ - `trimmarks_paper`を拡張.
+ - パッケージオプション`landscape`を追加.
+* 2018-09-01
+ - `bleed_margin`を`\jlreqtrimmarkssetup`からパッケージオプションに移した.
+ - `\mag`が`1000`でない場合も動くようにした(つもり)
+ - バグ修正
+* 2018-12-10
+ - `\jlreqtrimmarkssetup`内の`banner`を拡張.
+* 2019-04-01
+ - `\jlreqtrimmarkssetup`内の`banner`を更に拡張.
+ - `bleed_margin`を拡張.
+
+
+--------------
+Noriyuki Abe
+https://github.com/abenori/jlreq
+
diff --git a/language/japanese/jlreq/jlreq-trimmarks.md b/language/japanese/jlreq/jlreq-trimmarks.md
new file mode 100644
index 0000000000..3d66dd56ef
--- /dev/null
+++ b/language/japanese/jlreq/jlreq-trimmarks.md
@@ -0,0 +1,159 @@
+# jlreq-trimmarks
+
+## What is this?
+This package outputs trim (register) marks. It works with [LuaTeX-ja](https://osdn.jp/projects/luatex-ja/wiki/FrontPage) / pLaTeX / upLaTeX / dvipdfmx / Dvips / dviout and any document class (not only with jlreq class). It provides the following.
+
+* Output trim marks
+* Set TrimBox and BleedBox if possible.
+* Set the size of paper.
+
+Note that this package is independent from [Requirements for Japanese Text Layout](https://www.w3.org/TR/jlreq/) (JLReq). JLReq says nothing about trim marks.
+
+## Installation
+Move jlreq-trimmarks.sty and jlre-helpers.sty to $TEXMF/tex/latex/jlreq.
+
+## How to use
+Load it by `\usepackage` with specifying the TeX engine and the DVI driver.
+
+````
+\usepackage[dvipdfmx,platex]{jlreq-trimmarks}
+````
+
+Do not use `tombow` option in the document class.
+
+## Note
+jlreq-trimmarks sets the size of the paper. However, it may not work due to a conflict with other packages. In this case, please use more powerful package, e.g., [bxpapersize](https://github.com/zr-tex8r/BXpapersize).
+
+## Options
+The following package options (keyval style) are available.
+
+### `platex`, `uplatex`, `lulatex`
+Set the engine. If it is not specified, then the engine is
+
+* the one used in the jlreq class if the jlreq class is loaded.
+* guessed one if the jlreq class is not loaded.
+
+### `dvipdfmx`, `dvips`, `dviout`
+Set the dvi driver. You do not have to specify it when using the engine `lualatex`. If it is not specified (with `platex` or `uplatex`), then `dvipdfmx` is used.
+
+### `trimmarks_paper`
+Set the size of the paper including trim marks.
+
+* `trimmarks_paper=<paper type>`: specify via the paper type. for the paper type, you can use `a0--a10`, `b0--b10` and `c2--c8`. Note that `b0--b10` is `JIS B' (Japanese B-series variant).
+* `trimmarks_paper={<width>,height>}`: specify via the width and height.
+* `trimmarks_paper=<paper size>+{<width>,<height>}` (e.g. `trimmarks_paper=a4+{1cm,2cm}`): `<width>` (resp. `<height>`) is added to the width (resp. height) of the paper size specified by `<paper size>` For `<paper size>`, one can use `<paper type>` or `{<width>,<height>}` as in the above.
+* `trimmarks_paper=a4+2cm` is equivalent to `trimmarks_paper=a4+{2cm,2cm}`.
+* If `<paper size>` is empty (e.g. `trimmarks_paper=+2cm`), the current paper size (which is specified usually by the option for the document class) is used.
+
+### `landscape`
+Swap the width and the height. This swaps only the width and height which is specified with the option `trimmarks_paper`. For example, `landscape,trimmarks_paper=+{2cm,1cm}`, adds 1cm to the height and 2cm to the width. But the current paper size is not swapped.
+
+### `show`
+Specify the types of trim marks which the package outputs. It is specified with the comma separated list like `show={trimmarks,banner,digital}`. If no argument is given, everything will be showed.
+
+* `trimmarks`: outputs the trim marks.
+* `banner`: date etc.
+* `digital`:TrimBox and BleedBox.
+* `no`: nothing will be showed
+
+### `bleed_margin`
+Set the bleed margin.
+You can also specify as follows.
+```latex
+\usepackage[bleed_margin={top=3mm,bottom=5mm,gutter=0mm,fore-edge=2mm}]{jlreq-trimmarks}
+```
+
+## `\jlreqtrimmarkssetup`
+Set the additional settings with the keyval style.
+
+### `banner`
+The things which the package outputs when `show=banner` is specified in the package option.
+Normally it is showed in the left of the top. You can also put them in many places with
+```latex
+\jlreqtrimmarkssetup{
+ banner={
+ <Position (top/bottom, left/right, center)>={
+ <more precise position>={
+ <odd/even>={
+ <content>
+ }
+ }
+ }
+ }
+}
+```
+Here is an example.
+```latex
+\jlreqtrimmarkssetup{
+ banner={
+ top-right={
+ vertical={
+ odd={In the right of the top, only in odd pages, vertical mode.},
+ even={In the right of the top, only in even pages, vertical mode.},
+ },
+ horizontal={In the right of the top, horizontal mode.}, % does not depend on the parity of the page number
+ corner={In the corner of the right of the top, horizontal mode.},
+ in-horizontal={In the right of the top, horizontal mode, in the trim area.},
+ in-vertical={In the right of the top, vertical mode, in the trim area.},
+ },
+ bottom-center={
+ left={In the left in the center of the bottom}, % odd=, even= is also available
+ right={In the right in the center of the bottom},
+ in={In the trim area in the center of the bottom.},
+ }
+ }
+}
+```
+A possible combination of `top/bottom/center` and `left/right/center/gutter/fore-edge` can be used for the position.
+You can use `\thepage` to output the number of the page.
+
+The keys can be ommited. For example:
+```latex
+\jlreqtrimmarkssetup{
+ banner={
+ vertical={Vertical mode, in the top of the left},
+ odd={In the top of the left, only in odd pages.}, % regarded as `horizontal`
+ top-right={
+ odd={In the top of the right, only in odd pages, horizontal mode.}
+ }
+ }
+}
+```
+
+### `trimmarks_width`
+Set the width of trim marks.
+
+### ` color`
+Set the color of the trim marks. You have to load a package which defines `\color` (`color' package or its variant) before loading this package to use this function. Here are some examples of specifying the color.
+
+* `color=c` -> `\color[cmyk]{1,0,0,0}`
+* `color=cyk` -> `\color[cmyk]{1,0,1,1}`
+* `black` -> `\color{black}`
+* `[cmyk]0.5,0.5,0.5,0` -> `\color[cmyk]{0.5,0.5,0.5,0}`
+
+## LICENSE
+This package is distributed under the BSD 2-Clause License. See [LICENSE](LICENSE).
+
+## CHANGELOG
+* 2018-05-19
+ - First release.
+* 2018-06-17
+ - Fixed a bug.
+* 2018-08-08
+ - Extended `trimmarks_paper`.
+ - Added a package option `landscape`.
+* 2018-09-01
+ - Moved `bleed_margin` from `\jlreqtrimmarkssetup` to a package option.
+ - jlreq-trimmarks works with unusugal`\mag`.
+ - Fixed bugs.
+* 2018-12-10
+ - Extended `banner` in `\jlreqtrimmarkssetup`.
+* 2019-04-01
+ - Extended `banner` in `\jlreqtrimmarkssetup`.
+ - Extended `bleed_margin`.
+
+
+--------------
+Noriyuki Abe
+https://github.com/abenori/jlreq
+
diff --git a/language/japanese/jlreq/jlreq-trimmarks.sty b/language/japanese/jlreq/jlreq-trimmarks.sty
new file mode 100644
index 0000000000..6ba910a240
--- /dev/null
+++ b/language/japanese/jlreq/jlreq-trimmarks.sty
@@ -0,0 +1,957 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{jlreq-trimmarks}[2019/04/01 jlreq-trimmarks]
+\RequirePackage{xkeyval,etoolbox}
+\RequirePackage{jlreq-helpers}
+
+% check \tombowdatetrue
+\ifx\tombowdatetrue\@undefined
+ \PackageError{jlreq-trimmarks}{This package only works with pLaTeX, upLaTeX or LuaTeX-ja}{\@ehc}
+\fi
+
+\newcommand*{\jlreq@trimmarks@undeferr}[1]{\PackageError{jlreq-trimmarks}{Trying to delete \string#1 even though it is not defined, may be a bug}{\@ehc}}
+\newcommand*{\jlreq@trimmarks@afterpkg@addtodeletecs}[1]{%
+ \appto\jlreq@trimmarks@afterpkg@deletecslist{\jlreq@helper@undefcs{#1}{\jlreq@trimmarks@undeferr}}%
+}
+\newcommand*{\jlreq@trimmarks@afterpkg@addtodeleteif}[1]{%
+ \appto\jlreq@trimmarks@afterpkg@deletecslist{\jlreq@helper@undefif{#1}{\jlreq@trimmarks@undeferr}}%
+}
+\jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@afterpkg@addtodeletecs}
+\jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@afterpkg@addtodeleteif}
+\AtEndOfPackage{%
+ \jlreq@trimmarks@afterpkg@deletecslist
+ \jlreq@helper@undefcs{\jlreq@trimmarks@afterpkg@deletecslist}{\jlreq@trimmarks@undeferr}%
+ \undef{\jlreq@trimmarks@undeferr}%
+}
+
+\newcommand*{\jlreq@trimmarks@DeclareOption}[2]{%
+ \DeclareOptionX{#1}{%
+ \jlreq@ifempty{##1}{}{\PackageError{jlreq-trimmarks}{The option #1 should have no value}{\@ehc}}%
+ #2%
+ }%
+}
+\jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@DeclareOption}
+
+\@ifclassloaded{jlreq}{\let\ifjlreq@trimmarks@jlreqloaded=\@firstoftwo}{\let\ifjlreq@trimmarks@jlreqloaded=\@secondoftwo}
+
+\def\ifjlreq@trimmarks@tate@{%
+ \if@tate\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+% \@firstoftwo when \if@tate is defined and \if@tate=\iftrue
+\def\ifjlreq@trimmarks@tate{%
+ \ifnum0\ifx\if@tate\@undefined 1\fi\ifx\if@tate\relax 1\fi>0
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\ifjlreq@trimmarks@tate@
+ \fi
+}
+
+
+% dvipdfmx=f,dvips=s,dviout = o, lualatex = l
+\jlreq@trimmarks@DeclareOption{dvipdfmx}{\let\jlreq@trimmarks@driver=f}
+\jlreq@trimmarks@DeclareOption{dvips}{\let\jlreq@trimmarks@driver=s}
+\jlreq@trimmarks@DeclareOption{dviout}{\let\jlreq@trimmarks@driver=o}
+\let\jlreq@trimmarks@engine=\jlreq@engine
+\jlreq@trimmarks@DeclareOption{lualatex}{\let\jlreq@trimmarks@engine=l}
+\jlreq@trimmarks@DeclareOption{uplatex}{\let\jlreq@trimmarks@engine=u}
+\jlreq@trimmarks@DeclareOption{platex}{\let\jlreq@trimmarks@engine=p}
+
+\def\jlreq@trimmarks@switchpapersize{}
+\def\jlreq@trimmarks@addpapersize#1{%
+ \@ifnextchar[{\jlreq@trimmarks@addpapersize@{#1}}{\jlreq@trimmarks@addpapersize@@{#1}}
+}
+\def\jlreq@trimmarks@addpapersize@#1[#2]{%
+ \edef\@tempa{\unexpanded{\jlreq@trimmarks@addpapersize@@{#1}}\csexpandonce{jlreq@helper@papersizelist@#2}}%
+ \@tempa
+}
+\newcommand*{\jlreq@trimmarks@addpapersize@@}[3]{%
+ \@for\@tempa:=#1\do{%
+ \eappto\jlreq@trimmarks@switchpapersize{{\expandonce{\@tempa}}{\unexpanded{\def\jlreq@resulta{#2}\def\jlreq@resultb{#3}}}}%
+ }%
+}
+\jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@switchpapersize}
+\jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@addpapersize}
+\jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@addpapersize@}
+\jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@addpapersize@@}
+
+\jlreq@trimmarks@addpapersize{a0,A0}[a0]
+\jlreq@trimmarks@addpapersize{a1,A1}[a1]
+\jlreq@trimmarks@addpapersize{a2,A2}[a2]
+\jlreq@trimmarks@addpapersize{a3,A3}[a3]
+\jlreq@trimmarks@addpapersize{a4,A4}[a4]
+\jlreq@trimmarks@addpapersize{a5,A5}[a5]
+\jlreq@trimmarks@addpapersize{a6,A6}[a6]
+\jlreq@trimmarks@addpapersize{a7,A7}[a7]
+\jlreq@trimmarks@addpapersize{a8,A8}[a8]
+\jlreq@trimmarks@addpapersize{a9,A9}[a9]
+\jlreq@trimmarks@addpapersize{a10,A10}[a10]
+
+\jlreq@trimmarks@addpapersize{b0,B0}[b0]
+\jlreq@trimmarks@addpapersize{b1,B1}[b1]
+\jlreq@trimmarks@addpapersize{b2,B2}[b2]
+\jlreq@trimmarks@addpapersize{b3,B3}[b3]
+\jlreq@trimmarks@addpapersize{b4,B4}[b4]
+\jlreq@trimmarks@addpapersize{b5,B5}[b5]
+\jlreq@trimmarks@addpapersize{b6,B6}[b6]
+\jlreq@trimmarks@addpapersize{b7,B7}[b7]
+\jlreq@trimmarks@addpapersize{b8,B8}[b8]
+\jlreq@trimmarks@addpapersize{b9,B9}[b9]
+\jlreq@trimmarks@addpapersize{b10,B10}[b10]
+
+\jlreq@trimmarks@addpapersize{c2,C2}[c2]
+\jlreq@trimmarks@addpapersize{c3,C3}[c3]
+\jlreq@trimmarks@addpapersize{c4,C4}[c4]
+\jlreq@trimmarks@addpapersize{c5,C5}[c5]
+\jlreq@trimmarks@addpapersize{c6,C6}[c6]
+\jlreq@trimmarks@addpapersize{c7,C7}[c7]
+\jlreq@trimmarks@addpapersize{c8,C8}[c8]
+
+\jlreq@trimmarks@addpapersize{a4var}[a4var]
+\jlreq@trimmarks@addpapersize{b5var}[b5var]
+
+\jlreq@trimmarks@addpapersize{letter}[letter]
+\jlreq@trimmarks@addpapersize{legal}[legal]
+\jlreq@trimmarks@addpapersize{executive}[executive]
+\jlreq@trimmarks@addpapersize{hagaki}[hagaki]
+
+% width -> \jlreq@resulta, height -> \jlreq@resultb
+\edef\jlreq@trimmarks@analyzepapersize#1{
+ \noexpand\jlreq@switch{#1}{
+ \expandonce{\jlreq@trimmarks@switchpapersize}%
+ {%
+ \noexpand\jlreq@helper@dividebycomma{#1}%
+ \unexpanded{\ifjlreq@result\else}%
+ \unexpanded{\def\jlreq@resulta}{#1}%
+ \unexpanded{\def\jlreq@resultb}{#1}%
+ \noexpand\fi
+ }%
+ }\noexpand\relax
+}
+\jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@analyzepapersize}
+
+\def\jlreq@trimmarks@option@papersize{+2in}
+\DeclareOptionX{trimmarks_paper}{\def\jlreq@trimmarks@option@papersize{#1}}
+\jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@option@papersize}
+
+\newif\ifjlreq@trimmarks@digital \jlreq@trimmarks@digitaltrue
+\newif\ifjlreq@trimmarks@show \jlreq@trimmarks@showtrue
+\newif\ifjlreq@trimmarks@show@artbox \jlreq@trimmarks@show@artboxfalse
+\tombowdatetrue
+% flag: `show` is specified or not
+\newif\ifjlreq@trimmarks@option@show \jlreq@trimmarks@option@showfalse
+
+\DeclareOptionX{show}{%
+ \jlreq@trimmarks@option@showtrue
+ \jlreq@ifempty{#1}{
+ \jlreq@trimmarks@showtrue\tombowdatetrue\jlreq@trimmarks@digitaltrue
+ }{
+ \jlreq@trimmarks@showfalse\tombowdatefalse\jlreq@trimmarks@digitalfalse
+ \@for\jlreq@trimmarks@tempa:=#1\do{%
+ \expandafter\jlreq@helper@trim\expandafter{\jlreq@trimmarks@tempa}{\jlreq@trimmarks@tempa}
+ \jlreq@switch{\jlreq@trimmarks@tempa}{
+ {trimmarks}{\jlreq@trimmarks@showtrue}
+ {banner}{\tombowdatetrue}
+ {digital}{\jlreq@trimmarks@digitaltrue}
+ {digital*}{\jlreq@trimmarks@digitaltrue\jlreq@trimmarks@show@artboxtrue}
+ {no}{\tombowdatefalse\jlreq@trimmarks@showfalse\jlreq@trimmarks@digitalfalse}
+ }[\PackageError{jlreq-trimmarks}{Unknown value `##1' in the option `show'}{\@ehc}]
+ }
+ }
+}
+\@for\jlreq@tempa:=top,bottom,gutter,fore-edge\do{%
+ \expandafter\def\csname jlreq@trimmarks@bleed@\jlreq@tempa\endcsname{3mm}
+}
+\DeclareOptionX{bleed_margin}{%
+ \begingroup
+ \def\jlreq@do{}%
+ \jlreq@parsekeyval@nokey{
+ \ifjlreq@parsekeyval@nokey@novalue{%
+ \@for\jlreq@tempa:=top,bottom,gutter,fore-edge\do{%
+ \epreto\jlreq@do{%
+ \noexpand\def\expandonce{\csname jlreq@trimmarks@bleed@\jlreq@tempa\endcsname}{##1}%
+ }%
+ }%
+ }{%
+ \ifthenelse{\equal{##1}{top} \OR \equal{##1}{bottom} \OR \equal{##1}{gutter} \OR \equal{##1}{fore-edge}}{%
+ \eappto\jlreq@do{%
+ \noexpand\def\expandonce{\csname jlreq@trimmarks@bleed@##1\endcsname}{##2}%
+ }%
+ }{%
+ \PackageError{jlreq-trimmarks}{Unknown position `##1' in bleed_margin}{\@ehc}
+ }%
+ }%
+ }{#1}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\newif\ifjlreq@trimmarks@landscape \jlreq@trimmarks@landscapefalse
+\jlreq@trimmarks@DeclareOption{landscape}{\jlreq@trimmarks@landscapetrue}
+\jlreq@trimmarks@afterpkg@addtodeleteif{\ifjlreq@trimmarks@landscape}
+
+\let\jlreq@temporary@original@@removeelement=\@removeelement
+\let\@removeelement=\jlreq@helper@removeelement
+\ProcessOptionsX*\relax
+\let\@removeelement=\jlreq@temporary@original@@removeelement
+\let\jlreq@temporary@original@@removeelement=\@undefined
+
+\ifjlreq@trimmarks@option@show\else
+ \ifx o\jlreq@trimmarks@driver
+ \jlreq@trimmarks@digitalfalse
+ \jlreq@trimmarks@showtrue
+ \jlreq@trimmarks@show@artboxfalse
+ \fi
+\fi
+
+\def\jlreq@trimmarks@setpapersize#1{
+ \jlreq@ifcontains{#1}{+}{
+ \def\@tempa##1+##2\jlreq@endmark{
+ \jlreq@helper@trim{##1}{\jlreq@trimmarks@tempa}
+ \jlreq@helper@trim{##2}{\jlreq@trimmarks@tempb}
+ \ifx\jlreq@trimmarks@tempa\@empty
+ \let\jlreq@tempa=\paperwidth
+ \let\jlreq@tempb=\paperheight
+ \else
+ \expandafter\jlreq@trimmarks@analyzepapersize\expandafter{\jlreq@trimmarks@tempa}
+ \let\jlreq@tempa=\jlreq@resulta
+ \let\jlreq@tempb=\jlreq@resultb
+ \ifjlreq@trimmarks@landscape\jlreq@helper@swap{\jlreq@tempa}{\jlreq@tempb}\fi
+ \fi
+ \expandafter\jlreq@trimmarks@analyzepapersize\expandafter{\jlreq@trimmarks@tempb}
+ \ifjlreq@trimmarks@landscape\jlreq@helper@swap{\jlreq@resulta}{\jlreq@resultb}\fi
+ \edef\jlreq@trimmarks@paperwidth{\the\dimexpr\jlreq@tempa + \jlreq@resulta\relax}
+ \edef\jlreq@trimmarks@paperheight{\the\dimexpr\jlreq@tempb + \jlreq@resultb\relax}
+ }
+ \@tempa#1\jlreq@endmark
+ }{
+ \jlreq@trimmarks@analyzepapersize{#1}
+ \ifjlreq@trimmarks@landscape\jlreq@helper@swap{\jlreq@resulta}{\jlreq@resultb}\fi
+ \edef\jlreq@trimmarks@paperwidth{\jlreq@resulta}
+ \edef\jlreq@trimmarks@paperheight{\jlreq@resultb}
+ }
+}
+\jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@setpapersize}
+\expandafter\jlreq@trimmarks@setpapersize\expandafter{\jlreq@trimmarks@option@papersize}
+
+\ifx o\jlreq@trimmarks@driver
+ \ifjlreq@trimmarks@digital
+ \PackageError{jlreq-trimmarks}{`show=digital' can't be used with the driver `dviout'}{\@ehc}
+ \fi
+\fi
+
+\long\def\jlreq@trimmarks@setbanner#1#2#3{%
+ \begingroup
+ \def\jlreq@do{}%
+ \jlreq@parsekeyval@nokey{%
+ \ifjlreq@parsekeyval@nokey@novalue{}{%
+ \jlreq@switch{##1}{
+ {yoko}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{yoko@#1}{yoko@#2}{##2}}}
+ {horizontal}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{yoko@#1}{yoko@#2}{##2}}}
+ {tate}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{tate@#1}{tate@#2}{##2}}}
+ {vertial}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{tate@#1}{tate@#2}{##2}}}
+ {corner}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{corner@#1}{corner@#2}{##2}}}
+ {in-yoko}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{inyoko@#1}{inyoko@#2}{##2}}}
+ {in-horizontal}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{inyoko@#1}{inyoko@#2}{##2}}}
+ {in-tate}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{intate@#1}{intate@#2}{##2}}}
+ {in-vertial}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{intate@#1}{intate@#2}{##2}}}
+ }%
+ }%
+ }{#3}%
+ \ifx\jlreq@do\@empty
+ \appto\jlreq@do{\jlreq@trimmarks@setbanner@@{yoko@#1}{yoko@#2}{#3}}%
+ \fi
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\long\def\jlreq@trimmarks@setbanner@#1#2#3{%
+ \begingroup
+ \def\jlreq@do{}%
+ \jlreq@parsekeyval@nokey{%
+ \ifjlreq@parsekeyval@nokey@novalue{}{%
+ \jlreq@switch*{##1}{
+ {left}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{before@#1}{before@#2}{##2}}}
+ {right}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{after@#1}{after@#2}{##2}}}
+ {above}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{before@#1}{before@#2}{##2}}}
+ {below}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{after@#1}{after@#2}{##2}}}
+ {in}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@@{in@#1}{in@#2}{##2}}}
+ }%
+ }%
+ }{#3}%
+ \ifx\jlreq@do\@empty
+ \appto\jlreq@do{\jlreq@trimmarks@setbanner@@{before@#1}{before@#2}{#3}}%
+ \fi
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+% #1 = odd, #2 = even
+\long\def\jlreq@trimmarks@setbanner@@#1#2#3{%
+ \begingroup
+ \def\jlreq@do{}%
+ \jlreq@parsekeyval@nokey{%
+ \ifjlreq@parsekeyval@nokey@novalue{}{%
+ \jlreq@switch*{##1}{
+ {odd}{\appto\jlreq@do{\expandafter\edef\csname jlreq@trimmarks@banner@odd@#1\endcsname{\unexpanded{##2}}}}
+ {even}{\appto\jlreq@do{\expandafter\edef\csname jlreq@trimmarks@banner@even@#2\endcsname{\unexpanded{##2}}}}
+ }%
+ }%
+ }{#3}%
+ \ifx\jlreq@do\@empty
+ \appto\jlreq@do{%
+ \expandafter\edef\csname jlreq@trimmarks@banner@odd@#1\endcsname{\unexpanded{#3}}%
+ \expandafter\edef\csname jlreq@trimmarks@banner@even@#2\endcsname{\unexpanded{#3}}%
+ }%
+ \fi
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\newcommand{\jlreqtrimmarkssetup}[1]{%
+ \jlreq@parsekeyval[jlreqtrimmarkssetup]{
+ {banner}{%
+ \@for\@tempa:=odd,even\do{%
+ \@for\jlreq@tempa:=tate,yoko,corner,inyoko,intate\do{%
+ \@for\jlreq@tempb:=top,bottom\do{%
+ \@for\jlreq@tempc:=left,right\do{%
+ \@namedef{jlreq@trimmarks@banner@\@tempa @\jlreq@tempa @\jlreq@tempb @\jlreq@tempc}{}%
+ }%
+ }%
+ }%
+ \@for\jlreq@tempa:=before,after\do{%
+ \@for\jlreq@tempb:=top,bottom,in\do{%
+ \@namedef{jlreq@trimmarks@banner@\@tempa @\jlreq@tempa @\jlreq@tempb @center}{}%
+ }%
+ \@for\jlreq@tempb:=left,right,in\do{%
+ \@namedef{jlreq@trimmarks@banner@\@tempa @\jlreq@tempa @center@\jlreq@tempb}{}%
+ }%
+ }%
+ }%
+ \@bannertoken{}%
+ \def\jlreq@do{}%
+ \jlreq@parsekeyval@nokey{%
+ \ifjlreq@parsekeyval@nokey@novalue{}{%
+ \jlreq@tempafalse
+ \edef\jlreq@gutterodd{\ifjlreq@trimmarks@tate{right}{left}}%
+ \if@twoside
+ \edef\jlreq@guttereven{\ifjlreq@trimmarks@tate{left}{right}}%
+ \else
+ \let\jlreq@guttereven\jlreq@gutterodd
+ \fi
+ \jlreq@switch*{####1}{
+ {top-left}{\jlreq@tempatrue\appto\jlreq@do{\jlreq@trimmarks@setbanner{top@left}{top@left}{####2}}}
+ {left-top}{\jlreq@tempatrue\appto\jlreq@do{\jlreq@trimmarks@setbanner{top@left}{top@left}{####2}}}
+ {top-right}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{top@right}{top@right}{####2}}}
+ {right-top}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{top@right}{top@right}{####2}}}
+ {top-gutter}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{top@\jlreq@gutterodd}{top@\jlreq@guttereven}{####2}}}
+ {gutter-top}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{top@\jlreq@gutterodd}{top@\jlreq@guttereven}{####2}}}
+ {top-fore-edge}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{top@\jlreq@guttereven}{top@\jlreq@gutterodd}{####2}}}
+ {fore-edge-top}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{top@\jlreq@guttereven}{top@\jlreq@gutterodd}{####2}}}
+ {bottom-left}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{bottom@left}{bottom@left}{####2}}}
+ {left-bottom}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{bottom@left}{bottom@left}{####2}}}
+ {bottom-right}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{bottom@right}{bottom@right}{####2}}}
+ {right-bottom}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{bottom@right}{bottom@right}{####2}}}
+ {bottom-gutter}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{bottom@\jlreq@gutterodd}{bottom@\jlreq@guttereven}{####2}}}
+ {gutter-bottom}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{bottom@\jlreq@gutterodd}{bottom@\jlreq@guttereven}{####2}}}
+ {bottom-fore-edge}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{bottom@\jlreq@guttereven}{bottom@\jlreq@gutterodd}{####2}}}
+ {fore-edge-bottom}{\appto\jlreq@do{\jlreq@trimmarks@setbanner{bottom@\jlreq@guttereven}{bottom@\jlreq@gutterodd}{####2}}}
+ {top-center}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{top@center}{top@center}{####2}}}
+ {center-top}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{top@center}{top@center}{####2}}}
+ {bottom-center}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{bottom@center}{bottom@center}{####2}}}
+ {center-bottom}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{bottom@center}{bottom@center}{####2}}}
+ {center-right}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{center@right}{center@right}{####2}}}
+ {right-center}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{center@right}{center@right}{####2}}}
+ {center-left}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{center@left}{center@left}{####2}}}
+ {left-center}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{center@left}{center@left}{####2}}}
+ {center-gutter}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{center@\jlreq@gutterodd}{center@\jlreq@guttereven}{####2}}}
+ {gutter-center}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{center@\jlreq@gutterodd}{center@\jlreq@guttereven}{####2}}}
+ {center-fore-edge}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{center@\jlreq@guttereven}{center@\jlreq@gutterodd}{####2}}}
+ {fore-edge-center}{\appto\jlreq@do{\jlreq@trimmarks@setbanner@{center@\jlreq@guttereven}{center@\jlreq@gutterodd}{####2}}}
+ }%
+ \ifjlreq@tempa
+ \appto\jlreq@do{\expandafter\@bannertoken\expandafter{\jlreq@trimmarks@banner@odd@yoko@top@left}}%
+ \fi
+ }%
+ }{##1}%
+ \ifx\jlreq@do\@empty
+ \jlreq@trimmarks@setbanner{top@left}{##1}%
+ \expandafter\@bannertoken\expandafter{\jlreq@trimmarks@banner@odd@yoko@top@left}%
+ \else
+ \jlreq@do
+ \fi
+ }
+ {banner_font}{\def\jlreq@trimmarks@bannerfont{##1}}
+ {trimmarks_width}{\setlength{\@tombowwidth}{##1}}
+ {color}{%
+ \jlreq@ifempty{##1}{%
+ \def\jlreq@trimmarks@color{\normalcolor}%
+ }{%
+ \@ifundefined{color}{%
+ \PackageError{jlreq-trimmarks}{`\string\color' is not defined, please load the package `color' or its variant before this package}{\@ehc}%
+ }%
+ \jlreq@switch{##1}{
+ {c}{\def\jlreq@trimmarks@color{\color[cmyk]{1,0,0,0}}}
+ {m}{\def\jlreq@trimmarks@color{\color[cmyk]{0,1,0,0}}}
+ {y}{\def\jlreq@trimmarks@color{\color[cmyk]{0,0,1,0}}}
+ {k}{\def\jlreq@trimmarks@color{\color[cmyk]{0,0,0,1}}}
+ {cm}{\def\jlreq@trimmarks@color{\color[cmyk]{1,1,0,0}}}
+ {cy}{\def\jlreq@trimmarks@color{\color[cmyk]{1,0,1,0}}}
+ {ck}{\def\jlreq@trimmarks@color{\color[cmyk]{1,0,0,1}}}
+ {my}{\def\jlreq@trimmarks@color{\color[cmyk]{0,1,1,0}}}
+ {mk}{\def\jlreq@trimmarks@color{\color[cmyk]{0,1,0,1}}}
+ {yk}{\def\jlreq@trimmarks@color{\color[cmyk]{0,0,1,1}}}
+ {cmy}{\def\jlreq@trimmarks@color{\color[cmyk]{1,1,1,0}}}
+ {cmk}{\def\jlreq@trimmarks@color{\color[cmyk]{1,1,0,1}}}
+ {cyk}{\def\jlreq@trimmarks@color{\color[cmyk]{1,0,1,1}}}
+ {myk}{\def\jlreq@trimmarks@color{\color[cmyk]{0,1,1,1}}}
+ {cmyk}{\def\jlreq@trimmarks@color{\color[cmyk]{1,1,1,1}}}
+ {%
+ \jlreq@iffirsttoken{##1}{[}{%
+ \def\@tempa[####1]####2\jlreq@endmark{\def\jlreq@trimmarks@color{\color[####1]{####2}}}%
+ }{%
+ \def\@tempa####1\jlreq@endmark{\def\jlreq@trimmarks@color{\color{####1}}}%
+ }%
+ \@tempa##1\jlreq@endmark
+ }%
+ }%
+ }%
+ }%
+ }{#1}%
+}
+\@onlypreamble\jlreqtrimmarkssetup
+\jlreqtrimmarkssetup{
+ banner={%
+ \jobname\space(\number\year-\two@digits\month-\two@digits\day
+ \space\two@digits\hour:\two@digits\minute)%
+ },
+ banner_font={},
+ color={}
+}
+
+\ifx\jlreq@trimmarks@engine\@undefined
+ \jlreq@helper@guessengine
+ \let\jlreq@trimmarks@engine=\jlreq@result
+\fi
+
+\ifx\jlreq@trimmarks@driver\@undefined
+ \ifx l\jlreq@trimmarks@engine
+ \let\jlreq@trimmarks@driver=l
+ \else
+ % default: dvipdfmx
+ \let\jlreq@trimmarks@driver=f
+ \fi
+\fi
+
+\ifx l\jlreq@trimmarks@engine
+ \setlength{\pagewidth}{\dimexpr\jlreq@trimmarks@paperwidth\relax}
+ \setlength{\pageheight}{\dimexpr\jlreq@trimmarks@paperheight\relax}
+\else
+ \setlength{\pdfpagewidth}{\dimexpr\jlreq@trimmarks@paperwidth\relax}
+ \setlength{\pdfpageheight}{\dimexpr\jlreq@trimmarks@paperheight\relax}
+\fi
+
+\hoffset=\dimexpr(\jlreq@trimmarks@paperwidth - \paperwidth)/2 - \ifx l\jlreq@trimmarks@engine 1in\else 1truein\fi\relax
+\voffset=\dimexpr(\jlreq@trimmarks@paperheight - \paperheight)/2 - \ifx l\jlreq@trimmarks@engine 1in\else 1truein\fi\relax
+\ifx l\jlreq@trimmarks@engine\else
+ \@ifundefined{@tombowreset@@paper}{
+ \AtBeginDocument{%
+ \addtolength{\oddsidemargin}{\dimexpr 1truein - 1in\relax}%
+ \addtolength{\evensidemargin}{\dimexpr 1truein - 1in\relax}%
+ \addtolength{\topmargin}{\dimexpr 1truein - 1in\relax}%
+ }
+ }{
+ \def\@tombowreset@@paper{%
+ \@@topmargin\topmargin
+ \iftombow
+ \@@paperwidth\paperwidth
+ \advance\@@paperwidth 2\dimexpr\@tombowbleed\relax
+ \@@paperheight\paperheight \advance\@@paperheight 10mm\relax
+ \advance\@@paperheight 2\dimexpr\@tombowbleed\relax
+ % 1in -> 1truein
+ \advance\@@topmargin 1truein\relax \advance\@themargin 1truein\relax
+ \fi
+ }
+ }
+\fi
+
+\ifx l\jlreq@trimmarks@driver\else
+ \jlreq@helper@divide{\the\mag pt}{1000pt}
+ \edef\@tempa{\noexpand\AtBeginDvi{\noexpand\special{papersize=\the\dimexpr\strip@pt\jlreq@resultdimen\dimexpr\jlreq@trimmarks@paperwidth\relax\relax, \the\dimexpr\strip@pt\jlreq@resultdimen\dimexpr\jlreq@trimmarks@paperheight\relax\relax}}}
+ \@tempa
+\fi
+\@ifundefined{stockheight}{\newlength{\stockheight}}{}
+\@ifundefined{stockwidth}{\newlength{\stockwidth}}{}
+\setlength{\stockwidth}{\dimexpr\jlreq@trimmarks@paperwidth\relax}
+\setlength{\stockheight}{\dimexpr\jlreq@trimmarks@paperheight\relax}
+
+\def\jlreq@trimmarks@outputbanner#1#2{%
+ \iftombowdate
+ \expandafter\let\expandafter\jlreq@tempa\csname jlreq@trimmarks@banner@\ifodd\c@page odd\else even\fi @#1\endcsname
+ \ifx\jlreq@tempa\@empty\else
+ \def\@tempa##1{#2}%
+ \expandafter\@tempa\expandafter{\jlreq@tempa}%
+ \fi
+ \fi
+}
+\def\jlreq@trimmarks@bleed{3mm}
+% left=gutter?
+\def\ifjlreq@trimmarks@leftisgutter{%
+ \ifjlreq@trimmarks@tate{%
+ \ifnum 0\ifodd\c@page 1\fi\if@twoside\else 1\fi>0 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
+ }{%
+ \ifnum 0\ifodd\c@page 1\fi\if@twoside\else 1\fi>0 \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+ }%
+}
+\def\jlreq@trimmarks@bleed@left{\ifjlreq@trimmarks@leftisgutter{\jlreq@trimmarks@bleed@gutter}{\expandafter\csname jlreq@trimmarks@bleed@fore-edge\endcsname}}
+\def\jlreq@trimmarks@bleed@right{\ifjlreq@trimmarks@leftisgutter{\expandafter\csname jlreq@trimmarks@bleed@fore-edge\endcsname}{\jlreq@trimmarks@bleed@gutter}}
+
+\def\jlreq@trimmarks@outputtombow{%
+ \vbox to\z@{%
+ \kern-\dimexpr 10mm + \jlreq@trimmarks@bleed@top\relax
+ \boxmaxdepth\maxdimen
+ \moveleft\jlreq@trimmarks@bleed@left\vbox to\@@paperheight{%
+ \color@begingroup\jlreq@trimmarks@color
+ \hbox to\@@paperwidth{%
+ \hskip\jlreq@trimmarks@bleed@left\relax
+ \setbox\jlreq@tempboxa=\hbox to\z@{% \@TL
+ \yoko\hss
+ \vrule width\dimexpr 10mm + \jlreq@trimmarks@bleed@left\relax height\@tombowwidth depth\z@
+ \vrule height10mm width\@tombowwidth depth\z@
+ \iftombowdate
+ \setbox\jlreq@tempboxa=\hbox to\z@{\hskip5mm\@bannerfont\jlreq@trimmarks@bannerfont
+ \ifodd\c@page\the\@bannertoken\else\jlreq@trimmarks@banner@even@yoko@top@left\fi
+ \hss}%
+ \dp\jlreq@tempboxa=0pt
+ \raise 4pt\box\jlreq@tempboxa
+ \fi
+ \jlreq@trimmarks@outputbanner{inyoko@top@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \jlreq@tempdima=\dimexpr\ht\jlreq@tempboxa + \jlreq@trimmarks@bleed@top\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise-\jlreq@tempdima\box\jlreq@tempboxa
+ }%
+ }%
+ \dp\jlreq@tempboxa=0pt
+ \box\jlreq@tempboxa
+ \hfill
+ \setbox\jlreq@tempboxa=\hbox{% \@TC
+ \yoko
+ \vrule width10mm height\@tombowwidth depth\z@
+ \jlreq@trimmarks@outputbanner{before@top@center}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\hss\@bannerfont\jlreq@trimmarks@bannerfont##1\hskip 5mm}%
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \raise 4pt\box\jlreq@tempboxa
+ }%
+ \jlreq@trimmarks@outputbanner{in@top@center}{%
+ \setbox\jlreq@tempboxa=\hbox{\@bannerfont\jlreq@trimmarks@bannerfont##1}%
+ \jlreq@tempdima=\dimexpr\ht\jlreq@tempboxa + \jlreq@trimmarks@bleed@top\relax
+ \jlreq@tempdimb=0.5\wd\jlreq@tempboxa
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern-\jlreq@tempdimb\raise-\jlreq@tempdima\box\jlreq@tempboxa\kern\jlreq@tempdimb
+ }%
+ \vrule height10mm width\@tombowwidth depth\z@
+ \jlreq@trimmarks@outputbanner{after@top@center}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\hskip 5mm\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \raise 4pt\box\jlreq@tempboxa
+ }%
+ \vrule width10mm height\@tombowwidth depth\z@
+ }%
+ \dp\jlreq@tempboxa=0pt
+ \box\jlreq@tempboxa
+ \hfill
+ \setbox\jlreq@tempboxa=\hbox to\z@{% \@TR
+ \yoko
+ \jlreq@trimmarks@outputbanner{yoko@top@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\yoko\hss\@bannerfont\jlreq@trimmarks@bannerfont##1\hskip 5mm}%
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise 4pt\box\jlreq@tempboxa
+ }%
+ \jlreq@trimmarks@outputbanner{inyoko@top@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\yoko\hss\@bannerfont\jlreq@trimmarks@bannerfont##1}%
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@top + \ht\jlreq@tempboxa\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise-\jlreq@tempdima\box\jlreq@tempboxa
+ }%
+ \vrule height10mm width\@tombowwidth depth\z@
+ \jlreq@trimmarks@outputbanner{corner@top@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\hskip\dimexpr\jlreq@trimmarks@bleed@right + 4pt\relax\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise 4pt\box\jlreq@tempboxa
+ }%
+ \vrule width\dimexpr 10mm + \jlreq@trimmarks@bleed@right\relax height\@tombowwidth depth\z@\hss
+ }%
+ \dp\jlreq@tempboxa=0pt
+ \box\jlreq@tempboxa
+ \hskip\jlreq@trimmarks@bleed@right
+ }%
+ \kern-10mm
+ \hbox to\@@paperwidth{%
+ \hbox to\z@{% \@Tl
+ \yoko\hss
+ \vrule width10mm height\@tombowwidth depth\z@
+ \jlreq@trimmarks@outputbanner{corner@top@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\hss\@bannerfont\jlreq@trimmarks@bannerfont##1\hskip 4pt}%
+ \dp\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt
+ \raise\dimexpr \jlreq@trimmarks@bleed@top + 4pt\relax\box\jlreq@tempboxa
+ }%
+ \vrule height\dimexpr 10mm + \jlreq@trimmarks@bleed@top\relax width\@tombowwidth depth\z@
+ \jlreq@trimmarks@outputbanner{tate@top@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\adjustbaseline\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \ifx l\jlreq@trimmarks@engine
+ \jlreq@tempdima=\dimexpr 4pt + \ht\jlreq@tempboxa\relax
+ \else
+ \jlreq@tempdima=\dimexpr 4pt + \wd\jlreq@tempboxa\relax
+ \fi
+ \wd\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \kern-\jlreq@tempdima\raise-5mm\box\jlreq@tempboxa\kern\jlreq@tempdima
+ }%
+ \jlreq@trimmarks@outputbanner{intate@top@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\adjustbaseline\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@left \ifx l\jlreq@trimmarks@engine + \ht\jlreq@tempboxa\fi\relax
+ \wd\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \kern\jlreq@tempdima\box\jlreq@tempboxa\kern-\jlreq@tempdima
+ }%
+ }%
+ \hfill
+ \hbox to\z@{% \@Tr
+ \yoko
+ \jlreq@trimmarks@outputbanner{tate@top@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\adjustbaseline\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \jlreq@tempdima=\dimexpr 4pt \ifx l\jlreq@trimmarks@engine + \dp\jlreq@tempboxa\fi\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern\jlreq@tempdima\raise -5mm\box\jlreq@tempboxa\kern-\jlreq@tempdima
+ }%
+ \jlreq@trimmarks@outputbanner{intate@top@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\adjustbaseline\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \ifx l\jlreq@trimmarks@engine
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@top + \ht\jlreq@tempboxa\relax
+ \else
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@top + \wd\jlreq@tempboxa\relax
+ \fi
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern-\jlreq@tempdima\box\jlreq@tempboxa\kern\jlreq@tempdima
+ }%
+ \vrule height\dimexpr 10mm + \jlreq@trimmarks@bleed@top\relax width\@tombowwidth depth\z@
+ \vrule width10mm height\@tombowwidth depth\z@
+ \hss
+ }%
+ }%
+ \vfill
+ \hbox to\@@paperwidth{%
+ \hbox to\z@{% \@CL
+ \yoko\hss
+ \vrule width10mm height.5\@tombowwidth depth.5\@tombowwidth
+ \jlreq@trimmarks@outputbanner{before@center@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\hss\adjustbaseline\@bannerfont\jlreq@trimmarks@bannerfont##1\hskip 5mm}%
+ \ifx l\jlreq@trimmarks@engine
+ \jlreq@tempdima=\dimexpr 4pt + \ht\jlreq@tempboxa\relax
+ \else
+ \jlreq@tempdima=\dimexpr 4pt + \wd\jlreq@tempboxa\relax
+ \fi
+ \dp\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern-\jlreq@tempdima\box\jlreq@tempboxa\kern\jlreq@tempdima
+ }%
+ \jlreq@trimmarks@outputbanner{after@center@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\hskip 5mm\adjustbaseline\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \ifx l\jlreq@trimmarks@engine
+ \jlreq@tempdima=\dimexpr 4pt + \ht\jlreq@tempboxa\relax
+ \else
+ \jlreq@tempdima=\dimexpr 4pt + \wd\jlreq@tempboxa\relax
+ \fi
+ \dp\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern-\jlreq@tempdima\box\jlreq@tempboxa\kern\jlreq@tempdima
+ }%
+ \vrule height10mm depth10mm width\@tombowwidth
+ \jlreq@trimmarks@outputbanner{in@center@left}{%
+ \setbox\jlreq@tempboxa=\hbox{\tate\adjustbaseline\@bannerfont\jlreq@trimmarks@bannerfont##1}%
+ \ifx l\jlreq@trimmarks@engine
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@left + \ht\jlreq@tempboxa\relax
+ \jlreq@tempdimb=.5\wd\jlreq@tempboxa
+ \else
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@left\relax
+ \jlreq@tempdimb=.5\dimexpr\ht\jlreq@tempboxa + \dp\jlreq@tempboxa\relax
+ \fi
+ \dp\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern\jlreq@tempdima\raise\jlreq@tempdimb\box\jlreq@tempboxa\kern-\jlreq@tempdima
+ }%
+ }%
+ \hfill
+ \hbox to\z@{% \@CR
+ \yoko
+ \jlreq@trimmarks@outputbanner{in@center@right}{%
+ \setbox\jlreq@tempboxa=\hbox{\tate\adjustbaseline\@bannerfont\jlreq@trimmarks@bannerfont##1}%
+ \ifx l\jlreq@trimmarks@engine
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@right + \ht\jlreq@tempboxa\relax
+ \jlreq@tempdimb=0.5\wd\jlreq@tempboxa
+ \else
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@right + \wd\jlreq@tempboxa\relax
+ \jlreq@tempdimb=0.5\dimexpr\ht\jlreq@tempboxa + \dp\jlreq@tempboxa\relax
+ \fi
+ \dp\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern-\jlreq@tempdima\raise\jlreq@tempdimb\box\jlreq@tempboxa\kern\jlreq@tempdima
+ }%
+ \vrule height10mm depth10mm width\@tombowwidth
+ \jlreq@trimmarks@outputbanner{before@center@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\hss\adjustbaseline\@bannerfont\jlreq@trimmarks@bannerfont##1\hskip 5mm}%
+ \jlreq@tempdima=\dimexpr 4pt \ifx l\jlreq@trimmarks@engine + \dp\jlreq@tempboxa\fi\relax
+ \dp\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern\jlreq@tempdima\box\jlreq@tempboxa\kern-\jlreq@tempdima
+ }%
+ \jlreq@trimmarks@outputbanner{after@center@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\hskip 5mm\adjustbaseline\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \jlreq@tempdima=\dimexpr 4pt \ifx l\jlreq@trimmarks@engine + \dp\jlreq@tempboxa\fi\relax
+ \dp\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern\jlreq@tempdima\box\jlreq@tempboxa\kern-\jlreq@tempdima
+ }%
+ \vrule height.5\@tombowwidth depth.5\@tombowwidth width10mm\hss
+ }%
+ }%
+ \vfill
+ \hbox to\@@paperwidth{%
+ \hbox to\z@{% \@Bl
+ \yoko\hss
+ \vrule width10mm depth\@tombowwidth height\z@
+ \vrule depth\dimexpr 10mm + \jlreq@trimmarks@bleed@bottom\relax width\@tombowwidth height\z@
+ \jlreq@trimmarks@outputbanner{tate@bottom@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\adjustbaseline\hss\@bannerfont\jlreq@trimmarks@bannerfont##1}%
+ \ifx l\jlreq@trimmarks@engine
+ \jlreq@tempdima=\dimexpr 4pt + \ht\jlreq@tempboxa\relax
+ \else
+ \jlreq@tempdima=\dimexpr 4pt + \wd\jlreq@tempboxa\relax
+ \fi
+ \wd\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \kern-\jlreq@tempdima\raise 5mm\box\jlreq@tempboxa\kern\jlreq@tempdima
+ }%
+ \jlreq@trimmarks@outputbanner{intate@bottom@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\adjustbaseline\hss\@bannerfont\jlreq@trimmarks@bannerfont##1}%
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@left \ifx l\jlreq@trimmarks@engine + \ht\jlreq@tempboxa\fi\relax
+ \wd\jlreq@tempboxa=0pt \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \kern\jlreq@tempdima\box\jlreq@tempboxa\kern-\jlreq@tempdima
+ }%
+ }%
+ \hfill
+ \hbox to\z@{% \@Br
+ \yoko
+ \jlreq@trimmarks@outputbanner{tate@bottom@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\adjustbaseline\hss\@bannerfont\jlreq@trimmarks@bannerfont##1}%
+ \jlreq@tempdima=\dimexpr\ifx l\jlreq@trimmarks@engine\ht\jlreq@tempboxa + \fi 4pt\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern\jlreq@tempdima\raise5mm\box\jlreq@tempboxa\kern-\jlreq@tempdima
+ }%
+ \jlreq@trimmarks@outputbanner{intate@bottom@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\tate\adjustbaseline\hss\@bannerfont\jlreq@trimmarks@bannerfont##1}%
+ \ifx l\jlreq@trimmarks@engine
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@right + \ht\jlreq@tempboxa\relax
+ \else
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@right + \wd\jlreq@tempboxa\relax
+ \fi
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern-\jlreq@tempdima\box\jlreq@tempboxa\kern\jlreq@tempdima
+ }%
+ \vrule depth\dimexpr 10mm + \jlreq@trimmarks@bleed@bottom\relax width\@tombowwidth height\z@
+ \jlreq@trimmarks@outputbanner{corner@bottom@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\hskip 4pt\relax\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \jlreq@tempdima=\dimexpr\ht\jlreq@tempboxa + \jlreq@trimmarks@bleed@bottom + 4pt\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise-\jlreq@tempdima\box\jlreq@tempboxa
+ }%
+ \vrule width10mm depth\@tombowwidth height\z@\hss
+ }%
+ }%
+ \kern-10mm
+ \hbox to\@@paperwidth{%
+ \hskip\jlreq@trimmarks@bleed@left\relax
+ \setbox\jlreq@tempboxa=\hbox to\z@{% \@BL
+ \yoko\hss
+ \vrule width\dimexpr 10mm + \jlreq@trimmarks@bleed@left\relax depth\@tombowwidth height\z@
+ \jlreq@trimmarks@outputbanner{corner@bottom@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\hss\@bannerfont\jlreq@trimmarks@bannerfont##1\hskip\dimexpr\jlreq@trimmarks@bleed@left + 4pt\relax}%
+ \jlreq@tempdima=\dimexpr\ht\jlreq@tempboxa + 4pt\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise-\jlreq@tempdima\box\jlreq@tempboxa
+ }%
+ \vrule depth10mm width\@tombowwidth height\z@
+ \jlreq@trimmarks@outputbanner{yoko@bottom@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\yoko\hskip 5mm\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \jlreq@tempdima=\dimexpr\ht\jlreq@tempboxa + 4pt\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise-\jlreq@tempdima\box\jlreq@tempboxa
+ }%
+ \jlreq@trimmarks@outputbanner{inyoko@bottom@left}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\yoko\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \jlreq@tempdima=\dimexpr\jlreq@trimmarks@bleed@bottom + \dp\jlreq@tempboxa\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise\jlreq@tempdima\box\jlreq@tempboxa
+ }%
+ }%
+ \ht\jlreq@tempboxa=0pt
+ \box\jlreq@tempboxa
+ \hfill
+ \setbox\jlreq@tempboxa=\hbox{% \@BC
+ \yoko
+ \vrule width10mm depth\@tombowwidth height\z@
+ \jlreq@trimmarks@outputbanner{before@bottom@center}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\hss\@bannerfont\jlreq@trimmarks@bannerfont##1\hskip 5mm}%
+ \jlreq@tempdima=\dimexpr\ht\jlreq@tempboxa + 4pt\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise-\jlreq@tempdima\box\jlreq@tempboxa
+ }%
+ \jlreq@trimmarks@outputbanner{in@bottom@center}{%
+ \setbox\jlreq@tempboxa=\hbox{\@bannerfont\jlreq@trimmarks@bannerfont##1}%
+ \jlreq@tempdima=\dimexpr\dp\jlreq@tempboxa + \jlreq@trimmarks@bleed@bottom\relax
+ \jlreq@tempdimb=.5\wd\jlreq@tempboxa
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt \wd\jlreq@tempboxa=0pt
+ \kern-\jlreq@tempdimb\raise\jlreq@tempdima\box\jlreq@tempboxa\kern\jlreq@tempdimb
+ }%
+ \vrule depth10mm width\@tombowwidth height\z@
+ \jlreq@trimmarks@outputbanner{before@bottom@center}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\hskip 5mm\@bannerfont\jlreq@trimmarks@bannerfont##1\hss}%
+ \jlreq@tempdima=\dimexpr\ht\jlreq@tempboxa + 4pt\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise-\jlreq@tempdima\box\jlreq@tempboxa
+ }%
+ \vrule width10mm depth\@tombowwidth height\z@
+ }%
+ \ht\jlreq@tempboxa=0pt
+ \box\jlreq@tempboxa
+ \hfill
+ \setbox\jlreq@tempboxa=\hbox to 0pt{% \@BR
+ \yoko
+ \jlreq@trimmarks@outputbanner{yoko@bottom@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\yoko\hss\@bannerfont\jlreq@trimmarks@bannerfont##1\hskip 5mm}%
+ \jlreq@tempdima=\dimexpr\ht\jlreq@tempboxa + 4pt\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise-\jlreq@tempdima\box\jlreq@tempboxa
+ }%
+ \jlreq@trimmarks@outputbanner{inyoko@bottom@right}{%
+ \setbox\jlreq@tempboxa=\hbox to 0pt{\yoko\hss\@bannerfont\jlreq@trimmarks@bannerfont##1}%
+ \jlreq@tempdima=\dimexpr\dp\jlreq@tempboxa + \jlreq@trimmarks@bleed@bottom\relax
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \raise\jlreq@tempdima\box\jlreq@tempboxa
+ }%
+ \vrule depth10mm width\@tombowwidth height\z@
+ \vrule width\dimexpr 10mm + \jlreq@trimmarks@bleed@right\relax depth\@tombowwidth height\z@\hss
+ }%
+ \ht\jlreq@tempboxa=0pt \dp\jlreq@tempboxa=0pt
+ \box\jlreq@tempboxa
+ \hskip\jlreq@trimmarks@bleed@right
+ }%
+ \color@endgroup}\vss
+ }%
+}
+\def\@outputtombow{%
+ % 6mm = \@tombowbleed: from plcore
+ \@@paperwidth=\dimexpr\@@paperwidth - 6mm + \dimexpr\jlreq@trimmarks@bleed@left + \jlreq@trimmarks@bleed@right\relax\relax
+ \@@paperheight=\dimexpr\@@paperheight - 6mm + \dimexpr\jlreq@trimmarks@bleed@top + \jlreq@trimmarks@bleed@bottom\relax\relax
+ \ifjlreq@trimmarks@show\expandafter\jlreq@trimmarks@outputtombow\fi
+}
+
+\ifjlreq@trimmarks@digital
+ \ifx l\jlreq@trimmarks@engine
+ \setlength\jlreq@resultdimen{1pt}
+ \else
+ \jlreq@helper@divide{\the\mag pt}{1000pt}
+ \fi
+ % 0.9963 = 1pt/1bp (almost)
+ \edef\jlreq@trimmarks@pttobp#1{\noexpand\strip@pt\noexpand\dimexpr\strip@pt\jlreq@resultdimen\noexpand\dimexpr0.9963\noexpand\dimexpr#1\unexpanded{\relax\relax\relax}}
+ \edef\jlreq@trimmarks@trimboxsize{%
+ [%
+ \jlreq@trimmarks@pttobp{(\jlreq@trimmarks@paperwidth - \paperwidth)/2}
+ \jlreq@trimmarks@pttobp{(\jlreq@trimmarks@paperheight - \paperheight)/2}
+ \jlreq@trimmarks@pttobp{(\jlreq@trimmarks@paperwidth + \paperwidth)/2}
+ \jlreq@trimmarks@pttobp{(\jlreq@trimmarks@paperheight + \paperheight)/2}%
+ ]
+ }
+ \jlreq@tempcnta=\c@page
+ \def\@tempa{%
+ [%
+ \jlreq@trimmarks@pttobp{(\jlreq@trimmarks@paperwidth - \paperwidth)/2 - \jlreq@trimmarks@bleed@left}
+ \jlreq@trimmarks@pttobp{(\jlreq@trimmarks@paperheight - \paperheight)/2 - \jlreq@trimmarks@bleed@bottom}
+ \jlreq@trimmarks@pttobp{(\jlreq@trimmarks@paperwidth + \paperwidth)/2 + \jlreq@trimmarks@bleed@right}
+ \jlreq@trimmarks@pttobp{(\jlreq@trimmarks@paperheight + \paperheight)/2 + \jlreq@trimmarks@bleed@top}%
+ ]
+ }
+ \c@page=1
+ \edef\jlreq@trimmarks@bleedboxsize@odd{\@tempa}
+ \c@page=2
+ \edef\jlreq@trimmarks@bleedboxsize@even{\@tempa}%
+ \c@page=\jlreq@tempcnta
+ \edef\jlreq@trimmarks@pdfattribute@odd{%
+ /TrimBox \jlreq@trimmarks@trimboxsize
+ \ifjlreq@trimmarks@show@artbox /ArtBox \jlreq@trimmarks@trimboxsize\fi
+ /BleedBox \jlreq@trimmarks@bleedboxsize@odd
+ }
+ \edef\jlreq@trimmarks@pdfattribute@even{%
+ /TrimBox \jlreq@trimmarks@trimboxsize
+ \ifjlreq@trimmarks@show@artbox /ArtBox \jlreq@trimmarks@trimboxsize\fi
+ /BleedBox \jlreq@trimmarks@bleedboxsize@even
+ }
+ \jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@pttobp}
+ \jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@trimboxsize}
+ \jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@bleedboxsize@odd}
+ \jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@bleedboxsize@even}
+ \jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@pdfattribute@odd}
+ \jlreq@trimmarks@afterpkg@addtodeletecs{\jlreq@trimmarks@pdfattribute@even}
+
+ \begingroup
+ \c@page=1
+ \jlreq@tempdima=\jlreq@trimmarks@bleed@left
+ \c@page=2
+ \ifdim\jlreq@trimmarks@bleed@left=\jlreq@tempdima
+ \global\let\jlreq@tempa\@firstoftwo
+ \else
+ \global\let\jlreq@tempa\@secondoftwo
+ \fi
+ \endgroup
+ \jlreq@tempa{
+ % no difference between odd pages and even pages
+ \ifx l\jlreq@trimmarks@driver
+ \edef\@tempa{\noexpand\pdfvariable pageattr{\jlreq@trimmarks@pdfattribute@odd}}
+ \@tempa
+ \fi
+ \ifx f\jlreq@trimmarks@driver
+ \epreto\@outputtombow{\noexpand\special{pdf: put @thispage <<\jlreq@trimmarks@pdfattribute@odd>>}}
+ \fi
+ \ifx s\jlreq@trimmarks@driver
+ \edef\@tempa{\noexpand\special{ps:SDict begin
+ [ /TrimBox \jlreq@trimmarks@trimboxsize /PAGE pdfmark
+ \ifjlreq@trimmarks@show@artbox [ /ArtBox \jlreq@trimmarks@trimboxsize /PAGE pdfmark \fi
+ [ /BleedBox \jlreq@trimmarks@bleedboxsize@odd /PAGE pdfmark
+ end}}%
+ \@tempa
+ \fi
+ }{
+ \ifx l\jlreq@trimmarks@driver
+ % in \@outputtombow, it's too late
+ \epreto\@outputpage{%
+ \unexpanded{\ifodd\c@page\pdfvariable} pageattr{\jlreq@trimmarks@pdfattribute@odd}%
+ \unexpanded{\else\pdfvariable} pageattr{\jlreq@trimmarks@pdfattribute@even}\noexpand\fi
+ }
+ \fi
+ \ifx f\jlreq@trimmarks@driver
+ \epreto\@outputtombow{%
+ \unexpanded{\ifodd\c@page\special}{pdf: put @thispage <<\jlreq@trimmarks@pdfattribute@odd>>}%
+ \unexpanded{\else\special}{pdf: put @thispage <<\jlreq@trimmarks@pdfattribute@even>>}\noexpand\fi
+ }
+ \fi
+ \ifx s\jlreq@trimmarks@driver
+ \epreto\@outputtombow{%
+ \unexpanded{\ifodd\c@page\special}{ps:SDict begin
+ [ /TrimBox \jlreq@trimmarks@trimboxsize /PAGE pdfmark
+ \ifjlreq@trimmarks@show@artbox [ /ArtBox \jlreq@trimmarks@trimboxsize /PAGE pdfmark \fi
+ [ /BleedBox \jlreq@trimmarks@bleedboxsize@odd /PAGE pdfmark
+ end}\unexpanded{\else\special}{ps:SDict begin
+ [ /TrimBox \jlreq@trimmarks@trimboxsize /PAGE pdfmark
+ \ifjlreq@trimmarks@show@artbox [ /ArtBox \jlreq@trimmarks@trimboxsize /PAGE pdfmark \fi
+ [ /BleedBox \jlreq@trimmarks@bleedboxsize@even /PAGE pdfmark
+ end}\noexpand\fi
+ }
+ \fi
+ }
+\fi
+
+% always true
+\tombowtrue
+
+
+\endinput
diff --git a/language/japanese/jlreq/jlreq.cls b/language/japanese/jlreq/jlreq.cls
new file mode 100644
index 0000000000..25758ea7ab
--- /dev/null
+++ b/language/japanese/jlreq/jlreq.cls
@@ -0,0 +1,5877 @@
+%% Japanese document class based on requirements for Japanese text layout
+%%
+%% The package is distributed under the BSD 2-Clause License
+%%
+%%
+% (based on JLReq 20120403 https://www.w3.org/TR/2012/NOTE-jlreq-20120403/ja/)
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{jlreq}[2019/05/07 jlreq]
+\RequirePackage{xkeyval,everyhook,filehook,etoolbox,ifthen}
+\RequirePackage{jlreq-helpers}
+
+\newcommand*{\jlreq@undeferr}[1]{\ClassError{jlreq}{Trying to delete \string#1 even though it is not defined, may be a bug}{\@ehc}}
+% クラスファイル内でしか使わないマクロをクラスファイル終了時に未定義にする
+\newcommand*{\jlreq@aftercls@addtodeletecs}[1]{%
+ \appto\jlreq@aftercls@deletecslist{\jlreq@helper@undefcs{#1}{\jlreq@undeferr}}%
+}
+\newcommand*{\jlreq@aftercls@addtodeleteif}[1]{%
+ \appto\jlreq@aftercls@deletecslist{\jlreq@helper@undefif{#1}{\jlreq@undeferr}}%
+}
+\jlreq@aftercls@addtodeletecs{\jlreq@aftercls@addtodeletecs}
+\jlreq@aftercls@addtodeletecs{\jlreq@aftercls@addtodeleteif}
+\AtEndOfClass{%
+ \jlreq@aftercls@deletecslist
+ \jlreq@helper@undefcs{\jlreq@aftercls@deletecslist}{\jlreq@undeferr}%
+ \undef{\jlreq@undeferr}%
+}
+
+% preambleにいるかのスイッチ
+\newif\ifjlreq@preamble
+\jlreq@preambletrue
+\AtBeginDocument{\jlreq@preamblefalse}
+
+\def\jlreq@saveoriginalcs#1{%
+ \ifx#1\relax
+ \ClassError{jlreq}{Trying to save \string#1 but it's not defined, may be a bug}{\@ehc}%
+ \fi
+ \expandafter\ifx\csname jlreq@original@\expandafter\@gobble\string#1\endcsname\relax\else
+ \ClassError{jlreq}{Trying to save \string#1 twice, may be a bug}{\@ehc}%
+ \fi
+ \expandafter\let\csname jlreq@original@\expandafter\@gobble\string#1\endcsname=#1
+}
+\def\jlreq@useoriginalcs#1{%
+ \jlreq@if{\ifcsname jlreq@original@\expandafter\@gobble\string#1\endcsname\fi}%
+ {\csname jlreq@original@\expandafter\@gobble\string#1\endcsname}%
+ {#1}%
+}
+
+%. オプションの定義
+% オプション処理の際にしか使わない変数(後でそれを元に別の変数を調整する)
+% ものは\jlreq@option@<key>に格納する.
+% _とかは@に変換する.
+% 引数無しの\DeclareOptionX
+\newcommand*{\jlreq@DeclareOption}[2]{%
+ \DeclareOptionX{#1}{%
+ \jlreq@ifempty{##1}{}{\ClassError{jlreq}{The option #1 should have no value}{\@ehc}}%
+ #2%
+ }
+}
+\jlreq@aftercls@addtodeletecs{\jlreq@DeclareOption}
+% エンジン類
+\jlreq@DeclareOption{uplatex}{\let\jlreq@engine=u}
+\jlreq@DeclareOption{platex}{\let\jlreq@engine=p}
+\jlreq@DeclareOption{lualatex}{\let\jlreq@engine=l}
+
+% 文書のタイプ
+\newcommand*\jlreq@article@type{article}
+\define@choicekey{jlreq.cls}{article_type}{article,report,book}{\renewcommand*{\jlreq@article@type}{#1}}
+\jlreq@DeclareOption{article}{\renewcommand*{\jlreq@article@type}{article}}
+\jlreq@DeclareOption{report}{\renewcommand*{\jlreq@article@type}{report}}
+\jlreq@DeclareOption{book}{\renewcommand*{\jlreq@article@type}{book}}
+
+%.. 基本版面.まずは紙サイズ.
+\def\jlreq@switchpapersize{}
+\jlreq@aftercls@addtodeletecs{\jlreq@switchpapersize}
+% \jlreq@addpapersize{paper=に指定するもの}{単独オプション名}{横}{縦}
+
+\def\jlreq@addpapersize#1#2{%
+ \@ifnextchar[{\jlreq@addpapersize@{#1}{#2}}{\jlreq@addpapersize@@{#1}{#2}}%
+}
+\def\jlreq@addpapersize@#1#2[#3]{%
+ \edef\@tempa{\unexpanded{\jlreq@addpapersize@@{#1}{#2}}\csexpandonce{jlreq@helper@papersizelist@#3}}%
+ \@tempa
+}
+\newcommand*{\jlreq@addpapersize@@}[4]{%
+ \@for\@tempa:=#1\do{%
+ \eappto\jlreq@switchpapersize{{\expandonce{\@tempa}}{\unexpanded{\setlength{\paperwidth}{#3}\setlength{\paperheight}{#4}}}}%
+ }%
+ \@for\@tempa:=#2\do{%
+ \expandafter\jlreq@DeclareOption\expandafter{\@tempa}{\setlength{\paperwidth}{#3}\setlength{\paperheight}{#4}}%
+ }%
+}
+\jlreq@aftercls@addtodeletecs{\jlreq@addpapersize}
+\jlreq@aftercls@addtodeletecs{\jlreq@addpapersize@}
+\jlreq@aftercls@addtodeletecs{\jlreq@addpapersize@@}
+\DeclareOptionX{paper}{
+ \edef\jlreq@do{%
+ \unexpanded{\jlreq@switch{#1}}{\expandonce{\jlreq@switchpapersize}}%
+ [\unexpanded{%
+ \jlreq@helper@dividebycomma{#1}%
+ \ifjlreq@result
+ \setlength{\paperwidth}{\dimexpr\jlreq@resulta\relax}%
+ \setlength{\paperheight}{\dimexpr\jlreq@resultb\relax}%
+ \else
+ \ClassError{jlreq}{The paper #1 is unknown}{\@ehc}%
+ \fi
+ }]%
+ }%
+ \jlreq@do
+}
+% 紙サイズ一覧.b*はJIS B.
+\jlreq@addpapersize{a0,A0}{}[a0]
+\jlreq@addpapersize{a1,A1}{}[a1]
+\jlreq@addpapersize{a2,A2}{}[a2]
+\jlreq@addpapersize{a3,A3}{a3paper}[a3]
+\jlreq@addpapersize{a4,A4}{a4paper}[a4]
+\jlreq@addpapersize{a5,A5}{a5paper}[a5]
+\jlreq@addpapersize{a6,A6}{a6paper}[a6]
+\jlreq@addpapersize{a7,A7}{}[a7]
+\jlreq@addpapersize{a8,A8}{}[a8]
+\jlreq@addpapersize{a9,A9}{}[a9]
+\jlreq@addpapersize{a10,A10}{}[a10]
+
+\jlreq@addpapersize{b0,B0}{}[b0]
+\jlreq@addpapersize{b1,B1}{}[b1]
+\jlreq@addpapersize{b2,B2}{}[b2]
+\jlreq@addpapersize{b3,B3}{}[b3]
+\jlreq@addpapersize{b4,B4}{b4paper}[b4]
+\jlreq@addpapersize{b5,B5}{b5paper}[b5]
+\jlreq@addpapersize{b6,B6}{b6paper}[b6]
+\jlreq@addpapersize{b7,B7}{}[b7]
+\jlreq@addpapersize{b8,B8}{}[b8]
+\jlreq@addpapersize{b9,B9}{}[b9]
+\jlreq@addpapersize{b10,B10}{}[b10]
+
+\jlreq@addpapersize{c2,C2}{}[c2]
+\jlreq@addpapersize{c3,C3}{}[c3]
+\jlreq@addpapersize{c4,C4}{}[c4]
+\jlreq@addpapersize{c5,C5}{}[c5]
+\jlreq@addpapersize{c6,C6}{}[c6]
+\jlreq@addpapersize{c7,C7}{}[c7]
+\jlreq@addpapersize{c8,C8}{}[c8]
+
+\jlreq@addpapersize{a4var}{}[a4var]
+\jlreq@addpapersize{b5var}{}[b5var]
+
+\jlreq@addpapersize{letter}{letterpaper}[letter]
+\jlreq@addpapersize{legal}{legalpaper}[legal]
+\jlreq@addpapersize{executive}{executivepaper}[executive]
+\jlreq@addpapersize{hagaki}{}[hagaki]
+
+
+%.. フォントサイズ,行長,1ページあたりの行数で基本版面のサイズを決める(2.4.1.a)
+\newcommand*{\jlreq@option@fontsize}{}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@fontsize}
+\DeclareOptionX{fontsize}{\renewcommand*{\jlreq@option@fontsize}{#1}}
+\jlreq@DeclareOption{10pt}{\renewcommand*{\jlreq@option@fontsize}{10pt}}
+\jlreq@DeclareOption{11pt}{\renewcommand*{\jlreq@option@fontsize}{11pt}}
+\jlreq@DeclareOption{12pt}{\renewcommand*{\jlreq@option@fontsize}{12pt}}
+\newcommand*{\jlreq@option@jafontsize}{}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@jafontsize}
+\DeclareOptionX{jafontsize}{\renewcommand*{\jlreq@option@jafontsize}{#1}}
+\newcommand*{\jlreq@option@jafontscale}{1}
+\DeclareOptionX{jafontscale}{\renewcommand*{\jlreq@option@jafontscale}{#1}}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@jafontscale}
+%.. 行の長さ
+\newcommand*{\jlreq@option@line@length}{}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@line@length}
+\DeclareOptionX{line_length}{\renewcommand*{\jlreq@option@line@length}{#1}}
+%.. 1ページあたりの行数
+\newcommand*{\jlreq@option@number@of@lines}{}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@number@of@lines}
+\DeclareOptionX{number_of_lines}{\renewcommand*{\jlreq@option@number@of@lines}{#1}}
+
+% 地の空き量,のどの空き量で配置位置を決める(2.4.1.b)省略されたら中央配置.
+%.. 天
+\newcommand*{\jlreq@option@head@space}{}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@head@space}
+\DeclareOptionX{head_space}{\renewcommand*{\jlreq@option@head@space}{#1}}
+
+%.. 地
+\newcommand*{\jlreq@option@foot@space}{}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@foot@space}
+\DeclareOptionX{foot_space}{\renewcommand*{\jlreq@option@foot@space}{#1}}
+%.. のど
+\newcommand*{\jlreq@option@gutter}{}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@gutter}
+\DeclareOptionX{gutter}{\renewcommand*{\jlreq@option@gutter}{#1}}
+%.. 小口
+\newcommand*{\jlreq@option@fore@edge}{}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@fore@edge}
+\DeclareOptionX{fore_edge}{\renewcommand*{\jlreq@option@fore@edge}{#1}}% 昔にこっちにしていたので残している
+\DeclareOptionX{fore-edge}{\renewcommand*{\jlreq@option@fore@edge}{#1}}
+
+%.. 柱とノンブル
+\newcommand*{\jlreq@option@headfoot@verticalpos}{}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@headfoot@verticalpos}
+% 本文とヘッダ/フッタの間の空き
+\DeclareOptionX{headfoot_verticalposition}{\renewcommand*{\jlreq@option@headfoot@verticalpos}{#1}}
+% 柱やノンブルの左右の空き
+\newcommand*{\jlreq@headfoot@sidemargin}{0pt}
+\DeclareOptionX{headfoot_sidemargin}{\renewcommand*{\jlreq@headfoot@sidemargin}{#1}}
+
+%.. 段間
+\newcommand*{\jlreq@option@column@gap}{2zw}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@column@gap}
+\DeclareOptionX{column_gap}{\renewcommand*{\jlreq@option@column@gap}{#1}}
+
+%.. 行送り,指定無しの場合は文字サイズの1.7倍とする.(1.5から2倍が好ましい:2.4.2.d 注3)
+\newcommand*{\jlreq@option@baselineskip}{17zw/10}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@baselineskip}
+\DeclareOptionX{baselineskip}{\def\jlreq@option@baselineskip{#1}}
+\DeclareOptionX{linegap}{\def\jlreq@option@baselineskip{1zw + #1}}
+
+%.. 組み方系
+% 行頭に括弧が来たときの配置:3.1.5
+% 段落頭指定_折り返し行頭指定 で与える.
+\newcommand*{\jlreq@open@bracket@pos}{zenkaku_tentsuki}
+\define@choicekey{jlreq.cls}{open_bracket_pos}{zenkaku_tentsuki,zenkakunibu_nibu,nibu_tentsuki}{\renewcommand*{\jlreq@open@bracket@pos}{#1}}
+% ぶら下げ組みをするか:3.8.2 注1
+\newif\ifjlreq@burasage\jlreq@burasagefalse
+\jlreq@DeclareOption{hanging_punctuation}{\jlreq@burasagetrue}
+
+%.. 注
+% 傍注のタイプ
+\newcommand*{\jlreq@option@sidenote@length}{0pt}
+\jlreq@aftercls@addtodeletecs{\jlreq@option@sidenote@length}
+\DeclareOptionX{sidenote_length}{\renewcommand*{\jlreq@option@sidenote@length}{#1}}
+
+%.. 逆ノンブル
+\newif\ifjlreq@option@use@reverse@pagination
+\jlreq@aftercls@addtodeleteif{\ifjlreq@option@use@reverse@pagination}
+\jlreq@option@use@reverse@paginationfalse
+\jlreq@DeclareOption{use_reverse_pagination}{\jlreq@option@use@reverse@paginationtrue}
+
+%.. もろもろ
+\newif\if@restonecol\@restonecolfalse
+\newif\if@titlepage\@titlepagefalse
+\newif\if@landscape\@landscapefalse
+\newif\if@tate \@tatefalse
+\newif\ifjlreq@option@titlepage \jlreq@option@titlepagefalse % titlepageかnotitlepageかが指定された
+\jlreq@aftercls@addtodeleteif{\ifjlreq@option@titlepage}
+\jlreq@DeclareOption{landscape}{\@landscapetrue}
+\jlreq@DeclareOption{tombo}{\ClassWarningNoLine{jlreq}{The option `tombo' is not supported by jlreq class. Please use the jlreq-trimmarks package}}
+\jlreq@DeclareOption{tombow}{\ClassWarningNoLine{jlreq}{The option `tombow' is not supported by jlreq class. Please use the jlreq-trimmarks package}}
+\jlreq@DeclareOption{mentuke}{\ClassWarningNoLine{jlreq}{The option `mentuke' is not supported by jlreq class. Please use the jlreq-trimmarks package}}
+\jlreq@DeclareOption{tate}{\@tatetrue}
+
+\newif\ifjlreq@option@twoside\jlreq@option@twosidefalse % onesideかtwosideが指定された
+\jlreq@aftercls@addtodeleteif{\ifjlreq@option@twoside}
+\jlreq@DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse\jlreq@option@twosidetrue}
+\jlreq@DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue\jlreq@option@twosidetrue}
+\jlreq@DeclareOption{onecolumn}{\@twocolumnfalse}
+\jlreq@DeclareOption{twocolumn}{\@twocolumntrue}
+\jlreq@DeclareOption{titlepage}{\jlreq@option@titlepagetrue\@titlepagetrue}
+\jlreq@DeclareOption{notitlepage}{\jlreq@option@titlepagetrue\@titlepagefalse}
+\jlreq@DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\jlreq@DeclareOption{final}{\setlength\overfullrule{0pt}}
+\newif\if@openright
+\newif\ifjlreq@option@open \jlreq@option@openfalse % openrightかopenanyが指定された
+\jlreq@aftercls@addtodeleteif{\ifjlreq@option@open}
+\jlreq@DeclareOption{openright}{\@openrighttrue\jlreq@option@opentrue}
+\jlreq@DeclareOption{openany}{\@openrightfalse\jlreq@option@opentrue}
+\jlreq@DeclareOption{leqno}{\input{leqno.clo}}
+\jlreq@DeclareOption{fleqn}{\input{fleqn.clo}}
+\newif\ifjlreq@option@enablejfam \jlreq@option@enablejfamtrue
+\jlreq@aftercls@addtodeleteif{\ifjlreq@option@enablejfam}
+\jlreq@DeclareOption{disablejfam}{\jlreq@option@enablejfamfalse}
+
+\newcommand*{\jlreq@note}[1]{}
+\jlreq@DeclareOption{jlreq_notes}{\renewcommand*{\jlreq@note}[1]{\message{^^JJLReq note: ##1^^J}}}
+
+\ExecuteOptionsX{article_type=article,paper=a4,open_bracket_pos=zenkaku_tentsuki,onecolumn,final}
+% \@removeelementを一旦置き換えてから\ProcessOptionsXを実行する
+\let\jlreq@temporary@original@@removeelement=\@removeelement
+\let\@removeelement=\jlreq@helper@removeelement
+\ProcessOptionsX\relax
+\let\@removeelement=\jlreq@temporary@original@@removeelement
+\let\jlreq@temporary@original@@removeelement=\@undefined
+
+\ifjlreq@option@titlepage\else
+ \ifthenelse{\equal{\jlreq@article@type}{article}}{\@titlepagefalse}{\@titlepagetrue}
+\fi
+\ifjlreq@option@open\else
+ \ifthenelse{\equal{\jlreq@article@type}{book}}{\@openrighttrue}{\@openrightfalse}
+\fi
+% articleではopenrightは効かない.
+\ifthenelse{\equal{\jlreq@article@type}{article}}{%
+ \if@openright
+ \ClassWarningNoLine{jlreq}{The option `openright' is ignored in article}
+ \@openrightfalse
+ \fi
+}{}
+\ifjlreq@option@twoside\else
+ \ifthenelse{\equal{\jlreq@article@type}{book}}{\@twosidetrue}{\@twosidefalse}
+\fi
+
+\def\jlreq@jlreqsetup@keyvallist{}
+\def\jlreq@jlreqsetup@finally{}
+\newcommand{\jlreqsetup}[1]{%
+ \begingroup
+ \edef\jlreq@do{\unexpanded{\jlreq@parsekeyval[jlreqsetup]}{\expandonce{\jlreq@jlreqsetup@keyvallist}}}%
+ \expandafter\endgroup
+ \jlreq@do{#1}%
+ \jlreq@jlreqsetup@finally
+}
+% \jlreqsetupの項目に加えるマクロ.\jlreq@jlreqsetup@add{key}{action}とするとkeyに対して定義できる.
+% action内ではvalが#1として取得できる.(従ってaction内でマクロを定義する際には##1を使う必要がある.)
+\newcommand{\jlreq@jlreqsetup@add}[1]{%
+ \@ifnextchar[{\jlreq@jlreqsetup@add@{#1}}{\jlreq@jlreqsetup@add@@{#1}}%
+}
+\long\def\jlreq@jlreqsetup@add@#1[#2]#3{%
+ \eappto\jlreq@jlreqsetup@keyvallist{\unexpanded{{#1}[#2]{#3}}}%
+}
+\long\def\jlreq@jlreqsetup@add@@#1#2{%
+ \eappto\jlreq@jlreqsetup@keyvallist{\unexpanded{{#1}{#2}}}%
+}
+% \jlreqsetupの最後に必ず実行される処理を入れる.
+\newcommand\jlreq@jlreqsetup@addtofinally[1]{\eappto\jlreq@jlreqsetup@finally{\unexpanded{#1}}}
+\jlreq@aftercls@addtodeletecs{\jlreq@jlreqsetup@add}
+\jlreq@aftercls@addtodeletecs{\jlreq@jlreqsetup@add@}
+\jlreq@aftercls@addtodeletecs{\jlreq@jlreqsetup@add@@}
+\jlreq@aftercls@addtodeletecs{\jlreq@jlreqsetup@addtofinally}
+\@onlypreamble\jlreqsetup
+
+% エンジンの設定
+\ifx\jlreq@engine\@undefined
+ \jlreq@helper@guessengine
+ \let\jlreq@engine=\jlreq@result
+\fi
+
+
+% 必要パッケージのロード
+\ifx l\jlreq@engine
+ \ifjlreq@option@enablejfam
+ \RequirePackage{luatexja}
+ \else
+ \RequirePackage[disablejfam]{luatexja}
+ \fi
+ \directlua{jlreq = {}}
+\fi
+
+% (u)pLaTeXの場合ここで初めて\epTeXinputencodingが発行されるので,
+% これ以前には和文は使えない.
+\ifx l\jlreq@engine\else
+ \epTeXinputencoding utf8
+ \def\zw{zw}\def\zh{zh}
+ % http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=1508&parent=8435
+ \if@tate\AtEndPreamble{\par}\fi
+\fi
+\if@tate
+ \AtBeginDocument{\tate\message{《縦組モード》}\adjustbaseline}
+\fi
+
+% \jlreq@gol(Gyo Okuri Length), \jlreq@mol (Moji Okuri Length)を定義
+\let\jlreq@gol=\zh
+\let\jlreq@mol=\zw
+
+%. helper2(エンジン依存系:和文文字を含むものもこれ以降)
+% #1のboxを今の真ん中に配置する.
+\def\jlreq@box@putcenter#1{%
+ \begingroup
+ \jlreq@tempdima=\dimexpr(\ht#1 - \dp#1)/2\relax
+ \setbox\jlreq@tempboxa=\hbox{阿}%
+ \edef\jlreq@do{%
+ \noexpand\lower\the\dimexpr(\jlreq@tempdima - (\ht\jlreq@tempboxa - \dp\jlreq@tempboxa)/2)\relax\unexpanded{\box#1}%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+% #1の先頭が文字か
+\long\def\jlreq@ifletter#1{%
+ \jlreq@iffirsttoken{#1}{ }{\@secondoftwo}{%
+ \expandafter\expandafter\expandafter\jlreq@helper@ifletter\jlreq@getfirsttoken#1\jlreq@uniqtoken{}\jlreq@endmark@
+ }%
+}
+
+\long\def\jlreq@helper@ifletter#1{%
+ \jlreq@if{%
+ \ifnum
+ 0%
+ \ifcat 阿\noexpand #11\fi
+ \ifcat あ\noexpand #11\fi
+ \ifcat (\noexpand #11\fi
+ \ifcat A\noexpand #11\fi
+ \ifcat 1\noexpand #11\fi
+ >0
+ \fi}%
+}
+
+
+% 組方向を判定
+% \jlreq@if(y|t)(dir|box)を定義する.
+\jlreq@if{\ifx l\jlreq@engine\fi}{
+ \def\jlreq@ifydir{\jlreq@if{\ifnum\ltjgetparameter{direction}=4 \fi}}
+ \def\jlreq@iftdir{\jlreq@if{\ifnum\numexpr\ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8\relax=3 \fi}}
+ \def\jlreq@ifybox#1{\jlreq@if{\ifnum\ltjgetparameter{boxdir}{#1}=4 \fi}}
+ \def\jlreq@iftbox#1{\jlreq@if{\ifnum\numexpr\ltjgetparameter{boxdir}{#1}-(\ltjgetparameter{boxdir}{#1}/8)*8\relax=3 \fi}}
+}{
+ \def\jlreq@ifydir{\jlreq@if{\ifydir\fi}}
+ \def\jlreq@iftdir{\jlreq@if{\iftdir\fi}}
+ \def\jlreq@ifybox#1{\jlreq@if{\ifybox#1\fi}}
+ \def\jlreq@iftbox#1{\jlreq@if{\iftbox#1\fi}}
+}
+
+% 左ページであるか
+% #1 : odd or even or ページ数
+\def\jlreq@ifleftpage#1{%
+ \ifthenelse{\(\boolean{@tate} \AND
+ \(\equal{#1}{odd} \OR \(\(\NOT \equal{#1}{even}\) \AND \isodd{#1}\)\)
+ \) \OR \(\(\NOT \boolean{@tate}\) \AND
+ \(\equal{#1}{even} \OR \(\(\NOT \equal{#1}{odd}\) \AND \(\NOT \isodd{#1}\)\)\)
+ \)}%
+}
+
+\ifx l\jlreq@engine
+ \newcommand*{\jlreq@getpostbreakpenalty}[1]{\ltjgetparameter{postbreakpenalty}{#1}}
+\else
+ \newcommand*{\jlreq@getpostbreakpenalty}[1]{\postbreakpenalty#1}
+\fi
+
+% 現在行の残りを得る.
+\ifx l\jlreq@engine
+ % 以下のコードはLuaTeX-jaのバグ?に依存している
+ % https://ja.osdn.net/projects/luatex-ja/ticket/36489
+ \newcommand*{\jlreq@calc@current@linewidth@onecolumn}{%
+ \dimexpr
+ \jlreq@reference@ref{jlreq@rest@width.pos.X.\the\jlreq@reference@count}{0} sp - \@totalleftmargin -
+ \ifodd\jlreq@currentpage
+ \oddsidemargin
+ \else
+ \evensidemargin
+ \fi
+ \iftombow -1in \fi
+ - \pdfvariable horigin - \hoffset
+ \relax
+ }
+\else
+ % トンボ出力時にはjlreq-trimmarksであることを仮定する.
+ % 新しいpLaTeXに対しては,jlreq-trimmarksは内部の1inを1trueinに書き換える
+ \@ifundefined{@tombowreset@@paper}{
+ \def\jlreq@tombow@adjust{\iftombow -1in \fi}
+ }{
+ \def\jlreq@tombow@adjust{\iftombow -1truein \fi}
+ }
+ \newcommand*{\jlreq@calc@current@linewidth@onecolumn}{%
+ \dimexpr
+ \jlreq@ifydir{%
+ \jlreq@reference@ref{jlreq@rest@width.pos.X.\the\jlreq@reference@count}{0} sp - \hoffset
+ \ifodd\jlreq@currentpage
+ - \oddsidemargin
+ \else
+ - \evensidemargin
+ \fi
+ }{%
+ \ifdim\pdfpagewidth=0pt
+ \paperheight
+ \else
+ \pdfpageheight
+ \fi
+ - \topmargin - \headheight - \headsep - \voffset
+ - \jlreq@reference@ref{jlreq@rest@width.pos.Y.\the\jlreq@reference@count}{0} sp
+ }%
+ \jlreq@tombow@adjust
+ - \@totalleftmargin - 1in
+ \relax
+ }
+\fi
+\newcommand*{\jlreq@calc@current@linewidth}{%
+ \dimexpr\jlreq@calc@current@linewidth@onecolumn
+ \if@twocolumn
+ \ifdim\jlreq@calc@current@linewidth@onecolumn<\dimexpr\linewidth+\columnsep\relax\else
+ - \linewidth - \columnsep
+ \fi
+ \fi
+ \relax
+}
+
+\newdimen\jlreq@current@linewidth
+\newdimen\jlreq@rest@linewidth
+% この命令以降,次にこの命令を実行する前まで\jlreq@current@linewidth/\jlreq@rest@linewidthで
+% この行の行頭からの長さ/残りの長さが取得できる
+\jlreq@ifprimitive{\pdfsavepos}{\jlreq@tempatrue}{\jlreq@tempafalse}
+\edef\jlreq@savepos@for@rest@linewidth{\unexpanded{%
+ \jlreq@setcurrentpage
+ \global\advance\jlreq@reference@count by 1
+ }%
+ \ifjlreq@tempa
+ \unexpanded{%
+ \pdfsavepos
+ \jlreq@reference@label{jlreq@rest@width.pos.X.\the\jlreq@reference@count}{\noexpand\the\noexpand\pdflastxpos}%
+ \jlreq@reference@label{jlreq@rest@width.pos.Y.\the\jlreq@reference@count}{\noexpand\the\noexpand\pdflastypos}%
+ }%
+ \else
+ \unexpanded{%
+ \savepos
+ \jlreq@reference@label{jlreq@rest@width.pos.X.\the\jlreq@reference@count}{\noexpand\the\noexpand\lastxpos}%
+ \jlreq@reference@label{jlreq@rest@width.pos.Y.\the\jlreq@reference@count}{\noexpand\the\noexpand\lastypos}%
+ }%
+ \fi
+ \unexpanded{%
+ \global\jlreq@current@linewidth=\jlreq@calc@current@linewidth
+ \global\jlreq@rest@linewidth=\dimexpr\linewidth - \jlreq@current@linewidth\relax
+ \edef\jlreq@savepos@iflabelundefined{\jlreq@reference@ifexist{jlreq@rest@width.pos.X.\the\jlreq@reference@count}{\noexpand\@secondoftwo}{\noexpand\@firstoftwo}}%
+ }%
+}
+
+\ifx l\jlreq@engine
+ \newcommand*{\lastnodechar}{\directlua{luatexja.pltx_composite_last_node_char()}}% undocumentedな機能を使っている
+\fi
+
+% #1と#2の間に入るjmglue((x)kanjiskipも)を\jlreq@resultskipに入れる
+\ifx l\jlreq@engine
+ \newcommand*{\jlreq@calc@jfmglue}[2]{%
+ \begingroup
+ \setbox\jlreq@tempboxa=\hbox{\inhibitglue #1\inhibitglue\hbox{}\inhibitglue#2\inhibitglue}%
+ \setbox\jlreq@tempboxb=\hbox{\inhibitglue #1#2\inhibitglue}%
+ \edef\jlreq@do{\noexpand\jlreq@resultskip=\the\dimexpr\wd\jlreq@tempboxb - \wd\jlreq@tempboxa\relax\noexpand\relax}%
+ \jlreq@do
+ \directlua{
+ local width = 0
+ local stretch = 0
+ local shrink = 0
+ local n = tex.box["jlreq@tempboxb"].head
+ while n do
+ % すべてのglueの和を計算する.
+ if n.id == node.id("glue") then
+ width = width + n.width
+ stretch = stretch + n.stretch
+ shrink = shrink + n.shrink
+ end
+ n = n.next
+ end
+ tex.setglue("jlreq@tempskipa",width,stretch,shrink)
+ }%
+ % TeXで計測した物と一致していなければTeXでの方を信じる
+ \ifdim\jlreq@resultskip=\jlreq@tempskipa
+ \edef\jlreq@do{\noexpand\jlreq@resultskip=\the\jlreq@tempskipa\relax}%
+ \fi
+ \expandafter\endgroup
+ \jlreq@do
+ }
+\else
+ \newcommand*{\jlreq@calc@jfmglue}[2]{%
+ \begingroup
+ \setbox\jlreq@tempboxa=\hbox{\inhibitglue #1\inhibitglue\hbox{}\inhibitglue#2\inhibitglue}%
+ \setbox\jlreq@tempboxb=\hbox{\inhibitglue #1#2\inhibitglue}%
+ \edef\jlreq@do{\noexpand\jlreq@resultskip=\the\dimexpr\wd\jlreq@tempboxb - \wd\jlreq@tempboxa\relax\noexpand\relax}%
+ \expandafter\endgroup
+ \jlreq@do
+ }
+\fi
+
+\newcount\jlreq@lastnodechar
+% \jlreq@fixjfm<次の文字>の形で使う.
+% jlreq@lastnodecharに入っている値と次のトークン(\futureletで得る)の間に入るJFMグルー等を挿入する
+\newcommand*{\jlreq@fixjfm}{%
+ \begingroup
+ \ifnum\jlreq@lastnodechar>-1
+ \def\jlreq@do{\futurelet\jlreq@nextchar\jlreq@insertjfm}%
+ \else\def\jlreq@do{}\fi
+ \expandafter\endgroup
+ \jlreq@do
+}
+% \jlreq@nextcharと\jlreq@lastnodecharの間のJFMグルーを挿入
+\def\jlreq@insertjfm{%
+ \ifnum\jlreq@getpostbreakpenalty{\jlreq@lastnodechar}=0\else\penalty\jlreq@getpostbreakpenalty{\jlreq@lastnodechar}\fi
+ \begingroup
+ \def\jlreq@do{}%
+ \jlreq@getfirsttoken@expandmacros{\jlreq@nextchar}{\jlreq@tempa}%
+ \expandafter\jlreq@ifletter\expandafter{\jlreq@tempa}{%
+ \jlreq@calc@jfmglue{\char\jlreq@lastnodechar}{\jlreq@tempa}%
+% \message{fixjfm Insert: \the\jlreq@resultskip}%
+ \edef\jlreq@do{%
+ \noexpand\hskip\the\jlreq@resultskip\space
+ \noexpand\inhibitglue
+ }%
+ }{}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\ifx l\jlreq@engine
+ \newcommand*{\jlreq@divide}[2]{%
+ \jlreq@resultdimen=\directlua{tex.print(tostring(\strip@pt\dimexpr #1\relax/\strip@pt\dimexpr #2\relax) .. "pt ")}%
+ }
+\else
+ \let\jlreq@divide=\jlreq@helper@divide
+\fi
+
+%. 基本設定
+\providecommand*{\jlreqkanjiskip}{0pt plus 0.25\zw minus 0pt}
+\providecommand*{\jlreqxkanjiskip}{0.25\zw plus 0.25\zw minus 0.125\zw}
+\ifx l\jlreq@engine
+ \ltjsetparameter{kanjiskip=\jlreqkanjiskip}
+ \ltjsetparameter{xkanjiskip=\jlreqxkanjiskip}
+\else
+ \kanjiskip=\jlreqkanjiskip
+ \xkanjiskip=\jlreqxkanjiskip
+\fi
+
+% 文字クラスのリスト(必要なものだけ)
+% 開き括弧(文字クラス1)
+\edef\jlreq@charlist@openingbrackets{(〔[{〈《「『【‘“\ifx p\jlreq@engine\else ⦅〘〖«〝\fi}
+% 閉じ括弧(文字クラス2)
+\edef\jlreq@charlist@closingbrackets{)〕]}〉》」』】’”\ifx p\jlreq@engine\else ⦆〙〗»〟\fi}
+% ハイフン(文字クラス3)
+\edef\jlreq@charlist@hyphens{‐〜\ifx p\jlreq@engine\else ゠–\fi}
+% 区切り約物(文字クラス4)
+\edef\jlreq@charlist@dividingpunctuationmarks{!?\ifx p\jlreq@engine\else ‼⁇⁈⁉\fi}
+% 中点類(文字クラス5)
+\edef\jlreq@charlist@middlenodes{・:;}
+% 句点類(文字クラス6)
+\edef\jlreq@charlist@fullstops{。.}
+% 読点類(文字クラス7)
+\edef\jlreq@charlist@commas{、,}
+% 分離禁止文字(文字クラス8)
+\edef\jlreq@charlist@inseparablecharacters{—…‥\ifx p\jlreq@engine\else 〳〴〵\fi}
+% 繰返し記号(文字クラス9)
+\edef\jlreq@charlist@iterationmarks{ヽヾゝゞ々\ifx p\jlreq@engine\else 〻\fi}
+% 長音記号(文字クラス10)
+\edef\jlreq@charlist@prolongedsoundmark{ー}
+% 小書きの仮名(文字クラス11)
+\edef\jlreq@charlist@smallkana{ぁぃぅぇぉァィゥェォっゃゅょゎッャュョヮヵヶ\ifx p\jlreq@engine\else ゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ\fi}%ㇷ゚
+% 前置省略記号(文字クラス12)
+\edef\jlreq@charlist@prefixedabbreviations{¥$£#\ifx p\jlreq@engine\else €№\fi}
+% 平仮名(文字クラス15)
+\edef\jlreq@charlist@hiragana{あいうえおかがきぎくぐけげこごさざしじすずせぜそぞただちぢつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもやゆよらりるれろわゐゑをん\ifx p\jlreq@engine\else ゔ\fi}% か゚き゚く゚け゚こ゚
+% 片仮名(文字クラス16)
+\edef\jlreq@charlist@katakana{アイウエオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモヤユヨラリルレロワヰヱヲンヴ\ifx p\jlreq@engine\else ヷヸヹヺ\fi}% カ゚キ゚ク゚ケ゚コ゚セ゚ツ゚ト゚
+
+\ifx l\jlreq@engine
+ \newcommand*{\jlreq@setpostbreakpenalty@}[2]{\ltjsetparameter{postbreakpenalty={`#1,#2}}}
+ \newcommand*{\jlreq@setprebreakpenalty@}[2]{\ltjsetparameter{prebreakpenalty={`#1,#2}}}
+ \newcommand*{\jlreq@addjaxspmode@}[2]{%
+ \jlreq@tempcnta=\ltjgetparameter{jaxspmode}{`#1}%
+ \jlreq@switch{#2}{
+ {pre}{%
+ \ifnum\jlreq@tempcnta=2
+ \ltjsetparameter{jaxspmode={`#1,allow}}%
+ \else\ifnum\jlreq@tempcnta=0
+ \ltjsetparameter{jaxspmode={`#1,preonly}}%
+ \fi\fi
+ }
+ {post}{%
+ \ifnum\jlreq@tempcnta=1
+ \ltjsetparameter{jaxspmode={`#1,allow}}%
+ \else\ifnum\jlreq@tempcnta=0
+ \ltjsetparameter{jaxspmode={`#1,postonly}}%
+ \fi\fi
+ }
+ }%
+ }
+ \newcommand*{\jlreq@deljaxspmode@}[2]{%
+ \jlreq@tempcnta=\ltjgetparameter{jaxspmode}{`#1}%
+ \jlreq@switch{#2}{
+ {pre}{%
+ \ifnum\jlreq@tempcnta=2
+ \ltjsetparameter{jaxspmode={`#1,postonly}}%
+ \else\ifnum\jlreq@tempcnta=1
+ \ltjsetparameter{jaxspmode={`#1,inhibit}}%
+ \fi\fi
+ }
+ {post}{%
+ \ifnum\jlreq@tempcnta=3
+ \ltjsetparameter{jaxspmode={`#1,preonly}}%
+ \else\ifnum\jlreq@tempcnta=2
+ \ltjsetparameter{jaxspmode={`#1,inhibit}}%
+ \fi\fi
+ }
+ }%
+ }
+\else
+ \newcommand*{\jlreq@setpostbreakpenalty@}[2]{\postbreakpenalty`#1=#2}
+ \newcommand*{\jlreq@setprebreakpenalty@}[2]{\prebreakpenalty`#1=#2}
+ \newcommand*{\jlreq@addjaxspmode@}[2]{%
+ \jlreq@tempcnta=\inhibitxspcode`#1
+ \jlreq@switch{#2}{
+ {pre}{%
+ \ifnum\jlreq@tempcnta=1
+ \inhibitxspcode`#1=3
+ \else\ifnum\jlreq@tempcnta=0
+ \inhibitxspcode`#1=2
+ \fi\fi
+ }
+ {post}{%
+ \ifnum\jlreq@tempcnta=2
+ \inhibitxspcode`#1=3
+ \else\ifnum\jlreq@tempcnta=0
+ \inhibitxspcode`#1=1
+ \fi\fi
+ }
+ }%
+ }
+ \newcommand*{\jlreq@deljaxspmode@}[2]{%
+ \jlreq@tempcnta=\inhibitxspcode`#1
+ \jlreq@switch{#2}{
+ {pre}{%
+ \ifnum\jlreq@tempcnta=3
+ \inhibitxspcode`#1=1
+ \else\ifnum\jlreq@tempcnta=2
+ \inhibitxspcode`#1=0
+ \fi\fi
+ }
+ {post}{%
+ \ifnum\jlreq@tempcnta=3
+ \inhibitxspcode`#1=2
+ \else\ifnum\jlreq@tempcnta=1
+ \inhibitxspcode`#1=0
+ \fi\fi
+ }
+ }%
+ }
+\fi
+% #1{...}{#3}を...が#2のリストに対して適用.
+\newcommand*\jlreq@iterateapply[3]{%
+ \edef\jlreq@tempa{#2}%
+ \expandafter\@tfor\expandafter\@tempa\expandafter:\expandafter=\jlreq@tempa\do{%
+ \expandafter#1\expandafter{\@tempa}{#3}%
+ }%
+}
+\def\jlreq@setpostbreakpenalty{\jlreq@iterateapply{\jlreq@setpostbreakpenalty@}}
+\def\jlreq@setprebreakpenalty{\jlreq@iterateapply{\jlreq@setprebreakpenalty@}}
+\def\jlreq@addjaxspmode{\jlreq@iterateapply{\jlreq@addjaxspmode@}}
+\def\jlreq@deljaxspmode{\jlreq@iterateapply{\jlreq@deljaxspmode@}}
+
+\jlreq@aftercls@addtodeletecs{\jlreq@iterateapply}
+\jlreq@aftercls@addtodeletecs{\jlreq@setpostbreakpenalty}
+\jlreq@aftercls@addtodeletecs{\jlreq@setpostbreakpenalty@}
+\jlreq@aftercls@addtodeletecs{\jlreq@setprebreakpenalty}
+\jlreq@aftercls@addtodeletecs{\jlreq@setprebreakpenalty@}
+\jlreq@aftercls@addtodeletecs{\jlreq@addjaxspmode}
+\jlreq@aftercls@addtodeletecs{\jlreq@addjaxspmode@}
+\jlreq@aftercls@addtodeletecs{\jlreq@deljaxspmode}
+\jlreq@aftercls@addtodeletecs{\jlreq@deljaxspmode@}
+
+% 行末禁則
+\jlreq@setpostbreakpenalty{\jlreq@charlist@openingbrackets}{10000}
+\jlreq@setpostbreakpenalty{\jlreq@charlist@prefixedabbreviations}{10000}
+
+% 行頭禁則
+\jlreq@setprebreakpenalty{\jlreq@charlist@closingbrackets}{10000}
+\jlreq@setprebreakpenalty{\jlreq@charlist@hyphens}{10000}
+\jlreq@setprebreakpenalty{\jlreq@charlist@dividingpunctuationmarks}{10000}
+\jlreq@setprebreakpenalty{\jlreq@charlist@middlenodes}{10000}
+\jlreq@setprebreakpenalty{\jlreq@charlist@fullstops}{10000}
+\jlreq@setprebreakpenalty{\jlreq@charlist@commas}{10000}
+\jlreq@setprebreakpenalty{\jlreq@charlist@iterationmarks}{10000}
+\jlreq@setprebreakpenalty{\jlreq@charlist@prolongedsoundmark}{10000}
+\jlreq@setprebreakpenalty{\jlreq@charlist@smallkana}{10000}
+
+% xkanjiskip
+\jlreq@addjaxspmode{\jlreq@charlist@iterationmarks}{pre}
+\jlreq@addjaxspmode{\jlreq@charlist@iterationmarks}{post}
+\jlreq@addjaxspmode{\jlreq@charlist@prolongedsoundmark}{pre}
+\jlreq@addjaxspmode{\jlreq@charlist@prolongedsoundmark}{post}
+\jlreq@addjaxspmode{\jlreq@charlist@smallkana}{pre}
+\jlreq@addjaxspmode{\jlreq@charlist@smallkana}{post}
+\jlreq@addjaxspmode{\jlreq@charlist@hiragana}{pre}
+\jlreq@addjaxspmode{\jlreq@charlist@hiragana}{post}
+\jlreq@addjaxspmode{\jlreq@charlist@katakana}{pre}
+\jlreq@addjaxspmode{\jlreq@charlist@katakana}{post}
+\jlreq@addjaxspmode{\jlreq@charlist@dividingpunctuationmarks}{post}
+
+% 分割禁止(分離禁止文字は特定の並びで分割禁止だが,とりあえず一括で禁止しておく.)
+\jlreq@setprebreakpenalty{\jlreq@charlist@inseparablecharacters}{10000}
+% ¥100とか70%とか……
+
+%.. 文字範囲
+\ifx u\jlreq@engine
+ % \kcatcodeの設定
+ \def\jlreq@setkcatcode#1#2{\@for\@tempa:=#1\do{\kcatcode"\@tempa=#2\relax}}
+ \jlreq@aftercls@addtodeletecs{\jlreq@setkcatcode}
+ % LuaTeX-jaのデフォルトのままに近い設定をする
+ % 範囲1&8
+ \jlreq@setkcatcode{80}{15} % Latin-1 Supplement,どうしよう……
+ \jlreq@setkcatcode{100,180,250,2B0,300,1E00}{15}
+ % 範囲2
+ \jlreq@setkcatcode{370,400,1F00}{18}
+ % 範囲3
+ \jlreq@setkcatcode{2000,2070,20A0,20D0,2100,2150,2190,2200,2300,2400,2500,2580,25A0,2600,2700,2900,2980,2B00}{18}
+ % 範囲4
+ \jlreq@setkcatcode{500,530,590,600,700,750,780,7C0,800,840,8A0,900,980,A00,A80,B00,B80,C00,C80,D00,D80,E00,E80,F00,1000,10A0,1200,1380,13A0,1400,1680,16A0,1700,1720,1740,1760,1780,1800,18B0,1900,1950,1980,19E0,1A00,1A20,1AB0,1B00,1B80,1BC0,1C00,1C50,1C80,1CC0,1CD0,1D00,1D80,1DC0,2400,2440,27C0,27F0,2800,2A00,2C00,4DC0,A4D0,A500,A640,A6A0,A700,A720,A800,A840,A880,A8E0,A900,A930,A960,A980,A9E0,AA00,AA60,AA80,AAE0,AB00,AB30,AB70,ABC0,FB00,FB50,FE00,FE20,FE70,10000,10080,10100,10140,10190,101D0,10280,102A0,102E0,10300,10330,10350,10380,103A0,10400,10450,10480,104B0,10500,10530,10600,10800,10840,10860,10880,108E0,10900,10920,10980,109A0,10A00,10A60,10A80,10AC0,10B00,10B40,10B60,10B80,10C00,10C80,10E60,11000,11080,110D0,11100,11150,11180,111E0,11200,11280,112B0,11300,11400,11480,11580,11600,11660,11680,11700,118A0,11AC0,11C00,11C70,12000,12400,12480,13000,14400,16800,16A40,16AD0,16B00,16F00,16FE0,17000,18800,1B000,1BC00,1BCA0,1D000,1D100,1D200,1D300,1D360,1D400,1D800,1E000,1E800,1E900,1EE00,1F000,1F030,1F0A0,1F100,1F200,1F300,1F600,1F650,1F680,1F700,1F780,1F800,1F900,E000}{15}
+ % 範囲5(Variation Selectors SupplementはLuaTeX-jaではE01F0--E01EFまで範囲5,他は範囲6)
+ \jlreq@setkcatcode{D800,DB80,DC00,E0000,F0000,100000}{15}
+ % 範囲6
+ \jlreq@setkcatcode{3040,30A0,31F0}{17} % Hiragana,Katakana,Katakana Phonetic Extensions
+ \jlreq@setkcatcode{2460,3000,3200,3300,FE10,FE30,FE50,E0100}{18} % Enclosed Alphanumerics,CJK Symbols and Punctuation,Enclosed CJK Letters and Months,CJK Compatibility,Vertical Forms,CJK Compatibility Forms,Small Form Variants,Variation Selectors Supplement
+ \jlreq@setkcatcode{2E80,3190,3400,4E00,F900,20000}{16}
+ % 範囲7
+ \jlreq@setkcatcode{A000,A490}{18} % Yi Syllables,Yi Radicals
+ \jlreq@setkcatcode{1100,3130,AC00,D7B0}{19} % Hangul Jamo,Hangul Compatibility Jamo,Hangul Syllables,Hangul Jamo Extended-B
+ \jlreq@setkcatcode{2F00,2FF0,3100,31A0,31C0,A830}{16}
+\fi
+
+% フォントサイズを設定
+\newdimen\jlreq@fontsize
+\newdimen\jlreq@jafontsize
+\ifx l\jlreq@engine
+ % Q,zw,zhが正しく扱われるようになる.\dimexprつきに展開される.
+ \def\jlreq@expand@optionfontsize#1{%
+ \dimexpr\directlua{
+ local act = string.char(92)
+ local s = [[#1]]
+ s = s:gsub("Q",act .. "dimexpr 0.25mm" .. act .. "relax")
+ tex.print(s)
+ }\relax
+ }%
+\else
+ \def\jlreq@expand@optionfontsize#1{\dimexpr#1\relax}
+\fi
+\jlreq@aftercls@addtodeletecs{\jlreq@expand@optionfontsize}
+\ifx\jlreq@option@fontsize\@empty
+ \ifx\jlreq@option@jafontsize\@empty
+ \jlreq@fontsize=10pt
+ \jlreq@jafontsize=\jlreq@option@jafontscale\jlreq@fontsize
+ \else
+ \setlength{\jlreq@jafontsize}{\jlreq@expand@optionfontsize{\jlreq@option@jafontsize}}
+ \jlreq@divide{\jlreq@jafontsize}{\jlreq@option@jafontscale pt}
+ \jlreq@fontsize=\jlreq@resultdimen
+ \fi
+\else
+ \setlength{\jlreq@fontsize}{\jlreq@expand@optionfontsize{\jlreq@option@fontsize}}
+ \ifx\jlreq@option@jafontsize\@empty
+ \jlreq@jafontsize=\jlreq@option@jafontscale\jlreq@fontsize
+ \else
+ \setlength{\jlreq@jafontsize}{\jlreq@expand@optionfontsize{\jlreq@option@jafontsize}}
+ \fi
+\fi
+%. フォント
+\RequirePackage{lmodern}
+
+%.. 古いフォントコマンド
+\DeclareOldFontCommand{\jlreq@oldfontcommand@mc}{\normalfont\mcfamily}{\mathmc}
+\DeclareOldFontCommand{\jlreq@oldfontcommand@gt}{\normalfont\gtfamily}{\mathgt}
+\DeclareOldFontCommand{\jlreq@oldfontcommand@rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\jlreq@oldfontcommand@sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\jlreq@oldfontcommand@tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\jlreq@oldfontcommand@bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\jlreq@oldfontcommand@it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\jlreq@oldfontcommand@sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\jlreq@oldfontcommand@sc}{\normalfont\scshape}{\@nomath\sc}
+\newcommand*{\jlreq@oldfontcommand@enable}{%
+ \let\mc=\jlreq@oldfontcommand@mc
+ \let\gt=\jlreq@oldfontcommand@gt
+ \let\rm=\jlreq@oldfontcommand@rm
+ \let\sf=\jlreq@oldfontcommand@sf
+ \let\tt=\jlreq@oldfontcommand@tt
+ \let\bf=\jlreq@oldfontcommand@bf
+ \let\it=\jlreq@oldfontcommand@it
+ \let\sl=\jlreq@oldfontcommand@sl
+ \let\sc=\jlreq@oldfontcommand@sc
+}
+\newcommand*{\jlreq@oldfontcommand@disable}{%
+ \let\mc=\@undefined
+ \let\gt=\@undefined
+ \let\rm=\@undefined
+ \let\sf=\@undefined
+ \let\tt=\@undefined
+ \let\bf=\@undefined
+ \let\it=\@undefined
+ \let\sl=\@undefined
+ \let\sc=\@undefined
+}
+
+\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
+
+%.. 和文
+% ダミー
+\def\@ptsize{0}
+% JFMに関連する設定
+\ifx l\jlreq@engine
+ \def\ltj@stdyokojfm{jlreq}
+ \def\ltj@stdtatejfm{jlreqv}
+ % この値は後でjfm-jlreq内で読む
+ \directlua{jlreq.open_bracket_pos = [[\jlreq@open@bracket@pos]]}
+ \ifjlreq@burasage\directlua{jlreq.burasage = true}\else\directlua{jlreq.burasage = false}\fi
+ % \item後の行頭括弧のために仕込み.
+ \jlreq@saveoriginalcs{\list}
+ \jlreq@saveoriginalcs{\endlist}
+ \PushPostHook{par}{\jlreq@parhook@atbeginlist}
+ \pretocmd{\list}{\def\jlreq@parhook@atbeginlist{\ltjfakeparbegin}}{}{}
+ \apptocmd{\endlist}{\def\jlreq@parhook@atbeginlist{}}{}{}
+ \def\jlreq@parhook@atbeginlist{}
+\else
+ % 非LuaTeXの場合はJFMの入れ替えと\everyparでの処理で対処.
+ % 行頭括弧に対して\inhibitglueを入れたりする命令を作る
+ % \jlreq@charlist@openingbracketsの各括弧に対して,\ifx\jlreq@nextchar 「1\fiみたいなのが並んだのを作る
+ \def\jlreq@tempa{}
+ \def\jlreq@do#1{\jlreq@ifendmark{#1}{}{\appto\jlreq@tempa{\ifx\jlreq@nextchar#11\fi}\jlreq@do}}
+ \expandafter\jlreq@do\jlreq@charlist@openingbrackets\jlreq@endmark
+ % JFM glueの伸び縮みで行頭括弧が揃わないのを防ぐために常に\inhibitglueを入れる.
+ \ifthenelse{\equal{\jlreq@open@bracket@pos}{nibu_tentsuki}}{
+ \edef\jlreq@openbracket@hook@{\noexpand\ifnum0\expandonce{\jlreq@tempa}>0 \unexpanded{\hskip -.5\zw\inhibitglue}\noexpand\fi}
+ }{% zenkakunibu_nibu,zenkaku_tentsuki
+ \edef\jlreq@openbracket@hook@{\noexpand\ifnum0\expandonce{\jlreq@tempa}>0 \unexpanded{\inhibitglue}\noexpand\fi}
+ }
+ % source special対策
+ \def\jlreq@openbracket@hook{\ifx\jlreq@nextchar\special\expandafter\jlreq@openbracket@hook@@\else\expandafter\jlreq@openbracket@hook@\fi}
+ \def\jlreq@openbracket@hook@@#1#2{#1{#2}\futurelet\jlreq@nextchar\jlreq@openbracket@hook}
+ \def\jlreq@jfmname@prefix{}
+ \jlreq@aftercls@addtodeletecs{\jlreq@jfmname@prefix}
+ \ifjlreq@burasage\edef\jlreq@jfmname@prefix{b\jlreq@jfmname@prefix}\fi
+ \ifthenelse{\equal{\jlreq@open@bracket@pos}{zenkakunibu_nibu}}{\edef\jlreq@jfmname@prefix{\jlreq@jfmname@prefix z}}{}
+ \ifx u\jlreq@engine\edef\jlreq@jfmname@prefix{u\jlreq@jfmname@prefix}\fi
+ \edef\jlreq@jfmname{\jlreq@jfmname@prefix jlreq} % JFMの名前
+ \edef\jlreq@jfmnameg{\jlreq@jfmname@prefix jlreqg} % ゴシックなJFMの名前
+ \AtBeginDocument{\PushPostHook{par}{\futurelet\jlreq@nextchar\jlreq@openbracket@hook}}
+\fi
+
+% 行頭の括弧は \jlreq@open@bracket@before@space \inhibitglue 「みたいにする.
+\ifthenelse{\equal{\jlreq@open@bracket@pos}{zenkakunibu_nibu}}{
+ \def\jlreq@open@bracket@before@space{\hskip\glueexpr-.5\zw\relax}
+}{
+ \def\jlreq@open@bracket@before@space{}
+}
+
+\ifx l\jlreq@engine
+ \RequirePackage{luatexja-adjust}
+ \ltjenableadjust[lineend=extended,priority=true]
+ \ltjsetparameter{stretch_priority={kanjiskip=0,xkanjiskip=10}}
+ \ltjsetparameter{shrink_priority={kanjiskip=0,xkanjiskip=-30}}
+\fi
+
+\ifx p\jlreq@engine
+ \def\jlreq@yokokanjiencoding{JY1}
+ \def\jlreq@tatekanjiencoding{JT1}
+\fi
+\ifx u\jlreq@engine
+ \def\jlreq@yokokanjiencoding{JY2}
+ \def\jlreq@tatekanjiencoding{JT2}
+\fi
+\ifx l\jlreq@engine
+ \def\jlreq@yokokanjiencoding{JY3}
+ \def\jlreq@tatekanjiencoding{JT3}
+\fi
+\jlreq@divide{\jlreq@jafontsize}{\jlreq@fontsize}
+\edef\jlreq@jafontscale{\strip@pt\jlreq@resultdimen}
+\jlreq@aftercls@addtodeletecs{\jlreq@jafontscale}
+\ifx l\jlreq@engine
+ \DeclareFontShape{JY3}{mc}{m}{n}{<->s*[\jlreq@jafontscale]\ltj@stdmcfont:jfm=jlreq;script=latn;-kern}{}
+ \DeclareFontShape{JY3}{gt}{m}{n}{<->s*[\jlreq@jafontscale]\ltj@stdgtfont:jfm=jlreq;script=latn;-kern}{}
+ \DeclareFontShape{JT3}{mc}{m}{n}{<->s*[\jlreq@jafontscale]\ltj@stdmcfont:jfm=jlreqv;script=latn;-kern}{}
+ \DeclareFontShape{JT3}{gt}{m}{n}{<->s*[\jlreq@jafontscale]\ltj@stdgtfont:jfm=jlreqv;script=latn;-kern}{}
+\else
+ \DeclareFontShape{\jlreq@yokokanjiencoding}{mc}{m}{n}{<->s*[\jlreq@jafontscale]\jlreq@jfmname}{}
+ \DeclareFontShape{\jlreq@yokokanjiencoding}{gt}{m}{n}{<->s*[\jlreq@jafontscale]\jlreq@jfmnameg}{}
+ \DeclareFontShape{\jlreq@tatekanjiencoding}{mc}{m}{n}{<->s*[\jlreq@jafontscale]\jlreq@jfmname-v}{}
+ \DeclareFontShape{\jlreq@tatekanjiencoding}{gt}{m}{n}{<->s*[\jlreq@jafontscale]\jlreq@jfmnameg-v}{}
+\fi
+\@for\jlreq@encoding:=\jlreq@yokokanjiencoding,\jlreq@tatekanjiencoding\do{
+ \@for\jlreq@shape:=n,it,sl,sc\do{
+ \@for\jlreq@series:=m,b,bx,sb,c\do{
+ \ifthenelse{\equal{\jlreq@shape}{n} \AND \equal{\jlreq@series}{m}}{}{
+ \DeclareFontShape{\jlreq@encoding}{gt}{\jlreq@series}{\jlreq@shape}{<->ssub*gt/m/n}{}
+ }
+ }
+ \@for\jlreq@series:=bx,b,sb\do{
+ \DeclareFontShape{\jlreq@encoding}{mc}{\jlreq@series}{\jlreq@shape}{<->ssub*gt/m/n}{}
+ }
+ \@for\jlreq@series:=m,c\do{
+ \ifthenelse{\equal{\jlreq@shape}{n} \AND \equal{\jlreq@series}{m}}{}{
+ \DeclareFontShape{\jlreq@encoding}{mc}{\jlreq@series}{\jlreq@shape}{<->ssub*mc/m/n}{}
+ }
+ }
+ }
+}
+
+% 和文ファミリと欧文ファミリの連動
+\DeclareRobustCommand\rmfamily{%
+ \not@math@alphabet\rmfamily\mathrm
+ \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
+\DeclareRobustCommand\sffamily{%
+ \not@math@alphabet\sffamily\mathsf
+ \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
+\DeclareRobustCommand\ttfamily{%
+ \not@math@alphabet\ttfamily\mathtt
+ \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
+
+% 数式フォント設定
+\ifjlreq@option@enablejfam
+ \ifx l\jlreq@engine\else
+ \DeclareSymbolFont{mincho}{\jlreq@yokokanjiencoding}{mc}{m}{n}
+ \DeclareSymbolFontAlphabet{\mathmc}{mincho}
+ \SetSymbolFont{mincho}{bold}{\jlreq@yokokanjiencoding}{gt}{m}{n}
+ \jfam\symmincho
+ \DeclareMathAlphabet{\mathgt}{\jlreq@yokokanjiencoding}{gt}{m}{n}
+ \fi
+ \AtBeginDocument{%
+ \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}%
+ \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}%
+ }
+\fi
+
+% 和文間隔
+\DeclareRobustCommand*\ {\futurelet\jlreq@nextchar\jlreq@zenkakuspace@ignorespaces}
+% 後続の空白を無視する処理
+\edef\jlreq@zenkakuspace@ignorespaces{%
+ \noexpand\ifx\expandonce{\space}\unexpanded{\jlreq@nextchar\expandafter\jlreq@zenkakuspace@ignorespaces@\else\expandafter\jlreq@zenkakuspace@main\fi}%
+}
+\expandafter\def\expandafter\jlreq@zenkakuspace@ignorespaces@\space{\ }
+\def\jlreq@tempa{}
+\def\jlreq@do#1{\jlreq@ifendmark{#1}{}{\appto\jlreq@tempa{\ifnum\lastnodechar=`#1 1\fi}\jlreq@do}}
+\expandafter\jlreq@do\jlreq@charlist@dividingpunctuationmarks\jlreq@endmark
+\edef\@tempa{\noexpand\ifnum0\expandonce{\jlreq@tempa}>0 }
+\expandafter\DeclareRobustCommand\expandafter*\expandafter\jlreq@zenkakuspace@main\expandafter{\@tempa
+ \hskip 1\zw\hbox{}%
+ \jlreq@lastnodechar=` 
+ \expandafter\jlreq@fixjfm
+ \else\expandafter \fi
+}
+\ifx l\jlreq@engine
+ {
+ \catcode` =\active
+ \global\let =\jlreq@zenkakuspace@main
+ }
+ \AtBeginDocument{\catcode` =\active}
+\fi
+
+% \jaspace
+\DeclareRobustCommand*{\jaspace}[1]{%
+ \ifcsname jlreq@jaspace@#1\endcsname\csname jlreq@jaspace@#1\endcsname
+ \else\ClassError{jlreq}{unknown jaspace: #1}{\@ehc}\fi
+}
+\def\jlreq@jaspace@zenkaku{\hskip\glueexpr 1\zw\relax}
+\def\jlreq@jaspace@nibu{\hskip\glueexpr .5\zw\relax}
+\def\jlreq@jaspace@shibu{\hskip\glueexpr .25\zw\relax}
+
+% 区切り約物.\? みたいな命令を作る.直後の空きが自動で入る.
+% \?*とすると文中の?として扱われる.
+\def\jlreq@tempa{}
+\def\jlreq@do#1{\jlreq@ifendmark{#1}{}{\appto\jlreq@tempa{\ifx\jlreq@nextchar #11\fi}\jlreq@do}}
+\expandafter\jlreq@do\jlreq@charlist@closingbrackets\jlreq@endmark
+\edef\jlreq@dividingpunctuationmarkscommand{%
+ \noexpand\ifnum 0\expandonce{\jlreq@tempa}>0 \unexpanded{\expandafter\ignorespaces\else\expandafter\ \fi}%
+}
+\def\jlreq@do#1{%
+ \jlreq@ifendmark{#1}{}{
+ \expandafter\DeclareRobustCommand\expandafter*\csname #1\endcsname{%
+ \jlreq@ifstar
+ {\hskip .25\zw #1\hskip .25\zw\ignorespaces}%
+ {#1\futurelet\jlreq@nextchar\jlreq@dividingpunctuationmarkscommand}%
+ }
+ \jlreq@do
+ }
+}
+\expandafter\jlreq@do\jlreq@charlist@dividingpunctuationmarks\jlreq@endmark
+
+% \baselineskipの計算
+% いったん文字サイズを変更((u)platexの際にzh/zwをきちんとするため)
+\@setfontsize\normalsize{\jlreq@fontsize}{\jlreq@fontsize}%
+\newdimen\jlreq@baselineskip
+\ifx l\jlreq@engine
+ \setlength{\jlreq@baselineskip}{%
+ \dimexpr\directlua{
+ local act = string.char(92)
+ local s = [[\jlreq@option@baselineskip]]
+ s = s:gsub("Q",act .. "dimexpr 0.25mm" .. act .. "relax"):gsub("zh",act .. "zh"):gsub("zw",act .. "zw")
+ tex.print(s)
+ }\relax
+ }%
+\else
+ \setlength{\jlreq@baselineskip}{\dimexpr\jlreq@option@baselineskip\relax}
+\fi
+\ifdim\jlreq@fontsize>\jlreq@baselineskip
+ \ClassError{jlreq}{The baselineskip is less than fontsize}{\@ehc}%
+\fi
+\ifthenelse{\lengthtest{\jlreq@baselineskip<1.5\zw} \OR \lengthtest{\jlreq@baselineskip>2\zw}}{
+ \jlreq@note{行間は二分以上全角以下が望ましい (2.4.2.d 注3).}
+}{}
+
+\emergencystretch 3\jlreq@gol
+
+%.. 文字サイズ変更
+\def\jlreq@setfontsizehook{}
+\jlreq@saveoriginalcs{\set@fontsize}
+\apptocmd{\set@fontsize}{\expandafter\def\expandafter\size@update\expandafter{\size@update\jlreq@setfontsizehook}}{}{}
+\appto\jlreq@setfontsizehook{\ifdim\parindent>0pt \setlength{\parindent}{1\zw}\fi}
+\ifx l\jlreq@engine
+ \@tempskipa=\ltjgetparameter{kanjiskip}
+ \ifdim\@tempskipa=\maxdimen\else
+ \appto\jlreq@setfontsizehook{%
+ \ltj@setpar@global
+ \ltjsetkanjiskip\jlreqkanjiskip
+ \@tempskipa=\ltjgetparameter{xkanjiskip}%
+ \ifdim\@tempskipa>0pt
+ \ltjsetxkanjiskip\jlreqxkanjiskip
+ \fi
+ }
+ \fi
+\else
+ \appto\jlreq@setfontsizehook{%
+ \kanjiskip=\jlreqkanjiskip
+ \ifdim\xkanjiskip>0pt
+ \xkanjiskip=\jlreqxkanjiskip
+ \fi
+ }
+\fi
+
+% \jafontsize
+\ifdim\jlreq@fontsize=\jlreq@jafontsize
+ \let\jafontsize=\fontsize
+\else
+ \def\@tempa#1{
+ \DeclareRobustCommand*{\jafontsize}[2]{%
+ \begingroup
+ \jlreq@iffloat{##1}{%
+ \edef\jlreq@do{\noexpand\fontsize{\strip@pt\dimexpr#1\dimexpr##1pt\relax\relax}}%
+ }{%
+ \edef\jlreq@do{\noexpand\fontsize{\the\dimexpr#1\dimexpr##1\relax\relax}}%
+ }%
+ \expandafter\endgroup
+ \jlreq@do{##2}%
+ }
+ }
+ \jlreq@divide{\jlreq@fontsize}{\jlreq@jafontsize}
+ \edef\jlreq@do{\noexpand\@tempa{\strip@pt\jlreq@resultdimen}}
+ \jlreq@do
+\fi
+
+\renewcommand{\normalsize}{%
+ \@setfontsize\normalsize{\jlreq@fontsize}{\jlreq@baselineskip}%
+ \abovedisplayskip 1.1\jlreq@fontsize \@plus .3\jlreq@fontsize \@minus .4\jlreq@fontsize
+ \abovedisplayshortskip \z@ \@plus .3\jlreq@fontsize
+ \belowdisplayskip .9\jlreq@fontsize \@plus.3\jlreq@fontsize \@minus.4\jlreq@fontsize
+ \belowdisplayshortskip \belowdisplayskip
+ \let\@listi\@listI}
+
+\if@tate\tate\fi % ここで発行しておく
+\mcfamily\selectfont\normalsize
+\setbox\jlreq@tempboxa\hbox{阿}
+\setlength\Cht{\ht\jlreq@tempboxa}
+\setlength\Cdp{\dp\jlreq@tempboxa}
+\setlength\Cwd{\wd\jlreq@tempboxa}
+\setlength\Cvs{\baselineskip}
+\setlength\Chs{\wd\jlreq@tempboxa}
+
+% 4.1.3.a
+% 2.5.2 \baselineskipは一定の方がよい?
+% \@listiは再定義しないようにした.(\normalsizeと共用でJLReq通りだと思う.)
+\newcommand{\footnotesize}{%
+ \@setfontsize\footnotesize{.8\jlreq@fontsize}{\dimexpr 115\jlreq@baselineskip/170\relax}% 脚注文字サイズの二分より少し小さい値を行間に: 4.2.5.e
+ \abovedisplayskip .6\jlreq@fontsize \@plus.2\jlreq@fontsize \@minus.4\jlreq@fontsize
+ \abovedisplayshortskip \z@ \@plus.1\jlreq@fontsize
+ \belowdisplayshortskip .3\jlreq@fontsize \@plus.1\jlreq@fontsize \@minus.2\jlreq@fontsize
+ \belowdisplayskip \abovedisplayskip}
+% tsize10.cloの引数を,そのまま\jlreq@fontsize/\jlreq@baselineskipでスケーリングしているだけ.
+\newcommand{\small}{%
+ % jsarticleのもの
+ \@setfontsize\small{.9\jlreq@fontsize}{\dimexpr 13\jlreq@baselineskip/17\relax}%
+ \abovedisplayskip .9\jlreq@fontsize \@plus.3\jlreq@fontsize \@minus.4\jlreq@fontsize
+ \abovedisplayshortskip \z@ \@plus.3\jlreq@fontsize
+ \belowdisplayshortskip \abovedisplayshortskip
+ \belowdisplayskip \abovedisplayskip}
+\newcommand{\scriptsize}{\@setfontsize\scriptsize{\dimexpr 7\jlreq@fontsize/10\relax}{\dimexpr 8\jlreq@baselineskip/17\relax}}
+\newcommand{\tiny}{\@setfontsize\tiny{\dimexpr 5\jlreq@fontsize/10\relax}{\dimexpr 6\jlreq@baselineskip/17\relax}}
+\newcommand{\large}{\@setfontsize\large{\dimexpr12\jlreq@fontsize/10\relax}{\jlreq@baselineskip}}
+\newcommand{\Large}{\@setfontsize\Large{\dimexpr14\jlreq@fontsize/10\relax}{\dimexpr 21\jlreq@baselineskip/17\relax}}
+\newcommand{\LARGE}{\@setfontsize\LARGE{\dimexpr17\jlreq@fontsize/10\relax}{\dimexpr 25\jlreq@baselineskip/17\relax}}
+\newcommand{\huge}{\@setfontsize\huge{2\jlreq@fontsize}{\dimexpr 28\jlreq@baselineskip/17\relax}}
+\newcommand{\Huge}{\@setfontsize\Huge{\dimexpr 25\jlreq@fontsize/10\relax}{\dimexpr 33\jlreq@baselineskip/17\relax}}
+
+%. plextから一部拝借
+% オプションも*もない\rensuji(コピペ)
+\DeclareRobustCommand{\jlreq@rensuji}[1]{%
+ \ifvmode\leavevmode\fi
+ \jlreq@ifydir{\hbox{#1}}{%
+ \hskip 0pt plus 0.25\zw minus 0pt % \rensujiskipは固定値
+ \setbox\jlreq@tempboxa=\hbox{\yoko#1}%
+ \@tempdima=\dimexpr\ht\jlreq@tempboxa+\dp\jlreq@tempboxa\relax
+ \vrule\@width\z@ \@height.5\@tempdima \@depth.5\@tempdima
+ \hbox to 1\zw{\yoko\hss#1\hss}%
+ \hskip 0pt plus 0.25\zw minus 0pt
+}}
+\def\jlreq@Kanji#1{\expandafter\kansuji\csname c@#1\endcsname}
+
+% このあたりはtarticleと同じ
+\setlength\lineskip{.1\zh}
+\setlength\normallineskip{.1\zh}
+\renewcommand{\baselinestretch}{}
+\setlength\parskip{0\p@ \@plus \p@}
+\setlength\parindent{1\zw}
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+
+% 変数定義(他にも散らばっているけど)
+% 罫線の太さ(4.4.3.c 注1)
+\newdimen\jlreq@omotekeiwidth
+\jlreq@omotekeiwidth=0.12mm
+\newdimen\jlreq@chuubusokeiwidth
+\jlreq@chuubusokeiwidth=0.25mm
+\newdimen\jlreq@urakeiwidth
+\jlreq@urakeiwidth=0.4mm
+% 脚注のインデント
+\newdimen\jlreq@footnoteindent
+
+%\RequirePackage{jlreq-debug}
+
+%. ページレイアウト
+% landscapeの場合縦横をひっくり返す
+\if@landscape
+ \jlreq@helper@swap@register{\paperwidth}{\paperheight}
+\fi
+
+% \pdfpagewidthとか設定
+\ifx l\jlreq@engine
+ \setlength{\pagewidth}{\paperwidth}
+ \setlength{\pageheight}{\paperheight}
+\else
+ \setlength{\pdfpagewidth}{\paperwidth}
+ \setlength{\pdfpageheight}{\paperheight}
+\fi
+
+\ifx l\jlreq@engine
+ \def\jlreq@expand@speciallength#1{%
+ % zhやzwを\zhや\zwにする.
+ \directlua{
+ local act = string.char(92)
+ local s = [[#1]]
+ s = s:gsub("zw",act .. "zw"):gsub("zh",act .. "zh")
+ tex.print(s)
+ }%
+ }
+\else
+ \def\jlreq@expand@speciallength#1{#1}
+\fi
+\def\jlreq@speciallength#1{\dimexpr\jlreq@expand@speciallength{#1}\relax}
+
+%.. 二段組み用パラメータ
+\setlength{\columnsep}{\jlreq@speciallength{\jlreq@option@column@gap}}
+\setlength{\columnseprule}{0pt}
+
+%.. 傍注(4.2.7)
+\begingroup
+ \footnotesize
+ \setlength{\jlreq@tempdima}{\jlreq@speciallength{\jlreq@option@sidenote@length}}
+ \jlreq@tempdimb=1\zw
+ \divide\jlreq@tempdima\jlreq@tempdimb
+ \multiply\jlreq@tempdima\jlreq@tempdimb
+ \ifdim\jlreq@tempdima>0pt
+ \ifnum 0\ifdim\jlreq@tempdima>25\zw 1\fi\ifdim\jlreq@tempdima<15\zw 1\fi>0
+ \jlreq@note{並列注の字詰め方向の長さ(行長)は,15字から20字くらいである.ケースによっては25字程度にする場合もある (4.2.7).}
+ \fi
+ \fi
+ \edef\jlreq@do{
+ \noexpand\setlength{\noexpand\marginparwidth}{\the\jlreq@tempdima}
+ \noexpand\setlength{\noexpand\marginparpush}{\the\dimexpr 0.5\zw\relax} % 同上:4.2.7.g
+ }
+ \expandafter\endgroup
+\jlreq@do
+\ifdim\marginparwidth>0pt
+ \setlength{\marginparsep}{2\zw} % フォントサイズ×2(4.2.7:特に問題に~e)
+\else
+ \setlength{\marginparsep}{0pt}
+\fi
+
+% 縦書きの時は脚注に固定
+% (TODO: 頭注)
+\if@tate\@mparswitchfalse\fi
+
+\setlength{\topskip}{1\zw} % フォントサイズと一致させる
+\ifx\jlreq@option@headfoot@verticalpos\@empty
+ \if@tate\def\jlreq@option@headfoot@verticalpos{1zw}
+ \else\def\jlreq@option@headfoot@verticalpos{2zw}\fi
+\fi
+\setlength{\headsep}{\jlreq@speciallength{\jlreq@option@headfoot@verticalpos}}
+\if@tate\ifdim\headsep<1\zw\relax\jlreq@note{基本版面との上下方向の最低の空き量を,基本版面の文字サイズの全角アキとする (26.1.a).}\fi\fi
+\if@tate
+ \if@twocolumn
+ \addtolength{\headsep}{\dimexpr\marginparwidth + \marginparsep\relax}
+ \fi
+\else
+ \addtolength{\headsep}{-\dimexpr\topskip - \Cht\relax}
+\fi
+\setlength{\headheight}{1\zw}
+
+% \textwidthと\textheightのデフォルト値は縦横ともに0.75倍(調整が入る).
+%.. \textwidth:文字送り方向の行長
+% 二段の場合は最初の段の頭から次の段の後まで
+% 一度\textwidthに一行の長さの文字数を入れる(段組の場合でも)
+\newif\ifjlreq@determine@kihonhanmen@warning@first
+\jlreq@determine@kihonhanmen@warning@firsttrue
+\def\jlreq@determine@kihonhanmen@warning{
+ \ifjlreq@determine@kihonhanmen@warning@first
+ \jlreq@note{基本版面は,a. サイズの決定 b. 仕上りサイズに対する基本版面の配置位置の決定 という手順で行う (2.4.1).}
+ \jlreq@determine@kihonhanmen@warning@firstfalse
+ \fi
+}
+\jlreq@aftercls@addtodeletecs{\jlreq@determine@kihonhanmen@warning}
+\jlreq@aftercls@addtodeleteif{\ifjlreq@determine@kihonhanmen@warning@first}
+\@tempdima=1\zw
+\ifx\jlreq@option@line@length\@empty
+ \if@tate
+ \ifnum 0\ifx\jlreq@option@head@space\@empty 1\fi\ifx\jlreq@option@foot@space\@empty 1\fi>0
+ \setlength{\textwidth}{0.75\paperheight}
+ \divide\textwidth\@tempdima\multiply\textwidth\@tempdima
+ \else
+ \jlreq@determine@kihonhanmen@warning
+ \setlength{\textwidth}{\dimexpr\paperheight - \jlreq@option@head@space - \jlreq@option@foot@space \relax}
+ \fi
+ \else
+ \ifnum 0\ifx\jlreq@option@gutter\@empty 1\fi\ifx\jlreq@option@fore@edge\@empty 1\fi>0
+ \setlength{\textwidth}{0.75\paperwidth}
+ \divide\textwidth\@tempdima\multiply\textwidth\@tempdima
+ \else
+ \jlreq@determine@kihonhanmen@warning
+ \setlength{\textwidth}{\dimexpr\paperwidth - \jlreq@option@gutter - \jlreq@option@fore@edge\relax}
+ \fi
+ \fi
+ \if@twocolumn
+ \addtolength{\textwidth}{\dimexpr-2\marginparwidth - 2\marginparsep\relax}
+ \setlength{\textwidth}{\dimexpr(\textwidth - \columnsep)/2\relax}
+ \else
+ \addtolength{\textwidth}{\dimexpr-\marginparwidth - \marginparsep\relax}
+ \fi
+\else
+ \setlength{\textwidth}{\jlreq@speciallength{\jlreq@option@line@length}}
+ \divide\textwidth\@tempdima
+ \if@tate
+ \ifnum\number\textwidth>52
+ \jlreq@note{一行の長さは52文字以下が望ましい (2.4.2.c 注2).}
+ \fi
+ \else
+ \ifnum\number\textwidth>40
+ \jlreq@note{一行の長さは40文字以下が望ましい (2.4.2.c 注2).}
+ \fi
+ \fi
+ \multiply\textwidth\@tempdima
+\fi
+\if@twocolumn
+ \setlength{\textwidth}{\dimexpr2\textwidth + \columnsep\relax}
+\fi
+\addtolength{\textwidth}{0.0001pt}
+
+
+%.. \textheight:行送り方向の長さ
+% 一番上(直後に\topskip由来が入る)から最終行のベースラインまでの長さ.
+% \topskipが十分ある時は先頭行のベースラインから最終行のベースライン+\topskip
+\def\jlreq@adjusttextheight{
+ \addtolength{\textheight}{-\topskip}
+ \divide\textheight\baselineskip \multiply\textheight\baselineskip
+ \addtolength{\textheight}{\topskip}
+}
+\jlreq@aftercls@addtodeletecs{\jlreq@adjusttextheight}
+\ifx\jlreq@option@number@of@lines\@empty
+ \if@tate
+ \ifnum 0\ifx\jlreq@option@gutter\@empty 1\fi\ifx\jlreq@option@fore@edge\@empty 1\fi>0
+ \setlength{\textheight}{0.75\paperwidth}
+ \jlreq@adjusttextheight
+ \else
+ \jlreq@determine@kihonhanmen@warning
+ \setlength{\textheight}{\dimexpr\paperwidth - \jlreq@option@gutter - \jlreq@option@fore@edge + \topskip - 1\zw\relax}
+ \fi
+ \else
+ \ifnum 0\ifx\jlreq@option@head@space\@empty 1\fi\ifx\jlreq@option@foot@space\@empty 1\fi>0
+ \setlength{\textheight}{0.75\paperheight}
+ \jlreq@adjusttextheight
+ \else
+ \jlreq@determine@kihonhanmen@warning
+ \setlength{\textheight}{\dimexpr\paperheight + 2\topskip - 1\zh - \Cht - \jlreq@option@head@space - \jlreq@option@foot@space\relax}
+ \fi
+ \fi
+\else
+ \setlength{\textheight}{\dimexpr\numexpr\jlreq@option@number@of@lines\relax\baselineskip - \baselineskip + \topskip\relax}
+\fi
+\addtolength{\textheight}{0.0001pt}
+
+%.. 横
+\def\jlreq@setsidemargin@by@gutter#1{
+ \if@tate
+ \setlength{\evensidemargin}{#1}
+ \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textheight - \evensidemargin + \topskip - \Cht\relax}
+ \addtolength{\evensidemargin}{\Cdp}
+ \else
+ \setlength{\oddsidemargin}{#1}
+ \if@twocolumn
+ \addtolength{\oddsidemargin}{\dimexpr\marginparsep + \marginparwidth\relax}
+ \fi
+ \setlength{\evensidemargin}{\dimexpr\paperwidth - \textwidth - \oddsidemargin\relax}
+ \fi
+}
+\def\jlreq@setsidemargin@by@fore@edge#1{
+ \jlreq@setsidemargin@by@gutter{#1}
+ \jlreq@helper@swap@register{\oddsidemargin}{\evensidemargin}
+ \ifjlreq@determine@kihonhanmen@warning@first
+ \jlreq@note{基本版面の配置はのどの空き量を指定する (2.4.1.b).}
+ \fi
+}
+\jlreq@aftercls@addtodeletecs{\jlreq@setsidemargin@by@gutter}
+\jlreq@aftercls@addtodeletecs{\jlreq@setsidemargin@by@fore@edge}
+
+\ifx\jlreq@option@gutter\@empty
+ \ifx\jlreq@option@fore@edge\@empty
+ % 中央配置
+ \if@tate
+ \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textheight + \topskip\relax}
+ \else
+ \if@twocolumn
+ \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textwidth\relax}
+ \else
+ \setlength{\oddsidemargin}{\dimexpr\paperwidth - \textwidth - \marginparsep - \marginparwidth\relax}
+ \fi
+ \fi
+ \setlength{\oddsidemargin}{.5\oddsidemargin}
+ \ifnum0\if@twocolumn1\fi\if@tate1\fi>0
+ \setlength{\evensidemargin}{\oddsidemargin}
+ \else
+ \setlength{\evensidemargin}{\dimexpr\oddsidemargin + \marginparsep + \marginparwidth\relax}
+ \fi
+ \else
+ \jlreq@setsidemargin@by@fore@edge{\jlreq@speciallength{\jlreq@option@fore@edge}}
+ \fi
+\else
+ \jlreq@setsidemargin@by@gutter{\jlreq@speciallength{\jlreq@option@gutter}}
+ \ifx\jlreq@option@fore@edge\@empty\else
+ \ifjlreq@determine@kihonhanmen@warning@first
+ \ClassWarningNoLine{jlreq}{fore-edge is ignored}
+ \fi
+ \fi
+\fi
+\ifx l\jlreq@engine
+ \addtolength{\oddsidemargin}{-1in}
+ \addtolength{\evensidemargin}{-1in}
+\else
+ \addtolength{\oddsidemargin}{-1truein}
+ \addtolength{\evensidemargin}{-1truein}
+\fi
+
+%.. 縦
+% \topmarginに全体の頭からテキストの頭までの長さを入れる
+% 天の値からtopmarginを設定する
+\def\jlreq@settopmarginbyhead#1{
+ \if@tate
+ \setlength{\topmargin}{\dimexpr #1 - \headsep - \headheight\relax}
+ \if@twocolumn
+ \addtolength{\topmargin}{\dimexpr\marginparwidth + \marginparsep\relax}
+ \fi
+ \jlreq@note{縦組の場合は地の空き量を指定する (2.4.1.b).}
+ \else
+ \setlength{\topmargin}{\dimexpr #1 - \headsep - \headheight - \topskip + \Cht\relax}
+ \fi
+}
+\jlreq@aftercls@addtodeletecs{\jlreq@settopmarginbyhead}
+% 地の値から
+\def\jlreq@settopmarginbyfoot#1{
+ \if@tate
+ \setlength{\topmargin}{\dimexpr\paperheight - \textwidth - \headsep - \headheight - #1 - \marginparsep - \marginparwidth\relax}
+ \else
+ \jlreq@note{横組の場合は天の空き量を指定する (2.4.1.b).}
+ \setlength{\topmargin}{\dimexpr\paperheight - \textheight + \topskip - 1\zh - \headsep - \headheight - #1\relax}
+ \fi
+}
+\jlreq@aftercls@addtodeletecs{\jlreq@settopmarginbyfoot}
+\ifx\jlreq@option@head@space\@empty
+ \ifx\jlreq@option@foot@space\@empty
+ \if@tate
+ \if@twocolumn
+ \jlreq@settopmarginbyfoot{\dimexpr(\paperheight - \textwidth - 2\marginparwidth - 2\marginparsep)/2\relax}
+ \else
+ \jlreq@settopmarginbyfoot{\dimexpr(\paperheight - \textwidth - \marginparwidth - \marginparsep)/2\relax}
+ \fi
+ \else
+ \jlreq@settopmarginbyhead{\dimexpr(\paperheight - (\textheight - \topskip + 1\zh))/2\relax}
+ \fi
+ \else
+ \jlreq@settopmarginbyfoot{\jlreq@speciallength{\jlreq@option@foot@space}}
+ \fi
+\else
+ \ifx\jlreq@option@foot@space\@empty
+ \jlreq@settopmarginbyhead{\jlreq@speciallength{\jlreq@option@head@space}}
+ \else
+ % 両方指定されていたら,縦書きは地を,横書きは天を使う
+ \if@tate
+ \jlreq@settopmarginbyfoot{\jlreq@speciallength{\jlreq@option@foot@space}}
+ \ifx\jlreq@option@line@length\@empty\else
+ \ClassWarningNoLine{jlreq}{head_space is ignored}
+ \fi
+ \else
+ \jlreq@settopmarginbyhead{\jlreq@speciallength{\jlreq@option@head@space}}
+ \ifx\jlreq@option@number@of@lines\@empty\else
+ \ClassWarningNoLine{jlreq}{foot_space is ignored}
+ \fi
+ \fi
+ \fi
+\fi
+\ifx l\jlreq@engine
+ \addtolength{\topmargin}{-1in}
+\else
+ \addtolength{\topmargin}{-1truein}
+\fi
+%.. 下
+\setlength{\footskip}{\dimexpr\headsep + \if@tate\marginparwidth + \marginparsep\else\topskip - \Cht\fi + \headheight\relax}
+% \maxdepth + \topskip = フォントサイズ×1.5(だってさ)
+\setlength{\maxdepth}{\dimexpr1.5\zw - \topskip\relax}
+
+%. システム設定
+%.. 逆ノンブル
+\ifjlreq@option@use@reverse@pagination
+ \AtEndDocument{\clearpage\jlreq@reference@immediate@write{lastpage}{\noexpand\arabic{page}}}%
+ \def\c@jlreqreversepage{\numexpr\jlreq@reference@ref{lastpage}{0} - \c@page + 1\relax}
+ \def\thejlreqreversepage{\arabic{jlreqreversepage}}
+\fi
+
+%. 見出し関係 (4.1)
+% \clear***page
+\newcommand*{\cleartooddpage}[1][]{%
+ \clearpage
+ \ifodd\c@page\else
+ \jlreq@ifempty{#1}{}{\thispagestyle{#1}}%
+ \hbox{}%
+ \newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+}
+\newcommand*{\cleartoevenpage}[1][]{%
+ \clearpage
+ \ifodd\c@page
+ \jlreq@ifempty{#1}{}{\thispagestyle{#1}}%
+ \hbox{}%
+ \newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+}
+
+% 扉見出しと別行見出しについては,\<csname> -> \jlreq@headingcs@csname -> 本体と
+% 二段構えで展開されるようにする.一度の展開で\parが出るのを防ぐため.
+% 一度展開を\longなしマクロに渡されると破綻するので.(そういうパッケージが存在する.)
+
+% jlreq@heading@maketoc@<命令名>が\tableofcontents用の出力をするために呼び出される.
+% #1=*または空(見出し命令に*がついていたかで分岐),#2=ラベル,#3=running head
+% デフォルトでは\<命令名>markと\addcontentslineが必要ならば呼ばれる.
+
+% 見出しの直前に実行される
+\newcommand*{\jlreq@hook@beforeheadings}[1]{}
+% 見出し名一覧を格納する
+\def\jlreq@heading@allheadings{}
+
+% 目次を出力する命令\l@<命令名>を作る命令を作る.{1 = 命令名}{2 = レベル}{3 = ラベルのフォーマット}
+% 結果は\jlreq@resultに入る.
+\def\jlreq@heading@make@l@#1#2#3{%
+ \@ifundefined{l@#1}{%
+ % 長さは適当に計測する
+ \begingroup
+ % ちょっと大きめで計測しておく
+ \csname c@#1\endcsname=9
+ \setbox\jlreq@tempboxa=\hbox{#3}%
+ \jlreq@tempdima=\wd\jlreq@tempboxa
+ \csname c@#1\endcsname=26
+ \setbox\jlreq@tempboxa=\hbox{#3}%
+ \ifdim\jlreq@tempdima<\wd\jlreq@tempboxa
+ \jlreq@tempdima=\wd\jlreq@tempboxa
+ \fi
+ % \numexprは四捨五入
+ \jlreq@tempdimb=\dimexpr\the\numexpr\jlreq@tempdima/\dimexpr 1\zw\relax + 2\relax\zw\relax
+ \edef\jlreq@do{%
+ \unexpanded{\def\jlreq@result}{%
+ \noexpand\def\expandonce{\csname l@#1\endcsname}{%
+ \unexpanded{\@dottedtocline{#2}{0\zw}}{\the\jlreq@tempdimb}%
+ }%
+ }%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+ }{\def\jlreq@result{}}%
+}
+
+% \jlreq@heading@make@maketoc{セクション名}{レベル}
+\def\jlreq@heading@make@maketoc#1#2{%
+ % 目次への出力をするマクロ.外部に切り出しておく.
+ \@ifundefined{jlreq@heading@maketoc@#1}{%
+ % {1 = */-}{2 = ラベル}{3 = running head}
+ % 1はcounter=falseならば-,星付き命令ならば*,それ以外は空.
+ % 1が*または-の時は見出しにはラベルが現れないが,2には常にラベルが入るので,必要ならばここで無視する.
+ \expandafter\def\csname jlreq@heading@maketoc@#1\endcsname##1##2##3{%
+ \jlreq@iffirsttoken{##1}{*}{}{%
+ \csname #1mark\endcsname{##3}%
+ \ifnum0\jlreq@iffirsttoken{##1}{-}{1}{}\ifnum #2>\c@secnumdepth 1\fi>0
+ \addcontentsline{toc}{#1}{##3}%
+ \else
+ \addcontentsline{toc}{#1}{\jlreq@ifempty{##2}{}{\protect\numberline{##2}}##3}%
+ \fi
+ }{}%
+ }%
+ }{}%
+}
+
+%.. 中/半扉見出し
+% addcontentslineに渡すやつ:番号出すのと出さないの
+\newcommand{\DeclareTobiraHeading}[3]{%
+ \def\jlreq@do{\@removeelement{#1}}%
+ \expandafter\jlreq@do\expandafter{\jlreq@heading@allheadings}{\jlreq@heading@allheadings}%
+ \appto{\jlreq@heading@allheadings}{,#1}%
+ \expandafter\def\csname jlreq@heading@level@#1\endcsname{#2}%
+ \expandafter\edef\csname jlreq@heading@setting@#1\endcsname{\unexpanded{#3}}%
+ \expandafter\def\csname jlreq@heading@type@#1\endcsname{\RenewTobiraHeading}%
+ \@ifundefined{c@#1}{\newcounter{#1}}{}%
+ \@ifundefined{#1mark}{\expandafter\let\csname #1mark\endcsname\@gobble}{}%
+ \jlreq@heading@make@maketoc{#1}{#2}%
+ \begingroup
+ \let\jlreq@contents@label@format=\@undefined
+ \let\jlreq@format=\@undefined
+ \edef\jlreq@label@format{\expandonce{\csname the#1\endcsname}}%
+ \def\jlreq@heading@clearpage{\clearpage\hbox{}\clearpage}%
+ \def\jlreq@pagestyle{empty}%
+ \newif\ifjlreq@number \jlreq@numbertrue
+ \jlreq@parsekeyval[DeclareTobiraHeading:#1]{
+ {label_format}{\def\jlreq@label@format{##1}}
+ {format}{\def\jlreq@format####1####2{##1}}
+ {pagestyle}{\def\jlreq@pagestyle{##1}}
+ {type}[han,naka]{%
+ \jlreq@switch{##1}{
+ {han}{\def\jlreq@heading@clearpage{\clearpage}}
+ {naka}{\def\jlreq@heading@clearpage{\clearpage\hbox{}\clearpage}}
+ }%
+ }
+ {number}[true,false]{\csname jlreq@number##1\endcsname}
+ }{#3}%
+ \def\jlreq@do{}%
+ \ifx\jlreq@format\@undefined
+ \def\jlreq@format##1##2{##1##2}%
+ \fi
+ \edef\jlreq@formatwlabel{\noexpand\jlreq@format{\expandonce{\jlreq@label@format}}}%
+ \jlreq@heading@make@l@{#1}{#2}{\jlreq@label@format}%
+ \eappto\jlreq@do{\expandonce{\jlreq@result}}%
+ \edef\jlreq@do{%
+ \expandonce{\jlreq@do}%
+ \noexpand\def\expandonce{\csname jlreq@TobiraHeading@start@#1\endcsname}[####1]####2{%
+ \ifjlreq@number
+ \unexpanded{\ifnum#2>\c@secnumdepth\else}%
+ \unexpanded{\refstepcounter{#1}}%
+ \noexpand\fi
+ \fi
+ \unexpanded{\jlreq@ifempty{##2}%
+ {\long\gdef\jlreqHeadingText####1{}}%
+ {\long\gdef\jlreqHeadingText####1{####1}}%
+ }%
+ \ifjlreq@number
+ \unexpanded{\jlreq@if{\ifnum#2>\c@secnumdepth\relax\fi}}{%
+ \unexpanded{\long\gdef\jlreqHeadingLabel####1{}}%
+ \expandonce{\jlreq@format{}{##1}}%
+ }{%
+ \unexpanded{\long\gdef\jlreqHeadingLabel####1{####1}}%
+ \expandafter\expandonce\expandafter{\jlreq@formatwlabel{##2}}%
+ }%
+ \else
+ \unexpanded{\long\gdef\jlreqHeadingLabel####1{}}%
+ \expandonce{\jlreq@format{}{##1}}%
+ \fi
+ \expandonce{\csname jlreq@heading@maketoc@#1\endcsname}{\ifjlreq@number\else -\fi}{\expandonce{\jlreq@label@format}}{####1}%
+ \noexpand\@afterheading
+ \expandonce{\jlreq@heading@clearpage}%
+ \unexpanded{\if@restonecol\twocolumn\fi}%
+ }%
+ \noexpand\def\expandonce{\csname jlreq@TobiraHeading@start@s@#1\endcsname}####1{%
+ \unexpanded{\long\gdef\jlreqHeadingLabel####1{}}%
+ \unexpanded{\jlreq@ifempty{##1}%
+ {\long\gdef\jlreqHeadingText####1{}}%
+ {\long\gdef\jlreqHeadingText####1{####1}}%
+ }%
+ \expandonce{\jlreq@format{}{##1}}
+ \expandonce{\csname jlreq@heading@maketoc@#1\endcsname}{*}{\expandonce{\jlreq@label@format}}{####1}%
+ \noexpand\@afterheading
+ \expandonce{\jlreq@heading@clearpage}%
+ \unexpanded{\if@restonecol\twocolumn\fi}%
+ }%
+ \noexpand\def\expandonce{\csname jlreq@headingcs@#1\endcsname}{%
+ % 改丁.これでよいのかな.
+ \unexpanded{\if@twocolumn\onecolumn\@restonecoltrue\else\@restonecolfalse\fi\cleartooddpage[empty]}%
+ \ifx\jlreq@pagestyle\@empty\else\noexpand\thispagestyle{\expandonce{\jlreq@pagestyle}}\fi
+ \noexpand\secdef{\expandonce{\csname jlreq@TobiraHeading@start@#1\endcsname}}{\expandonce{\csname jlreq@TobiraHeading@start@s@#1\endcsname}}}%
+ \noexpand\def\expandonce{\csname #1\endcsname}{\expandonce{\csname jlreq@headingcs@#1\endcsname}}%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\newcommand{\NewTobiraHeading}[3]{%
+ \expandafter\@ifdefinable\csname #1\endcsname{\DeclareTobiraHeading{#1}{#2}{#3}}%
+}
+\newcommand{\RenewTobiraHeading}[3]{%
+ \@ifundefined{#1}{\@latex@error{\expandafter\string\csname#1\endcsname\space undefined}\@ehc}{\DeclareTobiraHeading{#1}{#2}{#3}}%
+}
+\newcommand{\ProvideTobiraHeading}[3]{%
+ \@ifundefined{#1}{\DeclareTobiraHeading{#1}{#2}{#3}}{}%
+}
+
+%.. 別行見出し
+% \jlreq@BlockHeading@start:別行見出しを出力する命令.
+% \jlreq@BlockHeading@start{1 = 命令名}{2 = レベル}{3 = スペース関連}{4 = カウンタ関連}{5 = フォーマット関連}{6 = 全体フォーマット}*{見出し}[副題]
+% カウンタ関連=-,*,無し:-はカウンタ関連を処理しない.*はさらに目次に追加しない(星付き命令と同様).星付きで呼び出された時は常に*同等.
+% スペース関連={配置:lcr(左中央右)}{字下げ(寸法)}{字上げ(寸法)}{前空き}{後空き}{行取りの行数}{空か*か,偶数ページでも改ページを許可するならば空}
+% 前/後空きはprefixにa:/s:/r:が入る.r:は空きがその値そのものになる.a:/s:は行取りに加えて入る.a:で指定された空きはページ行頭では入らない
+% 後空きの時はs:は指定できない.
+% フォーマット関連:
+% フォーマット関連={{ラベルのみのフォーマット}{ラベルフォーマット}{見出し文字列フォーマット}{見出し文字列フォーマット(ラベル無し)}{副題フォーマット}{副題フォーマット(ラベル無し)}}{{前フォーマットラベルあり}{前フォーマットラベルなし}{見出し全体のフォーマット}{後ろフォーマットラベルあり}{後ろフォーマットラベルなし}}
+% 見出しそのものは「全体フォーマット」に従い出力される.パラメータトークン#1を含み,#1=見出し本体:スペース関連と上の「見出し全体のフォーマット」に基づいて整形される.
+% 見出し全体のフォーマット内では#1=ラベル,#2=見出し文字列,#3=副題,それぞれ各々のフォーマットに基づき整形される.
+% ラベルフォーマットでは#1=カウンタ名,見出し文字列フォーマットでは#1=見出し文字列,副題フォーマットでは#1=副題
+% ラベルのみのフォーマットは目次に使われる.
+\newcommand{\jlreq@BlockHeading@start}[6]{%
+ \if@noskipsec\leavevmode\fi
+ % #5と#6は\parを含むかもしれないので引数渡しはしない(後の\@ifstarで詰まる)
+ \edef\jlreq@BlockHeading@start@eachformat{\expandonce{\@firstoftwo#5}}%
+ \edef\jlreq@BlockHeading@start@format{\expandonce{\@secondoftwo#5}}
+ \edef\jlreq@BlockHeading@start@totalformat{\unexpanded{#6}}%
+ \jlreq@BlockHeading@start@{#1}{#2}{#3}{#4}%
+}
+% {1 = 命令}{2 = レベル}{3 = スペース関連}
+\newcommand{\jlreq@BlockHeading@start@}[4]{%
+ \@ifstar{\@dblarg{\jlreq@BlockHeading@start@@{#1}{#2}{#3}{*}}}{\@dblarg{\jlreq@BlockHeading@start@@{#1}{#2}{#3}{#4}}}%
+}
+% {1 = 命令}{2 = レベル}{3 = スペース関連}{4 = *}[5 = running head]{6 = 見出し}
+\long\def\jlreq@BlockHeading@start@@#1#2#3#4[#5]#6{%
+ \@ifnextchar[{\jlreq@BlockHeading@start@@@{#1}{#2}{#3}{#4}{#5}{#6}}{\jlreq@BlockHeading@start@@@{#1}{#2}{#3}{#4}{#5}{#6}[]}%
+}
+
+% {1 = 命令}{2 = レベル}{3 = スペース関連}{4 = *}{5 = running head}{6 = 見出し}[7 = 副題]
+\long\def\jlreq@BlockHeading@start@@@#1#2#3#4#5#6[#7]{%
+ \edef\jlreq@do{\unexpanded{\jlreq@BlockHeading@start@@@@{#1}{#2}{#3}}{\expandonce{\jlreq@BlockHeading@start@totalformat}}}%
+ \jlreq@do{#4}{#5}{#6}{#7}%
+}
+
+% {1 = 命令}{2 = レベル}{3 = スペース関連}{4 = 全フォーマット}{5 = *}{6 = running head}{7 = 見出し}{8 = 副題}
+\long\def\jlreq@BlockHeading@start@@@@#1#2#3#4#5#6#7#8{%
+ \edef\jlreq@tempa##1##2##3##4##5##6##7{%
+ \unexpanded{\jlreq@BlockHeading@start@makeoutput{#1}{#2}}{{##1}{##2}{##3}}{\expandonce{\jlreq@BlockHeading@start@eachformat}}{\expandonce{\jlreq@BlockHeading@start@format}}\unexpanded{{#5}{#6}{#7}{#8}}%
+ \unexpanded{\def\jlreq@tempb}{{##4}{##5}{##6}}% 縦方向空き
+ \noexpand\jlreq@ifempty{##7}{\noexpand\jlreq@tempatrue}{\noexpand\jlreq@tempafalse}% 偶数ページのみで改ページするならば\jlreq@tempatrue
+ }%
+ \jlreq@tempa#3%
+ \global\advance\jlreq@BlockHeading@spaces@current@count by 1
+ \gappto\jlreq@BlockHeading@spaces@current@sequence{_#1}%
+ % 連続する見出しの間の処理をするために,即時では出力せず,いったんマクロに格納する.
+ % \jlreq@BlockHeading@spaces@current@before@<n>
+ % \jlreq@BlockHeading@start@gyodori\jlreq@BlockHeading@spaces@current@space@<n>{jlreq@BlockHeading@spaces@current@output@<n>}
+ % ↑\jlreq@BlockHeading@spaces@current@format@<n>で整形される.
+ % \jlreq@BlockHeading@spaces@current@after@<n>
+ % として後に呼び出される.(spaceは書き換えられる可能性がある.)
+ \expandafter\xdef\csname jlreq@BlockHeading@spaces@current@output@\the\jlreq@BlockHeading@spaces@current@count\endcsname{%
+ \expandonce{\jlreq@resultb}%
+ }%
+ \expandafter\xdef\csname jlreq@BlockHeading@spaces@current@space@\the\jlreq@BlockHeading@spaces@current@count\endcsname{%
+ \expandonce{\jlreq@tempb}%
+ }%
+ \def\@tempa##1##2##3{##1}%
+ \expandafter\xdef\csname jlreq@BlockHeading@spaces@current@before@\the\jlreq@BlockHeading@spaces@current@count\endcsname{%
+ \expandonce{\@tempa#4}%
+ \expandonce{\jlreq@resulta}%
+ \ifjlreq@tempa\unexpanded{%
+ \jlreq@setcurrentpage
+ \edef\jlreq@BlockHeading@currentpage{\the\jlreq@currentpage}%
+ }\fi
+ }%
+ \def\@tempa##1##2##3{##2}%
+ \expandafter\xdef\csname jlreq@BlockHeading@spaces@current@format@\the\jlreq@BlockHeading@spaces@current@count\endcsname{%
+ \expandonce{\@tempa#4}%
+ }%
+ \def\@tempa##1##2##3{##3}%
+ \expandafter\xdef\csname jlreq@BlockHeading@spaces@current@after@\the\jlreq@BlockHeading@spaces@current@count\endcsname{%
+ \expandonce{\jlreq@resultc}%
+ \ifjlreq@tempa\unexpanded{%
+ \ifx\jlreq@BlockHeading@currentpage\@empty\nobreak\else
+ \ifodd\jlreq@BlockHeading@currentpage\nobreak\else\allowbreak\fi
+ \fi
+ }\else\noexpand\nobreak\fi
+ % 現状ここ↓は常に空
+ \expandonce{\@tempa#4}%
+ }%
+ \ifx\jlreq@BlockHeading@spaces@headingslist\@empty
+ \expandafter\jlreq@BlockHeading@spaces@outputwospace
+ \expandafter\ignorespaces
+ \else
+ \expandafter\jlreq@BlockHeading@start@afterheading
+ \fi
+}
+
+\def\jlreq@BlockHeading@start@afterheading{\futurelet\jlreq@nextchar\jlreq@BlockHeading@start@afterheading@}
+\edef\jlreq@BlockHeading@start@afterheading@{%
+ \noexpand\ifx\expandonce{\space}\unexpanded{\jlreq@nextchar\expandafter\jlreq@BlockHeading@start@afterheading@@}%
+ \unexpanded{\else\expandafter\jlreq@BlockHeading@start@afterheading@@@\fi}%
+}
+% スペースを読み飛ばす
+\expandafter\def\expandafter\jlreq@BlockHeading@start@afterheading@@\space{\jlreq@BlockHeading@start@afterheading}
+\def\jlreq@BlockHeading@start@afterheading@@@{%
+ \def\jlreq@do{\jlreq@BlockHeading@spaces@output}%
+ \@for\@tempa:=\jlreq@BlockHeading@allheadings\do{%
+ \expandafter\ifx\csname\@tempa\endcsname\jlreq@nextchar\def\jlreq@do{}\fi
+ }%
+ % \jlreq@BlockHeading@HeadingSpaces@ignoretokens内のものは特別扱いする
+ \expandafter\@tfor\expandafter\@tempa\expandafter:\expandafter=\jlreq@BlockHeading@HeadingSpaces@ignoretokens\do{%
+ \expandafter\ifx\@tempa\jlreq@nextchar
+ \def\jlreq@do{\jlreq@BlockHeading@start@afterheading@saveafter@cs}%
+ \fi
+ }%
+ \jlreq@do
+}
+
+% コントロールシークエンスを保存
+\long\def\jlreq@BlockHeading@start@afterheading@saveafter@cs#1{%
+ \csgappto{jlreq@BlockHeading@spaces@current@after@\the\jlreq@BlockHeading@spaces@current@count}{#1}%
+ \jlreq@BlockHeading@start@afterheading@saveafter@option
+}
+% オプションがあれば保存
+\def\jlreq@BlockHeading@start@afterheading@saveafter@option{%
+ \@ifnextchar[{\jlreq@BlockHeading@start@afterheading@saveafter@option@}{\jlreq@BlockHeading@start@afterheading@saveafter@arguments}%
+}
+\long\def\jlreq@BlockHeading@start@afterheading@saveafter@option@[#1]{%
+ \csxappto{jlreq@BlockHeading@spaces@current@after@\the\jlreq@BlockHeading@spaces@current@count}{\unexpanded{[#1]}}%
+ \jlreq@BlockHeading@start@afterheading@saveafter@arguments
+}
+% 引数を保存し続けるループ
+\def\jlreq@BlockHeading@start@afterheading@saveafter@arguments{%
+ \futurelet\jlreq@nextchar\jlreq@BlockHeading@start@afterheading@saveafter@arguments@
+}
+\edef\jlreq@BlockHeading@start@afterheading@saveafter@arguments@{%
+ \noexpand\ifx\space\unexpanded{\jlreq@nextchar\expandafter\jlreq@BlockHeading@start@afterheading@saveafter@arguments@@\else\expandafter\jlreq@BlockHeading@start@afterheading@saveafter@arguments@@@\fi}%
+}
+\expandafter\def\expandafter\jlreq@BlockHeading@start@afterheading@saveafter@arguments@@\space{%
+ \csgappto{jlreq@BlockHeading@spaces@current@after@\the\jlreq@BlockHeading@spaces@current@count}{ }%
+ \jlreq@BlockHeading@start@afterheading@saveafter@arguments
+}
+\def\jlreq@BlockHeading@start@afterheading@saveafter@arguments@@@{%
+ \jlreq@ifnextchar\bgroup{\jlreq@BlockHeading@start@afterheading@saveafter@arguments@@@@}{\jlreq@BlockHeading@start@afterheading}%
+}
+\long\def\jlreq@BlockHeading@start@afterheading@saveafter@arguments@@@@#1{%
+ \csxappto{jlreq@BlockHeading@spaces@current@after@\the\jlreq@BlockHeading@spaces@current@count}{\unexpanded{{#1}}}%
+ \jlreq@BlockHeading@start@afterheading@saveafter@arguments
+}
+
+% 特別扱いしたいマクロを並べる
+\def\jlreq@BlockHeading@HeadingSpaces@ignoretokens{\label}
+
+% \jlreq@resulta -> before, \jlreq@resultb -> 本体,\jlreq@resultc -> after
+% {1 = 命令}{2 = レベル}{3 = スペース関連(横方向のみ)}{4 = フォーマット群}{5 = まとめたフォーマット群}{6 = *}{7 = running head}{8 = 見出し}{9 = 副題}
+\long\def\jlreq@BlockHeading@start@makeoutput#1#2#3#4#5#6#7#8#9{%
+ \begingroup
+ % ラベルがありか否か.\jlreq@tempc = \@emptyならばラベルあり
+ \ifnum #2>\c@secnumdepth
+ \def\jlreq@tempc{*}%
+ \else
+ \def\jlreq@tempc{#6}%
+ \fi
+ \edef\jlreq@tempa{\expandafter\jlreq@BlockHeading@start@geteachformat\expandafter{\jlreq@tempc}#4}% {ラベルフォーマット}{本文フォーマット}{副題フォーマット}
+ \edef\jlreq@tempb{\expandafter\jlreq@BlockHeading@start@getformat\expandafter{\jlreq@tempc}#5}% {まとめるフォーマット}
+ \edef\jlreq@do{\noexpand\jlreq@BlockHeading@start@makeoutput@@\expandonce{\jlreq@tempa}\expandonce{\jlreq@tempb}\unexpanded{{#8}{#9}}}%
+ \jlreq@do
+ \edef\jlreq@do{\noexpand\jlreq@BlockHeading@start@makeoutput@\unexpanded{#3}{\expandonce{\jlreq@result}}}%
+ \jlreq@do
+ % \jlreq@tempa -> 素のラベルフォーマット
+ \edef\jlreq@tempa{\jlreq@BlockHeading@start@getonlylabelformat#4}%
+ \edef\jlreq@do{%
+ \unexpanded{\def\jlreq@resulta}{%
+ \ifx\jlreq@tempc\@empty
+ \unexpanded{\long\gdef\jlreqHeadingLabel####1{####1}}%
+ \unexpanded{\refstepcounter{#1}}%
+ \else
+ \unexpanded{\long\gdef\jlreqHeadingLabel####1{}}%
+ \fi
+ \jlreq@ifempty{#8}%
+ {\unexpanded{\long\gdef\jlreqHeadingText####1{}}}%
+ {\unexpanded{\long\gdef\jlreqHeadingText####1{####1}}}%
+ \jlreq@ifempty{#9}%
+ {\unexpanded{\long\gdef\jlreqHeadingSubtitle####1{}}}%
+ {\unexpanded{\long\gdef\jlreqHeadingSubtitle####1{####1}}}%
+ }%
+ \unexpanded{\def\jlreq@resultb}{%
+ \expandonce{\jlreq@result}%
+ }%
+ \unexpanded{\def\jlreq@resultc}{%
+ \expandonce{\csname jlreq@heading@maketoc@#1\endcsname}{\unexpanded{#6}}{\expandonce{\jlreq@tempa}}{\unexpanded{#7}}%
+ }%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+% {ラベルフォーマット}{本文フォーマット}{副題フォーマット}に展開される.
+% {1 = 空ならばラベルあり}{2 = ラベルのみのフォーマット}{3 = ラベルフォーマット}{4 = 見出し文字列フォーマット}{5 = 見出し文字列フォーマット(ラベル無し)}{6 = 副題フォーマット}{7 = 副題フォーマット(ラベル無し)}
+\long\def\jlreq@BlockHeading@start@geteachformat#1#2#3#4#5#6#7{%
+ \jlreq@ifempty{#1}{\unexpanded{{#3}{#4}{#6}}}{\unexpanded{{}{#5}{#7}}}%
+}
+% {全体フォーマット}に展開される.
+% {1 = 空ならばラベルあり}{2 = 前フォーマットラベルあり}{3 = 前フォーマットラベルなし}{4 = 見出し全体のフォーマット}{5 = 後ろフォーマットラベルあり}{6 = 後ろフォーマットラベルなし}
+\long\def\jlreq@BlockHeading@start@getformat#1#2#3#4#5#6{%
+ \jlreq@ifempty{#1}{{\unexpanded{#2#4#6}}}{{\unexpanded{#3#4#6}}}%
+}
+\long\def\jlreq@BlockHeading@start@getonlylabelformat#1#2#3#4#5#6{\unexpanded{#1}}%
+
+% 横方向の空き調整を入れて,\jlreq@resultに返す.
+% {1 = 配置(clr)}{2 = 字下げ}{3 = 字上げ}{4 = 出力}
+\long\def\jlreq@BlockHeading@start@makeoutput@#1#2#3#4{%
+ \edef\jlreq@result{%
+ \noexpand\noindent
+ \jlreq@ifempty{#2}{}{\unexpanded{\hskip #2}}%
+ \noexpand\vbox{%
+ \noexpand\noindent
+ \ifx#1c\noexpand\centering\fi
+ \ifx#1r\noexpand\raggedleft\fi
+ \jlreq@ifempty{#2}{}{\unexpanded{\hsize=\dimexpr\hsize - #2\relax}}%
+ \jlreq@ifempty{#3}{}{\unexpanded{\hsize=\dimexpr\hsize - #3\relax}}%
+ \unexpanded{#4}%
+ }%
+ }%
+}
+
+% {1 = ラベルフォーマット}{2 = 見出し文字列フォーマット}{3 = 副題フォーマット}{4 = 全体フォーマット}{5 = 見出し}{6 = 副題}
+% \jlreq@resultに出力対象を入れる
+\long\def\jlreq@BlockHeading@start@makeoutput@@#1#2#3#4#5#6{%
+ \begingroup
+ \long\def\jlreq@tempa##1{#2}% 見出し文字列
+ \expandafter\def\expandafter\jlreq@tempa\expandafter{\jlreq@tempa{#5}}%
+ \jlreq@ifempty{#6}{%
+ \def\jlreq@tempb{}%
+ }{%
+ \long\def\jlreq@tempb##1{#3}% 副題
+ \expandafter\def\expandafter\jlreq@tempb\expandafter{\jlreq@tempb{#6}}%
+ }%
+ \long\def\jlreq@tempc##1##2##3{#4}% 全体のフォーマット
+ % 二度展開すると欲しいものが得られる
+ \edef\jlreq@tempa{\noexpand\jlreq@tempc{\unexpanded{#1}}{\expandonce{\jlreq@tempa}}{\expandonce{\jlreq@tempb}}}%
+ \edef\jlreq@do{%
+ \unexpanded{\def\jlreq@result}{\expandafter\expandonce\expandafter{\jlreq@tempa}}%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\def\jlreq@BlockHeading@start@removecolumn#1:{#1}
+
+% 空き指定を解釈する.a:10pt -> \jlreq@resulta=a,\jlreq@resultb=10pt
+\def\jlreq@BlockHeading@start@analyzespace#1:#2\jlreq@endmark{%
+ \jlreq@ifempty{#1}{%
+ \def\jlreq@resulta{}%
+ \def\jlreq@resultb{}%
+ }{%
+ \let\jlreq@resulta=#1%
+ \edef\jlreq@resultb{\expandonce{\jlreq@BlockHeading@start@removecolumn#2}}%
+ }%
+}
+
+% 行取り処理.#3が空の時は行取りの処理はしない.(空白挿入は行う.)
+% {1 = 前空き}{2 = 後ろ空き}{3 = トータル行数}{4 = 出力}
+% 最後には\nobreak(と\vskip)が入っている
+\long\def\jlreq@BlockHeading@start@gyodori#1#2#3#4{\par{%
+ \setbox\jlreq@tempboxa=\vbox{#4}%
+ % \jlreq@tempskip(a/b)に前/後ろに入れるべき値を入れる
+ % #1がa:ならばその値は\jlreq@tempskipaには足さず\jlreq@tempskipcに入れておく
+ \jlreq@tempskipa=0pt
+ \jlreq@tempskipb=0pt
+ \jlreq@tempskipc=0pt
+ \jlreq@BlockHeading@start@analyzespace#1:\jlreq@endmark
+ \let\jlreq@maeakitype=\jlreq@resulta
+ \let\jlreq@maeaki=\jlreq@resultb
+ \jlreq@BlockHeading@start@analyzespace#2:\jlreq@endmark
+ \let\jlreq@ushiroakitype=\jlreq@resulta
+ \let\jlreq@ushiroaki=\jlreq@resultb
+ \def\jlreq@lines{#3}%
+ % 両方強制指定の場合は行数を無視する.
+ \ifx r\jlreq@maeakitype\ifx r\jlreq@ushiroakitype\def\jlreq@lines{}\fi\fi
+ \setbox\jlreq@tempboxb=\hbox{阿}%
+ \ifx\jlreq@lines\@empty
+ \ifx\jlreq@maeaki\@empty\else
+ \ifx a\jlreq@maeakitype
+ \jlreq@tempskipc=\glueexpr\jlreq@maeaki\relax
+ \else
+ \jlreq@tempskipa=\glueexpr\jlreq@maeaki\relax
+ \fi
+ \fi
+ \ifx\jlreq@ushiroaki\@empty\else
+ \jlreq@tempskipb=\glueexpr\jlreq@ushiroaki\relax
+ \fi
+ \else
+ % 行取り時の前後の空きを足した値を\jlreq@tempdimaに入れる
+ \jlreq@tempdima=\glueexpr(#3\baselineskip - \baselineskip - \ht\jlreq@tempboxa - \dp\jlreq@tempboxa)\relax
+ \ifx\jlreq@maeakitype\@empty
+ \jlreq@tempskipa=\glueexpr(\jlreq@tempdima + \dp\jlreq@tempboxb - \ht\jlreq@tempboxb)/2\relax
+ \else
+ \ifx a\jlreq@maeakitype
+ \jlreq@tempskipa=\glueexpr(\jlreq@tempdima + \dp\jlreq@tempboxb - \ht\jlreq@tempboxb)/2\relax
+ \jlreq@tempskipc=\glueexpr\jlreq@maeaki\relax
+ \fi
+ \ifx s\jlreq@maeakitype
+ \jlreq@tempskipa=\glueexpr(\jlreq@tempdima + \dp\jlreq@tempboxb - \ht\jlreq@tempboxb)/2 + \jlreq@maeaki\relax
+ \jlreq@tempdima=\dimexpr\jlreq@tempdima + \jlreq@maeaki\relax
+ \fi
+ \ifx r\jlreq@maeakitype
+ \jlreq@tempskipa=\glueexpr\jlreq@maeaki\relax
+ \jlreq@tempdima=\dimexpr\jlreq@tempdima + \baselineskip - \dp\jlreq@tempboxb\relax
+ \fi
+ \fi
+ \ifx\jlreq@ushiroakitype\@empty
+ \jlreq@tempskipb=\glueexpr\jlreq@tempdima - \jlreq@tempskipa\relax
+ \else
+ \ifx a\jlreq@ushiroakitype
+ \jlreq@tempskipb=\glueexpr\jlreq@tempdima - \jlreq@tempskipa + \jlreq@ushiroaki\relax
+ \fi
+ \ifx r\jlreq@ushiroakitype
+ \jlreq@tempskipb=\glueexpr\jlreq@ushiroaki\relax
+ \jlreq@tempskipa=\glueexpr\jlreq@tempdima - \jlreq@tempskipb + \baselineskip - \ht\jlreq@tempboxb\relax
+ \fi
+ \fi
+ % \jlreq@tempdimaの利用ここまで
+ \fi
+ \jlreq@ifgluezero\jlreq@tempskipc{}{\vskip\jlreq@tempskipc\relax}%
+ \ifx r\jlreq@maeakitype\prevdepth=-1000pt\fi
+ % \jlreq@tempdimb, \jlreq@tempdimcに出力対称の高さを深さを代入
+ \jlreq@tempdimb=\ht\jlreq@tempboxa
+ \jlreq@tempdimc=\dp\jlreq@tempboxa
+ \setbox\jlreq@tempboxa=\vbox{%
+ \jlreq@ifgluezero\jlreq@tempskipa{}{\vskip\jlreq@tempskipa}%
+ \unvbox\jlreq@tempboxa
+ }%
+ \ifx\jlreq@lines\@empty
+ \dp\jlreq@tempboxa=\dimexpr\dp\jlreq@tempboxa + \ht\jlreq@tempboxa - \jlreq@tempdimb\relax
+ \ht\jlreq@tempboxa=\jlreq@tempdimb
+ \box\jlreq@tempboxa
+ \ifx r\jlreq@ushiroakitype\prevdepth=-1000pt \else\prevdepth=\jlreq@tempdimc\fi
+ % \jlreq@tempdimb, \jlreq@tempdimcの利用ここまで
+ \else
+ \dp\jlreq@tempboxa=\dimexpr\dp\jlreq@tempboxa + \ht\jlreq@tempboxa\relax
+ \ht\jlreq@tempboxa=0pt
+ \box\jlreq@tempboxa
+ \ifx r\jlreq@ushiroakitype\prevdepth=-1000pt \else\prevdepth=0pt \fi
+ \fi
+ \nobreak
+ \jlreq@ifgluezero\jlreq@tempskipb{}{\vskip\jlreq@tempskipb}%
+ \edef\jlreq@do{%
+ \ifdim\parskip=0pt \else
+ \unexpanded{\def\jlreq@parhook@gyodori}{%
+ \noexpand\parskip=\the\parskip
+ \unexpanded{\def\jlreq@parhook@gyodori{}}%
+ }%
+ \unexpanded{\parskip=0pt plus 1pt}%
+ \fi
+ }%
+ \expandafter}\jlreq@do
+}
+\PushPostHook{par}{\jlreq@parhook@gyodori}
+\def\jlreq@parhook@gyodori{}
+
+% 行取り情報をゲットだぜ
+% \jlreq@resultに{1 = 前空き}{2 = 後ろ空き}{3 = トータル行数}を入れる
+% #2#3#4はそれぞれ前空き,後ろ開き,トータル行数のデフォルト値
+% *つきは\setkeys*を使う.[]はkeyvalのファミリー.
+\def\jlreq@BlockHeading@gyodori@parsekeyval{%
+ \@ifstar{\jlreq@BlockHeading@gyodori@parsekeyval@{*}}{\jlreq@BlockHeading@gyodori@parsekeyval@{}}%
+}
+\def\jlreq@BlockHeading@gyodori@parsekeyval@#1{%
+ \@ifnextchar[{\jlreq@BlockHeading@gyodori@parsekeyval@@{#1}}{\jlreq@BlockHeading@gyodori@parsekeyval@@{#1}[jlreq@key]}%
+}
+\long\def\jlreq@BlockHeading@gyodori@parsekeyval@@#1[#2]#3#4#5#6{%
+ \begingroup
+ \def\jlreq@lines{#6}%
+ \def\jlreq@before@space{}%
+ \def\jlreq@before@lines{}%
+ \def\jlreq@after@space{}%
+ \def\jlreq@after@lines{}%
+ \jlreq@parsekeyval#1[#2]{
+ {lines}{\def\jlreq@lines{##1}}
+ {before_space}{\def\jlreq@before@space{##1}}
+ {after_space}{\def\jlreq@after@space{##1}}
+ {before_lines}{%
+ \jlreq@ifempty{##1}{\def\jlreq@before@lines{}}{%
+ \jlreq@iffirsttoken@ignorespaces{##1}{*}%
+ {\edef\jlreq@before@lines{s:\expandonce{\@gobble ##1}}}%
+ {\def\jlreq@before@lines{a:##1}}%
+ }%
+ }
+ {after_lines}{\def\jlreq@after@lines{##1}}
+ }{#3}%
+ % before/after_lines優先
+ \ifx\jlreq@before@space\@empty\else\edef\jlreq@before@space{r:\expandonce{\jlreq@before@space}}\fi
+ \ifx\jlreq@before@lines\@empty\else\edef\jlreq@before@space{\expandonce{\jlreq@before@lines}\baselineskip}\fi
+ \ifx\jlreq@before@space\@empty\def\jlreq@before@space{#4}\fi
+ \ifx\jlreq@after@space\@empty\else\edef\jlreq@after@space{r:\expandonce{\jlreq@after@space}}\fi
+ \ifx\jlreq@after@lines\@empty\else\edef\jlreq@after@space{a:\expandonce{\jlreq@after@lines}\baselineskip}\fi
+ \ifx\jlreq@after@space\@empty\def\jlreq@after@space{#5}\fi
+ \edef\jlreq@do{%
+ \unexpanded{\def\jlreq@result}{{\expandonce{\jlreq@before@space}}{\expandonce{\jlreq@after@space}}{\expandonce{\jlreq@lines}}}%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\newbox\jlreq@BlockHeading@start@label@box
+% \DeclareBlockHeading{命令名}{レベル}{設定}
+\def\jlreq@BlockHeading@allheadings{}% 別行見出し一覧
+\newcommand{\DeclareBlockHeading}[3]{%
+ \def\jlreq@do{\@removeelement{#1}}%
+ \expandafter\jlreq@do\expandafter{\jlreq@heading@allheadings}{\jlreq@heading@allheadings}%
+ \appto\jlreq@heading@allheadings{,#1}%
+ \expandafter\jlreq@do\expandafter{\jlreq@BlockHeading@allheadings}{\jlreq@BlockHeading@allheadings}%
+ \appto\jlreq@BlockHeading@allheadings{,#1}%
+ \expandafter\def\csname jlreq@heading@level@#1\endcsname{#2}%
+ \expandafter\edef\csname jlreq@heading@setting@#1\endcsname{\unexpanded{#3}}%
+ \expandafter\def\csname jlreq@heading@type@#1\endcsname{\RenewBlockHeading}%
+ \@ifundefined{c@#1}{\newcounter{#1}}{}%
+ \@ifundefined{#1mark}{\expandafter\let\csname #1mark\endcsname\@gobble}{}%
+ \jlreq@heading@make@maketoc{#1}{#2}%
+ \begingroup
+ \def\jlreq@font{}%
+ \def\jlreq@subtitle@font{}%
+ \def\jlreq@indent{0\zw}%
+ \def\jlreq@end@indent{0\zw}%
+ \def\jlreq@align{l}%
+ \edef\jlreq@format{\unexpanded{##1##2##3}}%
+ \edef\jlreq@heading@text@format{\unexpanded{##1}}%
+ \def\jlreq@pagebreak{}%
+ \def\jlreq@label@format{\@seccntformat{#1}}%
+ \newif\ifjlreq@second@text@indent@withlabel\jlreq@second@text@indent@withlabeltrue
+ \def\jlreq@after@label@space{1\zw}%
+ \def\jlreq@second@heading@text@indent@wlabel{0pt}%
+ \def\jlreq@second@heading@text@indent@wolabel{0pt}%
+ \edef\jlreq@subtitle@format{\unexpanded{---##1---}}%
+ \newif\ifjlreq@subtitleindent@withlabel\jlreq@subtitleindent@withlabeltrue
+ \def\jlreq@subtitle@indent{1\zw}%
+ \def\jlreq@afterindent{\@afterindenttrue}%
+ \def\jlreq@allowbreak@evenpage{*}% 偶数ページでも改ページを許可するならば空,そうでないなら*
+ \newif\ifjlreq@subtitle@break\jlreq@subtitle@breaktrue
+ \def\jlreq@subtitle@indent{1\zw}%
+ \def\jlreq@column@spanning{false}%
+ \newif\ifjlreq@column@spanning@possible\jlreq@column@spanning@possiblefalse
+ \newif\ifjlreq@number \jlreq@numbertrue
+ % a,bみたいなのをaとbにわける.カンマがなければbは空.引数を{a}{b}として##2を呼び出す.
+ \def\jlreq@parsecomma##1##2{%
+ \jlreq@helper@dividebycomma{##1}%
+ \jlreq@if{\ifjlreq@result\fi}{%
+ \edef\jlreq@do{\noexpand\jlreq@tempa{\expandonce{\jlreq@resulta}}{\expandonce{\jlreq@resultb}}}%
+ }{%
+ \edef\jlreq@do{\noexpand\jlreq@tempa{##1}{}}%
+ }%
+ \def\jlreq@tempa####1####2{##2}%
+ \jlreq@do
+ }%
+ \jlreq@parsekeyval[BlockHeading:#1]{
+ {lines}{}
+ {before_space}{}
+ {after_space}{}
+ {before_lines}{}
+ {after_lines}{}
+ {font}{\def\jlreq@font{##1}}
+ {subtitle_font}{\def\jlreq@subtitle@font{##1}}
+ {indent}{\def\jlreq@indent{##1}}
+ {end_indent}{\def\jlreq@end@indent{##1}}
+ {align}[left,center,right]{%
+ \jlreq@switch{##1}{
+ {left}{\def\jlreq@align{l}}
+ {center}{\def\jlreq@align{c}}
+ {right}{\def\jlreq@align{r}}
+ }%
+ }
+ {format}{\edef\jlreq@format{\unexpanded{##1}}}
+ {after_label_space}{\def\jlreq@after@label@space{##1}}
+ {second_heading_text_indent,heading_text_second_indent}{%
+ \jlreq@parsecomma{##1}{%
+ \jlreq@iffirsttoken{####1}{*}{%
+ \jlreq@second@text@indent@withlabelfalse
+ \edef\jlreq@second@heading@text@indent@wlabel{\expandonce{\@gobble ####1}}%
+ }{%
+ \jlreq@second@text@indent@withlabeltrue
+ \def\jlreq@second@heading@text@indent@wlabel{####1}%
+ }%
+ \jlreq@ifempty{####2}{%
+ \let\jlreq@second@heading@text@indent@wolabel=\jlreq@second@heading@text@indent@wlabel
+ }{%
+ \def\jlreq@second@heading@text@indent@wolabel{####2}%
+ }%
+ }%
+ }
+ {label_format}{\edef\jlreq@label@format{\unexpanded{##1}}}
+ {subtitle_format}{\edef\jlreq@subtitle@format{\unexpanded{##1}}}
+ {subtitle_indent}{%
+ \jlreq@iffirsttoken{##1}{*}{%
+ \jlreq@subtitleindent@withlabelfalse
+ \edef\jlreq@subtitle@indent{\expandonce{\@gobble ##1}}%
+ }{%
+ \jlreq@subtitleindent@withlabeltrue
+ \def\jlreq@subtitle@indent{##1}%
+ }%
+ }
+ {subtitle_break}[true,false]{\csname jlreq@subtitle@break##1\endcsname}
+ {afterindent}[true,false]{\edef\jlreq@afterindent{\expandonce{\csname @afterindent##1\endcsname}}}
+ {allowbreak_if_evenpage}[true,false]{%
+ \jlreq@switch{##1}{
+ {true}{\def\jlreq@allowbreak@evenpage{}}
+ {false}{\def\jlreq@allowbreak@evenpage{*}}
+ }%
+ }
+ {pagebreak}[clearpage,cleardoublepage,clearcolumn,nariyuki,begin_with_odd_page,begin_with_even_page]{%
+ \jlreq@switch{##1}{
+ {clearpage}{\def\jlreq@pagebreak{\clearpage}\jlreq@column@spanning@possibletrue}
+ {cleardoublepage}{\def\jlreq@pagebreak{\cleardoublepage}\jlreq@column@spanning@possibletrue}
+ {clearcolumn}{\if@twocolumn\def\jlreq@pagebreak{\newpage}\else\def\jlreq@pagebreak{}\fi\jlreq@column@spanning@possiblefalse}
+ {begin_with_even_page}{\def\jlreq@pagebreak{\cleartoevenpage[empty]}\jlreq@column@spanning@possibletrue}
+ {begin_with_odd_page}{\def\jlreq@pagebreak{\cleartooddpage[empty]}\jlreq@column@spanning@possibletrue}
+ {nariyuki}{\def\jlreq@pagebreak{}\jlreq@column@spanning@possiblefalse}
+ }%
+ }
+ % 後々数字を受け付けるようになったりするかもしれないので……
+ {column_spanning}{%
+ \jlreq@tempatrue % validな入力に対してfalse
+ \jlreq@ifempty{##1}{}{%
+ \jlreq@ifnumber{##1}{% 数字の時はtrueに回す
+ \jlreq@tempafalse
+ \def\jlreq@column@spanning{true}%
+ }{%
+ \jlreq@switch{##1}{%
+ {true}{\jlreq@tempafalse\def\jlreq@column@spanning{true}}
+ {false}{\jlreq@tempafalse\def\jlreq@column@spanning{false}}
+ }%
+ }%
+ }%
+ \ifjlreq@tempa\ClassWarningNoLine{jlreq}{Invalid input `##1' for column_spanning in BlockHeading #1}\fi
+ }
+ {number}[true,false]{\csname jlreq@number##1\endcsname}
+ }{#3}%
+ \def\jlreq@do{}% 初期化.これに最終処理を入れていく.
+ % 入力チェック
+ \ifthenelse{\equal{\jlreq@column@spanning}{true}}{%
+ \ifjlreq@column@spanning@possible\else
+ \ClassWarningNoLine{jlreq}{column_spanning can be used only with `pagebreak=nariyuki' or `pagebreak=clearcolumn' (in BlockHeading #1)}%
+ \def\jlreq@column@spanning{false}%
+ \fi
+ }{}%
+ % ラベルありフォーマット:前
+ \edef\jlreq@pre@format@wlabel{%
+ \noexpand\noindent
+ \expandonce{\jlreq@font}%
+ \ifnum 0\ifjlreq@second@text@indent@withlabel 1\fi\ifjlreq@subtitleindent@withlabel 1\fi>0
+ \unexpanded{\setbox\jlreq@BlockHeading@start@label@box=\hbox}{\expandonce{\jlreq@label@format}}%
+ \unexpanded{\xdef\jlreq@BlockHeading@start@labellength{\the\wd\jlreq@BlockHeading@start@label@box}}%
+ \unexpanded{\def\jlreq@BlockHeading@start@outputlabel{\box\jlreq@BlockHeading@start@label@box}}%
+ \else
+ \unexpanded{\xdef\jlreq@BlockHeading@start@labellength{0pt}}%
+ \unexpanded{\def\jlreq@BlockHeading@start@outputlabel}{\expandonce{\jlreq@label@format}}%
+ \fi
+ }%
+ % ラベルなしフォーマット:前
+ \edef\jlreq@pre@format@wolabel{%
+ \noexpand\noindent
+ \expandonce{\jlreq@font}%
+ \unexpanded{\xdef\jlreq@BlockHeading@start@labellength{0pt}}%
+ \unexpanded{\def\jlreq@BlockHeading@start@outputlabel}{}%
+ }%
+ % 空き量などの調整を含んだラベル
+ \edef\jlreq@label@format@modified{%
+ \noexpand\jlreq@BlockHeading@start@outputlabel
+ \unexpanded{\inhibitglue\hbox{}}%
+ \ifdim\dimexpr\jlreq@after@label@space\relax=0pt \else
+ \noexpand\hspace*{\noexpand\dimexpr\expandonce{\jlreq@after@label@space}\noexpand\relax}%
+ \fi
+ }%
+ \edef\jlreq@heading@text@format@wlabel{%
+ \ifnum 0\ifdim\jlreq@second@heading@text@indent@wlabel=0pt \else 1\fi\ifjlreq@second@text@indent@withlabel 1\fi>0
+ \unexpanded{\hangindent=\glueexpr}(\expandonce{\jlreq@second@heading@text@indent@wlabel})%
+ \ifjlreq@second@text@indent@withlabel + (\expandonce{\jlreq@after@label@space}) + \unexpanded{\jlreq@BlockHeading@start@labellength}\fi
+ \noexpand\relax
+ \fi
+ \expandonce{\jlreq@heading@text@format}%
+ }%
+ \edef\jlreq@heading@text@format@wolabel{%
+ \ifdim\dimexpr\jlreq@second@heading@text@indent@wolabel\relax=0pt \else
+ \unexpanded{\hangindent=\dimexpr}\expandonce{\jlreq@second@heading@text@indent@wolabel}\noexpand\relax
+ \fi
+ \expandonce{\jlreq@heading@text@format}%
+ }%
+ % 副題:ラベルありかなしかはhangindentの扱いだけなので,他はまとめる
+ \def\jlreq@make@subtitle@format##1##2{%
+ \edef##1{%
+ \ifjlreq@subtitle@break
+ \noexpand\par
+ ##2%
+ \unexpanded{\nobreak\noindent}%
+ \else
+ \ifdim\jlreq@subtitle@indent=0pt \else
+ \noexpand\hspace*{\expandonce{\jlreq@subtitle@indent}}%
+ \fi
+ \fi
+ {\expandonce{\jlreq@subtitle@font}\expandonce{\jlreq@subtitle@format}}%
+ }%
+ }%
+ \jlreq@make@subtitle@format\jlreq@subtitle@format@wlabel{%
+ \ifjlreq@subtitleindent@withlabel
+ \noexpand\hangafter=0
+ \unexpanded{\hangindent=\dimexpr}\noexpand\jlreq@BlockHeading@start@labellength + (\expandonce{\jlreq@after@label@space}) + (\expandonce{\jlreq@subtitle@indent})\noexpand\relax
+ \else
+ \ifdim\jlreq@subtitle@indent=0pt \else
+ \noexpand\hangafter=0
+ \unexpanded{\hangindent=\dimexpr}\expandonce{\jlreq@subtitle@indent}\noexpand\relax
+ \fi
+ \fi
+ }%
+ \jlreq@make@subtitle@format\jlreq@subtitle@format@wolabel{%
+ \ifdim\jlreq@subtitle@indent=0pt \else
+ \noexpand\hangafter=0
+ \unexpanded{\hangindent=\dimexpr}\expandonce{\jlreq@subtitle@indent}\noexpand\relax
+ \fi
+ }%
+ \jlreq@heading@make@l@{#1}{#2}{\jlreq@label@format}%
+ \eappto\jlreq@do{\expandonce{\jlreq@result}}%
+ \jlreq@BlockHeading@gyodori@parsekeyval*[BlockHeading:#1]{#3}{}{}{1}%
+ \let\jlreq@spaceset=\jlreq@result
+ \edef\jlreq@totalformat{\unexpanded{##1}}%
+ \edef\jlreq@totalformat@after{\expandonce{\jlreq@afterindent}\noexpand\@afterheading}%
+ \if@twocolumn
+ \ifthenelse{\equal{\jlreq@column@spanning}{true}}{%
+ \def\@tempa##1##2##3{%
+ % 前開きが常に入ってしまうので,a:の時は除去する
+ \jlreq@iffirsttoken{##1}{a}{\def\jlreq@spaceset{{}{##2}{##3}}}{}%
+ \edef\jlreq@totalformat{%
+ \unexpanded{\jlreq@if{\if@twocolumn\fi}}{%
+ \noexpand\twocolumn[{%
+ % 普段自動で入る\topskipと\baselineskipを手動で入れる
+ \jlreq@iffirsttoken{##1}{r}{}{\unexpanded{\vskip\topskip\relax}}%
+ \unexpanded{####1}%
+ \jlreq@iffirsttoken{##2}{r}{}{\unexpanded{\vskip\glueexpr\baselineskip - \topskip\relax}}%
+ }]%
+ }{%
+ \expandonce{\jlreq@totalformat}
+ }%
+ }%
+ }%
+ \expandafter\@tempa\jlreq@spaceset
+ \def\jlreq@totalformat@after{}%
+ }{%
+ }%
+ \fi
+ \edef\jlreq@do{%
+ \expandonce{\jlreq@do}%
+ \noexpand\edef\expandonce{\csname jlreq@headingcs@#1\endcsname}{\noexpand\unexpanded{%
+ \noexpand\jlreq@hook@beforeheadings{#1}%
+ \expandonce{\jlreq@pagebreak}%
+ \unexpanded{\jlreq@BlockHeading@start{#1}{#2}}%
+ {{\expandonce{\jlreq@align}}{\expandonce{\jlreq@indent}}{\expandonce{\jlreq@end@indent}}\expandonce{\jlreq@spaceset}{\expandonce{\jlreq@allowbreak@evenpage}}}%
+ {\ifjlreq@number\else -\fi}%
+ {%
+ {%
+ {\expandonce{\jlreq@label@format}}{\expandonce{\jlreq@label@format@modified}}%
+ {\expandonce{\jlreq@heading@text@format@wlabel}}{\expandonce{\jlreq@heading@text@format@wolabel}}%
+ {\expandonce{\jlreq@subtitle@format@wlabel}}{\expandonce{\jlreq@subtitle@format@wolabel}}%
+ }%
+ {%
+ {\expandonce{\jlreq@pre@format@wlabel}}{\expandonce{\jlreq@pre@format@wolabel}}%
+ {\expandonce{\jlreq@format}}%
+ {}{}%
+ }%
+ }%
+ {{}{\expandonce{\jlreq@totalformat}}{\expandonce{\jlreq@totalformat@after}}}%
+ }}%
+ \noexpand\def\expandonce{\csname #1\endcsname}{\expandonce{\csname jlreq@headingcs@#1\endcsname}}%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\newcommand{\NewBlockHeading}[3]{%
+ \expandafter\@ifdefinable\csname #1\endcsname{\DeclareBlockHeading{#1}{#2}{#3}}%
+}
+\newcommand{\RenewBlockHeading}[3]{%
+ \@ifundefined{#1}{\@latex@error{\expandafter\string\csname#1\endcsname\space undefined}\@ehc}{\DeclareBlockHeading{#1}{#2}{#3}}%
+}
+\newcommand{\ProvideBlockHeading}[3]{%
+ \@ifundefined{#1}{\DeclareBlockHeading{#1}{#2}{#3}}{}%
+}
+
+%.. 別行見出しが連続した場合の処理
+% 設定値保存に次のマクロを使う
+% \jlreq@BlockHeading@spaces@headingslist
+% : スペースを考慮しないとならない見出しのリスト.,_chapter_section_subsection,_section_subsection,...みたいな感じ
+% \jlreq@BlockHeading@spaces@setlist@<見出し名リスト>
+% : 見出し名リストが続いたときの空き関連設定.<見出し名リスト>は_chapter_section_subsectionみたいなやつ.
+% {***}{***}...というリスト.各々の***は次のどれか.
+% 最初:全体への指定.{前空き}{後ろ空き}{行数}
+% _{前空き}{後ろ空き}{行数}:見出しに対する指定.先頭が_*の場合は,デフォルト設定をロードしてからということ.
+% それ以外:空き量
+% 最初や最後に空き量指定がある場合は,全体への指定に組み込むことにする.
+%
+% 現在状況保存に以下のマクロを使う
+% \jlreq@BlockHeading@spaces@current@sequence
+% : 現在どのような見出しが続いているかリスト.
+% \jlreq@BlockHeading@spaces@current@space@<n>
+% : 現在処理中のn番目の見出しに対する空き情報.{前空き}{後ろ空き}{トータル行数}{偶数ページbreak情報}.n=1から始まる.
+% \jlreq@BlockHeading@spaces@current@output@<n>
+% : 現在処理中のn番目の見出しの中身.
+% \jlreq@BlockHeading@spaces@current@format@<n>
+% : 現在処理中のn番目の見出しのフォーマット.行取りマクロを包み込むようにする.
+% \jlreq@BlockHeading@spaces@current@before@<n>
+% : n番目の見出しの前に出すもの
+% \jlreq@BlockHeading@spaces@current@after@<n>
+% : n番目の見出しの後ろに出すもの
+% \jlreq@BlockHeading@spaces@current@count
+% : 現在いくつ目の連続する見出しを処理しているかのカウンター
+\newcount\jlreq@BlockHeading@spaces@current@count
+\jlreq@BlockHeading@spaces@current@count=0
+\def\jlreq@BlockHeading@spaces@current@sequence{}
+\def\jlreq@BlockHeading@spaces@headingslist{}
+
+\newcommand{\SetBlockHeadingSpaces}[1]{%
+ \begingroup
+ % 現段階の情報をクリアする
+ \def\jlreq@tempa{}% 見出しリスト
+ \def\jlreq@tempb{}% 設定リスト \def\jlreq@BlockHeading@spaces@***{{**}{**}...}ってのを入れる
+ \jlreq@SetBlockHeadingSpaces#1\jlreq@endmark
+ \edef\jlreq@do{%
+ \unexpanded{%
+ \@for\@tempa:=\jlreq@BlockHeading@spaces@headingslist\do{%
+ \expandafter\let\csname jlreq@BlockHeading@spaces@setlist@\@tempa\endcsname=\@undefined
+ }%
+ }%
+ \unexpanded{\def\jlreq@BlockHeading@spaces@headingslist}{\expandonce{\jlreq@tempa}}%
+ \expandonce{\jlreq@tempb}%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+\def\jlreq@SetBlockHeadingSpaces{% カンマを無視する処理
+ \@ifnextchar,{\expandafter\jlreq@SetBlockHeadingSpaces@i\@gobble}{\jlreq@SetBlockHeadingSpaces@i}%
+}
+\def\jlreq@SetBlockHeadingSpaces@i{%
+ \@ifnextchar[{\jlreq@SetBlockHeadingSpaces@ii}{\jlreq@SetBlockHeadingSpaces@ii[]}%
+}
+\def\jlreq@SetBlockHeadingSpaces@ii[#1]#2{%
+ \jlreq@ifendmark{#2}{}{%
+ \def\jlreq@headings{}% 見出し名リスト
+ \jlreq@BlockHeading@gyodori@parsekeyval[BlockHeadingSpaces]{#1}{}{}{}%
+ \let\jlreq@totalset=\jlreq@result% 上の#1に対応する設定
+ \def\jlreq@set{}% 個々の設定
+ \def\jlreq@lastdimen{}% 最後の寸法
+ \def\jlreq@do##1##2##3{%
+ \jlreq@ifempty{##1}{\jlreq@tempatrue}{\jlreq@tempafalse}% 前開きが空ならば\jlreq@tempatrue
+ \jlreq@ifempty{##2}{\jlreq@tempbtrue}{\jlreq@tempbfalse}% 後ろ開きが空ならば\jlreq@tempbtrue
+ }%
+ \expandafter\jlreq@do\jlreq@totalset
+ \jlreq@SetBlockHeadingSpaces@iii{#2}%
+ \eappto\jlreq@tempa{,\expandonce{\jlreq@headings}}% \jlreq@tempaに\jlreq@headingsを追加
+ \ifjlreq@tempb
+ \ifx\jlreq@lastdimen\@empty\else % 最後が寸法だったので\jlreq@SetBlockHeadingSpaces@totalsetを改変
+ \def\jlreq@do##1##2##3{%
+ \edef\jlreq@totalset{{\unexpanded{##1}}{r:\expandonce{\jlreq@lastdimen}}{\unexpanded{##3}}}%
+ }%
+ \expandafter\jlreq@do\jlreq@totalset
+ \fi
+ \else
+ \eappto\jlreq@set{{\expandonce{\jlreq@lastdimen}}}%
+ \fi
+ \eappto\jlreq@tempb{%
+ \noexpand\@ifundefined{jlreq@BlockHeading@spaces@setlist@\jlreq@headings}{}{%
+ \noexpand\ClassError{jlreq}{The spaces for \jlreq@headings\space is defined more than once (in SetBlockHeadingSpaces)}{\noexpand\@ehc}%
+ }%
+ \noexpand\def\expandonce{\csname jlreq@BlockHeading@spaces@setlist@\jlreq@headings\endcsname}{{\expandonce{\jlreq@totalset}}\expandonce{\jlreq@set}}%
+ }%
+ \jlreq@SetBlockHeadingSpaces
+ }%
+}
+\def\jlreq@SetBlockHeadingSpaces@iii#1{%
+ \@for\@tempa:=#1\do{%
+ \expandafter\jlreq@helper@trim\expandafter{\@tempa}{\@tempa}%
+ \expandafter\jlreq@iffirsttoken@ignorespaces\expandafter{\@tempa}{_}{%
+ \ifx\jlreq@lastdimen\@empty\else\eappto\jlreq@set{{\expandonce{\jlreq@lastdimen}}}\fi%
+ \def\jlreq@lastdimen{}%
+ \expandafter\jlreq@SetBlockHeadingSpaces@iv\@tempa{\jlreq@endmark}%
+ }{%
+ \ifjlreq@tempa
+ % 最初が寸法なので,全体の設定(\jlreq@totalset)に組み込む.
+ \def\jlreq@do##1##2##3{%
+ \edef\jlreq@totalset{{r:\expandonce{\@tempa}}{\unexpanded{##2}}{\unexpanded{##3}}}%
+ }%
+ \expandafter\jlreq@do\jlreq@totalset
+ \else
+ \ifx\jlreq@lastdimen\@empty\else\eappto\jlreq@set{{\expandonce{\jlreq@lastdimen}}}\fi
+ \let\jlreq@lastdimen=\@tempa
+ \fi
+ }%
+ \jlreq@tempafalse
+ }%
+}
+\def\jlreq@SetBlockHeadingSpaces@iv#1#{%
+ \expandafter\jlreq@ifcontains\expandafter{\@gobble #1}{_}{%
+ \ClassWarning{jlreq}{Unusual heading name `\@gobble #1' is found. You forgot a comma? (in SetBlockHeadingSpaces)}%
+ }{}%
+ \jlreq@ifendswith{#1}{*}{{%
+ \def\@tempa_##1*{\def\@tempa{##1}}%
+ \@tempa#1%
+ \ClassWarning{jlreq}{The heading name `\@gobble #1' ends with `*'. Do you mean `_\@tempa{*}'? (in SetBlockHeadingSpaces)}%
+ }}{}%
+ \appto\jlreq@headings{#1}%
+ \jlreq@SetBlockHeadingSpaces@v
+}
+\def\jlreq@SetBlockHeadingSpaces@v#1{%
+ % 空っぽの場合は{_{r:0pt}{r:0pt}{}}
+ \jlreq@ifendmark{#1}{\appto\jlreq@set{{_{r:0pt}{r:0pt}{}}}}{%
+ \jlreq@iffirsttoken{#1}{*}{% *始まりの場合は{_*{}{}{}}
+ \expandafter\jlreq@BlockHeading@gyodori@parsekeyval\expandafter{\@gobble #1}{}{}{}%
+ \eappto\jlreq@set{{_*\expandonce{\jlreq@result}}}%
+ }{% それ以外の場合は{_{}{}{}}
+ \jlreq@BlockHeading@gyodori@parsekeyval{#1}{}{}{}%
+ \eappto\jlreq@set{{_\expandonce{\jlreq@result}}}%
+ }%
+ \@gobble % \jlreq@endmarkを食う
+ }%
+}
+
+% 現在の情報に基づき出力
+\def\jlreq@BlockHeading@spaces@output{%
+ \@ifundefined{jlreq@BlockHeading@spaces@setlist@\jlreq@BlockHeading@spaces@current@sequence}{%
+ \jlreq@BlockHeading@spaces@outputwospace
+ }{%
+ \expandafter\expandafter\expandafter\jlreq@BlockHeading@spaces@output@\csname jlreq@BlockHeading@spaces@setlist@\jlreq@BlockHeading@spaces@current@sequence\endcsname\jlreq@endmark
+ }%
+}
+
+% 連続スペース情報とか無視して各々の見出しを出力する
+\def\jlreq@BlockHeading@spaces@outputwospace{%
+ \begingroup
+ \jlreq@tempcnta=0
+ \def\jlreq@do{}%
+ \jlreq@BlockHeading@spaces@outputwospace@
+ \jlreq@BlockHeading@spaces@clear
+ \expandafter\endgroup
+ \jlreq@do
+}
+\def\jlreq@BlockHeading@spaces@outputwospace@{%
+ \ifnum\jlreq@tempcnta<\jlreq@BlockHeading@spaces@current@count
+ \advance\jlreq@tempcnta by 1
+ \eappto\jlreq@do{\csexpandonce{jlreq@BlockHeading@spaces@current@before@\the\jlreq@tempcnta}}%
+ \edef\jlreq@tempa{%
+ \unexpanded{\long\def\jlreq@tempa##1}{\csexpandonce{jlreq@BlockHeading@spaces@current@format@\the\jlreq@tempcnta}}%
+ }%
+ \jlreq@tempa
+ \edef\jlreq@tempb{%
+ \noexpand\expandonce{\noexpand\jlreq@tempa{%
+ \noexpand\jlreq@BlockHeading@start@gyodori
+ \csexpandonce{jlreq@BlockHeading@spaces@current@space@\the\jlreq@tempcnta}%
+ {\csexpandonce{jlreq@BlockHeading@spaces@current@output@\the\jlreq@tempcnta}}%
+ }}%
+ }%
+ \eappto\jlreq@do{\jlreq@tempb\csexpandonce{jlreq@BlockHeading@spaces@current@after@\the\jlreq@tempcnta}}%
+ \expandafter\jlreq@BlockHeading@spaces@outputwospace@
+ \fi
+}
+
+\def\jlreq@BlockHeading@spaces@output@#1#2\jlreq@endmark{%
+ \def\jlreq@result{}%
+ \jlreq@tempcnta=0
+ \jlreq@BlockHeading@spaces@output@@#2\jlreq@endmark
+ \jlreq@tempatrue % 周りの行取り処理が必要か
+ \jlreq@ifempty{#1}{\jlreq@tempafalse}{}%
+ \ifthenelse{\equal{#1}{{}{}{}}}{\jlreq@tempafalse}{}%
+ \edef\jlreq@do{%
+ \ifjlreq@tempa
+ \unexpanded{\jlreq@BlockHeading@start@gyodori#1}{%
+ \expandonce{\jlreq@result}%
+ }%
+ \else
+ \expandonce{\jlreq@result}%
+ \fi
+ }%
+ \jlreq@BlockHeading@spaces@clear
+ \jlreq@do
+}
+% jlreq@resultに出力すべきものを入れていく
+\def\jlreq@BlockHeading@spaces@output@@#1{%
+ \jlreq@ifendmark{#1}{}{%
+ \jlreq@iffirsttoken@ignorespaces{#1}{_}{%
+ \advance\jlreq@tempcnta by 1
+ \expandafter\jlreq@BlockHeading@spaces@output@@@\expandafter{\@gobble #1}%
+ }{%
+ \appto\jlreq@result{\vskip\glueexpr #1\relax}%
+ }%
+ \jlreq@BlockHeading@spaces@output@@
+ }%
+}
+\def\jlreq@BlockHeading@spaces@output@@@#1{%
+ \edef\jlreq@do{%
+ \noexpand\jlreq@BlockHeading@spaces@output@@@@
+ \jlreq@iffirsttoken@ignorespaces{#1}{*}{{*}\expandonce{\@gobble #1}}{\unexpanded{{}#1}}%
+ \csexpandonce{jlreq@BlockHeading@spaces@current@space@\the\jlreq@tempcnta}%
+ {\csexpandonce{jlreq@BlockHeading@spaces@current@output@\the\jlreq@tempcnta}}%
+ }%
+ \jlreq@do
+}
+% #1: デフォルト値を使うならば*,#2#3#4が設定された値,#5#6#7がデフォルト値,#8は偶数ページの,#9が出力
+\def\jlreq@BlockHeading@spaces@output@@@@#1#2#3#4#5#6#7#8{%
+ \edef\jlreq@tempa{%
+ \unexpanded{\long\def\jlreq@tempa##1}{\csexpandonce{jlreq@BlockHeading@spaces@current@format@\the\jlreq@tempcnta}}%
+ }%
+ \jlreq@tempa
+ \edef\jlreq@tempb{%
+ \noexpand\expandonce{\noexpand\jlreq@tempa{%
+ \noexpand\jlreq@BlockHeading@start@gyodori
+ \jlreq@ifempty{#1}{\unexpanded{{#2}{#3}{#4}}}{%
+ {\jlreq@ifempty{#2}{\unexpanded{#5}}{\unexpanded{#2}}}%
+ {\jlreq@ifempty{#3}{\unexpanded{#6}}{\unexpanded{#3}}}%
+ {\jlreq@ifempty{#4}{\unexpanded{#7}}{\unexpanded{#4}}}%
+ }\unexpanded{{#8}}%
+ }}%
+ }%
+ \eappto\jlreq@result{%
+ \csexpandonce{jlreq@BlockHeading@spaces@current@before@\the\jlreq@tempcnta}%
+ \jlreq@tempb
+ \csexpandonce{jlreq@BlockHeading@spaces@current@after@\the\jlreq@tempcnta}%
+ }%
+}
+
+% 連続見出しスペース調整用のデータをすべてクリアする
+\def\jlreq@BlockHeading@spaces@clear{%
+ \begingroup
+ \jlreq@tempcnta=0
+ \@whilenum\jlreq@tempcnta<\jlreq@BlockHeading@spaces@current@count\do{%
+ \advance\jlreq@tempcnta by 1
+ \expandafter\global\expandafter\let\csname jlreq@BlockHeading@spaces@current@space@\the\jlreq@tempcnta\endcsname=\@undefined
+ \expandafter\global\expandafter\let\csname jlreq@BlockHeading@spaces@current@output@\the\jlreq@tempcnta\endcsname=\@undefined
+ \expandafter\global\expandafter\let\csname jlreq@BlockHeading@spaces@current@before@\the\jlreq@tempcnta\endcsname=\@undefined
+ \expandafter\global\expandafter\let\csname jlreq@BlockHeading@spaces@current@after@\the\jlreq@tempcnta\endcsname=\@undefined
+ }%
+ \gdef\jlreq@BlockHeading@spaces@current@sequence{}%
+ \global\jlreq@BlockHeading@spaces@current@count=0
+ \endgroup
+}
+
+%.. 同行見出し
+% {1 = 命令名}{2 = レベル}{3 = */-}{4 = ラベルフォーマット}{5 = ラベルありフォーマット}{6 = ラベルなしフォーマット}
+% 4,5は見出し文字列が#1になる.
+\long\def\jlreq@RuninHeading@start#1#2#3#4#5#6{%
+ \edef\jlreq@RuninHeading@start@format@label{\unexpanded{#4}}%
+ \edef\jlreq@RuninHeading@start@format@wlabel{\unexpanded{#5}}%
+ \edef\jlreq@RuninHeading@start@format@wolabel{\unexpanded{#6}}%
+ \@ifstar{\@dblarg{\jlreq@RuninHeading@start@{#1}{#2}{*}}}{\@dblarg{\jlreq@RuninHeading@start@{#1}{#2}{#3}}}%
+}
+% {1 = 命令名}{2 = レベル}{3 = */-}{4 = running head}{5 = 見出し}
+\long\def\jlreq@RuninHeading@start@#1#2#3[#4]#5{%
+ \edef\jlreq@do{\unexpanded{\jlreq@RuninHeading@start@@{#1}{#2}{#3}{#4}{#5}}{\expandonce{\jlreq@RuninHeading@start@format@label}}{\expandonce{\jlreq@RuninHeading@start@format@wlabel}}{\expandonce{\jlreq@RuninHeading@start@format@wolabel}}}%
+ \jlreq@do
+}
+% {1 = 命令名}{2 = レベル}{3 = *}{4 = running head}{5 = 見出し}{6 = ラベルフォーマット}{7 = ラベルありフォーマット}{8 = ラベルなしフォーマット}
+\long\def\jlreq@RuninHeading@start@@#1#2#3#4#5#6#7#8{%
+ \if@noskipsec\leavevmode\fi
+ \begingroup
+ \def\jlreq@do{\global\@noskipsectrue}%
+ \ifnum0\jlreq@ifempty{#3}{}{1}\ifnum #2>\c@secnumdepth 1\fi>0
+ \def\jlreq@tempa##1{#8}%
+ \else
+ \appto\jlreq@do{\refstepcounter{#1}}%
+ \def\jlreq@tempa##1{#7}%
+ \fi
+ \par
+ \eappto\jlreq@do{%
+ \noexpand\everypar{%
+ \noexpand\if@noskipsec
+ \unexpanded{\global\@noskipsecfalse}%
+ \unexpanded{{\setbox\jlreq@tempboxa\lastbox}}%
+ \noexpand\begingroup
+ \expandonce{\jlreq@tempa{#5}}%
+ \expandonce{\csname jlreq@heading@maketoc@#1\endcsname}{#3}{#6}{#4}%
+ \noexpand\endgroup
+ \noexpand\else
+ \unexpanded{\everypar{}}%
+ \noexpand\fi
+ }%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+ \ignorespaces
+}
+
+% \DeclareRuninHeading{命令名}{レベル}{設定}
+\newcommand*{\DeclareRuninHeading}[3]{%
+ \def\jlreq@do{\@removeelement{#1}}%
+ \expandafter\jlreq@do\expandafter{\jlreq@heading@allheadings}{\jlreq@heading@allheadings}%
+ \appto\jlreq@heading@allheadings{,#1}%
+ \expandafter\def\csname jlreq@heading@level@#1\endcsname{#2}%
+ \expandafter\edef\csname jlreq@heading@setting@#1\endcsname{\unexpanded{#3}}%
+ \expandafter\def\csname jlreq@heading@type@#1\endcsname{\RenewRuninHeading}%
+ \@ifundefined{c@#1}{\newcounter{#1}}{}%
+ \@ifundefined{#1mark}{\expandafter\let\csname #1mark\endcsname\@gobble}{}%
+ \@ifundefined{l@#1}{\expandafter\def\csname l@#1\endcsname{\@dottedtocline{#2}{0\zw}{2\zw}}}{}%
+ \jlreq@heading@make@maketoc{#1}{#2}%
+ \begingroup
+ \def\jlreq@font{\normalfont\normalsize}%
+ \def\jlreq@indent{0\zw}%
+ \def\jlreq@after@label@space{1\zw}%
+ \def\jlreq@label@font{}%
+ \def\jlreq@label@format{\@seccntformat{#1}}%
+ \def\jlreq@after@space{1\zw}%
+ \newif\ifjlreq@number \jlreq@numbertrue
+ \jlreq@parsekeyval[RuninHeading:#1]{%
+ {font}{\def\jlreq@font{##1}}
+ {indent}{\def\jlreq@indent{##1}}
+ {label_format}{\def\jlreq@label@format{##1}}
+ {after_label_space}{%
+ \ifdim\dimexpr##1\relax<0pt \ClassWarning{jlreq}{after_label_space in Runin Heading #1 should be not negative}\fi
+ \def\jlreq@after@label@space{##1}%
+ }
+ {after_space}{%
+ \ifdim\dimexpr##1\relax<0pt \ClassWarning{jlreq}{after_space in Runin Heading #1 should be not negative}\fi
+ \def\jlreq@after@space{##1}%
+ }
+ {number}{\csname jlreq@number##1\endcsname}
+ }{#3}%
+ \newif\ifjlreq@indent@zero
+ \jlreq@ifgluezero{\glueexpr\jlreq@indent\relax}{\jlreq@indent@zerotrue}{\jlreq@indent@zerofalse}%
+ \newif\ifjlreq@after@space@zero
+ \jlreq@ifgluezero{\glueexpr\jlreq@after@space\relax}{\jlreq@after@space@zerotrue}{\jlreq@after@space@zerofalse}%
+ \newif\ifjlreq@after@label@space@zero
+ \jlreq@ifgluezero{\glueexpr\jlreq@after@label@space\relax}{\jlreq@after@label@spacefalse}%
+ \edef\jlreq@format@wlabel{{%
+ \ifjlreq@indent@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@indent}\noexpand\relax\fi
+ \expandonce{\jlreq@font}%
+ \expandonce{\jlreq@label@format}%
+ \ifjlreq@after@label@space@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@after@label@space}\noexpand\relax\fi
+ ####1%
+ \ifjlreq@after@space@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@after@space}\noexpand\relax\fi
+ }}%
+ \edef\jlreq@format@wolabel{{%
+ \ifjlreq@indent@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@indent}\noexpand\relax\fi
+ \expandonce{\jlreq@font}%
+ ####1%
+ \ifjlreq@after@space@zero\else\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@after@space}\noexpand\relax\fi
+ }}%
+ \jlreq@heading@make@l@{#1}{#2}{\jlreq@label@format}%
+ \edef\jlreq@do{%
+ \expandonce{\jlreq@result}%
+ % パラメータトークンを含むので,\edefして\unexpandedで包む
+ \noexpand\edef\expandonce{\csname #1\endcsname}{%
+ \noexpand\unexpanded{%
+ \unexpanded{\jlreq@hook@beforeheadings{#1}}%
+ \unexpanded{\jlreq@RuninHeading@start{#1}{#2}}{\ifjlreq@number\else -\fi}{\expandonce{\jlreq@label@format}}{\expandonce{\jlreq@format@wlabel}}{\expandonce{\jlreq@format@wolabel}}%
+ }%
+ }%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+\newcommand*{\NewRuninHeading}[3]{%
+ \expandafter\@ifdefinable\csname #1\endcsname{\DeclareRuninHeading{#1}{#2}{#3}}%
+}
+\newcommand*{\RenewRuninHeading}[3]{%
+ \@ifundefined{#1}{\@latex@error{\expandafter\string\csname#1\endcsname\space undefined}\@ehc}{\DeclareRuninHeading{#1}{#2}{#3}}%
+}
+\newcommand*{\ProvideRuninHeading}[3]{%
+ \@ifundefined{#1}{\DeclareRuninHeading{#1}{#2}{#3}}{}%
+}
+
+%.. 窓見出し
+\def\jlreq@CutinHeading@start#1#2#3#4#5#6#7{%
+ \if@noskipsec\leavevmode\fi
+ \par
+ \jlreq@if{\ifnum\hangafter=1 \fi}{%
+ \jlreq@CutinHeading@start@{#2}{#3}{#4}{#5}{#6}{#7}%
+ }{%
+ \ClassError{jlreq}{Can not use \expandafter\string\csname#1\endcsname\space here}{\@ehc}%
+ }%
+}
+% 1 = 書式指定,2 = インデント, 3 = 見出しと本文の間, 4 = これを越えたら二行以上,5 = これを越えたら三行以上,6 = テキスト
+\def\jlreq@CutinHeading@start@#1#2#3#4#5#6{%
+ % 一行で処理したときの見出し長さを計測
+ \begingroup
+ \setbox\@tempboxa=\hbox{#1#6}%
+ \@tempdima=\wd\@tempboxa
+ % 何行必要かを\jlreq@CutinHeading@linecountに入れる
+ \ifdim\@tempdima>#5\def\jlreq@CutinHeading@linecount{3}%
+ \else\ifdim\@tempdima>#4\def\jlreq@CutinHeading@linecount{2}%
+ \else\def\jlreq@CutinHeading@linecount{1}\fi\fi
+ % \@tempdimaが実際の一行の長さに近い
+ \divide\@tempdima by \jlreq@CutinHeading@linecount
+ % \jlreq@resultboxに見出し部分を,\jlreq@CutinHeading@linecountに見出し自身に何行使うかを入れる
+ \ifnum\jlreq@CutinHeading@linecount=1\relax
+ \setbox\jlreq@resultbox=\vbox{\parindent=0pt\rightskip=0pt\leftskip=0pt\hbox{#1#6}}%
+ \def\jlreq@CutinHeading@linecount{2}%
+ \else
+ \jlreq@inlinenote@determinelength{#6}{#1}{}{\jlreq@CutinHeading@linecount}{\jlreq@CutinHeading@linecount}{\@tempdima}{\linewidth}%
+ \def\jlreq@CutinHeading@linecount{3}%
+ \fi
+ % 普通の一行の高さ/深さに合わせて見出しのボックスを作る
+ \setbox\@tempboxa=\vtop to \dimexpr\numexpr\jlreq@CutinHeading@linecount - 1\relax\baselineskip + 1\zh\relax{\vskip 0pt plus 1fill minus 1fill \box\jlreq@resultbox\vskip 0pt plus 1fill minus 1fill}%
+ % 高さを通常の一行のそれにする
+ \setbox\jlreq@tempboxa=\hbox{阿}%
+ \dp\@tempboxa=\dimexpr\ht\@tempboxa + \dp\@tempboxa - \ht\jlreq@tempboxa\relax
+ \ht\@tempboxa=\ht\jlreq@tempboxa
+ \noindent
+ \hspace*{#2}%
+ \copy\@tempboxa
+ \hspace*{#3}%
+ % でかい見出しボックスの分をキャンセルする空きを入れる
+ % \baselineskip - \ht\jlreq@tempboxaはTeXが挿入するスキップの分
+ \edef\jlreq@do{%
+ \noexpand\par
+ \noexpand\vskip -\the\dimexpr\ht\@tempboxa + \dp\@tempboxa + \baselineskip - \ht\jlreq@tempboxa\relax\relax
+ \noexpand\hangindent=\the\dimexpr#2 + \wd\@tempboxa + #3\relax\relax
+ \noexpand\hangafter=-\jlreq@CutinHeading@linecount\relax
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+ \prevdepth=0pt
+ % 改段落が起こっても\hang****をキープするように\parを書き換えておく(終わったら元に戻す).
+ \def\par{%
+ \ifvmode\jlreq@tempatrue\else\jlreq@tempafalse\fi
+ \jlreq@tempcnta=\hangafter\relax
+ \jlreq@tempdima=\hangindent\relax
+ \@@par
+ \ifjlreq@tempa\else\advance\jlreq@tempcnta by \prevgraf\relax\fi
+ \ifnum\jlreq@tempcnta<0
+ \hangafter=\jlreq@tempcnta\relax
+ \hangindent=\jlreq@tempdima\relax
+ \else
+ \@restorepar
+ \fi
+ }%
+ \@afterindentfalse
+ \@afterheading
+ \ignorespaces
+}
+
+\newcommand*{\DeclareCutinHeading}[3]{%
+ \expandafter\def\csname jlreq@heading@level@#1\endcsname{#2}%
+ \expandafter\def\csname jlreq@heading@setting@#1\endcsname{#3}%
+ \expandafter\def\csname jlreq@heading@type@#1\endcsname{\RenewCutinHeading}%
+ \begingroup
+ \def\jlreq@fontcommand{\sffamily\bfseries}%
+ \def\jlreq@onelinemax{6\zw}%
+ \def\jlreq@twolinemax{20\zw}%
+ \def\jlreq@indent{0\zw}%
+ \def\jlreq@after@space{1\zw}%
+ \jlreq@parsekeyval[CutinHeading:#1]{
+ {font}{\def\jlreq@fontcommand{##1}}
+ {onelinemax}{\def\jlreq@onelinemax{##1}}
+ {twolinemax}{\def\jlreq@twolinemax{##1}}
+ {indent}{\def\jlreq@indent{##1}}
+ {after_space}{\def\jlreq@after@space{##1}}
+ }{#3}%
+ \ifthenelse{\lengthtest{\jlreq@after@space < 0.99\zw} \OR \lengthtest{\jlreq@after@space > 2.01\zw}}{%
+ \jlreq@note{窓見出しと本文との空き量は,基本版面の文字サイズの全角以上,2倍未満とする (4.1.10.c).}%
+ }{}%
+ \edef\jlreq@do{%
+ \noexpand\def\expandonce{\csname #1\endcsname}{%
+ \noexpand\jlreq@CutinHeading@start{#1}{\expandonce{\jlreq@fontcommand}}{\expandonce{\jlreq@indent}}{\expandonce{\jlreq@after@space}}{\expandonce{\jlreq@onelinemax}}{\expandonce{\jlreq@twolinemax}}%
+ }%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+\newcommand*{\NewCutinHeading}[3]{%
+ \expandafter\@ifdefinable\csname #1\endcsname{\DeclareCutinHeading{#1}{#2}{#3}}%
+}
+\newcommand*{\RenewCutinHeading}[3]{%
+ \@ifundefined{#1}{\@latex@error{\expandafter\string\csname#1\endcsname\space undefined}\@ehc}{\DeclareCutinHeading{#1}{#2}{#3}}%
+}
+\newcommand*{\ProvideCutinHeading}[3]{%
+ \@ifundefined{#1}{\DeclareCutinHeading{#1}{#2}{#3}}{}%
+}
+
+\newcommand{\ModifyHeading}[2]{%
+ \@ifundefined{jlreq@heading@setting@#1}{\ClassError{jlreq}{Unknown heading: #1}{\@ehc}}{}%
+ \edef\jlreq@do{\csexpandonce{jlreq@heading@type@#1}{#1}{\csexpandonce{jlreq@heading@level@#1}}{\csexpandonce{jlreq@heading@setting@#1},\unexpanded{#2}}}%
+ \jlreq@do
+}
+% 見出し#1をマクロ#2に保存する
+\newcommand{\SaveHeading}[2]{%
+ \@ifundefined{jlreq@heading@setting@#1}{\ClassError{jlreq}{Unknown heading: #1}{\@ehc}}{}%
+ \edef#2{%
+ \csexpandonce{jlreq@heading@type@#1}{\unexpanded{#1}}{\csexpandonce{jlreq@heading@level@#1}}{\csexpandonce{jlreq@heading@setting@#1}}%
+ }%
+}
+
+\newcommand*{\jlreq@keepbaselineskip}[1]{%
+ \begingroup
+ \edef\jlreq@do{\unexpanded{#1}\noexpand\baselineskip=\the\baselineskip}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\newcommand*{\jlreq@HeadingType}[1]{%
+ \ifcsname jlreq@heading@type@#1\endcsname
+ \jlreq@HeadingType@{#1}{\RenewTobiraHeading}{TobiraHeading}{%
+ \jlreq@HeadingType@{#1}{\RenewBlockHeading}{BlockHeading}{%
+ \jlreq@HeadingType@{#1}{\RenewRuninHeading}{RuninHeading}{%
+ \jlreq@HeadingType@{#1}{\RenewCutinHeading}{CutinHeading}{%
+ UnknownHeading}}}}%
+ \else
+ UndefinedHeading%
+ \fi
+}
+\newcommand*{\jlreq@HeadingType@}[2]{%
+ \jlreq@if{\expandafter\expandafter\expandafter\ifx\csname jlreq@heading@type@#1\endcsname#2\fi}%
+}
+
+% 全ての見出しにマクロ#1を適用する.
+\def\jlreq@heading@execmacro@toallheadings#1{%
+ \begingroup
+ \def\jlreq@do{}%
+ \ifx\jlreq@heading@allheadings\@undefined
+ \jlreq@heading@execmacro@toallheadings@{#1}{chapter,part,section,subsection,subsubsection,paragraph,subparagraph}%
+ \else
+ \def\@tempa{\jlreq@heading@execmacro@toallheadings@{#1}}%
+ \expandafter\@tempa\expandafter{\jlreq@heading@allheadings}%
+ \fi
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\def\jlreq@heading@execmacro@toallheadings@#1#2{
+ \@for\jlreq@tempa:=#2\do{%
+ \@ifundefined{\jlreq@tempa}{}{%
+ \eappto\jlreq@do{\noexpand#1{\expandonce{\jlreq@tempa}}}%
+ }%
+ }%
+}
+\def\jlreq@clearheadingmarks#1{%
+ \@ifundefined{#1mark}{}{%
+ \expandafter\let\csname#1mark\endcsname=\@gobble
+ }%
+}
+
+%.. カウンターの定義(見出し本体はこのファイルの末尾で)
+\setcounter{secnumdepth}{3}
+\newcounter{part}
+\jlreq@switch{\jlreq@article@type}{
+ {article}{\newcounter{section}}
+ {\newcounter{chapter}\newcounter{section}[chapter]}% book, report
+}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\newcounter{subparagraph}[paragraph]
+\renewcommand*{\@seccntformat}[1]{\csname the#1\endcsname}
+
+
+%. 注
+% 文字サイズは6ポイントくらい(4.2.3.a)とりあえす\scriptsize
+%.. 合印(4.2.3)
+\newcommand*\jlreq@referencemark@format[1]{#1}
+\newif\ifjlreqadjustreferencemark
+\jlreqadjustreferencemarktrue
+\jlreq@jlreqsetup@add{reference_mark}[inline,interlinear]{
+ \def\jlreq@referencemark{#1}
+ \ifthenelse{\equal{\jlreq@referencemark}{inline}}{
+ \def\jlreq@notemark##1{%
+ \jlreq@ifydir{%
+ \hbox{}\hbox{\@textsuperscript{\normalfont\jlreq@referencemark@format{##1}}}\hbox{}%
+ }{%
+ \setbox\@tempboxa=\hbox{\scriptsize\jlreq@referencemark@format{##1}}%
+ \raise\dimexpr.5\jlreq@gol - \ht\@tempboxa\relax\box\@tempboxa
+ }%
+ }
+ \def\jlreq@hook@prenote{\inhibitglue}
+ \def\jlreq@hook@postnote{\inhibitglue}
+ }{% reference_mark=interlinear
+ \def\jlreq@notemark##1{{%
+ \setbox\@tempboxa=\hbox{\scriptsize\jlreq@referencemark@format{##1}}%
+ \@tempdima=\wd\@tempboxa
+ % 行頭に来たときに頭を天にそろえる処理.
+ \ifjlreqadjustreferencemark
+ \jlreq@savepos@for@rest@linewidth
+ \ifdim\jlreq@current@linewidth<\wd\@tempboxa
+ \@tempdima=\jlreq@current@linewidth
+ \fi
+ \fi
+ \setbox\jlreq@tempboxb=\hbox{阿}%
+ \setbox\jlreq@tempboxa=\hbox to\z@{\hskip-\@tempdima\raise\dimexpr\ht\jlreq@tempboxb + \dp\@tempboxa\relax\box\@tempboxa\hss}%
+ \dp\jlreq@tempboxa=0pt\ht\jlreq@tempboxa=0pt\box\jlreq@tempboxa%
+ }}%
+ \ifx l\jlreq@engine
+ \def\jlreq@hook@prenote{%
+ \jlreq@lastnodechar=\lastnodechar\relax
+ \ifnum\jlreq@lastnodechar>-1 \inhibitglue\fi
+ }
+ \else
+ % (u)platexの時は代入すると\inhibitglueが効かなくなる
+ \def\jlreq@hook@prenote{%
+ \ifnum\lastnodechar>-1 \inhibitglue\fi
+ \jlreq@lastnodechar=\lastnodechar\relax
+ }
+ \fi
+ \def\jlreq@hook@postnote{\jlreq@fixjfm}
+ }
+}
+% \@footnotemarkをシンプルなものにする
+\def\jlreq@setdefaultnotemark#1#2{%
+ \def#1{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ #2%
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax}%
+}
+\jlreq@setdefaultnotemark\@footnotemark\@makefnmark
+
+%.. 脚注(4.2.5)
+% (縦書きの時は傍注,4.2.6)
+% 罫線の前は行間分,最大+文字サイズ分伸びる(4.2.5.g)
+\setlength{\skip\footins}{\dimexpr\baselineskip - 1\jlreq@gol \relax plus 1\jlreq@gol}
+% 罫線の長さは,基本版面で設定した行長にもよるが,行長の1/3くらいにする.
+\def\jlreq@footnote@rulewidth{.333\textwidth}
+\begingroup
+ \footnotesize
+ \edef\jlreq@do{
+ \unexpanded{\setlength{\footnotesep}}{\the\dimexpr .7\baselineskip\relax}% 何でかわからん……
+ \unexpanded{\def\footnoterule}{%
+ % この罫線は,表罫(おもてけい)とする.
+ \unexpanded{\hrule width \jlreq@footnote@rulewidth height \jlreq@omotekeiwidth}%
+ % 脚注の行間よりやや広くする(4.2.5.f)
+ \noexpand\kern\the\dimexpr 1.5\dimexpr\baselineskip - 1\zh\relax\relax
+ }
+ }
+\expandafter\endgroup
+\jlreq@do
+
+% インデントの計算:脚注の長さが文字の整数倍になるように字下げする(4.2.5.b)
+\jlreq@jlreqsetup@add{footnote_indent}{%
+ \if@tate\else
+ \ifdim\dimexpr#1\relax=0pt \else\jlreq@note{脚注は,一般にその前に区切りのための罫線を挿入するので,字下げは行わなくてよい(4.2.5.b).}\fi
+ \fi
+ \begingroup
+ \footnotesize
+ \jlreq@footnoteindent=\dimexpr#1\relax
+ \@tempdima=\dimexpr\textwidth - \jlreq@footnoteindent\relax
+ \@tempdimb=1\zw
+ \divide\@tempdima\@tempdimb \multiply\@tempdima\@tempdimb
+ \edef\jlreq@do{\noexpand\jlreq@footnoteindent=\the\dimexpr\textwidth - \@tempdima\relax}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\newcommand{\@makefntext}[1]{\jlreq@makefntext{#1}}
+\jlreq@jlreqsetup@add{footnote_second_indent}{%
+ \if@tate\else
+ \ifthenelse{
+ \( \lengthtest{0.99\zw < \dimexpr #1\relax} \AND \lengthtest{\dimexpr #1\relax < 1.01\zw} \) \OR
+ \( \lengthtest{-1.01\zw < \dimexpr #1\relax} \AND \lengthtest{\dimexpr #1\relax < -0.99\zw} \)
+ }{}{\jlreq@note{脚注が2行以上となった場合,脚注の2行目以下の字下げを1行目より,脚注の文字サイズの全角アキとするか,逆に,1行目の字下げを2行目より,脚注の文字サイズの全角アキとする (4.2.5.d).}}
+ \fi
+ \ifdim\dimexpr #1\relax<0pt
+ \def\jlreq@makefntext{}
+ \else
+ \def\jlreq@makefntext{\addtolength{\leftskip}{\glueexpr #1\relax}}
+ \fi
+ \long\edef\jlreq@makefntext##1{\expandonce{\jlreq@makefntext}%
+ \unexpanded{%
+ \addtolength{\leftskip}{\jlreq@footnoteindent}%
+ \parindent=1\zw
+ \noindent
+ \hskip-\glueexpr #1\relax
+ \jlreq@referencemark@format{\@thefnmark}%
+ \hskip\glueexpr 1\zw\relax
+ }##1%
+ }
+}
+
+\jlreq@jlreqsetup@add{footnotetext_indent}{
+ \ClassWarningNoLine{jlreq}{footnotetext_indent was removed}
+}
+
+\ifx l\jlreq@engine
+ \fnfixbottomtrue
+\fi
+
+% \footnoteと\footnotemarkの前後に\jlreq@hook@prenote/\jlreq@hook@postnoteを入れる
+\jlreq@saveoriginalcs{\footnote}
+\jlreq@saveoriginalcs{\footnotemark}
+\def\footnote{%
+ \jlreq@hook@prenote
+ \@ifnextchar[{\jlreq@footnote@impl@woption}{\jlreq@footnote@impl@wooption}%
+}
+\def\footnotemark{%
+ \jlreq@hook@prenote
+ \@ifnextchar[{\jlreq@footnotemark@impl@woption}{\jlreq@footnotemark@impl@wooption}%
+}
+\ifthenelse{\boolean{@tate} \AND \(\boolean{@twoside} \OR \boolean{@twocolumn}\)}{
+ % 縦組の傍注は,その見開き内に付いている合印に対応する注を,奇数ページの左端にそろえて配置する.多段組では最下段の左端にそろえて配置する.(4.2.6.a)
+ % 必要ならば\footnoteを\footnotemarkと\footnotetextにわけ,\footnotetextをアウトプット時まで遅延することで実現する.
+ \def\jlreq@footnote@delayfootnoteslist{}
+ \def\jlreq@hook@@opcol{%
+ \expandafter\gdef\expandafter\jlreq@footnote@delayfootnoteslist\expandafter{\expandafter}%
+ \jlreq@footnote@delayfootnoteslist
+ }
+ \preto\@opcol{\jlreq@hook@@opcol}
+ % \jlreq@footnote@delayfootnote@delay#1#2#3:#1ページ目に\footnotetext[#2]{#3}を出す
+ % \jlreq@footnote@delayfootnote@page:何ページ目に\footnotetextを入れるかを\jlreq@resultcntに入れる.その場での場合は-1.
+ \if@twocolumn
+ \if@twoside
+ \def\jlreq@footnote@delayfootnote@page{%
+ \jlreq@setcurrentpage
+ \jlreq@resultcnt=\numexpr\jlreq@currentpage\ifodd\jlreq@currentpage\else + 1\fi\relax
+ % このページに表示&上の段処理済みだと\output内では間に合わない
+ \ifnum\jlreq@resultcnt=\value{page}\if@firstcolumn\else\jlreq@resultcnt=-1 \fi\fi
+ }
+ \else
+ \def\jlreq@footnote@delayfootnote@page{%
+ \jlreq@setcurrentpage
+ \jlreq@resultcnt=\numexpr\jlreq@currentpage\relax
+ \ifnum\jlreq@resultcnt=\value{page}\if@firstcolumn\else\jlreq@resultcnt=-1 \fi\fi
+ }
+ \fi
+ \long\def\jlreq@footnote@delayfootnote@delay#1#2#3{%
+ % 二段組みの場合は上段を組んだ直後に\footnotetextを挿入(そのページの下段に入る)
+ \ifnum 0\if@firstcolumn\else 1\fi\ifnum#1>\value{page}1\fi>0
+ \xappto\jlreq@footnote@delayfootnoteslist{\unexpanded{\jlreq@footnote@delayfootnote{#1}{#2}{#3}}}%
+ \else
+ \footnotetext[#2]{#3}%
+ \fi
+ }
+ \else
+ \def\jlreq@footnote@delayfootnote@page{%
+ \jlreq@setcurrentpage
+ \ifodd\jlreq@currentpage
+ \jlreq@resultcnt=-1
+ \else
+ \jlreq@resultcnt=\numexpr\jlreq@currentpage+1\relax
+ \fi
+ }
+ \long\def\jlreq@footnote@delayfootnote@delay#1#2#3{%
+ % 一段組の場合はその前のページを組んだ直後に\footnotetextを挿入.
+ \ifnum\numexpr#1 - 1\relax>\value{page}%
+ \xappto\jlreq@footnote@delayfootnoteslist{\unexpanded{\jlreq@footnote@delayfootnote{#1}{#2}{#3}}}%
+ \else
+ \footnotetext[#2]{#3}%
+ \fi
+ }
+ \fi
+ \def\jlreq@footnote@delayfootnote@immediate#1#2#3{%
+ \ifnum #1<\jlreq@currentpage
+ \xappto\jlreq@footnote@delayfootnoteslist{\unexpanded{\jlreq@footnote@delayfootnote{#1}{#2}{#3}}}%
+ \else
+ \footnotetext[#2]{#3}%
+ \fi
+ }
+ \let\jlreq@footnote@delayfootnote=\jlreq@footnote@delayfootnote@delay
+ \def\jlreq@footnote@flushdelayfootnoteslist{%
+ \ifx\jlreq@footnote@delayfootnoteslist\@empty\else
+ \let\jlreq@footnote@delayfootnote=\jlreq@footnote@delayfootnote@immediate
+ \jlreq@setcurrentpage
+ \expandafter\gdef\expandafter\jlreq@footnote@delayfootnoteslist\expandafter{\expandafter}%
+ \jlreq@footnote@delayfootnoteslist
+ \let\jlreq@footnote@delayfootnote=\jlreq@footnote@delayfootnote@delay
+ \fi
+ }
+ \AtEndDocument{\jlreq@footnote@flushdelayfootnoteslist}
+ \preto\newpage{\jlreq@footnote@flushdelayfootnoteslist}
+ \long\def\jlreq@footnote@impl@woption[#1]#2{%
+ \jlreq@footnote@delayfootnote@page
+ \ifnum\jlreq@resultcnt=-1
+ \jlreq@useoriginalcs{\footnote}[#1]{#2}%
+ \else
+ \jlreq@useoriginalcs{\footnotemark}[#1]%
+ \xappto\jlreq@footnote@delayfootnoteslist{\noexpand\jlreq@footnote@delayfootnote{\the\jlreq@resultcnt}{\unexpanded{#1}}{\unexpanded{#2}}}%
+ \fi
+ \jlreq@hook@postnote
+ }
+ \long\def\jlreq@footnote@impl@wooption#1{%
+ \jlreq@footnote@delayfootnote@page
+ \ifnum\jlreq@resultcnt=-1
+ \jlreq@useoriginalcs{\footnote}{#1}%
+ \else
+ \jlreq@useoriginalcs{\footnotemark}%
+ \xappto\jlreq@footnote@delayfootnoteslist{\noexpand\jlreq@footnote@delayfootnote{\the\jlreq@resultcnt}{\the\value{footnote}}{\unexpanded{#1}}}%
+ \fi
+ \jlreq@hook@postnote
+ }
+}{
+ \long\def\jlreq@footnote@impl@woption[#1]#2{%
+ \jlreq@useoriginalcs{\footnote}[#1]{#2}%
+ \jlreq@hook@postnote
+ }
+ \long\def\jlreq@footnote@impl@wooption#1{%
+ \jlreq@useoriginalcs{\footnote}{#1}%
+ \jlreq@hook@postnote
+ }
+}
+\long\def\jlreq@footnotemark@impl@woption[#1]{%
+ \jlreq@useoriginalcs{\footnotemark}[#1]%
+ \jlreq@hook@postnote
+}
+\long\def\jlreq@footnotemark@impl@wooption{%
+ \jlreq@useoriginalcs{\footnotemark}%
+ \jlreq@hook@postnote
+}
+
+% 合印
+\renewcommand*{\@makefnmark}{%
+ \jlreq@ifydir{\jlreq@notemark{\@thefnmark}}{\hbox{\jlreq@notemark{\@thefnmark}}}%
+}
+% 4.2.2注3
+\if@tate
+ \renewcommand*{\thefootnote}{\jlreq@open@bracket@before@space\inhibitglue(\jlreq@rensuji{\@arabic\c@footnote})\inhibitglue}
+\else
+ \renewcommand*{\thefootnote}{\arabic{footnote}\hbox{})\inhibitglue}
+\fi
+\ifthenelse{\equal{\jlreq@article@type}{article}}{}{\@addtoreset{footnote}{chapter}}
+
+
+%.. 後注(4.2.4)
+\def\jlreq@endnotemarkname{@thefnmark}% 合印用番号を一時的に入れるマクロ名
+\def\jlreq@endnotecounter{footnote}% 後注用のカウンタ名
+% 文字サイズは\footnotesizeを使う
+\newdimen\jlreq@endnote@prepostspace
+% 前の分との間は行間分空ける(4.2.4.f)
+\jlreq@endnote@prepostspace=\dimexpr\baselineskip - 1\jlreq@gol\relax
+\newdimen\jlreq@endnote@indent
+% 現在の後注一覧を,\jlreq@endnote@textsに{{合印1}{後注1}}{{合印2}{後注2}}...の形で保持する
+\def\jlreq@endnote@texts{}
+\long\def\jlreq@endnote@addtext#1#2{\xappto\jlreq@endnote@texts{\unexpanded{{{#1}{#2}}}}}
+% \endnote自身は後で定義する
+\def\jlreq@endnote@impl{\jlreq@hook@prenote\@ifnextchar[{\jlreq@endnote}{\jlreq@endnote[]}}
+\def\endnotemark{\jlreq@hook@prenote\@ifnextchar[{\jlreq@endnotemark}{\jlreq@endnotemark[]}}
+\def\endnotetext{\@ifnextchar[{\jlreq@endnotetext}{\jlreq@endnotetext[]}}
+\long\def\jlreq@endnote[#1]#2{\jlreq@endnotemark[#1]\@endnotetext{#2}\jlreq@hook@postnote}
+\def\jlreq@endnotemark[#1]{%
+ \jlreq@ifempty{#1}{%
+ \stepcounter{\jlreq@endnotecounter}%
+ \expandafter\protected@xdef\csname\jlreq@endnotemarkname\endcsname{\csname the\jlreq@endnotecounter\endcsname}%
+ }{%
+ \begingroup
+ \csname c@\jlreq@endnotecounter\endcsname #1\relax
+ \expandafter\unrestored@protected@xdef\csname\jlreq@endnotemarkname\endcsname{\csname the\jlreq@endnotecounter\endcsname}%
+ \endgroup
+ }%
+ \@endnotemark
+ \jlreq@hook@postnote
+}
+\jlreq@setdefaultnotemark\@endnotemark\@makeendmark
+\long\def\jlreq@endnotetext[#1]#2{%
+ \jlreq@ifempty{#1}{%
+ \expandafter\protected@xdef\csname\jlreq@endnotemarkname\endcsname{\csname the\jlreq@endnotecounter\endcsname}%
+ }{%
+ \begingroup
+ \csname c@\jlreq@endnotecounter\endcsname #1\relax
+ \expandafter\unrestored@protected@xdef\csname\jlreq@endnotemarkname\endcsname{\csname the\jlreq@endnotecounter\endcsname}%
+ \endgroup
+ }%
+ \@endnotetext{#2}%
+}
+\long\def\@endnotetext#1{%
+ \expandafter\let\expandafter\jlreq@tempa\expandafter=\csname\jlreq@endnotemarkname\endcsname
+ \expandafter\jlreq@endnote@addtext\expandafter{\jlreq@tempa}{#1}%
+}
+\long\def\jlreq@theendnotes#1{%
+ \jlreq@ifendmark{#1}{}{%
+ \jlreq@output@endnotes#1
+ \jlreq@theendnotes
+ }%
+}
+\long\def\jlreq@output@endnotes#1#2{%
+ \expandafter\def\csname\jlreq@endnotemarkname\endcsname{#1}%
+ \item\@makeendtext{#2}%
+}
+
+\newcommand*{\theendnotes}{%
+ \ifx\jlreq@endnote@texts\@empty\else
+ \let\jlreq@tempa=\jlreq@endnote@texts
+ \gdef\jlreq@endnote@texts{}%
+ \edef\jlreq@endnote@beforeafterspace{\the\dimexpr\baselineskip - 1\jlreq@gol\relax plus \the\dimexpr 1\jlreq@gol\relax}%
+ \begingroup
+ \par
+ \footnotesize
+ % 後注の長さを文字サイズの整数倍にする(4.2.4.b)
+ \jlreq@tempdima=\dimexpr\linewidth - \jlreq@endnote@indent - \leftskip\relax
+ \@tempdimb=1\jlreq@mol
+ \divide\jlreq@tempdima\@tempdimb\multiply\jlreq@tempdima\@tempdimb
+ \begin{list}{}{%
+ \itemsep=0pt\relax
+ \parsep=0pt\relax
+ \partopsep=0pt\relax
+ \topsep=0pt\relax
+ \leftmargin=\dimexpr\linewidth - \jlreq@tempdima + \jlreq@endnote@second@indent\relax
+ \itemindent=-\glueexpr\jlreq@endnote@second@indent\relax
+ \topsep=\jlreq@endnote@beforeafterspace\relax
+ \listparindent=1\zw
+ }%
+ \expandafter\jlreq@theendnotes\jlreq@tempa\jlreq@endmark
+ \end{list}%
+ \endgroup
+ \par
+ \fi
+}
+% 4.2.4.b
+\jlreq@endnote@indent=2\jlreq@mol
+\jlreq@jlreqsetup@add{endnote_second_indent}{
+ \def\jlreq@endnote@second@indent{#1}
+ \ifthenelse{
+ \( \lengthtest{0.99\zw < #1} \AND \lengthtest{#1 < 1.01\zw} \) \OR
+ \( \lengthtest{1.99\zw < #1} \AND \lengthtest{#1 < 2.01\zw} \)
+ }{}{\jlreq@note{後注が2行以上となった場合,後注の2行目以下の字下げは,1行目より,後注の文字サイズの2倍又は全角とする (4.2.4.d).}}
+}
+\newcommand{\@makeendtext}[1]{%
+ \csname\jlreq@endnotemarkname\endcsname
+ \hskip\glueexpr1\zw\relax% 見出し出力と一文字分の空き(4.2.4.c)
+ #1%
+}
+\let\@makeendmark=\@makefnmark
+
+% \theendnoteの出力を仕込む
+\apptocmd{\jlreq@hook@beforeheadings}{\jlreq@endnote@hook@beforeheadings{#1}}{}{}
+
+\jlreq@jlreqsetup@add{endnote_position}{
+ \def\jlreq@endnote@hook@beforeheadings##1{}
+ \jlreq@tempafalse % headingsが指定された
+ \jlreq@tempbfalse % paragraphが指定された
+ % \jlreq@tempcにセクション名たちを入れていく
+ \def\jlreq@tempc{}
+ \@for\jlreq@tempa:=#1\do{
+ \expandafter\jlreq@helper@trim\expandafter{\jlreq@tempa}{\jlreq@tempa}%
+ \jlreq@switch{\jlreq@tempa}{
+ {headings}{\jlreq@tempatrue}
+ {paragraph}{
+ \jlreq@tempatrue% _paragraphの時は_headingsも有効にする
+ \jlreq@tempbtrue
+ }
+ {
+ \expandafter\jlreq@iffirsttoken@ignorespaces\expandafter{\jlreq@tempa}{_}{
+ \edef\jlreq@tempc{\jlreq@tempc,\expandafter\@gobble\jlreq@tempa}
+ }{
+ \ClassError{jlreq}{Invalid value \jlreq@tempa\space in endnote_position}{\@ehc}
+ }
+ }
+ }
+ }
+
+ \ifjlreq@tempb
+ \edef\endnote{\unexpanded{\def\par{\@restorepar\theendnotes\par}}\expandonce{\jlreq@endnote@impl}}
+ \else
+ \let\endnote=\jlreq@endnote@impl
+ \fi
+
+ \ifjlreq@tempa
+ \apptocmd{\jlreq@endnote@hook@beforeheadings}{\theendnotes}{}{}
+ \else
+ \@for\@tempa:=\jlreq@tempc\do{
+ \ifx\@tempa\@empty\else
+ \edef\jlreq@do{%
+ \unexpanded{\def\jlreq@endnote@hook@beforeheadings##1}{\expandonce{\jlreq@endnote@hook@beforeheadings{##1}}%
+ \unexpanded{\def\@tempa}{\@tempa}\unexpanded{\def\@tempb{##1}}%
+ \unexpanded{\ifx\@tempa\@tempb\theendnotes\fi}%
+ }
+ }
+ \jlreq@do
+ \fi
+ }
+ \fi
+}
+\AtEndDocument{\theendnotes}
+
+
+% (1) \footnoteとかと同じ形式 sidenote_type=number
+% (2) 文中にマークを入れて,傍注には見出しが入る sidenote_type=symbol
+% (3) 文中は強調文字列,傍注には見出しが入る sidenote_type=symbol
+% (4) 文中は何も無し,傍注には見出しが入る sidenote_type=symbol
+
+% (1) では\sidenote[]{}を定義
+% (2) では\sidenote{見出し}{注中身}を定義
+% \marginparwidth>0ptの時のみ定義する
+\ifdim\marginparwidth>0pt \expandafter\@firstofone\else\expandafter\@gobble\fi
+{
+ \def\jlreq@sidenotemarkname{@thefnmark}% 合印用番号を一時的に入れるマクロ名
+ \long\def\@sidenotetext#1{%
+ \marginpar{\reset@font\footnotesize
+ \color@begingroup\normalcolor
+ \@makesidetext{#1}%
+ \color@endgroup
+ }%
+ }
+ \jlreq@setdefaultnotemark\@sidenotemark\@makesidemark
+ \def\jlreq@sidenotecounter{footnote}% 傍注用のカウンタ名
+ \jlreq@jlreqsetup@add{sidenote_type}[number,symbol]{\def\jlreq@sidenote@type{#1}}
+ \def\jlreq@sidenote@type{number}
+ \jlreq@jlreqsetup@addtofinally{
+ \ifthenelse{\equal{\jlreq@sidenote@type}{number}}{
+ \def\sidenote{\jlreq@hook@prenote\@ifnextchar[{\jlreq@sidenote}{\jlreq@sidenote[]}}
+ \def\sidenotemark{\jlreq@hook@prenote\@ifnextchar[{\jlreq@sidenotemark}{\jlreq@sidenotemark[]}}
+ \def\sidenotetext{\@ifnextchar[{\jlreq@sidenotetext}{\jlreq@sidenotetext[]}}
+ \long\def\jlreq@sidenote[#1]#2{\jlreq@sidenotemark[#1]\@sidenotetext{#2}\jlreq@hook@postnote}
+ \def\jlreq@sidenotemark[#1]{%
+ \jlreq@ifempty{#1}{%
+ \stepcounter{\jlreq@sidenotecounter}%
+ \expandafter\protected@xdef\csname\jlreq@sidenotemarkname\endcsname{\csname the\jlreq@sidenotecounter\endcsname}%
+ }{%
+ \begingroup
+ \csname c@\jlreq@sidenotecounter\endcsname #1\relax
+ \expandafter\unrestored@protected@xdef\csname\jlreq@sidenotemarkname\endcsname{\csname the\jlreq@sidenotecounter\endcsname}%
+ \endgroup
+ }%
+ \@sidenotemark
+ \jlreq@hook@postnote
+ }
+ \long\def\jlreq@sidenotetext[#1]#2{%
+ \jlreq@ifempty{#1}{%
+ \expandafter\protected@xdef\csname\jlreq@sidenotemarkname\endcsname{\csname the\jlreq@sidenotecounter\endcsname}%
+ }{%
+ \begingroup
+ \csname c@\jlreq@sidenotecounter\endcsname#1\relax
+ \expandafter\unrestored@protected@xdef\csname\jlreq@sidenotemarkname\endcsname{\csname the\jlreq@sidenotecounter\endcsname}%
+ \endgroup
+ }%
+ \@sidenotetext{#2}%
+ }
+ % \hspace{0.5\jlreq@mol}の部分は二分空きにする例もある(4.2.7.g)
+ \ifx l\jlreq@engine
+ \long\def\@makesidetext#1{\csname\jlreq@sidenotemarkname\endcsname\hspace{0.5\jlreq@mol}#1}
+ \else
+ % thefootnote = \inhibitglue (...だと\inhibitglueが効かないので空白を挟む
+ \long\def\@makesidetext#1{ \kern-1\zw\csname\jlreq@sidenotemarkname\endcsname\hspace{0.5\jlreq@mol}#1}
+ \fi
+ \let\@makesidemark=\@makefnmark
+ }{% sidenote_type = symbol
+ \long\def\sidenote#1#2{\jlreq@sidenote{#1}{#2}}
+ \def\sidenotemark#1{\jlreq@sidenotemark{#1}}
+ \long\def\sidenotetext#1#2{\jlreq@sidenotetext{#1}{#2}}
+ \long\def\jlreq@sidenote#1#2{\jlreq@sidenotemark{#1}\jlreq@sidenotetext{#1}{#2}}
+ \edef\jlreq@sidenotemark#1{%
+ {\unexpanded{\reset@font\jlreq@sidenote@keywordfont}#1}%
+ \noexpand\jlreq@hook@prenote
+ \ifx\jlreq@sidenote@defaultmark\@empty\else
+ \expandafter\edef\expandonce{\csname\jlreq@sidenotemarkname\endcsname}{\expandonce{\jlreq@sidenote@defaultmark}}%
+ \noexpand\@sidenotemark
+ \fi
+ }
+ % カスタマイズできるべき?
+ \long\def\jlreq@sidenotetext#1#2{%
+ \expandafter\def\csname\jlreq@sidenotemarkname\endcsname{\inhibitglue\null{\reset@font\sffamily\bfseries\inhibitglue #1}}%
+ \@sidenotetext{#2}%
+ }
+ \long\def\@makesidetext#1{{\sffamily\bfseries\csname\jlreq@sidenotemarkname\endcsname}\hspace*{1\jlreq@mol}#1}
+ \let\@makesidemark=\@makefnmark
+
+ \apptocmd{\sidenote}{\jlreq@hook@postnote}{}{}
+ \apptocmd{\sidenotemark}{\jlreq@hook@postnote}{}{}
+ }
+ }
+ \jlreq@jlreqsetup@add{sidenote_symbol}{\def\jlreq@sidenote@defaultmark{#1}}
+ \jlreq@jlreqsetup@add{sidenote_keyword_font}{\def\jlreq@sidenote@keywordfont{#1}}
+}
+
+%.. 割注(3.4)
+\def\inlinenotesize{.6\jlreq@jafontsize} % 割注の文字サイズ
+\let\jlreq@inlinenote@autolinebreak=\\% 計測時は\linebreakより\\の方が安定する.悩ましい…….
+
+\newcommand{\jlreq@inlinenote@kakkofontsize}{%
+ \fontsize{\dimexpr\inlinenotesize * 2\relax}{\dimexpr \inlinenotesize * 2\relax}%
+ \selectfont
+}
+
+\newcommand{\jlreq@inlinenote@fontsize}{%
+ \fontsize{\inlinenotesize}{\inlinenotesize}%
+ \selectfont
+}
+
+% 割注を入れるための命令.\inlinenote{割注}で使う.
+% 改行位置は自動で計算されるが,常に正しいとは限らない.
+% \inlinenote*は自動で改行されない.\\で改行位置を指定する.
+\newif\ifjlreq@in@inlinenote
+\jlreq@in@inlinenotefalse
+\newcommand*{\jlreq@inlinenote@}[1]{%
+ \ifjlreq@in@inlinenote\ClassError{jlreq}{\string#1\space can't be nested}{\@ehc}\fi
+ \jlreq@in@inlinenotetrue
+ \ifvmode\leavevmode\fi
+ \@ifstar\jlreq@inlinenote@noauto\jlreq@inlinenote@auto
+}
+\DeclareRobustCommand*{\inlinenote}{\jlreq@inlinenote@{\inlinenote}}
+\DeclareRobustCommand*{\warichu}{\jlreq@inlinenote@{\warichu}}
+
+\newcommand*{\jlreq@inlinenote@auto}[1]{%
+ % 割注初め括弧の前の場所を保存
+ \jlreq@savepos@for@rest@linewidth
+ % \jlreq@tempdimbに,現在行の残り長さを入れる
+ \jlreq@tempdimb=\jlreq@rest@linewidth
+ % 括弧の分を引いたものが,割注の使える長さ
+ \setbox\@tempboxa=\hbox{\jlreq@inlinenote@kakkofontsize\inhibitglue\jlreq@open@bracket@before@space(\inhibitglue}%
+ \addtolength{\jlreq@tempdimb}{-\wd\@tempboxa}%
+ \ifdim\jlreq@tempdimb<0pt\jlreq@tempdimb=\linewidth\fi
+ {%
+ \setbox\jlreq@tempboxa=\hbox{\jlreq@inlinenote@kakkofontsize\inhibitglue \jlreq@open@bracket@before@space(}%
+ \jlreq@box@putcenter\jlreq@tempboxa
+ }%
+ % 「初回」時はここに強制改行を入れる.これにより現在位置の取得がより正しくなる……といいなぁ
+ \jlreq@savepos@iflabelundefined{\\}{}%
+ % 割注内の\baselineskipを保存(後で使う).
+ {\jlreq@inlinenote@fontsize\xdef\jlreq@inlinenote@baselineskip{\the\baselineskip}}%
+ % 普通に並べた長さを計測し,その半分から始める
+ \setbox\@tempboxa=\hbox{\jlreq@inlinenote@fontsize #1}%
+ \jlreq@tempdimc=\wd\@tempboxa
+ \divide\jlreq@tempdimc by 2\relax
+ % \@tempcntbに,この長さで計測した場合の行数を入れる
+ \ifdim\jlreq@tempdimc<\jlreq@tempdimb\@tempcntb=2\relax
+ \else
+ \jlreq@tempdima=\dimexpr\jlreq@tempdimc - \jlreq@tempdimb\relax
+ \divide\jlreq@tempdima\linewidth
+ \@tempcntb=\numexpr 2*\number\jlreq@tempdima + 4\relax
+ \fi
+ % \jlreq@parshapeargに\parshapeに指定する書式の最後以外を入れる.
+ \ifnum\@tempcntb>2\relax
+ \edef\jlreq@parshapearg{0pt \the\jlreq@tempdimb\space 0pt \the\jlreq@tempdimb}%
+ \@tempcnta=4\relax
+ \@whilenum\@tempcnta<\@tempcntb\do{%
+ \edef\jlreq@parshapearg{\jlreq@parshapearg\space 0pt \the\linewidth\space 0pt \the\linewidth}%
+ \advance\@tempcnta by 2\relax
+ }%
+ \setlength{\jlreq@tempdimc}{\dimexpr\jlreq@tempdimc - \jlreq@tempdimb - \linewidth * \numexpr(\@tempcntb - 4)/2\relax\relax}%
+ \else
+ \def\jlreq@parshapearg{}%
+ \fi
+ % 行数を伸ばしつつ良いところを探していく
+ \@whilenum\@tempcntb<1001\do{%
+ \ifnum\@tempcntb>2\jlreq@tempdimb=\linewidth\fi
+ \edef\@tempb{\the\@tempcntb}%
+ \jlreq@inlinenote@determinelength{#1}{\jlreq@inlinenote@fontsize}{\jlreq@parshapearg}{2}{\@tempb}{\jlreq@tempdimc}{\jlreq@tempdimb}%
+ \@tempcntb=\@tempb
+ \ifnum\@tempcntb>999\relax% ループが長すぎる
+ \global\setbox\jlreq@resultbox=\voidb@x%
+ \@tempcntb=1001\relax
+ \fi
+ \ifvoid\jlreq@resultbox\else% 成功
+ \edef\jlreq@inlinenote@lines{\the\@tempcntb}% 行数を保存
+ \@tempcntb=1001\relax
+ \fi
+ \advance\@tempcntb by 2\relax
+ \edef\jlreq@parshapearg{\jlreq@parshapearg 0pt \the\jlreq@tempdimb 0pt \the\jlreq@tempdimb}%
+ }%
+ \ifvoid\jlreq@resultbox
+ \ClassWarning{jlreq}{\string\warichu\space failed, may be a bug}%
+ \else
+ \@tempcnta=0
+ \splittopskip=0pt\relax
+ \splitmaxdepth=\maxdimen
+ % 現在行の残り長さを思い出す
+ \jlreq@tempdimb=\jlreq@rest@linewidth
+ \setbox\@tempboxa=\hbox{\jlreq@inlinenote@kakkofontsize\inhibitglue\jlreq@open@bracket@before@space(\inhibitglue}%
+ \addtolength{\jlreq@tempdimb}{-\wd\@tempboxa}%
+ \setbox\@tempboxa=\box\jlreq@resultbox
+ \@whilenum\@tempcnta<\jlreq@inlinenote@lines\do{%
+ \ifnum\@tempcnta>0 \jlreq@inlinenote@autolinebreak\fi
+ % \jlreq@tempdimaに今の行の長さを入れる
+ \ifnum\@tempcnta<\numexpr\jlreq@inlinenote@lines - 2\relax
+ \ifnum\@tempcnta=0\jlreq@tempdima=\jlreq@tempdimb
+ \else\jlreq@tempdima=\linewidth\fi
+ \else
+ % 最終行は自然長に任せる
+ \jlreq@tempdima=-1pt\relax
+ \fi
+ {%
+ \edef\@tempa{\the\vbadness}%
+ \vbadness=10000
+ \setbox\jlreq@tempboxa=\vsplit\@tempboxa to \dimexpr\jlreq@inlinenote@baselineskip*2\relax
+ \vbadness=\@tempa\relax
+ \jlreq@getlastbox{\jlreq@tempboxa}%
+ \setbox\jlreq@tempboxb=\box\jlreq@resultbox
+ \jlreq@getlastbox{\jlreq@tempboxa}%
+ \setbox\jlreq@tempboxa=\box\jlreq@resultbox
+ \ifdim\jlreq@tempdima>0pt\relax
+ \setbox\jlreq@tempboxa=\vbox{\jlreq@inlinenote@fontsize
+ \hbox to \jlreq@tempdima{\unhbox\jlreq@tempboxa}%
+ \hbox to \jlreq@tempdima{\unhbox\jlreq@tempboxb}}%
+ \else
+ \setbox\jlreq@tempboxa=\vbox{\jlreq@inlinenote@fontsize
+ \hbox{\unhbox\jlreq@tempboxa}%
+ \hbox{\unhbox\jlreq@tempboxb}}%
+ \fi
+ \jlreq@box@putcenter\jlreq@tempboxa
+ }%
+ \advance\@tempcnta by 2\relax
+ }%
+ \fi
+ \jlreq@inlinenote@endnote
+}
+
+\newcommand*{\jlreq@inlinenote@noauto}[1]{%
+ \setbox\jlreq@tempboxa=\hbox{\jlreq@inlinenote@kakkofontsize\inhibitglue\jlreq@open@bracket@before@space(}%
+ \inhibitglue\jlreq@box@putcenter\jlreq@tempboxa
+ \jlreq@inlinenote@noauto@#1\\\jlreq@endmark\jlreq@endmark
+ \jlreq@inlinenote@endnote
+}
+
+\def\jlreq@inlinenote@noauto@#1\\#2#3\jlreq@endmark{%
+ \jlreq@inlinenote@noauto@@#1&\jlreq@endmark\jlreq@endmark
+ \jlreq@ifendmark{#2}{}{\linebreak\jlreq@inlinenote@noauto@#2#3\jlreq@endmark}%
+}
+
+\def\jlreq@inlinenote@noauto@@#1&#2#3\jlreq@endmark{%
+ \jlreq@ifendmark{#2}{%
+ \setbox\@tempboxa=\hbox{\jlreq@inlinenote@fontsize #1}%
+ \jlreq@tempdimc=\wd\@tempboxa
+ \divide\jlreq@tempdimc by 2\relax
+ \jlreq@inlinenote@determinelength{#1}{\jlreq@inlinenote@fontsize}{}{2}{2}{\jlreq@tempdimc}{\maxdimen}%
+ \ifvoid\jlreq@resultbox\else
+ {%
+ \setbox\jlreq@tempboxa=\hbox{\jlreq@inlinenote@fontsize\box\jlreq@resultbox}%
+ \jlreq@box@putcenter\jlreq@tempboxa
+ }%
+ \fi
+ \def\jlreq@next{}%
+ }{%
+ \def\jlreq@next{\jlreq@inlinenote@noauto@@@{#1}#2#3}%
+ }%
+ \jlreq@next
+}
+
+\def\jlreq@inlinenote@noauto@@@#1#2&\jlreq@endmark{%
+ \setbox\@tempboxa=\hbox{\jlreq@inlinenote@fontsize\vbox{\hbox{#1}\hbox{#2}}}%
+ \jlreq@box@putcenter\@tempboxa
+}
+
+\newcommand{\jlreq@inlinenote@endnote}{%
+ \jlreq@in@inlinenotefalse
+ {%
+ \setbox\jlreq@tempboxa=\hbox{\jlreq@inlinenote@kakkofontsize)}%
+ \jlreq@box@putcenter\jlreq@tempboxa
+ \inhibitglue
+ }%
+}
+
+% \jlreq@inlinenote@determinelength{テキスト(1)}{フォントとか指定(2)}{\parshape指定(3)}{調整に使う行数(4)}{成功行数(5)}{最小長さ(6)}{最大長さ(7)}
+% 次を満たす長さXの最小値を求める(ただし#6 <= X <= #7)
+% #1を
+% * #5 - #4行目までは#3の指定に従う
+% * それ以降はX
+% として整形した際に,#5行以内に収まる.
+% \jlreq@resultboxに整形結果を返す(垂直ボックス).見つからなかったらvoid.\globalに設定する.
+\newcommand{\jlreq@inlinenote@determinelength}[7]{%
+ \begingroup
+ % \message{#1 の試行開始,行数 = #5, \the\dimexpr#6\relax から \the\dimexpr#7\relaxまで}%
+ \@tempcnta=1\relax
+ \def\@tempa{}%
+ % 調整に使う行の\parshape指定を\@tempaに入れる.長さは\jlreq@tempdima.
+ \@whilenum\@tempcnta<#4\do{%
+ \expandafter\def\expandafter\@tempa\expandafter{\@tempa 0pt \the\jlreq@tempdima}%
+ \advance\@tempcnta by 1\relax
+ }%
+ \@tempcnta=0
+ \jlreq@tempdima=#6\relax
+ % \jlreq@tempdimaを少しずつ伸ばしていく
+ \@whilenum\@tempcnta<1000\do{%
+ \ifnum\@tempcnta>999\relax% ループが長すぎる
+ \global\setbox\jlreq@resultbox=\voidb@x%
+ \@tempcnta=1001\relax
+ \else
+ \setbox\@tempboxa=\vbox{#2%
+ \vbadness=10000\hbadness=10000\vfuzz=\maxdimen\hfuzz=\maxdimen
+ \parindent=0pt\leftskip=0pt\rightskip=0pt
+ \parshape #5 #3 \@tempa 0pt \the\maxdimen
+ #1\par\global\@tempcntb=\prevgraf}%
+ % \message{\string\jlreq@tempdima = \the\jlreq@tempdima で試行,行数は\the\@tempcntb , 書式 #5 #3 \@tempa 0pt \the\maxdimen}%
+ \fi
+ \jlreq@getlastbox{\@tempboxa}%
+ \setbox\jlreq@tempboxa=\box\jlreq@resultbox
+ \ifnum\@tempcntb<#5\relax% 行数が達していないならOK
+ % \message{行数 = \the\@tempcntb により確定}
+ % #5行になるまで空の水平ボックスを加えていく.
+ \global\setbox\jlreq@resultbox=\vbox{#2%
+ \unvbox\@tempboxa\hbox{\unhbox\jlreq@tempboxa\unskip\unskip\unpenalty}%
+ \@whilenum\@tempcntb<#5\do{\hbox{}\advance\@tempcntb by 1}}%
+ \@tempcnta=1001\relax
+ \else
+ % そうでない場合は最後の二行の長さを比較する
+ \jlreq@getlastbox{\@tempboxa}%
+ \setbox\jlreq@tempboxb=\box\jlreq@resultbox
+ % \message{最終行の長さ \the\wd\jlreq@tempboxa, その前の長さ \the\wd\jlreq@tempboxb}%
+ \ifdim\wd\jlreq@tempboxa>\wd\jlreq@tempboxb
+ \advance\jlreq@tempdima by 0.3pt\relax% 0.3ptに意味はない
+ \else
+ % 後ろが短いのでOK
+ \global\setbox\jlreq@resultbox=\vbox{#2\unvbox\@tempboxa\box\jlreq@tempboxb\box\jlreq@tempboxa}%
+ \jlreq@resultdimen=\jlreq@tempdima
+ \@tempcnta=1001\relax
+ \fi
+ \fi
+ \ifdim\jlreq@tempdima>#7\relax
+ \global\setbox\jlreq@resultbox=\box\voidb@x
+ \@tempcnta=1001\relax
+ \fi
+ \advance\@tempcnta by 1\relax
+ }%
+ \endgroup
+}
+
+%. ページスタイル.
+% メモ:
+% 2.6.1.cの後半が前半と整合的でないように見える……
+% 柱:両柱と片柱(2.6.3)
+\@tempdima=\jlreq@speciallength{\jlreq@headfoot@sidemargin}
+\ifthenelse{\lengthtest{\@tempdima=0pt} \OR \(\lengthtest{0.99\zw < \@tempdima} \AND \lengthtest{\@tempdima < 1.01\zw}\)}{}{
+ \jlreq@note{ノンブルまたは柱は,基本版面の左右にそろえるか,全角アキだけ寄せた位置に配置する (2.6.1.b).}
+}
+
+%.. 場所指定解析
+% bottom-leftみたいなのを解釈する.入力の順番はどっちでも良いが,出力は<top/bottom><left/right>の順番
+% #1 = bottom-leftみたいなのを{bottom}{left}に変換し,#2に代入,#3はデフォルト値,出力形式で入れる
+\newcommand*{\jlreq@pagestyle@parse@position}[3]{%
+ \jlreq@ifempty{#1}{\def#2{#3}}%
+ {%
+ \begingroup
+ \jlreq@pagestyle@parse@position@#1-\jlreq@endmark
+ % \jlreq@tempcに縦方向を,\jlreq@tempdに横方向を入れる
+ \def\jlreq@tempc{}\def\jlreq@tempd{}%
+ \jlreq@pagestyle@parse@position@@{\jlreq@tempa}%
+ \jlreq@pagestyle@parse@position@@{\jlreq@tempb}%
+ \ifx\jlreq@tempc\@empty\edef\jlreq@tempc{\expandafter\@firstoftwo#3}\fi
+ \ifx\jlreq@tempd\@empty\edef\jlreq@tempd{\expandafter\@secondoftwo#3}\fi
+ \edef\jlreq@do{\unexpanded{\def#2}{{\jlreq@tempc}{\jlreq@tempd}}}%
+ \expandafter\endgroup
+ \jlreq@do
+ }%
+}
+
+\def\jlreq@pagestyle@parse@position@#1-#2\jlreq@endmark{%
+ \def\jlreq@tempa{#1}\def\jlreq@tempb{#2}%
+ \jlreq@ifempty{#2}{%
+ \ifx\jlreq@tempb\@empty\ClassError{jlreq}{Invalid position: #1}{\@ehc}\fi
+ }{%
+ \def\@tempa##1-{\def\jlreq@tempb{##1}}%
+ \@tempa#2\relax
+ }%
+}
+
+\newcommand*\jlreq@pagestyle@parse@position@@[1]{%
+ \jlreq@switch{#1}{
+ {top}{\def\jlreq@tempc{#1}}
+ {bottom}{\def\jlreq@tempc{#1}}
+ {left}{\def\jlreq@tempd{#1}}
+ {right}{\def\jlreq@tempd{#1}}
+ {center}{\def\jlreq@tempd{#1}}
+ {gutter}{\if@tate\def\jlreq@tempd{right}\else\def\jlreq@tempd{left}\fi}
+ {fore_edge}{\if@tate\def\jlreq@tempd{left}\else\def\jlreq@tempd{right}\fi}
+ {fore-edge}{\if@tate\def\jlreq@tempd{left}\else\def\jlreq@tempd{right}\fi}
+ {\ClassError{jlreq}{Invalid position: #1}{\@ehc}}
+ }%
+}
+
+% レベル#1より低いレベルの見出しの**markを\markboth{}{}にする
+\def\jlreq@pagestyle@setclearmark#1{%
+ \@for\@tempa:=\jlreq@heading@allheadings\do{%
+ \@ifundefined{\@tempa}{}{%
+ \@ifundefined{jlreq@heading@level@\@tempa}{}{%
+ \ifnum\csname jlreq@heading@level@\@tempa\endcsname<#1\relax\expandafter\def\csname\@tempa mark\endcsname##1{\markboth{}{}}\fi
+ }%
+ }%
+ }%
+}
+
+% #1のleftとrightを入れ替えて#1に代入
+\def\jlreq@reverse@leftright#1{%
+ \jlreq@switch{#1}{
+ {left}{\def#1{right}}
+ {right}{\def#1{left}}
+ }%
+}
+
+%.. マークの拡張
+\def\jlreq@markregistername#1{jlreq@extramark@register@#1}
+\def\jlreq@extraleftmark#1{\jlreq@extramark@{#1}{\expandafter\@firstoftwo\botmarks}}
+\def\jlreq@extrarightmark#1{\jlreq@extramark@{#1}{\expandafter\@secondoftwo\firstmarks}}
+\def\jlreq@extramark@#1#2{\jlreq@if{\ifcsname\jlreq@markregistername{#1}\endcsname\fi}%
+ {\expandafter\jlreq@extramark@@\expandafter{\csname \jlreq@markregistername{#1}\endcsname}{#2}}%
+ {}%
+}
+\def\jlreq@extramark@@#1#2{#2#1\@empty\@empty}
+
+\def\jlreq@setextraleftmark@#1#2{{#2}{\expandafter\@secondoftwo#1}}
+\def\jlreq@setextrarightmark@#1#2{{\expandafter\@firstoftwo#1}{#2}}
+\def\jlreq@setextraleftmark#1#2{\jlreq@setextramark{#1}{#2}{\jlreq@setextraleftmark@}}
+\def\jlreq@setextrarightmark#1#2{\jlreq@setextramark{#1}{#2}{\jlreq@setextrarightmark@}}
+\def\jlreq@setextramark#1#2#3{%
+ \jlreq@if{\ifcsname\jlreq@markregistername{#1}\endcsname\fi}{}{%
+ \expandafter\newmarks\csname\jlreq@markregistername{#1}\endcsname
+ \expandafter\def\csname\jlreq@markregistername{#1}@themark\endcsname{{}{}}%
+ }%
+ \begingroup
+ \let\label\relax
+ \let\index\relax
+ \let\glossary\relax
+ \def\jlreq@@themark@csname{\jlreq@markregistername{#1}@themark}%
+ \expandafter\unrestored@protected@xdef\csname\jlreq@@themark@csname\endcsname{%
+ \expandafter#3\expandafter{\csname\jlreq@@themark@csname\endcsname}{#2}%
+ }%
+ \expandafter\expandafter\expandafter\@temptokena\expandafter\expandafter\expandafter{\csname\jlreq@@themark@csname\endcsname}%
+ \expandafter\marks\csname\jlreq@markregistername{#1}\endcsname{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi
+}
+\let\jlreq@markboth=\markboth
+\let\jlreq@markright=\markright
+
+%.. \DeclarePageStyle内で使うもの
+% mark情報の取得を行う.
+% #1の中身をみて,#2 = 何段目見出しか,#3 = odd/even,\csname #4@<見出し命令名>\endcsnameに必要情報を追加し,#5の見出し命令名リストに追加
+% #1@heading@levelにレベルを入れる
+\def\jlreq@pagestyle@setmark#1#2#3#4#5{%
+ \begingroup
+ \expandafter\jlreq@iffirsttoken\expandafter{#1}{_}{%
+ \ifthenelse{\equal{#3}{odd}}{\let\jlreq@leftright=r}{\let\jlreq@leftright=l}%
+ \edef\jlreq@do{%
+ \unexpanded{\def#1}{%
+ \ifx l\jlreq@leftright
+ \ifnum#2=0 \noexpand\leftmark\else\unexpanded{\jlreq@extraleftmark{#2}}\fi
+ \else
+ \ifnum#2=0 \noexpand\rightmark\else\unexpanded{\jlreq@extrarightmark{#2}}\fi
+ \fi
+ }%
+ }%
+ \edef\jlreq@headingname{\expandafter\@gobble#1}% 見出し命令名
+ \edef\jlreq@tempa{\noexpand\@removeelement{\expandonce{\jlreq@headingname}}}%
+ \expandafter\jlreq@tempa\expandafter{#5}{#5}%
+ \@ifundefined{#4@\jlreq@headingname}{\expandafter\def\csname #4@\jlreq@headingname\endcsname{}}{}%
+ \eappto\jlreq@do{%
+ \noexpand\let\expandonce{\csname\expandafter\@gobble\string #1@heading@level\endcsname}=\expandonce{\csname jlreq@heading@level@\jlreq@headingname\endcsname}%
+ \unexpanded{\def#5}{\expandonce{#5},\expandonce{\jlreq@headingname}}%
+ \noexpand\appto\expandonce{\csname #4@\jlreq@headingname\endcsname}{{{\ifnum#2=0 #3\fi}{#2}{\ifx r\jlreq@leftright r\else l\fi}}}%
+ }%
+ }{\def\jlreq@do{}}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+% \def\<見出し>mark#1{...}というのを\jlreq@resultに入れる,
+% #1:*ならばextramarkを使う
+% #2: 見出し命令名,#3: mark_format
+% #4: {{mark_formatからさらに調べるやつ (odd|even)}{マークの何番目か.extraでない場合は0}{l or r(leftかrightか)}}の並び
+\def\jlreq@pagestyle@make@headingmark#1#2#3#4{%
+ \begingroup
+ \@for\jlreq@i:=0,1,2\do{%
+ \expandafter\def\csname jlreq@leftmark@\jlreq@i\endcsname{}%
+ \expandafter\def\csname jlreq@rightmark@\jlreq@i\endcsname{}%
+ }%
+ \jlreq@pagestyle@make@headingmark@{#2}{#3}#4\jlreq@endmark
+ \def\jlreq@do{}% とりあえず#1markの中身を入れていく
+ % leftを設定する時は対応するrightを空にする.
+ \expandafter\ifx\csname jlreq@leftmark@0\endcsname\@empty
+ \expandafter\ifx\csname jlreq@rightmark@0\endcsname\@empty\else
+ \eappto\jlreq@do{\jlreq@ifempty{#1}{\noexpand\markright}{\noexpand\jlreq@markright}{\csexpandonce{jlreq@rightmark@0}}}%
+ \fi
+ \else
+ \eappto\jlreq@do{\jlreq@ifempty{#1}{\noexpand\markboth}{\noexpand\jlreq@markboth}{\csexpandonce{jlreq@leftmark@0}}{\csexpandonce{jlreq@rightmark@0}}}%
+ \fi
+ \@for\jlreq@i:=1,2\do{%
+ \expandafter\ifx\csname jlreq@leftmark@\jlreq@i\endcsname\@empty
+ \expandafter\ifx\csname jlreq@rightmark@\jlreq@i\endcsname\@empty\else
+ \eappto\jlreq@do{\noexpand\jlreq@setextrarightmark{\jlreq@i}{\csexpandonce{jlreq@rightmark@\jlreq@i}}}%
+ \fi
+ \else
+ \eappto\jlreq@do{%
+ \noexpand\jlreq@setextraleftmark{\jlreq@i}{\csexpandonce{jlreq@leftmark@\jlreq@i}}%
+ \noexpand\jlreq@setextrarightmark{\jlreq@i}{\csexpandonce{jlreq@rightmark@\jlreq@i}}%
+ }%
+ \fi
+ }%
+ \ifx\jlreq@do\@empty\else
+ \edef\jlreq@do{%
+ \unexpanded{\edef\jlreq@result}{\noexpand\unexpanded{%
+ \noexpand\def\expandonce{\csname #2mark\endcsname}\unexpanded{##1}{%
+ \expandonce{\jlreq@do}%
+ }}%
+ }%
+ }%
+ \fi
+ \expandafter\endgroup
+ \jlreq@do
+}%
+\def\jlreq@pagestyle@make@headingmark@#1#2#3{%
+ \jlreq@ifendmark{#3}{}{\jlreq@pagestyle@make@headingmark@@{#1}{#2}#3}%
+}
+
+\def\jlreq@pagestyle@make@headingmark@@#1#2#3#4#5{%
+ % \jlreq@tempbに\***markの定義を入れる
+ \edef\jlreq@tempb{%
+ \expandonce{\csname the#1\endcsname}%
+ \noexpand\ifx\expandonce{\csname the#1\endcsname}\unexpanded{\@empty\else\protect\quad\fi}%
+ \unexpanded{##1}%
+ }%
+ \jlreq@parsekeyval@nokey{%
+ \jlreq@ifempty{##1}{}{\ifthenelse{\equal{##1}{#3}}{\edef\jlreq@tempb{\unexpanded{##2}}}{}}%
+ \ifthenelse{\equal{##1}{_#1}}{\edef\jlreq@tempb{\unexpanded{##2}}}{}%
+ }{#2}%
+ \ifx l#5%
+ \expandafter\edef\csname jlreq@leftmark@#4\endcsname{\expandonce{\jlreq@tempb}}%
+ \else
+ \expandafter\edef\csname jlreq@rightmark@#4\endcsname{\expandonce{\jlreq@tempb}}%
+ \fi
+ \jlreq@pagestyle@make@headingmark@{#1}{#2}%
+}
+
+% #2 #3 #4と並んだヘッダを作り#1に入れる.#1,#2,#3はコンロトールシークエンスの名前とする.
+\def\jlreq@pagestyle@setheadfoot#1#2#3#4{%
+ \begingroup
+ \edef\jlreq@do{\noexpand\jlreq@pagestyle@setheadfoot@{\unexpanded{#1}}{\csexpandonce{#2}}{\csexpandonce{#3}}{\csexpandonce{#4}}}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+% \edef内だと,#1 != 0ptならば\hskip \dimexpr#1\relaxになる
+\def\jlreq@pagestyle@hskip#1{%
+ \ifdim\dimexpr#1\relax=0pt \expandafter\@gobble\else\expandafter\@firstofone\fi
+ {\noexpand\hskip\noexpand\dimexpr#1\noexpand\relax}%
+}
+\def\jlreq@pagestyle@setheadfoot@#1#2#3#4{%
+ \begingroup
+ % - \Cdpは端にそろえるための補正
+ \jlreq@ifempty{#2}{\def\jlreq@left{}}{\edef\jlreq@left{\jlreq@pagestyle@hskip{\jlreq@expand@speciallength{\jlreq@headfoot@sidemargin}\if@tate - \Cdp\fi}\unexpanded{#2}}}%
+ % +\topskip - \Chtは\jlreq@headfoot@sidemargin = 0ptの時に本文の右に一致させるための補正.
+ \jlreq@ifempty{#4}{\def\jlreq@right{}}{\edef\jlreq@right{\unexpanded{#4}\jlreq@pagestyle@hskip{\jlreq@expand@speciallength{\jlreq@headfoot@sidemargin}\if@tate + \topskip - \Cht\fi}}}%
+ \jlreq@ifempty{#3}{%
+ \edef\jlreq@do{\unexpanded{\def#1}{\expandonce{\jlreq@left}\hfil\expandonce{\jlreq@right}}}%
+ \jlreq@ifempty{#2}{\jlreq@ifempty{#4}{\def\jlreq@do{\def#1{}}}{}}{}%
+ }{% #3を完全に真ん中に配置するために左右の幅を0にしておく
+ \ifx\jlreq@left\@empty\else\edef\jlreq@left{\noexpand\hbox to 0pt{\expandonce{\jlreq@left}\noexpand\hss}}\fi
+ \ifx\jlreq@right\@empty\else\edef\jlreq@right{\noexpand\hbox to 0pt{\noexpand\hss\expandonce{\jlreq@right}}}\fi
+ \edef\jlreq@do{%
+ \unexpanded{\def#1}{\expandonce{\jlreq@left}\hfil\unexpanded{#3}\hfil\expandonce{\jlreq@right}}%
+ }%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}%
+
+% #1の左右に傍注調整用の空白を入れて#1に代入する
+\def\jlreq@pagestyle@addsidenotemargin@left#1{%
+ \jlreq@pagestyle@addsidenotemargin@{#1}{\marginparwidth+\marginparsep}{}%
+}
+\def\jlreq@pagestyle@addsidenotemargin@right#1{%
+ \jlreq@pagestyle@addsidenotemargin@{#1}{}{\marginparwidth+\marginparsep}%
+}
+\def\jlreq@pagestyle@addsidenotemargin@bothside#1{%
+ \jlreq@pagestyle@addsidenotemargin@{#1}{\marginparwidth+\marginparsep}{\marginparwidth+\marginparsep}%
+}
+% #2: 左,#3:右,#4:#2 + #3
+\def\jlreq@pagestyle@addsidenotemargin@#1#2#3{%
+ \ifx#1\@empty\else
+ \edef#1{%
+ \jlreq@ifempty{#2}{}{\unexpanded{\hskip-\dimexpr #2\relax}}%
+ \expandonce{#1}%
+ \jlreq@ifempty{#3}{}{\unexpanded{\hskip-\dimexpr #3\relax}}%
+ }%
+ \fi
+}
+
+% #1が空かつ#4が空でないならば#2に#3と#4の中身を追加し,#4を空にする.引数は全てコントロールシークエンス
+\def\jlreq@pagestyle@addifempty#1#2#3#4{%
+ \ifx#1\@empty\ifx#4\@empty\else\eappto#2{\expandonce{#3}\expandonce{#4}}\def#4{}\fi\fi
+}
+
+\newif\ifjlreq@PageStyle@first
+% #1に入っている{柱1}{柱2}...{柱n}という並びから,実際に出力する柱を構築する.n>=1を仮定する.
+% 間に空白を入れる.
+% #1: ターゲットなコントロールシークエンスの名前,#2:*ならばreverseする,#3:空き
+\def\jlreq@pagestyle@make@runninghead#1#2#3{%
+ \jlreq@if{\expandafter\ifx\csname #1\endcsname\@empty\fi}{}{%
+ \edef\jlreq@do{%
+ \noexpand\jlreq@tempatrue % 最初の処理かフラグ
+ \unexpanded{\jlreq@pagestyle@make@runninghead@{#1}{#2}{#3}}\csexpandonce{#1}\noexpand\jlreq@endmark
+ }%
+ \expandafter\def\csname #1\endcsname{}%
+ \jlreq@do
+ % 項目が二つ以上あった.
+ \ifjlreq@tempa\else\cspreto{#1}{\jlreq@PageStyle@firsttrue}\fi
+ }%
+}
+\def\jlreq@pagestyle@make@runninghead@#1#2#3#4#5{%
+ \jlreq@if{\ifnum\numexpr\jlreq@ifendmark{#5\fi}{1}{0}*\ifjlreq@tempa 1\else 0\fi\relax=1 \fi}{%
+ % 項目が一つしか無い
+ \jlreq@ifempty{#2}{\csappto}{\cspreto}{#1}{#4}%
+ }{%
+ % 最初の空でない柱に出会うまでは柱の間の空白を入れない.
+ % 空でない柱に出会ってないならば\ifjlreq@PageStyle@firstはtrue.
+ % 一番最初の\jlreq@PageStyle@firsttrueは後で入れる.
+ \jlreq@ifempty{#2}{\csappto}{\cspreto}{#1}{%
+ \protected@edef\jlreq@tempa{#4}%
+ \ifx\jlreq@tempa\@empty\else
+ \ifjlreq@PageStyle@first\else\hskip\glueexpr#3\relax\fi
+ \jlreq@tempa
+ \jlreq@PageStyle@firstfalse
+ \fi
+ }%
+ \jlreq@tempafalse
+ \jlreq@ifendmark{#5}{}{\jlreq@pagestyle@make@runninghead@{#1}{#2}{#3}{#5}}%
+ }%
+}
+
+% #1= cs,#2 = フォーマットの入ったcs,#3 = デフォルトフォーマットの入ったcs
+\def\jlreq@pagestyle@applyformat#1#2#3{%
+ % デフォルト時に限り,\hbox to ***{空トークン}を避ける
+ \ifnum 0\ifx#1\@empty\else 1\fi\ifx#2\relax\else 1\fi>0
+ \edef\jlreq@do{\unexpanded{\def\jlreq@tempa##1}{\ifx#2\relax\expandonce{#3}\else\expandonce{#2}\fi}}\jlreq@do
+ \edef#1{\expandafter\expandonce\expandafter{\expandafter\jlreq@tempa\expandafter{#1}}}%
+ \fi
+}
+
+% フォント情報を追加する.#1:制御綴り名,#2:フォント命令の入っている制御綴名,#1に返す
+\def\jlreq@pagestyle@addfont@tocs#1#2{%
+ \expandafter\ifx\csname #1\endcsname\@empty\else
+ \expandafter\ifx\csname #2\endcsname\@empty\else
+ \expandafter\edef\csname #1\endcsname{{\csexpandonce{#2}\csexpandonce{#1}}}%
+ \fi
+ \fi
+}
+% こちらは#1にトークン列を与える.\edefで展開される.制御綴名#3に代入.
+\def\jlreq@pagestyle@addfont@totokens#1#2#3{%
+ \begingroup
+ \edef\jlreq@do{\noexpand\edef\expandonce{\csname#3\endcsname}{\unexpanded{#1}}}%
+ \expandafter\ifx\csname #2\endcsname\@empty\else
+ \edef\jlreq@tempa{#1}%
+ \ifx\jlreq@tempa\@empty\else
+ \edef\jlreq@do{%
+ \noexpand\edef\expandonce{\csname #3\endcsname}{\noexpand\unexpanded{%
+ {\csexpandonce{#2}\expandonce{\jlreq@tempa}}%
+ }}%
+ }%
+ \fi
+ \fi
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+%.. \DeclarePageStyle
+\newbox\jlreq@PageStyle@box
+\newcommand{\DeclarePageStyle}[2]{%
+ \expandafter\edef\csname jlreq@pagestyle@setting@#1\endcsname{\unexpanded{#2}}%
+ \begingroup
+ \def\jlreq@nombre@i@position{}%
+ \def\jlreq@nombre@i{\thepage}%
+ \def\jlreq@running@head@i@position{}%
+ \def\jlreq@odd@running@head@i{}%
+ \def\jlreq@even@running@head@i{}%
+ \def\jlreq@command{}%
+ \def\jlreq@mark@format{}%
+ \def\jlreq@font{}%
+ \def\jlreq@nombre@font{}%
+ \def\jlreq@running@head@font{}%
+ % フォーマットを空という可能性もあるかもしれないので,デフォルト値は\relaxで表す.
+ \let\jlreq@oddheadformat\relax
+ \let\jlreq@evenheadformat\relax
+ \let\jlreq@oddfootformat\relax
+ \let\jlreq@evenfootformat\relax
+ % 柱とノンブルの間
+ \def\jlreq@gap{1.5\zw}%
+ \def\jlreq@nombre@gap{}%
+ \def\jlreq@running@head@gap{}%
+ \newif\ifjlreq@clearmarkcommand\jlreq@clearmarkcommandtrue
+ \newif\ifjlreq@pstate\jlreq@pstatefalse % PageStyleTATE
+ \@for\jlreq@i:=ii,iii\do{%
+ \expandafter\def\csname jlreq@nombre@\jlreq@i @position\endcsname{}%
+ \expandafter\def\csname jlreq@running@head@\jlreq@i @position\endcsname{}%
+ \expandafter\def\csname jlreq@nombre@\jlreq@i\endcsname{}%
+ \expandafter\def\csname jlreq@odd@running@head@\jlreq@i\endcsname{}%
+ \expandafter\def\csname jlreq@even@running@head@\jlreq@i\endcsname{}%
+ \expandafter\def\csname jlreq@nombre@\jlreq@i @font\endcsname{}%
+ \expandafter\def\csname jlreq@running@head@\jlreq@i @font\endcsname{}%
+ }%
+ \jlreq@parsekeyval[PageStyle:#1]{
+ *{tate}{\jlreq@pstatetrue}
+ *{yoko}{\jlreq@pstatefalse}
+ {nombre}{\def\jlreq@nombre@i{##1}}
+ {nombre_position}{\def\jlreq@nombre@i@position{##1}}
+ {running_head_position}{\def\jlreq@running@head@i@position{##1}}
+ {odd_running_head}{\def\jlreq@odd@running@head@i{##1}}
+ {even_running_head}{\def\jlreq@even@running@head@i{##1}}
+ {font}{%
+ \def\jlreq@nombre@font{##1}%
+ \def\jlreq@running@head@font{##1}%
+ }
+ {nombre_font}{\def\jlreq@nombre@font{##1}}
+ {running_head_font}{\def\jlreq@running@head@font{##1}}
+ {mark_format}{\edef\jlreq@mark@format{\unexpanded{##1}}}
+ {command}{\edef\jlreq@command{\unexpanded{##1}}}
+ {gap}{\def\jlreq@gap{##1}}
+ {nombre_gap}{\def\jlreq@nombre@gap{##1}}
+ {running_head_gap}{\def\jlreq@running@head@gap{##1}}
+ % trueにすると,\ps@***実行時にまず\***markを全て\@gobbleにする.
+ {clear_markcommand}[true,false]{\csname jlreq@clearmarkcommand##1\endcsname}
+ {odd_head_format}{\edef\jlreq@oddheadformat{\unexpanded{##1}}}
+ {even_head_format}{\edef\jlreq@evenheadformat{\unexpanded{##1}}}
+ {odd_foot_format}{\edef\jlreq@oddfootformat{\unexpanded{##1}}}
+ {even_foot_format}{\edef\jlreq@evenfootformat{\unexpanded{##1}}}
+ % 二つ目
+ {nombre_ii}{\def\jlreq@nombre@ii{##1}}
+ {nombre_ii_position}{\def\jlreq@nombre@ii@position{##1}}
+ {running_head_ii_position}{\def\jlreq@running@head@ii@position{##1}}
+ {odd_running_head_ii}{\def\jlreq@odd@running@head@ii{##1}}
+ {even_running_head_ii}{\def\jlreq@even@running@head@ii{##1}}
+ {nombre_ii_font}{\def\jlreq@nombre@ii@font{##1}}
+ {running_head_ii_font}{\def\jlreq@running@head@ii@font{##1}}
+ % 三つ目
+ {nombre_iii}{\def\jlreq@nombre@iii{##1}}
+ {nombre_iii_position}{\def\jlreq@nombre@iii@position{##1}}
+ {running_head_iii_position}{\def\jlreq@running@head@iii@position{##1}}
+ {odd_running_head_iii}{\def\jlreq@odd@running@head@iii{##1}}
+ {even_running_head_iii}{\def\jlreq@even@running@head@iii{##1}}
+ {nombre_iii_font}{\def\jlreq@nombre@iii@font{##1}}
+ {running_head_iii_font}{\def\jlreq@running@head@iii@font{##1}}
+ }{#2}%
+ % ノンブル同士の間や柱同士の間のデフォルトはノンブルと柱の間の空き量
+ \ifx\jlreq@nombre@gap\@empty\let\jlreq@nombre@gap=\jlreq@gap\fi
+ \ifx\jlreq@running@head@gap\@empty\let\jlreq@running@head@gap=\jlreq@gap\fi
+ % _iiが存在するか調べて\ifjlreq@headii@existに入れる
+ \newif\ifjlreq@headii@exist
+ \jlreq@headii@existfalse
+ \jlreq@for@noexpand\jlreq@tempa:=\jlreq@odd@running@head@ii,\jlreq@odd@running@head@ii\do{%
+ \expandafter\ifx\jlreq@tempa\@empty\else\jlreq@headii@existtrue\fi
+ }%
+ % markの処理
+ % (odd|even)_running_head(_ii)が_<見出し命令>で与えられている場合,次のようにする.
+ % * \jlreq@(odd|even)@running@head(@ii)をマーク出力命令(\(left|right)mark or \jlreq@extra(left|right)mark{<num>})に書き換える
+ % - evenの場合はleft,oddの場合はright.
+ % - @iiがなければ\(left|right)mark,@iiがあれば\jlreq@extra(left|right)mark{1}
+ % * 例えば_<見出し命令>が_sectionならば,\jlreq@markdata@sectionに{{<I1>}{<I2>}{<I3>}}を追加する.ここで<I1>,<I2>,<I3>は
+ % - I1: @iiが無いときにodd or even
+ % - I2: @iiが無ければ0,あれば1.
+ % - I3: マーク出力命令がleftかrightに応じて l or r.(上述のようにoddかevenかで判定される.)
+ % * 他にも_sectionが指定されている柱があれば,\jlreq@markdata@sectionにさらに追加で加えていく.
+ % * \jlreq@(odd|even)@running@head(@ii)@heading@levelに<見出し命令>のレベルを入れる.レベルが不明な時は\relaxになる.
+ % また,\jlreq@headingmarklistに<見出し命令>の一覧を入れる.
+ \def\jlreq@headingmarklist{}%
+ \@for\jlreq@parity:=odd,even\do{%
+ \@for\jlreq@i:=0,1,2\do{%
+ % \jlreq@pagestyle@setmarkが上の処理を行う.
+ \edef\jlreq@next{\noexpand\jlreq@pagestyle@setmark{\expandonce{\csname jlreq@\jlreq@parity @running@head@\@roman\numexpr\jlreq@i + 1\relax\endcsname}}{\expandonce{\jlreq@i}}{\expandonce{\jlreq@parity}}{jlreq@markdata}{\noexpand\jlreq@headingmarklist}}%
+ \jlreq@next
+ }%
+ }%
+ % \jlreq@minimumlevelに見出しの最低(数値が小さいという意味)レベルを入れる.
+ \let\jlreq@minimumlevel=\@undefined
+ \def\jlreq@markdefinecommand{}%
+ \@for\jlreq@heading:=\jlreq@headingmarklist\do{%
+ \ifx\jlreq@heading\@empty\else
+ \expandafter\let\expandafter\jlreq@level\csname jlreq@heading@level@\jlreq@heading\endcsname
+ \ifx\jlreq@level\relax\else
+ \ifx\jlreq@minimumlevel\@undefined\let\jlreq@minimumlevel=\jlreq@level
+ \else\ifnum\jlreq@minimumlevel>\jlreq@level\space\let\jlreq@minimumlevel=\jlreq@level\fi\fi
+ \fi
+ % \jlreq@markdata@<見出し命令>にある情報とmark_formatをもとに,\<見出し命令>markを定義するマクロを作成,\jlreq@markdefinecommandに入れる.
+ \edef\jlreq@do{\noexpand\jlreq@pagestyle@make@headingmark{\ifjlreq@headii@exist *\fi}{\expandonce{\jlreq@heading}}{\expandonce{\jlreq@mark@format}}{\csexpandonce{jlreq@markdata@\jlreq@heading}}}%
+ \jlreq@do
+ \eappto\jlreq@markdefinecommand{\expandonce{\jlreq@result}}%
+ \fi
+ }%
+ \ifx\jlreq@minimumlevel\@undefined\else
+ \eappto\jlreq@markdefinecommand{\noexpand\jlreq@pagestyle@setclearmark{\expandonce{\jlreq@minimumlevel}}}%
+ \fi
+ % 見出しを出す場合:evenに章などの高いレベルの見出しを出す(2.6.3.a)
+ \@ifundefined{jlreq@odd@running@head@i@heading@level}{}{\@ifundefined{jlreq@even@running@head@i@heading@level}{}{%
+ \ifnum\jlreq@odd@running@head@i@heading@level<\jlreq@even@running@head@i@heading@level
+ \jlreq@note{偶数ページには奇数ページよりアウトラインレベルの高い見出しを入れる (ページスタイル #1 内,2.6.3.a).}%
+ \fi
+ }}%
+ % 二番目以降にフォント設定を追加
+ \@for\jlreq@i:=ii,iii\do{%
+ \@for\jlreq@parity:=odd,even\do{%
+ \jlreq@pagestyle@addfont@tocs{jlreq@\jlreq@parity @running@head@\jlreq@i}{jlreq@running@head@\jlreq@i @font}%
+ }%
+ \jlreq@pagestyle@addfont@tocs{jlreq@nombre@\jlreq@i}{jlreq@nombre@\jlreq@i @font}%
+ }%
+ % \jlreq@oddhead,\jlreq@oddfoot,\jlreq@evenhead,\jlreq@evenfootに必要なものを入れる.
+ \jlreq@if{\ifjlreq@pstate\fi}{% tate
+ % headの方に処理を入れる.footは空.
+ \def\jlreq@oddfoot{}\def\jlreq@evenfoot{}%
+ \jlreq@for@noexpand\jlreq@position:=\jlreq@nombre@i@position,\jlreq@running@head@i@position\do{%
+ \expandafter\ifx\jlreq@position\@empty\expandafter\def\jlreq@position{0pt}\fi
+ }%
+ \edef\jlreq@gapcs{\noexpand\hskip\noexpand\glueexpr\expandonce{\jlreq@nombre@gap}\noexpand\relax}%
+ \jlreq@pagestyle@addifempty{\jlreq@nombre@iii@position}{\jlreq@nombre@ii}{\jlreq@gapcs}{\jlreq@nombre@iii}%
+ \jlreq@pagestyle@addifempty{\jlreq@nombre@ii@position}{\jlreq@nombre@i}{\jlreq@gapcs}{\jlreq@nombre@ii}%
+ \edef\jlreq@gapcs{\noexpand\hskip\noexpand\glueexpr\expandonce{\jlreq@running@head@gap}\noexpand\relax}%
+ \jlreq@pagestyle@addifempty{\jlreq@running@head@iii@position}{\jlreq@odd@running@head@ii}{\jlreq@gapcs}{\jlreq@odd@running@head@iii}%
+ \jlreq@pagestyle@addifempty{\jlreq@running@head@ii@position}{\jlreq@odd@running@head@i}{\jlreq@gapcs}{\jlreq@odd@running@head@ii}%
+ \jlreq@pagestyle@addifempty{\jlreq@running@head@iii@position}{\jlreq@even@running@head@ii}{\jlreq@gapcs}{\jlreq@even@running@head@iii}%
+ \jlreq@pagestyle@addifempty{\jlreq@running@head@ii@position}{\jlreq@even@running@head@i}{\jlreq@gapcs}{\jlreq@even@running@head@ii}%
+ \def\jlreq@nombre@contents{}% ノンブルを入れる(下の方に出力)
+ \@for\jlreq@i:=i,ii,iii\do{%
+ \expandafter\let\expandafter\jlreq@position\csname jlreq@nombre@\jlreq@i @position\endcsname
+ \expandafter\ifx\csname jlreq@nombre@\jlreq@i\endcsname\@empty\else
+ \jlreq@ifgluezero{\glueexpr\jlreq@position\relax}{\def\jlreq@position{}}{}%
+ \eappto\jlreq@nombre@contents{%
+ \noexpand\hbox to 0pt{\noexpand\hss
+ \ifx\jlreq@position\@empty\else\unexpanded{\hskip \glueexpr}\expandonce{\jlreq@position}\noexpand\relax\fi
+ \csexpandonce{jlreq@nombre@\jlreq@i}%
+ }%
+ }%
+ \fi
+ }%
+ \jlreq@pagestyle@addfont@tocs{jlreq@nombre@contents}{jlreq@nombre@font}%
+ % \jlreq@(odd|even)@contentsに柱を入れる(上の方に出力)
+ \@for\jlreq@parity:=odd,even\do{%
+ \expandafter\def\csname jlreq@\jlreq@parity @contents\endcsname{}%
+ \@for\jlreq@i:=i,ii,iii\do{%
+ \expandafter\let\expandafter\jlreq@position\csname jlreq@running@head@\jlreq@i @position\endcsname
+ \expandafter\ifx\csname jlreq@\jlreq@parity @running@head@\jlreq@i\endcsname\@empty\else
+ \jlreq@ifgluezero{\glueexpr\jlreq@position\relax}{\def\jlreq@position{}}{}%
+ \expandafter\eappto\csname jlreq@\jlreq@parity @contents\endcsname{%
+ \noexpand\hbox to 0pt{\unexpanded{\hskip\glueexpr\headsep + \headheight}%
+ \if@tate\else\unexpanded{+ \topskip - \Cht}\fi
+ \ifx\jlreq@position\@empty\else + \expandonce{\jlreq@position}\fi\noexpand\relax
+ \csexpandonce{jlreq@\jlreq@parity @running@head@\jlreq@i}%
+ \noexpand\hss
+ }%
+ }%
+ \fi
+ }%
+ \jlreq@pagestyle@addfont@tocs{jlreq@\jlreq@parity @contents}{jlreq@running@head@font}%
+ % \jlreq@(odd|even)headの構築
+ % 空き指定には基本版面の文字サイズを使う(2.6.1.c)
+ \@ifundefined{jlreq@\jlreq@parity headformat}
+ {\def\jlreq@format{####1}}%
+ {\expandafter\let\expandafter\jlreq@format\csname jlreq@\jlreq@parity headformat\endcsname}%
+ \edef\jlreq@do{\unexpanded{\def\jlreq@tempa##1}{\expandonce{\jlreq@format}}}\jlreq@do
+ \edef\jlreq@tempb{%
+ \csexpandonce{jlreq@\jlreq@parity @contents}%
+ \noexpand\hfil
+ \expandonce{\jlreq@nombre@contents}%
+ }%
+ \expandafter\edef\csname jlreq@\jlreq@parity head\endcsname{%
+ \unexpanded{\setbox\jlreq@tempboxa=\hbox to \dimexpr\headsep + \headheight + \textheight}\if@tate\else\unexpanded{- \topskip + 1\zh}\fi\noexpand\relax
+ {%
+ \unexpanded{\tate\adjustbaseline}%
+ \expandafter\expandonce\expandafter{\expandafter\jlreq@tempa\expandafter{\jlreq@tempb}}%
+ }%
+ % Underful対策
+ \ifx l\jlreq@engine
+ \unexpanded{\wd\jlreq@tempboxa=\headheight}%
+ \else
+ \unexpanded{\ht\jlreq@tempboxa=\headheight\dp\jlreq@tempboxa=0pt}%
+ \fi
+ }%
+ }%
+ % \jlreq@tempboxaを正しく配置する
+ \edef\jlreq@lefthead@adjustbox{%
+ \noexpand\hskip\noexpand\dimexpr\if@tate\unexpanded{- \Cdp}\fi \unexpanded{- \headsep - 1\zw\relax}%
+ \unexpanded{\box\jlreq@tempboxa\hfil}%
+ }%
+ \edef\jlreq@righthead@adjustbox{%
+ \noexpand\hskip\unexpanded{\dimexpr\textwidth}\if@tate\unexpanded{- \topskip + \Cht}\fi\unexpanded{ + \headsep\relax}%
+ \unexpanded{\box\jlreq@tempboxa\hss}%
+ }%
+ \if@tate
+ \eappto\jlreq@oddhead{\expandonce{\jlreq@lefthead@adjustbox}}%
+ \eappto\jlreq@evenhead{\expandonce{\jlreq@righthead@adjustbox}}%
+ \else
+ \eappto\jlreq@oddhead{\expandonce{\jlreq@righthead@adjustbox}}%
+ \eappto\jlreq@evenhead{\expandonce{\jlreq@lefthead@adjustbox}}%
+ \fi
+ }{% yoko
+ % 場所を正規化する.
+ \def\jlreq@nombre@i@position@default{{bottom}{center}}%
+ \def\jlreq@running@head@i@position@default{{top}{center}}%
+ % ii以降の位置は指定されていない場合はiのそれに合わせる
+ \@for\jlreq@tempa:=jlreq@nombre,jlreq@running@head\do{%
+ \@for\jlreq@i:=ii,iii\do{%
+ \expandafter\ifx\csname\jlreq@tempa @\jlreq@i @position\endcsname\@empty
+ \expandafter\let\csname\jlreq@tempa @\jlreq@i @position\expandafter\endcsname\csname\jlreq@tempa @i@position\endcsname
+ \fi
+ \expandafter\edef\csname\jlreq@tempa @\jlreq@i @position@default\endcsname{\csname\jlreq@tempa @i@position@default\endcsname}%
+ }%
+ }%
+ \@for\jlreq@tempa:=jlreq@nombre@i@position,jlreq@nombre@ii@position,jlreq@nombre@iii@position,jlreq@running@head@i@position,jlreq@running@head@ii@position,jlreq@running@head@iii@position\do{%
+ \edef\jlreq@next{\noexpand\jlreq@pagestyle@parse@position{\csexpandonce{\jlreq@tempa}}{\expandonce{\csname\jlreq@tempa\endcsname}}{\csexpandonce{\jlreq@tempa @default}}}%
+ \jlreq@next
+ }%
+ \ifthenelse{\(
+ \boolean{@tate} \AND \(
+ \equal{\expandafter\@secondoftwo\jlreq@nombre@i@position}{right} \OR
+ \equal{\expandafter\@secondoftwo\jlreq@running@head@i@position}{right}
+ \)\) \OR \(
+ \(\NOT \boolean{@tate}\) \AND \(
+ \equal{\expandafter\@secondoftwo\jlreq@nombre@i@position}{left} \OR
+ \equal{\expandafter\@secondoftwo\jlreq@running@head@i@position}{left}
+ \)
+ \)}{%
+ \if@twoside
+ \jlreq@note{柱やノンブルは,左ページでは,基本版面の左端の延長線にノンブル又は柱の先頭をそろえて配置するか,基本版面の左端の延長線から基本版面の文字サイズの全角アキだけ右に寄せた位置に配置する (ページスタイル #1 内,2.6.1.b).}%
+ \fi
+ }{}%
+ % フォント変更命令に文字出力命令が入っているとエラーになるのを回避するために\setboxでごまかす.
+ \setbox\jlreq@tempboxa=\hbox{\jlreq@running@head@font
+ \ifthenelse{\lengthtest{\jlreq@gap < 1.49\zw} \OR \( \lengthtest{\jlreq@gap > 1.51\zw} \AND \lengthtest{\jlreq@gap < 1.99\zw} \) \OR \lengthtest{\jlreq@gap > 2.01\zw}}{\jlreq@note{ノンブルと柱との空き量は柱に使用する文字サイズの2倍又は1.5倍とする (ページスタイル #1 内,2.6.1.c).}}{}%
+ }%
+ % 初期化
+ \@for\jlreq@parity:=odd,even\do{%
+ \@for\jlreq@vert:=top,bottom\do{%
+ \@for\jlreq@hor:=left,center,right\do{%
+ \@for\jlreq@type:=nombre,running@head\do{%
+ \expandafter\def\csname jlreq@\jlreq@type @\jlreq@parity @\jlreq@vert @\jlreq@hor\endcsname{}%
+ }%
+ }%
+ }%
+ % ページが左か右か
+ \jlreq@ifleftpage{\jlreq@parity}{\def\jlreq@pagehor{left}}{\def\jlreq@pagehor{right}}%
+ % \jlreq@(running@head|nombre)@(odd|even)@(top|bottom)@(left|center|right)に入れていく
+ % 左ページではノンブルが左(2.6.1.c),i,ii,...はiが左になるようにする.
+ \@for\jlreq@i:=i,ii,iii\do{%
+ % nombre
+ \expandafter\ifx\csname jlreq@nombre@\jlreq@i\endcsname\@empty\else
+ \edef\jlreq@position{\csname jlreq@nombre@\jlreq@i @position\endcsname}%
+ \edef\jlreq@vert{\expandafter\@firstoftwo\jlreq@position}%
+ \edef\jlreq@hor{\expandafter\@secondoftwo\jlreq@position}%
+ \ifthenelse{\equal{\jlreq@parity}{even}}{\jlreq@reverse@leftright{\jlreq@hor}}{}%
+ \jlreq@ifleftpage{\jlreq@parity}{\let\jlreq@addtocs=\cseappto}{\let\jlreq@addtocs\csepreto}%
+ \edef\jlreq@csname{jlreq@nombre@\jlreq@parity @\jlreq@vert @\jlreq@hor}%
+ \expandafter\ifx\csname\jlreq@csname\endcsname\@empty\else\jlreq@addtocs{\jlreq@csname}{\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@nombre@gap}\noexpand\relax}\fi
+ \jlreq@addtocs{\jlreq@csname}{\csexpandonce{jlreq@nombre@\jlreq@i}}%
+ \fi
+ % running@head
+ % 一度「紙面の外から」の順番で{A}{B}{C}と入れる
+ \expandafter\ifx\csname jlreq@\jlreq@parity @running@head@\jlreq@i \endcsname\@empty\else
+ \edef\jlreq@position{\csname jlreq@running@head@\jlreq@i @position\endcsname}%
+ \edef\jlreq@vert{\expandafter\@firstoftwo\jlreq@position}%
+ \edef\jlreq@hor{\expandafter\@secondoftwo\jlreq@position}%
+ \ifthenelse{\equal{\jlreq@parity}{even}}{\jlreq@reverse@leftright{\jlreq@hor}}{}%
+ \ifthenelse{\equal{\jlreq@hor}{\jlreq@pagehor}}{\let\jlreq@addtocs=\cseappto}{\let\jlreq@addtocs=\csepreto}%
+ \edef\jlreq@csname{jlreq@running@head@\jlreq@parity @\jlreq@vert @\jlreq@hor}%
+ \jlreq@addtocs{\jlreq@csname}{{\csexpandonce{jlreq@\jlreq@parity @running@head@\jlreq@i}}}%
+ \fi
+ }%
+ % {A}{B}{C}の順だった柱を結合する.本体は\jlreq@pagestyle@make@runninghead.
+ \@for\jlreq@vert:=top,bottom\do{%
+ \@for\jlreq@hor:=left,center,right\do{%
+ \ifthenelse{\equal{\jlreq@hor}{right}}{\def\jlreq@tempa{*}}{\def\jlreq@tempa{}}%
+ \edef\jlreq@do{\noexpand\jlreq@pagestyle@make@runninghead{jlreq@running@head@\jlreq@parity @\jlreq@vert @\jlreq@hor}{\expandonce{\jlreq@tempa}}{\expandonce{\jlreq@running@head@gap}}}%
+ \jlreq@do
+ }%
+ }%
+ % ノンブルと柱を結合し,必要ならばフォント設定をする.
+ \@for\jlreq@vert:=top,bottom\do{%
+ \@for\jlreq@hor:=left,center,right\do{%
+ \edef\jlreq@csname{jlreq@\jlreq@parity @\jlreq@vert @\jlreq@hor}%
+ \edef\jlreq@runheadcsname{jlreq@running@head@\jlreq@parity @\jlreq@vert @\jlreq@hor}%
+ \edef\jlreq@nombrecsname{jlreq@nombre@\jlreq@parity @\jlreq@vert @\jlreq@hor}%
+ % nombreにフォント設定を追加.
+ \expandafter\ifx\csname\jlreq@nombrecsname\endcsname\@empty\else
+ \ifx\jlreq@nombre@font\@empty\else
+ \expandafter\edef\csname\jlreq@nombrecsname\endcsname{{\expandonce{\jlreq@nombre@font}\csexpandonce{\jlreq@nombrecsname}}}%
+ \fi
+ \fi
+ \jlreq@if{\expandafter\ifx\csname\jlreq@runheadcsname\endcsname\@empty\fi}{%
+ % 柱が空:ノンブルのみでよい
+ \expandafter\let\csname\jlreq@csname\expandafter\endcsname\csname\jlreq@nombrecsname\endcsname
+ }{%
+ \jlreq@if{\expandafter\ifx\csname\jlreq@nombrecsname\endcsname\@empty\fi}{%
+% % ノンブルが空.柱のみでよい.
+ \jlreq@pagestyle@addfont@tocs{\jlreq@runheadcsname}{jlreq@running@head@font}%
+ \expandafter\let\csname\jlreq@csname\expandafter\endcsname\csname\jlreq@runheadcsname\endcsname
+ }{%
+% % 両方ある場合:左ページではノンブルが左,右ページではノンブルが右.
+ \jlreq@ifleftpage{\jlreq@parity}{%
+ \ifthenelse{\equal{\jlreq@hor}{right}}{%
+ % <ノンブル><空き><柱>,右寄せ
+ % 柱が空出ないときに限り<空き>を入れる.
+ \jlreq@pagestyle@addfont@totokens{\unexpanded{\ifdim\wd\jlreq@PageStyle@box=0pt \else\hskip}\expandonce{\jlreq@gap}\unexpanded{\relax\fi}}{jlreq@running@head@font}{jlreq@tempa}%
+ \expandafter\edef\csname\jlreq@csname\endcsname{%
+ \unexpanded{\setbox\jlreq@PageStyle@box=\hbox}{\expandonce{\jlreq@running@head@font}\csexpandonce{\jlreq@runheadcsname}}%
+ \csexpandonce{\jlreq@nombrecsname}\expandonce{\jlreq@tempa}\unexpanded{\box\jlreq@PageStyle@box}%
+ }%
+ }{%
+ % <ノンブル><空き><柱>,左寄せ
+ % ノンブルは常に空ではないと仮定する.
+ \jlreq@pagestyle@addfont@totokens{\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@gap}\noexpand\relax\csexpandonce{\jlreq@runheadcsname}}{jlreq@running@head@font}{jlreq@tempa}%
+ \expandafter\edef\csname\jlreq@csname\endcsname{\csexpandonce{\jlreq@nombrecsname}\expandonce{\jlreq@tempa}}%
+ }%
+ }{%
+ \ifthenelse{\equal{\jlreq@hor}{left}}{%
+ % <柱><空き><ノンブル>,左寄せ
+ \jlreq@pagestyle@addfont@totokens{%
+ \unexpanded{\setbox\jlreq@PageStyle@box=\hbox}{\csexpandonce{\jlreq@runheadcsname}}%
+ \unexpanded{\copy\jlreq@PageStyle@box\ifdim\wd\jlreq@PageStyle@box=0pt \else\hskip\glueexpr}\expandonce{\jlreq@gap}\unexpanded{\relax\fi}%
+ }{jlreq@running@head@font}{jlreq@tempa}%
+ \expandafter\edef\csname\jlreq@csname\endcsname{\expandonce{\jlreq@tempa}\csexpandonce{\jlreq@nombrecsname}}%
+ }{%
+ % <柱><空き><ノンブル>,右寄せ
+ \jlreq@pagestyle@addfont@totokens{\csexpandonce{\jlreq@runheadcsname}\unexpanded{\hskip\glueexpr}\expandonce{\jlreq@gap}\noexpand\relax}{jlreq@running@head@font}{jlreq@tempa}%
+ \expandafter\edef\csname\jlreq@csname\endcsname{\expandonce{\jlreq@tempa}\csexpandonce{\jlreq@nombrecsname}}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ % 四カ所構築
+ \jlreq@pagestyle@setheadfoot{\jlreq@oddhead}{jlreq@odd@top@left}{jlreq@odd@top@center}{jlreq@odd@top@right}%
+ \jlreq@pagestyle@setheadfoot{\jlreq@oddfoot}{jlreq@odd@bottom@left}{jlreq@odd@bottom@center}{jlreq@odd@bottom@right}%
+ \jlreq@pagestyle@setheadfoot{\jlreq@evenhead}{jlreq@even@top@left}{jlreq@even@top@center}{jlreq@even@top@right}%
+ \jlreq@pagestyle@setheadfoot{\jlreq@evenfoot}{jlreq@even@bottom@left}{jlreq@even@bottom@center}{jlreq@even@bottom@right}%
+ \ifthenelse{\lengthtest{\marginparwidth>0pt} \AND \(\NOT\boolean{@tate}\)}{%
+ \def\jlreq@defaultformat{\hss\hbox to \jlreqyokoheadlength{####1}\hss}%
+ }{%
+ \def\jlreq@defaultformat{####1}%
+ }%
+ \jlreq@pagestyle@applyformat{\jlreq@oddhead}{\jlreq@oddheadformat}{\jlreq@defaultformat}%
+ \jlreq@pagestyle@applyformat{\jlreq@evenhead}{\jlreq@evenheadformat}{\jlreq@defaultformat}%
+ \jlreq@pagestyle@applyformat{\jlreq@oddfoot}{\jlreq@oddfootformat}{\jlreq@defaultformat}%
+ \jlreq@pagestyle@applyformat{\jlreq@evenfoot}{\jlreq@evenfootformat}{\jlreq@defaultformat}%
+ % 傍注用調整
+ \ifdim\marginparwidth>0pt
+ \if@tate\else
+ \if@twocolumn
+ \jlreq@pagestyle@addsidenotemargin@bothside{\jlreq@oddhead}%
+ \jlreq@pagestyle@addsidenotemargin@bothside{\jlreq@oddfoot}%
+ \jlreq@pagestyle@addsidenotemargin@bothside{\jlreq@evenhead}%
+ \jlreq@pagestyle@addsidenotemargin@bothside{\jlreq@evenfoot}%
+ \else
+ \jlreq@pagestyle@addsidenotemargin@right{\jlreq@oddhead}%
+ \jlreq@pagestyle@addsidenotemargin@right{\jlreq@oddfoot}%
+ \jlreq@pagestyle@addsidenotemargin@left{\jlreq@evenhead}%
+ \jlreq@pagestyle@addsidenotemargin@left{\jlreq@evenfoot}%
+ \fi
+ \fi
+ \fi
+ }%
+ \edef\jlreq@do{%
+ \noexpand\edef\expandonce{\csname ps@#1\endcsname}{%
+ \noexpand\unexpanded{%
+ \unexpanded{\def\jlreq@current@pagestyle{#1}}%
+ \ifjlreq@clearmarkcommand\unexpanded{\jlreq@heading@execmacro@toallheadings\jlreq@clearheadingmarks}\fi
+ \ifjlreq@headii@exist
+ \unexpanded{\let\@mkboth=\jlreq@markboth}%
+ \else
+ \unexpanded{\let\@mkboth=\markboth}%
+ \fi
+ \unexpanded{\def\@oddhead}{\expandonce{\jlreq@oddhead}}%
+ \unexpanded{\def\@oddfoot}{\expandonce{\jlreq@oddfoot}}%
+ \unexpanded{\def\@evenhead}{\expandonce{\jlreq@evenhead}}%
+ \unexpanded{\def\@evenfoot}{\expandonce{\jlreq@evenfoot}}%
+ \expandonce{\jlreq@markdefinecommand}%
+ \expandonce{\jlreq@command}%
+ }%
+ }%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\if@tate
+ \def\jlreqyokoheadlength{\textheight}
+\else
+ \ifdim\marginparwidth>0pt
+ \if@twocolumn
+ \def\jlreqyokoheadlength{\dimexpr\textwidth + 2\marginparwidth + 2\marginparsep\relax}
+ \else
+ \def\jlreqyokoheadlength{\dimexpr\textwidth + \marginparwidth + \marginparsep\relax}
+ \fi
+ \else
+ \def\jlreqyokoheadlength{\textwidth}
+ \fi
+\fi
+\edef\jlreqtateheadlength{\unexpanded{\dimexpr\headsep + \headheight + \textheight}\if@tate\else\unexpanded{- \topskip + 1\zh}\fi\noexpand\relax}
+
+\newcommand*{\NewPageStyle}[2]{%
+ \expandafter\@ifdefinable\csname ps@#1\endcsname{\DeclarePageStyle{#1}{#2}}%
+}
+\newcommand*{\RenewPageStyle}[2]{%
+ \@ifundefined{ps@#1}{\@latex@error{\expandafter\string\csname#1\endcsname\space undefined}\@ehc}{\DeclarePageStyle{#1}{#2}}%
+}
+\newcommand*{\ProvidePageStyle}[2]{%
+ \@ifundefined{ps@#1}{\DeclarePageStyle{#1}{#2}}{}%
+}
+\newcommand*{\ModifyPageStyle}[2]{%
+ \begingroup
+ \@ifundefined{jlreq@pagestyle@setting@#1}{\ClassError{jlreq}{Unknown pagestyle: #1}{\@ehc}}{}%
+ \expandafter\let\expandafter\setting\expandafter=\csname jlreq@pagestyle@setting@#1\endcsname
+ \edef\jlreq@do{\noexpand\RenewPageStyle{#1}{\expandonce{\setting},\unexpanded{#2}}}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+%. フロート関連
+% 4.3.3.dの例,縦組みの時だけど横にも適用……
+\setlength{\floatsep}{1\jlreq@gol plus 1\jlreq@gol}
+\setlength{\textfloatsep}{1\jlreq@gol plus \baselineskip}
+\intextsep=\textfloatsep
+\dblfloatsep=\floatsep
+\dbltextfloatsep=\textfloatsep
+% 残りはデフォルトにしておく.
+
+%. 環境も引数にとる可能性のある\jlreqsetup用マクロ.
+% #3={<設定1>,<環境名>=<設定2>}のようなものを受け付ける.
+% #2に<設定1>が,#2@<環境名>に<設定2>が入る.#1には#2@<環境名>が定義されている<環境名>をカンマ区切りで入れる.
+% \jlreqsetup{X,env=B}の後に\jlreqsetup{Y}を指定すると,env環境に対する設定はYになるようにする.
+% ただし\jlreqsetup{env=C,Y}とした場合はenv環境に対してはC.
+\long\def\jlreq@jlreqsetup@withenv#1#2#3{%
+ \@ifundefined{#1}{\expandafter\def\csname #1\endcsname{}}{}%
+ \begingroup
+ \def\jlreq@do{}%
+ \jlreq@parsekeyval@nokey{%
+ \ifjlreq@parsekeyval@nokey@novalue{%
+ \epreto\jlreq@do{%
+ \noexpand\edef\expandonce{\csname #2\endcsname}{\unexpanded{\unexpanded{##1}}}
+ \noexpand\def\expandonce{\csname #1\endcsname}{}%
+ }%
+ \expandafter\@for\expandafter\jlreq@tempa\expandafter:\expandafter=\csname #1\endcsname\do{%
+ \epreto\jlreq@do{\noexpand\let\expandonce{\csname #2@\jlreq@tempa\endcsname}\noexpand\@undefined}%
+ }%
+ }{%
+ \eappto\jlreq@do{%
+ \noexpand\edef\expandonce{\csname #2@##1\endcsname}{\unexpanded{\unexpanded{##2}}}%
+ \unexpanded{\def\jlreq@tempa{\jlreq@helper@removeelement{##1}}}%
+ \unexpanded{\expandafter\jlreq@tempa\expandafter}{\expandonce{\csname #1\endcsname}}{\expandonce{\csname #1\endcsname}}%
+ \unexpanded{\csappto{#1}{,##1}}%
+ }%
+ }%
+ }{#3}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+% #1@#2が定義されていれば\#1@#2の中身に,そうでなければ\#1の中身に展開される.
+% 展開は\unexpandedで抑制される.
+\def\jlreq@jlreqsetup@withenv@nameuse#1#2{%
+ \jlreq@if{\expandafter\ifx\csname #1@#2\endcsname\relax\fi}{\csexpandonce{#1}}{\csexpandonce{#1@#2}}%
+}
+% 4.3.1 注4
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+
+%. 図表
+\newcommand{\@makecaption}[2]{{%
+ % \jlreq@tempbに現在の環境を入れる.
+ \@ifundefined{@currenvir}{%
+ \@ifundefined{@captype}%
+ {\def\jlreq@tempb{}}%
+ {\let\jlreq@tempb=\@captype}%
+ }{\let\jlreq@tempb=\@currenvir}%
+ \reset@font\small
+ \vskip\abovecaptionskip
+ \edef\jlreq@do{\unexpanded{\def\jlreq@tempa##1}{\jlreq@jlreqsetup@withenv@nameuse{jlreq@@makecaption@label@format@setting}{\jlreq@tempb}}}%
+ \jlreq@do
+ \setbox\jlreq@tempboxa=\hbox{\jlreq@jlreqsetup@withenv@nameuse{jlreq@@makecaption@label@font@setting}{\jlreq@tempb}#1}%
+ \ifdim\wd\jlreq@tempboxa=0pt
+ \edef\jlreq@tempa{{\jlreq@jlreqsetup@withenv@nameuse{jlreq@@makecaption@font@setting}{\jlreq@tempb}\unexpanded{#2}}}%
+ \else
+ \edef\jlreq@tempa{%
+ {\jlreq@jlreqsetup@withenv@nameuse{jlreq@@makecaption@label@font@setting}{\jlreq@tempb}\expandonce{\jlreq@tempa{#1}}}%
+ \unexpanded{\hskip\glueexpr}\jlreq@jlreqsetup@withenv@nameuse{jlreq@@makecaption@after@label@space@setting}{\jlreq@tempb}\noexpand\relax
+ {\jlreq@jlreqsetup@withenv@nameuse{jlreq@@makecaption@font@setting}{\jlreq@tempb}\unexpanded{#2}}%
+ }%
+ \fi
+ \setbox\@tempboxa=\hbox{\jlreq@tempa}%
+ \edef\jlreq@tempc{\jlreq@jlreqsetup@withenv@nameuse{jlreq@@makecaption@align@setting}{\jlreq@tempb}}%
+ \expandafter\let\expandafter\jlreq@align\jlreq@tempc
+ \ifdim\wd\@tempboxa>\hsize\relax
+ {%
+ \ifx c\jlreq@align\centering\fi
+ \ifx r\jlreq@align\raggedleft\fi
+ \unhbox\@tempboxa\par
+ }%
+ \else
+ \global\@minipagefalse
+ \hbox to\hsize{%
+ \ifnum0\ifx c\jlreq@align 1\fi\ifx r\jlreq@align 1\fi>0 \hfil\fi
+ \unhbox\@tempboxa
+ \ifnum0\ifx c\jlreq@align 1\fi\ifx l\jlreq@align 1\fi>0 \hfil\fi
+ }%
+ \fi
+ \vskip\belowcaptionskip}}
+
+\jlreq@jlreqsetup@add{caption_font}{\jlreq@jlreqsetup@withenv{jlreq@@makecaption@font@envlist}{jlreq@@makecaption@font@setting}{#1}}
+\jlreq@jlreqsetup@add{caption_label_font}{\jlreq@jlreqsetup@withenv{jlreq@@makecaption@label@font@envlist}{jlreq@@makecaption@label@font@setting}{#1}}
+\jlreq@jlreqsetup@add{caption_label_format}{\jlreq@jlreqsetup@withenv{jlreq@@makecaption@label@format@envlist}{jlreq@@makecaption@label@format@setting}{#1}}
+\jlreq@jlreqsetup@add{caption_after_label_space}{\jlreq@jlreqsetup@withenv{jlreq@@makecaption@after@label@space@envlist}{jlreq@@makecaption@after@label@space@setting}{#1}}
+
+\def\jlreq@@makecaption@align@clearandsetalign#1{%
+ \@for\jlreq@tempa:=\jlreq@@makecaption@align@envlist\do{%
+ \ifx\jlreq@tempa\@empty\else
+ \eappto\jlreq@generalset{\noexpand\let\expandonce{\csname jlreq@@makecaption@align@setting@\jlreq@tempa\endcsname}=\noexpand\@undefined}%
+ \fi
+ }%
+ \appto\jlreq@generalset{%
+ \def\jlreq@@makecaption@align@envlist{}%
+ \let\jlreq@@makecaption@align@setting=#1%
+ }%
+}
+\jlreq@jlreqsetup@add{caption_align}{%
+ \@ifundefined{jlreq@@makecaption@align@envlist}{\def\jlreq@@makecaption@align@envlist{}}{}%
+ \begingroup
+ \def\jlreq@generalset{}\def\jlreq@envset{}%
+ \jlreq@parsekeyval@nokey{%
+ \jlreq@ifempty{##1}{}{%
+ \jlreq@switch{##1}{%
+ {center}{\jlreq@@makecaption@align@clearandsetalign{c}}
+ {left}{\jlreq@@makecaption@align@clearandsetalign{l}}
+ {right}{\jlreq@@makecaption@align@clearandsetalign{r}}
+ {top}{\jlreq@@makecaption@align@clearandsetalign{l}}
+ {bottom}{\jlreq@@makecaption@align@clearandsetalign{r}}
+ {%
+ \jlreq@switch{##2}{%
+ {center}{\eappto\jlreq@envset{\noexpand\let\expandonce{\csname jlreq@@makecaption@align@setting@##1\endcsname}=c}}%
+ {left}{\eappto\jlreq@envset{\noexpand\let\expandonce{\csname jlreq@@makecaption@align@setting@##1\endcsname}=l}}%
+ {right}{\eappto\jlreq@envset{\noexpand\let\expandonce{\csname jlreq@@makecaption@align@setting@##1\endcsname}=r}}%
+ {top}{\eappto\jlreq@envset{\noexpand\let\expandonce{\csname jlreq@@makecaption@align@setting@##1\endcsname}=l}}%
+ {bottom}{\eappto\jlreq@envset{\noexpand\let\expandonce{\csname jlreq@@makecaption@align@setting@##1\endcsname}=r}}%
+ }%
+ \appto\jlreq@envset{%
+ \def\jlreq@tempa{\jlreq@helper@removeelement{##1}}%
+ \expandafter\jlreq@tempa\expandafter{\jlreq@@makecaption@align@envlist}{\jlreq@@makecaption@align@envlist}%
+ \appto\jlreq@@makecaption@align@envlist{,##1}%
+ }%
+ }%
+ }%
+ }%
+ }{#1}%
+ \edef\jlreq@do{\expandonce{\jlreq@generalset}\expandonce{\jlreq@envset}}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+% 特に根拠のない値
+\setlength\abovecaptionskip{.5\jlreq@gol}
+\setlength\belowcaptionskip{0pt}
+
+%.. figure環境
+\newcounter{figure}
+\ifthenelse{\equal{\jlreq@article@type}{article}}{%
+ \renewcommand{\thefigure}{\@arabic\c@figure}
+}{%
+ \@addtoreset{figure}{chapter}
+ \renewcommand{\thefigure}{\ifnum\c@chapter>\z@\thechapter.\fi \@arabic\c@figure}
+}
+\newcommand*{\fps@figure}{h}
+\newcommand*{\ftype@figure}{1}
+\newcommand*{\ext@figure}{lof}
+\newcommand*{\fnum@figure}{\figurename\thefigure}
+\newenvironment{figure}{\@float{figure}}{\end@float}
+\newenvironment{figure*}{\@dblfloat{figure}}{\end@dblfloat}
+
+%.. table環境
+\newcounter{table}
+\ifthenelse{\equal{\jlreq@article@type}{article}}{%
+ \renewcommand{\thetable}{\@arabic\c@table}
+}{%
+ \@addtoreset{table}{chapter}
+ \renewcommand{\thetable}{\ifnum\c@chapter>\z@\thechapter.\fi \@arabic\c@table}
+}
+\newcommand*{\fps@table}{h}
+\newcommand*{\ftype@table}{2}
+\newcommand*{\ext@table}{lot}
+\newcommand*{\fnum@table}{\tablename\thetable}
+\newenvironment{table}{\@float{table}}{\end@float}
+\newenvironment{table*}{\@dblfloat{table}}{\end@dblfloat}
+
+%. タイトル周り
+\newenvironment{titlepage}{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \setcounter{page}{1}%
+}{%
+ \if@restonecol\twocolumn\else\newpage\fi
+ \if@twoside\else
+ \setcounter{page}{1}%
+ \fi
+}
+
+\if@titlepage
+ \newcommand{\maketitle}{%
+ % jarticleとかからあまり変更していない
+ \begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let\footnote\thanks
+ \null\vfil
+ \vskip 4\baselineskip
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip\baselineskip%
+ {\Large
+ \lineskip .75em%
+ % 縦書き時には表組み内でも縦書きにするようにする
+ \if@tate
+ \let\jlreq@temporary@original@ialign=\ialign
+ \pretocmd{\ialign}{\unexpanded{\tate\let\ialign=\jlreq@temporary@original@ialign}}{}{}%
+ \fi
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip\baselineskip
+ {\large\@date\par}%
+ \end{center}\par
+ \vfil{\centering\@thanks}\vfil\null
+ \end{titlepage}%
+ \jlreq@endofmaketitle
+ }
+\else
+ \newcommand{\maketitle}{%
+ \par
+ \begingroup
+ \renewcommand{\thefootnote}{\fnsymbol{footnote}}%
+ \renewcommand{\@makefnmark}{\hbox{%
+ \jlreq@iftdir{\yoko}{}%
+ \rlap{\@textsuperscript{\normalfont\@thefnmark}}%
+ }}%
+ \renewcommand{\jlreq@referencemark@format}[1]{\@makefnmark}% うーん
+ \if@twocolumn
+ \ifnum\col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@
+ \@maketitle
+ \fi
+ % \pagestyle{empty}の時はそのまま.
+ \ifnum0\ifx\@oddhead\@empty\else1\fi\ifx\@evenhead\@empty\else1\fi>0
+ \thispagestyle{plain}%
+ \fi
+ \@thanks
+ \endgroup
+ \jlreq@endofmaketitle
+ }
+\fi
+% いろいろクリアする.
+\def\jlreq@endofmaketitle{%
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\p@thanks\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+}%
+% \vskipを\baselineskipにしてみた.
+\def\@maketitle{%
+ \newpage\null
+ \vskip 2\baselineskip%
+ \begin{center}%
+ {\jlreq@keepbaselineskip{\LARGE}\@title\par}%
+ \vskip\baselineskip
+ {\jlreq@keepbaselineskip{\large}%
+ \lineskip .5\zh
+ % 縦書き時には表組み内でも縦書きにするようにする
+ \if@tate
+ \let\jlreq@temporary@original@ialign=\ialign
+ \pretocmd{\ialign}{\unexpanded{\tate\let\ialign=\jlreq@temporary@original@ialign}}{}{}%
+ \fi
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}%
+ \par
+ }%
+ \ifx\@date\@empty\else
+ \vskip\baselineskip
+ {\jlreq@keepbaselineskip{\large}\@date}%
+ \fi
+ \end{center}%
+ \par
+ \vskip\baselineskip
+ \ifvoid\jlreq@abstractbox\else\unvbox\jlreq@abstractbox\fi
+}
+
+%.. abstract
+\def\jlreq@parhook@abstract{}
+\ifthenelse{\equal{\jlreq@article@type}{book}}{}{% article,report
+ \newbox\jlreq@abstractbox
+ \newcommand*{\abstractname}{概要}
+ \if@titlepage
+ % articleとかjarticleとかと同じ
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \@beginparpenalty\@lowpenalty
+ \begin{center}%
+ {\sffamily\bfseries\abstractname}%
+ \@endparpenalty\@M
+ \end{center}%
+ \par
+ }{%
+ \par\vfil\null\endtitlepage
+ }
+ \else
+ \newenvironment{abstract}{%
+ \ifnum0\if@twocolumn\else1\fi\ifjlreq@preamble1\fi>0
+ \ifjlreq@preamble
+ \ifx l\jlreq@engine\else
+ \def\jlreq@parhook@abstract{\futurelet\jlreq@nextchar\jlreq@openbracket@hook}%
+ \PushPostHook{par}{\jlreq@parhook@abstract}%
+ \fi
+ \fi
+ % とりあえず全部ボックスに入れる.
+ \global\setbox\jlreq@abstractbox=\vtop\bgroup
+ \ifjlreq@preamble
+ % preamble後っぽく振る舞う
+ \@noskipsecfalse
+ % \@nodocumentが入っているので一時的に無効化
+ \everypar{}%
+ \fi
+ \if@twocolumn
+ \parindent=0pt
+ \hsize=\textwidth
+ % 後で\@maketitleとともに呼び出されるときは\twcolumn[***]で呼び出される.
+ \begin{minipage}[b]{\textwidth}%
+ \fi
+ \bgroup
+ \small
+ \parindent=1\zw
+ \begin{center}%
+ {\sffamily\bfseries\abstractname}%
+ \end{center}%
+ \list{}{%
+ \listparindent\parindent
+ \itemindent\listparindent
+ \labelwidth\z@
+ \labelsep\z@
+ \leftmargin=2\zw
+ \rightmargin\leftmargin
+ \@tempdima=1\zw
+ \@tempdimb=\dimexpr\linewidth - \@totalleftmargin - \leftmargin - \rightmargin\relax
+ \@tempdimc=\@tempdimb
+ \divide\@tempdimb by \@tempdima\multiply\@tempdimb by \@tempdima
+ \ifdim\@tempdimb=\@tempdimc\else\@tempdimb=\dimexpr\@tempdimb - 1\zw\relax\fi
+ \leftmargin=\dimexpr\leftmargin + (\@tempdimc - \@tempdimb)/2\relax
+ \rightmargin=\dimexpr\rightmargin + (\@tempdimc - \@tempdimb)/2\relax
+ \parsep\z@ \@plus.1\zh
+ }%
+ \item\relax
+ \else
+ \section*{\abstractname}%
+ \fi
+ }{%
+ \ifnum0\if@twocolumn\else1\fi\ifjlreq@preamble1\fi>0
+ \endlist
+ \egroup
+ \vspace{\baselineskip}%
+ \if@twocolumn
+ \end{minipage}
+ \fi
+ \egroup
+ \fi
+ \ifjlreq@preamble
+ \ifx l\jlreq@engine\else
+ \def\jlreq@parhook@abstract{}%
+ \fi
+ \else
+ \unvbox\jlreq@abstractbox
+ \fi
+ }
+ \fi
+}
+%. 箇条書き. cf. JISX4051 8.4
+% 用語定義型
+\newenvironment{description}{\list{}{%
+ \setlength{\leftmargin}{0\zw}% 下げない
+ \setlength{\labelwidth}{0\zw}%
+ \setlength{\labelsep}{1\zw}
+% \addtolength{\leftmargin}{\leftskip}% たぶんこの二行いらない……
+% \addtolength{\leftmargin}{\labelsep}%
+ \let\makelabel=\descriptionlabel
+% 同行じゃない場合はこんな感じ?
+% \let\jlreq@original@@item=\@item
+% \def\@item[##1]{\jlreq@original@@item[##1]\mbox{}\par
+ }}{\endlist}
+\newcommand{\descriptionlabel}[1]{\normalfont\sffamily\bfseries #1}
+
+%.. 箇条書き
+% #3={<設定1>,i=<設定2>,<環境名>={<設定3>,ii=<設定4>}}のような設定を解釈する.
+% <設定2>は#2@iに,<設定4>は#2@ii@<環境名>に格納される.
+% <設定1>の指定はi=<設定1>,..,vi=<設定1>と等価.<設定3>も同様.
+% #1には現在何か値が定義されている環境名をカンマ区切りで入れる.
+\long\def\jlreq@jlreqsetup@itemization#1#2#3{
+ \@ifundefined{#1}{\expandafter\def\csname #1\endcsname{}}{}%
+ \begingroup
+ \def\jlreq@generalset{}%
+ \def\jlreq@levelset{}%
+ \def\jlreq@envset{}%
+ \jlreq@parsekeyval@nokey{%
+ \ifjlreq@parsekeyval@nokey@novalue{%
+ % 生の値.環境に対するものをクリアし,全ての<i-iv>に同じ値を設定
+ % 環境一覧リストもクリア.
+ \@for\jlreq@tempa:=i,ii,iii,iv,v,vi\do{%
+ \expandafter\@for\expandafter\jlreq@tempb\expandafter:\expandafter=\csname #1\endcsname\do{%
+ \ifx\jlreq@tempb\@empty\else
+ \eappto\jlreq@generalset{\noexpand\let\expandonce{\csname #2@\jlreq@tempa @\jlreq@tempb\endcsname}\noexpand\@undefined}%
+ \fi
+ }%
+ \eappto\jlreq@generalset{%
+ \noexpand\edef\expandonce{\csname #2@\jlreq@tempa\endcsname}{\unexpanded{\unexpanded{##1}}}%
+ }%
+ }%
+ \appto\jlreq@generalset{\expandafter\def\csname #1\endcsname{}}%
+ }{%
+ \ifthenelse{\equal{##1}{i} \OR \equal{##1}{ii} \OR \equal{##1}{iii} \OR \equal{##1}{iv} \OR \equal{##1}{v} \OR \equal{##1}{vi}}{%
+ % i=とかの時,環境に対応するものをクリアし,\#2@##1に値を入れる
+ \expandafter\@for\expandafter\jlreq@tempa\expandafter:\expandafter=\csname #1\endcsname\do{
+ \ifx\jlreq@tempa\@empty\else
+ \epreto\jlreq@envset{\noexpand\let\expandonce{\csname #2@##1@\jlreq@tempa\endcsname}\noexpand\@undefined}%
+ \fi
+ }%
+ \eappto\jlreq@envset{\noexpand\edef\expandonce{\csname #2@##1\endcsname}{\unexpanded{\unexpanded{##2}}}}%
+ }{%
+ % そうでないとき,環境.##1 = 環境名
+ \jlreq@parsekeyval@nokey{%
+ \ifjlreq@parsekeyval@nokey@novalue{%
+ % i - viまでに全てセットする.
+ \@for\jlreq@tempa:=i,ii,iii,iv,v,vi\do{%
+ \epreto\jlreq@envset{\noexpand\edef\expandonce{\csname #2@\jlreq@tempa @##1\endcsname}{\unexpanded{\unexpanded{####1}}}}%
+ }%
+ }{%
+ % ピンポイント代入
+ \eappto\jlreq@envset{\noexpand\edef\expandonce{\csname #2@####1@##1\endcsname}{\unexpanded{\unexpanded{####2}}}}%
+ }%
+ }{##2}%
+ \eappto\jlreq@envset{%
+ \unexpanded{\def\jlreq@tempa{\jlreq@helper@removeelement{##1}}}%
+ \unexpanded{\expandafter\jlreq@tempa\expandafter}{\expandonce{\csname #1\endcsname}}{\expandonce{\csname #1\endcsname}}%
+ \noexpand\appto\expandonce{\csname #1\endcsname}{\unexpanded{,##1}}%
+ }%
+ }%
+ }%
+ }{#3}%
+ \edef\jlreq@do{\expandonce{\jlreq@generalset}\expandonce{\jlreq@levelset}\expandonce{\jlreq@envset}}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\def\jlreq@itemization@beforeafter@space@envlist{}
+\jlreq@jlreqsetup@add{itemization_beforeafter_space}{\jlreq@jlreqsetup@itemization{jlreq@itemization@beforeafter@space@envlist}{jlreq@itemization@beforeafter@space@setting}{#1}}
+\jlreq@jlreqsetup@add{itemization_itemsep}{\jlreq@jlreqsetup@withenv{jlreq@itemization@itemsep@envlist}{jlreq@itemization@itemsep@setting}{#1}}
+\jlreq@jlreqsetup@add{itemization_labelsep}{\jlreq@jlreqsetup@withenv{jlreq@itemization@labelsep@envlist}{jlreq@itemization@labelsep@setting}{#1}}
+\jlreq@jlreqsetup@add{itemization_label_length}{\jlreq@jlreqsetup@itemization{jlreq@itemization@label@length@envlist}{jlreq@itemization@label@length@setting}{#1}}
+% enumerate, itemize用初期化,#1 = i,ii,...
+\def\jlreq@init@list#1{%
+ \setlength{\partopsep}{0pt}%
+ \setlength{\itemsep}{\dimexpr\jlreq@jlreqsetup@withenv@nameuse{jlreq@itemization@itemsep@setting}{\@currenvir}}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \setlength{\labelsep}{\dimexpr\jlreq@jlreqsetup@withenv@nameuse{jlreq@itemization@labelsep@setting}{\@currenvir}\relax}%
+ \setlength{\labelwidth}{\dimexpr\jlreq@jlreqsetup@withenv@nameuse{jlreq@itemization@label@length@setting@#1}{\@currenvir}\relax}%
+ \setlength{\topsep}{\dimexpr\jlreq@jlreqsetup@withenv@nameuse{jlreq@itemization@beforeafter@space@setting@#1}{\@currenvir}\relax}%
+ \setlength{\leftmargin}{\dimexpr\csname leftmargin#1\endcsname}%
+ \setlength{\itemindent}{\dimexpr\jlreq@jlreqsetup@withenv@nameuse{jlreq@itemization@label@length@setting@#1}{\@currenvir} + \labelsep - \leftmargin\relax}%
+}
+
+\def\@listi{\jlreq@init@list{i}}%
+\let\@listI\@listi
+\def\@listii{\jlreq@init@list{ii}}
+\def\@listiii{\jlreq@init@list{iii}}
+\def\@listiv{\jlreq@init@list{iv}}
+\def\@listv{\jlreq@init@list{v}}
+\def\@listvi{\jlreq@init@list{vi}}
+
+% 引用系.3.5.2の例.
+\jlreq@jlreqsetup@add{quote_indent}{\def\jlreq@quote@indent{#1}}
+\jlreq@jlreqsetup@add{quote_end_indent}{\def\jlreq@quote@end@indent{#1}}
+\jlreq@jlreqsetup@add{quote_fontsize}[normalsize,small,footnotesize,scriptsize,tiny,]{\jlreq@ifempty{#1}{\def\jlreq@quote@fontsize{}}{\edef\jlreq@quote@fontsize{\expandonce{\csname #1\endcsname}}}}
+\jlreq@jlreqsetup@add{quote_beforeafter_space}{\def\jlreq@quote@beforeafter@space{#1}}
+
+\newenvironment{verse}
+ {\let\\\@centercr
+ \list{}{\itemsep\z@ \itemindent -2\jlreq@mol
+ \listparindent\itemindent
+ \labelwidth\z@
+ \labelsep\z@
+ \leftmargin=\dimexpr\jlreq@quote@indent\relax
+ \addtolength{\leftmargin}{2\jlreq@mol}%
+ \rightmargin=\dimexpr\jlreq@quote@end@indent\relax
+ \jlreq@quote@fontsize
+ \@tempdima=1\zw
+ \@tempdimb=\dimexpr\linewidth - \@totalleftmargin - \leftmargin - \rightmargin\relax
+ \@tempdimc=\@tempdimb
+ \divide\@tempdimb by \@tempdima\multiply\@tempdimb by \@tempdima
+ \topsep=\dimexpr\jlreq@quote@beforeafter@space\relax
+ \leftmargin=\dimexpr\leftmargin + \@tempdimc - \@tempdimb\relax}%
+ \item\relax}{\endlist}
+\newenvironment{quotation}
+ {\list{}{%
+ \leftmargin=\dimexpr\jlreq@quote@indent\relax
+ \rightmargin=\dimexpr\jlreq@quote@end@indent\relax
+ \jlreq@quote@fontsize
+ \@tempdima=1\zw
+ \@tempdimb=\dimexpr\linewidth - \@totalleftmargin - \leftmargin - \rightmargin\relax
+ \@tempdimc=\@tempdimb
+ \divide\@tempdimb by \@tempdima\multiply\@tempdimb by \@tempdima
+ \leftmargin=\dimexpr\leftmargin + \@tempdimc - \@tempdimb\relax
+ \listparindent\parindent
+ \itemindent\listparindent
+ \labelwidth\z@
+ \labelsep\z@
+ \topsep=\dimexpr\jlreq@quote@beforeafter@space\relax
+ \parsep\z@ \@plus.1\jlreq@gol}%
+ \item\relax}{\endlist}
+\newenvironment{quote}
+ {\list{}{%
+ \leftmargin=\dimexpr\jlreq@quote@indent\relax
+ \rightmargin=\dimexpr\jlreq@quote@end@indent\relax
+ \jlreq@quote@fontsize
+ \@tempdima=1\zw
+ \@tempdimb=\dimexpr\linewidth - \@totalleftmargin - \leftmargin - \rightmargin\relax
+ \@tempdimc=\@tempdimb
+ \divide\@tempdimb by \@tempdima\multiply\@tempdimb by \@tempdima
+ \leftmargin=\dimexpr\leftmargin + \@tempdimc - \@tempdimb\relax
+ \labelwidth\z@
+ \itemindent\z@
+ \topsep=\jlreq@speciallength{\jlreq@quote@beforeafter@space}%
+ \listparindent\z@}%
+ \item\relax}{\endlist}
+
+%. 表関係 4.4
+% 表内の行間を0にする(4.4.3.f)
+\jlreq@saveoriginalcs{\tabular}
+\jlreq@saveoriginalcs{\endtabular}
+\preto\tabular{\begingroup\appto\@arrayparboxrestore{\baselineskip=0pt\lineskip=0pt}}
+\appto\endtabular{\endgroup}
+% 4.4.3.e
+\setlength\tabcolsep{.5\zh}
+\setlength\arraycolsep{.5\zw}
+% 4.4.3.j
+\setlength\arrayrulewidth{\jlreq@omotekeiwidth} % 4.4.3.c
+\setlength\doublerulesep{2pt}
+\setlength\tabbingsep{\labelsep}
+\skip\@mpfootins=\skip\footins
+\setlength\fboxsep{.3\zw}
+\setlength\fboxrule{\jlreq@omotekeiwidth} % 根拠はない
+% 後で
+\ifthenelse{\equal{\jlreq@article@type}{article}}{%
+ \renewcommand{\theequation}{\@arabic\c@equation}
+}{%
+ \@addtoreset{equation}{chapter}
+ \renewcommand{\theequation}{\ifnum\c@chapter>\z@\thechapter.\fi \@arabic\c@equation}
+}
+
+%. 目次
+\setcounter{tocdepth}{3}
+\newcommand{\@pnumwidth}{2\jlreq@mol}
+\newcommand{\@tocrmarg}{2.55em}
+\newcommand{\@dotsep}{2} % 狭くしてみた
+\newskip\toclineskip
+\setlength\toclineskip{0\jlreq@gol plus .02\jlreq@gol}
+% tarticleから
+\newdimen\@lnumwidth
+\def\numberline#1{\hbox to\@lnumwidth{#1\hfil}}
+\def\addcontentsline#1#2#3{%
+ \protected@write\@auxout{%
+ \let\label\@gobble\let\index\@gobble\let\glossary\@gobble
+ \if@tate
+ \@temptokena{\jlreq@rensuji{\thepage}}%
+ \else
+ \@temptokena{\thepage}%
+ \fi
+ }{\string\@writefile{#1}{\protect\contentsline{#2}{#3}{\the\@temptokena}}}%
+}
+
+\newcount\jlreq@top@contents % トップ見出しを入れる.レベルと同じ値.
+\jlreq@top@contents=-100
+\newcommand*{\jlreq@set@top@contents}[1]{%
+ \ifnum\jlreq@top@contents=-100
+ \jlreq@top@contents=#1\relax
+ \fi
+}
+\ifthenelse{\equal{\jlreq@article@type}{article}}{
+ \newcommand{\tableofcontents}{%
+ \jlreq@top@contents=-100\relax
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \section*{\contentsname}%
+ \@mkboth{\contentsname}{\contentsname}%
+ \@starttoc{toc}%
+ \if@restonecol\twocolumn\fi
+ }
+}{% book, report
+ \newcommand{\tableofcontents}{%
+ \jlreq@top@contents=-100\relax
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \chapter*{\contentsname}%
+ \@mkboth{\contentsname}{\contentsname}%
+ \@starttoc{toc}%
+ \if@restonecol\twocolumn\fi
+ }
+}
+% JIS X 4051自身の目次に近づけようかと……なりきれてないけど.
+% 文字の大きさは全て同じ(\normalsize)にする.
+% 見出しのレベルがあがると1文字分ずつ字下げしていく.
+% 第三引数は,上からの幅に加え更にトップの見出しからの差による補正(プラス)が入る.
+% 補正には\jlreq@top@contentsを使う.
+% 「トップ」というか,一番最初に現れた見出しを入れる.
+% リーダーは.から・に変更しました.
+\def\@dottedtocline#1#2#3#4#5{%
+ \jlreq@set@top@contents{#1}%
+ \ifnum #1>\c@tocdepth \else
+ \vskip\toclineskip
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@lnumwidth #3\relax
+ \@tempcnta=#1\relax
+ \advance\@tempcnta by -\jlreq@top@contents
+ \@tempdima=1\jlreq@mol
+ \multiply \@tempdima by \@tempcnta
+ \advance\leftskip \@lnumwidth \hbox{}\hskip -\leftskip
+ \advance\leftskip\@tempdima
+ {#4}\nobreak
+ \leaders\hbox{$\m@th\mkern \@dotsep mu$\null\inhibitglue ・\inhibitglue\null$\m@th\mkern \@dotsep mu$}%
+ \hfill\nobreak
+ \hb@xt@\@pnumwidth{\hss\normalfont\normalcolor #5}%
+ \par}%
+ \fi}
+
+% listoffigures
+\newcommand{\listoffigures}{%
+ \jlreq@top@contents=-100
+ \section*{\listfigurename}%
+ \@mkboth{\listfigurename}{\listfigurename}%
+ \@starttoc{lof}%
+}
+\newcommand*{\l@figure}{\@dottedtocline{1}{0\jlreq@gol}{2\jlreq@gol}}
+\newcommand{\listoftables}{%
+ \jlreq@top@contents=-100
+ \section*{\listtablename}%
+ \@mkboth{\listtablename}{\listtablename}%
+ \@starttoc{lot}%
+}
+\let\l@table\l@figure
+
+%. 文献,そのまま
+\newdimen\bibindent
+\setlength\bibindent{2\jlreq@mol}
+\newcommand{\newblock}{\hskip .11em\@plus.33em\@minus.07em}
+\newenvironment{thebibliography}[1]{%
+ \jlreq@oldfontcommand@enable
+ \section*{\refname}%
+ \@mkboth{\refname}{\refname}%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \labelsep=1\zw
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \itemindent=0pt
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty\clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m
+}{%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist
+ \jlreq@oldfontcommand@disable
+}
+\let\@openbib@code\@empty
+\if@tate
+ \def\@cite#1#2{\jlreq@rensuji{[{#1\if@tempswa , #2\fi}]}}
+ \def\@biblabel#1{\jlreq@rensuji{[#1]}}
+\fi
+
+%. 索引
+\newif\ifjlreq@resttate
+\newenvironment{theindex}{%
+ \jlreq@oldfontcommand@enable
+ \jlreq@iftdir{\clearpage\yoko\jlreq@resttatetrue}{\jlreq@resttatefalse}% 常に横書きにする
+ \if@twocolumn\@restonecolfalse\else\@restonecoltrue\fi
+ \columnseprule\z@ \columnsep 2\jlreq@mol
+ \twocolumn[\section*{\indexname}]%
+ \@mkboth{\indexname}{\indexname}%
+ \jlreq@theindex@pagestyle
+ \parindent\z@
+ \parskip\z@ \@plus .03\jlreq@gol\relax
+ \let\item\@idxitem
+}{%
+ \ifx\jlreq@theindex@savedpagestyle\@undefined\else\expandafter\pagestyle\expandafter{\jlreq@theindex@savedpagestyle}\fi
+ \let\jlreq@theindex@savedpagestyle\@undefined
+ \if@restonecol\onecolumn\else\clearpage\fi
+ \ifjlreq@resttate\tate\fi
+ \jlreq@oldfontcommand@disable
+}
+\newcommand{\@idxitem}{\par\hangindent 4\jlreq@mol}
+\newcommand{\subitem}{\@idxitem \hspace*{2\jlreq@mol}}
+\newcommand{\subsubitem}{\@idxitem \hspace*{3\jlreq@mol}}
+\newcommand{\indexspace}{\par \vskip 1\jlreq@gol \@plus .5\jlreq@gol \@minus .3\jlreq@gol\relax}
+\def\jlreq@theindex@pagestyle{}
+\jlreq@jlreqsetup@add{theindex_pagestyle}{
+ \def\jlreq@tempa{}% ページスタイル名
+ \def\jlreq@theindex@pagestyle{}%
+ \jlreq@tempafalse % restore
+ \jlreq@parsekeyval@nokey{%
+ \ifjlreq@parsekeyval@nokey@novalue{\def\jlreq@tempa{##1}}{%
+ \jlreq@switch{##1}{%
+ {restore}{\csname jlreq@tempa##2\endcsname}%
+ }%
+ }%
+ }{#1}%
+ \eappto\jlreq@theindex@pagestyle{\unexpanded{\let\jlreq@theindex@savedpagestyle}\ifjlreq@tempa\noexpand\jlreq@current@pagestyle\else\noexpand\@undefined\fi}%
+ \ifx\jlreq@tempa\@empty\else
+ \eappto\jlreq@theindex@pagestyle{\noexpand\pagestyle{\expandonce{\jlreq@tempa}}}%
+ \fi
+}
+
+%. 前付,後付,付録
+% \jlreq@matter@heading[restoreする見出し一覧を入れる制御綴]{#2@<見出し命令名>に今の見出しの中身を入れる}{生成する制御綴の名前}{設定}
+\def\jlreq@matter@heading{\@ifnextchar[{\jlreq@matter@heading@}{\jlreq@matter@heading@[]{}}}
+\def\jlreq@matter@heading@[#1]#2#3#4{%
+ \begingroup
+ \def\jlreq@restoreheadings{}% 復帰させる見出し名(カンマ区切り)
+ \def\jlreq@headingscmds{}% \ModiryHeadings**,\RenewHeadings**の塊
+ \jlreq@parsekeyval@nokey{%
+ % ##1 = 見出し命令名, ##2 = 設定
+ \def\jlreq@headingsettings{}% Modifyする中身
+ \def\jlreq@declaretype{Modify}%
+ \def\jlreq@level{}%
+ \jlreq@tempatrue % restore
+ \jlreq@parsekeyval@nokey{%
+ % 各見出し命令に対する設定を解析
+ \ifjlreq@parsekeyval@nokey@novalue{%
+ \eappto\jlreq@headingsettings{\unexpanded{####1}}%
+ }{%
+ \jlreq@switch{####1}{%
+ {heading_type}{%
+ \lowercase{\def\jlreq@tempa{####2}}%
+ \jlreq@switch{\jlreq@tempa}{
+ {tobira}{\def\jlreq@declaretype{RenewTobira}}
+ {block}{\def\jlreq@declaretype{RenewBlock}}
+ {runin}{\def\jlreq@declaretype{RenewRunin}}
+ {cutin}{\def\jlreq@declaretype{RenewCutin}}
+ {modify}{\def\jlreq@declaretype{Modify}}
+ {\ClassError{jlreq}{Unknown heading type `####2'}{\@ehc}}
+ }%
+ }
+ {heading_level}{\def\jlreq@level{####2}}
+ {%
+ \jlreq@ifempty{#1}{\@firstofone}{%
+ \ifthenelse{\equal{####1}{restore}}{%
+ \csname jlreq@tempa####2\endcsname\@gobble
+ }{\@firstofone}%
+ }%
+ {\eappto\jlreq@headingsettings{\ifx\jlreq@headingsettings\@empty\else ,\fi\unexpanded{####1={####2}}}}%
+ }%
+ }%
+ }%
+ }{##2}%
+ \jlreq@ifempty{#1}{}{%
+ \ifjlreq@tempa
+ \eappto\jlreq@headingscmds{\noexpand\SaveHeading{\unexpanded{##1}}{\expandonce{\csname #2@##1\endcsname}}}%
+ \eappto\jlreq@restoreheadings{\ifx\jlreq@restoreheadings\@empty\else ,\fi\unexpanded{##1}}%
+ \fi
+ }%
+ % \jlreq@declareに\ModifyHeadingか\Renew***Headingを入れる
+ \edef\jlreq@declare{\expandonce{\csname\jlreq@declaretype Heading\endcsname}{##1}}%
+ \ifthenelse{\NOT \equal{\jlreq@declaretype}{Modify}}{%
+ \ifx\jlreq@level\@empty
+ % \frontmatter時でのレベルを引用する.
+ \edef\jlreq@declare{%
+ \unexpanded{\edef\jlreq@tempa}{\noexpand\unexpanded{\expandonce{\jlreq@declare}}{\noexpand\expandonce{\expandonce{\csname jlreq@heading@level@##1\endcsname}}}}%
+ \noexpand\jlreq@tempa
+ }%
+ \else
+ \eappto\jlreq@declare{{\expandonce{\jlreq@level}}}%
+ \fi
+ }{}%
+ \eappto\jlreq@headingscmds{\expandonce{\jlreq@declare}{\expandonce{\jlreq@headingsettings}}}%
+ }{#4}%
+ \edef\jlreq@do{%
+ \unexpanded{\def#3}{%
+ \expandonce{\jlreq@headingscmds}%
+ \jlreq@ifempty{#1}{}{\unexpanded{\def#1}{\expandonce{\jlreq@restoreheadings}}}%
+ }%
+ }%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+\def\jlreq@matter@counter@norestore#1#2{%
+ \def#1{}%
+ \jlreq@parsekeyval@nokey{%
+ \jlreq@parsekeyval*{
+ {value}{\appto#1{\setcounter{##1}{####1}}}
+ {the}{\eappto#1{\noexpand\def\expandonce{\csname the##1\endcsname}{\unexpanded{####1}}}}
+ }{##2}%
+ }{#2}%
+}
+
+\ifthenelse{\equal{\jlreq@article@type}{book}}{
+ \newif\if@mainmatter
+ \@mainmattertrue
+ \jlreq@jlreqsetup@add{frontmatter_pagebreak}{%
+ \edef\jlreq@frontmatter@pagebreak{\jlreq@ifempty{#1}{}{\expandonce{\csname #1\endcsname}}}%
+ }
+ \jlreq@jlreqsetup@add{frontmatter_counter}{%
+ \def\jlreq@frontmatter@counter{}%
+ \def\jlreq@tempa{}% 復帰させるカウンタ名リスト
+ \jlreq@parsekeyval@nokey{%
+ \def\jlreq@tempb{}% 中身
+ \jlreq@tempatrue % restore
+ \jlreq@parsekeyval{
+ {value}{\appto\jlreq@tempb{\setcounter{##1}{####1}}}
+ {restore}{\csname jlreq@tempa####1\endcsname}
+ {the}{\eappto\jlreq@tempb{\noexpand\def\expandonce{\csname the##1\endcsname}{\unexpanded{####1}}}}
+ }{##2}%
+ \ifjlreq@tempa
+ \epreto\jlreq@tempb{%
+ \noexpand\let\expandonce{\csname jlreq@frontmatter@savedcounter@the@##1\endcsname}\expandonce{\csname the##1\endcsname}%
+ \noexpand\edef\expandonce{\csname jlreq@frontmatter@savedcounter@value@##1\endcsname}{\unexpanded{\the\value{##1}}}%
+ }%
+ \eappto\jlreq@tempa{\ifx\jlreq@tempa\@empty\else ,\fi\unexpanded{##1}}%
+ \fi
+ \eappto\jlreq@frontmatter@counter{\expandonce{\jlreq@tempb}}%
+ }{#1}%
+ \eappto\jlreq@frontmatter@counter{\unexpanded{\def\jlreq@frontmatter@restorecounters}{\expandonce{\jlreq@tempa}}}%
+ }
+ \jlreq@jlreqsetup@add{frontmatter_heading}{\jlreq@matter@heading[\jlreq@frontmatter@restoreheadings]{jlreq@frontmatter@savedheading}{\jlreq@frontmatter@heading}{#1}}
+ \jlreq@jlreqsetup@add{frontmatter_pagestyle}{%
+ \def\jlreq@tempa{}% ページスタイル名
+ \def\jlreq@frontmatter@pagestyle{}%
+ \jlreq@tempatrue % restore
+ \jlreq@parsekeyval@nokey{%
+ \ifjlreq@parsekeyval@nokey@novalue{\def\jlreq@tempa{##1}}{%
+ \jlreq@switch{##1}{%
+ {restore}{\csname jlreq@tempa##2\endcsname}%
+ }%
+ }%
+ }{#1}%
+ \ifjlreq@tempa
+ \appto\jlreq@frontmatter@pagestyle{\let\jlreq@frontmatter@savedpagestyle\jlreq@current@pagestyle}%
+ \fi
+ \ifx\jlreq@tempa\@empty\else
+ \eappto\jlreq@frontmatter@pagestyle{\noexpand\pagestyle{\expandonce{\jlreq@tempa}}}%
+ \fi
+ }
+ \jlreq@jlreqsetup@add{frontmatter_precode}{\edef\jlreq@frontmatter@precode{\unexpanded{#1}}}
+ \jlreq@jlreqsetup@add{frontmatter_postcode}{\edef\jlreq@frontmatter@postcode{\unexpanded{#1}}}
+ \jlreq@jlreqsetup@add{frontmatter_pagination}{%
+ \def\jlreq@pagination@frontmatterstyle{arabic}%
+ \let\jlreq@pagination@mainmatterpagecommand=\pagenumbering
+ \@for\jlreq@tempa:=#1\do{%
+ \expandafter\jlreq@helper@trim\expandafter{\jlreq@tempa}{\jlreq@tempa}%
+ \jlreq@switch{\jlreq@tempa}{
+ {continuous}{%
+ \def\jlreq@pagination@mainmatterpagecommand##1{\gdef\thepage{\csname @##1\endcsname\c@page}}%
+ }
+ {independent}{\let\jlreq@pagination@mainmatterpagecommand=\pagenumbering}
+ {\edef\jlreq@pagination@frontmatterstyle{\jlreq@tempa}}
+ }%
+ }%
+ }
+ \newcommand*{\frontmatter}{%
+ \jlreq@frontmatter@precode
+ \jlreq@frontmatter@pagebreak
+ \@mainmatterfalse
+ \let\jlreq@frontmatter@savedpagestyle\@undefined
+ \jlreq@frontmatter@pagestyle
+ \jlreq@frontmatter@counter
+ \jlreq@frontmatter@heading
+ \expandafter\gdef\expandafter\thepage\expandafter{\csname @\jlreq@pagination@frontmatterstyle\endcsname\c@page}%
+ \jlreq@frontmatter@postcode
+ }
+ \def\jlreq@frontmatter@restorecounters{}
+ \def\jlreq@frontmatter@restoreheadings{}
+ \def\jlreq@frontmatter@restorecommands{}
+ \jlreq@jlreqsetup@add{mainmatter_pagebreak}{%
+ \edef\jlreq@mainmatter@pagebreak{\jlreq@ifempty{#1}{}{\expandonce{\csname #1\endcsname}}}%
+ }
+ \jlreq@jlreqsetup@add{mainmatter_pagestyle}{%
+ \edef\jlreq@mainmatter@pagestyle{\jlreq@ifempty{#1}{}{\unexpanded{\pagestyle{#1}}}}%
+ }
+ \jlreq@jlreqsetup@add{mainmatter_counter}{\jlreq@matter@counter@norestore{\jlreq@mainmatter@counter}{#1}}%
+ \jlreq@jlreqsetup@add{mainmatter_heading}{\jlreq@matter@heading{\jlreq@mainmatter@heading}{#1}}%
+ \jlreq@jlreqsetup@add{mainmatter_precode}{\edef\jlreq@mainmatter@precode{\unexpanded{#1}}}%
+ \jlreq@jlreqsetup@add{mainmatter_postcode}{\edef\jlreq@mainmatter@postcode{\unexpanded{#1}}}%
+ \jlreq@jlreqsetup@add{mainmatter_pagination}{%
+ \def\jlreq@pagination@mainmatterstyle{#1}%
+ }
+ \newcommand*{\mainmatter}{%
+ \jlreq@mainmatter@precode
+ \jlreq@mainmatter@pagebreak
+ \@mainmattertrue
+ \@ifundefined{jlreq@frontmatter@savedpagestyle}{%
+ \jlreq@mainmatter@pagestyle
+ }{%
+ \expandafter\pagestyle\expandafter{\jlreq@frontmatter@savedpagestyle}%
+ }%
+ \@for\jlreq@tempa:=\jlreq@frontmatter@restorecounters\do{%
+ \setcounter{\jlreq@tempa}{\csname jlreq@frontmatter@savedcounter@value@\jlreq@tempa\endcsname}%
+ \expandafter\let\csname the\jlreq@tempa\expandafter\endcsname\csname jlreq@frontmatter@savedcounter@the@\jlreq@tempa\endcsname
+ }%
+ \jlreq@mainmatter@counter
+ \@for\jlreq@tempa:=\jlreq@frontmatter@restoreheadings\do{\csname jlreq@frontmatter@savedheading@\jlreq@tempa\endcsname}
+ \jlreq@mainmatter@heading
+ \@for\jlreq@tempa:=\jlreq@frontmatter@restorecommands\do{%
+ \expandafter\let\csname \jlreq@tempa\expandafter\endcsname\csname jlreq@frontmatter@savedcommand@\jlreq@tempa\endcsname
+ }%
+ \expandafter\jlreq@pagination@mainmatterpagecommand\expandafter{\jlreq@pagination@mainmatterstyle}%
+ \jlreq@mainmatter@postcode
+ }
+ \jlreq@jlreqsetup@add{backmatter_pagebreak}{%
+ \edef\jlreq@backmatter@pagebreak{\jlreq@ifempty{#1}{}{\expandonce{\csname #1\endcsname}}}%
+ }
+ \jlreq@jlreqsetup@add{backmatter_pagestyle}{%
+ \edef\jlreq@backmatter@pagestyle{\jlreq@ifempty{#1}{}{\unexpanded{\pagestyle{#1}}}}%
+ }
+ \jlreq@jlreqsetup@add{backmatter_counter}{\jlreq@matter@counter@norestore{\jlreq@backmatter@counter}{#1}}%
+ \jlreq@jlreqsetup@add{backmatter_heading}{\jlreq@matter@heading{\jlreq@backmatter@heading}{#1}}
+ \jlreq@jlreqsetup@add{backmatter_precode}{\edef\jlreq@backmatter@precode{\unexpanded{#1}}}
+ \jlreq@jlreqsetup@add{backmatter_postcode}{\edef\jlreq@backmatter@postcode{\unexpanded{#1}}}
+ \jlreq@jlreqsetup@add{backmatter_pagination}{
+ \let\jlreq@pagination@backmatterpagecommand=\pagenumbering
+ \def\jlreq@pagination@backmatterstyle{arabic}%
+ \@for\jlreq@tempa:=#1\do{%
+ \expandafter\jlreq@helper@trim\expandafter{\jlreq@tempa}{\jlreq@tempa}%
+ \jlreq@switch{\jlreq@tempa}{
+ {continuous}{%
+ \def\jlreq@pagination@backmatterpagecommand##1{\gdef\thepage{\csname @##1\endcsname\c@page}}%
+ }
+ {independent}{\let\jlreq@pagination@backmatterpagecommand=\pagenumbering}
+ {\edef\jlreq@pagination@backmatterstyle{\jlreq@tempa}}
+ }%
+ }%
+ }
+ \newcommand*{\backmatter}{%
+ \jlreq@backmatter@precode
+ \jlreq@backmatter@pagebreak
+ \jlreq@backmatter@pagestyle
+ \@mainmatterfalse
+ \jlreq@backmatter@counter
+ \jlreq@backmatter@heading
+ \expandafter\jlreq@pagination@backmatterpagecommand\expandafter{\jlreq@pagination@backmatterstyle}%
+ \jlreq@backmatter@postcode
+ }
+}{}
+
+\jlreq@jlreqsetup@add{appendix_counter}{\jlreq@matter@counter@norestore{\jlreq@appendix@counter}{#1}}
+\jlreq@jlreqsetup@add{appendix_heading}{\jlreq@matter@heading{\jlreq@appendix@heading}{#1}}
+\jlreq@jlreqsetup@add{appendix_precode}{\edef\jlreq@appendix@precode{\unexpanded{#1}}}
+\jlreq@jlreqsetup@add{appendix_postcode}{\edef\jlreq@appendix@postcode{\unexpanded{#1}}}
+\newcommand*{\appendix}{%
+ \par
+ \jlreq@appendix@precode
+ \jlreq@appendix@counter
+ \jlreq@appendix@heading
+ \jlreq@appendix@postcode
+}
+
+%. その他諸々
+%.. 縦中横
+\edef\@tempa{%
+ \unexpanded{%
+ \jlreq@ifydir{\ClassError{jlreq}{\string\tatechuyoko\space is not allowed in yoko mode}{\@ehc}}{}%
+ \ifvmode\leavevmode\fi
+ }%
+ \ifx l\jlreq@engine\unexpanded{%
+ \jlreq@lastnodechar=\lastnodechar\relax
+ \ifnum\jlreq@lastnodechar>-1 \inhibitglue\fi
+ }\else\unexpanded{%
+ \ifnum\lastnodechar>-1 \inhibitglue\fi
+ \jlreq@lastnodechar=\lastnodechar\relax
+ }\fi
+}
+
+\expandafter\protected\expandafter\def\expandafter\tatechuyoko\expandafter#\expandafter1\expandafter{%
+ \@tempa
+ % 前のJFM glue
+ \ifnum\jlreq@lastnodechar>-1
+ \jlreq@calc@jfmglue{\char\jlreq@lastnodechar}{阿}%
+ \jlreq@ifgluezero\jlreq@resultskip{}{\hskip\jlreq@resultskip}%
+ \fi
+ \hbox{\yoko
+ \setbox\jlreq@tempboxa=\hbox{阿}%
+ \vrule width 0pt height \ht\jlreq@tempboxa depth \dp\jlreq@tempboxa #1}%
+ \futurelet\jlreq@nextchar\jlreq@tatechuyoko@
+}
+\def\jlreq@tatechuyoko@{%
+ \begingroup
+ \def\jlreq@do{}%
+ \jlreq@getfirsttoken@expandmacros{\jlreq@nextchar}{\jlreq@tempa}%
+ \expandafter\jlreq@ifletter\expandafter{\jlreq@tempa}{%
+ \jlreq@calc@jfmglue{阿}{\jlreq@tempa}%
+ \edef\jlreq@do{%
+ \noexpand\hskip\the\jlreq@resultskip\space
+ \noexpand\inhibitglue
+ }%
+ }{}%
+ \expandafter\endgroup
+ \jlreq@do
+}
+
+% 日にち
+\newif\if西暦
+\def\西暦{\西暦true}
+\def\和暦{\西暦false}
+% #1年#2月#3日 #4は\numberとか\kansujiとか
+\def\jlreq@wareki#1#2#3#4{%
+ \jlreq@warekiyear{#1}{#2}{#3}{#4}%
+ #4#2月#4#3日%
+}
+\def\jlreq@warekiyear#1#2#3#4{%
+ % 昭和:1989年1月7日まで
+ \ifnum0\ifnum#1<1989 1\fi\ifnum#1=1989 \ifnum#2=1 \ifnum#3<8 1\fi\fi\fi>0
+ 昭和\jlreq@warekiyear@{#1}{1926}{#4}%
+ % 平成:2019年4月末日まで
+ \else\ifnum0\ifnum#1<2019 1\fi\ifnum#1=2019 \ifnum#2<5 1\fi\fi>0
+ 平成\jlreq@warekiyear@{#1}{1989}{#4}%
+ \else
+ 令和\jlreq@warekiyear@{#1}{2019}{#4}%
+ \fi\fi
+}
+\def\jlreq@warekiyear@#1#2#3{\ifnum#1=#2 元年\else #3\numexpr#1-#2+1\relax 年\fi}
+\def\today{%
+ \if西暦
+ \jlreq@iftdir{%
+ \kansuji\year 年%
+ \kansuji\month 月%
+ \kansuji\day 日%
+ }{%
+ \number\year 年%
+ \number\month 月%
+ \number\day 日%
+ }%
+ \else
+ \jlreq@iftdir{%
+ \jlreq@wareki{\year}{\month}{\day}{\kansuji}%
+ }{%
+ \jlreq@wareki{\year}{\month}{\day}{\number}%
+ }%
+ \fi
+}
+\jlreq@jlreqsetup@add{year_style}[seireki,wareki]{%
+ \jlreq@switch{#1}{%
+ {seireki}{\西暦true}
+ {wareki}{\西暦false}
+ }
+}
+
+% 時刻
+\hour=\time \divide\hour by 60
+\minute=\numexpr\time - 60*\hour\relax
+
+%.. 定理環境
+\jlreq@saveoriginalcs{\@begintheorem}
+\jlreq@saveoriginalcs{\@opargbegintheorem}
+\def\@begintheorem#1#2{\topsep=\dimexpr\jlreq@theorem@beforeafter@space\relax
+ \trivlist\labelsep=1\zw
+ \itemindent=\dimexpr\jlreq@theorem@indent\relax
+ \item[\hskip \labelsep{\sffamily\bfseries #1\ #2}]}
+\def\@opargbegintheorem#1#2#3{\topsep=\dimexpr\jlreq@theorem@beforeafter@space\relax
+ \trivlist\labelsep=1\zw
+ \itemindent=\dimexpr\jlreq@theorem@indent\relax
+ \item[\hskip \labelsep{\sffamily\bfseries #1\ #2(#3)}]}
+\AtEndOfPackageFile*{amsthm}{%
+ \jlreq@saveoriginalcs{\proof}%
+ \jlreq@saveoriginalcs{\endproof}%
+ \edef\jlreq@do{
+ \unexpanded{\def\jlreq@proof[#1]}{%
+ \unexpanded{\labelsep=1\zw}%
+ \expandonce{\proof[{\reset@font\sffamily\bfseries #1\inhibitglue}\nopunct]}%
+ }
+ }
+ \jlreq@do
+ \def\proof{\@ifnextchar[{\jlreq@proof}{\jlreq@proof[\proofname]}}
+ \renewcommand{\proofname}{証明}
+ \jlreq@setupamsthm
+ \theoremstyle{jlreq}
+}
+\def\jlreq@setupamsthm{
+ \newtheoremstyle{jlreq}{\dimexpr\jlreq@theorem@beforeafter@space\relax}{\dimexpr\jlreq@theorem@beforeafter@space\relax}{\normalfont}{\dimexpr\jlreq@theorem@indent\relax}{\sffamily\bfseries}{}{1\zw}{\thmname{##1}\thmnumber{\ ##2}\thmnote{(##3)}}
+}
+\jlreq@jlreqsetup@add{theorem_beforeafter_space}{
+ \def\jlreq@theorem@beforeafter@space{#1}
+ \@ifpackageloaded{amsthm}{\jlreq@setupamsthm}{}
+}
+\jlreq@jlreqsetup@add{theorem_indent}{
+ \def\jlreq@theorem@indent{#1}
+ \@ifpackageloaded{amsthm}{\jlreq@setupamsthm}{}
+}
+
+
+%. デフォルト設定
+%.. 見出し
+\if@tate
+ \renewcommand{\thepart}{\jlreq@Kanji{part}}
+ \ifthenelse{\equal{\jlreq@article@type}{article}}{}{\renewcommand{\thechapter}{\jlreq@Kanji{chapter}}}
+ \renewcommand{\thesection}{\jlreq@rensuji{\@arabic\c@section}}
+ \renewcommand{\thesubsection}{\jlreq@rensuji{\@alph\c@subsection}}
+ \renewcommand{\thesubsubsection}{\jlreq@rensuji{\@arabic\c@subsubsection}}
+ \renewcommand{\theparagraph}{(\jlreq@rensuji{\@arabic\c@paragraph})}
+ \renewcommand{\thesubparagraph}{(\jlreq@rensuji{\@arabic\c@subparagraph})}
+
+ \ifthenelse{\equal{\jlreq@article@type}{article}}{
+ \NewBlockHeading{part}{0}{font={\jlreq@keepbaselineskip{\LARGE}},indent=4\zw,lines=4,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\large}}}
+ \if@twoside\ModifyHeading{part}{allowbreak_if_evenpage=true}\fi
+ }
+ {% book, report
+ \NewTobiraHeading{part}{-1}{label_format={第\thepart 部\hspace*{1\zw}},format={\null\vfill {\Huge\hspace*{2\zw}#1#2}\vspace*{2\jlreq@gol}}}
+ \NewBlockHeading{chapter}{0}{indent=2\zw,lines=6,label_format={第\thechapter 章},font={\huge},after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\Large}}}
+ \if@twoside\ModifyHeading{chapter}{allowbreak_if_evenpage=true}\fi
+ \renewcommand{\thechapter}{\jlreq@Kanji{chapter}}
+ }
+ \NewBlockHeading{section}{1}{font={\jlreq@keepbaselineskip{\Large}},indent=6\zw,lines=3,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\normalsize}}}
+ \if@twoside\ModifyHeading{section}{allowbreak_if_evenpage=true}\fi
+ \NewBlockHeading{subsection}{2}{font={\jlreq@keepbaselineskip{\large}},indent=8\zw,lines=2,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\small}}}
+ \if@twoside\ModifyHeading{subsection}{allowbreak_if_evenpage=true}\fi
+ \NewBlockHeading{subsubsection}{3}{font={\jlreq@keepbaselineskip{\normalsize}},indent=10\zw,lines=1,before_lines=1,subtitle_break=false,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},,subtitle_font={\jlreq@keepbaselineskip{\scriptsize}}}
+ \if@twoside\ModifyHeading{subsubsection}{allowbreak_if_evenpage=true}\fi
+ \NewRuninHeading{paragraph}{4}{font={\jlreq@keepbaselineskip{\normalsize}}}
+ \NewRuninHeading{subparagraph}{5}{font={\jlreq@keepbaselineskip{\normalsize}},indent=1\zw}
+\else% yoko
+ \renewcommand{\thepart}{\Roman{part}}
+ \renewcommand{\thesubsection}{\thesection .\arabic{subsection}}
+ \renewcommand{\thesubsubsection}{\thesubsection .\arabic{subsubsection}}
+ \renewcommand{\theparagraph}{\thesubsubsection .\arabic{paragraph}}
+ \renewcommand{\thesubparagraph}{\theparagraph .\arabic{subparagraph}}
+ \ifthenelse{\equal{\jlreq@article@type}{article}}{
+ \NewBlockHeading{part}{0}{font={\jlreq@keepbaselineskip{\LARGE\sffamily\bfseries}},label_format={第\thepart 部},lines=4,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\large}}}
+ \renewcommand{\thesection}{\arabic{section}}
+ }
+ {% book, report
+ \NewTobiraHeading{part}{-1}{label_format={第\thepart 部\hspace*{1\jlreq@gol}},format={\null\vfil {\Huge\sffamily\bfseries #1#2}\vfil}}
+ \NewBlockHeading{chapter}{0}{%
+ font={\jlreq@keepbaselineskip{\huge\sffamily\bfseries}},
+ label_format={第\thechapter 章},
+ lines=5,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},
+ subtitle_font={\jlreq@keepbaselineskip{\Large}}}
+ \renewcommand{\thechapter}{\arabic{chapter}}
+ \renewcommand{\thesection}{\thechapter.\arabic{section}}
+ }
+ \NewBlockHeading{section}{1}{font={\jlreq@keepbaselineskip{\Large\sffamily\bfseries}},lines=3,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\normalsize}}}
+ \NewBlockHeading{subsection}{2}{font={\jlreq@keepbaselineskip{\large\sffamily\bfseries}},lines=2,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\small}}}
+ \NewBlockHeading{subsubsection}{3}{font={\jlreq@keepbaselineskip{\normalsize\sffamily\bfseries}},lines=1,before_lines=1,subtitle_break=false,after_label_space=1\zw,second_heading_text_indent={-1\zw,1\zw},subtitle_font={\jlreq@keepbaselineskip{\scriptsize}}}
+ \NewRuninHeading{paragraph}{4}{font={\jlreq@keepbaselineskip{\normalsize\sffamily\bfseries}},indent=1\zw}
+ \NewRuninHeading{subparagraph}{5}{font={\jlreq@keepbaselineskip{\normalsize\sffamily\bfseries}},indent=2\zw}
+\fi
+
+\ifthenelse{\equal{\jlreq@article@type}{article}}{}{% book, report
+ \if@openright
+ \ModifyHeading{part}{type=naka}
+ \if@tate
+ \ModifyHeading{chapter}{pagebreak=begin_with_even_page}
+ \else
+ \ModifyHeading{chapter}{pagebreak=begin_with_odd_page}
+ \fi
+ \else
+ \ModifyHeading{part}{type=han}
+ \ModifyHeading{chapter}{pagebreak=clearpage}
+ \fi
+}
+
+%.. ページスタイル
+\RenewPageStyle{empty}{nombre={},odd_running_head={},even_running_head={}}
+\ifthenelse{\equal{\jlreq@article@type}{article}}{
+ \if@twoside
+ \NewPageStyle{headings}{odd_running_head={_subsection},even_running_head={_section}}
+ \else
+ \NewPageStyle{headings}{odd_running_head={_section},even_running_head={}}
+ \fi
+}{% book, article
+ \if@twoside
+ \NewPageStyle{headings}{odd_running_head={_section},even_running_head={_chapter}}
+ \else
+ \NewPageStyle{headings}{odd_running_head={_chapter},even_running_head={}}
+ \fi
+ \ModifyPageStyle{headings}{mark_format={_chapter={第\thechapter 章\quad #1}}}
+}
+\if@tate
+ \RenewPageStyle{plain}{nombre=\thepage,odd_running_head={},even_running_head={},clear_markcommand=false}
+ \NewPageStyle{myheadings}{nombre=\thepage,odd_running_head=\rightmark,even_running_head=\leftmark,clear_markcommand=false}
+ \if@twoside
+ \ModifyPageStyle{plain}{nombre_position={top-left}}
+ \ModifyPageStyle{headings}{nombre=\thepage,nombre_position=bottom-left,running_head_position=top-left}
+ \ModifyPageStyle{myheadings}{nombre_position=bottom-left,running_head_position=top-left}
+ \else
+ \ModifyPageStyle{plain}{nombre_position={top-center}}
+ \ModifyPageStyle{headings}{nombre=\thepage,nombre_position=bottom-center,running_head_position=top-center}
+ \ModifyPageStyle{myheadings}{nombre_position=bottom-center,running_head_position=top-center}
+ \fi
+\else% yoko
+ \RenewPageStyle{plain}{nombre=\thepage,odd_running_head={},even_running_head={},nombre_position={bottom-center},clear_markcommand=false}
+ \ModifyPageStyle{headings}{nombre=\thepage,nombre_position=bottom-center,running_head_position=top-center}
+ \NewPageStyle{myheadings}{nombre=\thepage,nombre_position=bottom-center,running_head_position=top-center,odd_running_head=\rightmark,even_running_head=\leftmark,clear_markcommand=false}
+\fi
+\ModifyPageStyle{plain}{font=\small}
+\ModifyPageStyle{headings}{font=\small}
+\ModifyPageStyle{myheadings}{font=\small}
+
+%.. 注
+\jlreqsetup{reference_mark=inline}
+\if@tate
+ \jlreqsetup{footnote_indent=1\zw}% 根拠なし
+\else
+ \jlreqsetup{footnote_indent=0pt}% (4.2.5.b)
+\fi
+\jlreqsetup{footnote_second_indent=1\zw}
+\jlreqsetup{endnote_second_indent=2\zw}
+\jlreqsetup{endnote_position=headings}
+\ifdim\marginparwidth>0pt
+ \jlreqsetup{sidenote_type=number}
+ \jlreqsetup{sidenote_symbol=*,sidenote_keyword_font={}}
+\fi
+
+%.. キャプション
+\jlreqsetup{
+ caption_font={\sffamily\bfseries},
+ caption_label_font={\sffamily\bfseries},
+ caption_after_label_space=1\zw,
+ caption_label_format={#1},
+ caption_align=center
+}
+
+%.. 箇条書き
+\if@tate
+ \renewcommand{\theenumi}{\jlreq@Kanji{enumi}}
+ \renewcommand{\theenumii}{\jlreq@rensuji{\@arabic\c@enumii}}
+ \renewcommand{\theenumiii}{\jlreq@rensuji{\@arabic\c@enumiii}}
+ \renewcommand{\theenumiv}{\jlreq@rensuji{\@arabic\c@enumiv}}
+ \newcommand{\labelenumi}{\theenumi}
+ \newcommand{\labelenumii}{\theenumii}
+ \newcommand{\labelenumiii}{\theenumiii}
+ \newcommand{\labelenumiv}{\theenumiv}
+\else
+ \renewcommand{\theenumi}{\@arabic\c@enumi}
+ \renewcommand{\theenumii}{\@alph\c@enumii}
+ \renewcommand{\theenumiii}{\@roman\c@enumiii}
+ \renewcommand{\theenumiv}{\@Alph\c@enumiv}
+ \newcommand{\labelenumi}{\theenumi.\hspace{.5\zw}}
+ \newcommand{\labelenumii}{(\theenumii)\hspace{.5\zw}}
+ \newcommand{\labelenumiii}{\theenumiii.\hspace{.5\zw}}
+ \newcommand{\labelenumiv}{\theenumiv.\hspace{.5\zw}}
+\fi
+\renewcommand{\p@enumii}{\theenumi}
+\renewcommand{\p@enumiii}{\theenumi(\theenumii)}
+\renewcommand{\p@enumiv}{\p@enumiii\theenumiii}
+
+\newcommand{\labelitemi}{\hbox to 1\zw{\hss\textbullet\hss}}
+%\newcommand{\labelitemi}{•}
+\if@tate
+ \newcommand{\labelitemii}{○}
+ \newcommand{\labelitemiii}{*}
+\else
+ \newcommand{\labelitemii}{\hbox to 1\zw{\hss\textendash\hss}}
+ \newcommand{\labelitemiii}{\hbox to 1\zw{\hss\textasteriskcentered\hss}}
+\fi
+\newcommand{\labelitemiv}{\hbox to 1\zw{\hss ・\hss}}
+
+% 見出しが一つ上のレベルからどのくらいずれているかを入れる.
+\setlength\leftmargini{2\zw}
+\setlength\leftmarginii{2\zw}
+\setlength\leftmarginiii{1\zw}
+\setlength\leftmarginiv{1\zw}
+\setlength\leftmarginv{1\zw}
+\setlength\leftmarginvi{1\zw}
+\jlreqsetup{
+ itemization_beforeafter_space={0pt,i=.5\baselineskip},
+ itemization_itemsep=0pt,
+ itemization_labelsep={0pt},
+ itemization_label_length={1\zw,i=2\zw,ii=2\zw}
+}
+
+%.. 引用
+\jlreqsetup{
+ quote_indent=2\zw,
+ quote_end_indent=0pt,
+ quote_fontsize=,
+ quote_beforeafter_space=0pt
+}
+
+%.. その他
+\ifthenelse{\equal{\jlreq@article@type}{book}}{
+ \jlreqsetup{
+ frontmatter_pagebreak = cleardoublepage,
+ frontmatter_pagestyle = {plain,restore = true},
+ frontmatter_heading = {chapter={number=false, restore = true}},
+ frontmatter_counter = {
+ figure = {the = \arabic{figure},restore = true},
+ table = {the = \arabic{table},restore = true},
+ },
+ frontmatter_precode = {},
+ frontmatter_postcode = {},
+ }
+ \jlreqsetup{
+ mainmatter_pagebreak = cleardoublepage,
+ mainmatter_counter = {
+ chapter = {value = 0},
+ },
+ mainmatter_pagestyle = {},
+ mainmatter_heading = {},
+ mainmatter_precode = {},
+ mainmatter_postcode = {},
+ }
+ \if@openright
+ \jlreqsetup{backmatter_pagebreak=cleardoublepage}
+ \else
+ \jlreqsetup{backmatter_pagebreak=clearpage}
+ \fi
+ \jlreqsetup{
+ backmatter_pagestyle = plain,
+ backmatter_counter = {
+ chapter={value = 0, the = {}},
+ figure = {value = 0, the = {\arabic{figure}}},
+ table = {value = 0, the = {\arabic{table}}}
+ },
+ backmatter_heading = {chapter = {number = false}},
+ backmatter_precode = {},
+ backmatter_postcode = {}
+ }
+ \jlreqsetup{
+ frontmatter_pagination = {independent,roman},
+ mainmatter_pagination = {arabic},
+ backmatter_pagination = {continuous,arabic},
+ }
+}{}
+\ifthenelse{\equal{\jlreq@article@type}{article}}{
+ \if@tate
+ \jlreqsetup{
+ appendix_counter = {
+ section = {value = 0, the = {\jlreq@rensuji{\Alph{section}}}},
+ subsection = {value = 0},
+ }
+ }
+ \else
+ \jlreqsetup{
+ appendix_counter = {
+ section = {value = 0, the = {\Alph{chapter}}},
+ subsection = {value = 0},
+ }
+ }
+ \fi
+ \jlreqsetup{appendix_heading = {},appendix_precode = {},appendix_postcode = {}}
+}{%book, report
+ \if@tate
+ \jlreqsetup{
+ appendix_counter = {
+ chapter = {value = 0, the = {\jlreq@rensuji{\Alph{chapter}}}},
+ }
+ }
+ \else
+ \jlreqsetup{
+ appendix_counter = {
+ chapter = {value = 0, the = {\Alph{chapter}}},
+ }
+ }
+ \fi
+ \jlreqsetup{
+ appendix_heading = {
+ chapter = {label_format = {付録\thechapter}}
+ },
+ appendix_postcode = {%
+ \ifthenelse{\equal{\jlreq@current@pagestyle}{headings}}{%
+ \def\chaptermark#1{\markboth{付録\thechapter\quad #1}{}}%
+ \ModifyPageStyle{headings}{mark_format={_chapter={付録\thechapter\quad #1}}}%
+ }{}%
+ },
+ appendix_precode = {}
+ }
+}
+\jlreqsetup{theindex_pagestyle=plain}
+\jlreqsetup{year_style=seireki}
+\jlreqsetup{theorem_beforeafter_space=1\baselineskip,theorem_indent=0pt}
+
+
+\newcommand{\contentsname}{目次}
+\newcommand{\refname}{参考文献}
+\newcommand{\indexname}{索引}
+\newcommand{\listfigurename}{図目次}
+\newcommand{\figurename}{図}
+\newcommand{\listtablename}{表目次}
+\newcommand{\tablename}{表}
+\pagestyle{plain}
+\pagenumbering{arabic}
+
+%. 最終処理
+\if@twocolumn
+ \twocolumn
+ \sloppy
+ \flushbottom
+\else
+ \onecolumn
+ \raggedbottom
+\fi
+\endinput
+
+
diff --git a/language/japanese/jlreq/jlreq.pdf b/language/japanese/jlreq/jlreq.pdf
new file mode 100644
index 0000000000..49c5ee36b0
--- /dev/null
+++ b/language/japanese/jlreq/jlreq.pdf
Binary files differ
diff --git a/language/japanese/jlreq/luajfm2pl.lua b/language/japanese/jlreq/luajfm2pl.lua
new file mode 100644
index 0000000000..5aceea506d
--- /dev/null
+++ b/language/japanese/jlreq/luajfm2pl.lua
@@ -0,0 +1,342 @@
+kpse.set_program_name("texlua","lualatex")
+
+no_jis_chars = {'⦅','〘','〖','«','〝','⦆','〙','〗','»','〟','‼','⁇','⁈','⁉','〳','〴','〵','〻','ゕ','ゖ','ㇰ','ㇱ','ㇲ','ㇳ','ㇴ','ㇵ','ㇶ','ㇷ','ㇸ','ㇹ','ㇺ','ㇻ','ㇼ','ㇽ','ㇾ','ㇿ','ㇷ゚','€','№','㏋','ℓ','㌃','㌍','㌔','㌘','㌢','㌣','㌦','㌧','㌫','㌶','㌻','㍉','㍊','㍍','㍑','㍗','㎎','㎏','㎜','㎝','㎞','㎡','㏄','ゔ','か゚','き゚','く゚','け゚','こ゚','ヷ','ヸ','ヹ','ヺ','カ゚','キ゚','ク゚','ケ゚','コ゚','セ゚','ツ゚','ト゚','゠','–'}
+
+if arg[1] == nil then
+ print('Usage: texlua luajfm2pl.lua [--noutf] <JFM for LuaTeX-ja> [<PL file name>]')
+ os.exit(0)
+end
+
+local luajfm
+if arg[1] ~= "--noutf" then
+ no_jis_chars = {}
+ luajfm = arg[1]
+ outputfile = arg[2]
+else
+ luajfm = arg[2]
+ outputfile = arg[3]
+end
+
+local jfmfile = kpse.find_file("jfm-" .. luajfm .. ".lua")
+if jfmfile == nil then
+ print("JFM " .. luajfm .. " is not found")
+ os.exit(1)
+end
+
+--. JFMロード
+jfm = nil
+luatexja = {}
+luatexja.jfont = {}
+
+function luatexja.jfont.define_jfm(j)
+ jfm = j
+end
+
+dofile(jfmfile)
+
+local fp = nil
+if outputfile == nil then
+ fp = io.stdout
+else
+ local msg
+ fp,msg = io.open(outputfile,"w")
+ if fp == nil then
+ print(msg)
+ os.exit(1)
+ end
+end
+
+
+--. 関数群
+local function merge_sort(list,from,to,comp)
+ local tmplist = {}
+ if to - from > 1 then
+ local mid = math.floor((to + from)/2)
+ merge_sort(list,from,mid,comp)
+ merge_sort(list,mid+1,to,comp)
+ local left = from
+ local right = mid + 1
+ local i = 1
+ while left <= mid or right <= to do
+ if left > mid then
+ tmplist[i] = list[right]
+ right = right + 1
+ elseif right > to then
+ tmplist[i] = list[left]
+ left = left + 1
+ elseif comp(list[right],list[left]) == true then
+ tmplist[i] = list[right]
+ right = right + 1
+ else
+ tmplist[i] = list[left]
+ left = left + 1
+ end
+ i = i + 1
+ end
+ for j = from,to do
+ list[j] = tmplist[j - from + 1]
+ end
+ elseif to - from == 1 then
+ if comp(list[to],list[from]) then
+ list[to],list[from] = list[from],list[to]
+ end
+ end
+ return list
+end
+
+function stable_sort(list,comp)
+ if comp == nil then comp = function(a,b) return a < b end end
+ return merge_sort(list,1,#list,comp)
+end
+
+local function array_uniq(t)
+ local n = 1
+ for i = 1,#t do
+ local newone = true
+ for j = 1,n - 1 do
+ if t[i] == t[j] then
+ newone = false
+ break
+ end
+ end
+ if newone == true then
+ t[n] = t[i]
+ n = n + 1
+ end
+ end
+ local m = #t
+ for i = n,m do table.remove(t) end
+ return t
+end
+
+local function exists(t,v)
+ for _,val in pairs(t) do
+ if v == val then return true end
+ end
+ return false
+end
+
+
+local function isempty(t) return next(t) == nil end
+local function isemptyornil(t) return t == nil or isempty(t) end
+
+--. JFMの改変
+-- デフォルト値の設定
+for cls,val in pairs(jfm) do
+ if type(cls) == "number" then
+ if val.width == nil then jfm[cls].width = 1 end
+ if val.height == nil then
+ if jfm.dir == 'tate' then jfm[cls].height = 0.5
+ else jfm[cls].height = 0.88 end
+ end
+ if val.depth == nil then
+ if jfm.dir == 'tate' then jfm[cls].depth = 0.5
+ else jfm[cls].depth = 0.12 end
+ end
+ if val.italic == nil then jfm[cls].italic = 0 end
+ end
+end
+
+-- charsを書き出す文字列に変換しておく.
+local no_jis_chars_hash = {}
+for _,c in ipairs(no_jis_chars) do no_jis_chars_hash[c] = true end
+
+alcharclass = nil
+noxalcharclass = nil
+
+for class,val in pairs(jfm) do
+ if type(class) ~= "number" or class == 0 then goto continue end
+ local chars = {}
+ for _,c in ipairs(val.chars) do
+ local ac = nil
+ -- 'alchar'や'nox_alchar'が入っているクラスを記憶
+ if c == 'alchar' then alcharclass = class
+ elseif c == 'nox_alchar' then noxalcharclass = class
+ elseif unicode.utf8.len(c) == 1 then ac = c
+ elseif unicode.utf8.len(c) == 2 then
+ local cs = {}
+ for _,cc in string.utfcharacters(c) do
+ table.insert(cs,cc)
+ end
+ if cs[2] == "*" then ac = cs[1] end
+ end
+ if no_jis_chars_hash[ac] ~= true then table.insert(chars,ac) end
+ end
+ chars = array_uniq(chars)
+ -- charsが空になった場合は消しておく
+ if class ~= alcharclass and class ~= noxalcharclass and isempty(chars) == true then
+ io.stderr:write("Class " .. class .. " has no char, so we omit it\n")
+ jfm[class] = nil
+ else jfm[class].chars = table.concat(chars," ") end
+ ::continue::
+end
+
+
+if alcharclass == noxalcharclass then noxalcharclass = nil end
+for _,class in ipairs({alcharclass,noxalcharclass}) do
+ if class ~= nil then
+ if jfm[class].chars == "" then
+ io.stderr:write("Class " .. class .. " has only Alchar, so we omit it\n")
+ jfm[class] = nil
+ end
+ end
+end
+
+
+-- 存在しないクラスに対するglue/kernは消す
+for _,gluekern in ipairs({"glue","kern"}) do
+ for class,val in pairs(jfm) do
+ if type(class) == "number" and val[gluekern] ~= nil then
+ for target,_ in pairs(val[gluekern]) do
+ if jfm[target] == nil then
+ io.stderr:write("Class " .. tostring(target) .. " does not exist, the corresponding " .. gluekern .. " in Class " .. tostring(class) .. " is omitted\n")
+ jfm[class][gluekern][target] = nil
+ end
+ end
+ end
+ end
+end
+
+-- glueやkernが同じ挙動であるか調べる
+function isthesamespace(gluekern,clses,c1,c2)
+ return isthesamespace_before(gluekern,c1,c2) and isthesamespace_after(gluekern,clses,c1,c2)
+end
+-- c1,c2を前とするグルーが同じか.
+function isthesamespace_before(gluekern,c1,c2)
+ -- 片方がnilの場合
+ if jfm[c1][gluekern] == jfm[c2][gluekern] then return true end
+ if jfm[c1][gluekern] == nil or jfm[c2][gluekern] == nil then return false end
+ --この段階で両方tableなはず
+ local targetclses = {} -- c1とc2のglueやkernのunion
+ for c,_ in pairs(jfm[c1][gluekern]) do table.insert(targetclses,c) end
+ for c,_ in pairs(jfm[c2][gluekern]) do table.insert(targetclses,c) end
+ targetclses = array_uniq(targetclses)
+ for _,chk in ipairs(targetclses) do
+ if jfm[c1][gluekern][chk] == jfm[c2][gluekern][chk] then goto continue end
+ if jfm[c1][gluekern][chk] == nil or jfm[c2][gluekern][chk] == nil then return false end
+ if type(jfm[c1][gluekern][chk]) == "number" or type(jfm[c2][gluekern][chk]) == "number" then return false end
+ if jfm[c1][gluekern][chk][1] ~= jfm[c2][gluekern][chk][1] then return false end
+ if gluekern == "glue" then
+ if jfm[c1][gluekern][chk][2] ~= jfm[c2][gluekern][chk][2] or jfm[c1][gluekern][chk][3] ~= jfm[c2][gluekern][chk][3] then return false end
+ end
+ ::continue::
+ end
+ return true
+end
+
+function isthesamespace_after(gluekern,clses,c1,c2)
+ for _,c in pairs(clses) do
+ if jfm[c][gluekern] == nil then goto continue end
+ if jfm[c][gluekern][c1] == jfm[c][gluekern][c2] then goto continue end
+ if jfm[c][gluekern][c1] == nil or jfm[c][gluekern][c2] == nil then return false end
+ if type(jfm[c][gluekern][c1]) == "number" or type(jfm[c][gluekern][c2]) == "number" then return false end
+ if jfm[c][gluekern][c1][1] ~= jfm[c][gluekern][c2][1] then return false end
+ if kernglue == "glue" then
+ if jfm[c][gluekern][c1][2] ~= jfm[c][gluekern][c2][2] or jfm[c][gluekern][c1][3] ~= jfm[c][gluekern][c2][3] then return false end
+ end
+ ::continue::
+ end
+ return true
+end
+
+-- 同じ挙動を示すクラスをまとめる
+local classes = {}
+for k,_ in pairs(jfm) do if type(k) == "number" then table.insert(classes,k) end end
+classes = stable_sort(classes)
+for _,from in pairs(classes) do
+ for index,to in pairs(classes) do
+ if to <= from or to == 0 or from == 0 then goto continue end
+ if jfm[from].width ~= jfm[to].width or jfm[from].height ~= jfm[to].height or jfm[from].depth ~= jfm[to].depth or jfm[from].italic ~= jfm[to].italic then goto continue end
+ if isthesamespace("glue",classes,from,to) and isthesamespace("kern",classes,from,to) then
+ io.stderr:write("Class " .. tostring(to) .. " is merged to Class " .. tostring(from) .. "\n")
+ jfm[from].chars = jfm[from].chars .. " " .. jfm[to].chars
+ jfm[to] = nil
+ classes[index] = nil
+ for _,cls in pairs(classes) do
+ if jfm[cls].glue ~= nil then jfm[cls].glue[to] = nil end
+ if jfm[cls].kern ~= nil then jfm[cls].kern[to] = nil end
+ end
+ end
+ ::continue::
+ end
+end
+
+-- 番号を連続的にする.
+-- classmaptable[JFM内クラス番号] = JPL内クラス番号
+classes = {}
+for k,_ in pairs(jfm) do if type(k) == "number" then table.insert(classes,k) end end
+classes = stable_sort(classes)
+local classmaptable = {}
+local jplclass = 1
+for _,class in ipairs(classes) do
+ if type(class) == "number" then
+ if class == 0 then classmaptable[class] = 0
+ else
+ if class ~= jplclass then
+ io.stderr:write("Class " .. tostring(class) .. " is mapped to Class " .. tostring(jplclass) .. "\n")
+ end
+ classmaptable[class] = jplclass
+ jplclass = jplclass + 1
+ end
+ end
+end
+
+
+fp:write("(COMMENT JPL file from jfm-" .. luajfm .. ".lua)\n")
+fp:write("(CODINGSCHEME TEX KANJI TEXT)\n")
+fp:write("(DIRECTION " .. string.upper(jfm.dir) .. ")\n")
+-- fp:write("(DESIGNSIZE R 10.0)\n")
+fp:write("(FONTDIMEN \n")
+fp:write(" (SLANT R 0.0)\n")
+fp:write(" (SPACE R " .. tostring(jfm.kanjiskip[1]) .. ")\n")
+fp:write(" (STRETCH R " .. tostring(jfm.kanjiskip[2]) .. ")\n")
+fp:write(" (SHRINK R " .. tostring(jfm.kanjiskip[3]) .. ")\n")
+fp:write(" (XHEIGHT R " .. tostring(jfm.zh) .. ")\n")
+fp:write(" (QUAD R " .. tostring(jfm.zw) .. ")\n")
+fp:write(" (EXTRASPACE R " .. tostring(jfm.xkanjiskip[1]) .. ")\n")
+-- 下二つはFONTDIMENの下で良いのかな?
+fp:write(" (EXTRASTRETCH R " .. tostring(jfm.xkanjiskip[2]) .. ")\n")
+fp:write(" (EXTRASHRINK R " .. tostring(jfm.xkanjiskip[3]) .. ")\n")
+fp:write(")\n")
+
+classes = {}
+for k,_ in pairs(jfm) do if type(k) == "number" then table.insert(classes,k) end end
+classes = stable_sort(classes,function(a,b) return classmaptable[a] < classmaptable[b] end)
+
+for _,class in ipairs(classes) do
+ if class ~= 0 then
+ fp:write("(CHARSINTYPE D " .. tostring(classmaptable[class]) .. "\n " .. jfm[class].chars .. "\n)\n")
+ end
+ fp:write("(TYPE D " .. tostring(classmaptable[class]) .. "\n")
+ fp:write(" (CHARWD R " .. tostring(jfm[class].width) .. ")\n")
+ fp:write(" (CHARHT R " .. tostring(jfm[class].height) .. ")\n")
+ fp:write(" (CHARDP R " .. tostring(jfm[class].depth) .. ")\n")
+ fp:write(" (CHARIC R " .. tostring(jfm[class].italic) .. ")\n")
+ fp:write(")\n")
+ ::continue::
+end
+
+fp:write("(GLUEKERN\n")
+for _,class in ipairs(classes) do
+ if (jfm[class].glue == nil or isempty(jfm[class].glue) == true) and (jfm[class].kern == nil or (type(jfm[class].kern) == "table" and isempty(jfm[class].kern) == true)) then goto continue end
+ fp:write(" (LABEL D " .. tostring(classmaptable[class]) .. ")\n")
+ if jfm[class].glue ~= nil then
+ for _,targetcls in ipairs(classes) do
+ if jfm[class].glue[targetcls] ~= nil then
+ fp:write(" (GLUE D " .. tostring(classmaptable[targetcls]) .. " R " .. tostring(jfm[class].glue[targetcls][1]) .. " R " .. tostring(jfm[class].glue[targetcls][2]) .. " R " .. tostring(jfm[class].glue[targetcls][3]) .. ")\n")
+ end
+ end
+ end
+ if jfm[class].kern ~= nil then
+ for _,targetcls in ipairs(classes) do
+ if jfm[class].kern[targetcls] ~= nil then
+ fp:write(" (KRN D " .. tostring(classmaptable[targetcls]) .. " R ")
+ if type(kernval) == "number" then fp:write(tostring(jfm[class],kern[targetcls]) .. ")\n")
+ else fp:write(tostring(jfm[class].kern[targetcls][1]) .. ")\n") end
+ end
+ end
+ end
+ fp:write(" (STOP)\n")
+ ::continue::
+end
+fp:write(")\n")
diff --git a/language/japanese/jlreq/make_variant_jfm.lua b/language/japanese/jlreq/make_variant_jfm.lua
new file mode 100644
index 0000000000..e91e85cc33
--- /dev/null
+++ b/language/japanese/jlreq/make_variant_jfm.lua
@@ -0,0 +1,177 @@
+kpse.set_program_name("texlua","lualatex")
+require('lualibs')
+
+function burasage(t)
+ t = table.fastcopy(t)
+ -- 句読点の幅を0にして,句読点に続くglueを句読点の幅だけ増やす.
+ for _,class in ipairs({6,7}) do
+ local width = t[class].width
+ t[class].width = 0
+ -- 句読点を前とするJFMはすべて定義されていることを仮定.
+ if t[class].glue ~= nil then
+ for key,_ in pairs(t[class].glue) do
+ t[class].glue[key][1] = t[class].glue[key][1] + width
+ end
+ end
+ if t[class].kern ~= nil then
+ for key,val in pairs(t[class].kern) do
+ if type(val) == "table" then
+ t[class].glue[key][1] = t[class].glue[key][1] + width
+ else
+ t[class].glue[key] = t[class].glue[key] + width
+ end
+ end
+ end
+ end
+ return t
+end
+
+function zenkaku_kakko(t)
+ t = table.fastcopy(t)
+ -- 開き括弧のwidthを0.5増やす
+ t[1].width = t[1].width + 0.5
+ for cls,val in pairs(t) do
+ if type(cls) ~= "number" then goto continue end
+ if t[cls].glue ~= nil and t[cls].glue[1] ~= nil then
+ t[cls].glue[1][1] = t[cls].glue[1][1] - 0.5
+ end
+ if t[cls].kern ~= nil and t[cls].kern[1] ~= nil then
+ if type(t[cls].kern[1]) == "table" then
+ t[cls].kern[1][1] = t[cls].kern[1][1] - 0.5
+ else
+ t[cls].kern[1] = t[cls].kern[1] - 0.5
+ end
+ end
+ ::continue::
+ end
+ return t
+end
+
+function tate(t)
+ t = table.fastcopy(t)
+ t.dir = 'tate'
+ for key,_ in pairs(t) do
+ if type(key) == "number" then
+ t[key].height = 0.5
+ t[key].depth = 0.5
+ end
+ end
+ return t
+end
+
+function to_pl(t)
+ t = table.fastcopy(t)
+ -- 空きの第四段階は消す
+ for cl1,val in pairs(t) do
+ if type(cl1) == "number" then
+ for cl2,glue in pairs(val.glue) do
+ if glue.priority ~= nil and glue.priority[1] < 0 then
+ t[cl1].glue[cl2][2] = 0
+ end
+ end
+ end
+ end
+ -- LuaTeX-jaのJFMではalcharが使えることに由来する補正
+ t[4].glue[0] = nil
+ return t
+end
+
+-- jfmのテーブル,ファイル名
+function make_jfmfile(t,f)
+ table.tofile(f,t,"local jfm")
+ local fp = io.open(f,"a")
+ fp:write("luatexja.jfont.define_jfm(jfm)\n")
+ fp:close()
+end
+
+function tolf(file)
+ local fp = io.open(file,"r")
+ local s = "";
+ for l in fp:lines() do
+ s = s .. l .. "\n";
+ end
+ fp:close();
+ fp = io.open(file,"wb")
+ fp:write(s);
+ fp:close();
+end
+
+local originaljfm = "jlreq"
+
+local jfmfile = kpse.find_file("jfm-" .. originaljfm .. ".lua")
+if jfmfile == nil then
+ print("JFM " .. originaljfm .. " is not found")
+ os.exit(1)
+end
+
+jfm = nil
+luatexja = {}
+luatexja.jfont = {}
+
+function luatexja.jfont.define_jfm(j)
+ jfm = j
+end
+
+dofile(jfmfile)
+
+make_jfmfile(to_pl(jfm),"jfm-" .. originaljfm .. "-pl.lua")
+make_jfmfile(to_pl(burasage(jfm)),"jfm-b" .. originaljfm .. "-pl.lua")
+make_jfmfile(to_pl(zenkaku_kakko(jfm)),"jfm-z" .. originaljfm .. "-pl.lua")
+make_jfmfile(to_pl(burasage(zenkaku_kakko(jfm))),"jfm-bz" .. originaljfm .. "-pl.lua")
+make_jfmfile(to_pl(tate(jfm)),"jfm-" .. originaljfm .. "v-pl.lua")
+make_jfmfile(to_pl(burasage(tate(jfm))),"jfm-b" .. originaljfm .. "v-pl.lua")
+make_jfmfile(to_pl(zenkaku_kakko(tate(jfm))),"jfm-z" .. originaljfm .. "v-pl.lua")
+make_jfmfile(to_pl(burasage(zenkaku_kakko(tate(jfm)))),"jfm-bz" .. originaljfm .. "v-pl.lua")
+
+local jfm = tate(jfm)
+local file = "jfm-" .. originaljfm .. "v.lua"
+table.tofile(file,jfm,"local jfm")
+local fp = io.open(file,"a")
+fp:write([[
+local function add_space(before,after,glueorkern,space,ratio)
+ if jfm[before][glueorkern] == nil then jfm[before][glueorkern] = {} end
+ if jfm[before][glueorkern][after] == nil then jfm[before][glueorkern][after] = {0} end
+ local origratio = jfm[before][glueorkern][after].ratio
+ if origratio == nil then origratio = 0.5 end
+ jfm[before][glueorkern][after].ratio = (jfm[before][glueorkern][after][1] * origratio + space * ratio) / (jfm[before][glueorkern][after][1] + ratio)
+ jfm[before][glueorkern][after][1] = jfm[before][glueorkern][after][1] + space
+end
+
+if jlreq ~= nil then
+ if type(jlreq.open_bracket_pos) == "string" then
+ local r = jlreq.open_bracket_pos:find("_")
+ local danraku = jlreq.open_bracket_pos:sub(1,r - 1)
+ local orikaeshi = jlreq.open_bracket_pos:sub(r + 1)
+
+ -- 折り返し行頭の開き括弧を二分下げる……つもり
+ if orikaeshi == "nibu" then
+ -- widthを二分増やし,その代わりJFMグルーを二分減らす
+ jfm[1].width = jfm[1].width + 0.5
+ for k,v in pairs(jfm) do
+ if type(k) == "number" then
+ add_space(k,1,"glue",-0.5,1)
+ end
+ end
+ end
+
+ -- 段落行頭の下げ
+ if danraku == "zenkakunibu" then
+ add_space(90,1,"glue",0.5,1)
+ elseif danraku == "nibu" then
+ add_space(90,1,"glue",-0.5,1)
+ end
+ end
+
+ -- ぶら下げ組を有効にする.
+ if jlreq.burasage == true then
+ for _,class in ipairs({6,7}) do
+ table.insert(jfm[class].end_adjust,-0.5)
+ end
+ end
+end
+luatexja.jfont.define_jfm(jfm)
+]])
+fp:close()
+
+tolf(file);
+
diff --git a/language/japanese/jsclasses b/language/japanese/jsclasses
new file mode 120000
index 0000000000..c3c87e3696
--- /dev/null
+++ b/language/japanese/jsclasses
@@ -0,0 +1 @@
+../../macros/latex/contrib/jsclasses \ No newline at end of file
diff --git a/language/japanese/jtex/00NEWS b/language/japanese/jtex/00NEWS
new file mode 100644
index 0000000000..8cb147d71d
--- /dev/null
+++ b/language/japanese/jtex/00NEWS
@@ -0,0 +1,148 @@
+From: sakurai@math.s.chiba-u.ac.jp (SAKURAI Takafumi)
+Newsgroups: fj.comp.texhax,fj.sources.d
+Subject: NTT JTeX 1.6 release
+Date: 21 Jun 1995 18:48:53 GMT
+Organization: Chiba University
+Message-ID: <SAKURAI.95Jun22034853@goedel.math.s.chiba-u.ac.jp>
+
+$B:y0f(B@$B@iMUBg$G$9!#(B
+
+NTT JTeX 1.6$B$r8x3+$7$^$9!#(B
+ ftp:/ftp.math.s.chiba-u.ac.jp/tex/jtex-1.6
+$B$+$i(Banonymous ftp$B$G$-$^$9!#$I$N%U%!%$%k$r(Bftp$B$9$l$P$h$$$+$O(BREADME$B$r(B
+$BFI$s$G2<$5$$!#(B
+ JTeX$B$NItJ,$O(B1.6-beta$B$HJQ$o$C$F$J$$!#(B
+ (TeX 3.1415 / web2c 6.1 $B$r%Y!<%9$K$7$F$$$^$9!#(B)
+ JLaTeX2e$B$r(B <1994/12/01> patchlevel 3 $B$K4p$E$$$?$b$N$H$7$?!#(B
+ JBibTeX$B$r2C$($?!#(B
+$B$H$J$C$F$$$^$9!#(B
+(LaTeX2e <1995/06/01> $B$,$b$&$9$0=P$k$@$m$&$H$$$&$3$N;~4|$K$3$N%"%J%&%s%9(B
+$B$r$9$k$N$O%?%$%_%s%0$,0-$$$N$G$9$,!"(BUNIX magazine 7$B7n9f$N!V(BInside DVI -> PS$B!W(B
+$B$K<!9f$O(BJLaTeX2e$B$N%$%s%9%H!<%k$D$$$F2r@b$9$k$H$$$&M=9p$,$"$C$?$N$G(Bftp$B$,(B
+$BA}$($k$@$m$&$H$$$&M=A[$H!"?7$7$$(BLaTeX2e$B$,=P$F$b$9$0$KBP1~$G$-$k$H$O8B$i(B
+$B$J$$$H$$$&M=A[$K4p$E$$$F!"$3$N%"%J%&%s%9$r$7$^$9!#(B)
+
+$B<B$O(B4$B7n>e=\$+$i(BNTT JTeX 1.6$B$r(Banonymous ftp$B$K$R$C$=$jCV$$$F$$$^$7$?!#(B
+$B$9$G$K(Bftp$B$5$l$?J}$b$$$i$C$7$c$k$N$G$9$,!"0J2<$G=R$Y$kLdBjE@$,$"$j(B
+$B$^$7$?$N$G!"?=$7Lu$"$j$^$;$s$,(B6$B7n(B21$BF|0JA0$K(Bftp$B$5$l$?J}$O!"(B00README$B$r(B
+$B$^$:(Bftp$B$7$F$=$l$rFI$_!"(BREADME$B$*$h$SI,MW$J%U%!%$%k$r(Bftp$B$7$F=$@5$r$*4j$$(B
+$B$7$^$9!#(B($B$b$A$m$s$3$l$+$i?7$?$K(Bftp$B$9$k>l9g$O!"(BREADME$B$K=q$$$F$"$k%U%!%$%k(B
+$B$@$1$G==J,$G$9!#(B)
+
+$B>/$7A0$K(Bfj.comp.texhax$B$G$b<ALd$,$"$j$^$7$?$,!"(BJLaTeX2e$B$,%Y!<%9$K$7$F(B
+$B$$$?(BLaTeX2e$B$X$N%j%s%/$,4V0c$C$F$$$?;~4|$,$"$C$?$N$G$&$^$/(BJLaTeX2e$B$r(B
+$B:n$l$J$$>l9g$,$"$j$^$9!#(B
+$B$^$?!"(BASCII$BF|K\8l(BTeX$B$H$N(Bcompatibility$B$N$?$a$K(B \min $B$H$$$&(Bcommand$B$r(B
+$BDj5A$7$F$*$-$7$?$,!"(Bmath mode$B$K$*$1$k(B \min (minimun) $B$H$V$D$+$k$H$$$&(B
+$B%P%0$,$"$j$^$9!#(B(ASCII$BF|K\8l(BTeX$B$G$bF1MM$N;vBV$,5/$3$j$^$9!#(B)
+$B$3$l$O>/$7A0$K0k:j$5$s$K;XE&$5$l$?$N$G$9$,!"=$@5$7$?$b$N(B(math mode$B$H(B
+$B$=$&$G$J$$$H$-$K1~$8$F?6Iq$$$rJQ$($k(B)$B$r(Bftp$B$KCV$$$F$*$/$N$rK:$l$F(B
+$B$$$^$7$?!#(B
+
+ $B:y0f5.J8(B(sakurai@math.s.chiba-u.ac.jp)
+
+--------
+From: sakurai@math.s.chiba-u.ac.jp (SAKURAI Takafumi)
+Newsgroups: fj.comp.texhax
+Subject: Re: can't install jtex-1.6
+Date: 25 Jul 1995 17:18:45 GMT
+Organization: Chiba University
+Message-ID: <SAKURAI.95Jul26021845@goedel.math.s.chiba-u.ac.jp>
+
+$B:y0f(B@$B@iMUBg$G$9!#(B
+
+In article <3v2a06$mg6@i-group.hokkyodai.ac.jp> SUGAWARA@atson.iwa.hokkyodai.ac.jp
+ (Sugawara / =?ISO-2022-JP?B?GyRCP3s4NiEhN3IbKEo=?=) writes:
+
+ > unix magazine $B$N#87n9f$r;29M$K$7$J$,$i(Bjtex-1.6$B$r%$%s%9%H!<%k$7$F$$$k$N$G$9$,(B
+ > web2c-6.1j$B$J$k%G%#%l%/%H%j$K0\F0$7$F(Bmake$B$H$d$j$^$7$?$H$3$m(B
+ > .........
+ > make: $BCWL?E*$J%(%i!<(B: $B%3%^%s%I<:GT!#%?!<%2%C%H(B `kanji.o'
+
+configure$B$7$J$$$G(Bmake$B$7$^$7$?$M!#2r@b$r$A$c$s$HFI$_$^$7$g$&!#(B
+($B$I$&$;(Bconfigure$B$G=q$-$+$($i$l$k$+$i$H;W$C$F8E$$(BMakefile$B$rCV$$$?(B
+$B$^$^$K$7$?$N$O$^$:$+$C$?$h$&$G$9!#(B)
+
+$B$A$J$_$K!"(Bmake clean $B$7$F$b(BSunOS$B$N(Bmake$B$G$O>C$($k$Y$-%U%!%$%k$,A4It$O(B
+$B>C$($^$;$s!#(B($BA4It$NHG$K$D$$$F$=$&$G$"$k$+$I$&$+$O$o$+$j$^$;$s$,!"(B
+$B>/$J$/$H$b(BSolaris1$B$K$b(B2$B$K$b$=$&$$$&(Bmake$B$r;}$D$b$N$,$"$j$^$9!#(B)
+$B$=$&$$$&$H$-$O!"(B
+ GNU make $B$r;H$&(B ($BB?J,(B4.4BSD$B$N(Bmake$B$b2D(B)
+ Makefile$B$r8+$F<j$G>C$9(B
+ $B%=!<%9$rA4It>C$7$F$b$&0lEYE83+$9$k(B
+$B$N$$$:$l$+$r9T$J$C$F2<$5$$!#(B
+
+ $B:y0f5.J8(B(sakurai@math.s.chiba-u.ac.jp)
+
+--------
+From: sakurai@math.s.chiba-u.ac.jp (SAKURAI Takafumi)
+Newsgroups: fj.comp.texhax
+Subject: jtex-1.6 on Solaris 2.X
+Date: 26 Jul 1995 09:01:46 GMT
+Organization: Chiba University
+Message-ID: <SAKURAI.95Jul26180146@goedel.math.s.chiba-u.ac.jp>
+
+$B:y0f(B@$B@iMUBg$G$9!#(B
+
+jtex-1.6$B$,$&$^$/(Bmake$B$G$-$J$$$H$$$&AjCL$r%K%e!<%9$d%a!<%k$G<u$1$F!"(B
+$B$=$NCf$K$O(Bconfigure$B$r$d$C$F$J$$$N$,860x$H;W$o$l$k$b$N$,$$$/$D$+(B
+$B$"$j$^$7$?!#C1$J$k$&$C$+$j%_%9$@$H;W$C$F$$$?$N$G$9$,!"<B$O!"(B
+Solaris2.X$B$N>l9g$O(Bconfigure$B$,$&$^$/$$$+$J$$!"$H$$$&$3$H$,860x$@$C$?$j(B
+$B$7$^$9!#$=$7$F$=$N??$N860x$O!"(B
+ configure$B$OIaDL$N(B(BSD$B%9%?%$%k$N$H$$$&$Y$-$+(B)install$B$,(B
+ $B$J$$$H$-$O!"<+A0$N(Binstall.sh$B$H$$$&(Bscript$B$r;H$&$h$&$K(B
+ $B$7$F$$$k$,!"$=$N(Binstall.sh$B$r(Bweb2c-6.1j.tar.gz$B$K(B
+ $BF~$l$F$J$+$C$?(B
+$B$H$$$&$3$H$G$7$?!#?=$7Lu$"$j$^$;$s$G$7$?!#(B($BCf86$5$s(B@$B9-Bg!"8f;XE&(B
+$B$"$j$,$H$&$4$6$$$^$7$?!#(B)
+
+$B$H$$$&$3$H$G!"(Binstall.sh$B$rDI2C$9$k$?$a(B
+ ftp://ftp.math.s.chiba-u.ac.jp/tex/jtex-1.6/web2c-6.1j-add1.tar.gz
+$B$rCV$-$^$7$?!#(Bweb2c-6.1j.tar.gz$B$rE83+$7$?$N$HF1$8(Bdirectory$B$GE83+$7$F(B
+$B2<$5$$!#(B(web2c-6.1j.tar.gz$B$b:n$jD>$7!"(Bconfigure$B$K$h$C$F:n$i$l$k(BMakefile$B$O(B
+$B=|$$$F$*$-$^$7$?!#(B) autoconf$B$KF~$C$F$$$k(Binstall.sh$B$r(B .../web2c-6.1j/web2c
+$B$K%3%T!<$7$F$b$+$^$$$^$;$s!#(B
+
+Solaris2.X$B$r;H$C$F$$$kJ}!"$^$?(Bconfigure$B$r$7$F$$$k:GCf$K%(%i!<$,=P$?!"(B
+$B$H$$$&J}$O>e5-$NBP=h$r$7$?>e$G$d$jD>$7$F2<$5$$!#(Binstall.sh$B$,860x$G(B
+configure$B$K<:GT$7$?>l9g!"$?$H$($P(BRANLIB$B$,@_Dj$5$l$F$J$$!"$H$$$&$3$H$b(B
+$B5/$3$j$^$9$N$G!"$=$&$$$&>I>u$K?4Ev$?$j$N$"$kJ}$bBP=h$7$F2<$5$$!#(B
+
+$B$A$J$_$K!"JL5-;v(B(<SAKURAI.95Jul26021845@goedel.math.s.chiba-u.ac.jp>)$B$G(B
+$B=q$$$?(Bmake$B$N7o$O$3$l$H$OFHN)$G$9!#(Bmake distclean $B$9$k$H$-$K$O5$$rIU$1$F(B
+$B2<$5$$!#(B
+
+ $B:y0f5.J8(B(sakurai@math.s.chiba-u.ac.jp)
+
+--------
+From: sakurai@math.s.chiba-u.ac.jp (SAKURAI Takafumi)
+Newsgroups: fj.comp.texhax
+Subject: Re: jtex-1.6 on Solaris 2.X
+Date: 05 Aug 1995 18:20:28 GMT
+Organization: Chiba University
+Message-ID: <SAKURAI.95Aug6032028@goedel.math.s.chiba-u.ac.jp>
+
+$B:y0f(B@$B@iMUBg$G$9!#(B
+
+Solaris2.X$B$G$N(Bjtex-1.6$B$N%3%s%Q%$%k$K4X$7$F0J2<$N$h$&$K=q$-$^$7$?$,!"(B
+$BIT==J,$G$7$?!#$9$_$^$;$s!#(B
+
+In article <SAKURAI.95Jul26180146@goedel.math.s.chiba-u.ac.jp> sakurai@math.s.chiba-u.ac.jp (SAKURAI Takafumi) writes:
+
+ > Solaris2.X$B$N>l9g$O(Bconfigure$B$,$&$^$/$$$+$J$$!"$H$$$&$3$H$,860x$@$C$?$j(B
+ > $B$7$^$9!#$=$7$F$=$N??$N860x$O!"(B
+ > configure$B$OIaDL$N(B(BSD$B%9%?%$%k$N$H$$$&$Y$-$+(B)install$B$,(B
+ > $B$J$$$H$-$O!"<+A0$N(Binstall.sh$B$H$$$&(Bscript$B$r;H$&$h$&$K(B
+ > $B$7$F$$$k$,!"$=$N(Binstall.sh$B$r(Bweb2c-6.1j.tar.gz$B$K(B
+ > $BF~$l$F$J$+$C$?(B
+ > $B$H$$$&$3$H$G$7$?!#(B
+
+$B$3$l$@$1$G$O(Binstall$B$K4X$9$k(Bconfiguration$B$,$A$c$s$H$G$-$^$;$s!#(B
+($B;d$,;H$C$?(Bautoconf 1.11$B$N%P%0$J$N$G$9$,!#(B)
+$B$=$l$G>/$7>.:Y9)$N=$@5$J$N$G$9$,!"$H$j$"$($:(B
+ ftp://ftp.math.s.chiba-u.ac.jp/tex/jtex-1.6/web2c-6.1j-add2.tar.gz
+$B$rCV$-$^$7$?!#(B(web2c-6.1j.tar.gz$B$b:n$jD>$7$^$7$?!#(B)
+web2c-6.1j.tar.gz$B$rE83+$7$?$N$HF1$8(Bdirectory$B$GE83+$7$F!"(B./configure $B$+$i(B
+$B$d$jD>$7$F2<$5$$!#(B
+
+ $B:y0f5.J8(B(sakurai@math.s.chiba-u.ac.jp) ---- Solaris2.X$B$N$J$$Jk$i$7(B
diff --git a/language/japanese/jtex/00README b/language/japanese/jtex/00README
new file mode 100644
index 0000000000..8b1d1f0bc8
--- /dev/null
+++ b/language/japanese/jtex/00README
@@ -0,0 +1,28 @@
+1995$BG/(B7$B7n(B26$BF|(B17:52$B0JA0$K(Bweb2c-6.1j.tar.gz$B$r(Bftp$B$5$l$?J}$O!"(B
+web2c-6.1j-add1.tar.gz$B$r(Bftp$B$7$FF1$8(Bdirectory$B$GE83+$7$F2<$5$$!#(B
+(00NEWS$B;2>H!#(B)
+
+1995$BG/(B6$B7n(B21$BF|0JA0$K$3$N(Bdirectory(jtex-1.6)$B$+$i(Bftp$B$5$l$?J}$O!"(B
+$B0J2<$N>r7o$K=>$C$F(B(1),(2),(3)$B$^$?$O(B(2),(3)$B$r(Bftp$B$7$F2<$5$$!#(B
+(jtex-1.6-beta$B$+$i(Bftp$B$5$l$?J}$O!"%*%j%8%J%k$N(BTeX$B$N%U%!%$%k0J30$O(B
+README$B$rFI$s$G(Bftp$B$7D>$7$F2<$5$$!#(B)
+
+4$B7n(B27$BF|0JA0$K(Bftp
+ (1) base.tar.gz $B$^$?$O(B unpacked.tar.gz
+6$B7n(B21$BF|0JA0$K(Bftp
+ (2) lib-6.9.tar.gz $B$*$h$S(B lib-6.9-add1.tar.gz $B$*$h$S(B jlib-add1.tar.gz
+ (3) jlatex2e-add1.tar.gz
+
+(1)$B$O(B1994/12/03 patchlevel 3$B$N(BLaTeX2e$B$N%=!<%9$G$9!#(B
+(2)$B$O(B3$B$D6&(Blib-6.8.tar.gz$B$HF1$8%G%#%l%/%H%j$GE83+$7$^$9$,!">e=q$-$O(B
+$B$7$J$$$[$&$,0BA4$G$9$N$G(B($B$?$@$7K\Ev$KITET9g$J$3$H$,5/$3$k$+$I$&$+$O(B
+$BL$3NG'$G$9(B)$B!"$9$G$K?7$?$J%U%!%$%k$r%$%s%9%H!<%k$7$F$$$k>l9g$OLLE]$G$9$,(B
+$B$=$l$r%;!<%V$7$F!"4XO"$9$k%U%!%$%k$r$9$Y$F:o=|$7(B
+ lib-6.9.tar.gz lib-6.9-add1.tar.gz jlib.tar.gz jlib-add1.tar.gz
+ $B%;!<%V$7$?%U%!%$%k(B
+$B$N=g$KE83+$7$F2<$5$$!#(B(jlib.tar.gz$B$O$9$G$K(Bftp$B$7$F$"$k$O$:$N$b$N$G$9!#(B
+$B?7$?$K(Bftp$B$9$k$J$i(Bjlib-add1.tar.gz$B$OITMW$G$9!#(B)
+(3)$B$O(B \min $B$N%P%0$r=$@5$9$k$b$N$G$9!#(Bjlatex2e.tar.gz$B$rE83+$7$?(B
+$B%G%#%l%/%H%j$GE83+$7$F2<$5$$!#(Bjlatex.ltx$B$,>e=q$-$5$l$^$9!#(B
+
+$B0J>e$N:n6H$r9T$J$C$?8e!"(Bfmt$B%U%!%$%k$r:n$jD>$7$F2<$5$$!#(B
diff --git a/language/japanese/jtex/README b/language/japanese/jtex/README
new file mode 100644
index 0000000000..0be4ceaab5
--- /dev/null
+++ b/language/japanese/jtex/README
@@ -0,0 +1,26 @@
+JTeX 1.6 (JTeX based on TeX 3.1415 / web2c 6.1)
+
+web2c-6.1j.tar.gz, jlib.tar.gz, jlatex2e.tar.gz$B$r(Bftp$B$7$F2<$5$$!#(B
+$B$=$NB>$K!"%*%j%8%J%k$N(BTeX$B$N%=!<%9$G$"$k(Bweb2c-6.1.tar.gz, web-6.1.tar.gz,
+lib-6.9.tar.gz$B$,I,MW$G$9!#;}$C$F$$$J$1$l$P(Bftp$B$7$F2<$5$$!#(B(unixtex.ftp$B;2>H!#(B)
+lib-6.9-add1.tar.gz$B$O(Blib-6.9.tar.gz$B$r(Bupdate$B$9$k$?$a$N$b$N$G$9$N$G!"(B
+$B$3$l$b(Bftp$B$7$F2<$5$$!#(B
+
+jlatex2e.tar.gz$B$O(BJLaTeX2e$B$N%=!<%9$G$9!#<B9T;~$KI,MW$J%U%!%$%k$O(B
+jlib.tar.gz$B$K4^$^$l$F$$$^$9$,!"(Bjlatex2e.tar.gz$B$bF1;~$K;}$C$F$$$/$3$H(B
+$B$rG[I[>r7o$K4^$a$F$$$^$9!#>\$7$/$O(Bjlatex2e.tar.gz$B$rE83+$7$FF@$i$l$k(B
+jlatex2e/base/jlatex.txt$B$rFI$s$G2<$5$$!#(B
+$B%*%j%8%J%k$N(BLaTeX2e$B$N%=!<%9$O(Bbase.tar.gz$B$^$?$O(Bunpacked.tar.gz$B$G$9!#(B
+(unpacked.tar.gz$B$O(Bbase.tar.gz$B$+$i@8@.$5$l$k%U%!%$%k$r4^$s$G$$$^$9!#(B)
+$B$3$A$i$b<B9T;~$KI,MW$J%U%!%$%k$O(Blib-6.9.tar.gz$B$K4^$^$l$F$$$^$9!#(B
+$B$3$A$i$OF1;~$K%=!<%9$r;}$C$F$$$/$3$H$OG[I[>r7o$K$O4^$^$l$F$J$$$G$9$,!"(B
+$B%=!<%9$N$$$:$l$+$b;}$C$F$f$/$3$H$r$*4+$a$7$^$9!#(B
+$B$?$@$7!"(Bbase.tar.gz$B$*$h$S(Bunpacked.tar.gz$B$N(BLaTeX2e$B$O(B <1994/12/01> patchlevel 3
+$B$G$9$,!"(Blib-6.9.tar.gz$B$K4^$^$l$k(BLaTeX2e$B$O(B <1994/12/01> $B$G$9!#$=$3$G!"(B
+lib-6.9.tar.gz$B$rE83+$7$?(Bdirectory$B$G(Blib-6.9-add1.tar.gz$B$rE83+$9$l$P(B
+$BI,MW$J%U%!%$%k$,(Bupdate$B$5$l$k$h$&$K$7$F$*$-$^$7$?!#(B
+
+$B%*%j%8%J%k$N(BTeX$B$r:n$C$?$3$H$,$"$l$P3F(B.tar.gz$B$r$I$N$h$&$KE83+$9$l$P$h$$$+(B
+$B8+Ev$,$D$/$G$7$g$&$,!"$=$&$G$J$$?M$O$^$:(Bweb2c-6.1j.tar.gz$B$rE,Ev$J%G%#%l%/(B
+$B%H%j$GE83+$7$F2<$5$$!#$9$k$H(Bweb2c-6.1j$B$H$$$&(Bdirectory$B$,$G$-$k$N$G!"$=$3$K(B
+$B$"$k(BREADME.JTeX$B$rFI$s$G2<$5$$!#(B
diff --git a/language/japanese/platex-tools/LICENSE b/language/japanese/platex-tools/LICENSE
new file mode 100644
index 0000000000..99a0c323d1
--- /dev/null
+++ b/language/japanese/platex-tools/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2016-2018 Hironobu Yamashita
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/platex-tools/Makefile b/language/japanese/platex-tools/Makefile
new file mode 100644
index 0000000000..a1bc26e10a
--- /dev/null
+++ b/language/japanese/platex-tools/Makefile
@@ -0,0 +1,28 @@
+KANJI = -kanji=utf8
+FONTMAP = -f ipaex.map -f ptex-ipaex.map
+TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
+
+all: plarray.pdf plextarray.pdf plextdelarray.pdf \
+ pxatbegshi.pdf pxftnright.pdf pxmulticol.pdf \
+ pxeverysel.pdf pxeveryshi.pdf
+
+.SUFFIXES: .tex .dvi .pdf
+%.dvi: %.tex %.sty
+ platex $(KANJI) $<
+ platex $(KANJI) $<
+ rm *.aux *.log
+.dvi.pdf:
+ dvipdfmx $(FONTMAP) $<
+
+.PHONY: install clean
+install:
+ mkdir -p ${TEXMF}/doc/platex/platex-tools
+ cp ./Makefile ${TEXMF}/doc/platex/platex-tools/
+ cp ./LICENSE ${TEXMF}/doc/platex/platex-tools/
+ cp ./README.md ${TEXMF}/doc/platex/platex-tools/
+ cp ./*.pdf ${TEXMF}/doc/platex/platex-tools/
+ cp ./*.tex ${TEXMF}/doc/platex/platex-tools/
+ mkdir -p ${TEXMF}/tex/platex/platex-tools
+ cp ./*.sty ${TEXMF}/tex/platex/platex-tools/
+clean:
+ rm -f *.dvi *.pdf
diff --git a/language/japanese/platex-tools/README.md b/language/japanese/platex-tools/README.md
new file mode 100644
index 0000000000..51d952a3b8
--- /dev/null
+++ b/language/japanese/platex-tools/README.md
@@ -0,0 +1,83 @@
+# platex-tools
+
+This bundle is an extended version of latex-tools bundle developed
+by LaTeX team, mainly intended to support pLaTeX2e and upLaTeX2e.
+Patches for latex-tools bundle and ms bundle (by Martin Schröder)
+and some additional packages are included.
+
+## Bundle contents
+
+- plarray.sty:
+ Patch for array.sty (latex-tools) to improve
+ compatibility with pLaTeX/upLaTeX kernels.
+ Can be used on pLaTeX/upLaTeX.
+- plextarray.sty:
+ Patch for array.sty (latex-tools) to improve
+ compatibility with plext.sty in pLaTeX.
+ Can be used on pLaTeX/upLaTeX.
+- plextdelarray.sty:
+ Patch for delarray.sty (latex-tools) to improve
+ compatibility with plext.sty in pLaTeX.
+ Can be used on pLaTeX/upLaTeX.
+- pxftnright.sty:
+ Patch for ftnright.sty (latex-tools) to support
+ Japanese classes for vertical writing.
+ Can be used on pLaTeX/upLaTeX.
+- pxmulticol.sty:
+ Patch for multicol.sty (latex-tools) to support
+ `\footnote` in vertical writing.
+ Can be used on pLaTeX/upLaTeX.
+- pxeverysel.sty:
+ Patch for everysel.sty (ms) to improve
+ compatibility with Japanese font selection in pLaTeX.
+ Can be used on pLaTeX/upLaTeX.
+ Previous version of this package (v0.1) was written by
+ Takayuki YATO in 2015
+ (https://gist.github.com/zr-tex8r/48c6910bbbe2f41d72de),
+ and incorporated into this bundle by his courtesy.
+- pxeveryshi.sty:
+ Patch for everyshi.sty (ms) to support
+ Japanese classes for vertical writing.
+ Can be used on pLaTeX/upLaTeX.
+ Previous version of this package (v0.1) was written by
+ Takayuki YATO in 2012
+ (https://gist.github.com/zr-tex8r/2702969),
+ and incorporated into this bundle by his courtesy.
+- pxatbegshi.sty:
+ Patch for atbegshi.sty (oberdiek) to support
+ Japanese classes for vertical writing.
+ Can be used on pLaTeX/upLaTeX.
+ The essential part of this package was proposed by
+ Hironori Kitagawa in 2017.
+
+The packages "pxgentombow", "gentombow" and "bounddvi" are now distributed
+as part of [gentombow](https://github.com/aminophen/gentombow) bundle.
+
+## Character encoding
+
+All the package files (.sty) contain ASCII characters only.
+All the document files (.tex) are encoded in UTF-8.
+
+## Installation
+
+- *.sty -> $TEXMF/tex/platex/platex-tools
+- *.tex, *.pdf -> $TEXMF/doc/platex/platex-tools
+
+## Repository
+
+The bundle is maintained on GitHub:
+ https://github.com/aminophen/platex-tools
+
+You can also obtain this bundle from CTAN:
+ https://www.ctan.org/pkg/platex-tools
+
+## License
+
+The bundle may be distributed and/or modified under the terms of
+the 3-clause BSD license (see [LICENSE](./LICENSE)).
+
+## Release Date
+
+2018-11-25
+
+Hironobu Yamashita
diff --git a/language/japanese/platex-tools/plarray.pdf b/language/japanese/platex-tools/plarray.pdf
new file mode 100644
index 0000000000..dfa0afcbf7
--- /dev/null
+++ b/language/japanese/platex-tools/plarray.pdf
Binary files differ
diff --git a/language/japanese/platex-tools/plarray.sty b/language/japanese/platex-tools/plarray.sty
new file mode 100644
index 0000000000..111592705e
--- /dev/null
+++ b/language/japanese/platex-tools/plarray.sty
@@ -0,0 +1,60 @@
+%
+% plarray.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the platex-tools bundle.
+% https://github.com/aminophen/platex-tools
+%
+% This package is expected to be compatible with
+% * array.sty in latex-tools
+% (2016/10/06 v2.4d -- 2018/09/13 v2.4i)
+% * plcore.ltx in platex
+% (2001/09/26 v1.2a -- 2018/09/02 v1.3)
+%
+
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{plarray}
+ [2018/10/27 v0.1h Tabular extension package for pLaTeX/upLaTeX]
+\RequirePackage{array}
+
+%% patching internal code for array.sty
+%
+%% remove extra \xkanjiskip (pLaTeX2e 2016/04/17)
+\@ifl@t@r{\pfmtversion}{2016/04/17}{\@firstofone}{\@gobble}
+{% = for pLaTeX2e 2016/04/17 or newer
+\def\@tabular{%
+ \leavevmode \null
+ \hbox \bgroup $\col@sep\tabcolsep \let\d@llarbegin\begingroup
+ \let\d@llarend\endgroup
+ \@tabarray}
+\def\endtabular{\endarray $\egroup\null}
+\expandafter \let \csname endtabular*\endcsname = \endtabular
+}% =
+%
+%% inhibit JFM glue around tabular cell components (pLaTeX2e 2018/03/09)
+\@ifl@t@r{\pfmtversion}{2017/07/29}{\@firstofone}{\@gobble}
+{% = for pLaTeX2e 2017/07/29 or newer
+% first, provide old definition; there are some known incompatibility
+% compared to LaTeX, pLaTeX or array
+\def\insert@column{%
+ \the@toks \the \@tempcnta
+ \mbox{}\inhibitglue \ignorespaces \@sharp \unskip \unskip
+ \the@toks \the \count@ \relax}
+% if both macros are available, override with new definition
+% (= pLaTeX2e 2018/03/09 or later, built on e-(u)pTeX 180226)
+\ifx\pltx@next@inhibitglue\@undefined\else
+ \ifx\removejfmglue\@undefined\else
+ \def\insert@column{%
+ \the@toks \the \@tempcnta
+ \relax \pltx@next@inhibitglue
+ \ignorespaces \@sharp \unskip \removejfmglue
+ \the@toks \the \count@ \relax}
+ \fi
+\fi
+}% =
+%
+%% done
+
+%% all done
+
+\endinput
diff --git a/language/japanese/platex-tools/plarray.tex b/language/japanese/platex-tools/plarray.tex
new file mode 100644
index 0000000000..fdb95faf3e
--- /dev/null
+++ b/language/japanese/platex-tools/plarray.tex
@@ -0,0 +1,82 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}% supports \verb in \footnote
+\usepackage{doc}
+\usepackage{plarray}
+\GetFileInfo{plarray.sty}
+\makeatletter
+\makeatother
+\title{Package \textsf{plarray} \fileversion}
+\author{Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+This package \textsf{plarray} provides small patches to \textsf{array}
+package (\textsf{latex-tools} bundle) for use with Japanese
+p\LaTeX/up\LaTeX.
+By loading \textsf{plarray} in addition to/instead of \textsf{array},
+you can avoid conflicts between (u)p\LaTeX\ kernel and \textsf{array}%
+\footnote{Below is recent changes introduced to
+p\LaTeX/up\LaTeX\ kernels by Japanese \TeX\ Development Community,
+which cannot cope with \textsf{array} package:
+\begin{itemize}
+\item Remove extra \verb+\xkanjiskip+ around tabular environment
+\item Inhibit JFM (Japanese \TeX\ font metric) glue
+ around tabular cell components
+\end{itemize}
+The package \textsf{plarray} re-adds these changes to \textsf{array}.}.
+
+If you are going to use both \textsf{plext} and \textsf{array} packages
+on p\LaTeX/up\LaTeX, the easiest way is to use \textsf{plextarray};
+please refer to its document.
+
+This package is part of \textsf{platex-tools} bundle:
+\begin{verbatim}
+ https://github.com/aminophen/platex-tools
+\end{verbatim}
+
+\bigskip
+
+この\textsf{plarray}パッケージは、\textsf{latex-tools}バンドルの
+\textsf{array}パッケージをp\LaTeX/up\LaTeX で使うときのwrapperとして
+機能します。さらに、\textsf{array}パッケージによって上書きされて
+無効化されてしまうp\LaTeX/up\LaTeX カーネルの修正点を再有効化する
+働きもします(具体的には、「tabular環境前後に\verb+\xkanjiskip+由来の
+余分なアキが入る現象」と、「表のセル内の要素が始め括弧類で始まる場合や
+終わり括弧類で終わる場合にJFMグルーが不自然に入る現象」に対処します)。
+
+\bigskip
+\begin{minipage}{0.45\linewidth}
+\begin{verbatim}
+ \documentclass{jarticle} % if you are using pLaTeX,
+ \usepackage{plarray} % load this!
+ \begin{document}
+ これは表の例です
+ \begin{tabular}{|>{$}c<{$}|c|}\hline
+ \exp(x) & 指数関数 \\ \hline
+ \log(x) & 対数関数 \\ \hline
+ \end{tabular}%
+ 終わり
+ \end{document}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{0.5\linewidth}
+ これは表の例です
+ \begin{tabular}{|>{$}c<{$}|c|}\hline
+ \exp(x) & 指数関数 \\ \hline
+ \log(x) & 対数関数 \\ \hline
+ \end{tabular}%
+ 終わり
+\end{minipage}
+\bigskip
+
+p\LaTeX/up\LaTeX で、\textsf{array}パッケージに加えてさらに
+\textsf{plext}パッケージも使いたい場合は、
+\textsf{plextarray}パッケージを読み込むのが簡単です。
+
+\end{document}
diff --git a/language/japanese/platex-tools/plextarray.pdf b/language/japanese/platex-tools/plextarray.pdf
new file mode 100644
index 0000000000..6ebd30fcee
--- /dev/null
+++ b/language/japanese/platex-tools/plextarray.pdf
Binary files differ
diff --git a/language/japanese/platex-tools/plextarray.sty b/language/japanese/platex-tools/plextarray.sty
new file mode 100644
index 0000000000..ee08eb0bbd
--- /dev/null
+++ b/language/japanese/platex-tools/plextarray.sty
@@ -0,0 +1,121 @@
+%
+% plextarray.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the platex-tools bundle.
+% https://github.com/aminophen/platex-tools
+%
+% This package is expected to be compatible with
+% * array.sty in latex-tools
+% (2016/10/06 v2.4d -- 2018/09/13 v2.4i)
+% * plext.sty in platex
+% (2001/09/26 v1.2 -- 2018/09/20 v1.2j)
+% Largely based on lltjext.sty from LuaTeX-ja project.
+%
+
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{plextarray}
+ [2018/10/27 v1.1d Tabular extension package for plext and array]
+\RequirePackage{plext}
+\RequirePackage{plarray}
+
+%% save definitions from array.sty
+% the <dir> option will be handled later in \@tabarray
+\def\array{\col@sep\arraycolsep
+ \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\def\@halignto{}%
+ \@tabarray}
+\def\tabular{\def\@halignto{}\@tabular}
+%% merged definitions from array.sty and plext.sty
+% take <dir> option first as in plext.sty,
+% which will be passed to \@tabarray
+\@namedef{tabular*}{\@ifnextchar<%>
+ {\p@stabular}{\p@stabular<Z>}}
+\def\p@stabular<#1>#2{%
+ \setlength\dimen@{#2}%
+ \edef\@halignto{to\the\dimen@}\@tabular<#1>}
+
+%% patching internal code for array.sty and plext.sty
+%
+\@ifpackagelater{array}{2018/09/13}{\@firstoftwo}{\@secondoftwo}
+{% = for 2018/09/13 v2.4i or newer
+\def\@startpbox#1{\bgroup
+ \color@begingroup
+ \box@dir\adjustbaseline %% added
+ \setlength\hsize{#1}\@arrayparboxrestore
+ \everypar{%
+ \vrule \@height \ht\@arstrutbox \@width \z@
+ \everypar{}}%
+ }%
+}% =
+{% = for 2018/04/30 v2.4h or older
+\def\@startpbox#1{\bgroup
+ \box@dir\adjustbaseline %% added
+ \setlength\hsize{#1}\@arrayparboxrestore
+ \everypar{%
+ \vrule \@height \ht\@arstrutbox \@width \z@
+ \everypar{}}%
+ }%
+}% =
+%
+\def\@tabarray{\@ifnextchar<\p@tabarray{\p@tabarray<Z>}}
+%
+%% merged \@array (from array.sty) and \p@array (from plext.sty)
+\def\p@array<#1>[#2]#3{%
+ %%%%% new code for box direction
+ \let\box@dir\relax
+ \iftdir
+ \if #1y\relax
+ \let\box@dir\yoko
+ \@tempcnta=\z@ % \(y)strutbox
+ \else\if #1z\relax
+ \@rotswtrue
+ \let\box@dir\tate
+ \@tempcnta=\tw@ % \zstrutbox
+ \else
+ \let\box@dir\tate
+ \@tempcnta=\@ne % \tstrutbox
+ \fi\fi
+ \else
+ \if #1t\relax
+ \let\box@dir\tate
+ \@tempcnta=\@ne % \tstrutbox
+ \else
+ \let\box@dir\yoko
+ \@tempcnta=\z@ % \(y)strutbox
+ \fi
+ \fi
+ %%%%% new code end
+ \setbox \@arstrutbox \hbox{\box@dir %% add \box@dir
+ % the behavior of \strutbox has been changed
+ % (box resister -> conditional macro) in pLaTeX2e 2017/04/08;
+ % so, \strutbox should appear after \box@dir is applied.
+ \@tempcntb=\ifcase\@tempcnta\strutbox
+ \or\tstrutbox\or\zstrutbox\or\@ctrerr\fi
+ \@tempdima \ht \@tempcntb
+ \advance \@tempdima by\extrarowheight
+ \vrule \@height \arraystretch \@tempdima
+ \@depth \arraystretch \dp \@tempcntb
+ \@width \z@}%
+ \fork@array@option<#1>[#2]% %% merged from plext
+ \begingroup
+ \@mkpream{#3}%
+ % following definition of \@preamble is from plext (\edef -> \xdef),
+ % but it's not the same as the one in array; why?
+ \xdef\@preamble{\ialign \noexpand \@halignto
+ \bgroup \tabskip \z@skip \@arstrut \@preamble
+ \tabskip \z@skip \cr}%
+ \endgroup
+ \@arrayleft
+ \@begin@alignbox %% defined inside \fork@array@option
+ \bgroup
+ \box@dir\adjustbaseline
+ \let\par\@empty
+ \let\@sharp##\let\protect\relax
+ \let\\\@arraycr\let\tabularnewline\\
+ \lineskip\z@skip\baselineskip\z@skip\@preamble}
+%
+\def\endarray{\crcr \egroup \egroup \@end@alignbox \@arrayright \gdef\@preamble{}}
+%
+%% done
+
+\endinput
diff --git a/language/japanese/platex-tools/plextarray.tex b/language/japanese/platex-tools/plextarray.tex
new file mode 100644
index 0000000000..47e1f68e1f
--- /dev/null
+++ b/language/japanese/platex-tools/plextarray.tex
@@ -0,0 +1,157 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}
+\usepackage{doc}
+\usepackage{array}
+\usepackage{plextarray}
+\GetFileInfo{plextarray.sty}
+\title{Package \textsf{plextarray} \fileversion}
+\author{Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+Package \textsf{array}, included in \textsf{latex-tools} bundle, is
+incompatible with \textsf{plext} package on Japanese p\LaTeX.
+This is because \textsf{plext} extends \texttt{tabular} and \texttt{array}
+environments to add an optional argument for direction specification.
+The package \textsf{plextarray} resolves this incompatibility,
+and enables coexistence of both extensions provided by \textsf{plext}
+and \textsf{array}.
+
+This package is part of \textsf{platex-tools} bundle:
+\begin{verbatim}
+ https://github.com/aminophen/platex-tools
+\end{verbatim}
+
+\section*{Brief explanation of ``\textsf{plext}'' package}
+
+This section is for people who are not familiar with Japanese p\LaTeX\
+and \textsf{plext} package.
+
+Package \textsf{plext} extends \texttt{tabular} and \texttt{array}
+environments by adding \texttt{<dir>} option, which specifies the
+writing direction:
+\begin{verbatim}
+ \begin{tabular}<dir>[pos]{table spec} ... \end{tabular}
+ \begin{tabular*}<dir>{width}[pos]{table spec} ... \end{tabular*}
+ \begin{array}<dir>[pos]{table spec} ... \end{array}
+\end{verbatim}
+The option \texttt{<dir>} permits one of the following three values.
+If none of them is specified, the direction inside the environment
+is same as that outside the environment.
+\begin{quote}
+ \begin{description}
+ \item[y] \emph{yoko} direction (horizontal writing)
+ \item[t] \emph{tate} direction (vertical writing)
+ \item[z] native direction of \TeX
+\end{description}
+\end{quote}
+The rest of this document is written in Japanese, and includes some
+examples of usage.
+
+\bigskip
+
+\textsf{latex-tools}バンドルに含まれる\textsf{array}パッケージは、
+p\LaTeX の拡張パッケージである\textsf{plext}パッケージと互換性がありません。
+これは、\textsf{plext}パッケージは、文書中で局所的に組方向を変える「組方向
+オプション」の拡張を持っていますが、これと\textsf{array}パッケージによる拡張
+が衝突してしまうためです\footnote{\textsf{plext}→\textsf{array}の順に読み込む
+と\textsf{plext}による拡張がキャンセルされて使えなくなります。
+逆に\textsf{array}→\textsf{plext}の順に読み込むとエラーが出てしまいます。}。
+この\textsf{plextarray}パッケージを読み込むことで、
+\textsf{plext}パッケージの組方向オプション拡張と\textsf{array}パッケージの
+拡張の両方を使うことができるようになります。
+
+\section{使いかた}
+
+\textsf{plext}と\textsf{array}を共存させたいときに、プリアンブルに
+\verb+\usepackage{plextarray}+と書きます。既にいずれかのパッケージが
+読み込まれていても問題ありません。また、\textsf{plextarray}パッケージを
+読み込めば、\textsf{plext}と\textsf{array}\footnote{より正確には、
+\textsf{array}と(u)p\LaTeX の衝突を解消する\textsf{plarray}を読み込む
+ことで、間接的に\textsf{array}も読み込まれます。}も自動的に読み込まれます。
+
+\textsf{dcolumn}や\textsf{tabularx}のような、内部で\textsf{array}を利用
+しているパッケージを\textsf{plext}と共存させたい場合にも、
+\textsf{plextarray}が便利です。
+
+以下に例を示します。横組中で縦組の表を書く例。
+
+\bigskip
+\begin{minipage}{0.5\linewidth}
+\begin{verbatim}
+ \documentclass{jsarticle}
+ \usepackage{plextarray}
+ \begin{document}
+ 組方向 \verb+<t>+ 指定
+ \begin{tabular}<t>{|>{$}c<{$}|c|}\hline
+ \exp(x) & 指数関数 \\ \hline
+ \log(x) & 対数関数 \\ \hline
+ \end{tabular}%
+ 終わり
+ \end{document}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{0.3\linewidth}
+ 組方向 \verb+<t>+ 指定
+ \begin{tabular}<t>{|>{$}c<{$}|c|}\hline
+ \exp(x) & 指数関数 \\ \hline
+ \log(x) & 対数関数 \\ \hline
+ \end{tabular}%
+ 終わり
+\end{minipage}
+
+\bigskip
+
+縦組中で横組の表を書く例。\pLaTeX の縦組クラスでは\textsf{plext}パッケージが
+最初から読み込まれているため、\textsf{array}パッケージを使用したい場合には
+必ず\textsf{plextarray}パッケージを読み込む必要があります。
+
+\bigskip
+\begin{minipage}{0.5\linewidth}
+\begin{verbatim}
+ \documentclass{tarticle}
+ %\usepackage{array}
+ \usepackage{plextarray}
+ \begin{document}
+ 組方向 \verb+<y>+ 指定
+ \begin{tabular}<y>{|m{8zw}|m{5zw}|m{5zw}|}
+ \hline
+ \multicolumn{3}{|c|}{果物のリスト} \\ \hline
+ 品名 & 金額 & 産地 \\ \hline
+ りんご & 170円 & 青森県 \\ \hline
+ みかん & 150円 & 和歌山県 \\ \hline
+ パイナップル & 400円 & 沖縄県 \\ \hline
+ バナナ & 190円 & フィリピン \\ \hline
+ \end{tabular}%
+ 終わり
+ \end{document}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}<t>{0.45\linewidth}
+組方向 \verb+<y>+ 指定
+\begin{tabular}<y>{|m{8zw}|m{5zw}|m{5zw}|}
+ \hline
+ \multicolumn{3}{|c|}{果物のリスト} \\ \hline
+ 品名 & 金額 & 産地 \\ \hline
+ りんご & 170円 & 青森県 \\ \hline
+ みかん & 150円 & 和歌山県 \\ \hline
+ パイナップル & 400円 & 沖縄県 \\ \hline
+ バナナ & 190円 & フィリピン \\ \hline
+\end{tabular}%
+終わり
+\end{minipage}
+\bigskip
+
+\section{謝辞}
+
+本パッケージの実装にあたっては、
+Lua\TeX-jaプロジェクト\footnote{\texttt{https://osdn.net/projects/luatex-ja/}}の
+\textsf{lltjext}パッケージを参考にしました。
+
+\end{document}
diff --git a/language/japanese/platex-tools/plextdelarray.pdf b/language/japanese/platex-tools/plextdelarray.pdf
new file mode 100644
index 0000000000..81ae06afe0
--- /dev/null
+++ b/language/japanese/platex-tools/plextdelarray.pdf
Binary files differ
diff --git a/language/japanese/platex-tools/plextdelarray.sty b/language/japanese/platex-tools/plextdelarray.sty
new file mode 100644
index 0000000000..03b6a1ccff
--- /dev/null
+++ b/language/japanese/platex-tools/plextdelarray.sty
@@ -0,0 +1,55 @@
+%
+% plextdelarray.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the platex-tools bundle.
+% https://github.com/aminophen/platex-tools
+%
+% This package is expected to be compatible with
+% * delarray.sty in latex-tools
+% (2014/10/28 v1.01)
+% * plext.sty in platex
+% (2001/09/26 v1.2 -- 2018/09/20 v1.2j)
+%
+
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{plextdelarray}
+ [2018/09/18 v1.0a array delimiter package for plext and delarray]
+\RequirePackage{plextarray}
+\RequirePackage{delarray}
+
+%% patching internal code for array.sty and plext.sty
+%
+\def\@tabarray{\@ifnextchar<\p@tabarray{\p@tabarray<Z>}}
+%
+%% adopt from \p@tabarray (from plext.sty)
+\def\p@tabarray<#1>{\m@th\@ifnextchar[%]
+ {\p@@array<#1>}{\p@@array<#1>[c]}}
+%
+%% adopt from \@@array (from delarray.sty)
+\def\p@@array<#1>[#2]{\@ifnextchar\bgroup
+ {\let\@arrayleft\relax\let\@arrayright\relax\p@array<#1>[#2]}%
+ {\p@del@array<#1>[#2]}}
+%
+%% adopt from \@del@array (from delarray.sty)
+% Note: we can't use \unvbox\z@, because there is a possibility
+% that \@arrayleft is followed by \raise etc, instead of
+% a box-starting command (\vtop, \vbox etc).
+% Otherwise, an error "! A <box> was supposed to be here."
+% See definitions of \@begin@alignbox in \fork@array@option.
+\def\p@del@array<#1>[#2]#3#4#5{%
+ \setbox\z@\hbox{$\left#3\right#5$}%
+ \if#2c\def\@arrayleft{\left#3}\def\@arrayright{\right#5}%
+ \else\def\@arrayleft{\setbox\z@=\hbox\bgroup}% !!!
+ \def\@arrayright{\egroup% !!!
+ \dimen@=\dp\z@
+ \advance\dimen@-\ht\z@
+ \divide \dimen@ by \tw@
+ \advance\dimen@ by\fontdimen22 \textfont\tw@
+ \lower\dimen@\hbox{$\left#3\vcenter{\box\z@}\right#5$}}% !!!
+ \fi
+ \p@array<#1>[#2]{#4}}
+%
+%% all done
+
+\endinput
diff --git a/language/japanese/platex-tools/plextdelarray.tex b/language/japanese/platex-tools/plextdelarray.tex
new file mode 100644
index 0000000000..cc5e5a745f
--- /dev/null
+++ b/language/japanese/platex-tools/plextdelarray.tex
@@ -0,0 +1,159 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}
+\usepackage{doc}
+\usepackage{delarray}
+\usepackage{plextdelarray}
+\GetFileInfo{plextdelarray.sty}
+\title{Package \textsf{plextdelarray} \fileversion}
+\author{Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+Package \textsf{delarray}, included in \textsf{latex-tools} bundle, is
+incompatible with \textsf{plext} package for p\LaTeX.
+The package \textsf{plextarray} resolves this incompatibility,
+and enables coexistence of both extensions provided by \textsf{plext}
+and \textsf{delarray}. If you are not familiar with Japanese p\LaTeX\
+and \textsf{plext} package, please find the documentation of
+\textsf{plextarray} for brief explanation.
+
+This package is part of \textsf{platex-tools} bundle:
+\begin{verbatim}
+ https://github.com/aminophen/platex-tools
+\end{verbatim}
+
+The rest of this document is written in Japanese, and includes some
+examples of usage.
+
+\bigskip
+
+\textsf{latex-tools}バンドルに含まれる\textsf{delarray}パッケージは、
+p\LaTeX の拡張パッケージである\textsf{plext}パッケージと互換性がありません。
+この\textsf{plextdelarray}パッケージは、\textsf{plext}パッケージの組方向
+オプション拡張と\textsf{delarray}パッケージの拡張の両方を「一応使える」状態
+にするものです。ただし、\textsf{plext}の内部実装の都合上、\textsf{delarray}と
+完全に同じ結果にならない場合があるかもしれません\footnote{本パッケージは
+「\textsf{delarray}を読み込んだだけで\textsf{plext}の部分的な縦書き機能が
+すべて使えなくなってしまって困った」という場合の、あくまで非常手段という
+程度にとらえてください。}。
+
+\section{使いかた}
+
+\textsf{plext}と\textsf{delarray}を共存させたいときに、プリアンブルに
+\verb+\usepackage{plextdelarray}+と書きます。既にいずれかのパッケージが
+読み込まれていても問題ありません。また、\textsf{plextdelarray}パッケージを
+読み込めば、\textsf{plext}と\textsf{delarray}も自動的に読み込まれます。
+また、\textsf{plextarray}パッケージも読み込みます。
+
+以下に例を示します。左側が\textsf{delarray}の機能で左右括弧を付けたもの、
+右側が通常の\textsf{array}の機能で左右括弧を付けたものです。
+特に\verb+[t]+と\verb+[b]+は、\textsf{delarray}なしでは実現できない
+ようです(例は\textsf{delarray}のドキュメントを少し改変)。
+
+\bigskip
+\begin{minipage}{0.5\linewidth}
+\begin{verbatim}
+ \documentclass{jsarticle}
+ %\usepackage{plext}
+ %\usepackage{delarray}
+ \usepackage{plextdelarray}
+ \begin{document}
+ \[
+ \begin{array}[t]\{{c}\}
+ 3 \\ 4 \\ 5 \end{array}
+ \begin{array}[c]\{{c}\}
+ 2 \\ 3 \\ 4 \end{array}
+ \begin{array}[b]\{{c}\}
+ 1 \\ 2 \\ 3 \end{array}
+ \]
+ \[
+ \left\{ \begin{array}[t]{c}
+ 3 \\ 4 \\ 5 \end{array} \right\}
+ \left\{ \begin{array}[c]{c}
+ 2 \\ 3 \\ 4 \end{array} \right\}
+ \left\{ \begin{array}[b]{c}
+ 1 \\ 2 \\ 3 \end{array} \right\}
+ \]
+ \end{document}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{0.4\linewidth}
+\mbox{}\\[10ex]
+ \[
+ \begin{array}[t]\{{c}\}
+ 3 \\ 4 \\ 5 \end{array}
+ \begin{array}[c]\{{c}\}
+ 2 \\ 3 \\ 4 \end{array}
+ \begin{array}[b]\{{c}\}
+ 1 \\ 2 \\ 3 \end{array}
+ \]
+\\[5ex]
+ \[
+ \left\{ \begin{array}[t]{c}
+ 3 \\ 4 \\ 5 \end{array} \right\}
+ \left\{ \begin{array}[c]{c}
+ 2 \\ 3 \\ 4 \end{array} \right\}
+ \left\{ \begin{array}[b]{c}
+ 1 \\ 2 \\ 3 \end{array} \right\}
+ \]
+\end{minipage}
+\bigskip
+
+\textsf{plext}と\textsf{delarray}の両方の拡張を同じ箇所で使用することも
+できなくはありませんが、役に立つ状況は少ないと思います。
+
+\bigskip
+\begin{minipage}{0.5\linewidth}
+\begin{verbatim}
+ \documentclass{jsarticle}
+ %\usepackage{plext}
+ %\usepackage{delarray}
+ \usepackage{plextdelarray}
+ \begin{document}
+ \[
+ \begin{array}<t>[t]\{{c}\}
+ 3 \\ 4 \\ 5 \end{array}
+ \begin{array}<t>[c]\{{c}\}
+ 2 \\ 3 \\ 4 \end{array}
+ \begin{array}<t>[b]\{{c}\}
+ 1 \\ 2 \\ 3 \end{array}
+ \]
+ \[
+ \newcolumntype{L}{>{$}l<{$}}
+ f(x)=
+ \begin{array}<t>\{{lL}.
+ 0 & if $x=0$ \\
+ \sin(x)/x & otherwise
+ \end{array}
+ \]
+ \end{document}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{0.4\linewidth}
+\mbox{}\\[12ex]
+ \[
+ \begin{array}<t>[t]\{{c}\}
+ 3 \\ 4 \\ 5 \end{array}
+ \begin{array}<t>[c]\{{c}\}
+ 2 \\ 3 \\ 4 \end{array}
+ \begin{array}<t>[b]\{{c}\}
+ 1 \\ 2 \\ 3 \end{array}
+ \]
+\\[6ex]
+ \[
+ \newcolumntype{L}{>{$}l<{$}}
+ f(x)=
+ \begin{array}<t>\{{lL}.
+ 0 & if $x=0$ \\
+ \sin(x)/x & otherwise
+ \end{array}
+ \]
+\end{minipage}
+
+\end{document}
diff --git a/language/japanese/platex-tools/pxatbegshi.pdf b/language/japanese/platex-tools/pxatbegshi.pdf
new file mode 100644
index 0000000000..afa389cd08
--- /dev/null
+++ b/language/japanese/platex-tools/pxatbegshi.pdf
Binary files differ
diff --git a/language/japanese/platex-tools/pxatbegshi.sty b/language/japanese/platex-tools/pxatbegshi.sty
new file mode 100644
index 0000000000..577bfed637
--- /dev/null
+++ b/language/japanese/platex-tools/pxatbegshi.sty
@@ -0,0 +1,100 @@
+%
+% pxatbegshi.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the platex-tools bundle.
+% https://github.com/aminophen/platex-tools
+%
+% Largely based on bxpapersize.sty by T. Yato.
+% Previous versions were largely based on H. Kitagawa's
+% code on GitHub:texjporg/tex-jp-build#21.
+%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxatbegshi}
+ [2018/09/21 v0.4 Patch to atbegshi for (u)pLaTeX]
+
+%% preparations
+\def\pxabgs@pkgname{pxatbegshi}
+\def\pxabgs@warn{\PackageWarningNoLine\pxabgs@pkgname}
+
+%% load it
+\RequirePackage{atbegshi}
+
+%% internal macros are locally effective
+\begingroup
+
+%--------------------------------------- helpers
+
+%% unique tokens
+\def\pxabgs@mark{\pxabgs@mark@}
+\def\pxabgs@fin{\pxabgs@fin@}
+
+%% \pxabgs@patch@cmd\CMD{<orig>}{<new>}
+\@onlypreamble\pxabgs@patch@cmd
+\def\pxabgs@patch@cmd#1#2#3{%
+ \def\pxabgs@next##1#2##2\pxabgs@mark##3\pxabgs@fin{%
+ \ifx\pxabgs@mark##3\pxabgs@mark
+ \let\pxabgs@fragment\relax
+ \else
+ \def\pxabgs@fragment{##2}%
+ \def#1{##1#3##2}%
+ \fi}%
+ \expandafter\pxabgs@next#1\pxabgs@mark#2\pxabgs@mark\pxabgs@fin}
+
+%---------------------------------------
+
+%% patch \AtBegShi@Output
+% concept: execute all hooks in temporary yoko direction,
+% by prepending \yoko and switching back to the original
+%
+% prepare
+\let\pxabgs@AtBegShi@Output\AtBegShi@Output
+% first, check hooks inserted by bxpapersize.sty
+% -> if detected, nothing to do
+\pxabgs@patch@cmd\pxabgs@AtBegShi@Output
+ {\bxpr@ABS@prehook}{\bxpr@ABS@prehook}%
+\ifx\pxabgs@fragment\relax\else % found
+ \pxabgs@patch@cmd\pxabgs@AtBegShi@Output
+ {\bxpr@ABS@posthook}{\bxpr@ABS@posthook}%
+ \ifx\pxabgs@fragment\relax\else % found
+ \let\pxabgs@AtBegShi@Output\relax
+ \fi
+\fi
+% -> if not detected, prepend/append hooks
+\ifx\pxabgs@AtBegShi@Output\relax\else
+ \expandafter\def\expandafter\pxabgs@AtBegShi@Output\expandafter{%
+ \expandafter\pxabgs@ABS@prehook
+ \pxabgs@AtBegShi@Output
+ \pxabgs@ABS@posthook
+ }
+ % adjust for atbegshi.sty on non-e-TeX ...
+ % (for e-TeX, this patch should fail but does nothing!)
+ \pxabgs@patch@cmd\pxabgs@AtBegShi@Output
+ {\pxabgs@ABS@prehook\egroup\endgroup}
+ {\egroup\endgroup\pxabgs@ABS@prehook}%
+ % commit the change
+ \global\let\AtBegShi@Output\pxabgs@AtBegShi@Output
+\fi
+%
+%% done
+
+%--------------------------------------- done
+
+\endgroup
+%% internal macros are no longer effective
+
+%% hooks
+\let\pxabgs@restore@dir\relax
+\def\pxabgs@ABS@prehook{%
+ \iftdir
+ \yoko
+ \let\pxabgs@restore@dir\tate
+ \else
+ \let\pxabgs@restore@dir\relax
+ \fi}
+\def\pxabgs@ABS@posthook{\pxabgs@restore@dir}
+
+\endinput
+%% EOF
diff --git a/language/japanese/platex-tools/pxatbegshi.tex b/language/japanese/platex-tools/pxatbegshi.tex
new file mode 100644
index 0000000000..c69b1b6ab9
--- /dev/null
+++ b/language/japanese/platex-tools/pxatbegshi.tex
@@ -0,0 +1,82 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}
+\usepackage{doc}
+\usepackage{pxatbegshi}
+\GetFileInfo{pxatbegshi.sty}
+\title{Package \textsf{pxatbegshi} \fileversion}
+\author{Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+Package \textsf{atbegshi} (written by Heiko Oberdiek) provides
+a command \verb+\AtBeginShipout{...}+, however it cannot be used
+with Japanese classes for vertical writing (tarticle.cls, etc).
+\begin{verbatim}
+ ! Incompatible direction list can't be unboxed.
+ \AtBeginShipoutAddToBox ...box \AtBeginShipoutBox
+ \kern 0pt}\AtBegShi@restor...
+\end{verbatim}
+The package \textsf{pxatbegshi} provides a patch for \textsf{atbegshi}
+to work with both horizontal and vertical writing.
+
+This package is part of \textsf{platex-tools} bundle:
+\begin{verbatim}
+ https://github.com/aminophen/platex-tools
+\end{verbatim}
+
+\bigskip
+
+Heiko Oberdiek氏による\textsf{atbegshi}パッケージは
+\verb+\AtBeginShipout{...}+というコマンドを提供しますが、これを
+p\LaTeX の縦組クラス(tarticle.clsなど)で使うとエラーが出てしまいます
+\footnote{単に縦組クラスで\textsf{atbegshi}パッケージを読み込んだだけ
+では、エラーは出ないようです。}。
+この\textsf{pxatbegshi}パッケージは、縦組クラスでも
+\textsf{atbegshi}パッケージの機能を使えるようにするためのものです。
+もちろん、横組クラスで\textsf{pxatbegshi}パッケージを使用しても
+問題は起きません。
+
+使いかたは、\textsf{atbegshi}パッケージの代わりに、あるいは
+\textsf{atbegshi}パッケージに追加して、\textsf{pxatbegshi}パッケージを
+読みこむだけです。使用例:
+\begin{verbatim}
+ \documentclass[a4paper]{tarticle}
+ \usepackage[dvipdfmx]{graphicx}
+ \usepackage{pxatbegshi}
+ \AtBeginShipout{%
+ \AtBeginShipoutUpperLeft{%
+ \parbox[t][\paperheight][b]{\paperwidth}{%
+ \includegraphics[width=210truemm]{background.eps}}}}
+ \begin{document}
+ 背景に透かしを入れます。
+ \end{document}
+\end{verbatim}
+
+\section*{謝辞}
+
+本パッケージの実装には、Takayuki Yato (ZR) 氏による
+\textsf{bxpapersize}パッケージを参考にしました
+\footnote{2018/09/21 v0.3までは北川さん (Hironori Kitagawa) による
+「\verb+\AtBegShi@Output+の処理を強引に横組でやらせるコード」
+をベースにしていましたが、v0.4で\verb+\AtBeginShipoutDiscard+へ
+対応させる改修を機に、書き直しました。}。
+
+\section*{References}
+
+\begin{itemize}
+\item utbookでatbegshiパッケージを使いたい\\
+ \texttt{https://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=2134}
+\item \relax[tex-jp-build] [ptex] ページ・数式の組方向
+ (※北川さんのコードの初出)\\
+ \texttt{https://github.com/texjporg/tex-jp-build/issues/21}
+\item CTAN: Package \textsf{bxpapersize}\\
+ \texttt{https://ctan.org/pkg/bxpapersize}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex-tools/pxeverysel.pdf b/language/japanese/platex-tools/pxeverysel.pdf
new file mode 100644
index 0000000000..83ab40a82e
--- /dev/null
+++ b/language/japanese/platex-tools/pxeverysel.pdf
Binary files differ
diff --git a/language/japanese/platex-tools/pxeverysel.sty b/language/japanese/platex-tools/pxeverysel.sty
new file mode 100644
index 0000000000..5c00f1830f
--- /dev/null
+++ b/language/japanese/platex-tools/pxeverysel.sty
@@ -0,0 +1,169 @@
+%
+% pxeverysel.sty
+% originally written by Takayuki Yato (ZR)
+% and modified by Hironobu Yamashita
+%
+% This package is distributed as part of the platex-tools bundle
+% maintained by Hironobu Yamashita
+% by courtesy of the original author.
+% https://github.com/aminophen/platex-tools
+%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pxeverysel}
+ [2018/10/28 v0.9 Patch to everysel for (u)pLaTeX]
+
+%% previous code for ctex support has been removed in v0.5,
+%% as ctex has depended on pxeverysel since 2016/12/27 v2.4.7
+
+%% in case it's too late ...
+\@ifpackageloaded{everysel}{%
+ % everysel.sty removes \@EverySelectfont@Init once it is used
+ \ifx\@EverySelectfont@Init\undefined
+ \PackageError{pxeverysel}{%
+ Patch too late!\MessageBreak
+ Load pxeverysel earlier}\@ehc
+ \expandafter\endinput
+ \fi
+}{}
+
+%% load it, but ensure that \@EverySelectfont@Init is not executed
+% [Note] everysel.sty contains
+% \AtBeginDocument{\@EverySelectfont@Init}
+% at the end. In most cases, the execution is actually delayed;
+% however,
+% \AtBeginDocument{\RequirePackage{everysel}}
+% can execute it immediately (e.g. found in sidecap.sty).
+% In this case, delay it until the end of pxeverysel.sty.
+\ifx\AtBeginDocument\@firstofone
+ \def\pxys@begindocumenthook{\let\AtBeginDocument\@firstofone}
+ \def\AtBeginDocument{\g@addto@macro\pxys@begindocumenthook}
+ \AtEndOfPackage{\pxys@begindocumenthook}
+\fi
+\RequirePackage{everysel}
+
+%% support for (u)pLaTeX font tracing
+\@ifpackageloaded{tracefnt}{%
+ \ifx\kanjiskip\@undefined\else\ifx\ucs\@undefined
+ \RequirePackage{ptrace}\else\RequirePackage{uptrace}\fi\fi}{}
+
+%--------------------------------------- helpers
+
+%% preparations
+\def\pxys@pkgname{pxeverysel}
+\def\pxys@warn{\PackageWarningNoLine\pxys@pkgname}
+
+%% unique tokens
+\def\pxys@mark{\pxys@mark@}
+\def\pxys@fin{\pxys@fin@}
+
+%% \pxys@patch@cmd\CMD{<pre>}{<post>}{<new>}
+\@onlypreamble\pxys@patch@cmd
+\def\pxys@patch@cmd#1#2#3#4{%
+ \def\pxys@next##1#2##2#3##3\pxys@mark##4\pxys@fin{%
+ \ifx\pxys@mark##4\pxys@mark
+ \let\pxys@fragment\relax
+ \else
+ \def\pxys@fragment{##2}%
+ \def#1{##1#4##3}%
+ \fi}%
+ \expandafter\pxys@next#1\pxys@mark#2#3\pxys@mark\pxys@fin}
+
+%% \pxys@append@to\CSa\CSb
+\@onlypreamble\pxys@append@to
+\def\pxys@append@to#1#2{%
+ \expandafter\g@addto@macro\expandafter#1\expandafter{#2}}
+
+%% \pxys@term
+\let\pxys@term\relax
+
+%---------------------------------------
+
+%% variables
+\let\pxys@self@hook\@empty
+\let\pxys@everysel@hook\@empty
+\@onlypreamble\pxys@selectfont
+\let\pxys@selectfont\relax
+\@onlypreamble\pxys@org@selectfont
+\let\pxys@org@selectfont\relax
+\@onlypreamble\pxys@new@selectfont
+\let\pxys@new@selectfont\relax
+
+%% \@EverySelectfont@Init redefined
+\@onlypreamble\pxys@EverySelectfont@Init
+\let\pxys@EverySelectfont@Init\@EverySelectfont@Init
+\def\@EverySelectfont@Init{%
+ \pxys@preproc
+ \pxys@EverySelectfont@Init
+ \pxys@postproc}
+
+%% \pxys@preproc
+\@onlypreamble\pxys@preproc
+\def\pxys@preproc{%
+ % prepare
+ \expandafter\let\expandafter\pxys@selectfont
+ \csname selectfont \endcsname
+ \let\pxys@org@selectfont\pxys@selectfont
+ % extract "pre-\size@update" insertion
+ \pxys@append@to\pxys@selectfont\pxys@term
+ \pxys@patch@cmd\pxys@selectfont
+ {\pickup@font\font@name}{\size@update\pxys@term}% % plfonts/ptrace
+ {\pickup@font\font@name\pxys@self@hook\pxys@everysel@hook
+ \size@update}%
+ \ifx\pxys@fragment\relax
+ \let\pxys@selectfont\pxys@org@selectfont
+ % extract "pre-\enc@update" insertion
+ \pxys@patch@cmd\pxys@selectfont
+ {\pickup@font\font@name}{\size@update\enc@update}% % ltfsstrc/tracefnt
+ {\pickup@font\font@name\pxys@self@hook\pxys@everysel@hook
+ \size@update\enc@update}%
+ \ifx\pxys@fragment\relax % failure
+ \let\pxys@selectfont\relax
+ \else
+ \pxys@append@to\pxys@self@hook\pxys@fragment
+ \fi
+ \else
+ \pxys@append@to\pxys@self@hook\pxys@fragment
+ \fi
+ \let\pxys@new@selectfont\pxys@selectfont
+ % prepare for everysel routine
+ \let\pxys@CheckCommand\CheckCommand
+ \let\CheckCommand\@gobble
+ % hack for disabling duplicate font info
+ \expandafter\let\expandafter\pxys@ver@tracefnt
+ \csname ver@tracefnt.sty\endcsname
+ \expandafter\let\csname ver@tracefnt.sty\endcsname\@undefined}
+
+%% \pxys@postproc
+\@onlypreamble\pxys@postproc
+\def\pxys@postproc{%
+ % revert the hack for disabling duplicate font info
+ \expandafter\let\csname ver@tracefnt.sty\endcsname\pxys@ver@tracefnt
+ \let\pxys@ver@tracefnt\@undefined
+ % post handling of everysel routine
+ \let\CheckCommand\pxys@CheckCommand
+ \let\pxys@CheckCommand\@undefined
+ \expandafter\let\expandafter\pxys@selectfont
+ \csname selectfont \endcsname
+ % extract the code insertion by everysel
+ \pxys@patch@cmd\pxys@selectfont
+ {\pickup@font\font@name}{\size@update\enc@update}{}%
+ \ifx\pxys@fragment\relax % failure
+ \let\pxys@new@selectfont\relax
+ \else % success
+ \pxys@append@to\pxys@everysel@hook\pxys@fragment
+ \fi
+ % commit the change
+ \ifx\pxys@new@selectfont\relax % failure
+ \let\pxys@selectfont\pxys@org@selectfont % revert
+ \pxys@warn{Failed in patching \string\selectfont}%
+ \else % success
+ \let\pxys@selectfont\pxys@new@selectfont
+ \fi
+ \expandafter\let\csname selectfont \endcsname\pxys@selectfont}
+
+%--------------------------------------- done
+
+\endinput
+%% EOF
diff --git a/language/japanese/platex-tools/pxeverysel.tex b/language/japanese/platex-tools/pxeverysel.tex
new file mode 100644
index 0000000000..ab46087954
--- /dev/null
+++ b/language/japanese/platex-tools/pxeverysel.tex
@@ -0,0 +1,66 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}
+\usepackage{doc}
+\usepackage{pxeverysel}
+\GetFileInfo{pxeverysel.sty}
+\title{Package \textsf{pxeverysel} \fileversion}
+\author{Takayuki Yato \& Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+Package \textsf{everysel}, written by Martin Schr\"oder,
+is incompatible with the definition of \verb+\selectfont+ redefined
+by p\LaTeX\ kernel. For this reason, when using \textsf{everysel},
+font selection scheme for Japanese characters goes wrong.
+The package \textsf{pxeverysel} provides a patch for \textsf{everysel}
+to work with p\LaTeX\ font selection.
+
+This package is part of \textsf{platex-tools} bundle:
+\begin{verbatim}
+ https://github.com/aminophen/platex-tools
+\end{verbatim}
+
+\bigskip
+
+Martin Schr\"oder氏による\textsf{everysel}パッケージをp\LaTeX で
+使用すると、日本語の文字サイズが変わらなくなったり、
+\textsf{otf}パッケージで文字化けが起こったりします。
+これは、\pLaTeX カーネルが日本語用に再定義している\verb+\selectfont+が、
+\textsf{everysel}によって書き換えられてしまうためです。
+この\textsf{pxeverysel}パッケージを読み込むことで、p\LaTeX でも
+\textsf{everysel}パッケージを使えるようになります。
+
+使いかたは、\textsf{everysel}パッケージの代わりに、あるいは
+\textsf{everysel}パッケージに追加して、\textsf{pxeverysel}パッケージを
+読み込むだけです\footnote{稀に\\\texttt{%
+!~Package pxeverysel Error:~Patch too late!\\
+(pxeverysel)~~~~~~~~~~~~~~~~Load pxeverysel earlier.%
+}\\というエラーが出ることがあります。この場合は、
+\textsf{pxeverysel}パッケージを少し早めに読み込んでみてください。}。
+\textsf{everysel}を内部で読み込んでいる\textsf{ragged2e}を例に示します:
+\begin{verbatim}
+ \documentclass[a4paper]{jsarticle}
+ \usepackage{ragged2e}% 読み込むだけでアウト
+ \usepackage{pxeverysel}
+ \begin{document}
+ % 和文のフォントサイズが変わらない!
+ {\TeX}はアレ{\Large{\TeX}はアレ}
+ \end{document}
+\end{verbatim}
+
+\section*{References}
+
+\begin{itemize}
+\item vwcol.styとutf.styを併用したい\\
+ \texttt{http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=1763}
+\item pLaTeXでeveryselしたい話\\
+ \texttt{http://d.hatena.ne.jp/zrbabbler/20151212/1449898508}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex-tools/pxeveryshi.pdf b/language/japanese/platex-tools/pxeveryshi.pdf
new file mode 100644
index 0000000000..b9b989d393
--- /dev/null
+++ b/language/japanese/platex-tools/pxeveryshi.pdf
Binary files differ
diff --git a/language/japanese/platex-tools/pxeveryshi.sty b/language/japanese/platex-tools/pxeveryshi.sty
new file mode 100644
index 0000000000..8a534095d9
--- /dev/null
+++ b/language/japanese/platex-tools/pxeveryshi.sty
@@ -0,0 +1,28 @@
+%
+% pxeveryshi.sty
+% written by Takayuki Yato (ZR)
+%
+% This package is distributed as part of the platex-tools bundle
+% maintained by Hironobu Yamashita
+% by courtesy of the original author.
+% https://github.com/aminophen/platex-tools
+%
+
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxeveryshi}
+ [2012/05/19 v0.1 everyshi package for pLaTeX]
+\RequirePackageWithOptions{everyshi}
+%
+\def\@EveryShipout@Output{%
+ \setbox8\vbox{%
+ \yoko
+ \@EveryShipout@Hook
+ \@EveryShipout@AtNextHook
+ \global\setbox\@cclv=\box\@cclv
+ }%
+ \gdef\@EveryShipout@AtNextHook{}%
+ \@EveryShipout@Org@Shipout\box\@cclv
+}
+%
+\endinput
+%% EOF
diff --git a/language/japanese/platex-tools/pxeveryshi.tex b/language/japanese/platex-tools/pxeveryshi.tex
new file mode 100644
index 0000000000..b5e612ba51
--- /dev/null
+++ b/language/japanese/platex-tools/pxeveryshi.tex
@@ -0,0 +1,67 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}
+\usepackage{doc}
+\usepackage{pxeveryshi}
+\GetFileInfo{pxeveryshi.sty}
+\title{Package \textsf{pxeveryshi} \fileversion}
+\author{Takayuki Yato}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+Package \textsf{everyshi}, written by Martin Schr\"oder,
+cannot be used with Japanese classes for vertical writing
+(tarticle.cls, etc). This behavior is not comfortable, since
+\textsf{everyshi} is required by some other packages
+(e.g. \textsf{tikz}) and causes an error:
+\begin{verbatim}
+ ! Incompatible direction list can't be unboxed.
+\end{verbatim}
+The package \textsf{pxeveryshi} provides a patch for \textsf{everyshi}
+to work with both horizontal and vertical writing.
+
+This package is part of \textsf{platex-tools} bundle:
+\begin{verbatim}
+ https://github.com/aminophen/platex-tools
+\end{verbatim}
+
+\bigskip
+
+Martin Schr\"oder氏による\textsf{everyshi}パッケージは、
+p\LaTeX の縦組クラス(tarticle.clsなど)で使うとエラーが出てしまいます。
+この挙動は、たとえば\textsf{tikz}のような内部で\textsf{everyshi}パッケージ
+を必要とするパッケージを縦組で使用する際に問題になります。
+この\textsf{pxeveryshi}パッケージを読み込むことで、縦組クラスでも
+\textsf{everyshi}パッケージ(およびこれに依存するパッケージ)が
+使えるようになります。
+
+使いかたは、\textsf{everyshi}パッケージの代わりに、あるいは
+\textsf{everyshi}パッケージに追加して、\textsf{pxeveryshi}パッケージを
+読みこむだけです。使用例:
+\begin{verbatim}
+ \documentclass{tarticle}
+ \usepackage[dvipdfmx]{graphicx}
+ \usepackage{tikz}
+ \usepackage{pxeveryshi}
+ \begin{document}
+ \begin{tikzpicture}
+ \draw (0,0) -- (1,2);
+ \end{tikzpicture}
+ \end{document}
+\end{verbatim}
+
+\section*{References}
+
+\begin{itemize}
+\item tikz を縦書きで\\
+ \texttt{https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/56760.html}
+\item Re: tikz を縦書きで\\
+ \texttt{https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/56761.html}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex-tools/pxftnright.pdf b/language/japanese/platex-tools/pxftnright.pdf
new file mode 100644
index 0000000000..918d40a324
--- /dev/null
+++ b/language/japanese/platex-tools/pxftnright.pdf
Binary files differ
diff --git a/language/japanese/platex-tools/pxftnright.sty b/language/japanese/platex-tools/pxftnright.sty
new file mode 100644
index 0000000000..2b5d4382b4
--- /dev/null
+++ b/language/japanese/platex-tools/pxftnright.sty
@@ -0,0 +1,140 @@
+%
+% pxftnright.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the platex-tools bundle.
+% https://github.com/aminophen/platex-tools
+%
+% This package `pxftnright' is based on:
+% * ftnright.sty in latex-tools (2014/10/28 v1.1f)
+%
+% Problems with ftnright to use with pLaTeX:
+% * \@startcolumn is redefined
+% (incompatible with vertical typesetting)
+% * \@makecol is redefined
+% (bottom float after footnote)
+% * \@makefntext is redefined
+% (incompatible with some pLaTeX classes)
+% * \footnotesep is not suitable for vertical typesetting
+% when used with pLaTeX 2016/11/29 or earlier
+% (rather a problem of \strutbox in pLaTeX2e kernel)
+% so, this package provides patches.
+%
+
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxftnright}
+ [2017/02/28 v1.1 footnote layout package for pLaTeX]
+
+%% save \@makefntext definition from pLaTeX class
+\@ifpackageloaded{ftnright}{%
+ \PackageError{pxftnright}{%
+ Package ftnright is already loaded!\MessageBreak
+ Load pxftnright earlier}\@ehc
+}{}
+\let\pxftn@makefntext\@makefntext
+
+%% load ftnright package
+\RequirePackage{ftnright}
+
+%% patches for ftnright to work fine with pLaTeX
+%% This code is based on pLaTeX2e 2017/04/08 community ed.
+
+\def\@startcolumn{%
+ \ifx\@deferlist\@empty
+ \global\@fcolmadefalse
+ \global\@colroom\@colht
+ \else
+ \ifvoid\footins\else
+ \ftn@amount\ht\footins
+ \advance\ftn@amount\dp\footins
+ \advance\ftn@amount\skip\footins
+ \fi
+ \global\advance\@colht-\ftn@amount
+ \global\@colroom\@colht
+ \@xstartcol
+ \global\advance\@colht\ftn@amount
+ \global\advance\@colroom\ftn@amount
+ \fi
+ \if@fcolmade
+ \setbox\@cclv\box\@outputbox
+ \@makecol
+ \else
+%%%%% change for pLaTeX (import from \@reinserts in plcore)
+ \ifvoid\footins\else\insert\footins{%
+ \iftbox\footins\tate\else\yoko\fi
+ \unvbox\footins}\fi
+%%%%%
+ \fi}
+
+\def\@makecol{%
+%%%%% change for pLaTeX
+ \setbox\@outputbox\box\@cclv
+%%%%%
+ \if@firstcolumn
+ \if@twocolumn \else
+ \ifvoid\footins \else
+ \@latexerr{ftnright package
+ used in one-column mode}%
+ {The ftnright package was designed to
+ work with LaTeX's standard^^Jtwocolumn
+ option. It does *not* work with the
+ multicol package.^^JSo please specify
+ `twocolumn' in the
+ \noexpand\documentclass command.}%
+ \shipout\box\footins \fi\fi
+ \ifnum\insertpenalties>\z@
+ \@latexerr{ftnright package
+ scrambled footnotes}%
+ {There is too much footnote material in
+ the first column and ftnright^^Jis
+ unable to cope with this.^^JYou need
+ to reduce the amount to get a properly
+ formatted page.}%
+ \fi
+ \fi
+%%%%% change for pLaTeX (bottom float first)
+ \xdef\@freelist{\@freelist\@midlist}%
+ \global \let \@midlist \@empty
+ \@combinefloats
+ \let\pltx@textbottom\@textbottom %%% pLaTeX
+ \if@firstcolumn\else
+ \ifvoid\footins\else
+ \setbox\@outputbox \vbox {%
+ \boxmaxdepth \@maxdepth
+ \unvbox \@outputbox
+ \@textbottom %%% pLaTeX
+ \vskip \skip\footins
+ \color@begingroup
+ \normalcolor
+ \footnoterule
+ \unvbox \footins
+ \color@endgroup
+ }%
+ \let\@textbottom\relax %%% pLaTeX
+ \fi
+ \fi
+%%%%%
+ \ifvbox\@kludgeins
+ \@makespecialcolbox
+ \else
+ \setbox\@outputbox\vbox to\@colht
+ {\boxmaxdepth\maxdepth
+ \@texttop
+ \dimen@ \dp\@outputbox
+ \unvbox \@outputbox
+ \iftdir\vbox{\hskip\z@}\fi %%% pLaTeX
+ \vskip -\dimen@
+ \@textbottom}%
+ \fi
+ \let\@textbottom\pltx@textbottom %%% pLaTeX
+ \global\maxdepth\@maxdepth
+}
+
+%% adjust \footnotesep for vertical typesetting
+\AtBeginDocument
+ {\global\footnotesep\ht\iftdir\tstrutbox\else\strutbox\fi}
+
+%% restore \@makefntext
+\let\@makefntext\pxftn@makefntext
+
+\endinput
diff --git a/language/japanese/platex-tools/pxftnright.tex b/language/japanese/platex-tools/pxftnright.tex
new file mode 100644
index 0000000000..d34c9dcfb9
--- /dev/null
+++ b/language/japanese/platex-tools/pxftnright.tex
@@ -0,0 +1,66 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}
+\begingroup
+ \def\NeedsTeXFormat#1\ProvidesPackage#2[#3 #4 #5]{%
+ \gdef\fileversion{#4}\gdef\filedate{#3}\endinput}
+ \input{pxftnright.sty}
+\endgroup
+\title{Package \textsf{pxftnright} \fileversion}
+\author{Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+Package \textsf{ftnright}, included in \textsf{latex-tools} bundle,
+cannot be used with Japanese classes for vertical writing
+(tarticle.cls, etc). The package \textsf{pxftnright} provides some
+patches to \textsf{ftnright} to work fine with vertical writing.
+
+This package is part of \textsf{platex-tools} bundle:
+\begin{verbatim}
+ https://github.com/aminophen/platex-tools
+\end{verbatim}
+
+The rest of this document is written in Japanese, and includes some
+examples of usage.
+
+\bigskip
+
+\textsf{latex-tools}バンドルに含まれる\textsf{ftnright}パッケージは、
+p\LaTeX の縦組クラス(tarticle.clsなど)で使うとエラーが出てしまいます。
+この\textsf{pxftnright}パッケージを読み込むことで、縦組クラスでも
+\textsf{ftnright}パッケージと同等の機能(二段組において、横組なら
+脚注が右カラムに、縦組なら傍注\footnote{\verb+\footnote+という命令を
+使用して得られるのは、縦組では正式には「傍注」と呼びます。}が下カラムに
+まとまる)を得ることができます。
+
+\section{使いかた}
+
+\textsf{ftnright}パッケージの代わりに、あるいは
+\textsf{ftnright}パッケージより\emph{前}に、
+\textsf{pxftnright}パッケージを読みこみます(後に読みこんだ場合は
+対策が手遅れになるため、エラーを出します)。
+
+\begin{verbatim}
+ \documentclass[twocolumn]{tarticle}
+ \usepackage{pxftnright}% ftnright の代わり
+ \begin{document}
+ 縦組では\verb+\footnote+命令を使用すると、
+ 傍注が出てきます\footnote{紛らわしいですね。}。
+ また、…
+ \end{document}
+\end{verbatim}
+
+\section*{References}
+
+\begin{itemize}
+\item 縦書き2段組の脚注について\\
+ \texttt{http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=1896}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex-tools/pxmulticol.pdf b/language/japanese/platex-tools/pxmulticol.pdf
new file mode 100644
index 0000000000..a82970574c
--- /dev/null
+++ b/language/japanese/platex-tools/pxmulticol.pdf
Binary files differ
diff --git a/language/japanese/platex-tools/pxmulticol.sty b/language/japanese/platex-tools/pxmulticol.sty
new file mode 100644
index 0000000000..a55341af95
--- /dev/null
+++ b/language/japanese/platex-tools/pxmulticol.sty
@@ -0,0 +1,25 @@
+%
+% pxmulticol.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the platex-tools bundle.
+% https://github.com/aminophen/platex-tools
+%
+% This package is expected to be compatible with
+% * multicol.sty in latex-tools
+% (1995/10/19 v1.5l -- 2018/04/01 v1.8r)
+%
+
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxmulticol}
+ [2018/11/25 v0.2 footnote layout package for pLaTeX]
+\RequirePackageWithOptions{multicol}
+
+%% patching internal code for multicol.sty
+%
+\def\reinsert@footnotes{\ifvoid\footins\else
+ \insert\footins{\iftbox\footins\tate\else\yoko\fi}\fi}
+%
+%% done
+
+\endinput
diff --git a/language/japanese/platex-tools/pxmulticol.tex b/language/japanese/platex-tools/pxmulticol.tex
new file mode 100644
index 0000000000..352c46a541
--- /dev/null
+++ b/language/japanese/platex-tools/pxmulticol.tex
@@ -0,0 +1,62 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}
+\begingroup
+ \def\NeedsTeXFormat#1\ProvidesPackage#2[#3 #4 #5]{%
+ \gdef\fileversion{#4}\gdef\filedate{#3}\endinput}
+ \input{pxmulticol.sty}
+\endgroup
+\title{Package \textsf{pxmulticol} \fileversion}
+\author{Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+Package \textsf{multicol}, included in \textsf{latex-tools} bundle,
+throws an error when \verb+\footnote+ appears in vertical writing on
+(u)p\LaTeX. The package \textsf{pxmulticol} provides a patch to
+solve this problem.
+
+This package is part of \textsf{platex-tools} bundle:
+\begin{verbatim}
+ https://github.com/aminophen/platex-tools
+\end{verbatim}
+
+The rest of this document is written in Japanese, and includes some
+examples of usage.
+
+\bigskip
+
+\textsf{latex-tools}バンドルに含まれる\textsf{multicol}パッケージは、
+縦組で脚注 (\verb+\footnote+) を使うとエラーを出してしまいます。
+この\textsf{pxmulticol}パッケージを読み込むことで、縦組クラスでも
+\textsf{multicols}環境内で脚注を使うことができるようになります。
+
+\section{使いかた}
+
+\textsf{multicol}パッケージの代わりに、あるいは追加で
+\textsf{pxmulticol}パッケージを読み込みます。
+
+\begin{verbatim}
+ \documentclass[a4paper]{tarticle}
+ \usepackage{pxmulticol}% multicol の代わり
+ \begin{document}
+ \begin{multicols}{2}
+ 縦組で段組をする場合も、脚注\footnote{こんな感じです。}を使う
+ ことができます。
+ \end{multicols}
+ \end{document}
+\end{verbatim}
+
+\section*{References}
+
+\begin{itemize}
+\item 縦書き二段組における段移動\\
+ \texttt{https://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=2535}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/LICENSE b/language/japanese/platex/LICENSE
new file mode 100644
index 0000000000..5c1490cdb8
--- /dev/null
+++ b/language/japanese/platex/LICENSE
@@ -0,0 +1,28 @@
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016-2019 Japanese TeX Development Community
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/platex/Makefile b/language/japanese/platex/Makefile
new file mode 100644
index 0000000000..ac45cee9c1
--- /dev/null
+++ b/language/japanese/platex/Makefile
@@ -0,0 +1,171 @@
+STRIPTARGET = platex.ltx jarticle.cls pl209.def platexrelease.sty \
+ jltxdoc.cls
+DOCTARGET = platex platexrelease pldoc exppl2e \
+ platex-en #pldoc-en
+PDFTARGET = $(addsuffix .pdf,$(DOCTARGET))
+DVITARGET = $(addsuffix .dvi,$(DOCTARGET))
+KANJI = -kanji=jis
+FONTMAP = -f ipaex.map -f ptex-ipaex.map
+TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
+
+default: $(STRIPTARGET) $(DVITARGET)
+strip: $(STRIPTARGET)
+all: $(STRIPTARGET) $(PDFTARGET)
+
+PLFMT = platex.ltx plcore.ltx kinsoku.tex pldefs.ltx \
+ jy1mc.fd jy1gt.fd jt1mc.fd jt1gt.fd plext.sty \
+ ptrace.sty pfltrace.sty
+
+PLFMT_SRC = platex.dtx plvers.dtx plfonts.dtx plcore.dtx \
+ kinsoku.dtx plext.dtx
+
+PLCLS = jarticle.cls jreport.cls jbook.cls jsize10.clo \
+ jsize11.clo jsize12.clo jbk10.clo jbk11.clo jbk12.clo \
+ tarticle.cls treport.cls tbook.cls tsize10.clo \
+ tsize11.clo tsize12.clo tbk10.clo tbk11.clo tbk12.clo
+
+PLCLS_SRC = jclasses.dtx
+
+PL209 = pl209.def oldpfont.sty jarticle.sty tarticle.sty \
+ jbook.sty tbook.sty jreport.sty treport.sty
+
+PL209_SRC = pl209.dtx
+
+PLREL = platexrelease.sty
+
+PLREL_SRC = platexrelease.dtx $(PLFMT_SRC)
+
+INTRODOC_SRC = platex.dtx
+
+PLRELDOC_SRC = platexrelease.dtx
+
+PLDOC_SRC = platex.dtx plvers.dtx plfonts.dtx plcore.dtx plext.dtx \
+ pl209.dtx kinsoku.dtx jclasses.dtx jltxdoc.dtx
+
+platex.ltx: $(PLFMT_SRC)
+ rm -f $(PLFMT)
+ platex $(KANJI) plfmt.ins
+ rm plfmt.log
+
+jarticle.cls: $(PLCLS_SRC)
+ rm -f $(PLCLS)
+ platex $(KANJI) plcls.ins
+ rm plcls.log
+
+pl209.def: $(PL209_SRC)
+ rm -f $(PL209)
+ platex $(KANJI) pl209.ins
+ rm pl209.log
+
+platexrelease.sty: $(PLREL_SRC)
+ rm -f $(PLREL)
+ platex $(KANJI) platexrelease.ins
+ rm platexrelease.log
+
+jltxdoc.cls: jltxdoc.dtx
+ rm -f jltxdoc.cls pldoc.tex Xins.ins
+ platex $(KANJI) pldocs.ins
+ rm pldocs.log pldoc.tex Xins.ins
+
+platex.dvi: $(INTRODOC_SRC)
+ rm -f platex.cfg
+ platex $(KANJI) platex.dtx
+ mendex -J -f -s gglo.ist -o platex.gls platex.glo
+ platex $(KANJI) platex.dtx
+ rm platex.aux platex.log
+ rm platex.glo platex.gls platex.ilg
+
+platexrelease.dvi: $(PLRELDOC_SRC)
+ rm -f platex.cfg
+ platex $(KANJI) platexrelease.dtx
+ platex $(KANJI) platexrelease.dtx
+ rm platexrelease.aux platexrelease.log
+
+pldoc.dvi: $(PLDOC_SRC)
+ rm -f platex.cfg
+ rm -f jltxdoc.cls pldoc.tex Xins.ins
+ platex $(KANJI) pldocs.ins
+ rm -f mkpldoc*.sh dstcheck.pl
+ platex $(KANJI) Xins.ins
+ sh mkpldoc.sh
+ rm *.aux *.log pldoc.toc pldoc.idx pldoc.ind pldoc.ilg
+ rm pldoc.glo pldoc.gls pldoc.tex Xins.ins
+ rm ltxdoc.cfg pldoc.dic mkpldoc*.sh dstcheck.pl
+
+exppl2e.dvi: exppl2e.sty
+ rm -f platex.cfg
+ platex $(KANJI) exppl2e.sty
+ platex $(KANJI) exppl2e.sty
+ rm exppl2e.aux exppl2e.log
+
+platex-en.dvi: $(INTRODOC_SRC)
+ # built-in echo in shell is troublesome, so use perl instead
+ perl -e "print \"\\\\newif\\\\ifJAPANESE\\n"\" >platex.cfg
+ platex -jobname=platex-en $(KANJI) platex.dtx
+ mendex -J -f -s gglo.ist -o platex-en.gls platex-en.glo
+ platex -jobname=platex-en $(KANJI) platex.dtx
+ rm platex-en.aux platex-en.log
+ rm platex-en.glo platex-en.gls platex-en.ilg
+ rm platex.cfg
+
+pldoc-en.dvi: $(PLDOC_SRC)
+ # built-in echo in shell is troublesome, so use perl instead
+ perl -e "print \"\\\\newif\\\\ifJAPANESE\\n"\" >platex.cfg
+ rm -f jltxdoc.cls pldoc.tex Xins.ins
+ platex $(KANJI) pldocs.ins
+ rm -f mkpldoc*.sh dstcheck.pl
+ platex $(KANJI) Xins.ins
+ sh mkpldoc-en.sh
+ rm *.aux *.log pldoc-en.toc pldoc-en.idx pldoc-en.ind pldoc-en.ilg
+ rm pldoc-en.glo pldoc-en.gls pldoc.tex Xins.ins
+ rm ltxdoc.cfg pldoc.dic mkpldoc*.sh dstcheck.pl
+ rm platex.cfg
+
+platex.pdf: platex.dvi
+ dvipdfmx $(FONTMAP) $<
+platexrelease.pdf: platexrelease.dvi
+ dvipdfmx $(FONTMAP) $<
+pldoc.pdf: pldoc.dvi
+ dvipdfmx $(FONTMAP) $<
+exppl2e.pdf: exppl2e.dvi
+ dvipdfmx $(FONTMAP) $<
+platex-en.pdf: platex-en.dvi
+ dvipdfmx $(FONTMAP) $<
+pldoc-en.pdf: pldoc-en.dvi
+ dvipdfmx $(FONTMAP) $<
+
+.PHONY: install clean cleanstrip cleanall cleandoc
+install:
+ mkdir -p ${TEXMF}/doc/platex/base
+ cp ./LICENSE ${TEXMF}/doc/platex/base/
+ cp ./README.md ${TEXMF}/doc/platex/base/
+ cp ./*.pdf ${TEXMF}/doc/platex/base/
+# cp ./*.txt ${TEXMF}/doc/platex/base/
+ mkdir -p ${TEXMF}/source/platex/base
+ cp ./Makefile ${TEXMF}/source/platex/base/
+ cp ./plnews*.tex ${TEXMF}/source/platex/base/
+ cp ./*.dtx ${TEXMF}/source/platex/base/
+ cp ./*.ins ${TEXMF}/source/platex/base/
+ mkdir -p ${TEXMF}/tex/platex/base
+ cp ./kinsoku.tex ${TEXMF}/tex/platex/base/
+ cp ./*.clo ${TEXMF}/tex/platex/base/
+ cp ./*.cls ${TEXMF}/tex/platex/base/
+ cp ./*.def ${TEXMF}/tex/platex/base/
+ cp ./*.fd ${TEXMF}/tex/platex/base/
+ cp ./*.ltx ${TEXMF}/tex/platex/base/
+ cp ./*.sty ${TEXMF}/tex/platex/base/
+ mkdir -p ${TEXMF}/tex/platex/config
+ cp ./platex.ini ${TEXMF}/tex/platex/config/
+clean:
+ rm -f $(PLFMT) $(PLCLS) $(PL209) $(PLREL) \
+ $(DVITARGET) \
+ jltxdoc.cls pldoc.tex Xins.ins
+cleanstrip:
+ rm -f $(PLFMT) $(PLCLS) $(PL209) $(PLREL) \
+ jltxdoc.cls pldoc.tex Xins.ins
+cleanall:
+ rm -f $(PLFMT) $(PLCLS) $(PL209) $(PLREL) \
+ $(DVITARGET) $(PDFTARGET) \
+ jltxdoc.cls pldoc.tex Xins.ins
+cleandoc:
+ rm -f $(DVITARGET) $(PDFTARGET)
diff --git a/language/japanese/platex/README.md b/language/japanese/platex/README.md
new file mode 100644
index 0000000000..652a868b46
--- /dev/null
+++ b/language/japanese/platex/README.md
@@ -0,0 +1,66 @@
+# platex
+
+The bundle provides pLaTeX2e and miscellaneous macros for pTeX and e-pTeX.
+
+The bundle is a community edition forked from the original ASCII edition
+(ptex-texmf-2.5). The GitHub repository
+
+- https://github.com/texjporg/platex
+
+is now maintained by [Japanese TeX Development Community](http://texjp.org).
+
+The original ASCII edition can be obtained from:
+
+- https://ctan.org/pkg/ptex-texmf
+
+## Changes from the original ASCII edition
+
+See the documents (platex.pdf, pldoc.pdf, platexrelease.pdf) for more information.
+
+- Fix macros which are inconsistent with the latest e-pTeX
+ (e.g. \footnote, tabular, \parbox, \underline).
+- Fix several bugs in pLaTeX2e format and packages.
+- Add platexrelease.sty. As with the latexrelease package, this
+ package enables us to use the old versions of pLaTeX2e (from
+ 2006/11/10 the ASCII edition).
+
+## Documentation
+
+A brief exposition of pLaTeX2e is provided in platex.pdf.
+The document can be obtained by executing the following commands:
+
+ platex platex.dtx
+ dvipdfmx platex.dvi
+
+The comprehensive explanation of pLaTeX2e source is included in
+pldoc.pdf. If you are interested in typesetting pldoc.tex yourself,
+the following commands will be helpful:
+
+ platex pldocs.ins
+ platex Xins.ins
+ sh mkpldoc.sh
+ dvipdfmx pldoc.dvi
+
+## Character encoding
+
+All the text files containing Japanese characters in this repository
+are encoded in ISO-2022-JP. This is because ISO-2022-JP encoded
+texts are most suitable for the traditional pTeX engine.
+
+## Repository
+
+The bundle is maintained on GitHub:
+https://github.com/texjporg/platex
+
+If you have issues, please let us know from the above page.
+
+## License
+
+The bundle may be distributed and/or modified under the terms of
+the 3-clause BSD license (see [LICENSE](./LICENSE)).
+
+## Release Date
+
+2019-04-06
+
+Japanese TeX Development Community
diff --git a/language/japanese/platex/exppl2e.pdf b/language/japanese/platex/exppl2e.pdf
new file mode 100644
index 0000000000..f9d04581f3
--- /dev/null
+++ b/language/japanese/platex/exppl2e.pdf
Binary files differ
diff --git a/language/japanese/platex/exppl2e.sty b/language/japanese/platex/exppl2e.sty
new file mode 100644
index 0000000000..b4eadb7226
--- /dev/null
+++ b/language/japanese/platex/exppl2e.sty
@@ -0,0 +1,405 @@
+% \iffalse meta-comment
+%
+% This is file `exppl2e.sty', for experimental pLaTeX2e.
+%
+% Copyright (c) 2016-2018 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% ====================================================================
+% $B3+H/<T$NJ}$X(B (2016-06-29 aminophen)
+%
+% $B$3$N%U%!%$%k$N%3!<%I$r<B:]$K%+!<%M%k$K<h$jF~$l$k$H$-!"C1=c$K%+%C%H!&(B
+% $B%Z!<%9%H$G(B dtx $B%U%!%$%k$XA^F~$7$^$9!#%Z!<%9%H$7$?(B dtx $B%U%!%$%k$+$i(B
+% ltx / sty $B%U%!%$%kEy$r@8@.$7$?$"$H$K$O!"I,$:(B
+% * $B%U%)!<%^%C%H:n@.$K;H$o$l$k(B ltx $B%U%!%$%k$,0U?^$I$*$jJQ99$5$l$?$+(B
+% * platexrelease.sty $B$K?7$?$J%V%m%C%/$,0l$D$@$1DI2C$5$l$?$+(B
+% $B!JNc30E*$K(B 0000/00/00 $B$NF|IU$,4^$^$l$k>l9g$O!"%V%m%C%/$,Fs$D$+!K(B
+% $B$r3NG'$7$^$9!#(B
+% ====================================================================
+%
+%%%%%%%% ^^A driver-like trick using catcode difference
+%
+% This file `exppl2e.sty' is a normal LaTeX package, so
+% \RequirePackage{exppl2e}
+% and
+% \usepackage{exppl2e}
+% works. However, it can also be typeset alone:
+% platex exppl2e.sty
+% for convenience.
+%
+%<*hack>
+\ifx\undefined\@undefined\relax
+% case 1: This file must be a normal package
+ \NeedsTeXFormat{pLaTeX2e}
+ \ProvidesPackage{exppl2e}
+ [2018/12/02 v1.1c Experimental pLaTeX2e features]
+ \PackageWarningNoLine{exppl2e}{%
+ This is the unstable, experimental part of pLaTeX2e.\MessageBreak
+ This package may contain:\MessageBreak
+ * future patches to pLaTeX\MessageBreak
+ * experimental new features\MessageBreak
+ Please note that these can be removed without any\MessageBreak
+ announcement at some point in the future, and may\MessageBreak
+ also have some critical bugs. We appreciate any\MessageBreak
+ reports and comments. Thank you for your cooperation}
+ \RequirePackage[latest]{platexrelease}
+\else
+% case 2: This file pretends to be a document
+ \documentclass{jltxdoc}
+ \title{Experimental p\LaTeXe}
+ \author{Japanese \TeX\ Development Community}
+ \begin{document}
+ \maketitle
+ \DocInput{exppl2e.sty}
+ \end{document}
+\fi % ^^A In case 2, this \fi comes after \end{document}
+%</hack> ^^A so it has no effect.
+% \fi ^^A This \fi corresponds to \iffalse, and another
+% ^^A \fi is required for \ifx, see below;)
+%
+%%%%%%%% ^^A trick end
+%
+% \fi
+%
+%
+% \emph{$BCm0U(B}$B!'$3$l$O(BExperimental$B$J(Bp\LaTeXe{}$B!"$9$J$o$A(Bunstable$B$J(B
+% $B<B83E*(Bp\LaTeX{}$B%3!<%I$rDs6!$9$k%Q%C%1!<%8$G$9!#(B
+%
+%
+% \section{$B$3$N%Q%C%1!<%8$NL\E*(B}
+%
+% $B%3!<%I$NITMQ0U$J2~JQ$OB(%(%s%P%0$K$D$J$,$j!"MxMQ<T$NB?$$(Bp\LaTeX{}$B$d(B
+% up\LaTeX{}$B$G$OFC$K1F6A$,Bg$-$$$H;W$o$l$^$9!#$=$N0lJ}$G!"(Bunstable$B$J$b$N(B
+% $B$b$J$k$Y$/<j7Z$K%F%9%H$7$FD:$-$?$$$H$b9M$($^$9!#(B
+%
+% $B$3$N%Q%C%1!<%8(B\file{exppl2e.sty}$B$O!"%+!<%M%k(B(stable)$B$K>-Mh4^$a$k(B
+% $B$3$H$rA[Dj$7$?(Bunstable$B$J<B83E*%3!<%I$rG[I[$9$k$3$H$rL\E*$K:n@.$7$^$7$?!#(B
+% $B%F%9%H$r$h$m$7$/$*4j$$$7$^$9!#(B
+%
+%
+% \section{$B<B83E*%3!<%I$NFI$_$3$_$+$?(B}
+%
+% $B%G%U%)%k%H$NG[I[$G$O!"<B83E*$J%3!<%I$OL58z2=$5$l$F$$$^$9!#(B
+% $B<B83E*$J(Bp\LaTeXe{}$B$r;n$7$?$$>l9g$O!"0J2<$N$$$:$l$+$NJ}K!$r;H$$$^$9!'(B
+%
+% \subsection{$B>/$7$@$1;n$7$F$_$?$$>l9g(B}
+%
+% $B%Q%C%1!<%8(B\file{exppl2e.sty}$B$rFI$_9~$_$^$9!#$?$@$7!"(B|\usepackage|$BL?Na(B
+% $B$r;H$&$N$G$O$J$/!"J8=q%/%i%9$h$j(B\emph{$BA0(B}$B$KFI$_9~$s$G$*$/$N$,L5Fq$G$9!#(B
+%\begin{verbatim}
+% \RequirePackage{exppl2e}
+% \documentclass{article}
+%\end{verbatim}
+%
+% \subsection{$B>o$K<B83E*%3!<%I$r;HMQ$7$?$$>l9g(B}
+%
+% $B$3$N%Q%C%1!<%8$H0l=o$K%$%s%9%H!<%k$5$l$k?7$7$$(Bp\LaTeX{}$B$O!"$*;H$$$N(B
+% \texttt{platex}$B$J$I$N%W%m%0%i%`$,8+$D$1$k$3$H$N$G$-$k>l=j!J4JC1$J$N(B
+% $B$O%+%l%s%H%G%#%l%/%H%j!"$"$k$$$O(B|$TEXMFLOCAL/tex|$B0J2<$NE,@Z$J>l=j!K(B
+% $B$K(B\file{platex.cfg}$B$H$$$&%U%!%$%k$,$"$l$P!"5/F0;~$K$=$l$rFI$_9~$_(B
+% $B$^$9!#$3$N5!G=$rMxMQ$9$k$H!"0J2<$NFbMF$N(B\file{platex.cfg}$B$rMQ0U$7(B
+% $B$F$*$/$@$1$G!"<+F0E*$KKh2s(B\file{exppl2e.sty}$B$,FI$_9~$^$l$^$9!#(B
+%\begin{verbatim}
+% \RequirePackage{exppl2e}
+%\end{verbatim}
+%
+%
+% \section{$B$3$N%I%-%e%a%s%H$K$D$$$F(B}
+%
+% $B%3%_%e%K%F%#HG(Bp\LaTeX{}$B$,G[I[$9$k$[$+$N(Bsty$B%U%!%$%k$H$O0[$J$j!"(B
+% $B<B<AE*$K$O(B\file{exppl2e.sty}$B$O(Bdtx$B%U%!%$%k$HF1Ey$G$9!#$9$J$o$A!"(B
+% $B%3!<%I$H0l=o$K(Bdtx$B8_49%I%-%e%a%s%H$,4^$^$l$F$$$^$9!#$3$N%I%-%e%a%s%H(B
+% $B$rAHHG$9$k$K$O(B
+%\begin{verbatim}
+% # platex exppl2e.sty
+%\end{verbatim}
+% $B$r<B9T$7$^$9!#(B
+%
+%
+% \section{$B%3!<%I(B}
+%
+% $B$3$3$+$i(Bp\LaTeXe{}$B$N(Bexperimental$B%3!<%IK\BN$G$9!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{$B2~9T(B}
+%
+% $B6/@)2~9T(B|\\|$B$H(B|\par|$B$,O"B3$7$?>l9g$N5sF0$K$D$$$F$O0J2<$N$H$*$jJ]N1Cf!#(B
+% $B;29M!'(BGitHub:texjporg/platex\#27
+%
+% \begin{macro}{\@gnewline}
+% \changes{v1.1c}{1995/08/25}{$B9TF,6XB'J8;z$ND>A0$G$N2~9T$G$NIT6q9g$N=$@5(B}
+% $BF|K\8l(B\TeX{}$B$N9TF,6XB'=hM}$O!"6XB'BP>]J8;z$ND>A0$K!"(B
+% |\prebreakpenalty|$B$G;XDj$5$l$?%Z%J%k%F%#$NCM$rA^F~$9$k$3$H$G(B
+% $B9T$J$C$F$$$^$9!#(B
+% $B$H$3$m$,!"2~9T%3%^%s%I$OIi$N%Z%J%k%F%#$NCM$rA^F~$9$k$3$H$G2~9T$r9T$J$$$^$9!#(B
+% $B$=$N$?$a$K!"6XB'%Z%J%k%F%#$NCM$,(B$10000$$B$NJ8;z$ND>8e$G$O!"%Z%J%k%F%#$NCM$,(B
+% $BAj;&$5$l!"2~9T$9$k$3$H$,$G$-$^$;$s!#(B
+%
+%\begin{verbatim}
+% $B$"$$$&$($*(B\\
+% $B!*$+$-$/$1$3(B
+%\end{verbatim}
+%
+% $B$7$?$,$C$F!"(B|\newline|$B%^%/%m$K(B|\mbox{}|$B$rF~$l$k$3$H$K$h$C$F!"(B
+% |\newline|$B%^%/%m$N%Z%J%k%F%#(B$-10000$$B$H9TF,J8;z$N%Z%J%k%F%#(B$10000$$B$,(B
+% $B2C;;$5$l$J$$$h$&$K$7$^$9!#(B|\\|$B$O(B|\newline|$B%^%/%m$r8F$S=P$7$F$$$^$9!#(B
+%
+% $B$J$*!"(B|\newline|$B%^%/%m$O(B\file{ltspaces.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+%
+% \changes{v1.1j}{1999/04/05}{$B%*%W%7%g%s$rIU$1$?>l9g$K!"M>7W$J6uGr(B
+% $B$,F~$C$F$7$^$&$N$r=$@5!#$"$j$,$H$&!"NkLZN4;V!w5~ETBg3X$5$s!#(B}
+% \changes{v1.1h}{1997/06/25}{\LaTeX\ $B$N2~9T%^%/%m$NJQ99$KBP1~!#(B
+% $B$"$j$,$H$&!"1|B<$5$s!#(B}
+% \LaTeX\ \texttt{<1996/12/01>}$B$G2~9T%^%/%m$,JQ99$5$l!"(B|\\|$B$,(B
+% |\newline|$B$r8F$S=P$5$J$/$J$C$?$?$a!"JQ99$5$l$?2~9T%^%/%m$KBP1~$7$^$7(B
+% $B$?!#(B|\null|$B$NA^F~0LCV$OF1$8$G$9!#(B
+% \file{ltspace.dtx}$B$NDj5A$r>e5-$K9g$o$;$F!"Dj5A$7$J$*$7$^$7$?!#(B
+%
+% \emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$kJdB-(B}$B!'(B
+% $B%"%9%-!<$K$h$k(Bp\LaTeX{}$B$G$O!"9TF,6XB'J8;z$ND>A0$G(B|\\|$B$K$h$k6/@)2~9T$r(B
+% $B9T$($k$h$&$K$9$k$H$$$&L\E*$G(B
+% |\null|$B$r(B|\@gnewline|$B%^%/%mFb$KA^F~$7$F$$$^$7$?!#(B
+% $B$7$+$7!"$3$l$G$O(B|\\\par|$B$H=q$$$?>l9g$K(BUnderfull$B7Y9p$,=P$J$/$J$C$F(B
+% $B$$$^$9!J(B|tests/newline_par.tex|$B$r(B\texttt{latex}$B$H(B\texttt{platex}$B$G(B
+% $B=hM}$7$F$_$F$/$@$5$$!K!#(B
+%
+% $B$b$7(B|\null|$B$NBe$o$j$K(B|\hskip\z@|$B$rA^F~$9$l$P!"(B\LaTeX{}$B$HF1MM$K(B
+% Underfull$B7Y9p$r=P$9$3$H$,$G$-$^$9!#(B
+% $B$?$@$7!"(B|\null|$B$rA^F~$7$?>l9g$H0[$J$j!"6/@)2~9T8e$N9TF,$K(B
+% JFM$B%0%k!=$,F~$i$J$/$J$j$^$9!#$3$l$O$`$7$m!"1|B<$5$s$N(Bjsclasses$B$G(B
+% $B9TF,$rE7%D%-$KD>$7$F$$$k$N$HF1$8$G$9$,!"(Bp\LaTeX{}$B$H$7$F$O5sF0$,(B
+% $BJQ2=$7$F$7$^$$$^$9$N$G!"8=;~E@$G$O(B|\null|$B"*(B|\hskip\z@|$B$X$NJQ99$r(B
+% $B8+Aw$C$F$$$^$9!#(B
+% \changes{v1.2n}{2017/04/23}{$B%I%-%e%a%s%H$NDI2C(B}
+%
+% $B$b$7JQ99$9$k$J$i$P!"0J2<$N%3!<%I$rM-8z$K$7$^$9!#(B
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{????/??/??}{\@gnewline}
+%<platexrelease> {Restore Underfull warning for |\\\par|}%
+%<*plcore|platexrelease>
+%\def\@gnewline #1{%
+% \ifvmode
+% \@nolnerr
+% \else
+% \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \hskip \z@
+% \ignorespaces
+% \fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@gnewline}
+%<platexrelease> {Restore Underfull warning for |\\\par|}%
+%<platexrelease>\def\@gnewline #1{%
+%<platexrelease> \ifvmode
+%<platexrelease> \@nolnerr
+%<platexrelease> \else
+%<platexrelease> \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
+%<platexrelease> \ignorespaces
+%<platexrelease> \fi}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% |\linebreak|$B$N5sF0$N=$@5$O!"%P%0$,Aj<!$$$@$?$a<h$j$d$a$F$$$^$9!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{$BAj8_;2>H(B}
+%
+% p\LaTeXe{}$B%+!<%M%k(B(2017/10/28)$B$N=$@5$K2C$(!"0J2<$N=$@5$r8!F$Cf$G$9$,!"(B
+% $B8=;~E@$G$OJ]N1$7$F$$$^$9!#(B
+% $B;29M!'(BGitHub:texjporg/platex\#57
+%
+% \begin{macro}{\@setref@}
+% $B$5$i$K!";2>H$7$?7k2L$,!V6u!W$N>l9g(B
+%\begin{verbatim}
+% \documentclass{article}
+% \pagenumbering{gobble}
+% \begin{document}
+% \pageref{a}\label{a}
+% \end{document}
+%\end{verbatim}
+% $B$KAj8_;2>H$,<}B+$7$J$/$J$k(B\footnote{$B4q?t2s%3%s%Q%$%k$9$k$H(B
+% Output written on test.dvi (1 page, 212 bytes).
+% $B$H$J$j!"6v?t2s%3%s%Q%$%k$9$k$H(B
+% No pages of output.
+% $B$H$J$j$^$9!#(B}$B$N$rKI$0$?$a!"?eJ?%b!<%I0J30$G$O(B
+% $B$d$O$j(B|\null|$B$rH/9T$7$F$_$^$9!#(B
+% \begin{macrocode}
+%\def\@setref@{\ifhmode\spacefactor\@m\else\null\fi}
+% \end{macrocode}
+% \end{macro}
+% $B$3$N%3!<%I$O!"(Bemath$B$N(B|\marusuuref|$B$N$h$&$J(B
+% $B!V(B|\ref|$B$r;H$C$F;2>H@h$NHV9f$@$1$r<hF@$9$k!W(B
+% $B$H$$$&%^%/%m$NF0:n$K!J?bD>%b!<%I$G;H$&>l9g$J$I!K1F6A$9$k$?$a!"(B
+% $B$R$H$^$:%3%a%s%H%"%&%H$7$F$*$-$^$9!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{$B6u$N%Z!<%8(B}
+%
+% $B8=;~E@$G$OJ]N1$7$F$$$^$9!#(B
+% $B;29M!'(BGitHub:texjporg/platex\#78
+%
+% \LaTeXe\ 2017/01/01$B0J9_$G$O!"Nc$($P(B
+%\begin{verbatim}
+% \documentclass{tarticle}
+% \begin{document}
+% \begin{figure}
+% \end{figure}
+% \clearpage
+% a
+% \end{document}
+%\end{verbatim}
+% $B$N$h$&$K$9$k$H!V6u$N%U%m!<%H!W$@$1$N6uGr%Z!<%8$rH/@8$5$;$k$3$H$,(B
+% $B$G$-$^$9!#$3$N>l9g!"=DAH%/%i%9$rMQ$$$F$$$k$H%U%C%?$,;}$A>e$,$j$^$9!#(B
+%
+% $B$J$*!"(B\LaTeXe\ 2015/01/01$B!A(B2016/03/31 patch level 3$B$G$O(B
+%\begin{verbatim}
+% ! Output loop---100 consecutive dead cycles.
+%\end{verbatim}
+% $B$N%(%i!<$,=P$F!"$=$l0JA0$G$O6uGr%Z!<%8$OH/@8$7$^$;$s!#(B
+%
+% $B%U%m!<%H$G$J$$6uGr%Z!<%8$G%Z!<%8%U%C%?$,;}$A>e$,$kLdBj$X$O!"(B
+% |\@makecol|$B$N(B|\iftdir\vbox{\hskip\z@}\fi|$B$GBP=h$7$F$"$j$^$9$,!"(B
+% $B%U%m!<%H$,$"$k6uGr%Z!<%8$G$O(B|\@makecol|$B$,8F$P$l$J$$$3$H$+$i(B
+% $BBP:v$,8z$$$F$$$^$;$s!#$?$@!"%U%m!<%H$,6u$G$"$k>u67$O(B
+% $B85!9IT<+A3$J$N$G!"8=:_$O%5%]!<%H$7$F$$$^$;$s!#(B
+%
+% $B$b$7BP:v$9$k$3$H$K$J$l$P!"2<5-$N%3!<%I$r;HMQ$7$^$9!#(B
+% \begin{macro}{\@vtryfc}
+% \file{ltoutput.dtx}$B$GDj5A$5$l$F$$$k(B|\@vtryfc|$B$K(B
+% |\iftdir\hskip\z@\fi|$B$rDI2C$7$F$"$j$^$9!#(B
+% \begin{macrocode}
+\def\@vtryfc #1{%
+ \global\setbox\@outputbox\vbox{\iftdir\hskip\z@\fi}%
+ \let\@elt\@wtryfc
+ \@flsucceed
+ \global\setbox\@outputbox \vbox to\@colht{%
+ \vskip \@fptop
+ \vskip -\@fpsep
+ \unvbox \@outputbox
+ \vskip \@fpbot}%
+ \let\@elt\relax
+ \xdef #1{\@failedlist\@flfail}%
+ \xdef\@freelist{\@freelist\@flsucceed}}
+% \end{macrocode}
+% \end{macro}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{$B;YCl(B}
+%
+% \begin{macro}{\strut}
+% \cs{strut}$B$r=D?t<0%G%#%l%/%7%g%s$G;H$C$?>l9g$X$N=$@5!#(B
+% \begin{macrocode}
+%% \strut $B$N2~NIHG(B
+\def\strut{\relax
+ \iftdir
+ \ifmdir
+ %% [$B=D?t<0%G%#%l%/%7%g%s(B]
+ %% $B%F%-%9%H%b!<%I$N>l9g$O(B \zstrutbox $B$G$J$1$l$P$J$i$J$$5$$,$9$k!#(B
+ %% $B!J2<@~(B \underline $B$G;H$&>l9g$K2#AH$N(B 90 $BEY2sE>$K$J$i$J$$!K(B
+ %% $B?t<0%b!<%I$N>l9g$O(B \zstrutbox $B$KJQ$($k$H$+$($C$F%P%i%s%9$,Jx$l$k$,!$(B
+ %% $B$3$l$O(B \copy $B$7$?%\%C%/%9$K%Y!<%9%i%$%sJd@5$,8z$+$J$$$?$a$G$"$j!$(B
+ %% $B$=$NJ,(B \lower $B$G2<$2$k!#(B
+ \ifmmode \lower \tbaselineshift \copy \zstrutbox \else \unhcopy \zstrutbox \fi
+ \else
+ %% [$B=D%G%#%l%/%7%g%s(B]
+ %% $B%F%-%9%H%b!<%I$N>l9g$O(B \tstrutbox $B$GNI$$!#(B
+ %% $B?t<0%b!<%I$KF~$k$H<+F0E*$K(B [$B=D?t<0%G%#%l%/%7%g%s(B] $B$KF~$k$N$GJ,4tITMW!#(B
+ \unhcopy \tstrutbox
+ \fi
+ \else
+ %% [$B2#%G%#%l%/%7%g%s(B]
+ %% $B%F%-%9%H%b!<%I$N>l9g$O(B \(y)strutbox $B$GNI$$!#(B
+ %% $B?t<0%b!<%I$G$O%Y!<%9%i%$%sJd@5J,$@$1(B \lower $B$G2<$2$k!#(B
+ \ifmmode \lower \ybaselineshift \copy \ystrutbox \else \unhcopy \ystrutbox \fi
+ \fi}
+%% \strutbox $B$O(B \zstrutbox $B$r;H$&$H$^$:$=$&$J$N$G(B 2017-04-08 $B$N$^$^$H$9$k!#(B
+%% $B0J2<$N%3!<%I$O;H$o$J$$!#(B
+%\def\strutbox{%
+% \iftdir \ifmdir \zstrutbox \else \tstrutbox \fi
+% \else \ystrutbox \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \cs{strutbox}$B$NJQ99$O(B2017/04/08$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{$B5SCm$N9g0uD>8e$G$N2~9T$r5v2D(B}
+%
+% 2016/09/03$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{e-p\TeX{}$B$G$N(BFAM256$B%Q%C%A$NMxMQ(B}
+%
+% 2016/11/29$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{$B5SCm$H%\%H%`%U%m!<%H$N=g=x$*$h$S?bD>0LCV(B}
+%
+% 2017/04/08$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{\cs{textunderscore}$B$N%Y!<%9%i%$%sJd@5(B}
+%
+% 2017/04/08$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{verbatim$B$H%O%$%U%M!<%7%g%s(B}
+%
+% 2017/04/08$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{\cs{verb}$B$NKAF,$N%9%Z!<%9(B}
+%
+% 2017/10/28$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{tabbing$B4D6-$N9TKAF,$N(BJFM$B%0%k!=(B}
+%
+% 2017/10/28$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{\cs{inhibitglue}$B$N4JN,7A(B}
+%
+% 2017/10/28$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{$B%$%?%j%C%/Jd@5$H(B\cs{xkanjiskip}}
+%
+% 2017/10/28$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \subsection{$BD>A0$N(BJFM$BM3Mh%9%Z!<%9$N:o=|!Z%3%_%e%K%F%#HGFH<+![(B}
+%
+% 2018/03/09$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{tabular$B4D6-$N%;%kFb$N(BJFM$B%0%k!=(B}
+%
+% 2018/03/09$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{PDF$B$N%V%C%/%^!<%/$H%"%/%;%s%HJ8;z(B}
+%
+% 2018/07/28$B$KF3F~:Q$_!#(B
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\endinput
diff --git a/language/japanese/platex/jclasses.dtx b/language/japanese/platex/jclasses.dtx
new file mode 100644
index 0000000000..04c939bacb
--- /dev/null
+++ b/language/japanese/platex/jclasses.dtx
@@ -0,0 +1,4523 @@
+% \iffalse meta-comment
+%% File: jclasses.dtx
+%
+% Copyright 1995-2001 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016-2019 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% \fi
+%
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.0}{1995/04/19}{first edition}
+% \changes{v1.0a}{1995/08/30}{$B%Z!<%8%9%?%$%kItJ,$ND4@0(B}
+% \changes{v1.0b}{1995/11/08}{$B%Z!<%8%9%?%$%kItJ,$ND4@0(B}
+% \changes{v1.0c}{1996/01/30}{\LaTeX\ \texttt{!<1995/12/01!>}$B$G$N=$@5$rH?1G(B}
+% \changes{v1.0d}{1996/02/29}{$B%G%U%)%k%H%Z!<%8%9%?%$%k$N=$@5(B}
+% \changes{v1.0e}{1996/03/14}{itemize, enumerate$B4D6-$N=$@5(B}
+% \changes{v1.0f}{1996/07/10}{$BLLIU$1%*%W%7%g%s$rDI2C(B}
+% \changes{v1.0g}{1996/09/03}{$B%H%s%\$N2#$K:n@.F|;~$r=PNO$9$k$h$&$K$7$?(B}
+% \changes{v1.1}{1997/01/16}{\LaTeX\ \texttt{!<1996/06/01!>}$BHG$KBP1~(B}
+% \changes{v1.1a}{1997/01/23}{\LaTeX\ \texttt{!<1996/12/01!>}$BHG$KBP1~(B}
+% \changes{v1.1a}{1997/01/25}{$B8_49%b!<%I$G(Bp\LaTeX~2.09$B$N(Ba4j$B$J$I$N(B
+% $BMQ;f%*%W%7%g%s$KBP1~(B}
+% \changes{v1.1b}{1997/01/28}{$BF|K\8l%U%!%_%j$N@k8@$r:FEY!"<BAu(B}
+% \changes{v1.1d}{1997/01/29}{2e$B%b!<%I$G(Ba4j$B$J$I$N%*%W%7%g%s$KBP1~(B}
+% \changes{v1.1e}{1997/04/08}{$B%H%C%W%^!<%8%s$NCM$r=$@5(B}
+% \changes{v1.1f}{1997/07/08}{$B=DAH%/%i%9$G%Y!<%9%i%$%s$,$*$+$7$$$N$r=$@5(B}
+% \changes{v1.1g}{1997/08/25}{$BJRLL0u:~$N$H$-!"(Bsection$B%l%Y%k$,=PNO$5$l$J$$(B
+% $B$N$r=$@5(B}
+% \changes{v1.1h}{1997/09/03}{landscape$B;XDj;~$NCM$r=$@5(B}
+% \changes{v1.1i}{1997/12/12}{report, book$B%/%i%9$GJRLL0u:~;~$K!"(B
+% bothstyle$B%9%?%$%k$K$9$k$H!"%3%s%Q%$%k%(%i!<$K$J$k$N$r=$@5(B}
+% \changes{v1.1j}{1998/02/03}{$B8_49%b!<%I;~$N(Ba5p$B$N%H%C%W%^!<%8%s$r(B0.7in$BA}2C(B}
+% \changes{v1.1k}{1998/03/23}{report$B$H(Bbook$B%/%i%9$GHV9f$rIU$1$J$$8+=P$7$N(B
+% $B%Z%J%k%F%#$,(B\cs{M@}$B$@$C$?$N$r(B\cs{@M}$B$K=$@5(B}
+% \changes{v1.1m}{1998/04/07}{\cs{today}$B$N7W;;<j=g$rJQ99(B}
+% \changes{v1.1n}{1998/10/13}{report,book$B%/%i%9$NI=HV9f$,(B
+% $B8+=P$7%l%Y%k$K4X78$J$/(Bchapter$BHV9f$,=PNO$5$l$F$7$^$&$N$r=$@5(B}
+% \changes{v1.1n}{1998/10/13}{mentuke$B%*%W%7%g%s$,%(%i!<$K$J$C$F$$$?$N$r=$@5(B}
+% \changes{v1.1o}{1998/12/24}{secnumdepth$B%+%&%s%?$r(B$-1$$B0J2<$K$9$k$H!"(B
+% $B8+=P$7J8;zNs$b>C$($F$7$^$&$N$r=$@5(B}
+% \changes{v1.1p}{1999/1/6}{\cs{oddsidemargin}$B$N%]%$%s%H$X$NJQ49$r8e$m$K(B}
+% \changes{v1.1q}{1999/05/18}{$B=DAH;~$N$_$K@_Dj$9$k$h$&$K$7$?(B}
+% \changes{v1.1r}{1999/08/09}{$B%H%C%W%^!<%8%s$N7W;;<0$r=$@5(B}
+% \changes{v1.2}{2001/09/04}{\cs{chapter}$B$N=PNO0LCV$,%"%9%?%j%9%/7A<0$H(B
+% $B$=$&$G$J$$$H$-$H0c$&$N$r=$@5(B($B$"$j$,$H$&!"NkLZ!wDE$5$s(B)}
+% \changes{v1.3}{2001/10/04}{$BL\<!$N%Z!<%8HV9f$N=qBN$r(B\cs{rmfamily}$B$+$i(B
+% \cs{normalfont}$B$KJQ99(B($B$"$j$,$H$&!"NkLZ$?!w(BMILN$B$5$s(B)}
+% \changes{v1.4}{2002/04/09}{$B=DAH%9%?%$%k$G(B\cs{flushbottom}$B$7$J$$$h$&$K$7$?(B}
+% \changes{v1.5}{2004/01/15}{\cs{part},\cs{chapter}$B$N(B\cs{@afterindentfalse}$B$r(B
+% \cs{@afterindenttrue}$B$KJQ99!#(B
+% \cs{section},\cs{subsection},\cs{subsubsection}$B$NA08e6u$-$N?-=LI}$r=$@5!#(B
+% ($B$"$j$,$H$&$4$6$$$^$9!"NkLZ$?!w(BMILN$B$5$s(B)}
+% \changes{v1.6}{2006/06/27}{$B%U%)%s%H%3%^%s%I$r=$@5!#$"$j$,$H$&!"(Bymt$B$5$s!#(B}
+% \changes{v1.7}{2016/11/12}{$B%I%-%e%a%s%H$KH?$7$F(B\cs{@maketitle}$B$,(B
+% $B6u$K$J$C$F$$$J$+$C$?$N$r=$@5(B}
+% \changes{v1.7}{2016/11/12}{use \cs{@width} (sync with classes.dtx v1.3a)}
+% \changes{v1.7}{2016/11/12}{Replaced all \cs{hbox to} by
+% \cs{hb@xt@} (sync with classes.dtx v1.3a)}
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+% arg (sync with classes.dtx v1.4c)}
+% \changes{v1.7}{2016/11/12}{\cs{columnsep}$B$H(B\cs{columnseprule}$B$N(B
+% $BJQ99$r8e$m$K0\F0(B(sync with classes.dtx v1.4f)}
+% \changes{v1.7a}{2016/11/16}{Check \texttt{@noskipsec} switch and
+% possibly force horizontal mode (sync with classes.dtx v1.4a)}
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \changes{v1.7a}{2016/11/16}{Added \cs{nobreak} for
+% latex/2343 (sync with ltsect.dtx v1.0z)}
+% \changes{v1.7a}{2016/11/16}{Use \cs{expandafter}
+% (sync with ltlists.dtx v1.0j)}
+% \changes{v1.7b}{2016/11/22}{$BJdB-%I%-%e%a%s%H$rDI2C(B}
+% \changes{v1.7c}{2016/12/18}{Only add empty page after part if
+% twoside and openright (sync with classes.dtx v1.4b)}
+% \changes{v1.7c}{2016/12/18}{$B4qL/$J(Barticle$B%,!<%I$H%3!<%I$r:o=|$7$F(B
+% $B%I%-%e%a%s%H$rDI2C(B}
+% \changes{v1.7d}{2017/02/15}{\cs{if@openleft}$B%9%$%C%ADI2C(B}
+% \changes{v1.7d}{2017/02/15}{openleft$B%*%W%7%g%sDI2C(B}
+% \changes{v1.7d}{2017/02/15}{\cs{cleardoublepage}$B$NBeMQ$H$J$kL?Na72$rDI2C(B}
+% \changes{v1.7d}{2017/02/15}{book$B%/%i%9$G(Btitlepage$B$rI,$:4q?t%Z!<%8(B
+% $B$KAw$k$h$&$KJQ99(B}
+% \changes{v1.7d}{2017/02/15}{titlepage$B$N%Z!<%8HV9f$r4q?t$J$i$P(B1$B$K!"(B
+% $B6v?t$J$i$P(B0$B$K%j%;%C%H$9$k$h$&$KJQ99(B}
+% \changes{v1.7d}{2017/02/15}{$B=DAH%/%i%9$N=jB0I=<($NHV9f$rD>N)$K$7$?(B}
+% \changes{v1.7e}{2017/03/05}{$B%H%s%\$KI=<($9$k%8%g%V>pJs$N=q<0$rJQ99(B}
+% \changes{v1.7e}{2017/03/05}{\cs{frontmatter}$B$H(B\cs{mainmatter}$B$r(B
+% $B4q?t%Z!<%8$KAw$k$h$&$KJQ99(B}
+% \changes{v1.7f}{2017/08/31}{$BOBJ8=qBN$N4p=`$rA43Q6uGr$+$i!V4A!W$KJQ99(B}
+% \changes{v1.7g}{2017/09/19}{$BFbIt=hM}$G;H$C$?%\%C%/%9(B0$B$r6u$K$7$?(B}
+% \changes{v1.7h}{2018/02/04}{$BOBJ8%9%1!<%kCM(B\cs{Cjascale}$B$rDj5A(B}
+% \changes{v1.8}{2018/07/03}{\cs{today}$B$N%G%U%)%k%H$rOBNq$+$i@>Nq$KJQ99(B}
+% \changes{v1.8a}{2018/10/25}{$B%U%!%$%k=q$-=P$7;~$N9TKvJ8;zBP:v(B
+% (sync with ltsect.dtx 2018/09/26 v1.1c)}
+% \changes{v1.8b}{2019/04/02}{$B?7859fBP1~(B}
+% \fi
+%
+% \iffalse
+\NeedsTeXFormat{pLaTeX2e}
+%<*driver>
+\ProvidesFile{jclasses.dtx}
+%</driver>
+%<*yoko>
+%<article>\ProvidesClass{jarticle}
+%<report>\ProvidesClass{jreport}
+%<book>\ProvidesClass{jbook}
+%<10pt&!bk>\ProvidesFile{jsize10.clo}
+%<11pt&!bk>\ProvidesFile{jsize11.clo}
+%<12pt&!bk>\ProvidesFile{jsize12.clo}
+%<10pt&bk>\ProvidesFile{jbk10.clo}
+%<11pt&bk>\ProvidesFile{jbk11.clo}
+%<12pt&bk>\ProvidesFile{jbk12.clo}
+%</yoko>
+%<*tate>
+%<article>\ProvidesClass{tarticle}
+%<report>\ProvidesClass{treport}
+%<book>\ProvidesClass{tbook}
+%<10pt&!bk>\ProvidesFile{tsize10.clo}
+%<11pt&!bk>\ProvidesFile{tsize11.clo}
+%<12pt&!bk>\ProvidesFile{tsize12.clo}
+%<10pt&bk>\ProvidesFile{tbk10.clo}
+%<11pt&bk>\ProvidesFile{tbk11.clo}
+%<12pt&bk>\ProvidesFile{tbk12.clo}
+%</tate>
+ [2019/04/02 v1.8b
+%<article|report|book> Standard pLaTeX class]
+%<10pt|11pt|12pt> Standard pLaTeX file (size option)]
+%<*driver>
+]
+\documentclass{jltxdoc}
+\GetFileInfo{jclasses.dtx}
+\title{p\LaTeXe{}$B$NI8=`%/%i%9(B\space\fileversion}
+\author{Ken Nakano}
+\date{$B:n@.F|!'(B\filedate}
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% $B$3$N%U%!%$%k$O!"(Bp\LaTeXe{}$B$NI8=`%/%i%9%U%!%$%k$G$9!#(B
+% \dst{}$B%W%m%0%i%`$K$h$C$F!"2#AHMQ$N%/%i%9%U%!%$%k$H=DAHMQ$N%/%i%9%U%!%$%k(B
+% $B$r:n@.$9$k$3$H$,$G$-$^$9!#(B
+%
+% $B<!$K(B\dst{}$B%W%m%0%i%`$N$?$a$N%*%W%7%g%s$r<($7$^$9!#(B
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{l|l}
+% \emph{$B%*%W%7%g%s(B} & \emph{$B0UL#(B}\\\hline
+% article & article$B%/%i%9$r@8@.(B\\
+% report & report$B%/%i%9$r@8@.(B\\
+% book & book$B%/%i%9$r@8@.(B\\
+% 10pt & 10pt$B%5%$%:$N@_Dj$r@8@.(B\\
+% 11pt & 11pt$B%5%$%:$N@_Dj$r@8@.(B\\
+% 12pt & 12pt$B%5%$%:$N@_Dj$r@8@.(B\\
+% bk & book$B%/%i%9MQ$N%5%$%:$N@_Dj$r@8@.(B\\
+% tate & $B=DAHMQ$N@_Dj$r@8@.(B\\
+% yoko & $B2#AHMQ$N@_Dj$r@8@.(B\\
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+%
+% \section{$B%*%W%7%g%s%9%$%C%A(B}
+% $B$3$3$G$O!"8e$[$I;HMQ$9$k$$$/$D$+$N%3%^%s%I$d%9%$%C%A$rDj5A$7$F$$$^$9!#(B
+%
+% \begin{macro}{\c@@paper}
+% $BMQ;f%5%$%:$r<($9$?$a$K;H$$$^$9!#(B
+% A4, A5, B4, B5$BMQ;f$O$=$l$>$l!"(B1, 2, 3, 4$B$H$7$FI=$5$l$^$9!#(B
+% \begin{macrocode}
+%<*article|report|book>
+\newcounter{@paper}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@landscape}
+% $BMQ;f$r2#8~$-$K$9$k$+$I$&$+$N%9%$%C%A$G$9!#%G%U%)%k%H$O!"=D8~$-$G$9!#(B
+% \begin{macrocode}
+\newif\if@landscape \@landscapefalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@ptsize}
+% $BAHHG$r$9$k%]%$%s%H?t$N0l$N0L$rJ]B8$9$k$?$a$K;H$$$^$9!#(B
+% 0, 1, 2$B$N$$$:$l$+$G$9!#(B
+% \begin{macrocode}
+\newcommand{\@ptsize}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@restonecol}
+% $BFsCJAH;~$KMQ$$$k%F%s%]%i%j%9%$%C%A$G$9!#(B
+% \begin{macrocode}
+\newif\if@restonecol
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@titlepage}
+% $B%?%$%H%k%Z!<%8$d%"%V%9%H%i%/%H!J35MW!K$r(B
+% $BFHN)$7$?%Z!<%8$K$9$k$+$I$&$+$N%9%$%C%A$G$9!#(B
+% report$B$H(Bbook$B%9%?%$%k$N%G%U%)%k%H$G$O!"FHN)$7$?%Z!<%8$K$J$j$^$9!#(B
+% \begin{macrocode}
+\newif\if@titlepage
+%<article>\@titlepagefalse
+%<report|book>\@titlepagetrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openright}
+% chapter$B%l%Y%k$r1&%Z!<%8$+$i$O$8$a$k$+$I$&$+$N%9%$%C%A$G$9!#(B
+% $B2#AH$G$O4q?t%Z!<%8!"=DAH$G$O6v?t%Z!<%8$+$i;O$^$k$3$H$K$J$j$^$9!#(B
+% report$B%/%i%9$N%G%U%)%k%H$O!"(B``no''$B$G$9!#(B
+% book$B%/%i%9$N%G%U%)%k%H$O!"(B``yes''$B$G$9!#(B
+% \begin{macrocode}
+%<!article>\newif\if@openright
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openleft}
+% chapter$B%l%Y%k$r:8%Z!<%8$+$i$O$8$a$k$+$I$&$+$N%9%$%C%A$G$9!#(B
+% $BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#HG$G?7$?$KDI2C$5$l$^$7$?!#(B
+% $B2#AH$G$O6v?t%Z!<%8!"=DAH$G$O4q?t%Z!<%8$+$i;O$^$k$3$H$K$J$j$^$9!#(B
+% report$B%/%i%9$H(Bbook$B%/%i%9$NN>J}$G!"%G%U%)%k%H$O(B``no''$B$G$9!#(B
+% \changes{v1.7d}{2017/02/15}{\cs{if@openleft}$B%9%$%C%ADI2C(B}
+% \begin{macrocode}
+%<!article>\newif\if@openleft
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.0c}{1995/12/25}{Macro \cs{if@openbib} removed}
+%
+% \begin{macro}{\if@mainmatter}
+% $B%9%$%C%A(B|\@mainmatter|$B$,??$N>l9g!"K\J8$r=hM}$7$F$$$^$9!#(B
+% $B$3$N%9%$%C%A$,56$N>l9g$O!"(B|\chapter|$B%3%^%s%I$O8+=P$7HV9f$r=PNO$7$^$;$s!#(B
+% \begin{macrocode}
+%<book>\newif\if@mainmatter \@mainmattertrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hour}
+% \begin{macro}{\minute}
+% \begin{macrocode}
+\hour\time \divide\hour by 60\relax
+\@tempcnta\hour \multiply\@tempcnta 60\relax
+\minute\time \advance\minute-\@tempcnta
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@stysize}
+% \changes{v1.1a}{1997/01/25}{Add \cs{if@stysize}.}
+% p\LaTeXe~2.09$B8_49%b!<%I$G!"%9%?%$%k%*%W%7%g%s$K(Ba4j,a5p$B$J$I$,;XDj$5$l$?(B
+% $B$H$-$NF0:n$r%(%_%e%l!<%H$9$k$?$a$N%U%i%0$G$9!#(B
+% \begin{macrocode}
+\newif\if@stysize \@stysizefalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@enablejfam}
+% \changes{v1.1b}{1997/01/28}{\break Add \cs{if@enablejfam}}
+% $BF|K\8l%U%!%_%j$r@k8@$9$k$?$a$KMQ$$$k%U%i%0$G$9!#(B
+% \begin{macrocode}
+\newif\if@enablejfam \@enablejfamtrue
+% \end{macrocode}
+% $BOB2$J8N>BP1~$N?t<0J8;z%3%^%s%I$rM-8z$K$9$k$H$-$KMQ$$$k%U%i%0$G$9!#(B
+% $B%^%/%m$NE83+=g=x$,J#;($K$J$k$N$rHr$1$k$?$a!"(B
+% $B%G%U%)%k%H$G$O(Bfalse$B$H$7$F$"$j$^$9!#(B
+% \begin{macrocode}
+\newif\if@mathrmmc \@mathrmmcfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \section{$B%*%W%7%g%s$N@k8@(B}
+% $B$3$3$G$O!"%/%i%9%*%W%7%g%s$N@k8@$r9T$J$C$F$$$^$9!#(B
+%
+% \subsection{$BMQ;f%*%W%7%g%s(B}
+% $BMQ;f%5%$%:$r;XDj$9$k%*%W%7%g%s$G$9!#(B
+% \begin{macrocode}
+\DeclareOption{a4paper}{\setcounter{@paper}{1}%
+ \setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{a5paper}{\setcounter{@paper}{2}%
+ \setlength\paperheight {210mm}
+ \setlength\paperwidth {148mm}}
+\DeclareOption{b4paper}{\setcounter{@paper}{3}%
+ \setlength\paperheight {364mm}
+ \setlength\paperwidth {257mm}}
+\DeclareOption{b5paper}{\setcounter{@paper}{4}%
+ \setlength\paperheight {257mm}
+ \setlength\paperwidth {182mm}}
+% \end{macrocode}
+% \changes{v1.0a}{1995/09/26}{Change b4paper width/height 352x250 to 364x257}
+% \changes{v1.0a}{1995/09/26}{Change b5paper width/height 250x176 to 257x182}
+% $B%I%-%e%a%s%H%/%i%9$K!"0J2<$N%*%W%7%g%s$r;XDj$9$k$H!"DL>o$h$j$b%F%-%9%H$r(B
+% $BAH$_N)$F$kNN0h$N9-$$%9%?%$%k$H$9$k$3$H$,$G$-$^$9!#(B
+% \begin{macrocode}
+%
+\DeclareOption{a4j}{\setcounter{@paper}{1}\@stysizetrue
+ \setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{a5j}{\setcounter{@paper}{2}\@stysizetrue
+ \setlength\paperheight {210mm}
+ \setlength\paperwidth {148mm}}
+\DeclareOption{b4j}{\setcounter{@paper}{3}\@stysizetrue
+ \setlength\paperheight {364mm}
+ \setlength\paperwidth {257mm}}
+\DeclareOption{b5j}{\setcounter{@paper}{4}\@stysizetrue
+ \setlength\paperheight {257mm}
+ \setlength\paperwidth {182mm}}
+%
+\DeclareOption{a4p}{\setcounter{@paper}{1}\@stysizetrue
+ \setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{a5p}{\setcounter{@paper}{2}\@stysizetrue
+ \setlength\paperheight {210mm}
+ \setlength\paperwidth {148mm}}
+\DeclareOption{b4p}{\setcounter{@paper}{3}\@stysizetrue
+ \setlength\paperheight {364mm}
+ \setlength\paperwidth {257mm}}
+\DeclareOption{b5p}{\setcounter{@paper}{4}\@stysizetrue
+ \setlength\paperheight {257mm}
+ \setlength\paperwidth {182mm}}
+% \end{macrocode}
+%
+% \subsection{$B%5%$%:%*%W%7%g%s(B}
+% $B4p=`$H$J$k%U%)%s%H$NBg$-$5$r;XDj$9$k%*%W%7%g%s$G$9!#(B
+% \begin{macrocode}
+\if@compatibility
+ \renewcommand{\@ptsize}{0}
+\else
+ \DeclareOption{10pt}{\renewcommand{\@ptsize}{0}}
+\fi
+\DeclareOption{11pt}{\renewcommand{\@ptsize}{1}}
+\DeclareOption{12pt}{\renewcommand{\@ptsize}{2}}
+% \end{macrocode}
+%
+% \subsection{$B2#CV$-%*%W%7%g%s(B}
+% $B$3$N%*%W%7%g%s$,;XDj$5$l$k$H!"MQ;f$N=D$H2#$ND9$5$rF~$l49$($^$9!#(B
+% \changes{v1.1h}{1997/09/03}{$B%*%W%7%g%s$N=hM};~$K=D2#$NCM$r8r49(B}
+% \changes{v1.1h}{1997/09/03}{landscape$B%*%W%7%g%s$r8_49%b!<%I$G$bM-8z$K(B}
+% \begin{macrocode}
+\DeclareOption{landscape}{\@landscapetrue
+ \setlength\@tempdima{\paperheight}%
+ \setlength\paperheight{\paperwidth}%
+ \setlength\paperwidth{\@tempdima}}
+% \end{macrocode}
+%
+% \subsection{$B%H%s%\%*%W%7%g%s(B}
+% |tombow|$B%*%W%7%g%s$,;XDj$5$l$k$H!"MQ;f%5%$%:$K9g$o$;$F%H%s%\$r=PNO$7$^$9!#(B
+% $B$3$N$H$-!"%H%s%\$NOF$K(BDVI$B$r:n@.$7$?F|IU$,=PNO$5$l$^$9!#(B
+% $B:n@.F|IU$N=PNO$rM^@)$9$k$K$O!"(B|tombow|$B$G$O$J$/!"(B|tombo|$B$H;XDj$r$7$^$9!#(B
+%
+% $B%8%g%V>pJs$N=q<0$O85!9(B|filename : 2017/3/5(13:3)|$B$N$h$&$J=q<0$G$7$?$,!"(B
+% jsclasses$B$K$"$o$;$F7e?t8GDj$N(B|filename (2017-03-05 13:03)|$B$KD>$7$^$7$?!#(B
+% \changes{v1.0g}{1996/09/03}{Add to \cs{@bannertoken}.}
+% \changes{v1.1a}{1997/01/23}{$BF|IU=PNO%*%W%7%g%s(B}
+% \changes{v1.7e}{2017/03/05}{$B%H%s%\$KI=<($9$k%8%g%V>pJs$N=q<0$rJQ99(B}
+% \begin{macrocode}
+\DeclareOption{tombow}{%
+ \tombowtrue \tombowdatetrue
+ \setlength{\@tombowwidth}{.1\p@}%
+ \@bannertoken{%
+ \jobname\space(\number\year-\two@digits\month-\two@digits\day
+ \space\two@digits\hour:\two@digits\minute)}%
+ \maketombowbox}
+\DeclareOption{tombo}{%
+ \tombowtrue \tombowdatefalse
+ \setlength{\@tombowwidth}{.1\p@}%
+ \maketombowbox}
+% \end{macrocode}
+%
+% \subsection{$BLLIU$1%*%W%7%g%s(B}
+% $B$3$N%*%W%7%g%s$,;XDj$5$l$k$H!"%H%s%\%*%W%7%g%s$r;XDj$7$?$H$-$HF1$8(B
+% $B0LCV$KJ8>O$r=PNO$7$^$9!#:n@.$7$?(BDVI$B$r%U%#%k%`$KLLIU$1=PNO$9$k>l9g$J$I(B
+% $B$K;XDj$r$7$^$9!#(B
+% \changes{v1.0f}{1996/07/10}{$BLLIU$1%*%W%7%g%s$rDI2C(B}
+% \changes{v1.1n}{1998/10/13}
+% {$BF0:n$7$F$$$J$+$C$?$N$r=$@5!#$"$j$,$H$&!"EaG*$5$s(B}
+% \begin{macrocode}
+\DeclareOption{mentuke}{%
+ \tombowtrue \tombowdatefalse
+ \setlength{\@tombowwidth}{\z@}%
+ \maketombowbox}
+% \end{macrocode}
+%
+% \subsection{$BAHJ}8~%*%W%7%g%s(B}
+% $B$3$N%*%W%7%g%s$,;XDj$5$l$k$H!"=DAH$GAHHG$r$7$^$9!#(B
+% \changes{v1.0g}{1997/01/25}{Insert \cs{hbox}, to switch tate-mode.}
+% \changes{v1.1d}{1997/02/05}{$B3+;O%Z!<%8$,$*$+$7$/$J$k$N$r=$@5(B}
+% \changes{v1.1f}{1997/07/08}{$B=DAH;~$K%Y!<%9%i%$%s$,$*$+$7$/$J$k$N$r=$@5(B}
+% \begin{macrocode}
+\DeclareOption{tate}{%
+ \AtBeginDocument{\tate\message{$B!T=DAH%b!<%I!U(B}%
+ \adjustbaseline}%
+}
+% \end{macrocode}
+%
+% \subsection{$BN>LL!"JRLL%*%W%7%g%s(B}
+% twoside$B%*%W%7%g%s$,;XDj$5$l$k$H!"N>LL0u;z=PNO$KE,$7$?@07A$r9T$J$$$^$9!#(B
+% \begin{macrocode}
+\DeclareOption{oneside}{\@twosidefalse}
+\DeclareOption{twoside}{\@twosidetrue}
+% \end{macrocode}
+%
+% \subsection{$BFsCJAH%*%W%7%g%s(B}
+% $BFsCJAH$K$9$k$+$I$&$+$N%*%W%7%g%s$G$9!#(B
+% \begin{macrocode}
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+% \end{macrocode}
+%
+% \subsection{$BI=Bj%Z!<%8%*%W%7%g%s(B}
+% |@titlepage|$B$,??$N>l9g!"I=Bj$rFHN)$7$?%Z!<%8$K=PNO$7$^$9!#(B
+% \begin{macrocode}
+\DeclareOption{titlepage}{\@titlepagetrue}
+\DeclareOption{notitlepage}{\@titlepagefalse}
+% \end{macrocode}
+%
+% \subsection{$B1&:85/$3$7%*%W%7%g%s(B}
+% chapter$B$r1&%Z!<%8$"$k$$$O:8%Z!<%8$+$i(B
+% $B$O$8$a$k$+$I$&$+$r;XDj$9$k%*%W%7%g%s$G$9!#(B
+% |openleft|$B%*%W%7%g%s$OF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$C$FDI2C$5$l$^$7$?!#(B
+% \changes{v1.7d}{2017/02/15}{openleft$B%*%W%7%g%sDI2C(B}
+% \begin{macrocode}
+%<!article>\if@compatibility
+%<book>\@openrighttrue
+%<!article>\else
+%<!article>\DeclareOption{openright}{\@openrighttrue\@openleftfalse}
+%<!article>\DeclareOption{openleft}{\@openlefttrue\@openrightfalse}
+%<!article>\DeclareOption{openany}{\@openrightfalse\@openleftfalse}
+%<!article>\fi
+% \end{macrocode}
+%
+% \subsection{$B?t<0$N%*%W%7%g%s(B}
+% \Lopt{leqno}$B$r;XDj$9$k$H!"?t<0HV9f$r?t<0$N:8B&$K=PNO$7$^$9!#(B
+% \Lopt{fleqn}$B$r;XDj$9$k$H%G%#%9%W%l%$?t<0$r:8B7$($G=PNO$7$^$9!#(B
+% \begin{macrocode}
+\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+% \end{macrocode}
+%
+% \subsection{$B;29MJ88%$N%*%W%7%g%s(B}
+% $B;29MJ88%0lMw$r(B``$B%*!<%W%s%9%?%$%k(B''$B$N=q<0$G=PNO$7$^$9!#(B
+% $B$3$l$O3F%V%m%C%/$,2~9T$G6h@Z$i$l!"(B|\bibindent|$B$N%$%s%G%s%H$,IU$/=q<0$G$9!#(B
+% \changes{v1.0c}{1995/12/25}{openbib$B%*%W%7%g%s$r:F<BAu(B}
+% \begin{macrocode}
+\DeclareOption{openbib}{%
+% \end{macrocode}
+% $B;29MJ88%4D6-Fb$N:G=i$N$$$/$D$+$N%U%C%/$rK~$?$7$^$9!#(B
+% \begin{macrocode}
+ \AtEndOfPackage{%
+ \renewcommand\@openbib@code{%
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ }%
+% \end{macrocode}
+% $B$=$7$F!"(B|\newblock|$B$r:FDj5A$7$^$9!#(B
+% \begin{macrocode}
+ \renewcommand\newblock{\par}}}
+% \end{macrocode}
+%
+% \subsection{$BF|K\8l%U%!%_%j@k8@$NM^@)!"OB2$J8N>BP1~$N?t<0J8;z(B}
+% p\LaTeXe{}$B$O!"$3$N$"$H!"?t<0%b!<%I$GD>@\!"F|K\8l$r5-=R$G$-$k$h$&$K(B
+% $B?t<0%U%!%_%j$r@k8@$7$^$9!#$7$+$7!"(B\TeX{}$B$G07$($k?t<0%U%!%_%j$N?t$,(B
+% 16$B8D$J$N$G!"$=$NB>$N%Q%C%1!<%8$HAH$_9g$o$;$?>l9g!"(B
+% $B?t<0%U%!%_%j$r@k8@$9$kNN0h$rD6$($F$7$^$&>l9g$,$"$k$+$b$7$l$^$;$s!#(B
+% $B$=$N$H$-$K$O!";DG0$G$9$,!"$=$N%Q%C%1!<%8$+!"?t<0Fb$KD>@\!"(B
+% $BF|K\8l$r5-=R$9$k$N$+!"$I$A$i$+$rCGG0$7$J$1$l$P$J$j$^$;$s!#(B
+% $B$3$N%/%i%9%*%W%7%g%s$O!"(B
+% $B?t<0Fb$KF|K\8l$r5-=R$9$k$N$r$"$-$i$a$k>l9g$KMQ$$$^$9!#(B
+%
+% |disablejfam|$B%*%W%7%g%s$r;XDj$7$F$b(B|\textmc|$B$d(B|\textgt|$B$J$I$rMQ$$$F!"(B
+% $B?t<0Fb$KF|K\8l$r5-=R$9$k$3$H$O2DG=$G$9!#(B
+%
+% \noindent\emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$kJdB-(B}$B!'(B
+% $B%3%_%e%K%F%#HG(Bp\LaTeX{}$B$N(B2016/11/29$B0J9_$NHG$G$O!"(Be-p\TeX{}$B$N3HD%5!G=(B
+% $B!JDL>N!V5l(BFAM256$B%Q%C%A!W!K$,MxMQ2DG=$J>l9g$K!"(B\LaTeX{}$B$N5!G=$G@k8@(B
+% $B$G$-$k?t<0%U%!%_%j!J?t<0%"%k%U%!%Y%C%H!K$N>e8B$r(B256$B8D$KA}$d$7$F$$$^$9!#(B
+% $B$7$?$,$C$F!"?7$7$$4D6-$G$O(B|disablejfam|$B$r;XDj$7$J$/$F$b>e8B$rD6$($k(B
+% $B$3$H$,5/$-$K$/$/$J$C$F$$$^$9!#(B
+%
+% |mathrmmc|$B%*%W%7%g%s$O!"(B
+% |\mathrm|$B$H(B|\mathbf|$B$rOB2$J8N>BP1~$K$9$k$?$a$N%/%i%9%*%W%7%g%s$G$9!#(B
+% \changes{v1.1d}{1992/02/04}{disablejfam$B$NH=CG$r4V0c$($F$?$N$r=$@5(B}
+% \begin{macrocode}
+\if@compatibility
+ \@mathrmmctrue
+\else
+ \DeclareOption{disablejfam}{\@enablejfamfalse}
+ \DeclareOption{mathrmmc}{\@mathrmmctrue}
+\fi
+% \end{macrocode}
+%
+%
+% \subsection{$B%I%i%U%H%*%W%7%g%s(B}
+% |draft|$B%*%W%7%g%s$r;XDj$9$k$H!"%*!<%P%U%k%\%C%/%9$N5/$-$?2U=j$K!"(B
+% 5pt$B$N7S@~$,0z$+$l$^$9!#(B
+% \begin{macrocode}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+%</article|report|book>
+% \end{macrocode}
+%
+% \subsection{$B%*%W%7%g%s$N<B9T(B}
+% $B%*%W%7%g%s$N<B9T!"$*$h$S%5%$%:%/%i%9$N%m!<%I$r9T$J$$$^$9!#(B
+% \begin{macrocode}
+%<*article|report|book>
+%<*article>
+%<tate>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,tate}
+%<yoko>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final}
+%</article>
+%<*report>
+%<tate>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany,tate}
+%<yoko>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany}
+%</report>
+%<*book>
+%<tate>\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright,tate}
+%<yoko>\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright}
+%</book>
+\ProcessOptions\relax
+%<book&tate>\input{tbk1\@ptsize.clo}
+%<!book&tate>\input{tsize1\@ptsize.clo}
+%<book&yoko>\input{jbk1\@ptsize.clo}
+%<!book&yoko>\input{jsize1\@ptsize.clo}
+% \end{macrocode}
+% $B=DAHMQ%/%i%9%U%!%$%k$N>l9g$O!"$3$3$G(B\file{plext.sty}$B$bFI$_9~$_$^$9!#(B
+% \changes{v1.0e}{1996/03/21}{\cs{usepackage} to \cs{RequirePackage}}
+% \begin{macrocode}
+%<tate>\RequirePackage{plext}
+%</article|report|book>
+% \end{macrocode}
+%
+% \section{$B%U%)%s%H(B}
+%
+% $B$3$3$G$O!"(B\LaTeX{}$B$N%U%)%s%H%5%$%:%3%^%s%I$NDj5A$r$7$F$$$^$9!#(B
+% $B%U%)%s%H%5%$%:%3%^%s%I$NDj5A$O!"<!$N%3%^%s%I$rMQ$$$^$9!#(B
+%
+% |\@setfontsize||\size|\meta{font-size}\meta{baselineskip}
+%
+% \begin{description}
+% \item[\meta{font-size}] $B$3$l$+$i;HMQ$9$k!"%U%)%s%H$N<B:]$NBg$-$5$G$9!#(B
+% \item[\meta{baselineskip}] $BA*Br$5$l$k%U%)%s%H%5%$%:MQ$NDL>o$N(B
+% |\baselineskip|$B$NCM$G$9!J<B:]$O!"(B|\baselinestretch| * \meta{baselineskip}
+% $B$NCM$G$9!K!#(B
+% \end{description}
+%
+% $B?tCM%3%^%s%I$O!"<!$N$h$&$K(B\LaTeX{}$B%+!<%M%k$GDj5A$5$l$F$$$^$9!#(B
+% \begin{center}
+% \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
+% \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
+% \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
+% \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
+% ...
+% \end{tabular}
+% \end{center}
+%
+% \begin{macro}{\normalsize}
+% \begin{macro}{\@normalsize}
+% $B4pK\%5%$%:$H$9$k%f!<%6%l%Y%k$N%3%^%s%I$O(B|\normalsize|$B$G$9!#(B
+% \LaTeX{}$B$NFbIt$G$O(B|\@normalsize|$B$r;HMQ$7$^$9!#(B
+%
+% |\normalsize|$B%^%/%m$O!"(B|\abovedisplayskip|$B$H(B
+% |\abovedisplayshortskip|$B!"$*$h$S(B|\belowdisplayshortskip|$B$NCM$b@_Dj$r$7$^$9!#(B
+% |\belowdisplayskip|$B$O!"$D$M$K(B|\abovedisplayskip|$B$HF1CM$G$9!#(B
+%
+% $B$^$?!"%j%9%H4D6-$N%H%C%W%l%Y%k$N%Q%i%a!<%?$O!"$D$M$K(B|\@listI|$B$GM?$($i$l$^$9!#(B
+% \begin{macrocode}
+%<*10pt|11pt|12pt>
+\renewcommand{\normalsize}{%
+%<10pt&yoko> \@setfontsize\normalsize\@xpt{15}%
+%<11pt&yoko> \@setfontsize\normalsize\@xipt{15.5}%
+%<12pt&yoko> \@setfontsize\normalsize\@xiipt{16.5}%
+%<10pt&tate> \@setfontsize\normalsize\@xpt{17}%
+%<11pt&tate> \@setfontsize\normalsize\@xipt{17}%
+%<12pt&tate> \@setfontsize\normalsize\@xiipt{18}%
+%<*10pt>
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+%</10pt>
+%<*11pt>
+ \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+%</11pt>
+%<*12pt>
+ \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+%</12pt>
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}
+% \end{macrocode}
+%
+% $B$3$3$G!"%N!<%^%k%U%)%s%H$rA*Br$7!"=i4|2=$r$7$^$9!#(B
+% $B$3$N$H$-!"=DAH%b!<%I$J$i$P!"%G%U%)%k%H$N%(%s%3!<%I$rJQ99$7$^$9!#(B
+% \begin{macrocode}
+%<tate>\def\kanjiencodingdefault{JT1}%
+%<tate>\kanjiencoding{\kanjiencodingdefault}%
+\normalsize
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Cht}
+% \begin{macro}{\Cdp}
+% \begin{macro}{\Cwd}
+% \begin{macro}{\Cvs}
+% \begin{macro}{\Chs}
+% $B4p=`$H$J$kD9$5$N@_Dj$r$7$^$9!#$3$l$i$N%Q%i%a!<%?$O(B\file{plfonts.dtx}$B$GDj5A(B
+% $B$5$l$F$$$^$9!#4p=`$H$9$kJ8;z$r!VA43Q6uGr!W!J(BEUC$B%3!<%I(B\texttt{0xA1A1}$B!K$+$i(B
+% $B!V4A!W!J(BJIS$B%3!<%I(B\texttt{0x3441}$B!K$XJQ99$7$^$7$?!#(B
+% \changes{v1.7f}{2017/08/31}{$BOBJ8=qBN$N4p=`$rA43Q6uGr$+$i!V4A!W$KJQ99(B}
+% \changes{v1.7g}{2017/09/19}{$BFbIt=hM}$G;H$C$?%\%C%/%9(B0$B$r6u$K$7$?(B}
+% \begin{macrocode}
+\setbox0\hbox{\char\jis"3441}%
+\setlength\Cht{\ht0}
+\setlength\Cdp{\dp0}
+\setlength\Cwd{\wd0}
+\setlength\Cvs{\baselineskip}
+\setlength\Chs{\wd0}
+\setbox0=\box\voidb@x
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\small}
+% |\small|$B%3%^%s%I$NDj5A$O!"(B|\normalsize|$B$K;w$F$$$^$9!#(B
+% \begin{macrocode}
+\newcommand{\small}{%
+%<*10pt>
+ \@setfontsize\small\@ixpt{11}%
+ \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus2\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+%</10pt>
+%<*11pt>
+ \@setfontsize\small\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@
+ \parsep 3\p@ \@plus2\p@ \@minus\p@
+ \itemsep \parsep}%
+%</11pt>
+%<*12pt>
+ \@setfontsize\small\@xipt{13.6}%
+ \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 9\p@ \@plus3\p@ \@minus5\p@
+ \parsep 4.5\p@ \@plus2\p@ \@minus\p@
+ \itemsep \parsep}%
+%</12pt>
+ \belowdisplayskip \abovedisplayskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footnotesize}
+% |\footnotesize|$B%3%^%s%I$NDj5A$O!"(B|\normalsize|$B$K;w$F$$$^$9!#(B
+% \begin{macrocode}
+\newcommand{\footnotesize}{%
+%<*10pt>
+ \@setfontsize\footnotesize\@viiipt{9.5}%
+ \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 3\p@ \@plus\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+%</10pt>
+%<*11pt>
+ \@setfontsize\footnotesize\@ixpt{11}%
+ \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+%</11pt>
+%<*12pt>
+ \@setfontsize\footnotesize\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@
+ \parsep 3\p@ \@plus2\p@ \@minus\p@
+ \itemsep \parsep}%
+%</12pt>
+ \belowdisplayskip \abovedisplayskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scriptsize}
+% \begin{macro}{\tiny}
+% \begin{macro}{\large}
+% \begin{macro}{\Large}
+% \begin{macro}{\LARGE}
+% \begin{macro}{\huge}
+% \begin{macro}{\Huge}
+% $B$3$l$i$O@h$[$I$N%^%/%m$h$j$b4JC1$G$9!#$3$l$i$O%U%)%s%H%5%$%:$rJQ99$9$k(B
+% $B$@$1$G!"%j%9%H4D6-$H%G%#%9%W%l%$?t<0$N%Q%i%a!<%?$OJQ99$7$^$;$s!#(B
+% \begin{macrocode}
+%<*10pt>
+\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
+\newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt}
+\newcommand{\large}{\@setfontsize\large\@xiipt{17}}
+\newcommand{\Large}{\@setfontsize\Large\@xivpt{21}}
+\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{25}}
+\newcommand{\huge}{\@setfontsize\huge\@xxpt{28}}
+\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{33}}
+%</10pt>
+%<*11pt>
+\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}}
+\newcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
+\newcommand{\large}{\@setfontsize\large\@xiipt{17}}
+\newcommand{\Large}{\@setfontsize\Large\@xivpt{21}}
+\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{25}}
+\newcommand{\huge}{\@setfontsize\huge\@xxpt{28}}
+\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{33}}
+%</11pt>
+%<*12pt>
+\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}}
+\newcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
+\newcommand{\large}{\@setfontsize\large\@xivpt{21}}
+\newcommand{\Large}{\@setfontsize\Large\@xviipt{25}}
+\newcommand{\LARGE}{\@setfontsize\LARGE\@xxpt{28}}
+\newcommand{\huge}{\@setfontsize\huge\@xxvpt{33}}
+\let\Huge=\huge
+%</12pt>
+%</10pt|11pt|12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Cjascale}
+% $B$3$N%/%i%9%U%!%$%k$,0U?^$9$kOBJ8%9%1!<%kCM(B
+% $B!J(B$1\,\mathrm{zw} \div \textmc{$BMW5a%5%$%:(B}$$B!K$r(B
+% $BI=$9<B?tCM%^%/%m(B|\Cjascale|$B$rDj5A$7$^$9!#(B
+% $B$3$N(Bp\LaTeXe{}$B$NI8=`%/%i%9$G$O!"%U%)!<%^%C%H:n@.;~$KFI$_9~$^$l$?(B
+% $B%U%)%s%HDj5A%U%!%$%k!J(B\file{jy1mc.fd} / \file{jy1gt.fd} /
+% \file{jt1mc.fd} / \file{jt1gt.fd}$B!K$G$NOBJ8%9%1!<%kCM$,$=$N$^$^(B
+% $BM-8z$G$9$N$G!"$3$l$O(B0.962216$B$G$9!#(B
+% \changes{v1.7h}{2018/02/04}{$BOBJ8%9%1!<%kCM(B\cs{Cjascale}$B$rDj5A(B}
+% \begin{macrocode}
+%<*article|report|book>
+\def\Cjascale{0.962216}
+%</article|report|book>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \section{$B%l%$%"%&%H(B}
+%
+% \subsection{$BMQ;f%5%$%:$N7hDj(B}
+%
+% \begin{macro}{\columnsep}
+% \begin{macro}{\columnseprule}
+% |\columnsep|$B$O!"FsCJAH$N$H$-$N!":81&!J$"$k$$$O>e2<!K$NCJ4V$NI}$G$9!#(B
+% $B$3$N%9%Z!<%9$NCf1{$K(B|\columnseprule|$B$NI}$N7S@~$,0z$+$l$^$9!#(B
+% \changes{v1.0g}{1997/01/25}{\cs{columnsep}: 10pt to 3\cs{Cwd} or 2\cs{Cwd}.}
+% \begin{macrocode}
+%<*article|report|book>
+\if@stysize
+%<tate> \setlength\columnsep{3\Cwd}
+%<yoko> \setlength\columnsep{2\Cwd}
+\else
+ \setlength\columnsep{10\p@}
+\fi
+\setlength\columnseprule{0\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{$BCJMn$N7A(B}
+%
+% \begin{macro}{\lineskip}
+% \begin{macro}{\normallineskip}
+% $B$3$l$i$NCM$O!"9T$,6aIU$-2a$.$?$H$-$N(B\TeX $B$NF0:n$r@)8f$7$^$9!#(B
+% \begin{macrocode}
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\baselinestretch}
+% $B$3$l$O!"(B|\baselineskip|$B$NG\N($r<($9$?$a$K;H$$$^$9!#(B
+% $B%G%U%)%k%H$G$O!"(B\emph{$B2?$b$7$^$;$s(B}$B!#$3$N%3%^%s%I$,(B``empty''$B$G$J$$>l9g!"(B
+% |\baselineskip|$B$N;XDj$N(B\texttt{plus}$B$d(B\texttt{minus}$BItJ,$OL5;k$5$l$k(B
+% $B$3$H$KCm0U$7$F$/$@$5$$!#(B
+% \begin{macrocode}
+\renewcommand{\baselinestretch}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\parskip}
+% \begin{macro}{\parindent}
+% |\parskip|$B$OCJMn4V$KA^F~$5$l$k!"=DJ}8~$NDI2C%9%Z!<%9$G$9!#(B
+% |\parindent|$B$OCJMn$N@hF,$N;z2<$2I}$G$9!#(B
+% \begin{macrocode}
+\setlength\parskip{0\p@ \@plus \p@}
+\setlength\parindent{1\Cwd}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\smallskipamount}
+% \begin{macro}{\medskipamount}
+% \begin{macro}{\bigskipamount}
+% $B$3$l$i#3$D$N%Q%i%a!<%?$NCM$O!"(B\LaTeX{}$B%+!<%M%k$NCf$G@_Dj$5$l$F$$$^$9!#(B
+% $B$3$l$i$O$*$=$i$/!"%5%$%:%*%W%7%g%s$N;XDj$K$h$C$FJQ$($k$Y$-$G$9!#(B
+% $B$7$+$7!"(B\LaTeX~2.09$B$d(B\LaTeXe{}$B$N0JA0$N%j%j!<%9$NN>J}$H$N8_49@-$rJ]$D$?$a$K!"(B
+% $B$3$l$i$O$^$@F1$8CM$H$7$F$$$^$9!#(B
+% \begin{macrocode}
+%<*10pt|11pt|12pt>
+\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@}
+\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@}
+%</10pt|11pt|12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@lowpenalty}
+% \begin{macro}{\@medpenalty}
+% \begin{macro}{\@highpenalty}
+% |\nopagebreak|$B$H(B|\nolinebreak|$B%3%^%s%I$O!"$3$l$i$N%3%^%s%I$,CV$+$l$?>l=j$K!"(B
+% $B%Z%J%k%F%#$r5/$$$F!"J,3d$r@)8f$7$^$9!#(B
+% $BCV$+$l$k%Z%J%k%F%#$O!"%3%^%s%I$N0z?t$K$h$C$F!"(B
+% |\@lowpenalty|, |\@medpenalty|, |\@highpenalty|$B$N$$$:$l$+$,;H$o$l$^$9!#(B
+% \begin{macrocode}
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+%</article|report|book>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{$B%Z!<%8%l%$%"%&%H(B}
+%
+% \subsubsection{$B=DJ}8~$N%9%Z!<%9(B}
+%
+% \begin{macro}{\headheight}
+% \begin{macro}{\headsep}
+% \begin{macro}{\topskip}
+% |\headheight|$B$O!"%X%C%@$,F~$k%\%C%/%9$N9b$5$G$9!#(B
+% |\headsep|$B$O!"%X%C%@$N2<C<$HK\J8NN0h$H$N4V$N5wN%$G$9!#(B
+% |\topskip|$B$O!"K\J8NN0h$N>eC<$H#19TL\$N%F%-%9%H$N%Y!<%9%i%$%s$H$N5wN%$G$9!#(B
+% \begin{macrocode}
+%<*10pt|11pt|12pt>
+\setlength\headheight{12\p@}
+%<*tate>
+\if@stysize
+ \ifnum\c@@paper=2 % A5
+ \setlength\headsep{6mm}
+ \else % A4, B4, B5 and other
+ \setlength\headsep{8mm}
+ \fi
+\else
+ \setlength\headsep{8mm}
+\fi
+%</tate>
+%<*yoko>
+%<!bk>\setlength\headsep{25\p@}
+%<10pt&bk>\setlength\headsep{.25in}
+%<11pt&bk>\setlength\headsep{.275in}
+%<12pt&bk>\setlength\headsep{.275in}
+%</yoko>
+\setlength\topskip{1\Cht}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\footskip}
+% |\footskip|$B$O!"K\J8NN0h$N2<C<$H%U%C%?$N2<C<$H$N5wN%$G$9!#(B
+% $B%U%C%?$N%\%C%/%9$N9b$5$r<($9!"(B|\footheight|$B$O:o=|$5$l$^$7$?!#(B
+% \begin{macrocode}
+%<tate>\setlength\footskip{14mm}
+%<*yoko>
+%<!bk>\setlength\footskip{30\p@}
+%<10pt&bk>\setlength\footskip{.35in}
+%<11pt&bk>\setlength\footskip{.38in}
+%<12pt&bk>\setlength\footskip{30\p@}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maxdepth}
+% \changes{v1.1c}{1995/12/25}{\cs{@maxdepth}$B$N@_Dj$r=|30$7$?(B}
+% \TeX $B$N%W%j%_%F%#%V%l%8%9%?(B|\maxdepth|$B$O!"(B|\topskip|$B$HF1$8$h$&$J(B
+% $BF/$-$r$7$^$9!#(B|\@maxdepth|$B%l%8%9%?$O!"$D$M$K(B|\maxdepth|$B$N%3%T!<$G$J$/$F$O(B
+% $B$$$1$^$;$s!#$3$l$O(B|\begin{document}|$B$NFbIt$G@_Dj$5$l$^$9!#(B
+% \TeX{}$B$H(B\LaTeX~2.09$B$G$O!"(B|\maxdepth|$B$O(B\texttt{4pt}$B$K8GDj$G$9!#(B
+% \LaTeXe{}$B$G$O!"(B|\maxdepth|$+$|\topskip|$B$r4pK\%5%$%:$N(B1.5$BG\$K$7$?$$$N$G!"(B
+% |\maxdepth|$B$r(B|\topskip|$B$NH>J,$NCM$G@_Dj$7$^$9!#(B
+% \begin{macrocode}
+\if@compatibility
+ \setlength\maxdepth{4\p@}
+\else
+ \setlength\maxdepth{.5\topskip}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$BK\J8NN0h(B}
+% |\textheight|$B$H(B|\textwidth|$B$O!"K\J8NN0h$NDL>o$N9b$5$HI}$r<($7$^$9!#(B
+% $B=DAH$G$b2#AH$G$b!"(B``$B9b$5(B''$B$O9T?t$r!"(B``$BI}(B''$B$O;z5M$a$r0UL#$7$^$9!#(B
+% $B8e$[$I!"$3$l$i$ND9$5$K(B|\topskip|$B$NCM$,2C$($i$l$^$9!#(B
+%
+% \begin{macro}{\textwidth}
+% $B4pK\AH$N;z5M$a$G$9!#(B
+%
+% $B8_49%b!<%I$N>l9g!'(B
+% \begin{macrocode}
+\if@compatibility
+% \end{macrocode}
+% \changes{v1.1a}{1997/01/25}{Add paper option with compatibility mode.}
+% \changes{v1.1h}{1997/09/03}{landscape$B$G$N;XDj$rDI2C(B}
+% $B8_49%b!<%I!'(B|a4j|$B$d(B|b5j|$B$N%/%i%9%*%W%7%g%s$,;XDj$5$l$?>l9g$N@_Dj!'(B
+% \begin{macrocode}
+ \if@stysize
+ \ifnum\c@@paper=2 % A5
+ \if@landscape
+%<10pt&yoko> \setlength\textwidth{47\Cwd}
+%<11pt&yoko> \setlength\textwidth{42\Cwd}
+%<12pt&yoko> \setlength\textwidth{40\Cwd}
+%<10pt&tate> \setlength\textwidth{27\Cwd}
+%<11pt&tate> \setlength\textwidth{25\Cwd}
+%<12pt&tate> \setlength\textwidth{23\Cwd}
+ \else
+%<10pt&yoko> \setlength\textwidth{28\Cwd}
+%<11pt&yoko> \setlength\textwidth{25\Cwd}
+%<12pt&yoko> \setlength\textwidth{24\Cwd}
+%<10pt&tate> \setlength\textwidth{46\Cwd}
+%<11pt&tate> \setlength\textwidth{42\Cwd}
+%<12pt&tate> \setlength\textwidth{38\Cwd}
+ \fi
+ \else\ifnum\c@@paper=3 % B4
+ \if@landscape
+%<10pt&yoko> \setlength\textwidth{75\Cwd}
+%<11pt&yoko> \setlength\textwidth{69\Cwd}
+%<12pt&yoko> \setlength\textwidth{63\Cwd}
+%<10pt&tate> \setlength\textwidth{53\Cwd}
+%<11pt&tate> \setlength\textwidth{49\Cwd}
+%<12pt&tate> \setlength\textwidth{44\Cwd}
+ \else
+%<10pt&yoko> \setlength\textwidth{60\Cwd}
+%<11pt&yoko> \setlength\textwidth{55\Cwd}
+%<12pt&yoko> \setlength\textwidth{50\Cwd}
+%<10pt&tate> \setlength\textwidth{85\Cwd}
+%<11pt&tate> \setlength\textwidth{76\Cwd}
+%<12pt&tate> \setlength\textwidth{69\Cwd}
+ \fi
+ \else\ifnum\c@@paper=4 % B5
+ \if@landscape
+%<10pt&yoko> \setlength\textwidth{60\Cwd}
+%<11pt&yoko> \setlength\textwidth{55\Cwd}
+%<12pt&yoko> \setlength\textwidth{50\Cwd}
+%<10pt&tate> \setlength\textwidth{34\Cwd}
+%<11pt&tate> \setlength\textwidth{31\Cwd}
+%<12pt&tate> \setlength\textwidth{28\Cwd}
+ \else
+%<10pt&yoko> \setlength\textwidth{37\Cwd}
+%<11pt&yoko> \setlength\textwidth{34\Cwd}
+%<12pt&yoko> \setlength\textwidth{31\Cwd}
+%<10pt&tate> \setlength\textwidth{55\Cwd}
+%<11pt&tate> \setlength\textwidth{51\Cwd}
+%<12pt&tate> \setlength\textwidth{47\Cwd}
+ \fi
+ \else % A4 ant other
+ \if@landscape
+%<10pt&yoko> \setlength\textwidth{73\Cwd}
+%<11pt&yoko> \setlength\textwidth{68\Cwd}
+%<12pt&yoko> \setlength\textwidth{61\Cwd}
+%<10pt&tate> \setlength\textwidth{41\Cwd}
+%<11pt&tate> \setlength\textwidth{38\Cwd}
+%<12pt&tate> \setlength\textwidth{35\Cwd}
+ \else
+%<10pt&yoko> \setlength\textwidth{47\Cwd}
+%<11pt&yoko> \setlength\textwidth{43\Cwd}
+%<12pt&yoko> \setlength\textwidth{40\Cwd}
+%<10pt&tate> \setlength\textwidth{67\Cwd}
+%<11pt&tate> \setlength\textwidth{61\Cwd}
+%<12pt&tate> \setlength\textwidth{57\Cwd}
+ \fi
+ \fi\fi\fi
+ \else
+% \end{macrocode}
+% $B8_49%b!<%I!'%G%U%)%k%H@_Dj(B
+% \begin{macrocode}
+ \if@twocolumn
+ \setlength\textwidth{52\Cwd}
+ \else
+%<10pt&!bk&yoko> \setlength\textwidth{327\p@}
+%<11pt&!bk&yoko> \setlength\textwidth{342\p@}
+%<12pt&!bk&yoko> \setlength\textwidth{372\p@}
+%<10pt&bk&yoko> \setlength\textwidth{4.3in}
+%<11pt&bk&yoko> \setlength\textwidth{4.8in}
+%<12pt&bk&yoko> \setlength\textwidth{4.8in}
+%<10pt&tate> \setlength\textwidth{67\Cwd}
+%<11pt&tate> \setlength\textwidth{61\Cwd}
+%<12pt&tate> \setlength\textwidth{57\Cwd}
+ \fi
+ \fi
+% \end{macrocode}
+% 2e$B%b!<%I$N>l9g!'(B
+% \begin{macrocode}
+\else
+% \end{macrocode}
+% 2e$B%b!<%I!'(B|a4j|$B$d(B|b5j|$B$N%/%i%9%*%W%7%g%s$,;XDj$5$l$?>l9g$N@_Dj!'(B
+% $BFsCJAH$G$OMQ;f%5%$%:$N#83d!"0lCJAH$G$OMQ;f%5%$%:$N#73d$rHGLL$NI}$H$7$F(B
+% $B@_Dj$7$^$9!#(B
+% \begin{macrocode}
+ \if@stysize
+ \if@twocolumn
+%<yoko> \setlength\textwidth{.8\paperwidth}
+%<tate> \setlength\textwidth{.8\paperheight}
+ \else
+%<yoko> \setlength\textwidth{.7\paperwidth}
+%<tate> \setlength\textwidth{.7\paperheight}
+ \fi
+ \else
+% \end{macrocode}
+% 2e$B%b!<%I!'%G%U%)%k%H@_Dj(B
+% \begin{macrocode}
+%<tate> \setlength\@tempdima{\paperheight}
+%<yoko> \setlength\@tempdima{\paperwidth}
+ \addtolength\@tempdima{-2in}
+%<tate> \addtolength\@tempdima{-1.3in}
+%<yoko&10pt> \setlength\@tempdimb{327\p@}
+%<yoko&11pt> \setlength\@tempdimb{342\p@}
+%<yoko&12pt> \setlength\@tempdimb{372\p@}
+%<tate&10pt> \setlength\@tempdimb{67\Cwd}
+%<tate&11pt> \setlength\@tempdimb{61\Cwd}
+%<tate&12pt> \setlength\@tempdimb{57\Cwd}
+ \if@twocolumn
+ \ifdim\@tempdima>2\@tempdimb\relax
+ \setlength\textwidth{2\@tempdimb}
+ \else
+ \setlength\textwidth{\@tempdima}
+ \fi
+ \else
+ \ifdim\@tempdima>\@tempdimb\relax
+ \setlength\textwidth{\@tempdimb}
+ \else
+ \setlength\textwidth{\@tempdima}
+ \fi
+ \fi
+ \fi
+\fi
+\@settopoint\textwidth
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textheight}
+% $B4pK\AH$N9T?t$G$9!#(B
+%
+% $B8_49%b!<%I$N>l9g!'(B
+% \begin{macrocode}
+\if@compatibility
+% \end{macrocode}
+% \changes{v1.1a}{1997/01/25}{Add paper option with compatibility mode.}
+% \changes{v1.1f}{1997/09/03}{landscape$B$G$N;XDj$rDI2C(B}
+% $B8_49%b!<%I!'(B|a4j|$B$d(B|b5j|$B$N%/%i%9%*%W%7%g%s$,;XDj$5$l$?>l9g$N@_Dj!'(B
+% \begin{macrocode}
+ \if@stysize
+ \ifnum\c@@paper=2 % A5
+ \if@landscape
+%<10pt&yoko> \setlength\textheight{17\Cvs}
+%<11pt&yoko> \setlength\textheight{17\Cvs}
+%<12pt&yoko> \setlength\textheight{16\Cvs}
+%<10pt&tate> \setlength\textheight{26\Cvs}
+%<11pt&tate> \setlength\textheight{26\Cvs}
+%<12pt&tate> \setlength\textheight{25\Cvs}
+ \else
+%<10pt&yoko> \setlength\textheight{28\Cvs}
+%<11pt&yoko> \setlength\textheight{25\Cvs}
+%<12pt&yoko> \setlength\textheight{24\Cvs}
+%<10pt&tate> \setlength\textheight{16\Cvs}
+%<11pt&tate> \setlength\textheight{16\Cvs}
+%<12pt&tate> \setlength\textheight{15\Cvs}
+ \fi
+ \else\ifnum\c@@paper=3 % B4
+ \if@landscape
+%<10pt&yoko> \setlength\textheight{38\Cvs}
+%<11pt&yoko> \setlength\textheight{36\Cvs}
+%<12pt&yoko> \setlength\textheight{34\Cvs}
+%<10pt&tate> \setlength\textheight{48\Cvs}
+%<11pt&tate> \setlength\textheight{48\Cvs}
+%<12pt&tate> \setlength\textheight{45\Cvs}
+ \else
+%<10pt&yoko> \setlength\textheight{57\Cvs}
+%<11pt&yoko> \setlength\textheight{55\Cvs}
+%<12pt&yoko> \setlength\textheight{52\Cvs}
+%<10pt&tate> \setlength\textheight{33\Cvs}
+%<11pt&tate> \setlength\textheight{33\Cvs}
+%<12pt&tate> \setlength\textheight{31\Cvs}
+ \fi
+ \else\ifnum\c@@paper=4 % B5
+ \if@landscape
+%<10pt&yoko> \setlength\textheight{22\Cvs}
+%<11pt&yoko> \setlength\textheight{21\Cvs}
+%<12pt&yoko> \setlength\textheight{20\Cvs}
+%<10pt&tate> \setlength\textheight{34\Cvs}
+%<11pt&tate> \setlength\textheight{34\Cvs}
+%<12pt&tate> \setlength\textheight{32\Cvs}
+ \else
+%<10pt&yoko> \setlength\textheight{35\Cvs}
+%<11pt&yoko> \setlength\textheight{34\Cvs}
+%<12pt&yoko> \setlength\textheight{32\Cvs}
+%<10pt&tate> \setlength\textheight{21\Cvs}
+%<11pt&tate> \setlength\textheight{21\Cvs}
+%<12pt&tate> \setlength\textheight{20\Cvs}
+ \fi
+ \else % A4 and other
+ \if@landscape
+%<10pt&yoko> \setlength\textheight{27\Cvs}
+%<11pt&yoko> \setlength\textheight{26\Cvs}
+%<12pt&yoko> \setlength\textheight{25\Cvs}
+%<10pt&tate> \setlength\textheight{41\Cvs}
+%<11pt&tate> \setlength\textheight{41\Cvs}
+%<12pt&tate> \setlength\textheight{38\Cvs}
+ \else
+%<10pt&yoko> \setlength\textheight{43\Cvs}
+%<11pt&yoko> \setlength\textheight{42\Cvs}
+%<12pt&yoko> \setlength\textheight{39\Cvs}
+%<10pt&tate> \setlength\textheight{26\Cvs}
+%<11pt&tate> \setlength\textheight{26\Cvs}
+%<12pt&tate> \setlength\textheight{22\Cvs}
+ \fi
+ \fi\fi\fi
+%<yoko> \addtolength\textheight{\topskip}
+%<bk&yoko> \addtolength\textheight{\baselineskip}
+%<tate> \addtolength\textheight{\Cht}
+%<tate> \addtolength\textheight{\Cdp}
+% \end{macrocode}
+% $B8_49%b!<%I!'%G%U%)%k%H@_Dj(B
+% \begin{macrocode}
+ \else
+%<10pt&!bk&yoko> \setlength\textheight{578\p@}
+%<10pt&bk&yoko> \setlength\textheight{554\p@}
+%<11pt&yoko> \setlength\textheight{580.4\p@}
+%<12pt&yoko> \setlength\textheight{586.5\p@}
+%<10pt&tate> \setlength\textheight{26\Cvs}
+%<11pt&tate> \setlength\textheight{25\Cvs}
+%<12pt&tate> \setlength\textheight{24\Cvs}
+ \fi
+% \end{macrocode}
+% 2e$B%b!<%I$N>l9g!'(B
+% \begin{macrocode}
+\else
+% \end{macrocode}
+% 2e$B%b!<%I!'(B|a4j|$B$d(B|b5j|$B$N%/%i%9%*%W%7%g%s$,;XDj$5$l$?>l9g$N@_Dj!'(B
+% $B=DAH$G$OMQ;f%5%$%:$N(B70\%(book)$B$+(B78\%(ariticle,report)$B!"(B
+% $B2#AH$G$O(B70\%(book)$B$+(B75\%(article,report)$B$rHGLL$N9b$5$K@_Dj$7$^$9!#(B
+% \begin{macrocode}
+ \if@stysize
+%<tate&bk> \setlength\textheight{.75\paperwidth}
+%<tate&!bk> \setlength\textheight{.78\paperwidth}
+%<yoko&bk> \setlength\textheight{.70\paperheight}
+%<yoko&!bk> \setlength\textheight{.75\paperheight}
+% \end{macrocode}
+% 2e$B%b!<%I!'%G%U%)%k%HCM(B
+% \begin{macrocode}
+ \else
+%<tate> \setlength\@tempdima{\paperwidth}
+%<yoko> \setlength\@tempdima{\paperheight}
+ \addtolength\@tempdima{-2in}
+%<yoko> \addtolength\@tempdima{-1.5in}
+ \divide\@tempdima\baselineskip
+ \@tempcnta\@tempdima
+ \setlength\textheight{\@tempcnta\baselineskip}
+ \fi
+\fi
+% \end{macrocode}
+% $B:G8e$K!"(B|\textheight|$B$K(B|\topskip|$B$NCM$r2C$($^$9!#(B
+% \begin{macrocode}
+\addtolength\textheight{\topskip}
+\@settopoint\textheight
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B%^!<%8%s(B}
+%
+% \begin{macro}{\topmargin}
+% |\topmargin|$B$O!"(B``$B0u;z2DG=NN0h(B''---$BMQ;f$N>eC<$+$i#1%$%s%AFbB&(B---%
+% $B$N>eC<$+$i%X%C%@ItJ,$N>eC<$^$G$N5wN%$G$9!#(B
+%
+% 2.09$B8_49%b!<%I$N>l9g!'(B
+% \begin{macrocode}
+\if@compatibility
+%<*yoko>
+ \if@stysize
+ \setlength\topmargin{-.3in}
+ \else
+%<!bk> \setlength\topmargin{27\p@}
+%<10pt&bk> \setlength\topmargin{.75in}
+%<11pt&bk> \setlength\topmargin{.73in}
+%<12pt&bk> \setlength\topmargin{.73in}
+ \fi
+%</yoko>
+%<*tate>
+ \if@stysize
+ \ifnum\c@@paper=2 % A5
+ \setlength\topmargin{.8in}
+ \else % A4, B4, B5 and other
+ \setlength\topmargin{32mm}
+ \fi
+ \else
+ \setlength\topmargin{32mm}
+ \fi
+ \addtolength\topmargin{-1in}
+ \addtolength\topmargin{-\headheight}
+ \addtolength\topmargin{-\headsep}
+%</tate>
+% \end{macrocode}
+% 2e$B%b!<%I$N>l9g!'(B
+% \begin{macrocode}
+\else
+ \setlength\topmargin{\paperheight}
+ \addtolength\topmargin{-\headheight}
+ \addtolength\topmargin{-\headsep}
+%<tate> \addtolength\topmargin{-\textwidth}
+%<yoko> \addtolength\topmargin{-\textheight}
+ \addtolength\topmargin{-\footskip}
+% \end{macrocode}
+% \changes{v1.1e}{1997/04/08}{$B2#AH%/%i%9$G$ND4@0NL$r(B
+% -2.4$B%$%s%A$+$i(B-2.0$B%$%s%A$K$7$?!#(B}
+% \changes{v1.1j}{1998/02/03}{$B8_49%b!<%I;~$N(Ba5p$B$N%H%C%W%^!<%8%s$r(B0.7in$BA}2C(B}
+% \begin{macrocode}
+ \if@stysize
+ \ifnum\c@@paper=2 % A5
+ \addtolength\topmargin{-1.3in}
+ \else
+ \addtolength\topmargin{-2.0in}
+ \fi
+ \else
+%<yoko> \addtolength\topmargin{-2.0in}
+%<tate> \addtolength\topmargin{-2.8in}
+ \fi
+% \end{macrocode}
+% \changes{v1.1d}{1997/02/05}{\cs{tompargin}$B$rH>J,$K$9$k$N$O%"%-NN0h$N7W;;8e(B}
+% \changes{v1.1r}{1999/08/09}{\cs{if@stysize}$B%U%i%0$K8B$i$:H>J,$K$9$k(B}
+% \begin{macrocode}
+ \addtolength\topmargin{-.5\topmargin}
+\fi
+\@settopoint\topmargin
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\marginparsep}
+% \begin{macro}{\marginparpush}
+% |\marginparsep|$B$O!"K\J8$HK5Cm$N4V$K$"$1$k%9%Z!<%9$NI}$G$9!#(B
+% $B2#AH$G$OK\J8$N:8!J1&!KC<$HK5Cm!"(B
+% $B=DAH$G$OK\J8$N2<!J>e!KC<$HK5Cm$N4V$K$J$j$^$9!#(B
+% |\marginparpush|$B$O!"K5Cm$HK5Cm$H$N4V$N%9%Z!<%9$NI}$G$9!#(B
+% \begin{macrocode}
+\if@twocolumn
+ \setlength\marginparsep{10\p@}
+\else
+%<tate> \setlength\marginparsep{15\p@}
+%<yoko> \setlength\marginparsep{10\p@}
+\fi
+%<tate>\setlength\marginparpush{7\p@}
+%<*yoko>
+%<10pt>\setlength\marginparpush{5\p@}
+%<11pt>\setlength\marginparpush{5\p@}
+%<12pt>\setlength\marginparpush{7\p@}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\oddsidemargin}
+% \begin{macro}{\evensidemargin}
+% \begin{macro}{\marginparwidth}
+% $B$^$:!"8_49%b!<%I$G$ND9$5$r<($7$^$9!#(B
+%
+% $B8_49%b!<%I!"=DAH$N>l9g!'(B
+% \begin{macrocode}
+\if@compatibility
+%<tate> \setlength\oddsidemargin{0\p@}
+%<tate> \setlength\evensidemargin{0\p@}
+% \end{macrocode}
+% $B8_49%b!<%I!"2#AH!"(Bbook$B%/%i%9$N>l9g!'(B
+% \begin{macrocode}
+%<*yoko>
+%<*bk>
+%<10pt> \setlength\oddsidemargin {.5in}
+%<11pt> \setlength\oddsidemargin {.25in}
+%<12pt> \setlength\oddsidemargin {.25in}
+%<10pt> \setlength\evensidemargin {1.5in}
+%<11pt> \setlength\evensidemargin {1.25in}
+%<12pt> \setlength\evensidemargin {1.25in}
+%<10pt> \setlength\marginparwidth {.75in}
+%<11pt> \setlength\marginparwidth {1in}
+%<12pt> \setlength\marginparwidth {1in}
+%</bk>
+% \end{macrocode}
+% $B8_49%b!<%I!"2#AH!"(Breport$B$H(Barticle$B%/%i%9$N>l9g!'(B
+% \begin{macrocode}
+%<*!bk>
+ \if@twoside
+%<10pt> \setlength\oddsidemargin {44\p@}
+%<11pt> \setlength\oddsidemargin {36\p@}
+%<12pt> \setlength\oddsidemargin {21\p@}
+%<10pt> \setlength\evensidemargin {82\p@}
+%<11pt> \setlength\evensidemargin {74\p@}
+%<12pt> \setlength\evensidemargin {59\p@}
+%<10pt> \setlength\marginparwidth {107\p@}
+%<11pt> \setlength\marginparwidth {100\p@}
+%<12pt> \setlength\marginparwidth {85\p@}
+ \else
+%<10pt> \setlength\oddsidemargin {60\p@}
+%<11pt> \setlength\oddsidemargin {54\p@}
+%<12pt> \setlength\oddsidemargin {39.5\p@}
+%<10pt> \setlength\evensidemargin {60\p@}
+%<11pt> \setlength\evensidemargin {54\p@}
+%<12pt> \setlength\evensidemargin {39.5\p@}
+%<10pt> \setlength\marginparwidth {90\p@}
+%<11pt> \setlength\marginparwidth {83\p@}
+%<12pt> \setlength\marginparwidth {68\p@}
+ \fi
+%</!bk>
+% \end{macrocode}
+% $B8_49%b!<%I!"2#AH!"FsCJAH$N>l9g!'(B
+% \begin{macrocode}
+ \if@twocolumn
+ \setlength\oddsidemargin {30\p@}
+ \setlength\evensidemargin {30\p@}
+ \setlength\marginparwidth {48\p@}
+ \fi
+%</yoko>
+% \end{macrocode}
+% $B=DAH!"2#AH$K$+$+$o$i$:!"%9%?%$%k%*%W%7%g%s@_Dj$G$O%<%m$G$9!#(B
+% \changes{v1.0g}{1997/01/25}{\cs{oddsidemargin}, \cs{evensidemagin}:
+% 0pt if specified papersize at \cs{documentstyle} option.}
+% \begin{macrocode}
+ \if@stysize
+ \if@twocolumn\else
+ \setlength\oddsidemargin{0\p@}
+ \setlength\evensidemargin{0\p@}
+ \fi
+ \fi
+% \end{macrocode}
+%
+% $B8_49%b!<%I$G$J$$>l9g!'(B
+% \begin{macrocode}
+\else
+ \setlength\@tempdima{\paperwidth}
+%<tate> \addtolength\@tempdima{-\textheight}
+%<yoko> \addtolength\@tempdima{-\textwidth}
+% \end{macrocode}
+%
+% |\oddsidemargin|$B$r7W;;$7$^$9!#(B
+% \begin{macrocode}
+ \if@twoside
+%<tate> \setlength\oddsidemargin{.6\@tempdima}
+%<yoko> \setlength\oddsidemargin{.4\@tempdima}
+ \else
+ \setlength\oddsidemargin{.5\@tempdima}
+ \fi
+ \addtolength\oddsidemargin{-1in}
+% \end{macrocode}
+% \changes{v1.1p}{1999/1/6}{\cs{oddsidemargin}$B$N%]%$%s%H$X$NJQ49$r8e$m$K(B}
+% |\evensidemargin|$B$r7W;;$7$^$9!#(B
+% \begin{macrocode}
+ \setlength\evensidemargin{\paperwidth}
+ \addtolength\evensidemargin{-2in}
+%<tate> \addtolength\evensidemargin{-\textheight}
+%<yoko> \addtolength\evensidemargin{-\textwidth}
+ \addtolength\evensidemargin{-\oddsidemargin}
+ \@settopoint\oddsidemargin % 1999.1.6
+ \@settopoint\evensidemargin
+% \end{macrocode}
+% |\marginparwidth|$B$r7W;;$7$^$9!#(B
+% $B$3$3$G!"(B|\@tempdima|$B$NCM$O!"(B\linebreak
+% |\paperwidth| $-$ |\textwidth|$B$G$9!#(B
+% \changes{v1.1d}{1995/11/24}{\break typo: \cs{marginmarwidth} to \cs{marginparwidth}}
+% \begin{macrocode}
+%<*yoko>
+ \if@twoside
+ \setlength\marginparwidth{.6\@tempdima}
+ \addtolength\marginparwidth{-.4in}
+ \else
+ \setlength\marginparwidth{.5\@tempdima}
+ \addtolength\marginparwidth{-.4in}
+ \fi
+ \ifdim \marginparwidth >2in
+ \setlength\marginparwidth{2in}
+ \fi
+%</yoko>
+% \end{macrocode}
+%
+% $B=DAH$N>l9g$O!">/$7J#;($G$9!#(B
+% \begin{macrocode}
+%<*tate>
+ \setlength\@tempdima{\paperheight}
+ \addtolength\@tempdima{-\textwidth}
+ \addtolength\@tempdima{-\topmargin}
+ \addtolength\@tempdima{-\headheight}
+ \addtolength\@tempdima{-\headsep}
+ \addtolength\@tempdima{-\footskip}
+ \setlength\marginparwidth{.5\@tempdima}
+%</tate>
+ \@settopoint\marginparwidth
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{$B5SCm(B}
+%
+% \begin{macro}{\footnotesep}
+% |\footnotesep|$B$O!"$=$l$>$l$N5SCm$N@hF,$KCV$+$l$k(B``$B;YCl(B''$B$N9b$5$G$9!#(B
+% $B$3$N%/%i%9$G$O!"DL>o$N(B|\footnotesize|$B$N;YCl$HF1$8D9$5$G$9$N$G!"(B
+% $B5SCm4V$KM>7W$J6uGr$OF~$j$^$;$s!#(B
+% \begin{macrocode}
+%<10pt>\setlength\footnotesep{6.65\p@}
+%<11pt>\setlength\footnotesep{7.7\p@}
+%<12pt>\setlength\footnotesep{8.4\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footins}
+% |\skip\footins|$B$O!"K\J8$N:G=*9T$H:G=i$N5SCm$H$N4V$N5wN%$G$9!#(B
+% \begin{macrocode}
+%<10pt>\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
+%<11pt>\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@}
+%<12pt>\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%U%m!<%H(B}
+% $B$9$Y$F$N%U%m!<%H%Q%i%a!<%?$O!"(B\LaTeX{}$B$N%+!<%M%k$G%G%U%)%k%H$,Dj5A(B
+% $B$5$l$F$$$^$9!#$=$N$?$a!"%+%&%s%?0J30$N%Q%i%a!<%?$O(B|\renewcommand|$B$G(B
+% $B@_Dj$9$kI,MW$,$"$j$^$9!#(B
+%
+% \subsubsection{$B%U%m!<%H%Q%i%a!<%?(B}
+%
+% \begin{macro}{\floatsep}
+% \begin{macro}{\textfloatsep}
+% \begin{macro}{\intextsep}
+% $B%U%m!<%H%*%V%8%'%/%H$,K\J8$N$"$k%Z!<%8$KCV$+$l$k$H$-!"(B
+% $B%U%m!<%H$H$=$N%Z!<%8$K$"$kJL$N%*%V%8%'%/%H$N5wN%$O!"(B
+% $B$3$l$i$N%Q%i%a!<%?$G@)8f$5$l$^$9!#$3$l$i$N%Q%i%a!<%?$O!"0lCJAH%b!<%I$H(B
+% $BFsCJAH%b!<%I$NCJH4$-$G$J$$%U%m!<%H$NN>J}$G;H$o$l$^$9!#(B
+%
+% |\floatsep|$B$O!"%Z!<%8>eIt$"$k$$$O2<It$N%U%m!<%H4V$N5wN%$G$9!#(B
+%
+% |\textfloatsep|$B$O!"%Z!<%8>eIt$"$k$$$O2<It$N%U%m!<%H$HK\J8$H$N5wN%$G$9!#(B
+%
+% |\intextsep|$B$O!"K\J8$NESCf$K=PNO$5$l$k%U%m!<%H$HK\J8$H$N5wN%$G$9!#(B
+% \begin{macrocode}
+%<*10pt>
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+%</10pt>
+%<*11pt>
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+%</11pt>
+%<*12pt>
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@}
+%</12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatsep}
+% \begin{macro}{\dbltextfloatsep}
+% $BFsCJAH%b!<%I$G!"(B|\textwidth|$B$NI}$r;}$D!"CJH4$-$N%U%m!<%H%*%V%8%'%/%H$,(B
+% $BK\J8$HF1$8%Z!<%8$KCV$+$l$k$H$-!"K\J8$H%U%m!<%H$H$N5wN%$O!"(B
+% |\dblfloatsep|$B$H(B|\dbltextfloatsep|$B$K$h$C$F@)8f$5$l$^$9!#(B
+%
+% |\dblfloatsep|$B$O!"%Z!<%8>eIt$"$k$$$O2<It$N%U%m!<%H$HK\J8$H$N5wN%$G$9!#(B
+%
+% |\dbltextfloatsep|$B$O!"%Z!<%8>eIt$"$k$$$O2<It$N%U%m!<%H4V$N5wN%$G$9!#(B
+% \begin{macrocode}
+%<*10pt>
+\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+%</10pt>
+%<*11pt>
+\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+%</11pt>
+%<*12pt>
+\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+%</12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@fptop}
+% \begin{macro}{\@fpsep}
+% \begin{macro}{\@fpbot}
+% $B%U%m!<%H%*%V%8%'%/%H$,!"FHN)$7$?%Z!<%8$KCV$+$l$k$H$-!"(B
+% $B$3$N%Z!<%8$N%l%$%"%&%H$O!"<!$N%Q%i%a!<%?$G@)8f$5$l$^$9!#(B
+% $B$3$l$i$N%Q%i%a!<%?$O!"0lCJAH%b!<%I$+!"FsCJAH%b!<%I$G$N0lCJ=PNO$N(B
+% $B%U%m!<%H%*%V%8%'%/%H$KBP$7$F;H$o$l$^$9!#(B
+%
+% $B%Z!<%8>eIt$G$O!"(B|\@fptop|$B$N?-=LD9$,A^F~$5$l$^$9!#(B
+% $B%Z!<%82<It$G$O!"(B|\@fpbot|$B$N?-=LD9$,A^F~$5$l$^$9!#(B
+% $B%U%m!<%H4V$K$O(B|\@fpsep|$B$,A^F~$5$l$^$9!#(B
+%
+% $B$J$*!"$=$N%Z!<%8$r6uGr$GK~$?$9$?$a$K!"(B|\@fptop|$B$H(B|\@fpbot|$B$N(B
+% $B>/$J$/$H$b$I$A$i$+0lJ}$K!"(B|plus ...fil|$B$r4^$a$F$/$@$5$$!#(B
+% \begin{macrocode}
+%<*10pt>
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{8\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+%</10pt>
+%<*11pt>
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{8\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+%</11pt>
+%<*12pt>
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{10\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+%</12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dblfptop}
+% \begin{macro}{\@dblfpsep}
+% \begin{macro}{\@dblfpbot}
+% $BFsCJAH%b!<%I$G$NFsCJH4$-$N%U%m!<%H$KBP$7$F$O!"(B
+% $B$3$l$i$N%Q%i%a!<%?$,;H$o$l$^$9!#(B
+% \begin{macrocode}
+%<*10pt>
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{8\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+%</10pt>
+%<*11pt>
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{8\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+%</11pt>
+%<*12pt>
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{10\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+%</12pt>
+%</10pt|11pt|12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{$B%U%m!<%H%*%V%8%'%/%H$N>e8BCM(B}
+%
+% \begin{macro}{\c@topnumber}
+% \Lcount{topnumber}$B$O!"K\J8%Z!<%8$N>eIt$K=PNO$G$-$k%U%m!<%H$N:GBg?t$G$9!#(B
+% \begin{macrocode}
+%<*article|report|book>
+\setcounter{topnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@bottomnumber}
+% \Lcount{bottomnumber}$B$O!"K\J8%Z!<%8$N2<It$K=PNO$G$-$k%U%m!<%H$N:GBg?t$G$9!#(B
+% \begin{macrocode}
+\setcounter{bottomnumber}{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@totalnumber}
+% \Lcount{totalnumber}$B$O!"K\J8%Z!<%8$K=PNO$G$-$k%U%m!<%H$N:GBg?t$G$9!#(B
+% \begin{macrocode}
+\setcounter{totalnumber}{3}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@dbltopnumber}
+% \Lcount{dbltopnumber}$B$O!"FsCJAH;~$K$*$1$k!"K\J8%Z!<%8$N>eIt$K=PNO$G$-$k(B
+% $BCJH4$-$N%U%m!<%H$N:GBg?t$G$9!#(B
+% \begin{macrocode}
+\setcounter{dbltopnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\topfraction}
+% $B$3$l$O!"K\J8%Z!<%8$N>eIt$K=PNO$5$l$k%U%m!<%H$,@jM-$G$-$k:GBg$N3d$j9g$$$G$9!#(B
+% \begin{macrocode}
+\renewcommand{\topfraction}{.7}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bottomfraction}
+% $B$3$l$O!"K\J8%Z!<%8$N2<It$K=PNO$5$l$k%U%m!<%H$,@jM-$G$-$k:GBg$N3d$j9g$$$G$9!#(B
+% \begin{macrocode}
+\renewcommand{\bottomfraction}{.3}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textfraction}
+% $B$3$l$O!"K\J8%Z!<%8$K:GDc8B!"F~$i$J$/$F$O$J$i$J$$K\J8$N3d$j9g$$$G$9!#(B
+% \begin{macrocode}
+\renewcommand{\textfraction}{.2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\floatpagefraction}
+% $B$3$l$O!"%U%m!<%H$@$1$N%Z!<%8$G:GDc8B!"F~$i$J$/$F$O$J$i$J$$(B
+% $B%U%m!<%H$N3d$j9g$$$G$9!#(B
+% \begin{macrocode}
+\renewcommand{\floatpagefraction}{.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbltopfraction}
+% $B$3$l$O!"#2CJAH;~$K$*$1$kK\J8%Z!<%8$K!"(B
+% $B#2CJH4$-$N%U%m!<%H$,@j$a$k$3$H$,$G$-$k:GBg$N3d$j9g$$$G$9!#(B
+% \begin{macrocode}
+\renewcommand{\dbltopfraction}{.7}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatpagefraction}
+% $B$3$l$O!"#2CJAH;~$K$*$1$k%U%m!<%H$@$1$N%Z!<%8$K:GDc8B!"(B
+% $BF~$i$J$/$F$O$J$i$J$$#2CJH4$-$N%U%m!<%H$N3d$j9g$$$G$9!#(B
+% \begin{macrocode}
+\renewcommand{\dblfloatpagefraction}{.5}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{$B2~%Z!<%8!JF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#HG$N$_!K(B}\label{sec:cleardoublepage}
+%
+% \begin{macro}{\pltx@cleartorightpage}
+% \begin{macro}{\pltx@cleartoleftpage}
+% \begin{macro}{\pltx@cleartooddpage}
+% \begin{macro}{\pltx@cleartoevenpage}
+% |\cleardoublepage|$BL?Na$O!"(B\LaTeX{}$B%+!<%M%k$G$O!V4q?t%Z!<%8$K$J$k$^$G%Z!<%8$r(B
+% $B7+$kL?Na!W$H$7$FDj5A$5$l$F$$$^$9!#$7$+$7(Bp\LaTeX{}$B%+!<%M%k$G$O!"%"%9%-!<$NJ}?K(B
+% $B$K$h$j!V2#AH$G$O4q?t%Z!<%8$K$J$k$^$G!"=DAH$G$O6v?t%Z!<%8$K$J$k$^$G%Z!<%8$r(B
+% $B7+$kL?Na!W$K:FDj5A$5$l$F$$$^$9!#$9$J$o$A!"(Bp\LaTeX{}$B$G$O=DAH$G$b2#AH$G$b(B
+% $B1&%Z!<%8$K$J$k$^$G%Z!<%8$r7+$k$3$H$K$J$j$^$9!#(B
+%
+% p\LaTeX{}$BI8=`%/%i%9$N(Bbook$B$O!"2#AH$b=DAH$b(B|openright|$B$,%G%U%)%k%H$K$J$C$F$$$F!"(B
+% $B$3$l$O=>Mh(Bp\LaTeX{}$B%+!<%M%k$GDj5A$5$l$?(B|\cleardoublepage|$B$rMxMQ$7$F$$$^$7$?!#(B
+% $B$7$+$7!"=DAH$G4q?t%Z!<%8;O$^$j$NJ8=q$r:n$j$?$$>l9g$b$"$k$G$7$g$&$+$i!"(B
+% $B%3%_%e%K%F%#HG%/%i%9$G$O0J2<$N!JHs%f!<%68~$1!KL?Na$rDI2C$7$^$9!#(B
+% \begin{enumerate}
+% \item|\pltx@cleartorightpage|$B!'1&%Z!<%8$K$J$k$^$G%Z!<%8$r7+$kL?Na(B
+% \item|\pltx@cleartoleftpage|$B!':8%Z!<%8$K$J$k$^$G%Z!<%8$r7+$kL?Na(B
+% \item|\pltx@cleartooddpage|$B!'4q?t%Z!<%8$K$J$k$^$G%Z!<%8$r7+$kL?Na(B
+% \item|\pltx@cleartoevenpage|$B!'6v?t%Z!<%8$K$J$k$^$G%Z!<%8$r7+$kL?Na(B
+% \end{enumerate}
+% \changes{v1.7d}{2017/02/15}{\cs{cleardoublepage}$B$NBeMQ$H$J$kL?Na72$rDI2C(B}
+% \begin{macrocode}
+\def\pltx@cleartorightpage{\clearpage\if@twoside
+ \ifodd\c@page
+ \iftdir
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+ \else
+ \ifydir
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+ \fi\fi}
+\def\pltx@cleartoleftpage{\clearpage\if@twoside
+ \ifodd\c@page
+ \ifydir
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+ \else
+ \iftdir
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+ \fi\fi}
+% \end{macrocode}
+%
+% |\pltx@cleartooddpage|$B$O(B\LaTeX{}$B$N(B|\cleardoublepage|$B$K;w$F$$$^$9$,!"(B
+% $B>e$N(B2$B$D$K9g$o$;$k$?$a(B|\thispagestyle{empty}|$B$rDI2C$7$F$"$j$^$9!#(B
+% \begin{macrocode}
+\def\pltx@cleartooddpage{\clearpage\if@twoside
+ \ifodd\c@page\else
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi\fi}
+\def\pltx@cleartoevenpage{\clearpage\if@twoside
+ \ifodd\c@page
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cleardoublepage}
+% $B$=$7$F(Breport$B$H(Bbook$B%/%i%9$N>l9g$O!"%f!<%68~$1L?Na$G$"$k(B|\cleardoublepage|$B$r!"(B
+% |openright|$B%*%W%7%g%s$,;XDj$5$l$F$$$k>l9g$O(B|\pltx@cleartorightpage|$B$K!"(B
+% |openleft|$B%*%W%7%g%s$,;XDj$5$l$F$$$k>l9g$O(B|\pltx@cleartoleftpage|$B$K!"(B
+% $B$=$l$>$l(B|\let|$B$7$^$9!#(B|openany|$B$N>l9g$O(Bp\LaTeX{}$B%+!<%M%k$NDj5A$N$^$^$G$9!#(B
+% \begin{macrocode}
+%<*!article>
+\if@openleft
+ \let\cleardoublepage\pltx@cleartoleftpage
+\else\if@openright
+ \let\cleardoublepage\pltx@cleartorightpage
+\fi\fi
+%</!article>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \section{$B%Z!<%8%9%?%$%k(B}\label{sec:pagestyle}
+% p\LaTeXe{}$B$G$O!"$D$.$N(B6$B<oN`$N%Z!<%8%9%?%$%k$r;HMQ$G$-$^$9!#(B
+% \pstyle{empty}$B$O(B\file{ltpage.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+%
+% \begin{tabular}{ll}
+% empty & $B%X%C%@$K$b%U%C%?$K$b=PNO$7$J$$(B\\
+% plain & $B%U%C%?$K%Z!<%8HV9f$N$_$r=PNO$9$k(B\\
+% headnombre & $B%X%C%@$K%Z!<%8HV9f$N$_$r=PNO$9$k(B\\
+% footnombre & $B%U%C%?$K%Z!<%8HV9f$N$_$r=PNO$9$k(B\\
+% headings & $B%X%C%@$K8+=P$7$H%Z!<%8HV9f$r=PNO$9$k(B\\
+% bothstyle & $B%X%C%@$K8+=P$7!"%U%C%?$K%Z!<%8HV9f$r=PNO$9$k(B\\
+% \end{tabular}
+%
+% $B%Z!<%8%9%?%$%k(B\pstyle{foo}$B$O!"(B|\ps@foo|$B%3%^%s%I$H$7$FDj5A$5$l$^$9!#(B
+%
+% \begin{macro}{\@evenhead}
+% \begin{macro}{\@oddhead}
+% \begin{macro}{\@evenfoot}
+% \begin{macro}{\@oddfoot}
+% $B$3$l$i$O(B|\ps@...|$B$+$i8F$S=P$5$l!"%X%C%@$H%U%C%?$r=PNO$9$k%^%/%m$G$9!#(B
+%
+% \DeleteShortVerb{\|}
+% \begin{tabular}{ll}
+% \cs{@oddhead} & $B4q?t%Z!<%8$N%X%C%@$r=PNO(B\\
+% \cs{@oddfoot} & $B4q?t%Z!<%8$N%U%C%?$r=PNO(B\\
+% \cs{@evenhead} & $B6v?t%Z!<%8$N%X%C%@$r=PNO(B\\
+% \cs{@evenfoot} & $B6v?t%Z!<%8$N%U%C%?$r=PNO(B\\
+% \end{tabular}
+% \MakeShortVerb{\|}
+%
+% $B$3$l$i$NFbMF$O!"2#AH$N>l9g$O(B|\textwidth|$B$NI}$r;}$D(B|\hbox|$B$KF~$l$i$l!"(B
+% $B=DAH$N>l9g$O(B|\textheight|$B$NI}$r;}$D(B|\hbox|$B$KF~$l$i$l$^$9!#(B
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{$B%^!<%/$K$D$$$F(B}
+% $B%X%C%@$KF~$k>OHV9f$d>O8+=P$7$O!"8+=P$7%3%^%s%I$G<B9T$5$l$k%^!<%/%3%^%s%I$G(B
+% $B7hDj$5$l$^$9!#$3$3$G$O!"<B9T$5$l$k%^!<%/%3%^%s%I$NDj5A$r9T$J$C$F$$$^$9!#(B
+% $B$3$l$i$N%^!<%/%3%^%s%I$O!"(B\TeX{}$B$N(B|\mark|$B5!G=$rMQ$$$F!"(B
+% `left'$B$H(B`right'$B$N#2<oN`$N%^!<%/$r@8@.$9$k$h$&$KDj5A$7$F$$$^$9!#(B
+%
+% \begin{flushleft}
+% |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: $BN>J}$N%^!<%/$KDI2C$7$^$9!#(B
+%
+% |\markright{|\meta{RIGHT}|}|: `$B1&(B'$B%^!<%/$KDI2C$7$^$9!#(B
+%
+% |\leftmark|: |\@oddhead|, |\@oddfoot|, |\@evenhead|, |\@evenfoot|$B%^%/%m$G(B
+% $B;H$o$l!"8=:_$N(B``$B:8(B''$B%^!<%/$r=PNO$7$^$9!#(B
+% |\leftmark|$B$O(B\TeX{}$B$N(B|\botmark|$B%3%^%s%I$N$h$&$JF/$-$r$7$^$9!#(B
+% $B=i4|CM$O6u$G$J$/$F$O$$$1$^$;$s!#(B
+%
+% |\rightmark|: |\@oddhead|, |\@oddfoot|, |\@evenhead|, |\@evenfoot|$B%^%/%m$G(B
+% $B;H$o$l!"8=:_$N(B``$B1&(B''$B%^!<%/$r=PNO$7$^$9!#(B
+% |\rightmark|$B$O(B\TeX{}$B$N(B|\firstmark|$B%3%^%s%I$N$h$&$JF/$-$r$7$^$9!#(B
+% $B=i4|CM$O6u$G$J$/$F$O$$$1$^$;$s!#(B
+% \end{flushleft}
+%
+% $B%^!<%/%3%^%s%I$NF0:n$O!":8%^!<%/$N(B`$BHO0OFb$N(B'$B1&%^!<%/$N$?$a$K(B
+% $B9gM}E*$K$J$C$F$$$^$9!#$?$H$($P!":8%^!<%/$O(B|\chapter|$B%3%^%s%I$K$h$C$F(B
+% $BJQ99$5$l$^$9!#$=$7$F1&%^!<%/$O(B|\section|$B%3%^%s%I$K$h$C$FJQ99$5$l$^$9!#(B
+% $B$7$+$7!"F10l%Z!<%8$KJ#?t$N(B|\markboth|$B%3%^%s%I$,8=$l$?$H$-!"(B
+% $B$*$+$7$J7k2L$H$J$k$3$H$,$"$j$^$9!#(B
+%
+% |\tableofcontents|$B$N$h$&$J%3%^%s%I$O!"(B|\@mkboth|$B%3%^%s%I$rMQ$$$F!"(B
+% $B$"$k%Z!<%8%9%?%$%k$NCf$G%^!<%/$r@_Dj$7$J$/$F$O$J$j$^$;$s!#(B
+% |\@mkboth|$B$O!"(B|\ps@...|$B%3%^%s%I$K$h$C$F!"(B|\markboth|$B!J%X%C%@$r@_Dj$9$k!K$+!"(B
+% |\@gobbletwo|$B!J2?$b$7$J$$!K$K(B|\let|$B$5$l$^$9!#(B
+%
+% \changes{v1.0a}{1995/08/30}{$BCl$N=qBN$,%N%s%V%k$K1F6A$9$k%P%0$N=$@5(B}
+%
+% \subsection{plain$B%Z!<%8%9%?%$%k(B}
+%
+% \begin{macro}{\ps@plain}
+% \pstyle{jpl@in}$B$K(B|\let|$B$9$k$?$a$K!"$3$3$GDj5A$r$7$^$9!#(B
+% \begin{macrocode}
+\def\ps@plain{\let\@mkboth\@gobbletwo
+ \let\ps@jpl@in\ps@plain
+ \let\@oddhead\@empty
+ \def\@oddfoot{\reset@font\hfil\thepage\hfil}%
+ \let\@evenhead\@empty
+ \let\@evenfoot\@oddfoot}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{jpl@in$B%Z!<%8%9%?%$%k(B}
+%
+% \begin{macro}{\ps@jpl@in}
+% \changes{v1.0d}{1996/02/29}{\pstyle{jpl@in}$B$N=i4|CM$rDj5A(B}
+%
+% \pstyle{jpl@in}$B%9%?%$%k$O!"%/%i%9%U%!%$%kFbIt$G;HMQ$9$k$b$N$G$9!#(B
+% \LaTeX{}$B$G$O!"(Bbook$B%/%i%9$r(B\pstyle{headings}$B$H$7$F$$$^$9!#(B
+% $B$7$+$7!"(B\cs{tableofcontents}$B%3%^%s%I$NFbIt$G$O(B\pstyle{plain}$B$H$7$F(B
+% $B@_Dj$5$l$k$?$a!"0l$D$NJ8=q$G$N%Z!<%8HV9f$N0LCV$,>e2<$K=PNO$5$l$k(B
+% $B$3$H$K$J$j$^$9!#(B
+%
+% $B$=$3$G!"(Bp\LaTeXe{}$B$G$O!"(B\cs{tableofcontents}$B$d(B\cs{theindex}$B$N%Z!<%8%9%?%$%k(B
+% $B$r(B\pstyle{jpl@in}$B$K$7!"<B:]$K=PNO$5$l$k7A<0$O!"$[$+$N%Z!<%8%9%?%$%k(B
+% $B$G(B|\let|$B$r$7$F$$$^$9!#$7$?$,$C$F!"(B\pstyle{headings}$B$N$H$-!"L\<!%Z!<%8$N(B
+% $B%Z!<%8HV9f$O%X%C%@0LCV$K=PNO$5$l!"(B\pstyle{plain}$B$N$H$-$K$O!"%U%C%?0LCV$K(B
+% $B=PNO$5$l$^$9!#(B
+%
+% $B$3$3$G!"Dj5A$r$7$F$$$k$N$O!"$=$N=i4|CM$G$9!#(B
+% \begin{macrocode}
+\let\ps@jpl@in\ps@plain
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{headnombre$B%Z!<%8%9%?%$%k(B}
+%
+% \begin{macro}{\ps@headnombre}
+% \pstyle{headnombre}$B%9%?%$%k$O!"%X%C%@$K%Z!<%8HV9f$N$_$r=PNO$7$^$9!#(B
+% \begin{macrocode}
+\def\ps@headnombre{\let\@mkboth\@gobbletwo
+ \let\ps@jpl@in\ps@headnombre
+%<yoko> \def\@evenhead{\thepage\hfil}%
+%<yoko> \def\@oddhead{\hfil\thepage}%
+%<tate> \def\@evenhead{\hfil\thepage}%
+%<tate> \def\@oddhead{\thepage\hfil}%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{footnombre$B%Z!<%8%9%?%$%k(B}
+%
+% \begin{macro}{\ps@footnombre}
+% \pstyle{footnombre}$B%9%?%$%k$O!"%U%C%?$K%Z!<%8HV9f$N$_$r=PNO$7$^$9!#(B
+% \begin{macrocode}
+\def\ps@footnombre{\let\@mkboth\@gobbletwo
+ \let\ps@jpl@in\ps@footnombre
+%<yoko> \def\@evenfoot{\thepage\hfil}%
+%<yoko> \def\@oddfoot{\hfil\thepage}%
+%<tate> \def\@evenfoot{\hfil\thepage}%
+%<tate> \def\@oddfoot{\thepage\hfil}%
+ \let\@oddhead\@empty\let\@evenhead\@empty}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{headings$B%9%?%$%k(B}
+% \pstyle{headings}$B%9%?%$%k$O!"%X%C%@$K8+=P$7$H%Z!<%8HV9f$r=PNO$7$^$9!#(B
+%
+% \begin{macro}{\ps@headings}
+% $B$3$N%9%?%$%k$O!"N>LL0u:~$HJRLL0u:~$H$G7A<0$,0[$J$j$^$9!#(B
+% \begin{macrocode}
+\if@twoside
+% \end{macrocode}
+% $B2#AH$N>l9g$O!"4q?t%Z!<%8$,1&$K!"6v?t%Z!<%8$,:8$K$-$^$9!#(B
+% $B=DAH$N>l9g$O!"4q?t%Z!<%8$,:8$K!"6v?t%Z!<%8$,1&$K$-$^$9!#(B
+% \begin{macrocode}
+ \def\ps@headings{\let\ps@jpl@in\ps@headnombre
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+%<yoko> \def\@evenhead{\thepage\hfil\leftmark}%
+%<yoko> \def\@oddhead{{\rightmark}\hfil\thepage}%
+%<tate> \def\@evenhead{{\leftmark}\hfil\thepage}%
+%<tate> \def\@oddhead{\thepage\hfil\rightmark}%
+ \let\@mkboth\markboth
+%<*article>
+ \def\sectionmark##1{\markboth{%
+ \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
+ ##1}{}}%
+ \def\subsectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\@ne \thesubsection.\hskip1zw\fi
+ ##1}}%
+%</article>
+%<*report|book>
+ \def\chaptermark##1{\markboth{%
+ \ifnum \c@secnumdepth >\m@ne
+%<book> \if@mainmatter
+ \@chapapp\thechapter\@chappos\hskip1zw
+%<book> \fi
+ \fi
+ ##1}{}}%
+ \def\sectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
+ ##1}}%
+%</report|book>
+ }
+% \end{macrocode}
+% $BJRLL0u:~$N>l9g!'(B
+% \changes{v1.1g}{1997/08/25}{$BJRLL0u:~$N$H$-!"(Bsection$B%l%Y%k$,=PNO$5$l$J$$(B
+% $B$N$r=$@5(B}
+% \begin{macrocode}
+\else % if not twoside
+ \def\ps@headings{\let\ps@jpl@in\ps@headnombre
+ \let\@oddfoot\@empty
+%<yoko> \def\@oddhead{{\rightmark}\hfil\thepage}%
+%<tate> \def\@oddhead{\thepage\hfil\rightmark}%
+ \let\@mkboth\markboth
+%<*article>
+ \def\sectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\m@ne \thesection.\hskip1zw\fi
+ ##1}}%
+%</article>
+%<*report|book>
+\def\chaptermark##1{\markright{%
+ \ifnum \c@secnumdepth >\m@ne
+%<book> \if@mainmatter
+ \@chapapp\thechapter\@chappos\hskip1zw
+%<book> \fi
+ \fi
+ ##1}}%
+%</report|book>
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{bothstyle$B%9%?%$%k(B}
+%
+% \begin{macro}{\ps@bothstyle}
+% \pstyle{bothstyle}$B%9%?%$%k$O!"(B
+% $B%X%C%@$K8+=P$7$r!"%U%C%?$K%Z!<%8HV9f$r=PNO$7$^$9!#(B
+%
+% $B$3$N%9%?%$%k$O!"N>LL0u:~$HJRLL0u:~$H$G7A<0$,0[$J$j$^$9!#(B
+% \changes{v1.0d}{1995/08/23}{$B2#AH$N(Bevenfoot$B$,Cf1{B7$($K$J$C$F$$$?$N$r=$@5(B}
+% \changes{v1.0d}{1996/03/05}{$B2#AH$G6v?t%Z!<%8$H4q?t%Z!<%8$N@_Dj$,5U$J$N$r=$@5(B}
+% \begin{macrocode}
+\if@twoside
+ \def\ps@bothstyle{\let\ps@jpl@in\ps@footnombre
+%<*yoko>
+ \def\@evenhead{\leftmark\hfil}% right page
+ \def\@evenfoot{\thepage\hfil}% right page
+ \def\@oddhead{\hfil\rightmark}% left page
+ \def\@oddfoot{\hfil\thepage}% left page
+%</yoko>
+%<*tate>
+ \def\@evenhead{\hfil\leftmark}% right page
+ \def\@evenfoot{\hfil\thepage}% right page
+ \def\@oddhead{\rightmark\hfil}% left page
+ \def\@oddfoot{\thepage\hfil}% left page
+%</tate>
+ \let\@mkboth\markboth
+%<*article>
+ \def\sectionmark##1{\markboth{%
+ \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
+ ##1}{}}%
+ \def\subsectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\@ne \thesubsection.\hskip1zw\fi
+ ##1}}%
+%</article>
+%<*report|book>
+\def\chaptermark##1{\markboth{%
+ \ifnum \c@secnumdepth >\m@ne
+%<book> \if@mainmatter
+ \@chapapp\thechapter\@chappos\hskip1zw
+%<book> \fi
+ \fi
+ ##1}{}}%
+ \def\sectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
+ ##1}}%
+%</report|book>
+ }
+% \end{macrocode}
+% \changes{v1.1g}{1997/08/25}{$BJRLL0u:~$N$H$-!"(Bsection$B%l%Y%k$,=PNO$5$l$J$$(B
+% $B$N$r=$@5(B}
+% \changes{v1.1i}{1997/12/12}{report, book$B%/%i%9$GJRLL0u:~;~$K!"(B
+% bothstyle$B%9%?%$%k$K$9$k$H!"%3%s%Q%$%k%(%i!<$K$J$k$N$r=$@5(B}
+% \begin{macrocode}
+\else % if one column
+ \def\ps@bothstyle{\let\ps@jpl@in\ps@footnombre
+%<yoko> \def\@oddhead{\hfil\rightmark}%
+%<yoko> \def\@oddfoot{\hfil\thepage}%
+%<tate> \def\@oddhead{\rightmark\hfil}%
+%<tate> \def\@oddfoot{\thepage\hfil}%
+ \let\@mkboth\markboth
+%<*article>
+ \def\sectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\m@ne \thesection.\hskip1zw\fi
+ ##1}}%
+%</article>
+%<*report|book>
+ \def\chaptermark##1{\markright{%
+ \ifnum \c@secnumdepth >\m@ne
+%<book> \if@mainmatter
+ \@chapapp\thechapter\@chappos\hskip1zw
+%<book> \fi
+ \fi
+ ##1}}%
+%</report|book>
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{myheading$B%9%?%$%k(B}
+%
+% \begin{macro}{\ps@myheadings}
+% \changes{v1.0d}{1995/08/23}{$B2#AH%b!<%I$N:81&$,5U$G$"$C$?$N$r=$@5(B}
+% \pstyle{myheadings}$B%Z!<%8%9%?%$%k$O4J7i$KDj5A$5$l$F$$$^$9!#(B
+% $B%f!<%6$,%Z!<%8%9%?%$%k$r@_7W$9$k$H$-$N%R%J7?$H$7$F;HMQ$9$k$3$H$,$G$-$^$9!#(B
+% \begin{macrocode}
+\def\ps@myheadings{\let\ps@jpl@in\ps@plain%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+%<yoko> \def\@evenhead{\thepage\hfil\leftmark}%
+%<yoko> \def\@oddhead{{\rightmark}\hfil\thepage}%
+%<tate> \def\@evenhead{{\leftmark}\hfil\thepage}%
+%<tate> \def\@oddhead{\thepage\hfil\rightmark}%
+ \let\@mkboth\@gobbletwo
+%<!article> \let\chaptermark\@gobble
+ \let\sectionmark\@gobble
+%<article> \let\subsectionmark\@gobble
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{$BJ8=q%3%^%s%I(B}
+%
+% \subsection{$BI=Bj(B}
+%
+% \begin{macro}{\title}
+% \begin{macro}{\author}
+% \begin{macro}{\date}
+% $BJ8=q$N%?%$%H%k!"Cx<T!"F|IU$N>pJs$N$?$a$N!"(B
+% $B$3$l$i$N#3$D$N%3%^%s%I$O(B\file{ltsect.dtx}$B$GDs6!$5$l$F$$$^$9!#(B
+% $B$3$l$i$N%3%^%s%I$O<!$N$h$&$KDj5A$5$l$F$$$^$9!#(B
+% \begin{macrocode}
+%\newcommand*{\title}[1]{\gdef\@title{#1}}
+%\newcommand*{\author}[1]{\gdef\@author{#1}}
+%\newcommand*{\date}[1]{\gdef\@date{#1}}
+% \end{macrocode}
+% |\date|$B%^%/%m$N%G%U%)%k%H$O!":#F|$NF|IU$G$9!#(B
+% \begin{macrocode}
+%\date{\today}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{titlepage}
+% $BDL>o$N4D6-$G$O!"%Z!<%8$N:G=i$H:G8e$r=|$-!"%?%$%H%k%Z!<%84D6-$O2?$b$7$^$;$s!#(B
+% $B$^$?!"%Z!<%8HV9f$N=PNO$rM^@)$7$^$9!#%l%]!<%H%9%?%$%k$G$O!"(B
+% $B%Z!<%8HV9f$r(B1$B$K%j%;%C%H$7!"$=$7$F:G8e$G(B1$B$KLa$7$^$9!#(B
+% $B8_49%b!<%I$G$O!"%Z!<%8HV9f$O%<%m$K@_Dj$5$l$^$9$,!"(B
+% $B1&5/$3$7%Z!<%8MQ$N%Z!<%8%Q%i%a!<%?$G$O8m$C$?7k2L$K$J$j$^$9!#(B
+% $BFsCJAH%9%?%$%k$G$b0lCJAH$N%Z!<%8$,:n$i$l$^$9!#(B
+%
+% \noindent\emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$kJQ99(B}$B!'(B
+% $B>e$K$"$k$N$O%"%9%-!<HG$N@bL@$G$9!#2~$a$F%"%9%-!<HG$N5sF0$r@0M}$9$k$H!"(B
+% $B0J2<$N$h$&$K$J$j$^$9!#(B
+% \begin{enumerate}
+% \item $B%"%9%-!<HG$G$O!"%?%$%H%k%Z!<%8$NHV9f$rI,$:(B1$B$K%j%;%C%H$7$F$$$^$7$?$,!"(B
+% $B$3$l$O@5$7$/$"$j$^$;$s!#$3$l$O!"%?%$%H%k%Z!<%8$,4q?t%Z!<%8L\$+6v?t%Z!<%8L\(B
+% $B$+$K$+$+$o$i$:!"%l%$%"%&%H$@$14q?t%Z!<%8MQ$,E,MQ$5$l$F$7$^$&$+$i$G$9!#(B
+% $B$5$i$K!"%?%$%H%k$N<!$N%Z!<%8$b6v?t$N%Z!<%8HV9f$r;}$C$F$7$^$&$?$a!"N>LL0u:~(B
+% $B$G4q?t%Z!<%8$H6v?t%Z!<%8$,8r8_$K=P$J$/$J$k$H$$$&LdBj$b$"$j$^$9!#(B
+% \item $B%"%9%-!<HG(Bbook$B%/%i%9$O!"%?%$%H%k%Z!<%8$rI,$:(B|\cleardoublepage|$B$G;O$a$F(B
+% $B$$$^$7$?!#(Bp\LaTeX{}$B%+!<%M%k$G$N(B|\cleardoublepage|$B$NDj5A$+$i!"=DAH$N4{Dj$G$O(B
+% $B%?%$%H%k$,6v?t%Z!<%8L\$K=P$k$3$H$K$J$j$^$9!#$3$l<+BN$,@5$7$/$J$$$HCGDj$9$k(B
+% $B$3$H$O$G$-$^$;$s$,!"%?%$%H%k$N%Z!<%8HV9f$r(B1$B$K%j%;%C%H$9$k$3$H$H9g$o$5$C$F!"(B
+% $B6v?t%Z!<%8$KAw$C$?%?%$%H%k$K4q?t%Z!<%8MQ%l%$%"%&%H$,E,MQ$5$l$F$7$^$&$H$$$&(B
+% $B7k2L$O@5$7$/$"$j$^$;$s!#(B
+% \end{enumerate}
+% $B$=$3$G!"%3%_%e%K%F%#HG$G$O%?%$%H%k$N%l%$%"%&%H$,I,$:4q?t%Z!<%8MQ$K$J$k$H$$$&(B
+% $B5sF0$r;Y;}$7!"(Bbook$B%/%i%9$G$O%?%$%H%k%Z!<%8$r4q?t%Z!<%8L\$KAw$k$3$H$K$7$^$7$?!#(B
+% $B$3$l$G%?%$%H%k%Z!<%8$,I=;f$i$7$/8+$($k$h$&$K$J$j$^$9!#$^$?!"(Breport$B%/%i%9$N(B
+% $B$h$&$J%?%$%H%k$,@.$j9T$-$K=>$C$F=P$k>l9g$K$O(B
+% \begin{itemize}
+% \item $B4q?t%Z!<%8L\$K=P$k>l9g!"%Z!<%8HV9f$r(B1$B!J4q?t!K$K%j%;%C%H(B
+% \item $B6v?t%Z!<%8L\$K=P$k>l9g!"%Z!<%8HV9f$r(B0$B!J6v?t!K$K%j%;%C%H(B
+% \end{itemize}
+% $B$H$7$^$7$?!#(B
+%
+% $B0l$D$a$NNc$r9M$($^$9!#(B
+%\begin{verbatim}
+% \documentclass{tbook}
+% \title{$B%?%$%H%k(B}\author{$BCx<T(B}
+% \begin{document}
+% \maketitle
+% \chapter{$B%A%c%W%?!<(B}
+% \end{document}
+%\end{verbatim}
+% $B%"%9%-!<HG(Btbook$B%/%i%9$G$N7k2L$O(B
+%\begin{verbatim}
+% 1$B%Z!<%8L\!'6uGr!J%Z!<%8HV9f(B1$B$OHsI=<(!K(B
+% 2$B%Z!<%8L\!'%?%$%H%k!J4q?t%l%$%"%&%H!"%Z!<%8HV9f(B1$B$OHsI=<(!K(B
+% 3$B%Z!<%8L\!'%A%c%W%?!<!J6v?t%l%$%"%&%H!"%Z!<%8HV9f(B2$B!K(B
+%\end{verbatim}
+% $B$G$9$,!"2>$K:G=i$N6uGr%Z!<%8$5$($J$1$l$P(B
+%\begin{verbatim}
+% 1$B%Z!<%8L\!'%?%$%H%k$9$J$o$AI=;f!J4q?t%l%$%"%&%H!"%Z!<%8HV9f(B1$B$OHsI=<(!K(B
+% 2$B%Z!<%8L\!'%A%c%W%?!<!J6v?t%l%$%"%&%H!"%Z!<%8HV9f(B2$B!K(B
+%\end{verbatim}
+% $B$H$_$J$;$k$?$a!"%3%_%e%K%F%#HG$G$O6uGr%Z!<%8$rH/@8$5$;$J$$$h$&$K$7$^$7$?!#(B
+%
+% $BFs$D$a$NNc$r9M$($^$9!#(B
+%\begin{verbatim}
+% \documentclass{tbook}
+% \title{$B%?%$%H%k(B}\author{$BCx<T(B}
+% \begin{document}
+% $B%F%9%HJ8>O(B
+% \maketitle
+% \chapter{$B%A%c%W%?!<(B}
+% \end{document}
+%\end{verbatim}
+% $B%"%9%-!<HG(Btbook$B%/%i%9$G$N7k2L$O(B
+%\begin{verbatim}
+% 1$B%Z!<%8L\!'%F%9%HJ8>O!J4q?t%l%$%"%&%H!"%Z!<%8HV9f(B1$B!K(B
+% 2$B%Z!<%8L\!'%?%$%H%k!J4q?t%l%$%"%&%H!"%Z!<%8HV9f(B1$B$OHsI=<(!K(B
+% 3$B%Z!<%8L\!'%A%c%W%?!<!J6v?t%l%$%"%&%H!"%Z!<%8HV9f(B2$B!K(B
+%\end{verbatim}
+% $B$G$9$,!"$3$l$G$O4q?t$H6v?t$N%Z!<%8HV9f$,8r8_$K$J$C$F$$$J$$$N$G@5$7$/(B
+% $B$"$j$^$;$s!#$=$3$G!"%3%_%e%K%F%#HG$G$O(B
+%\begin{verbatim}
+% 1$B%Z!<%8L\!'%F%9%HJ8>O!J4q?t%l%$%"%&%H!"%Z!<%8HV9f(B1$B!K(B
+% 2$B%Z!<%8L\!'6uGr%Z!<%8!J%Z!<%8HV9f(B2$B$OHsI=<(!K(B
+% 3$B%Z!<%8L\!'%?%$%H%k!J4q?t%l%$%"%&%H!"%Z!<%8HV9f(B1$B$OHsI=<(!K(B
+% 4$B%Z!<%8L\!'%A%c%W%?!<!J6v?t%l%$%"%&%H!"%Z!<%8HV9f(B2$B!K(B
+%\end{verbatim}
+% $B$HD>$7$^$7$?!#(B
+%
+% $B$J$*!"(Bp\LaTeX~2.09$B8_49%b!<%I$O%"%9%-!<HG$N$^$^!"$9$J$o$A!V%Z!<%8HV9f$r%<%m$K(B
+% $B@_Dj!W$H$7$F$"$j$^$9!#$3$l$O!"2#AH$N1&5/$3$7$N5sF0$H$7$F$O8m$j$G$9$,!"=DAH$N(B
+% $B1&5/$3$7$N5sF0$H$7$F$O0l1~@5$7$/$J$C$F$$$k$H$$$($^$9!#(B
+%
+% $B:G=i$K8_49%b!<%I$NDj5A$r:n$j$^$9!#(B
+% \begin{macrocode}
+\if@compatibility
+\newenvironment{titlepage}
+ {%
+%<book> \cleardoublepage
+ \if@twocolumn\@restonecoltrue\onecolumn
+ \else\@restonecolfalse\newpage\fi
+ \thispagestyle{empty}%
+ \setcounter{page}\z@
+ }%
+ {\if@restonecol\twocolumn\else\newpage\fi
+ }
+% \end{macrocode}
+%
+% $B$=$7$F!"(B\LaTeX{}$B%M%$%F%#%V$N$?$a$NDj5A$G$9!#(B
+% \changes{v1.7d}{2017/02/15}{book$B%/%i%9$G(Btitlepage$B$rI,$:4q?t%Z!<%8(B
+% $B$KAw$k$h$&$KJQ99(B}
+% \changes{v1.7d}{2017/02/15}{titlepage$B$N%Z!<%8HV9f$r4q?t$J$i$P(B1$B$K!"(B
+% $B6v?t$J$i$P(B0$B$K%j%;%C%H$9$k$h$&$KJQ99(B}
+% \begin{macrocode}
+\else
+\newenvironment{titlepage}
+ {%
+%<book> \pltx@cleartooddpage %% 2017/02/15
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \ifodd\c@page\setcounter{page}\@ne\else\setcounter{page}\z@\fi %% 2017/02/15
+ }%
+ {\if@restonecol\twocolumn \else \newpage \fi
+% \end{macrocode}
+% $BN>LL%b!<%I$G$J$1$l$P!"%?%$%H%k%Z!<%8$ND>8e$N%Z!<%8$N%Z!<%8HV9f$b(B1$B$K(B
+% $B$7$^$9!#(B
+% \begin{macrocode}
+ \if@twoside\else
+ \setcounter{page}\@ne
+ \fi
+ }
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\maketitle}
+% $B$3$N%3%^%s%I$O!"I=Bj$r:n@.$7!"=PNO$7$^$9!#(B
+% $BI=Bj%Z!<%8$rFHN)$5$;$k$+$I$&$+$K$h$C$FDj5A$,0[$J$j$^$9!#(B
+% report$B$H(Bbook$B%/%i%9$N%G%U%)%k%H$OFHN)$7$?I=Bj$G$9!#(B
+% article$B%/%i%9$O%*%W%7%g%s$GFHN)$5$;$k$3$H$,$G$-$^$9!#(B
+%
+% \begin{macro}{\p@thanks}
+% $B=DAH$N$H$-$O!"(B|\thanks|$B%3%^%s%I$r(B|\p@thanks|$B$K(B|\let|$B$7$^$9!#(B
+% $B$3$N%3%^%s%I$O(B|\footnotetext|$B$r;H$o$:!"D>@\!"J8;z$r(B|\@thanks|$B$K3JG<(B
+% $B$7$F$$$-$^$9!#(B
+%
+% $BCx<TL>$NOF$KI=<($5$l$k9g0u$OD>N)$7$??t;z!"Cm<aB&$O2#$K?2$??t;z$H$J$C$F$$$^$7(B
+% $B$?$,!"IT<+A3$J$N$G(B|\hbox{\yoko ...}|$B$rDI2C$7!"N>J}$H$bD>N)$9$k$h$&$K$7$^$7$?!#(B
+% \changes{v1.7d}{2017/02/15}{$B=DAH%/%i%9$N=jB0I=<($NHV9f$rD>N)$K$7$?(B}
+% \begin{macrocode}
+\def\p@thanks#1{\footnotemark
+ \protected@xdef\@thanks{\@thanks
+ \protect{\noindent\hbox{\yoko$\m@th^\thefootnote$}#1\protect\par}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\if@titlepage
+ \newcommand{\maketitle}{\begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+%<tate> \let\thanks\p@thanks
+ \let\footnote\thanks
+% \end{macrocode}
+% \changes{v1.1d}{1997/02/12}{$B=DAH%/%i%9$NI=;f$r=D=q$-$K$9$k$h$&$K$7$?(B}
+% \begin{macrocode}
+%<tate> \vbox to\textheight\bgroup\tate\hsize\textwidth
+ \null\vfil
+ \vskip 60\p@
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip 3em%
+ {\Large
+ \lineskip .75em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1.5em%
+ {\large \@date \par}% % Set date in \large size.
+ \end{center}\par
+%<tate> \vfil{\centering\@thanks}\vfil\null
+%<tate> \egroup
+%<yoko> \@thanks\vfil\null
+ \end{titlepage}%
+% \end{macrocode}
+% \Lcount{footnote}$B%+%&%s%?$r%j%;%C%H$7!"(B|\thanks|$B$H(B|\maketitle|$B%3%^%s%I$r(B
+% $BL58z$K$7!"$$$/$D$+$NFbIt%^%/%m$r6u$K$7$F3JG<NN0h$r@aLs$7$^$9!#(B
+% \begin{macrocode}
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\p@thanks\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+% \end{macrocode}
+% $B%?%$%H%k$,AHHG$5$l$?$i!"(B|\title|$B%3%^%s%I$J$I$N@k8@$rL58z$K$G$-$^$9!#(B
+% |\and|$B$NDj5A$O!"(B|\author|$B$N0z?t$G$N$_;HMQ$7$^$9$N$G!"GK4~$7$^$9!#(B
+% \begin{macrocode}
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ }%
+\else
+ \newcommand{\maketitle}{\par
+ \begingroup
+ \renewcommand{\thefootnote}{\fnsymbol{footnote}}%
+ \def\@makefnmark{\hbox{\ifydir $\m@th^{\@thefnmark}$
+ \else\hbox{\yoko$\m@th^{\@thefnmark}$}\fi}}%
+%<*tate>
+ \long\def\@makefntext##1{\parindent 1zw\noindent
+ \hb@xt@ 2zw{\hss\@makefnmark}##1}%
+%</tate>
+%<*yoko>
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hb@xt@1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
+%</yoko>
+ \if@twocolumn
+ \ifnum \col@number=\@ne \@maketitle
+ \else \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle
+ \fi
+ \thispagestyle{jpl@in}\@thanks
+% \end{macrocode}
+% $B$3$3$G%0%k!<%W$rJD$8!"(B\Lcount{footnote}$B%+%&%s%?$r%j%;%C%H$7!"(B
+% |\thanks|, |\maketitle|, |\@maketitle|$B$rL58z$K$7!"(B
+% $B$$$/$D$+$NFbIt%^%/%m$r6u$K$7$F3JG<NN0h$r@aLs$7$^$9!#(B
+% \changes{v1.7}{2016/11/12}{$B%I%-%e%a%s%H$KH?$7$F(B\cs{@maketitle}$B$,(B
+% $B6u$K$J$C$F$$$J$+$C$?$N$r=$@5(B}
+% \begin{macrocode}
+ \endgroup
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@maketitle\relax
+ \global\let\p@thanks\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@maketitle}
+% $BFHN)$7$?I=Bj%Z!<%8$r:n$i$J$$>l9g$N!"I=Bj$N=PNO7A<0$G$9!#(B
+% \begin{macrocode}
+ \def\@maketitle{%
+ \newpage\null
+ \vskip 2em%
+ \begin{center}%
+%<yoko> \let\footnote\thanks
+%<tate> \let\footnote\p@thanks
+ {\LARGE \@title \par}%
+ \vskip 1.5em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large \@date}%
+ \end{center}%
+ \par\vskip 1.5em}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B35MW(B}
+%
+% \begin{environment}{abstract}
+% $BMWLsJ8$N$?$a$N4D6-$G$9!#(Bbook$B%/%i%9$G$O;H$($^$;$s!#(B
+% report$B%9%?%$%k$H!"(B|titlepage|$B%*%W%7%g%s$r;XDj$7$?(Barticle$B%9%?%$%k$G$O!"(B
+% $BFHN)$7$?%Z!<%8$K=PNO$5$l$^$9!#(B
+% \begin{macrocode}
+%<*article|report>
+\if@titlepage
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \@beginparpenalty\@lowpenalty
+ \begin{center}%
+ {\bfseries\abstractname}%
+ \@endparpenalty\@M
+ \end{center}}%
+ {\par\vfil\null\endtitlepage}
+\else
+ \newenvironment{abstract}{%
+ \if@twocolumn
+ \section*{\abstractname}%
+ \else
+ \small
+ \begin{center}%
+ {\bfseries\abstractname\vspace{-.5em}\vspace{\z@}}%
+ \end{center}%
+ \quotation
+ \fi}{\if@twocolumn\else\endquotation\fi}
+\fi
+%</article|report>
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \subsection{$B>O8+=P$7(B}
+%
+% \subsubsection{$B%^!<%/%3%^%s%I(B}
+%
+% \begin{macro}{\chaptermark}
+% \begin{macro}{\sectionmark}
+% \begin{macro}{\subsectionmark}
+% \begin{macro}{\subsubsectionmark}
+% \begin{macro}{\paragraphmark}
+% \begin{macro}{\subparagraphmark}
+% |\...mark|$B%3%^%s%I$r=i4|2=$7$^$9!#$3$l$i$N%3%^%s%I$O%Z!<%8%9%?%$%k$N(B
+% $BDj5A$G;H$o$l$^$9!JBh(B\ref{sec:pagestyle}$B@a;2>H!K!#(B
+% $B$3$l$i$N$?$$$F$$$N%3%^%s%I$O(B\file{ltsect.dtx}$B$G$9$G$KDj5A$5$l$F$$$^$9!#(B
+% \begin{macrocode}
+%<!article>\newcommand*{\chaptermark}[1]{}
+%\newcommand*{\sectionmark}[1]{}
+%\newcommand*{\subsectionmark}[1]{}
+%\newcommand*{\subsubsectionmark}[1]{}
+%\newcommand*{\paragraphmark}[1]{}
+%\newcommand*{\subparagraphmark}[1]{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{$B%+%&%s%?$NDj5A(B}
+%
+% \begin{macro}{\c@secnumdepth}
+% \Lcount{secnumdepth}$B$K$O!"HV9f$rIU$1$k!"8+=P$7%3%^%s%I$N%l%Y%k$r@_Dj$7$^$9!#(B
+% \begin{macrocode}
+%<article>\setcounter{secnumdepth}{3}
+%<!article>\setcounter{secnumdepth}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@chapter}
+% \begin{macro}{\c@section}
+% \begin{macro}{\c@subsection}
+% \begin{macro}{\c@subsubsection}
+% \begin{macro}{\c@paragraph}
+% \begin{macro}{\c@subparagraph}
+% $B$3$l$i$N%+%&%s%?$O8+=P$7HV9f$K;H$o$l$^$9!#(B
+% $B:G=i$N0z?t$O!"FsHVL\$N0z?t$,A}2C$9$k$?$S$K%j%;%C%H$5$l$^$9!#(B
+% $BFsHVL\$N%+%&%s%?$O$9$G$KDj5A$5$l$F$$$k$b$N$G$J$/$F$O$$$1$^$;$s!#(B
+% \begin{macrocode}
+\newcounter{part}
+%<*book|report>
+\newcounter{chapter}
+\newcounter{section}[chapter]
+%</book|report>
+%<article>\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\newcounter{subparagraph}[paragraph]
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\thepart}
+% \begin{macro}{\thechapter}
+% \begin{macro}{\thesection}
+% \begin{macro}{\thesubsection}
+% \begin{macro}{\thesubsubsection}
+% \begin{macro}{\theparagraph}
+% \begin{macro}{\thesubparagraph}
+% |\theCTR|$B$,<B:]$K=PNO$5$l$k7A<0$NDj5A$G$9!#(B
+%
+% |\arabic{|\Lcount{COUNTER}|}|$B$O!"(B\Lcount{COUNTER}$B$NCM$r(B
+% $B;;MQ?t;z$G=PNO$7$^$9!#(B
+%
+% |\roman{|\Lcount{COUNTER}|}|$B$O!"(B\Lcount{COUNTER}$B$NCM$r(B
+% $B>.J8;z$N%m!<%^?t;z$G=PNO$7$^$9!#(B
+%
+% |\Roman{|\Lcount{COUNTER}|}|$B$O!"(B\Lcount{COUNTER}$B$NCM$r(B
+% $BBgJ8;z$N%m!<%^?t;z$G=PNO$7$^$9!#(B
+%
+% |\alph{|\Lcount{COUNTER}|}|$B$O!"(B\Lcount{COUNTER}$B$NCM$r(B
+% $1=$~a, $2=$~b $B$N$h$&$K$7$F=PNO$7$^$9!#(B
+%
+% |\Alph{|\Lcount{COUNTER}|}|$B$O!"(B\Lcount{COUNTER}$B$NCM$r(B
+% $1=$~A, $2=$~B $B$N$h$&$K$7$F=PNO$7$^$9!#(B
+%
+% |\Kanji{|\Lcount{COUNTER}|}|$B$O!"(B\Lcount{COUNTER}$B$NCM$r(B
+% $B4A?t;z$G=PNO$7$^$9!#(B
+%
+% |\rensuji{|\meta{obj}|}|$B$O!"(B\meta{obj}$B$r2#$KJB$Y$F=PNO$7$^$9!#(B
+% $B$7$?$,$C$F!"2#AH$N$H$-$K$O!"2?$b1F6A$7$^$;$s!#(B
+%
+% \begin{macrocode}
+%<*tate>
+\renewcommand{\thepart}{\rensuji{\@Roman\c@part}}
+%<article>\renewcommand{\thesection}{\rensuji{\@arabic\c@section}}
+%<*report|book>
+\renewcommand{\thechapter}{\rensuji{\@arabic\c@chapter}}
+\renewcommand{\thesection}{\thechapter$B!&(B\rensuji{\@arabic\c@section}}
+%</report|book>
+\renewcommand{\thesubsection}{\thesection$B!&(B\rensuji{\@arabic\c@subsection}}
+\renewcommand{\thesubsubsection}{%
+ \thesubsection$B!&(B\rensuji{\@arabic\c@subsubsection}}
+\renewcommand{\theparagraph}{%
+ \thesubsubsection$B!&(B\rensuji{\@arabic\c@paragraph}}
+\renewcommand{\thesubparagraph}{%
+ \theparagraph$B!&(B\rensuji{\@arabic\c@subparagraph}}
+%</tate>
+%<*yoko>
+\renewcommand{\thepart}{\@Roman\c@part}
+%<article>\renewcommand{\thesection}{\@arabic\c@section}
+%<*report|book>
+\renewcommand{\thechapter}{\@arabic\c@chapter}
+\renewcommand{\thesection}{\thechapter.\@arabic\c@section}
+%</report|book>
+\renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection}
+\renewcommand{\thesubsubsection}{%
+ \thesubsection.\@arabic\c@subsubsection}
+\renewcommand{\theparagraph}{%
+ \thesubsubsection.\@arabic\c@paragraph}
+\renewcommand{\thesubparagraph}{%
+ \theparagraph.\@arabic\c@subparagraph}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@chapapp}
+% \begin{macro}{\@chappos}
+% |\@chapapp|$B$N=i4|CM$O(B`|\prechaptername|'$B$G$9!#(B
+%
+% |\@chappos|$B$N=i4|CM$O(B`|\postchaptername|'$B$G$9!#(B
+%
+% |\appendix|$B%3%^%s%I$O(B|\@chapapp|$B$r(B`|\appendixname|'$B$K!"(B
+% |\@chappos|$B$r6u$K:FDj5A$7$^$9!#(B
+% \begin{macrocode}
+%<*report|book>
+\newcommand{\@chapapp}{\prechaptername}
+\newcommand{\@chappos}{\postchaptername}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{$BA0IU$1!"K\J8!"8eIU$1(B}
+%
+% \begin{macro}{\frontmatter}
+% \begin{macro}{\mainmatter}
+% \begin{macro}{\backmatter}
+% \changes{v1.1}{1997/01/15}{\cs{frontmatter}, \cs{mainmatter}, \cs{backmatter}
+% $B$r(B\LaTeX{}$B$NDj5A$K=$@5(B}
+% $B0l:}$NK\$OO@M}E*$K#3$D$KJ,3d$5$l$^$9!#(B
+% $BI=Bj$dL\<!$d!V$O$8$a$K!W$"$k$$$O8"Mx$J$I$NA0IU$1!"(B
+% $B$=$7$FK\J8!"$=$l$+$iMQ8l=8$d:w0z$d1|IU$1$J$I$N8eIU$1$G$9!#(B
+%
+% \emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$kJdB-(B}$B!'(B
+% \LaTeX{}$B$N(Bclasses.dtx$B$O!"(B1996/05/26 (v1.3r)$B$H(B1998/05/05 (v1.3y)$B$N(B
+% $B7W(B2$B2s!"(B|\frontmatter|$B$H(B|\mainmatter|$B$NDj5A$r=$@5$7$F$$$^$9!#0l2sL\$O(B
+% $B$3$l$i$NL?Na$r(B|openany|$B%*%W%7%g%s$K1~$8$F@Z$jBX$(!"Fs2sL\$O$=$l$r(B
+% $B85$KLa$7$F$$$^$9!#%"%9%-!<$K$h$k(Bjclasses.dtx$B$O!"(B1997/01/15$B$K(B
+% $B0l2sL\$N=$@5$KDI?o$7$^$7$?$,!"Fs2sL\$N=$@5$K$ODI?o$7$F$$$^$;$s!#(B
+% $B%3%_%e%K%F%#HG$G$O!"0lC6$O%"%9%-!<$K$h$k;EMM$r0];}$7$h$&$H9M$((B
+% $B$^$7$?(B(2016/11/22)$B$,!"0J2<$NM}M3$K$h$jFs2sL\$N=$@5$K$bDI?o$9$k(B
+% $B$3$H$K$7$^$7$?(B(2017/03/05)$B!#(B
+%
+% $B%"%9%-!<HG$G$N(B|\frontmatter|$B$H(B|\mainmatter|$B$N2~%Z!<%85sF0$O(B
+%\begin{quote}
+% |openright|$B$J$i(B|\cleardoublepage|$B!"(B|openany|$B$J$i(B|\clearpage|$B$r<B9T(B
+%\end{quote}
+% $B$H$$$&$b$N$G$7$?!#$7$+$7!"(B|\frontmatter|$B5Z$S(B|\mainmatter|$B$O%N%s%V%k$r(B
+% 1$B$K%j%;%C%H$7$^$9$+$i!"2~%Z!<%8$N7k2L$,6v?t%Z!<%8L\$K$J$k>l9g(B
+% \footnote{$B=D(Btbook$B$N%G%U%)%k%H(B(openright)$B$,3:Ev$9$k$[$+!"2#(Bjbook$B$H(B
+% $B=D(Btbook$B$N(Bopenany$B$N$H$-$K$O@.$j9T$-<!Bh$G3:Ev$9$k2DG=@-$,$"$j$^$9!#(B}$B$K(B
+% $B%N%s%V%k$,6v4q5UE>$7$F$7$^$$$^$7$?!#$3$N$^$^$G$O(B|openany|$B$N>l9g$KN>LL(B
+% $B0u:~$,$&$^$/$$$+$J$$$?$a!"?7$7$$%3%_%e%K%F%#HG$G$O(B
+%\begin{quote}
+% $BI,$:(B|\pltx@cleartooddpage|$B$r<B9T(B
+%\end{quote}
+% $B$H$7$^$7$?!#$3$l$ON>LL0u:~(B(twoside)$B$N>l9g$O4q?t%Z!<%8$KAw$j!"(B
+% $BJRLL0u:~(B(oneside)$B$N>l9g$OC1$K2~%Z!<%8$H$J$j$^$9!#!J;29M!'(Blatex/2754$B!K(B
+% \changes{v1.7b}{2016/11/22}{$BJdB-%I%-%e%a%s%H$rDI2C(B}
+% \changes{v1.7e}{2017/03/05}{\cs{frontmatter}$B$H(B\cs{mainmatter}$B$r(B
+% $B4q?t%Z!<%8$KAw$k$h$&$KJQ99(B}
+% \begin{macrocode}
+%<*book>
+\newcommand{\frontmatter}{%
+ \pltx@cleartooddpage
+ \@mainmatterfalse\pagenumbering{roman}}
+\newcommand{\mainmatter}{%
+ \pltx@cleartooddpage
+ \@mainmattertrue\pagenumbering{arabic}}
+\newcommand{\backmatter}{%
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
+ \@mainmatterfalse}
+%</book>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{$B%\%C%/%9$NAH$_N)$F(B}
+% $B%/%i%9%U%!%$%kDj5A$N!"$3$NItJ,$G$O!"(B|\@startsection|$B$H(B|\secdef|$B$N(B
+% $BFs$D$NFbIt%^%/%m$r;H$$$^$9!#$3$l$i$N9=J8$r<!$K<($7$^$9!#(B
+%
+% |\@startsection|$B%^%/%m$O#6$D$N0z?t$H#1$D$N%*%W%7%g%s0z?t(B`*'$B$r<h$j$^$9!#(B
+%
+% |\@startsection|\meta{name}\meta{level}\meta{indent}^^A
+% \meta{beforeskip}\meta{afterskip}\meta{style}
+% optional *\\
+% \null\hphantom{\bslash @startsection}^^A
+% |[|\meta{altheading}|]|\meta{heading}
+%
+% $B$=$l$>$l$N0z?t$N0UL#$O!"<!$N$H$*$j$G$9!#(B
+%
+% \begin{description}
+% \item[\meta{name}] $B%l%Y%k%3%^%s%I$NL>A0$G$9!JNc(B:section$B!K!#(B
+% \item[\meta{level}] $B8+=P$7$N?<$5$r<($9?tCM$G$9!J(Bchapter=1, section=2,
+% $\ldots$$B!K!#(B``\meta{level}$<=$$B%+%&%s%?(B\Lcount{secnumdepth}$B$NCM(B''$B$N$H$-!"(B
+% $B8+=P$7HV9f$,=PNO$5$l$^$9!#(B
+% \item[\meta{indent}] $B8+=P$7$KBP$9$k!":8%^!<%8%s$+$i$N%$%s%G%s%HNL$G$9!#(B
+% \item[\meta{beforeskip}] $B8+=P$7$N>e$KCV$+$l$k6uGr$N@dBPCM$G$9!#(B
+% $BIi$N>l9g$O!"8+=P$7$KB3$/%F%-%9%H$N%$%s%G%s%H$rM^@)$7$^$9!#(B
+% \item[\meta{afterskip}] $B@5$N$H$-!"8+=P$7$N8e$N?bD>J}8~$N%9%Z!<%9$H$J$j$^$9!#(B
+% $BIi$N>l9g$O!"8+=P$7$N8e$N?eJ?J}8~$N%9%Z!<%9$H$J$j$^$9!#(B
+% \item[\meta{style}] $B8+=P$7$N%9%?%$%k$r@_Dj$9$k%3%^%s%I$G$9!#(B
+% \item[\meta{$*$}] $B8+=P$7HV9f$rIU$1$J$$$H$-!"BP1~$9$k%+%&%s%?$OA}2C$7$^$9!#(B
+% \item[\meta{heading}] $B?7$7$$8+=P$7$NJ8;zNs$G$9!#(B
+% \end{description}
+%
+% $B8+=P$7%3%^%s%I$ODL>o!"(B|\@startsection|$B$H#6$D$N0z?t$GDj5A$5$l$F$$$^$9!#(B
+%
+% |\secdef|$B%^%/%m$O!"(B
+% $B8+=P$7%3%^%s%I$r(B|\@startsection|$B$rMQ$$$J$$$GDj5A$9$k$H$-$K;H$$$^$9!#(B
+% $B$3$N%^%/%m$O!"#2$D$N0z?t$r;}$A$^$9!#(B
+%
+% |\secdef|\meta{unstarcmds}\meta{starcmds}
+%
+% \begin{description}
+% \item[\meta{unstarcmds}] $B8+=P$7%3%^%s%I$NIaDL$N7A<0$G;H$o$l$^$9!#(B
+% \item[\meta{starcmds}] $*$$B7A<0$N8+=P$7%3%^%s%I$G;H$o$l$^$9!#(B
+% \end{description}
+%
+% |\secdef|$B$O<!$N$h$&$K$7$F;H$&$3$H$,$G$-$^$9!#(B
+%\begin{verbatim}
+% \def\chapter {... \secdef \CMDA \CMDB }
+% \def\CMDA [#1]#2{....} % \chapter[...]{...} $B$NDj5A(B
+% \def\CMDB #1{....} % \chapter*{...} $B$NDj5A(B
+%\end{verbatim}
+%
+%
+% \subsubsection{part$B%l%Y%k(B}
+%
+% \begin{macro}{\part}
+% $B$3$N%3%^%s%I$O!"?7$7$$%Q!<%H!JIt!K$r$O$8$a$^$9!#(B
+%
+% article$B%/%i%9$N>l9g$O!"4JC1$G$9!#(B
+%
+% $B?7$7$$CJMn$r3+;O$7!">.$5$J6uGr$rF~$l!"CJMn8e$N%$%s%G%s%H$r9T$$!"(B
+% |\secdef|$B$G:n@.$7$^$9!#!J%"%9%-!<$K$h$k85$N%I%-%e%a%s%H$K$O(B
+% $B!VCJMn8e$N%$%s%G%s%H$r$7$J$$$h$&$K$7!W$H=q$+$l$F$$$^$7$?$,!"(B
+% $B<B:]$N%3!<%I$G$OCJMn8e$N%$%s%G%s%H$r9T$C$F$$$^$7$?!#$=$3$G(B
+% $BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$O!"%I%-%e%a%s%H$r%3!<%I$K9g$o$;$F(B
+% $B!VCJMn8e$N%$%s%G%s%H$r9T$$!W$X$H=$@5$7$^$7$?!#!K(B
+% \changes{v1.7a}{2016/11/16}{Check \texttt{@noskipsec} switch and
+% possibly force horizontal mode (sync with classes.dtx v1.4a)}
+% \begin{macrocode}
+%<*article>
+\newcommand{\part}{%
+ \if@noskipsec \leavevmode \fi
+ \par\addvspace{4ex}%
+ \@afterindenttrue
+ \secdef\@part\@spart}
+%</article>
+% \end{macrocode}
+% report$B$H(Bbook$B%9%?%$%k$N>l9g$O!">/$7J#;($G$9!#(B
+%
+% $B$^$:!"1&%Z!<%8$+$i$O$8$^$k$h$&$K2~%Z!<%8$r$7$^$9!#(B
+% $B$=$7$F!"ItHb$N%Z!<%8%9%?%$%k$r(B\pstyle{empty}$B$K$7$^$9!#(B
+% $B#2CJAH$N>l9g$G$b!"#1CJAH$G:n@.$7$^$9$,!"8e$[$I#2CJAH$KLa$9$?$a$K!"(B
+% |\@restonecol|$B%9%$%C%A$r;H$$$^$9!#(B
+% \changes{v1.1}{1997/01/15}{\cs{part}$B$r(B\LaTeX\ $B$NDj5A$K=$@5(B}
+% \begin{macrocode}
+%<*report|book>
+\newcommand{\part}{%
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
+ \thispagestyle{empty}%
+ \if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi
+ \null\vfil
+ \secdef\@part\@spart}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@part}
+% $B$3$N%^%/%m$,<B:]$KIt%l%Y%k$N8+=P$7$r:n@.$7$^$9!#(B
+% $B$3$N%^%/%m$bJ8=q%/%i%9$K$h$C$FDj5A$,0[$J$j$^$9!#(B
+%
+% article$B%/%i%9$N>l9g$O!"(B\Lcount{secnumdepth}$B$,(B$-1$$B$h$j$bBg$-$$$H$-!"(B
+% $B8+=P$7HV9f$rIU$1$^$9!#$3$N%+%&%s%?$,(B$-1$$B0J2<$N>l9g$K$OIU$1$^$;$s!#(B
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+%<*article>
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{%
+ \prepartname\thepart\postpartname\hspace{1zw}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\parindent\z@\raggedright
+ \interlinepenalty\@M\normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \Large\bfseries\prepartname\thepart\postpartname
+ \par\nobreak
+ \fi
+ \huge\bfseries#2\par}%
+ \nobreak\vskip3ex\@afterheading}
+%</article>
+% \end{macrocode}
+%
+% report$B$H(Bbook$B%/%i%9$N>l9g$O!"(B\Lcount{secnumdepth}$B$,(B$-2$$B$h$j$bBg$-$$$H$-$K!"(B
+% $B8+=P$7HV9f$rIU$1$^$9!#(B$-2$$B0J2<$G$OIU$1$^$;$s!#(B
+%
+% \begin{macrocode}
+%<*report|book>
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{%
+ \prepartname\thepart\postpartname\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty\@M\normalfont
+ \ifnum \c@secnumdepth >-2\relax
+ \huge\bfseries\prepartname\thepart\postpartname
+ \par\vskip20\p@
+ \fi
+ \Huge\bfseries#2\par}%
+ \@endpart}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@spart}
+% $B$3$N%^%/%m$O!"HV9f$rIU$1$J$$$H$-$NBN:[$G$9!#(B
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+%<*article>
+\def\@spart#1{{%
+ \parindent\z@\raggedright
+ \interlinepenalty\@M\normalfont
+ \huge\bfseries#1\par}%
+ \nobreak\vskip3ex\@afterheading}
+%</article>
+% \end{macrocode}
+% \changes{v1.1k}{1998/03/23}{report$B$H(Bbook$B%/%i%9$GHV9f$rIU$1$J$$8+=P$7$N(B
+% $B%Z%J%k%F%#$,(B\cs{M@}$B$@$C$?$N$r(B\cs{@M}$B$K=$@5(B}
+% \begin{macrocode}
+%<*report|book>
+\def\@spart#1{{%
+ \centering
+ \interlinepenalty\@M\normalfont
+ \Huge\bfseries#1\par}%
+ \@endpart}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@endpart}
+% |\@part|$B$H(B|\@spart|$B$N:G8e$G<B9T$5$l$k%^%/%m$G$9!#(B
+% $BN>LL0u:~%b!<%I$N$H$-$O!"Gr%Z!<%8$rDI2C$7$^$9!#(B
+% $BFsCJAH%b!<%I$N$H$-$K$O!"$3$l0J9_$N%Z!<%8$rFsCJAH$KLa$7$^$9!#(B
+% 2016$BG/(B12$B7n$+$i!"(B|openany| $B$N$H$-$KGr%Z!<%8$rDI2C$9$k$N$r$d$a$^$7$?!#(B
+% $B$3$N%P%0$O(B\LaTeX{}$B$G$O(Bclasses.dtx v1.4b (2000/05/19)$B$G=$@5$5$l$F$$$^$7$?!#(B
+% $B!J;29M!'(Blatex/3155$B!"(Btexjporg/jsclasses\#48$B!K(B
+% \changes{v1.7c}{2016/12/18}{Only add empty page after part if
+% twoside and openright (sync with classes.dtx v1.4b)}
+% \begin{macrocode}
+%<*report|book>
+\def\@endpart{\vfil\newpage
+ \if@twoside
+ \if@openleft %% \if@openleft added (2017/02/15)
+ \null\thispagestyle{empty}\newpage
+ \else\if@openright %% \if@openright added (2016/12/18)
+ \null\thispagestyle{empty}\newpage
+ \fi\fi %% added (2016/12/18, 2017/02/15)
+ \fi
+% \end{macrocode}
+% $BFsCJAHJ8=q$N$H$-!"%9%$%C%A$rFsCJAH%b!<%I$KLa$9I,MW$,$"$j$^$9!#(B
+% \begin{macrocode}
+ \if@tempswa\twocolumn\fi}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{chapter$B%l%Y%k(B}
+%
+% \begin{macro}{chapter}
+% $B>O%l%Y%k$O!"I,$:%Z!<%8$N@hF,$+$i3+;O$7$^$9!#(B
+% |openright|$B%*%W%7%g%s$,;XDj$5$l$F$$$k>l9g$O!"1&%Z!<%8$+$i$O$8$^$k(B
+% $B$h$&$K(B|\cleardoublepage|$B$r8F$S=P$7$^$9!#(B
+% $B$=$&$G$J$1$l$P!"(B|\clearpage|$B$r8F$S=P$7$^$9!#(B
+% $B$J$*!"=DAH$N>l9g$G$b1&%Z!<%8$+$i$O$8$^$k$h$&$K!"(B
+% $B%U%)!<%^%C%H%U%!%$%k$G(B|\clerdoublepage|$B$,Dj5A$5$l$F$$$^$9!#(B
+%
+% \emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$kJdB-(B}$B!'%3%_%e%K%F%#HG$N<BAu$G$O!"(B
+% |openright|$B$H(B|openleft|$B$N>l9g$K(B|\cleardoublepage|$B$r%/%i%9%U%!%$%k$NCf$G(B
+% $B:F!9Dj5A$7$F$$$^$9!#(B\ref{sec:cleardoublepage}$B$r;2>H$7$F$/$@$5$$!#(B
+%
+% $B>O8+=P$7$,=PNO$5$l$k%Z!<%8$N%9%?%$%k$O!"(B\pstyle{jpl@in}$B$K$J$j$^$9!#(B
+% \pstyle{jpl@in}$B$O!"(B\pstyle{headnomble}$B$+(B\pstyle{footnomble}$B$N$$$:$l$+$G$9!#(B
+% $B>\:Y$O!"Bh(B\ref{sec:pagestyle}$B@a$r;2>H$7$F$/$@$5$$!#(B
+%
+% $B$^$?!"(B|\@topnum|$B$r%<%m$K$7$F!"(B
+% $B>O8+=P$7$N>e$K%H%C%W%U%m!<%H$,CV$+$l$J$$$h$&$K$7$F$$$^$9!#(B
+% \begin{macrocode}
+%<*report|book>
+\newcommand{\chapter}{%
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
+ \thispagestyle{jpl@in}%
+ \global\@topnum\z@
+ \@afterindenttrue
+ \secdef\@chapter\@schapter}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chapter}
+% $B$3$N%^%/%m$O!">O8+=P$7$KHV9f$rIU$1$k$H$-$K8F$S=P$5$l$^$9!#(B
+% \Lcount{secnumdepth}$B$,(B$-1$$B$h$j$bBg$-$/!"(B
+% |\@mainmatter|$B$,??!J(Bbook$B%/%i%9$N>l9g!K$N$H$-$K!"HV9f$r=PNO$7$^$9!#(B
+%
+% \emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$kJdB-(B}$B!'K\2H(B\LaTeX{}$B$N(B
+% \file{classes}$B$G$O!"FsCJAH$N$H$-%A%c%W%?!<%?%$%H%k$O0lCJAH$KLa$5$l(B
+% $B$^$9$,!"%"%9%-!<$K$h$k(B\file{jclasses}$B$G$OFsCJAH$N$^$^$K$5$l$F$$$^$9!#(B
+% $B$7$?$,$C$F!"%A%c%W%?!<%?%$%H%k$h$j9b$$0LCV$K1&%+%i%`$N;OE@$,Mh$k$H$$$&(B
+% $B5sF0$K$J$C$F$$$^$9$,!"%3%_%e%K%F%#HG$G$b%"%9%-!<HG$N5sF0$r0];}$7$F$$$^$9!#(B
+% \begin{macrocode}
+\def\@chapter[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+%<book> \if@mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter\space\@chappos}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\@chapapp\thechapter\@chappos}#1}%
+%<book> \else\addcontentsline{toc}{chapter}{#1}\fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \@makechapterhead{#2}\@afterheading}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makechapterhead}
+% $B$3$N%^%/%m$,<B:]$K>O8+=P$7$rAH$_N)$F$^$9!#(B
+% \changes{v1.1o}{1998/12/24}{secnumdepth$B%+%&%s%?$r(B$-1$$B0J2<$K$9$k$H!"(B
+% $B8+=P$7J8;zNs$b>C$($F$7$^$&$N$r=$@5(B}
+% \changes{v1.2}{2001/09/04}{\cs{chapter}$B$N=PNO0LCV$,%"%9%?%j%9%/7A<0$H(B
+% $B$=$&$G$J$$$H$-$H0c$&$N$r=$@5(B($B$"$j$,$H$&!"NkLZ!wDE$5$s(B)}
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\def\@makechapterhead#1{\hbox{}%
+ \vskip2\Cvs
+ {\parindent\z@
+ \raggedright
+ \normalfont\huge\bfseries
+ \leavevmode
+ \ifnum \c@secnumdepth >\m@ne
+ \setlength\@tempdima{\linewidth}%
+%<book> \if@mainmatter
+ \setbox\z@\hbox{\@chapapp\thechapter\@chappos\hskip1zw}%
+ \addtolength\@tempdima{-\wd\z@}%
+ \unhbox\z@\nobreak
+%<book> \fi
+ \vtop{\hsize\@tempdima#1}%
+ \else
+ #1\relax
+ \fi}\nobreak\vskip3\Cvs}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@schapter}
+% $B$3$N%^%/%m$O!">O8+=P$7$KHV9f$rIU$1$J$$$H$-$K8F$S=P$5$l$^$9!#(B
+%
+% \emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$kJdB-(B}$B!'$d$O$jFsCJAH$G%A%c%W%?!<(B
+% $B%?%$%H%k$h$j9b$$0LCV$K1&%+%i%`$N;OE@$,Mh$k$H$$$&5sF0$r0];}$7$F$"$j$^$9!#(B
+% \changes{v1.7c}{2016/12/18}{$B4qL/$J(Barticle$B%,!<%I$H%3!<%I$r:o=|$7$F(B
+% $B%I%-%e%a%s%H$rDI2C(B}
+% \begin{macrocode}
+\def\@schapter#1{%
+ \@makeschapterhead{#1}\@afterheading
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makeschapterhead}
+% $BHV9f$rIU$1$J$$>l9g$N7A<0$G$9!#(B
+% \changes{v1.2}{2001/09/04}{\cs{chapter}$B$N=PNO0LCV$,%"%9%?%j%9%/7A<0$H(B
+% $B$=$&$G$J$$$H$-$H0c$&$N$r=$@5(B($B$"$j$,$H$&!"NkLZ!wDE$5$s(B)}
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\def\@makeschapterhead#1{\hbox{}%
+ \vskip2\Cvs
+ {\parindent\z@
+ \raggedright
+ \normalfont\huge\bfseries
+ \leavevmode
+ \setlength\@tempdima{\linewidth}%
+ \vtop{\hsize\@tempdima#1}}\vskip3\Cvs}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B2<0L%l%Y%k$N8+=P$7(B}
+%
+% \begin{macro}{\section}
+% $B8+=P$7$NA08e$K6uGr$rIU$1!"(B|\Large\bfseries|$B$G=PNO$r$7$^$9!#(B
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\newcommand{\section}{\@startsection{section}{1}{\z@}%
+ {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
+ {.5\Cvs \@plus.3\Cvs}%
+ {\normalfont\Large\bfseries}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\subsection}
+% $B8+=P$7$NA08e$K6uGr$rIU$1!"(B|\large\bfseries|$B$G=PNO$r$7$^$9!#(B
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\newcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
+ {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
+ {.5\Cvs \@plus.3\Cvs}%
+ {\normalfont\large\bfseries}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\subsubsection}
+% $B8+=P$7$NA08e$K6uGr$rIU$1!"(B|\normalsize\bfseries|$B$G=PNO$r$7$^$9!#(B
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\newcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
+ {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
+ {.5\Cvs \@plus.3\Cvs}%
+ {\normalfont\normalsize\bfseries}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\paragraph}
+% $B8+=P$7$NA0$K6uGr$rIU$1!"(B|\normalsize\bfseries|$B$G=PNO$r$7$^$9!#(B
+% $B8+=P$7$N8e$m$G2~9T$5$l$^$;$s!#(B
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus 1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\subparagraph}
+% $B8+=P$7$NA0$K6uGr$rIU$1!"(B|\normalsize\bfseries|$B$G=PNO$r$7$^$9!#(B
+% $B8+=P$7$N8e$m$G2~9T$5$l$^$;$s!#(B
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\newcommand{\subparagraph}{\@startsection{subparagraph}{5}{\z@}%
+ {3.25ex \@plus 1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{$BIUO?(B}
+%
+% \begin{macro}{\appendix}
+% article$B%/%i%9$N>l9g!"(B|\appendix|$B%3%^%s%I$O<!$N$3$H$r9T$J$$$^$9!#(B
+%
+% \begin{itemize}
+% \item \Lcount{section}$B$H(B\Lcount{subsection}$B%+%&%s%?$r%j%;%C%H$9$k!#(B
+% \item |\thesection|$B$r1Q>.J8;z$G=PNO$9$k$h$&$K:FDj5A$9$k!#(B
+% \end{itemize}
+%
+% \begin{macrocode}
+%<*article>
+\newcommand{\appendix}{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+%<tate> \renewcommand{\thesection}{\rensuji{\@Alph\c@section}}}
+%<yoko> \renewcommand{\thesection}{\@Alph\c@section}}
+%</article>
+% \end{macrocode}
+%
+% report$B$H(Bbook$B%/%i%9$N>l9g!"(B|\appendix|$B%3%^%s%I$O<!$N$3$H$r9T$J$$$^$9!#(B
+%
+% \begin{itemize}
+% \item \Lcount{chapter}$B$H(B\Lcount{section}$B%+%&%s%?$r%j%;%C%H$9$k!#(B
+% \item |\@chapapp|$B$r(B|\appendixname|$B$K@_Dj$9$k!#(B
+% \item |\@chappos|$B$r6u$K$9$k!#(B
+% \item |\thechapter|$B$r1Q>.J8;z$G=PNO$9$k$h$&$K:FDj5A$9$k!#(B
+% \end{itemize}
+%
+% \begin{macrocode}
+%<*report|book>
+\newcommand{\appendix}{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \renewcommand{\@chapapp}{\appendixname}%
+ \renewcommand{\@chappos}\space%
+%<tate> \renewcommand{\thechapter}{\rensuji{\@Alph\c@chapter}}}
+%<yoko> \renewcommand{\thechapter}{\@Alph\c@chapter}}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{$B%j%9%H4D6-(B}
+% $B$3$3$G$O%j%9%H4D6-$K$D$$$F@bL@$r$7$F$$$^$9!#(B
+%
+% $B%j%9%H4D6-$N%G%U%)%k%H$O<!$N$h$&$K@_Dj$5$l$^$9!#(B
+%
+% $B$^$:!"(B|\rigtmargin|, |\listparindent|, |\itemindent|$B$r%<%m$K$7$^$9!#(B
+% $B$=$7$F!"(BK$BHVL\$N%l%Y%k$N%j%9%H$O(B|\@listK|$B$G<($5$l$k%^%/%m$,8F$S=P$5$l$^$9!#(B
+% $B$3$3$G(B`K'$B$O>.J8;z$N%m!<%^?t;z$G<($5$l$^$9!#$?$H$($P!"#3HVL\$N%l%Y%k$N%j%9%H(B
+% $B$H$7$F(B|\@listiii|$B$,8F$S=P$5$l$^$9!#(B
+% |\@listK|$B$O(B|\leftmargin|$B$r(B|\leftmarginK|$B$K@_Dj$7$^$9!#(B
+%
+% \begin{macro}{\leftmargin}
+% \begin{macro}{\leftmargini}
+% \begin{macro}{\leftmarginii}
+% \begin{macro}{\leftmarginiii}
+% \begin{macro}{\leftmarginiv}
+% \begin{macro}{\leftmarginv}
+% \begin{macro}{\leftmarginvi}
+% $BFsCJAH%b!<%I$N%^!<%8%s$O>/$7$@$1>.$5$/@_Dj$7$F$"$j$^$9!#(B
+% \begin{macrocode}
+\if@twocolumn
+ \setlength\leftmargini {2em}
+\else
+ \setlength\leftmargini {2.5em}
+\fi
+% \end{macrocode}
+% $B<!$N#3$D$NCM$O!"(B|\labelsep|$B$H%G%U%)%k%H%i%Y%k!J(B`(m)', `vii.', `M.'$B!K$N(B
+% $BI}$N9g7W$h$j$bBg$-$/$7$F$"$j$^$9!#(B
+% \begin{macrocode}
+\setlength\leftmarginii {2.2em}
+\setlength\leftmarginiii {1.87em}
+\setlength\leftmarginiv {1.7em}
+\if@twocolumn
+ \setlength\leftmarginv {.5em}
+ \setlength\leftmarginvi{.5em}
+\else
+ \setlength\leftmarginv {1em}
+ \setlength\leftmarginvi{1em}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelsep}
+% \begin{macro}{\labelwidth}
+% |\labelsep|$B$O%i%Y%k$H%F%-%9%H$N9`L\$N4V$N5wN%$G$9!#(B
+% |\labelwidth|$B$O%i%Y%k$NI}$G$9!#(B
+% \begin{macrocode}
+\setlength \labelsep {.5em}
+\setlength \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@beginparpenalty}
+% \begin{macro}{\@endparpenalty}
+% $B$3$l$i$N%Z%J%k%F%#$O!"%j%9%H$dCJMn4D6-$NA08e$KA^F~$5$l$^$9!#(B
+% \begin{macro}{\@itempenalty}
+% $B$3$N%Z%J%k%F%#$O!"%j%9%H9`L\$N4V$KA^F~$5$l$^$9!#(B
+% \begin{macrocode}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+%</article|report|book>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\partopsep}
+% $B%j%9%H4D6-$NA0$K6u9T$,$"$k>l9g!"(B|\parskip|$B$H(B|\topsep|$B$K(B|\partopsep|$B$,(B
+% $B2C$($i$l$?CM$N=DJ}8~$N6uGr$,<h$i$l$^$9!#(B
+% \begin{macrocode}
+%<10pt>\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
+%<11pt>\setlength\partopsep{3\p@ \@plus 1\p@ \@minus 1\p@}
+%<12pt>\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@listi}
+% \begin{macro}{\@listI}
+% |\@listi|$B$O!"(B|\leftmargin|, |\parsep|, |\topsep|, |\itemsep|$B$J$I$N(B
+% $B%H%C%W%l%Y%k$NDj5A$r$7$^$9!#(B
+% $B$3$NDj5A$O!"%U%)%s%H%5%$%:%3%^%s%I$K$h$C$FJQ99$5$l$^$9!J$?$H$($P!"(B
+% |\small|$B$NCf$G$O(B``$B>.$5$$(B''$B%j%9%H%Q%i%a!<%?$K$J$j$^$9!K!#(B
+%
+% $B$3$N$?$a!"(B|\normalsize|$B$,$9$Y$F$N%Q%i%a!<%?$rLa$;$k$h$&$K!"(B
+% |\@listI|$B$O(B|\@listi|$B$N%3%T!<$rJ]B8$9$k$h$&$KDj5A$5$l$F$$$^$9!#(B
+% \begin{macrocode}
+%<*10pt|11pt|12pt>
+\def\@listi{\leftmargin\leftmargini
+%<*10pt>
+ \parsep 4\p@ \@plus2\p@ \@minus\p@
+ \topsep 8\p@ \@plus2\p@ \@minus4\p@
+ \itemsep4\p@ \@plus2\p@ \@minus\p@}
+%</10pt>
+%<*11pt>
+ \parsep 4.5\p@ \@plus2\p@ \@minus\p@
+ \topsep 9\p@ \@plus3\p@ \@minus5\p@
+ \itemsep4.5\p@ \@plus2\p@ \@minus\p@}
+%</11pt>
+%<*12pt>
+ \parsep 5\p@ \@plus2.5\p@ \@minus\p@
+ \topsep 10\p@ \@plus4\p@ \@minus6\p@
+ \itemsep5\p@ \@plus2.5\p@ \@minus\p@}
+%</12pt>
+\let\@listI\@listi
+% \end{macrocode}
+% $B$3$3$G!"%Q%i%a!<%?$r=i4|2=$7$^$9$,!"87L)$K$OI,MW$"$j$^$;$s!#(B
+% \begin{macrocode}
+\@listi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@listii}
+% \begin{macro}{\@listiii}
+% \begin{macro}{\@listiv}
+% \begin{macro}{\@listv}
+% \begin{macro}{\@listvi}
+% $B2<0L%l%Y%k$N%j%9%H4D6-$N%Q%i%a!<%?$N@_Dj$G$9!#(B
+% $B$3$l$i$OJ]B8MQ$N%P!<%8%g%s$r;}$?$J$$$3$H$H!"(B
+% $B%U%)%s%H%5%$%:%3%^%s%I$K$h$C$FJQ99$5$l$J$$$3$H$KCm0U$r$7$F$/$@$5$$!#(B
+% $B8@$$49$($l$P!"$3$N%/%i%9$O!"K\J8%5%$%:$,(B
+% |\normalsize|$B$G8=$l$k%j%9%H$NF~$l;R$K$D$$$F$@$19M$($F$$$^$9!#(B
+% \begin{macrocode}
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+%<*10pt>
+ \topsep 4\p@ \@plus2\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+%</10pt>
+%<*11pt>
+ \topsep 4.5\p@ \@plus2\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+%</11pt>
+%<*12pt>
+ \topsep 5\p@ \@plus2.5\p@ \@minus\p@
+ \parsep 2.5\p@ \@plus\p@ \@minus\p@
+%</12pt>
+ \itemsep\parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii \advance\labelwidth-\labelsep
+%<10pt> \topsep 2\p@ \@plus\p@\@minus\p@
+%<11pt> \topsep 2\p@ \@plus\p@\@minus\p@
+%<12pt> \topsep 2.5\p@\@plus\p@\@minus\p@
+ \parsep\z@
+ \partopsep \p@ \@plus\z@ \@minus\p@
+ \itemsep\topsep}
+\def\@listiv {\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep}
+\def\@listv {\leftmargin\leftmarginv
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep}
+\def\@listvi {\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep}
+%</10pt|11pt|12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{enumerate$B4D6-(B}
+% enumerate$B4D6-$O!"%+%&%s%?(B\Lcount{enumi}, \Lcount{enumii}, \Lcount{enumiii},
+% \Lcount{enumiv}$B$r;H$$$^$9!#(B\Lcount{enumN}$B$O(BN$BHVL\$N%l%Y%k$NHV9f$r@)8f$7$^$9!#(B
+%
+% \begin{macro}{\theenumi}
+% \begin{macro}{\theenumii}
+% \begin{macro}{\theenumiii}
+% \begin{macro}{\theenumiv}
+% $B=PNO$9$kHV9f$N=q<0$r@_Dj$7$^$9!#(B
+% $B$3$l$i$O!"$9$G$K(B\file{ltlists.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \begin{macrocode}
+%<*article|report|book>
+%<*tate>
+\renewcommand{\theenumi}{\rensuji{\@arabic\c@enumi}}
+\renewcommand{\theenumii}{\rensuji{(\@alph\c@enumii)}}
+\renewcommand{\theenumiii}{\rensuji{\@roman\c@enumiii}}
+\renewcommand{\theenumiv}{\rensuji{\@Alph\c@enumiv}}
+%</tate>
+%<*yoko>
+\renewcommand{\theenumi}{\@arabic\c@enumi}
+\renewcommand{\theenumii}{\@alph\c@enumii}
+\renewcommand{\theenumiii}{\@roman\c@enumiii}
+\renewcommand{\theenumiv}{\@Alph\c@enumiv}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelenumi}
+% \begin{macro}{\labelenumii}
+% \begin{macro}{\labelenumiii}
+% \begin{macro}{\labelenumiv}
+% enumerate$B4D6-$N$=$l$>$l$N9`L\$N%i%Y%k$O!"(B
+% |\labelenumi| \ldots\ |\labelenumiv|$B$G@8@.$5$l$^$9!#(B
+% \begin{macrocode}
+%<*tate>
+\newcommand{\labelenumi}{\theenumi}
+\newcommand{\labelenumii}{\theenumii}
+\newcommand{\labelenumiii}{\theenumiii}
+\newcommand{\labelenumiv}{\theenumiv}
+%</tate>
+%<*yoko>
+\newcommand{\labelenumi}{\theenumi.}
+\newcommand{\labelenumii}{(\theenumii)}
+\newcommand{\labelenumiii}{\theenumiii.}
+\newcommand{\labelenumiv}{\theenumiv.}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\p@enumii}
+% \begin{macro}{\p@enumiii}
+% \begin{macro}{\p@enumiv}
+% |\ref|$B%3%^%s%I$K$h$C$F!"(B
+% enumerate$B4D6-$N(BN$BHVL\$N%j%9%H9`L\$,;2>H$5$l$k$H$-$N=q<0$G$9!#(B
+% \begin{macrocode}
+\renewcommand{\p@enumii}{\theenumi}
+\renewcommand{\p@enumiii}{\theenumi(\theenumii)}
+\renewcommand{\p@enumiv}{\p@enumiii\theenumiii}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{enumerate}
+% \changes{v1.1q}{1999/05/18}{$B=DAH;~$N$_$K@_Dj$9$k$h$&$K$7$?(B}
+% $B%H%C%W%l%Y%k$G;H$o$l$?$H$-$K!":G=i$H:G8e$KH>9TJ,$N%9%Z!<%9$r3+$1$k$h$&$K!"(B
+% $BJQ99$7$^$9!#$3$N4D6-$O!"(B\file{ltlists.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \changes{v1.7a}{2016/11/16}{Use \cs{expandafter}
+% (sync with ltlists.dtx v1.0j)}
+%
+% \begin{macrocode}
+\renewenvironment{enumerate}
+ {\ifnum \@enumdepth >\thr@@\@toodeep\else
+ \advance\@enumdepth\@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \expandafter \list \csname label\@enumctr\endcsname{%
+ \iftdir
+ \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
+ \else\topsep\z@\fi
+ \parskip\z@ \itemsep\z@ \parsep\z@
+ \labelwidth1zw \labelsep.3zw
+ \ifnum \@enumdepth=\@ne \leftmargin1zw\relax
+ \else\leftmargin\leftskip\fi
+ \advance\leftmargin 1zw
+ \fi
+ \usecounter{\@enumctr}%
+ \def\makelabel##1{\hss\llap{##1}}}%
+ \fi}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \subsubsection{itemize$B4D6-(B}
+%
+% \begin{macro}{\labelitemi}
+% \begin{macro}{\labelitemii}
+% \begin{macro}{\labelitemiii}
+% \begin{macro}{\labelitemiv}
+% itemize$B4D6-$N$=$l$>$l$N9`L\$N%i%Y%k$O!"(B
+% |\labelenumi| \ldots\ |\labelenumiv|$B$G@8@.$5$l$^$9!#(B
+% \changes{v1.1a}{1997/01/28}{Bug fix: \cs{labelitemii}.}
+% \begin{macrocode}
+\newcommand{\labelitemi}{\textbullet}
+\newcommand{\labelitemii}{%
+ \iftdir
+ {\textcircled{~}}
+ \else
+ {\normalfont\bfseries\textendash}
+ \fi
+}
+\newcommand{\labelitemiii}{\textasteriskcentered}
+\newcommand{\labelitemiv}{\textperiodcentered}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{itemize}
+% \changes{v1.0e}{1996/03/14}{$B=DAH;~$N$_$K@_Dj$9$k$h$&$K$7$?(B}
+% $B%H%C%W%l%Y%k$G;H$o$l$?$H$-$K!":G=i$H:G8e$KH>9TJ,$N%9%Z!<%9$r3+$1$k$h$&$K!"(B
+% $BJQ99$7$^$9!#$3$N4D6-$O!"(B\file{ltlists.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \changes{v1.7a}{2016/11/16}{Use \cs{expandafter}
+% (sync with ltlists.dtx v1.0j)}
+% \begin{macrocode}
+\renewenvironment{itemize}
+ {\ifnum \@itemdepth >\thr@@\@toodeep\else
+ \advance\@itemdepth\@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \expandafter \list \csname \@itemitem\endcsname{%
+ \iftdir
+ \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
+ \else\topsep\z@\fi
+ \parskip\z@ \itemsep\z@ \parsep\z@
+ \labelwidth1zw \labelsep.3zw
+ \ifnum \@itemdepth =\@ne \leftmargin1zw\relax
+ \else\leftmargin\leftskip\fi
+ \advance\leftmargin 1zw
+ \fi
+ \def\makelabel##1{\hss\llap{##1}}}%
+ \fi}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \subsubsection{description$B4D6-(B}
+%
+% \begin{environment}{description}
+% \changes{v1.0e}{1996/03/14}{\cs{topskip}$B$d(B\cs{parkip}$B$J$I$NCM$r=DAH;~$N$_$K(B
+% $B@_Dj$9$k$h$&$K$7$?(B}
+% description$B4D6-$rDj5A$7$^$9!#(B
+% $B=DAH;~$K$O!"%$%s%G%s%H$,#3;zJ,$@$1?<$/$J$j$^$9!#(B
+% \begin{macrocode}
+\newenvironment{description}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \iftdir
+ \leftmargin\leftskip \advance\leftmargin3\Cwd
+ \rightmargin\rightskip
+ \labelsep=1zw \itemsep\z@
+ \listparindent\z@ \topskip\z@ \parskip\z@ \partopsep\z@
+ \fi
+ \let\makelabel\descriptionlabel}}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\descriptionlabel}
+% $B%i%Y%k$N7A<0$rJQ99$9$kI,MW$,$"$k>l9g$O!"(B|\descriptionlabel|$B$r(B
+% $B:FDj5A$7$F$/$@$5$$!#(B
+% \begin{macrocode}
+\newcommand{\descriptionlabel}[1]{%
+ \hspace\labelsep\normalfont\bfseries #1}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{verse$B4D6-(B}
+%
+% \begin{environment}{verse}
+% verse$B4D6-$O!"%j%9%H4D6-$N%Q%i%a!<%?$r;H$C$FDj5A$5$l$F$$$^$9!#(B
+% $B2~9T$r$9$k$K$O(B|\\|$B$rMQ$$$^$9!#(B|\\|$B$O(B|\@centercr|$B$K(B|\let|$B$5$l$F$$$^$9!#(B
+% \begin{macrocode}
+\newenvironment{verse}
+ {\let\\\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em%
+ \listparindent\itemindent
+ \rightmargin\leftmargin \advance\leftmargin 1.5em}%
+ \item\relax}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{quotation$B4D6-(B}
+%
+% \begin{environment}{quotation}
+% quotation$B4D6-$b$^$?!"(Blist$B4D6-$N%Q%i%a!<%?$r;HMQ$7$FDj5A$5$l$F$$$^$9!#(B
+% $B$3$N4D6-$N3F9T$O!"(B|\textwidth|$B$h$j$b>.$5$/@_Dj$5$l$F$$$^$9!#(B
+% $B$3$N4D6-$K$*$1$k!"CJMn$N:G=i$N9T$O%$%s%G%s%H$5$l$^$9!#(B
+% \begin{macrocode}
+\newenvironment{quotation}
+ {\list{}{\listparindent 1.5em%
+ \itemindent\listparindent
+ \rightmargin\leftmargin
+ \parsep\z@ \@plus\p@}%
+ \item\relax}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{quote$B4D6-(B}
+%
+% \begin{environment}{quote}
+% quote$B4D6-$O!"CJMn$,%$%s%G%s%H$5$l$J$$$3$H$r=|$-!"(Bquotation$B4D6-$HF1$8$G$9!#(B
+% \begin{macrocode}
+\newenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \item\relax}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+%
+%
+% \subsection{$B%U%m!<%H(B}
+%
+% \file{ltfloat.dtx}$B$G$O!"%U%m!<%H%*%V%8%'%/%H$rA`:n$9$k$?$a$N%D!<%k$7$+(B
+% $BDj5A$7$F$$$^$;$s!#%?%$%W$,(B\texttt{TYPE}$B$N%U%m!<%H%*%V%8%'%/%H$r(B
+% $B07$&%^%/%m$rDj5A$9$k$K$O!"<!$NJQ?t$,I,MW$G$9!#(B
+%
+% \begin{description}
+% \item[\texttt{\bslash fps@TYPE}]
+% $B%?%$%W(B\texttt{TYPE}$B$N%U%m!<%H$rCV$/%G%U%)%k%H$N0LCV$G$9!#(B
+%
+% \item[\texttt{\bslash ftype@TYPE}]
+% $B%?%$%W(B\texttt{TYPE}$B$N%U%m!<%H$NHV9f$G$9!#(B
+% $B3F(B\texttt{TYPE}$B$K$O!"0l0U$J!"(B2$B$NG\?t$N(B\texttt{TYPE}$BHV9f$r3d$jEv$F$^$9!#(B
+% $B$?$H$($P!"?^$,HV9f(B1$B$J$i$P!"I=$O(B2$B$G$9!#<!$N%?%$%W$O(B4$B$H$J$j$^$9!#(B
+%
+% \item[\texttt{\bslash ext@TYPE}]
+% $B%?%$%W(B\texttt{TYPE}$B$N%U%m!<%H$NL\<!$r=PNO$9$k%U%!%$%k$N3HD%;R$G$9!#(B
+% $B$?$H$($P!"(B|\ext@figure|$B$O(B`lot'$B$G$9!#(B
+%
+% \item[\texttt{\bslash fnum@TYPE}]
+% $B%-%c%W%7%g%sMQ$N?^HV9f$r@8@.$9$k%^%/%m$G$9!#(B
+% $B$?$H$($P!"(B|\fnum@figure|$B$O(B`$B?^(B|\thefigure|'$B$r:n$j$^$9!#(B
+% \end{description}
+%
+% \subsubsection{figure$B4D6-(B}
+% $B$3$3$G$O!"(Bfigure$B4D6-$r<BAu$7$F$$$^$9!#(B
+%
+% \begin{macro}{\c@figure}
+% \begin{macro}{\thefigure}
+% $B?^HV9f$G$9!#(B
+% \begin{macrocode}
+%<article>\newcounter{figure}
+%<report|book>\newcounter{figure}[chapter]
+%<*tate>
+%<article>\renewcommand{\thefigure}{\rensuji{\@arabic\c@figure}}
+% \end{macrocode}
+% \changes{v1.1d}{1997/02/14}{\cs{ifnum}$BJ8$N9=J8%(%i!<$rD{@5!#(B}
+% \begin{macrocode}
+%<*report|book>
+\renewcommand{\thefigure}{%
+ \ifnum\c@chapter>\z@\thechapter{}$B!&(B\fi\rensuji{\@arabic\c@figure}}
+%</report|book>
+%</tate>
+%<*yoko>
+%<article>\renewcommand{\thefigure}{\@arabic\c@figure}
+%<*report|book>
+\renewcommand{\thefigure}{%
+ \ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@figure}
+%</report|book>
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fps@figure}
+% \begin{macro}{\ftype@figure}
+% \begin{macro}{\ext@figure}
+% \begin{macro}{\fnum@figure}
+% $B%U%m!<%H%*%V%8%'%/%H%?%$%W(B``figure''$B$N$?$a$N%Q%i%a!<%?$G$9!#(B
+% \begin{macrocode}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+%<tate>\def\fnum@figure{\figurename\thefigure}
+%<yoko>\def\fnum@figure{\figurename~\thefigure}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{figure}
+% \begin{environment}{figure*}
+% |*|$B7A<0$O#2CJH4$-$N%U%m!<%H$H$J$j$^$9!#(B
+% \begin{macrocode}
+\newenvironment{figure}
+ {\@float{figure}}
+ {\end@float}
+\newenvironment{figure*}
+ {\@dblfloat{figure}}
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsubsection{table$B4D6-(B}
+% $B$3$3$G$O!"(Btable$B4D6-$r<BAu$7$F$$$^$9!#(B
+%
+% \begin{macro}{\c@table}
+% \begin{macro}{\thetable}
+% \changes{v1.1n}{1998/10/13}
+% {report, book$B%/%i%9$G(Bchapter$B%+%&%s%?$r9MN8$7$F$$$J$+$C$?$N$r=$@5!#(B
+% $B$"$j$,$H$&!"J?@n!w7DXfBg$5$s!#(B}
+% $BI=HV9f$G$9!#(B
+% \begin{macrocode}
+%<article>\newcounter{table}
+%<report|book>\newcounter{table}[chapter]
+%<*tate>
+%<article>\renewcommand{\thetable}{\rensuji{\@arabic\c@table}}
+%<*report|book>
+\renewcommand{\thetable}{%
+ \ifnum\c@chapter>\z@\thechapter{}$B!&(B\fi\rensuji{\@arabic\c@table}}
+%</report|book>
+%</tate>
+%<*yoko>
+%<article>\renewcommand{\thetable}{\@arabic\c@table}
+%<*report|book>
+\renewcommand{\thetable}{%
+ \ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@table}
+%</report|book>
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fps@table}
+% \begin{macro}{\ftype@table}
+% \begin{macro}{\ext@table}
+% \begin{macro}{\fnum@table}
+% $B%U%m!<%H%*%V%8%'%/%H%?%$%W(B``table''$B$N$?$a$N%Q%i%a!<%?$G$9!#(B
+% \begin{macrocode}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+%<tate>\def\fnum@table{\tablename\thetable}
+%<yoko>\def\fnum@table{\tablename~\thetable}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{table}
+% \begin{environment}{table*}
+% |*|$B7A<0$O#2CJH4$-$N%U%m!<%H$H$J$j$^$9!#(B
+% \begin{macrocode}
+\newenvironment{table}
+ {\@float{table}}
+ {\end@float}
+\newenvironment{table*}
+ {\@dblfloat{table}}
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsection{$B%-%c%W%7%g%s(B}
+%
+% \begin{macro}{\@makecaption}
+% |\caption|$B%3%^%s%I$O!"%-%c%W%7%g%s$rAH$_N)$F$k$?$a$K(B|\@mkcaption|$B$r8F=P$^$9!#(B
+% $B$3$N%3%^%s%I$OFs$D$N0z?t$r<h$j$^$9!#(B
+% $B0l$D$O!"(B\meta{number}$B$G!"%U%m!<%H%*%V%8%'%/%H$NHV9f$G$9!#(B
+% $B$b$&0l$D$O!"(B\meta{text}$B$G%-%c%W%7%g%sJ8;zNs$G$9!#(B
+% \meta{number}$B$K$ODL>o!"(B`$B?^(B 3.2'$B$N$h$&$JJ8;zNs$,F~$C$F$$$^$9!#(B
+% $B$3$N%^%/%m$O!"(B|\parbox|$B$NCf$G8F$S=P$5$l$^$9!#=qBN$O(B|\normalsize|$B$G$9!#(B
+%
+% \begin{macro}{\abovecaptionskip}
+% \begin{macro}{\belowcaptionskip}
+% $B$3$l$i$ND9$5$O%-%c%W%7%g%s$NA08e$KA^F~$5$l$k%9%Z!<%9$G$9!#(B
+% \begin{macrocode}
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{10\p@}
+\setlength\belowcaptionskip{0\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% $B%-%c%W%7%g%sFb$GJ#?t$NCJMn$r:n@.$9$k$3$H$,$G$-$k$h$&$K!"(B
+% $B$3$N%^%/%m$O(B|\long|$B$GDj5A$r$7$^$9!#(B
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \iftdir\sbox\@tempboxa{#1\hskip1zw#2}%
+ \else\sbox\@tempboxa{#1: #2}%
+ \fi
+ \ifdim \wd\@tempboxa >\hsize
+ \iftdir #1\hskip1zw#2\relax\par
+ \else #1: #2\relax\par\fi
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%3%^%s%I%Q%i%a!<%?$N@_Dj(B}
+%
+% \subsubsection{array$B$H(Btabular$B4D6-(B}
+%
+% \begin{macro}{\arraycolsep}
+% array$B4D6-$N%+%i%`$O(B2|\arraycolsep|$B$GJ,N%$5$l$^$9!#(B
+% \begin{macrocode}
+\setlength\arraycolsep{5\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tabcolsep}
+% tabular$B4D6-$N%+%i%`$O(B2|\tabcolsep|$B$GJ,N%$5$l$^$9!#(B
+% \begin{macrocode}
+\setlength\tabcolsep{6\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\arrayrulewidth}
+% array$B$H(Btabular$B4D6-Fb$N7S@~$NI}$G$9!#(B
+% \begin{macrocode}
+\setlength\arrayrulewidth{.4\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\doublerulesep}
+% array$B$H(Btabular$B4D6-Fb$N7S@~4V$rD4@0$9$k6uGr$G$9!#(B
+% \begin{macrocode}
+\setlength\doublerulesep{2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{tabbing$B4D6-(B}
+%
+% \begin{macro}{\tabbingsep}
+% |\'|$B%3%^%s%I$GCV$+$l$k%9%Z!<%9$r@)8f$7$^$9!#(B
+% \begin{macrocode}
+\setlength\tabbingsep{\labelsep}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{minipage$B4D6-(B}
+%
+% \begin{macro}{\@mpfootins}
+% minipage$B$K$b5SCm$rIU$1$k$3$H$,$G$-$^$9!#(B
+% |\skip||\@mpfootins|$B$O!"DL>o$N(B|\skip||\footins|$B$HF1$8$h$&$JF0:n$r$7$^$9!#(B
+% \begin{macrocode}
+\skip\@mpfootins = \skip\footins
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{framebox$B4D6-(B}
+%
+% \begin{macro}{\fboxsep}
+% \begin{macro}{\fboxrule}
+% |\fboxsep|$B$O!"(B|\fbox|$B$H(B|\framebox|$B$G$N!"(B
+% $B%F%-%9%H$H%\%C%/%9$N4V$KF~$k6uGr$G$9!#(B
+% |\fboxrule|$B$O(B|\fbox|$B$H(B|\framebox|$B$G:n@.$5$l$k7S@~$NI}$G$9!#(B
+% \begin{macrocode}
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{equation$B$H(Beqnarray$B4D6-(B}
+%
+% \begin{macro}{\theequation}
+% equation$B%+%&%s%?$O!"?7$7$$>O$N3+;O$G%j%;%C%H$5$l$^$9!#(B
+% $B$^$?!"(Bequation$BHV9f$K$O!">OHV9f$,IU$-$^$9!#(B
+%
+% $B$3$N%3!<%I$O(B|\chapter|$BDj5A$N8e!"$h$j@53N$K$O(Bchapter$B%+%&%s%?$NDj5A$N8e!"(B
+% $B$G$J$/$F$O$$$1$^$;$s!#(B
+% \begin{macrocode}
+%<article>\renewcommand{\theequation}{\@arabic\c@equation}
+%<*report|book>
+\@addtoreset{equation}{chapter}
+\renewcommand{\theequation}{%
+ \ifnum\c@chapter>\z@\thechapter.\fi \@arabic\c@equation}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{$B%U%)%s%H%3%^%s%I(B}
+% |disablejfam|$B%*%W%7%g%s$,;XDj$5$l$F$$$J$$>l9g$K$O!"0J2<$N@_Dj$,$J$5(B
+% $B$l$^$9!#(B
+% $B$^$:!"?t<0Fb$KF|K\8l$rD>@\!"5-=R$9$k$?$a$K?t<05-9fMQJ8;z$K(B
+% ``JY1/mc/m/n''$B$rEPO?$7$^$9!#?t<0%P!<%8%g%s$,(Bbold$B$N>l9g$O!"(B
+% ``JY1/gt/m/n''$B$rMQ$$$^$9!#(B
+% $B$3$l$i$O!"(B|\mathmc|, |\mathgt|$B$H$7$FEPO?$5$l$^$9!#(B
+% $B$^$?!"F|K\8l?t<0%U%!%_%j$H$7$F(B|\symmincho|$B$,$3$NCJ3,$G@_Dj$5$l$^$9!#(B
+% |mathrmmc|$B%*%W%7%g%s$,;XDj$5$l$F$$$?>l9g$K$O!"$3$l$K0z$-B3$-(B
+% |\mathrm|$B$H(B|\mathbf|$B$rOB2$J8N>BP1~$K$9$k$?$a$N:n6H$,$J$5$l$^$9!#$3$N:]!"(B
+% $BB>$N%^%/%m$H$N>WFM$rHr$1$k$?$a(B|\AtBeginDocument|
+% $B$rMQ$$$FE83+=g=x$rCY$i$;$kI,MW$,$"$j$^$9!#(B
+%
+% |disablejfam|$B%*%W%7%g%s$,;XDj$5$l$F$$$?>l9g$K$O!"(B
+% |\mathmc|$B$H(B|\mathgt|$B$KBP$7$F%(%i!<$r=P$9$@$1$N%@%_!<$NDj5A$r(B
+% $BM?$($k@_Dj$N$_$,9T$o$l$^$9!#(B
+%
+% \textbf{$BJQ99(B}
+%
+% \changes{v1.6}{2006/06/27}{$B%U%)%s%H%3%^%s%I$r=$@5!#$"$j$,$H$&!"(Bymt$B$5$s!#(B}
+% p\LaTeX{} 2.09
+% compatibility mode$B$G$OOBJ8?t<0%U%)%s%H(Bfam$B$,(B2$B=EDj5A$5$l$F$$$?(B
+% $B$N$G!"$=$NItJ,$rJQ99$7$^$7$?!#(B
+% \begin{macrocode}
+\if@enablejfam
+ \if@compatibility\else
+ \DeclareSymbolFont{mincho}{JY1}{mc}{m}{n}
+ \DeclareSymbolFontAlphabet{\mathmc}{mincho}
+ \SetSymbolFont{mincho}{bold}{JY1}{gt}{m}{n}
+ \jfam\symmincho
+ \DeclareMathAlphabet{\mathgt}{JY1}{gt}{m}{n}
+ \fi
+ \if@mathrmmc
+ \AtBeginDocument{%
+ \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
+ \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}
+ }%
+ \fi
+\else
+ \DeclareRobustCommand{\mathmc}{%
+ \@latex@error{Command \noexpand\mathmc invalid with\space
+ `disablejfam' class option.}\@eha
+ }
+ \DeclareRobustCommand{\mathgt}{%
+ \@latex@error{Command \noexpand\mathgt invalid with\space
+ `disablejfam' class option.}\@eha
+ }
+\fi
+% \end{macrocode}
+%
+% $B$3$3$G$O(B\LaTeX~2.09$B$G0lHLE*$K;H$o$l$F$$$?%3%^%s%I$rDj5A$7$F$$$^$9!#(B
+% $B$3$l$i$N%3%^%s%I$O%F%-%9%H%b!<%I$H?t<0%b!<%I$N(B\emph{$B$I$A$i$G$b(B}$BF0:n$7$^$9!#(B
+% $B$3$l$i$O8_49@-$N$?$a$KDs6!$r$7$^$9$,!"$G$-$k$@$1(B|\text...|$B$H(B|\math...|$B$r(B
+% $B;H$&$h$&$K$7$F$/$@$5$$!#(B
+%
+% \begin{macro}{\mc}
+% \begin{macro}{\gt}
+% \begin{macro}{\rm}
+% \begin{macro}{\sf}
+% \begin{macro}{\tt}
+% $B$3$l$i$N%3%^%s%I$O%U%)%s%H%U%!%_%j$rJQ99$7$^$9!#(B
+% $B8_49%b!<%I$NF1L>%3%^%s%I$H0[$J$j!"$9$Y$F$N%3%^%s%I$,%G%U%)%k%H%U%)%s%H$K(B
+% $B%j%;%C%H$7$F$+$i!"BP1~$9$kB0@-$rJQ99$9$k$3$H$KCm0U$7$F$/$@$5$$!#(B
+% \begin{macrocode}
+\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
+\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bf}
+% $B$3$N%3%^%s%I$O%\!<%k%I=qBN$K$7$^$9!#%N!<%^%k=qBN$KJQ99$9$k$K$O!"(B
+% |\mdseries|$B$H;XDj$r$7$^$9!#(B
+% \begin{macrocode}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\it}
+% \begin{macro}{\sl}
+% \begin{macro}{\sc}
+% $B$3$l$i$N%3%^%s%I$O%U%)%s%H%7%'%$%W$r@ZBX$($^$9!#(B
+% $B%9%i%s%HBN$H%9%b!<%k%-%c%C%W$N?t<0%"%k%U%!%Y%C%H$O$"$j$^$;$s$N$G!"(B
+% $B?t<0%b!<%I$G$O2?$b$7$^$;$s$,!"7Y9p%a%C%;!<%8$r=PNO$7$^$9!#(B
+% |\upshape|$B%3%^%s%I$GDL>o$N%7%'%$%W$K$9$k$3$H$,$G$-$^$9!#(B
+% \begin{macrocode}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cal}
+% \begin{macro}{\mit}
+% $B$3$l$i$N%3%^%s%I$O?t<0%b!<%I$G$@$1;H$&$3$H$,$G$-$^$9!#(B
+% $B?t<0%b!<%I0J30$G$O2?$b$7$^$;$s!#(B
+% $B8=:_$N(BNFSS$B$O!"$3$l$i$N%3%^%s%I$,7Y9p$r@8@.$9$k$h$&$KDj5A$7$F$$$^$9$N$G!"(B
+% `$B<j$:$+$i(B'$BDj5A$9$kI,MW$,$"$j$^$9!#(B
+% \begin{macrocode}
+\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \section{$BAj8_;2>H(B}
+%
+% \subsection{$BL\<!(B}
+% |\section|$B%3%^%s%I$O!"(B\file{.toc}$B%U%!%$%k$K!"<!$N$h$&$J9T$r=PNO$7$^$9!#(B
+%
+% |\contentsline{section}{|\meta{title}|}{|\meta{page}|}|
+%
+% \meta{title}$B$K$O9`L\$,!"(B\meta{page}$B$K$O%Z!<%8HV9f$,F~$j$^$9!#(B
+% |\section|$B$K8+=P$7HV9f$,IU$/>l9g$O!"(B\meta{title}$B$O!"(B
+% |\numberline{|\meta{num}|}{|\meta{heading}|}|$B$H$J$j$^$9!#(B
+% \meta{num}$B$O(B|\thesection|$B%3%^%s%I$G@8@.$5$l$?8+=P$7HV9f$G$9!#(B
+% \meta{heading}$B$O8+=P$7J8;zNs$G$9!#$3$NB>$N8+=P$7%3%^%s%I$bF1MM$G$9!#(B
+%
+% figure$B4D6-$G$N(B|\caption|$B%3%^%s%I$O!"(B\file{.lof}$B%U%!%$%k$K!"(B
+% $B<!$N$h$&$J9T$r=PNO$7$^$9!#(B
+%
+% |\contentsline{figure}{\numberline{|\meta{num}|}{|%
+% \meta{caption}|}}{|\meta{page}|}|
+%
+% \meta{num}$B$O!"(B|\thefigure|$B%3%^%s%I$G@8@.$5$l$??^HV9f$G$9!#(B
+% \meta{caption}$B$O!"%-%c%W%7%g%sJ8;zNs$G$9!#(Btable$B4D6-$bF1MM$G$9!#(B
+%
+% |\contentsline{|\meta{name}|}|$B%3%^%s%I$O!"(B|\l@|\meta{name}$B$KE83+$5$l$^$9!#(B
+% $B$7$?$,$C$F!"L\<!$NBN:[$r5-=R$9$k$K$O!"(B|\l@chapter|, |\l@section|$B$J$I$r(B
+% $BDj5A$7$^$9!#?^L\<!$N$?$a$K$O(B|\l@figure|$B$G$9!#(B
+% $B$3$l$i$NB?$/$N%3%^%s%I$O(B|\@dottedtocline|$B%3%^%s%I$GDj5A$5$l$F$$$^$9!#(B
+% $B$3$N%3%^%s%I$O<!$N$h$&$J=q<0$H$J$C$F$$$^$9!#(B
+%
+% |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
+% \meta{numwidth}|}{|\meta{title}|}{|\meta{page}|}|
+%
+% \begin{description}
+% \item[\meta{level}] ``\meta{level} $<=$ \Lcount{tocdepth}''$B$N$H$-$K$@$1!"(B
+% $B@8@.$5$l$^$9!#(B|\chapter|$B$O%l%Y%k#0!"(B|\section|$B$O%l%Y%k#1!"(B$\ldots$ $B$G$9!#(B
+% \item[\meta{indent}] $B0lHV30B&$+$i$N:8%^!<%8%s$G$9!#(B
+% \item[\meta{numwidth}] $B8+=P$7HV9f!J(B|\numberline|$B%3%^%s%I$N(B\meta{num}$B!K$,(B
+% $BF~$k%\%C%/%9$NI}$G$9!#(B
+% \end{description}
+%
+% \begin{macro}{\c@tocdepth}
+% \Lcount{tocdepth}$B$O!"L\<!%Z!<%8$K=PNO$r$9$k8+=P$7%l%Y%k$G$9!#(B
+% \begin{macrocode}
+%<article>\setcounter{tocdepth}{3}
+%<!article>\setcounter{tocdepth}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% $B$^$?!"L\<!$r@8@.$9$k$?$a$K<!$N%Q%i%a!<%?$b;H$$$^$9!#(B
+%
+% \begin{macro}{\@pnumwidth}
+% $B%Z!<%8HV9f$NF~$k%\%C%/%9$NI}$G$9!#(B
+% \begin{macrocode}
+\newcommand{\@pnumwidth}{1.55em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@tocrmarg}
+% $BJ#?t9T$K$o$?$k>l9g$N1&%^!<%8%s$G$9!#(B
+% \begin{macrocode}
+\newcommand{\@tocrmarg}{2.55em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@dotsep}
+% $B%I%C%H$N4V3V!J(Bmu$BC10L!K$G$9!#(B2$B$d(B1.7$B$N$h$&$K;XDj$r$7$^$9!#(B
+% \begin{macrocode}
+\newcommand{\@dotsep}{4.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\toclineskip}
+% $B$3$ND9$5JQ?t$O!"L\<!9`L\$N4V$KF~$k%9%Z!<%9$ND9$5$G$9!#(B
+% $B%G%U%)%k%H$O%<%m$H$J$C$F$$$^$9!#=DAH$N$H$-!"%9%Z!<%9$r>/$79-$2$^$9!#(B
+% \begin{macrocode}
+\newdimen\toclineskip
+%<yoko>\setlength\toclineskip{\z@}
+%<tate>\setlength\toclineskip{2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\numberline}
+% \begin{macro}{\@lnumwidth}
+% |\numberline|$B%^%/%m$NDj5A$r<($7$^$9!#%*%j%8%J%k$NDj5A$G$O!"%\%C%/%9$NI}$r(B
+% |\@tempdima|$B$K$7$F$$$^$9$,!"$3$NJQ?t$O$$$m$$$m$J2U=j$G;H$o$l$^$9$N$G!"(B
+% $B4|BT$7$?CM$,F~$i$J$$>l9g$,$"$j$^$9!#(B
+%
+% ^^A $B$?$H$($P!"(Bp\LaTeXe{}$B$G$N(B|\selectfont|$B$O!"OB2$J8$N%Y!<%9%i%$%s$rD4@0$9$k(B
+% ^^A $B$?$a$K(B|\@tempdima|$BJQ?t$rMQ$$$F$$$^$9!#$=$N$?$a!"(B|\l@...|$B%^%/%m$NCf$G(B
+% ^^A $B%U%)%s%H$r@ZBX$($k$H!"(B|\numberline|$B%^%/%m$N%\%C%/%9(B
+% ^^A $B$NI}$,!"%Y!<%9%i%$%s$rD4@0$9$k$H$-$K7W;;$7$?CM$K$J$C$F$7$^$$$^$9!#(B
+% ^^A $B"*=$@5(B(texjporg)$B!':G6a$N(B|\adjustbaseline|$B$G$O(B|\adjust@dimen|$B$,;H$o$l$F(B
+% ^^A $B$$$k$?$a!"5-=R$r%3%a%s%H%"%&%H$7$^$7$?!#(B
+%
+% $B%U%)%s%HA*Br%3%^%s%I$N8e!"$"$k$$$O(B|\numberline|$B%^%/%m$NCf$G%U%)%s%H$r(B
+% $B@ZBX$($F$b$h$$$N$G$9$,!"0l;~JQ?t$r0U<1$7$?$/$J$$$N$G!"(B
+% $B8+=P$7HV9f$NF~$k%\%C%/%9$r(B|\@lnumwidth|$BJQ?t$rMQ$$$FAH$_N)$F$k$h$&$K(B
+% |\numberline|$B%^%/%m$r:FDj5A$7$^$9!#(B
+% \begin{macrocode}
+\newdimen\@lnumwidth
+\def\numberline#1{\hb@xt@\@lnumwidth{#1\hfil}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dottedtocline}
+% $BL\<!$N3F9T4V$K(B|\toclineskip|$B$rF~$l$k$h$&$KJQ99$7$^$9!#(B
+% $B$3$N%^%/%m$O(B\file{ltsect.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \changes{v1.3}{2001/10/04}{$BBh#50z?t$N=qBN$r(B\cs{rmfamily}$B$+$i(B\cs{normalfont}$B$KJQ99(B}
+% \changes{v1.7a}{2016/11/16}{Added \cs{nobreak} for
+% latex/2343 (sync with ltsect.dtx v1.0z)}
+% \begin{macrocode}
+\def\@dottedtocline#1#2#3#4#5{%
+ \ifnum #1>\c@tocdepth \else
+ \vskip\toclineskip \@plus.2\p@
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@lnumwidth #3\relax
+ \advance\leftskip \@lnumwidth \null\nobreak\hskip -\leftskip
+ {#4}\nobreak
+ \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep mu$}%
+ \hfill\nobreak
+ \hb@xt@\@pnumwidth{\hss\normalfont \normalcolor #5}%
+ \par}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addcontentsline}
+% $B=DAH$N>l9g$K%Z!<%8HV9f$r(B|\rensuji|$B$G0O$`$h$&$KJQ99$7$^$9!#(B
+% ^^A $B2#AH$N$H$-$K$b(B`|\rensuji|'$B%3%^%s%I$,=PNO$5$l$^$9$,!"(B
+% ^^A $B$3$N%3%^%s%I$K$h$k1F6A$O$"$j$^$;$s!#(B
+%
+% $B$3$N%^%/%m$O(B\file{ltsect.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \changes{v1.8a}{2018/10/25}{$B%U%!%$%k=q$-=P$7;~$N9TKvJ8;zBP:v(B
+% (sync with ltsect.dtx 2018/09/26 v1.1c)}
+% \begin{macrocode}
+\providecommand*\protected@file@percent{}
+\def\addcontentsline#1#2#3{%
+ \protected@write\@auxout
+ {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble
+%<tate> \@temptokena{\rensuji{\thepage}}}%
+%<yoko> \@temptokena{\thepage}}%
+ {\string\@writefile{#1}%
+ {\protect\contentsline{#2}{#3}{\the\@temptokena}%
+ \protected@file@percent}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{$BK\J8L\<!(B}
+%
+% \begin{macro}{\tableofcontents}
+% $BL\<!$r@8@.$7$^$9!#(B
+% \begin{macrocode}
+\newcommand{\tableofcontents}{%
+%<*report|book>
+ \if@twocolumn\@restonecoltrue\onecolumn
+ \else\@restonecolfalse\fi
+%</report|book>
+%<article> \section*{\contentsname
+%<!article> \chapter*{\contentsname
+% \end{macrocode}
+% |\tableofcontents|$B$G$O!"(B|\@mkboth|$B$O(Bheading$B$NCf$KF~$l$F$"$j$^$9!#(B
+% $B$[$+$NL?Na!J(B|\listoffigures|$B$J$I!K$K$D$$$F$O!"(B|\@mkboth|$B$O(Bheading$B$N(B
+% $B30$K=P$7$F$"$j$^$9!#$3$l$O(B\LaTeX $B$N(B\file{classes.dtx}$B$K9g$o$;$F$$$^$9!#(B
+% \begin{macrocode}
+ \@mkboth{\contentsname}{\contentsname}%
+ }\@starttoc{toc}%
+%<report|book> \if@restonecol\twocolumn\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@part}
+% part$B%l%Y%k$NL\<!$G$9!#(B
+% \begin{macrocode}
+\newcommand*{\l@part}[2]{%
+ \ifnum \c@tocdepth >-2\relax
+%<article> \addpenalty{\@secpenalty}%
+%<!article> \addpenalty{-\@highpenalty}%
+ \addvspace{2.25em \@plus\p@}%
+ \begingroup
+ \parindent\z@\rightskip\@pnumwidth
+ \parfillskip-\@pnumwidth
+ {\leavevmode\large\bfseries
+ \setlength\@lnumwidth{4zw}%
+ #1\hfil\nobreak
+ \hb@xt@\@pnumwidth{\hss#2}}\par
+ \nobreak
+%<article> \if@compatibility
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+%<article> \fi
+ \endgroup
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@chapter}
+% chapter$B%l%Y%k$NL\<!$G$9!#(B
+% \begin{macrocode}
+%<*report|book>
+\newcommand*{\l@chapter}[2]{%
+ \ifnum \c@tocdepth >\m@ne
+ \addpenalty{-\@highpenalty}%
+ \addvspace{1.0em \@plus\p@}%
+ \begingroup
+ \parindent\z@ \rightskip\@pnumwidth \parfillskip-\rightskip
+ \leavevmode\bfseries
+ \setlength\@lnumwidth{4zw}%
+ \advance\leftskip\@lnumwidth \hskip-\leftskip
+ #1\nobreak\hfil\nobreak\hb@xt@\@pnumwidth{\hss#2}\par
+ \penalty\@highpenalty
+ \endgroup
+ \fi}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@section}
+% section$B%l%Y%k$NL\<!$G$9!#(B
+% \begin{macrocode}
+%<*article>
+\newcommand*{\l@section}[2]{%
+ \ifnum \c@tocdepth >\z@
+ \addpenalty{\@secpenalty}%
+ \addvspace{1.0em \@plus\p@}%
+ \begingroup
+ \parindent\z@ \rightskip\@pnumwidth \parfillskip-\rightskip
+ \leavevmode\bfseries
+ \setlength\@lnumwidth{1.5em}%
+ \advance\leftskip\@lnumwidth \hskip-\leftskip
+ #1\nobreak\hfil\nobreak\hb@xt@\@pnumwidth{\hss#2}\par
+ \endgroup
+ \fi}
+%</article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*report|book>
+%<tate>\newcommand*{\l@section}{\@dottedtocline{1}{1zw}{4zw}}
+%<yoko>\newcommand*{\l@section}{\@dottedtocline{1}{1.5em}{2.3em}}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@subsection}
+% \begin{macro}{\l@subsubsection}
+% \begin{macro}{\l@paragraph}
+% \begin{macro}{\l@subparagraph}
+% $B2<0L%l%Y%k$NL\<!9`L\$NBN:[$G$9!#(B
+% \begin{macrocode}
+%<*tate>
+%<*article>
+\newcommand*{\l@subsection} {\@dottedtocline{2}{1zw}{4zw}}
+\newcommand*{\l@subsubsection}{\@dottedtocline{3}{2zw}{6zw}}
+\newcommand*{\l@paragraph} {\@dottedtocline{4}{3zw}{8zw}}
+\newcommand*{\l@subparagraph} {\@dottedtocline{5}{4zw}{9zw}}
+%</article>
+%<*report|book>
+\newcommand*{\l@subsection} {\@dottedtocline{2}{2zw}{6zw}}
+\newcommand*{\l@subsubsection}{\@dottedtocline{3}{3zw}{8zw}}
+\newcommand*{\l@paragraph} {\@dottedtocline{4}{4zw}{9zw}}
+\newcommand*{\l@subparagraph} {\@dottedtocline{5}{5zw}{10zw}}
+%</report|book>
+%</tate>
+%<*yoko>
+%<*article>
+\newcommand*{\l@subsection} {\@dottedtocline{2}{1.5em}{2.3em}}
+\newcommand*{\l@subsubsection}{\@dottedtocline{3}{3.8em}{3.2em}}
+\newcommand*{\l@paragraph} {\@dottedtocline{4}{7.0em}{4.1em}}
+\newcommand*{\l@subparagraph} {\@dottedtocline{5}{10em}{5em}}
+%</article>
+%<*report|book>
+\newcommand*{\l@subsection} {\@dottedtocline{2}{3.8em}{3.2em}}
+\newcommand*{\l@subsubsection}{\@dottedtocline{3}{7.0em}{4.1em}}
+\newcommand*{\l@paragraph} {\@dottedtocline{4}{10em}{5em}}
+\newcommand*{\l@subparagraph} {\@dottedtocline{5}{12em}{6em}}
+%</report|book>
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{$B?^L\<!$HI=L\<!(B}
+%
+% \begin{macro}{\listoffigures}
+% $B?^$N0lMw$r:n@.$7$^$9!#(B
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+% arg (sync with classes.dtx v1.4c)}
+% \begin{macrocode}
+\newcommand{\listoffigures}{%
+%<*report|book>
+ \if@twocolumn\@restonecoltrue\onecolumn
+ \else\@restonecolfalse\fi
+ \chapter*{\listfigurename}%
+%</report|book>
+%<article> \section*{\listfigurename}%
+ \@mkboth{\listfigurename}{\listfigurename}%
+ \@starttoc{lof}%
+%<report|book> \if@restonecol\twocolumn\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@figure}
+% $B?^L\<!$NBN:[$G$9!#(B
+% \begin{macrocode}
+%<tate>\newcommand*{\l@figure}{\@dottedtocline{1}{1zw}{4zw}}
+%<yoko>\newcommand*{\l@figure}{\@dottedtocline{1}{1.5em}{2.3em}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listoftables}
+% \changes{v1.0c}{1995/12/28}{fix the \cs{listoftable} typo.}
+% $BI=$N0lMw$r:n@.$7$^$9!#(B
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+% arg (sync with classes.dtx v1.4c)}
+% \begin{macrocode}
+\newcommand{\listoftables}{%
+%<*report|book>
+ \if@twocolumn\@restonecoltrue\onecolumn
+ \else\@restonecolfalse\fi
+ \chapter*{\listtablename}%
+%</report|book>
+%<article> \section*{\listtablename}%
+ \@mkboth{\listtablename}{\listtablename}%
+ \@starttoc{lot}%
+%<report|book> \if@restonecol\twocolumn\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@table}
+% $BI=L\<!$NBN:[$O!"?^L\<!$HF1$8$K$7$^$9!#(B
+% \begin{macrocode}
+\let\l@table\l@figure
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B;29MJ88%(B}
+%
+% \begin{macro}{\bibindent}
+% $B%*!<%W%s%9%?%$%k$N;29MJ88%$G;H$&%$%s%G%s%HI}$G$9!#(B
+% \begin{macrocode}
+\newdimen\bibindent
+\setlength\bibindent{1.5em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newblock}
+% |\newblock|$B$N%G%U%)%k%HDj5A$O!">.$5$J%9%Z!<%9$r@8@.$7$^$9!#(B
+% \begin{macrocode}
+\newcommand{\newblock}{\hskip .11em\@plus.33em\@minus.07em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{thebibliography}
+% $B;29MJ88%$d4XO"?^=q$N%j%9%H$r:n@.$7$^$9!#(B
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+% arg (sync with classes.dtx v1.4c)}
+% \begin{macrocode}
+\newenvironment{thebibliography}[1]
+%<article>{\section*{\refname}\@mkboth{\refname}{\refname}%
+%<report|book>{\chapter*{\bibname}\@mkboth{\bibname}{\bibname}%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy
+% \end{macrocode}
+% \changes{v1.1a}{1997/01/23}{\break\LaTeX\ \texttt{!<1996/12/01!>}$B$K9g$o$;$F=$@5(B}
+% \begin{macrocode}
+ \clubpenalty4000
+ \@clubpenalty\clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@openbib@code}
+% |\@openbib@code|$B$N%G%U%)%k%HDj5A$O2?$b$7$^$;$s!#(B
+% $B$3$NDj5A$O!"(B\Lopt{openbib}$B%*%W%7%g%s$K$h$C$FJQ99$5$l$^$9!#(B
+% \begin{macrocode}
+\let\@openbib@code\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@biblabel}
+% The label for a |\bibitem[...]| command is produced by this
+% macro. The default from \file{latex.dtx} is used.
+% \begin{macrocode}
+% \renewcommand*{\@biblabel}[1]{[#1]\hfill}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cite}
+% The output of the |\cite| command is produced by this macro. The
+% default from \file{ltbibl.dtx} is used.
+% \begin{macrocode}
+% \renewcommand*{\@cite}[1]{[#1]}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B:w0z(B}
+%
+% \begin{environment}{theindex}
+% $B#2CJAH$N:w0z$r:n@.$7$^$9!#(B
+% $B:w0z$N@hF,$N%Z!<%8$N%9%?%$%k$O(B\pstyle{jpl@in}$B$H$7$^$9!#$7$?$,$C$F!"(B
+% \pstyle{headings}$B$H(B\pstyle{bothstyle}$B$KE,$7$?0LCV$K=PNO$5$l$^$9!#(B
+% \begin{macrocode}
+\newenvironment{theindex}
+ {\if@twocolumn\@restonecolfalse\else\@restonecoltrue\fi
+%<article> \twocolumn[\section*{\indexname}]%
+%<report|book> \twocolumn[\@makeschapterhead{\indexname}]%
+ \@mkboth{\indexname}{\indexname}%
+ \thispagestyle{jpl@in}\parindent\z@
+% \end{macrocode}
+% $B%Q%i%a!<%?(B|\columnseprule|$B$H(B|\columnsep|$B$NJQ99$O!"(B|\twocolumn|$B$,(B
+% $B<B9T$5$l$?8e$G$J$1$l$P$J$j$^$;$s!#$=$&$7$J$$$H!":w0z$NA0$N%Z!<%8(B
+% $B$K$b1F6A$7$F$7$^$&$?$a$G$9!#(B
+% \changes{v1.7}{2016/11/12}{\cs{columnsep}$B$H(B\cs{columnseprule}$B$N(B
+% $BJQ99$r8e$m$K0\F0(B(sync with classes.dtx v1.4f)}
+% \begin{macrocode}
+ \parskip\z@ \@plus .3\p@\relax
+ \columnseprule\z@ \columnsep 35\p@
+ \let\item\@idxitem}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@idxitem}
+% \begin{macro}{\subitem}
+% \begin{macro}{\subsubitem}
+% $B:w0z9`L\$N;z2<$2I}$G$9!#(B|\@idxitem|$B$O(B|\item|$B$N9`L\$N;z2<$2I}$G$9!#(B
+% \begin{macrocode}
+\newcommand{\@idxitem}{\par\hangindent 40\p@}
+\newcommand{\subitem}{\@idxitem \hspace*{20\p@}}
+\newcommand{\subsubitem}{\@idxitem \hspace*{30\p@}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indexspace}
+% $B:w0z$N(B``$BJ8;z(B''$B8+=P$7$NA0$KF~$k%9%Z!<%9$G$9!#(B
+% \begin{macrocode}
+\newcommand{\indexspace}{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B5SCm(B}
+%
+% \begin{macro}{\footnoterule}
+% $BK\J8$H5SCm$N4V$K0z$+$l$k7S@~$G$9!#(B
+% \changes{v1.7}{2016/11/12}{use \cs{@width} (sync with classes.dtx v1.3a)}
+% \begin{macrocode}
+\renewcommand{\footnoterule}{%
+ \kern-3\p@
+ \hrule\@width.4\columnwidth
+ \kern2.6\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@footnote}
+% report$B$H(Bbook$B%/%i%9$G$O!"(Bchapter$B%l%Y%k$G%j%;%C%H$5$l$^$9!#(B
+% \begin{macrocode}
+%<!article>\@addtoreset{footnote}{chapter}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefntext}
+% $B$3$N%^%/%m$K$7$?$,$C$F5SCm$,AH$^$l$^$9!#(B
+%
+% |\@makefnmark|$B$O5SCm5-9f$rAH$_N)$F$k%^%/%m$G$9!#(B
+% \changes{v1.7}{2016/11/12}{Replaced all \cs{hbox to} by
+% \cs{hb@xt@} (sync with classes.dtx v1.3a)}
+% \begin{macrocode}
+%<*tate>
+\newcommand\@makefntext[1]{\parindent 1zw
+ \noindent\hb@xt@ 2zw{\hss\@makefnmark}#1}
+%</tate>
+%<*yoko>
+\newcommand\@makefntext[1]{\parindent 1em
+ \noindent\hb@xt@ 1.8em{\hss\@makefnmark}#1}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{$B:#F|$NF|IU(B}
+% $BAHHG;~$K$*$1$k8=:_$NF|IU$r=PNO$7$^$9!#(B
+%
+% \iffalse meta-comment!
+% $BCm0U!'$3$3$G(B \DisableCrossrefs, \EnableCrossrefs $B$r$7$F$$$k$N$O!"(B
+% platex jclasses.dtx $B$G(B dvi $B$r:n$k$H$-$K%(%i!<$K$J$k$?$a!#(B
+% \fi
+% \DisableCrossrefs
+% \begin{macro}{\if$B@>Nq(B}
+% \begin{macro}{\$B@>Nq(B}
+% \begin{macro}{\$BOBNq(B}
+% \changes{v1.0h}{1996/12/17}{Typo:$BOBNr(B to $BOBNq(B}
+% |\today|$B%3%^%s%I$N(B`$BG/(B'$B$r!"(B
+% $B@>Nq$+OBNq$N$I$A$i$G=PNO$9$k$+$r;XDj$9$k%3%^%s%I$G$9!#(B
+% 2018$BG/(B7$B7n0J9_$NF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#HG(B(v1.8)$B$G$O!"(B
+% $B%G%U%)%k%H$rOBNq$G$O$J$/@>Nq$K@_Dj$7$F$$$^$9!#(B
+% \changes{v1.8}{2018/07/03}{\cs{today}$B$N%G%U%)%k%H$rOBNq$+$i@>Nq$KJQ99(B}
+% \begin{macrocode}
+\newif\if$B@>Nq(B \$B@>Nq(Btrue
+\def\$B@>Nq(B{\$B@>Nq(Btrue}
+\def\$BOBNq(B{\$B@>Nq(Bfalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \EnableCrossrefs
+%
+% \begin{macro}{\heisei}
+% \changes{v1.1m}{1998/04/07}{\cs{today}$B$N7W;;<j=g$rJQ99(B}
+% \changes{v1.8b}{2019/04/02}{\cs{heisei}$B$NCM$O(B$\mbox{$B@>Nq(B}-1988$$B$G8GDj(B}
+% |\today|$B%3%^%s%I$r(B|\rightmark|$B$G;XDj$7$?$H$-!"(B|\rightmark|$B$r=PNO$9$kItJ,(B
+% $B$GOBNq$N$?$a$N7W;;$,$G$-$J$$$N$G!"%/%i%9%U%!%$%k$rFI$_9~$`;~E@$G7W;;$7$F(B
+% $B$*$-$^$9!#(B
+% \begin{macrocode}
+\newcount\heisei \heisei\year \advance\heisei-1988\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\today}
+% \begin{macro}{\pltx@today@year}
+% \changes{v1.8b}{2019/04/02}{\cs{today}$B$N7W;;!&=PNOJ}K!$rJQ99!#(B}
+% $B=DAH$N>l9g$O!"4A?t;z$G=PNO$7$^$9(B
+% \pLaTeX\ 2018-12-01$B0JA0$G$O=D?t<0%G%#%l%/%7%g%s;~$G$b4A?t;z$G=PNO$7$F$$$^$7$?$,!"(B
+% \pLaTeX\ 2019-04-06$B0J9_$+$i$O$=$&$7$J$/$J$j$^$7$?!#(B
+% \begin{macrocode}
+\def\pltx@today@year@#1{%
+ \ifnum\numexpr\year-#1=1 $B85(B\else
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi
+ \kansuji\number\numexpr\year-#1\relax
+ \else
+ \number\numexpr\year-#1\relax\nobreak
+ \fi
+ \fi $BG/(B
+}
+\def\pltx@today@year{%
+ \ifnum\numexpr\year*10000+\month*100+\day<19890108
+ $B><OB(B\pltx@today@year@{1925}%
+ \else\ifnum\numexpr\year*10000+\month*100+\day<20190501
+ $BJ?@.(B\pltx@today@year@{1988}%
+ \else
+ $BNaOB(B\pltx@today@year@{2018}%
+ \fi\fi}
+\def\today{{%
+ \if$B@>Nq(B
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi\kansuji\number\year
+ \else\number\year\nobreak\fi $BG/(B
+ \else
+ \pltx@today@year
+ \fi
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi
+ \kansuji\number\month $B7n(B
+ \kansuji\number\day $BF|(B
+ \else
+ \number\month\nobreak $B7n(B
+ \number\day\nobreak $BF|(B
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+%
+% \section{$B=i4|@_Dj(B}
+%
+% \begin{macro}{\prepartname}
+% \begin{macro}{\postpartname}
+% \begin{macro}{\prechaptername}
+% \begin{macro}{\postchaptername}
+% \begin{macrocode}
+\newcommand{\prepartname}{$BBh(B}
+\newcommand{\postpartname}{$BIt(B}
+%<report|book>\newcommand{\prechaptername}{$BBh(B}
+%<report|book>\newcommand{\postchaptername}{$B>O(B}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\contentsname}
+% \begin{macro}{\listfigurename}
+% \begin{macro}{\listtablename}
+% \begin{macrocode}
+\newcommand{\contentsname}{$BL\(B $B<!(B}
+\newcommand{\listfigurename}{$B?^(B $BL\(B $B<!(B}
+\newcommand{\listtablename}{$BI=(B $BL\(B $B<!(B}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refname}
+% \begin{macro}{\bibname}
+% \begin{macro}{\indexname}
+% \begin{macrocode}
+%<article>\newcommand{\refname}{$B;29MJ88%(B}
+%<report|book>\newcommand{\bibname}{$B4XO"?^=q(B}
+\newcommand{\indexname}{$B:w(B $B0z(B}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\figurename}
+% \begin{macro}{\tablename}
+% \begin{macrocode}
+\newcommand{\figurename}{$B?^(B}
+\newcommand{\tablename}{$BI=(B}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\appendixname}
+% \begin{macro}{\abstractname}
+% \begin{macrocode}
+\newcommand{\appendixname}{$BIU(B $BO?(B}
+%<article|report>\newcommand{\abstractname}{$B35(B $BMW(B}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v1.0d}{1996/02/29}{article$B$H(Breport$B$N%G%U%)%k%H$r(B
+% \pstyle{plain}$B$K=$@5(B}
+% \changes{v1.4}{2002/04/09}{$B=DAH%9%?%$%k$G(B\cs{flushbottom}$B$7$J$$$h$&$K$7$?(B}
+% \begin{macrocode}
+%<book>\pagestyle{headings}
+%<!book>\pagestyle{plain}
+\pagenumbering{arabic}
+\raggedbottom
+\if@twocolumn
+ \twocolumn
+ \sloppy
+\else
+ \onecolumn
+\fi
+% \end{macrocode}
+% |\@mparswitch|$B$OK5Cm$r:81&!J=DAH$G$O>e2<!K$I$A$i$N%^!<%8%s$K(B
+% $B=PNO$9$k$+$N;XDj$G$9!#56$N>l9g!"K5Cm$O0lJ}$NB&$K$7$+=PNO$5$l$^$;$s!#(B
+% $B$3$N%9%$%C%A$r??$H$9$k$H!"$H$/$K=DAH$N>l9g!"4q?t%Z!<%8$G$OK\J8$N>e$K!"(B
+% $B6v?t%Z!<%8$G$OK\J8$N2<$KK5Cm$,=PNO$5$l$^$9$N$G!"$*$+$7$J$3$H$K$J$j$^$9!#(B
+%
+% $B$^$?!"=DAH$N$H$-$K$O!"K5Cm$rK\J8$N2<$K=P$9$h$&$K$7$F$$$^$9!#(B
+% |\reversemarginpar|$B$H$9$k$HK\J8$N>eB&$K=PNO$5$l$^$9!#(B
+% $B$?$@$7!"FsCJAH$N>l9g$O!"$D$M$KNY@\$9$k%F%-%9%HB&$N%^!<%8%s$K=PNO$5$l$^$9!#(B
+% \begin{macrocode}
+%<*tate>
+\normalmarginpar
+\@mparswitchfalse
+%</tate>
+%<*yoko>
+\if@twoside
+ \@mparswitchtrue
+\else
+ \@mparswitchfalse
+\fi
+%</yoko>
+%</article|report|book>
+% \end{macrocode}
+%
+%
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/platex/jltxdoc.dtx b/language/japanese/platex/jltxdoc.dtx
new file mode 100644
index 0000000000..3bd8d7e00d
--- /dev/null
+++ b/language/japanese/platex/jltxdoc.dtx
@@ -0,0 +1,205 @@
+% \iffalse meta-comment
+%% File: jltxdoc.dtx
+%
+% Copyright 1995,1996,1997 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016-2017 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% \fi
+%
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.0a}{1997/01/23}{\LaTeX \texttt{!<1996/12/01!>}$B$X$NBP1~$K(B
+% $B9g$o$;$F=$@5(B}
+% \changes{v1.0b}{1997/07/29}{\cs{}$B$H(B\texttt{"}$B$N(B\cs{xspcode}$B$rJQ99(B}
+% \changes{v1.0c}{2016/07/25}{doc$B%Q%C%1!<%8$,>e=q$-$9$k(B\cs{verb}$B$r:F!9Dj5A(B}
+% \changes{v1.0d}{2017/09/24}{\cs{vadjust\{\}}$B$rDI2C(B}
+% \fi
+%
+% \iffalse
+%<class>\NeedsTeXFormat{pLaTeX2e}
+%<class>\ProvidesClass{jltxdoc}[2017/09/24 v1.0d Standard pLaTeX file]
+%<*driver>
+\documentclass{jltxdoc}
+\GetFileInfo{jltxdoc.cls}
+\title{p\LaTeXe{}$B%I%-%e%a%s%H5-=RMQ%/%i%9(B\space\fileversion}
+\author{Ken Nakano}
+\date{$B:n@.F|!'(B\filedate}
+\begin{document}
+ \maketitle
+ \DocInput{jltxdoc.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \file{jltxdoc}$B%/%i%9$O!"(B\file{ltxdoc}$B$r%F%s%W%l!<%H$K$7$F!"F|K\8lMQ$N(B
+% $B=$@5$r2C$($F$$$^$9!#(B
+% \begin{macrocode}
+%<*class>
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{ltxdoc}}
+\ProcessOptions
+\LoadClass{ltxdoc}
+% \end{macrocode}
+%
+% \begin{macro}{\normalsize}
+% \begin{macro}{\small}
+% \begin{macro}{\parindent}
+% \changes{v1.0a}{1997/01/23}{\cs{normalsize}, \cs{small}$B$J$I$N:FDj5A(B}
+% \file{ltxdoc}$B$+$i%m!<%I$5$l$k(B\file{article}$B%/%i%9$G$N9T4V$J$I$N@_DjCM$G!"(B
+% $BF|K\8l$NJ8>O$rAHHG$9$k$H!"9T4V$,69$$$h$&$K;W$o$l$k$N$G!"B?>/9-$/$9$k$h$&$K(B
+% $B:F@_Dj$7$^$9!#$^$?!"CJMn@hF,$G$N;z2<$2NL$rA43Q0lJ8;zJ,$H$7$^$9!#(B
+% \begin{macrocode}
+\renewcommand{\normalsize}{%
+ \@setfontsize\normalsize\@xpt{15}%
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}
+\renewcommand{\small}{%
+ \@setfontsize\small\@ixpt{11}%
+ \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus2\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+ \belowdisplayskip \abovedisplayskip}
+\normalsize
+\setlength\parindent{1zw}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\file}
+% |\file|$B%^%/%m$O!"%U%!%$%kL>$r<($9$N$KMQ$$$^$9!#(B
+% \begin{macrocode}
+\providecommand*{\file}[1]{\texttt{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstyle}
+% |\pstyle|$B%^%/%m$O!"%Z!<%8%9%?%$%kL>$r<($9$N$KMQ$$$^$9!#(B
+% \begin{macrocode}
+\providecommand*{\pstyle}[1]{\textsl{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Lcount}
+% |\Lcount|$B%^%/%m$O!"%+%&%s%?L>$r<($9$N$KMQ$$$^$9!#(B
+% \begin{macrocode}
+\providecommand*{\Lcount}[1]{\textsl{\small#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Lopt}
+% |\Lopt|$B%^%/%m$O!"%/%i%9%*%W%7%g%s$d%Q%C%1!<%8%*%W%7%g%s$r<($9$N$KMQ$$$^$9!#(B
+% \begin{macrocode}
+\providecommand*{\Lopt}[1]{\textsf{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dst}
+% |\dst|$B%^%/%m$O!"(B``\dst''$B$r=PNO$9$k!#(B
+% \begin{macrocode}
+\providecommand\dst{{\normalfont\scshape docstrip}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\NFSS}
+% |\NFSS|$B%^%/%m$O!"(B``\NFSS''$B$r=PNO$7$^$9!#(B
+% \begin{macrocode}
+\providecommand\NFSS{\textsf{NFSS}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@clineno}
+% \begin{macro}{\mlineplus}
+% |\mlineplus|$B%^%/%m$O!"$=$N;~E@$G$N%^%/%m%3!<%I$N9THV9f$K!"0z?t$K;XDj$5$l$?(B
+% $B9T?t$@$1$r2C$($??tCM$r=PNO$7$^$9!#$?$H$($P(B|\mlineplus{3}|$B$H$9$l$P!"(B
+% $BD>A0$N%^%/%m%3!<%I$N9THV9f(B(\arabic{CodelineNo})$B$K(B3$B$r2C$($??t!"(B
+% ``\mlineplus{3}''$B$,=PNO$5$l$^$9!#(B
+% \begin{macrocode}
+\newcounter{@clineno}
+\def\mlineplus#1{\setcounter{@clineno}{\arabic{CodelineNo}}%
+ \addtocounter{@clineno}{#1}\arabic{@clineno}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{tsample}
+% |tsample|$B4D6-$O!"4D6-Fb$K;XDj$5$l$?FbMF$r7S@~$G0O$C$F=PNO$r$7$^$9!#(B
+% $BBh0l0z?t$O!"=PNO$9$k%\%C%/%9$N9b$5$G$9!#(B
+% \file{plext.dtx}$B$NCf$G;HMQ$7$F$$$^$9!#(B
+% $B$3$N%^%/%mFb$G$O=DAH$K$J$k$3$H$KCm0U$7$F$/$@$5$$!#(B
+% \begin{macrocode}
+\def\tsample#1{%
+ \hbox to\linewidth\bgroup\vrule width.1pt\hss
+ \vbox\bgroup\hrule height.1pt
+ \vskip.5\baselineskip
+ \vbox to\linewidth\bgroup\tate\hsize=#1\relax\vss}
+\def\endtsample{%
+ \vss\egroup
+ \vskip.5\baselineskip
+ \hrule height.1pt\egroup
+ \hss\vrule width.1pt\egroup}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\DisableCrossrefs}
+% \begin{macro}{\EnableCrossrefs}
+% \file{jclasses.dtx}$B$r=hM}$9$k$H$-$K!"(B|\if$B@>Nq(B|$B$NItJ,$G%(%i!<$K$J$k$?$a!"(B
+% $B0l;~E*$K%/%m%9%j%U%!%l%s%9$N5!G=$r%*%U$K$7$^$9!#(B
+% $B$7$+$7!"%G%U%)%k%H$NDj5A$G$O40A4$K@)8f$G$-$J$$$N$G!"$3$3$G:FDj5A$r$7$^$9!#(B
+% \begin{macrocode}
+\def\DisableCrossrefs{\@bsphack\scan@allowedfalse\@esphack}
+\def\EnableCrossrefs{\@bsphack\scan@allowedtrue
+ \def\DisableCrossrefs{\@bsphack\scan@allowedfalse\@esphack}\@esphack}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\verb}
+% p\LaTeX{}$B$G$O!"(B|\verb|$B%3%^%s%I$r=$@5$7$FD>A0$K(B|\xkanjiskip|$B$,F~$k$h$&$K(B
+% $B$7$F$$$^$9!#$7$+$7!"(B\file{ltxdoc.cls}$B$,FI$_9~$`(B\file{doc.sty}$B$,>e=q$-(B
+% $B$7$F$7$^$$$^$9$N$G!"$3$l$r:F!9Dj5A$7$^$9!#(B\file{doc.sty}$B$G$NDj5A$O(B
+%\begin{verbatim}
+% \def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
+% \bgroup \let\do\do@noligs \verbatim@nolig@list
+% \ttfamily \verb@eol@error \let\do\@makeother \dospecials
+% \@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
+%\end{verbatim}
+% $B$H$J$C$F$$$^$9$N$G!"(B\file{plcore.dtx}$B$HF1MM$K(B|\null|$B$r30$7$F(B|\vadjust{}|$B$r(B
+% $BF~$l$^$9!#(B
+% \changes{v1.0c}{2016/07/25}{doc$B%Q%C%1!<%8$,>e=q$-$9$k(B\cs{verb}$B$r:F!9Dj5A(B}
+% \changes{v1.0d}{2017/09/24}{\cs{vadjust\{\}}$B$rDI2C(B}
+% \begin{macrocode}
+\def\verb{\relax\ifmmode\hbox\else\leavevmode\vadjust{}\fi
+ \bgroup \let\do\do@noligs \verbatim@nolig@list
+ \ttfamily \verb@eol@error \let\do\@makeother \dospecials
+ \@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\xspcode}
+% $B%3%^%s%IL>$N(B|\|$B$H(B16$B?J?t$r<($9$?$a$N(B|"|$B$NA0$K$b%9%Z!<%9$,F~$k$h$&!"(B
+% $B$3$l$i$N(B|\xspcode|$B$NCM$rJQ99$7$^$9!#(B
+% \changes{v1.0b}{1997/07/29}{\cs{}$B$H(B\texttt{"}$B$N(B\cs{xspcode}$B$rJQ99(B}
+% \begin{macrocode}
+\xspcode"5C=3 %% \
+\xspcode"22=3 %% "
+%</class>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/platex/kinsoku.dtx b/language/japanese/platex/kinsoku.dtx
new file mode 100644
index 0000000000..e59aa35056
--- /dev/null
+++ b/language/japanese/platex/kinsoku.dtx
@@ -0,0 +1,395 @@
+% \iffalse meta-comment
+%% File: kinsoku.dtx
+%
+% Copyright 1995 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016-2017 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% \fi
+%
+%
+% \iffalse
+% \changes{v1.0}{1995/04/01}{first edition}
+% \changes{v1.0a}{2016/06/08}{T1$B$J$I$N(B8$B%S%C%H%U%)%s%H%(%s%3!<%G%#%s%0(B
+% $B$N$?$a$K(B128--256$B$NJ8;z$r(B\texttt{\cs{xspcode}=3}$B$K@_Dj(B}
+% \changes{v1.0b}{2017/08/05}{$B!s!"!u!"(B\%$B!"(B\&$B$N6XB'%Z%J%k%F%#$,(B
+% $B8m$C$F$$$?$N$r=$@5!J(Bpost $\rightarrow$ pre$B!K(B}
+% \fi
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{kinsoku.dtx}[2017/08/05 v1.0b pLaTeX Kernel (community edition)]
+% \iffalse
+\documentclass{jltxdoc}
+\GetFileInfo{kinsoku.dtx}
+\title{$B6XB'%Q%i%a!<%?(B\space\fileversion}
+\author{Ken Nakano}
+\date{$B:n@.F|!'(B\filedate}
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% $B$3$N%U%!%$%k$O!"6XB'$HJ8;z4V%9%Z!<%9$N@_Dj$K$D$$$F@bL@$r$7$F$$$^$9!#(B
+% $BF|K\8l(B\TeX{}$B$N5!G=$K$D$$$F$N>\:Y$O!"!XF|K\8l(B\TeX $B%F%/%K%+%k%V%C%/(BI$B!Y$r(B
+% $B;2>H$7$F$/$@$5$$!#(B
+%
+% $B$J$*!"$3$N%U%!%$%k$N%3!<%IItJ,$O!"(B
+% $B0JA0$N%P!<%8%g%s$GG[I[$5$l$?(B\file{kinsoku.tex}$B$HF10l$G$9!#(B
+%
+% \begin{macrocode}
+%<*plcore>
+% \end{macrocode}
+%
+% \section{$B6XB'(B}
+%
+% $B$"$kJ8;z$r9TF,6XB'$NBP>]$K$9$k$K$O!"(B|\prebreakpenalty|$B$K@5$NCM$r;XDj$7$^$9!#(B
+% $B$"$kJ8;z$r9TKv6XB'$NBP>]$K$9$k$K$O!"(B|\postbreakpenalty|$B$K@5$NCM$r;XDj$7$^$9!#(B
+% $B?tCM$,Bg$-$$$[$I!"9TF,!"$"$k$$$O9TKv$G2~9T$5$l$K$/$/$J$j$^$9!#(B
+%
+% \subsection{$BH>3QJ8;z$KBP$9$k6XB'(B}
+% $B$3$3$G$O!"H>3QJ8;z$KBP$9$k6XB'$N@_Dj$r9T$J$C$F$$$^$9!#(B
+% \changes{v1.0b}{2017/08/05}{$B!s!"!u!"(B\%$B!"(B\&$B$N6XB'%Z%J%k%F%#$,(B
+% $B8m$C$F$$$?$N$r=$@5!J(Bpost $\rightarrow$ pre$B!K(B}
+%
+% \begin{macrocode}
+\prebreakpenalty`!=10000
+\prebreakpenalty`"=10000
+\postbreakpenalty`\#=500
+\postbreakpenalty`\$=500
+\prebreakpenalty`\%=500
+\prebreakpenalty`\&=500
+\postbreakpenalty`\`=10000
+\prebreakpenalty`'=10000
+\prebreakpenalty`)=10000
+\postbreakpenalty`(=10000
+\prebreakpenalty`*=500
+\prebreakpenalty`+=500
+\prebreakpenalty`-=10000
+\prebreakpenalty`.=10000
+\prebreakpenalty`,=10000
+\prebreakpenalty`/=500
+\prebreakpenalty`;=10000
+\prebreakpenalty`?=10000
+\prebreakpenalty`:=10000
+\prebreakpenalty`]=10000
+\postbreakpenalty`[=10000
+% \end{macrocode}
+%
+% \subsection{$BA43QJ8;z$KBP$9$k6XB'(B}
+% $B$3$3$G$O!"A43QJ8;z$KBP$9$k6XB'$N@_Dj$r9T$J$C$F$$$^$9!#(B
+%
+% \begin{macrocode}
+\prebreakpenalty`$B!"(B=10000
+\prebreakpenalty`$B!#(B=10000
+\prebreakpenalty`$B!$(B=10000
+\prebreakpenalty`$B!%(B=10000
+\prebreakpenalty`$B!&(B=10000
+\prebreakpenalty`$B!'(B=10000
+\prebreakpenalty`$B!((B=10000
+\prebreakpenalty`$B!)(B=10000
+\prebreakpenalty`$B!*(B=10000
+\prebreakpenalty\jis"212B=10000
+\prebreakpenalty\jis"212C=10000
+\prebreakpenalty\jis"212D=10000
+\postbreakpenalty\jis"212E=10000
+\prebreakpenalty\jis"2139=10000
+\prebreakpenalty\jis"2144=250
+\prebreakpenalty\jis"2145=250
+\postbreakpenalty\jis"2146=10000
+\prebreakpenalty\jis"2147=5000
+\postbreakpenalty\jis"2148=5000
+\prebreakpenalty\jis"2149=5000
+\prebreakpenalty`$B!K(B=10000
+\postbreakpenalty`$B!J(B=10000
+\prebreakpenalty`$B!Q(B=10000
+\postbreakpenalty`$B!P(B=10000
+\prebreakpenalty`$B!O(B=10000
+\postbreakpenalty`$B!N(B=10000
+\postbreakpenalty`$B!F(B=10000
+\prebreakpenalty`$B!G(B=10000
+\postbreakpenalty\jis"214C=10000
+\prebreakpenalty\jis"214D=10000
+\postbreakpenalty\jis"2152=10000
+\prebreakpenalty\jis"2153=10000
+\postbreakpenalty\jis"2154=10000
+\prebreakpenalty\jis"2155=10000
+\postbreakpenalty\jis"2156=10000
+\prebreakpenalty\jis"2157=10000
+\postbreakpenalty\jis"2158=10000
+\prebreakpenalty\jis"2159=10000
+\postbreakpenalty\jis"215A=10000
+\prebreakpenalty\jis"215B=10000
+\prebreakpenalty`$B!<(B=10000
+\prebreakpenalty`$B!\(B=200
+\prebreakpenalty`$B!](B=200
+\prebreakpenalty`$B!a(B=200
+\postbreakpenalty`$B!t(B=200
+\postbreakpenalty`$B!p(B=200
+\prebreakpenalty`$B!s(B=200
+\prebreakpenalty`$B!u(B=200
+\prebreakpenalty`$B$!(B=150
+\prebreakpenalty`$B$#(B=150
+\prebreakpenalty`$B$%(B=150
+\prebreakpenalty`$B$'(B=150
+\prebreakpenalty`$B$)(B=150
+\prebreakpenalty`$B$C(B=150
+\prebreakpenalty`$B$c(B=150
+\prebreakpenalty`$B$e(B=150
+\prebreakpenalty`$B$g(B=150
+\prebreakpenalty\jis"246E=150
+\prebreakpenalty`$B%!(B=150
+\prebreakpenalty`$B%#(B=150
+\prebreakpenalty`$B%%(B=150
+\prebreakpenalty`$B%'(B=150
+\prebreakpenalty`$B%)(B=150
+\prebreakpenalty`$B%C(B=150
+\prebreakpenalty`$B%c(B=150
+\prebreakpenalty`$B%e(B=150
+\prebreakpenalty`$B%g(B=150
+\prebreakpenalty\jis"256E=150
+\prebreakpenalty\jis"2575=150
+\prebreakpenalty\jis"2576=150
+% \end{macrocode}
+%
+% \section{$BJ8;z4V$N%9%Z!<%9(B}
+%
+% $B$"$k1Q;z$NA08e$H!"$=$NJ8;z$KNY9g$&4A;z$KA^F~$5$l$k%9%Z!<%9$r@)8f$9$k$K$O!"(B
+% |\xspcode|$B$rMQ$$$^$9!#(B
+%
+% $B$"$k4A;z$NA08e$H!"$=$NJ8;z$KNY9g$&1Q;z$KA^F~$5$l$k%9%Z!<%9$r@)8f$9$k$K$O!"(B
+% |\inhibitxspcode|$B$rMQ$$$^$9!#(B
+%
+% \subsection{$B$"$k1Q;z$HA08e$N4A;z$N4V$N@)8f(B}
+% $B$3$3$G$O!"1Q;z$KBP$9$k@_Dj$r9T$J$C$F$$$^$9!#(B
+%
+% $B;XDj$9$k?tCM$H$=$N0UL#$O<!$N$H$*$j$G$9!#(B
+%
+% \begin{center}
+% \begin{tabular}{ll}
+% 0 & $BA08e$N4A;z$N4V$G$N=hM}$r6X;_$9$k!#(B\\
+% 1 & $BD>A0$N4A;z$H$N4V$K$N$_!"%9%Z!<%9$NA^F~$r5v2D$9$k!#(B\\
+% 2 & $BD>8e$N4A;z$H$N4V$K$N$_!"%9%Z!<%9$NA^F~$r5v2D$9$k!#(B\\
+% 3 & $BA08e$N4A;z$H$N4V$G$N%9%Z!<%9$NA^F~$r5v2D$9$k!#(B\\
+% \end{tabular}
+% \end{center}
+%
+% \begin{macrocode}
+\xspcode`(=1
+\xspcode`)=2
+\xspcode`[=1
+\xspcode`]=2
+\xspcode``=1
+\xspcode`'=2
+\xspcode`;=2
+\xspcode`,=2
+\xspcode`.=2
+% \end{macrocode}
+%
+%
+% T1$B$J$I$N(B8$B%S%C%H%U%)%s%H%(%s%3!<%G%#%s%0$G(B128--255$B$NJ8;z$O2$J8J8;z$G$9$N$G!"(B
+% $B<~0O$NOBJ8J8;z$H$N4V$K(B|\xkanjiskip|$B$,A^F~$5$l$kI,MW$,$"$j$^$9!#$=$3$G!"(B
+% $B1|B<$5$s$N(B\file{jsclasses}$B$dEDCf$5$s$N(Bup\LaTeX{}$B$HF1Ey$NBP=h$r$7$^$9!#(B
+% \changes{v1.0a}{2016/06/08}{T1$B$J$I$N(B8$B%S%C%H%U%)%s%H%(%s%3!<%G%#%s%0(B
+% $B$N$?$a$K(B128--256$B$NJ8;z$r(B\texttt{\cs{xspcode}=3}$B$K@_Dj(B}
+%
+% \begin{macrocode}
+\xspcode"80=3
+\xspcode"81=3
+\xspcode"82=3
+\xspcode"83=3
+\xspcode"84=3
+\xspcode"85=3
+\xspcode"86=3
+\xspcode"87=3
+\xspcode"88=3
+\xspcode"89=3
+\xspcode"8A=3
+\xspcode"8B=3
+\xspcode"8C=3
+\xspcode"8D=3
+\xspcode"8E=3
+\xspcode"8F=3
+\xspcode"90=3
+\xspcode"91=3
+\xspcode"92=3
+\xspcode"93=3
+\xspcode"94=3
+\xspcode"95=3
+\xspcode"96=3
+\xspcode"97=3
+\xspcode"98=3
+\xspcode"99=3
+\xspcode"9A=3
+\xspcode"9B=3
+\xspcode"9C=3
+\xspcode"9D=3
+\xspcode"9E=3
+\xspcode"9F=3
+\xspcode"A0=3
+\xspcode"A1=3
+\xspcode"A2=3
+\xspcode"A3=3
+\xspcode"A4=3
+\xspcode"A5=3
+\xspcode"A6=3
+\xspcode"A7=3
+\xspcode"A8=3
+\xspcode"A9=3
+\xspcode"AA=3
+\xspcode"AB=3
+\xspcode"AC=3
+\xspcode"AD=3
+\xspcode"AE=3
+\xspcode"AF=3
+\xspcode"B0=3
+\xspcode"B1=3
+\xspcode"B2=3
+\xspcode"B3=3
+\xspcode"B4=3
+\xspcode"B5=3
+\xspcode"B6=3
+\xspcode"B7=3
+\xspcode"B8=3
+\xspcode"B9=3
+\xspcode"BA=3
+\xspcode"BB=3
+\xspcode"BC=3
+\xspcode"BD=3
+\xspcode"BE=3
+\xspcode"BF=3
+\xspcode"C0=3
+\xspcode"C1=3
+\xspcode"C2=3
+\xspcode"C3=3
+\xspcode"C4=3
+\xspcode"C5=3
+\xspcode"C6=3
+\xspcode"C7=3
+\xspcode"C8=3
+\xspcode"C9=3
+\xspcode"CA=3
+\xspcode"CB=3
+\xspcode"CC=3
+\xspcode"CD=3
+\xspcode"CE=3
+\xspcode"CF=3
+\xspcode"D0=3
+\xspcode"D1=3
+\xspcode"D2=3
+\xspcode"D3=3
+\xspcode"D4=3
+\xspcode"D5=3
+\xspcode"D6=3
+\xspcode"D7=3
+\xspcode"D8=3
+\xspcode"D9=3
+\xspcode"DA=3
+\xspcode"DB=3
+\xspcode"DC=3
+\xspcode"DD=3
+\xspcode"DE=3
+\xspcode"DF=3
+\xspcode"E0=3
+\xspcode"E1=3
+\xspcode"E2=3
+\xspcode"E3=3
+\xspcode"E4=3
+\xspcode"E5=3
+\xspcode"E6=3
+\xspcode"E7=3
+\xspcode"E8=3
+\xspcode"E9=3
+\xspcode"EA=3
+\xspcode"EB=3
+\xspcode"EC=3
+\xspcode"ED=3
+\xspcode"EE=3
+\xspcode"EF=3
+\xspcode"F0=3
+\xspcode"F1=3
+\xspcode"F2=3
+\xspcode"F3=3
+\xspcode"F4=3
+\xspcode"F5=3
+\xspcode"F6=3
+\xspcode"F7=3
+\xspcode"F8=3
+\xspcode"F9=3
+\xspcode"FA=3
+\xspcode"FB=3
+\xspcode"FC=3
+\xspcode"FD=3
+\xspcode"FE=3
+\xspcode"FF=3
+% \end{macrocode}
+%
+% \subsection{$B$"$k4A;z$HA08e$N1Q;z$N4V$N@)8f(B}
+% $B$3$3$G$O!"4A;z$KBP$9$k@_Dj$r9T$J$C$F$$$^$9!#(B
+%
+% $B;XDj$9$k?tCM$H$=$N0UL#$O<!$N$H$*$j$G$9!#(B
+%
+% \begin{center}
+% \begin{tabular}{ll}
+% 0 & $BA08e$N1Q;z$H$N4V$K%9%Z!<%9$rA^F~$9$k$3$H$r6X;_$9$k!#(B\\
+% 1 & $BD>A0$N1Q;z$H$N4V$K%9%Z!<%9$rA^F~$9$k$3$H$r6X;_$9$k!#(B\\
+% 2 & $BD>8e$N1Q;z$H$N4V$K%9%Z!<%9$rA^F~$9$k$3$H$r6X;_$9$k!#(B\\
+% 3 & $BA08e$N1Q;z$H$N4V$G$N%9%Z!<%9$NA^F~$r5v2D$9$k!#(B\\
+% \end{tabular}
+% \end{center}
+%
+% \begin{macrocode}
+\inhibitxspcode`$B!"(B=1
+\inhibitxspcode`$B!#(B=1
+\inhibitxspcode`$B!$(B=1
+\inhibitxspcode`$B!%(B=1
+\inhibitxspcode`$B!((B=1
+\inhibitxspcode`$B!)(B=1
+\inhibitxspcode`$B!K(B=1
+\inhibitxspcode`$B!J(B=2
+\inhibitxspcode`$B!O(B=1
+\inhibitxspcode`$B!N(B=2
+\inhibitxspcode`$B!Q(B=1
+\inhibitxspcode`$B!P(B=2
+\inhibitxspcode`$B!F(B=2
+\inhibitxspcode`$B!G(B=1
+\inhibitxspcode`$B!H(B=2
+\inhibitxspcode`$B!I(B=1
+\inhibitxspcode`$B!L(B=2
+\inhibitxspcode`$B!M(B=1
+\inhibitxspcode`$B!R(B=2
+\inhibitxspcode`$B!S(B=1
+\inhibitxspcode`$B!T(B=2
+\inhibitxspcode`$B!U(B=1
+\inhibitxspcode`$B!V(B=2
+\inhibitxspcode`$B!W(B=1
+\inhibitxspcode`$B!X(B=2
+\inhibitxspcode`$B!Y(B=1
+\inhibitxspcode`$B!Z(B=2
+\inhibitxspcode`$B![(B=1
+\inhibitxspcode`$B!=(B=0
+\inhibitxspcode`$B!A(B=0
+\inhibitxspcode`$B!D(B=0
+\inhibitxspcode`$B!o(B=0
+\inhibitxspcode`$B!k(B=1
+\inhibitxspcode`$B!l(B=1
+\inhibitxspcode`$B!m(B=1
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</plcore>
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/platex/pl209.dtx b/language/japanese/platex/pl209.dtx
new file mode 100644
index 0000000000..104ff0ea6c
--- /dev/null
+++ b/language/japanese/platex/pl209.dtx
@@ -0,0 +1,240 @@
+% \iffalse meta-comment
+%% File: pl209.dtx
+%
+% Copyright 1995,1996,1997 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% \fi
+%
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.0}{1995/03/28}{Based on latex209.dtx v0.39}
+% \changes{v1.0b}{1995/08/30}{Based on latex209.dtx v0.46}
+% \changes{v1.0c}{1995/11/21}{Add footnote relatex commands.}
+% \changes{v1.0d}{1997/01/17}{Only define for p\LaTeXe relatex codes.}
+% \changes{v1.0e}{1997/01/28}{$B=qBNJQ99$NFsJ8;z%3%^%s%I$r5lHG8_49$K$7$?!#(B}
+% \changes{v1.0f}{1997/06/25}{\cs{em}$B$GOBJ8$r6/D4=qBN$K(B}
+% \fi
+%
+% \iffalse
+%<*package>
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesFile{pl209.dtx}[1997/06/25 v1.0f Standard pLaTeX file]
+%</package>
+%<*driver>
+\documentclass{jltxdoc}
+\GetFileInfo{pl209.dtx}
+\title{p\LaTeXe\\2.09$B8_49%b!<%IMQ%^%/%m(B\space\fileversion}
+\author{Ken Nakano \& Hideaki Togashi}
+\date{$B:n@.F|!'(B\filedate}
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{\dst $BMQ%b%8%e!<%k(B}
+% \dst $B$G0J2<$N%b%8%e!<%kL>$r;XDj$9$k$3$H$G!"BP>]$H$J$kItJ,$r<h$j=P$9(B
+% $B$3$H$,$G$-$^$9!#(B
+%
+% \begin{center}
+% \begin{tabular}{ll}
+% pl209 & \file{pl209.def}$B%U%!%$%k$r@8@.(B\\
+% oldfonts & \file{oldpfont.sty}$B$r@8@.(B\\
+% style &
+% \begin{tabular}[t]{ll}
+% jarticle & \file{jarticle.sty}$B%U%!%$%k$r@8@.(B \\
+% jbook & \file{jbook.sty}$B%U%!%$%k$r@8@.(B\\
+% jreport & \file{jreport.sty}$B%U%!%$%k$r@8@.(B\\
+% tarticle & \file{tarticle.sty}$B%U%!%$%k$r@8@.(B \\
+% tbook & \file{tbook.sty}$B%U%!%$%k$r@8@.(B\\
+% treport & \file{treport.sty}$B%U%!%$%k$r@8@.(B
+% \end{tabular}
+% \end{tabular}
+% \end{center}
+%
+%
+% \section{2.09$B8_49%^%/%m(B}
+% 2.09$BMQ$N%3%^%s%IDj5A%U%!%$%k$,%m!<%I$5$l$?$H$-!"%a%C%;!<%8$r=PNO$7$^$9!#(B
+% $B$^$?!"(B\LaTeX{}$B$N(B2.09$B%3%^%s%I%^%/%mDj5A$r%m!<%I$7$^$9!#(B
+% \begin{macrocode}
+%<*pl209>
+\typeout{Entering pLaTeX 2.09 compatibility mode.}
+\input{latex209.def}
+%</pl209>
+% \end{macrocode}
+% $B%U%)%s%HA*Br%3%^%s%I$N%H%l!<%9$N$?$a$K(B\file{ptrace}$B%Q%C%1!<%8$r%m!<%I$7$^$9!#(B
+% \changes{v1.0e}{1997/02/20}{Typemiss:oldlfont from oldlfonts}
+% \begin{macrocode}
+%<oldfonts>\RequirePackage{oldlfont}
+%<pl209|oldfonts>\RequirePackage{ptrace}
+% \end{macrocode}
+%
+% \begin{macro}{\Rensuji}
+% \begin{macro}{\prensuji}
+% p\LaTeXe{}$B$G$O!"(B|\Rensuji|, |\prensuji|$B$NF0:n$r(B|\rensuji|$B%3%^%s%I$,(B
+% $B%+%P!<$7$F$$$^$9!#(B
+% \begin{macrocode}
+%<*pl209>
+\let\Rensuji\rensuji
+\let\prensuji\rensuji
+%</pl209>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@footnotemark}
+% \begin{macro}{\@makefnmark}
+% $B5SCm$N0u$r=PNO$9$k%^%/%m$r!"AH$_J}8~$K1~$8$F!"5SCm$NJ}8~$,JQ$o$k$h$&$K(B
+% $B$7$^$9!#(B
+% \begin{macrocode}
+%<*pl209>
+\def\@footnotemark{\leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\fi
+ \ifydir\@makefnmark
+ \else\hbox to\z@{\hskip-.25zw\raise2\cht\@makefnmark\hss}\fi
+ \ifhmode\spacefactor\@x@sf\fi\relax}
+\def\@makefnmark{\hbox{\ifydir $\m@th^{\@thefnmark}$
+ \else\hbox{\yoko$\m@th^{\@thefnmark}$}\fi}}
+%</pl209>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%<*pl209>
+\fontencoding{JY1}
+\fontfamily{mc}
+\fontsize{10}{15}
+%</pl209>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*pl209|oldfonts>
+\DeclareSymbolFont{mincho}{JY1}{mc}{m}{n}
+\DeclareSymbolFont{gothic}{JY1}{gt}{m}{n}
+\DeclareSymbolFontAlphabet\mathmc{mincho}
+\DeclareSymbolFontAlphabet\mathgt{gothic}
+\SetSymbolFont{mincho}{bold}{JY1}{gt}{m}{n}
+\jfam\symmincho
+% \end{macrocode}
+% \changes{v1.0e}{1997/01/29}{$BFsJ8;z=qBNJQ99%3%^%s%I$NF0:n$r5lHG$HF1Ey$K$7$?!#(B}
+% |\mc|$B$H(B|\gt|$B$O!"OBJ8%U%)%s%H$rJQ99$7$^$9$,!"2$J8%U%)%s%H$K$O1F6A$7$^$;$s!#(B
+% \begin{macrocode}
+\DeclareRobustCommand\mc{%
+ \kanjiencoding{\kanjiencodingdefault}%
+ \kanjifamily{\mcdefault}%
+ \kanjiseries{\kanjiseriesdefault}%
+ \kanjishape{\kanjishapedefault}%
+ \selectfont\mathgroup\symmincho}
+\DeclareRobustCommand\gt{%
+ \kanjiencoding{\kanjiencodingdefault}%
+ \kanjifamily{\gtdefault}%
+ \kanjiseries{\kanjiseriesdefault}%
+ \kanjishape{\kanjishapedefault}%
+ \selectfont\mathgroup\symgothic}
+% \end{macrocode}
+% |\bf|$B%3%^%s%I$O!"OBJ8%U%)%s%H$r%4%7%C%/$K$7!"2$J8%U%)%s%H$r%\!<%k%I$K(B
+% $B$7$^$9!#(B
+% \begin{macrocode}
+\DeclareRobustCommand\bf{\normalfont\bfseries\mathgroup\symbold\jfam\symgothic}
+% \end{macrocode}
+% |\rm|, |\sf|, |\sl|, |\sc|, |\it|, |\tt|$B$N3F%3%^%s%I$r!"2$J8%U%!%_%j$@$1$r(B
+% $B%G%U%)%k%H%U%)%s%H$+$iB0@-$rJQ99$9$k$h$&$K$7!"OBJ8%U%)%s%H$O1F6A$r(B
+% $B<u$1$J$$$h$&$K=$@5$7$^$9!#(B
+% \begin{macrocode}
+\DeclareRobustCommand\roman@normal{%
+ \romanencoding{\encodingdefault}%
+ \romanfamily{\familydefault}%
+ \romanseries{\seriesdefault}%
+ \romanshape{\shapedefault}%
+ \selectfont\ignorespaces}
+\DeclareRobustCommand\rm{\roman@normal\rmfamily\mathgroup\symoperators}
+\DeclareRobustCommand\sf{\roman@normal\sffamily\mathgroup\symsans}
+\DeclareRobustCommand\sl{\roman@normal\slshape\mathgroup\symslanted}
+\DeclareRobustCommand\sc{\roman@normal\scshape\mathgroup\symsmallcaps}
+\DeclareRobustCommand\it{\roman@normal\itshape\mathgroup\symitalic}
+\DeclareRobustCommand\tt{\roman@normal\ttfamily\mathgroup\symtypewriter}
+% \end{macrocode}
+%
+% \begin{macro}{\em}
+% \changes{v1.0f}{1997/06/25}{\cs{em}$B$GOBJ8$r6/D4=qBN$K(B}
+% |\em|$B%3%^%s%I$G!"OBJ8%U%)%s%H$b(B|\gt|$B$K@Z$jBX$($k$h$&$K$7$^$7$?!#(B
+% \begin{macrocode}
+\DeclareRobustCommand\em{%
+ \@nomath\em
+ \ifdim \fontdimen\@ne\font>\z@\mc\rm\else\gt\it\fi}
+%</pl209|oldfonts>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%<*pl209>
+\let\mcfam\symmincho
+\let\gtfam\symgothic
+\renewcommand\vpt {\edef\f@size{\@vpt}\rm\mc}
+\renewcommand\vipt {\edef\f@size{\@vipt}\rm\mc}
+\renewcommand\viipt {\edef\f@size{\@viipt}\rm\mc}
+\renewcommand\viiipt{\edef\f@size{\@viiipt}\rm\mc}
+\renewcommand\ixpt {\edef\f@size{\@ixpt}\rm\mc}
+\renewcommand\xpt {\edef\f@size{\@xpt}\rm\mc}
+\renewcommand\xipt {\edef\f@size{\@xipt}\rm\mc}
+\renewcommand\xiipt {\edef\f@size{\@xiipt}\rm\mc}
+\renewcommand\xivpt {\edef\f@size{\@xivpt}\rm\mc}
+\renewcommand\xviipt{\edef\f@size{\@xviipt}\rm\mc}
+\renewcommand\xxpt {\edef\f@size{\@xxpt}\rm\mc}
+\renewcommand\xxvpt {\edef\f@size{\@xxvpt}\rm\mc}
+%</pl209>
+% \end{macrocode}
+% $B$=$7$F!":G8e$K(B\file{pl209.cfg}$B$H$$$&%U%!%$%k$,$"$l$P!"$=$l$r%m!<%I$7$^$9!#(B
+% \begin{macrocode}
+%<pl209>\InputIfFileExists{pl209.cfg}{}{}
+% \end{macrocode}
+%
+%
+% \section{$B%9%?%$%k%U%!%$%k(B}
+% $B0J2<$O!"(Bp\LaTeX~2.09$B$G$NI8=`%9%?%$%k%U%!%$%k$G$9!#(B
+% p\LaTeXe{}$B$N%/%i%9%U%!%$%k$r%m!<%I$9$k$h$&$K$7$F$$$^$9!#(B
+% \begin{macrocode}
+%<*style>
+%<*jarticle|jbook|jreport|tarticle|tbook|treport>
+\NeedsTeXFormat{pLaTeX2e}
+%</jarticle|jbook|jreport|tarticle|tbook|treport>
+%<*jarticle>
+\@obsoletefile{jarticle.cls}{jarticle.sty}
+\LoadClass{jarticle}
+%</jarticle>
+%<*tarticle>
+\@obsoletefile{tarticle.cls}{tarticle.sty}
+\LoadClass{tarticle}
+%</tarticle>
+%<*jbook>
+\@obsoletefile{jbook.cls}{jbook.sty}
+\LoadClass{jbook}
+%</jbook>
+%<*tbook>
+\@obsoletefile{tbook.cls}{tbook.sty}
+\LoadClass{tbook}
+%</tbook>
+%<*jreport>
+\@obsoletefile{jreport.cls}{jreport.sty}
+\LoadClass{jreport}
+%</jreport>
+%<*treport>
+\@obsoletefile{treport.cls}{treport.sty}
+\LoadClass{treport}
+%</treport>
+%</style>
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/platex/pl209.ins b/language/japanese/platex/pl209.ins
new file mode 100644
index 0000000000..c4ba0d8393
--- /dev/null
+++ b/language/japanese/platex/pl209.ins
@@ -0,0 +1,32 @@
+\input docstrip
+\keepsilent
+\ifToplevel{\askonceonly}
+\usedir{tex/platex/base}
+
+\Msg{*** Generating the pLaTeX compatibility mode files ***}
+
+\preamble
+
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016-2018 Japanese TeX Development Community
+
+This file is part of the pLaTeX2e system (community edition).
+-------------------------------------------------------------
+
+\endpreamble
+
+\generate{
+ \file{pl209.def}{\from{pl209.dtx}{pl209}}
+ \file{oldpfont.sty}{\from{pl209.dtx}{oldfonts}}
+}
+
+\generate{
+ \file{jarticle.sty}{\from{pl209.dtx}{style,jarticle}}
+ \file{tarticle.sty}{\from{pl209.dtx}{style,tarticle}}
+ \file{jbook.sty}{\from{pl209.dtx}{style,jbook}}
+ \file{tbook.sty}{\from{pl209.dtx}{style,tbook}}
+ \file{jreport.sty}{\from{pl209.dtx}{style,jreport}}
+ \file{treport.sty}{\from{pl209.dtx}{style,treport}}
+}
+
+\endbatchfile
diff --git a/language/japanese/platex/platex-en.pdf b/language/japanese/platex/platex-en.pdf
new file mode 100644
index 0000000000..99c3e7200e
--- /dev/null
+++ b/language/japanese/platex/platex-en.pdf
Binary files differ
diff --git a/language/japanese/platex/platex.dtx b/language/japanese/platex/platex.dtx
new file mode 100644
index 0000000000..e559bdc473
--- /dev/null
+++ b/language/japanese/platex/platex.dtx
@@ -0,0 +1,1793 @@
+% \iffalse meta-comment
+%% File: platex.dtx
+%
+% Copyright 1995,1996 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016-2018 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% \fi
+%
+% \iffalse
+%<*driver|pldoc>
+\ifx\JAPANESEtrue\undefined
+ \expandafter\newif\csname ifJAPANESE\endcsname
+ \JAPANESEtrue
+\fi
+%</driver|pldoc>
+% \fi
+%
+% \setcounter{StandardModuleDepth}{1}
+% \makeatletter
+%\ifJAPANESE
+% \def\chuui{\@ifnextchar[{\@chuui}{\@chuui[$BCm0U!'(B]}}
+%\else
+% \def\chuui{\@ifnextchar[{\@chuui}{\@chuui[Attention: ]}}
+%\fi
+% \def\@chuui[#1]{\par\vskip.5\baselineskip
+% \noindent{\em #1}\par\bgroup\gtfamily\sffamily}
+% \def\endchuui{\egroup\vskip.5\baselineskip}
+% \makeatother
+%
+% \iffalse
+%<*driver|pldoc>
+\def\eTeX{$\varepsilon$-\TeX}
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+%</driver|pldoc>
+% \fi
+%
+% \StopEventually{}
+%
+% \iffalse
+%\ifJAPANESE
+% \changes{v1.0}{1995/05/08}{$B:G=i$N%P!<%8%g%s(B}
+% \changes{v1.0a}{1995/08/25}{$B8_49@-$K$D$$$F!"(B\dst{}$B$N;H$$J}!";29MJ88%$rDI2C(B}
+% \changes{v1.0b}{1996/02/01}{\file{omake-sh.ins}, \file{omake-pl.ins}$B$r(B
+% \dst{}$B$NJQ99$K$H$b$J$&JQ99$r$7$?(B}
+% \changes{v1.0c}{1997/01/23}{\dst{}$B$K$H$b$J$&JQ99(B}
+% \changes{v1.0c}{1997/01/23}{\LaTeX\ \textt{!<1996/12/01!>}$B$K9g$o$;$F=$@5(B}
+% \changes{v1.0c}{1997/01/23}{gind.ist$B$H(Bgglo.ist$B$r(B
+% \$TEXMF/tex/latex2e/base$B%G%#%l%/%H%j$+$i%3%T!<$7$J$$$h$&$K$7$?(B}
+% \changes{v1.0c}{1997/01/25}{pldoc.dic$B$r(Bfilecontents$B4D6-$K$h$j:n@.(B}
+% \changes{v1.0c}{1997/01/29}{\file{pltpatch.ltx}$B$r(B\file{plpatch.ltx}$B$KL>>NJQ99(B}
+% \changes{v1.0d}{2016/01/27}{\pLaTeXe{}$B$KIUB0$9$k%U%!%$%k$N@bL@$r99?7(B}
+% \changes{v1.0d}{2016/01/27}{rm$B%3%^%s%I<B9TA0$KB8:_3NG'$9$k$h$&$K$7$?(B}
+% \changes{v1.0e}{2016/02/16}{platexrelease$B$N@bL@$rDI2C(B}
+% \changes{v1.0f}{2016/04/12}{$B%I%-%e%a%s%H$r99?7(B}
+% \changes{v1.0g}{2016/05/07}{$B%U%)!<%^%C%H:n@.;~$K(B\LaTeX{}$B$N%P%J!<$r0lC6J]B8(B}
+% \changes{v1.0h}{2016/05/08}{$B%I%-%e%a%s%H$+$i(B\file{plpatch.ltx}$B$r=|30(B}
+% \changes{v1.0i}{2016/05/12}{$B0l;~%3%^%s%I(B\cs{orgdump}$B$r:G=*E*$KL$Dj5A$X(B}
+% \changes{v1.0j}{2016/05/20}{pfltrace$B$N@bL@$rDI2C(B}
+% \changes{v1.0k}{2016/05/21}{$BJQ99MzNr$b=PNO$9$k$h$&$K$7$?(B}
+% \changes{v1.0l}{2016/06/19}{$B%Q%C%A%l%Y%k$r(B\file{plvers.dtx}$B$+$i<hF@(B}
+% \changes{v1.0m}{2016/08/26}{\file{platex.cfg}$B$NFI$_9~$_$r(B
+% \file{plcore.ltx}$B$+$i(B\file{platex.ltx}$B$X0\F0(B}
+% \changes{v1.0n}{2016/09/14}{\LaTeX{}$B$N%P%J!<$NJ]B8$7$+$?$r2~NI(B}
+% \changes{v1.0o}{2017/09/24}{$B%Q%C%A%l%Y%k$,Ii$N?t$N>l9g$r(Bpre-release$B07$$$X(B}
+% \changes{v1.0p}{2017/11/11}{\LaTeX{}$B$N%P%J!<$rJ]B8$9$k%3!<%I$r(B
+% \file{platex.ltx}$B$+$i(B\file{plcore.ltx}$B$X0\F0(B}
+% \changes{v1.0q}{2017/11/29}{$B1Q8lHG%I%-%e%a%s%H$rDI2C(B}
+% \changes{v1.0r}{2017/12/02}{$B1Q8l$N;29MJ88%$bDI2C(B}
+% \changes{v1.0s}{2017/12/05}{$B%G%U%)%k%H@_Dj%U%!%$%k$NFI$_9~$_$r(B
+% \file{plcore.ltx}$B$+$i(B\file{platex.ltx}$B$X0\F0(B}
+% \changes{v1.0t}{2018/02/07}{ascmac$B%Q%C%1!<%8$rFHN)$5$;$?(B}
+% \changes{v1.0u}{2018/02/18}{nidanfloat$B%Q%C%1!<%8$rFHN)$5$;$?(B}
+% \changes{v1.0v}{2018/04/06}{$B:G?7$N(Bsource2e$B$X$NDI?o(B}
+% \changes{v1.0w}{2018/04/08}{$B0BA4$N$?$a%U%)!<%^%C%H:n@.;~$N(B
+% $B%P%J!<I=<($r$d$a$?(B}
+% \changes{v1.0x}{2018/09/03}{$B%I%-%e%a%s%H$r99?7(B}
+% \changes{v1.0x}{2018/09/03}{platexcheat$B$K8@5Z(B}
+% \changes{v1.0x}{2018/09/03}{plautopatch$B$K8@5Z(B}
+% \changes{v1.0y}{2018/09/22}{$B:G=*99?7F|$r(B\file{pldoc.pdf}$B$KI=<((B}
+%\else
+% \changes{v1.0}{1995/05/08}{first edition}
+% \changes{v1.0a}{1995/08/25}{Added 'Compatibility', `Usage of \dst{}'
+% and `References'}
+% \changes{v1.0b}{1996/02/01}{Adjusted for the latest
+% \dst\ (\file{omake-sh.ins} and \file{omake-pl.ins}.}
+% \changes{v1.0c}{1997/01/23}{Adjusted for the latest \dst.}
+% \changes{v1.0c}{1997/01/23}{Adjusted for \LaTeX\ \textt{!<1996/12/01!>}.}
+% \changes{v1.0c}{1997/01/23}{Don't copy gind.ist and gglo.ist from
+% \$TEXMF/tex/latex2e/base directory.}
+% \changes{v1.0c}{1997/01/25}{Add to filecontents environment for pldoc.dic.}
+% \changes{v1.0c}{1997/01/29}{Rename \file{pltpatch.ltx} to \file{plpatch.ltx}.}
+% \changes{v1.0d}{2016/01/27}{Updated descriptions of \pLaTeXe\ files}
+% \changes{v1.0d}{2016/01/27}{Add -e test before rm command}
+% \changes{v1.0e}{2016/02/16}{Add a description of platexrelease}
+% \changes{v1.0f}{2016/04/12}{Update document.}
+% \changes{v1.0g}{2016/05/07}{Save \LaTeX\ banner}
+% \changes{v1.0h}{2016/05/08}{Exclude \file{plpatch.ltx} from the document}
+% \changes{v1.0i}{2016/05/12}{Undefine temporary command
+% \cs{orgdump} in the end.}
+% \changes{v1.0j}{2016/05/20}{Add description of `pfltrace'}
+% \changes{v1.0k}{2016/05/21}{Print also changes.}
+% \changes{v1.0l}{2016/06/19}{Get the patch level from \file{plvers.dtx}}
+% \changes{v1.0m}{2016/08/26}{Moved loading \file{platex.cfg}
+% from \file{plcore.ltx} to \file{platex.ltx}}
+% \changes{v1.0n}{2016/09/14}{Improved banner saving method}
+% \changes{v1.0o}{2017/09/24}{Allow negative patch level for pre-release}
+% \changes{v1.0p}{2017/11/11}{Moved banner saving code from
+% \file{platex.ltx} to \file{plcore.ltx}}
+% \changes{v1.0q}{2017/11/29}{New English documentation added!}
+% \changes{v1.0r}{2017/12/02}{English references added}
+% \changes{v1.0s}{2017/12/05}{Moved loading default settings
+% from \file{plcore.ltx} to \file{platex.ltx}}
+% \changes{v1.0t}{2018/02/07}{Moved ascmac package to separate bundle}
+% \changes{v1.0u}{2018/02/18}{Moved nidanfloat package to separate bundle}
+% \changes{v1.0v}{2018/04/06}{Sync with the latest \file{source2e.tex}}
+% \changes{v1.0w}{2018/04/08}{Stop showing banner during
+% format generation for safety}
+% \changes{v1.0x}{2018/09/03}{Update document.}
+% \changes{v1.0x}{2018/09/03}{Mention platexcheat (Japanese only).}
+% \changes{v1.0x}{2018/09/03}{Mention plautopatch.}
+% \changes{v1.0y}{2018/09/22}{Show last update info on \file{pldoc.pdf}}
+%\fi
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{platex.dtx}[2018/09/22 v1.0y pLaTeX document file]
+% \iffalse
+\documentclass{jltxdoc}
+\usepackage{plext}
+\GetFileInfo{platex.dtx}
+\ifJAPANESE
+\title{\pLaTeXe{}$B$K$D$$$F(B}
+\author{$BCfLn(B $B8-(B \& $BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#(B}
+\date{$B:n@.F|!'(B\filedate}
+\renewcommand{\refname}{$B;29MJ88%(B}
+\GlossaryPrologue{\section*{$BJQ99MzNr(B}%
+ \markboth{$BJQ99MzNr(B}{$BJQ99MzNr(B}%
+ \addcontentsline{toc}{section}{$BJQ99MzNr(B}}
+\else
+\title{About \pLaTeXe{}}
+\author{Ken Nakano \& Japanese \TeX\ Development Community}
+\date{Date: \filedate}
+\renewcommand{\refname}{References}
+\GlossaryPrologue{\section*{Change History}%
+ \markboth{Change History}{Change History}%
+ \addcontentsline{toc}{section}{Change History}}
+\fi
+\makeatletter
+\ifJAPANESE
+\def\levelchar{>$B!&(B}
+\fi
+\def\changes@#1#2#3{%
+ \let\protect\@unexpandable@protect
+ \edef\@tempa{\noexpand\glossary{#2\space#1\levelchar
+ \ifx\saved@macroname\@empty
+% \space\actualchar\generalname: %% comment out (platex.dtx only)
+ \else
+ \expandafter\@gobble
+ \saved@macroname\actualchar
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar:
+ \fi
+ #3}}%
+ \@tempa\endgroup\@esphack}
+\makeatother
+\RecordChanges
+\begin{document}
+ \MakeShortVerb{\+}
+ \maketitle
+ \DocInput{\filename}
+ \StopEventually{\end{document}}
+ \clearpage
+ % Make TeX shut up.
+ \hbadness=10000
+ \newcount\hbadness
+ \hfuzz=\maxdimen
+ \PrintChanges
+ \let\PrintChanges\relax
+\end{document}
+%</driver>
+% \fi
+%
+%
+%\ifJAPANESE
+% \changes{v1.0f}{2016/04/12}{$B%I%-%e%a%s%H$r99?7(B}
+% \changes{v1.0k}{2016/05/21}{$BJQ99MzNr$b=PNO$9$k$h$&$K$7$?(B}
+% \changes{v1.0q}{2017/11/29}{$B1Q8lHG%I%-%e%a%s%H$rDI2C(B}
+% \changes{v1.0x}{2018/09/03}{$B%I%-%e%a%s%H$r99?7(B}
+%\else
+% \changes{v1.0f}{2016/04/12}{Update document.}
+% \changes{v1.0k}{2016/05/21}{Print also changes.}
+% \changes{v1.0q}{2017/11/29}{New English documentation added!}
+% \changes{v1.0x}{2018/09/03}{Update document.}
+%\fi
+%\ifJAPANESE
+% \begin{chuui}
+% $B$3$NJ8=q$G$O!V%3%_%e%K%F%#HG(B\pLaTeXe{}$B!W$K$D$$$F4JC1$K@bL@$7$^$9!#(B
+% $B3t<02q<R%"%9%-!<!J8=%"%9%-!<!&%a%G%#%"%o!<%/%9(B
+% \footnote{$B%"%9%-!<F|K\8l(B\TeX{}$B!J(B\pTeX{}$B!K!"(B
+% \texttt{http://ascii.asciimw.jp/pb/ptex/}}$B!K$,G[I[$7$F$$$k(B
+% \pLaTeXe{}$B!J0J2<!"%"%9%-!<HG(B\pLaTeXe{}$B!K$H$O0[$J$kFbMF$G$9$N$G!"(B
+% $BCm0U$7$F$/$@$5$$!#(B
+% \end{chuui}
+%\else
+% \begin{chuui}[]
+% This document provides a brief description of \pLaTeXe, the Japanese
+% extended version of \LaTeXe. Current maintainer of
+% \pLaTeXe\ is Japanese \TeX\ Development Community.
+% \end{chuui}
+%\fi
+%
+%\ifJAPANESE
+% 2010$BG/0J9_!"%"%9%-!<(B\pTeX{}$B$O!"9q:]E*$K9-$/;H$o$l$F$$$k(B\TeX\ Live$B$H$$$&(B
+% $B%G%#%9%H%j%S%e!<%7%g%s$K<h$j9~$^$l!"$=$3$GFH<+$N2~NI$d;EMMJQ99$,2C$($i$l(B
+% $B$F$-$^$7$?!#:G6a!J(B2011$BG/0J9_!K$N(B\TeX\ Live$B$d(BW32\TeX{}$B$G$O!"(B\pLaTeX{}$B$b(B
+% $B85!9$N(B\pTeX{}$B$G$O$J$/!"$=$N3HD%HG(B\epTeX{}$B$r%(%s%8%s$KMQ$$$k$h$&$K$J$C$F(B
+% $B$$$^$9!#$^$?!"(B\pLaTeX{}$B$N%Y!<%9$G$"$k(B\LaTeX{}$B$b99?7$,?J$a$i$l$F$$$^$9!#(B
+%
+% $B$3$&$7$?N.$l$K$"$o$;$??7$7$$(B\pLaTeX{}$B$H$7$F!"%"%9%-!<HG$+$i(Bfork$B$7$F(B
+% $BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#(B (Japanese \TeX\ Development Community) $B$,(B
+% $BG[I[$7$F$$$k$b$N$,!"%3%_%e%K%F%#HG(B\pLaTeX{}$B$G$9!#3+H/Cf$NHG$O(BGitHub$B$N(B
+% $B%j%]%8%H%j(B\footnote{\texttt{https://github.com/texjporg/platex}}$B$G(B
+% $B4IM}$7$F$$$^$9!#%3%_%e%K%F%#HG(B\pLaTeX{}$B$O%"%9%-!<HG$H$O0[$J$j$^$9$N$G!"(B
+% $B%P%0%l%]!<%H$O%"%9%-!<08$F$G$O$J$/!"F|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$KJs9p(B
+% $B$7$F$/$@$5$$!#(B\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+%
+% $B$3$NJ8=q(B(platex.pdf)$B$O%3%_%e%K%F%#HG(B\pLaTeX{}$B$N35MW$r@bL@$7$?$b$N$G$9(B
+% $B$,!"FbMF$O%"%9%-!<HG!J(B1995$BG/:"!K$+$i$[$H$s$IJQ$o$C$F$$$^$;$s$N$G!"(B
+% $B:#$G$ONr;KE*$JJ8=q$H$$$&$3$H$K$7$F$*$-$^$9!#(B
+% $B:G6a$N(B\pLaTeX{}$B$N99?7FbMF$O(B\pLaTeX{}$B%K%e!<%9!J%"%9%-!<HG!'(Bplnews*.pdf$B!"(B
+% $B%3%_%e%K%F%#HG!'(Bplnewsc*.pdf$B!K$r;2>H$7$F$/$@$5$$!#$^$?!"(B
+% $B<B:]$N(B\pLaTeX{}$B$N%=!<%9%3!<%I$O(Bpldoc.pdf$B$G@bL@$7$F$$$^$9!#(B
+%\else
+% \def\JLaTeX{\leavevmode\lower.5ex\hbox{J}\kern-.15em\LaTeX}
+% \pLaTeX\ is a Japanese \LaTeX\ format, which is adjusted/extended
+% to be more suitable for writing Japanese documents.
+% It requires \pTeX, a \TeX\ engine with extensions for
+% Japanese typesetting, which is designed for high-quality
+% Japanese book ``p''ublishing.\footnote{There is another
+% old implementation of Japanese \LaTeX, called
+% \JLaTeX\ (not available in \TeX\ Live).
+% Also, MiK\TeX\ has another program \texttt{platex}, but
+% it has nothing to do with our Japanese \pLaTeX!} The developent of
+% both \pTeX\ and \pLaTeX\ was done by ASCII Corporation (and its
+% successor ASCII Media Works\footnote{The \pTeX\ website:
+% \texttt{http://ascii.asciimw.jp/pb/ptex/} (closed in 2016).}),
+% so they are often refered to as ``ASCII \pTeX'' and ``ASCII \pLaTeX''
+% respectively.
+%
+% In 2010, ASCII \pTeX\ was incorporated into the
+% world-wide \TeX\ distribution, \TeX\ Live. Since then, \pTeX\ has
+% been maintained/improved/changed along with \TeX\ Live sources.
+% In recent versions of \TeX\ Live and W32\TeX\ (arround 2011),
+% the default engine of \pLaTeX\ changed from original \pTeX\ to
+% \epTeX\ (\pTeX\ with \eTeX\ extension).
+% Also, the original \LaTeX\ itself is also frequently updated.
+% On the other hand, \pLaTeX\ remained unchanged since 2006,
+% which resulted in some incompatibility and limitations.
+%
+% To follow these upstream changes, we (Japanese \TeX\ Development
+% Community\footnote{\texttt{https://texjp.org}}) decided to fork
+% ASCII \pLaTeX\ and distribute the ``community edition.''
+% The development version is available from
+% GitHub repository\footnote{\texttt{https://github.com/texjporg/platex}}.
+% The forked community edition is different from the original ASCII
+% edition, so any bug reports and requests should be sent to
+% Japanese \TeX\ Development Community, using GitHub Issue system.
+%
+% This document (platex-en.pdf) is a brief explanation of
+% the \pLaTeXe\ community edition. It is somewhat of a historical
+% document now, since \pLaTeXe\ came into existence in 1995
+% (although the English translation has been done by
+% Japanese \TeX\ Development Community since 2017).
+% The detail of source codes are described separately in pldoc-en.pdf.
+%\fi
+%
+%
+% \clearpage
+%
+%\ifJAPANESE
+% \section{$B$3$NJ8=q$K$D$$$F(B}\label{platex:intro}
+% $B$3$NJ8=q$O(B\pLaTeXe{}$B$N35MW$r<($7$F$$$^$9$,!";H$$J}$N%,%$%I$G$O$"$j$^$;$s!#(B
+% \pLaTeXe{}$B$N5!G=A4HL$K$D$$$F$O!"(B\cite{platex2e-book}$B$r;2>H$7$F$/$@$5$$!#(B
+% $B$^$?!"(B\cite{tate-book}$B$G@bL@$5$l$F$$$?=DAH8~$1$N3HD%%3%^%s%I$K(B
+% $B$D$$$F$O!"(B\file{pldoc.pdf}$B$NCf$N(B\file{plext.dtx}$B$N9`L\$r;2>H$7$F$/$@$5$$!#(B
+%
+% $BF|K\8l$NAHHG=hM}$K$D$$$F$O!"(B
+% \pTeX{}$B!J$"$k$$$O$=$NA0?H$N!VF|K\8l(B\TeX{}$B!W!K$K4X$9$kJ88%(B
+% \cite{jtex-tech}$B$d(B\cite{ajt2008okumura}$B!J1Q8l!K(B, \cite{tb29hamano}$B!J1Q8l!K$b(B
+% $BJ;$;$F$4;2>H$/$@$5$$!#(B
+%
+% \LaTeX{}$B$N5!G=$K$D$$$F$O!"(B\cite{latex-book2}$B$d(B\cite{latex-comp}$B$J$I$r(B
+% $B;2>H$7$F$/$@$5$$!#?7$7$$5!G=$K$D$$$F$O(B\file{usrguide.tex}$B$r;2>H$7$F$/$@$5$$!#(B
+% \pLaTeX{}$B$N%3%^%s%I0lMw$O!V(B\pLaTeXe{}$B%A!<%H%7!<%H!W(B(platexsheet.pdf) $B$^$?$O(B
+% $B$=$N(B\textsf{jsclasses}$BHG(B (platexsheet-jsclasses.pdf) $B$,;29M$K(B
+% $B$J$k$G$7$g$&(B\footnote{$BN><T$N(BPDF$B$H$b!"%3%^%s%I%i%$%s$G(B
+% \texttt{texdoc -l platexcheat}$B$r<B9T$9$k$HI=<($5$l$^$9!#(B}$B!#(B
+% \changes{v1.0}{1995/05/08}{$B:G=i$N%P!<%8%g%s(B}
+% \changes{v1.0a}{1995/08/25}{$B8_49@-$K$D$$$F!"(B\dst{}$B$N;H$$J}!";29MJ88%$rDI2C(B}
+% \changes{v1.0r}{2017/12/02}{$B1Q8l$N;29MJ88%$bDI2C(B}
+% \changes{v1.0x}{2018/09/03}{platexcheat$B$K8@5Z(B}
+%\else
+% \section{Introduction to this document}\label{platex:intro}
+% This document briefly describes \pLaTeXe, but is not a manual of \pLaTeXe.
+% For the basic functions of \pLaTeXe, see \cite{platex2e-book} (in Japanese).
+% For extensions of some commands for vertical writing (which were first
+% described in \cite{tate-book} in Japanese), see \file{plext.dtx} section
+% in \file{pldoc-en.pdf}.
+%
+% For Japanese typesetting, please refer to the documentation of \pTeX\ (or
+% ``Japanese \TeX''; the preliminary version of \pTeX),
+% \cite{jtex-tech} (in Japanese), \cite{ajt2008okumura} (in English)
+% and \cite{tb29hamano} (in English).
+% \changes{v1.0}{1995/05/08}{first edition}
+% \changes{v1.0a}{1995/08/25}{Added 'Compatibility', `Usage of \dst{}'
+% and `References'}
+% \changes{v1.0r}{2017/12/02}{English references added}
+% \changes{v1.0x}{2018/09/03}{Mention platexcheat (Japanese only).}
+%\fi
+%
+%\ifJAPANESE
+% $B$3$NJ8=q$N9=@.$O<!$N$h$&$K$J$C$F$$$^$9!#(B
+%
+% \begin{quote}
+% \begin{description}
+% \item[$BBh(B\ref{platex:intro}$B@a(B]
+% $B$3$N@a$G$9!#$3$NJ8=q$K$D$$$F$N35MW$r=R$Y$F$$$^$9!#(B
+%
+% \item[$BBh(B\ref{platex:plcore}$B@a(B]
+% \pLaTeXe{}$B$G3HD%$7$?5!G=$K$D$$$F$N35MW$G$9!#(B
+% $BIUB0$N%/%i%9%U%!%$%k$d%Q%C%1!<%8%U%!%$%k$K$D$$$F$b4JC1$K(B
+% $B@bL@$7$F$$$^$9!#(B
+%
+% \item[$BBh(B\ref{platex:compatibility}$B@a(B]
+% $B8=:_$N%P!<%8%g%s$N(B\pLaTeX{}$B$H5l%P!<%8%g%s!"$"$k$$$O85$H$J$C$F$$$k(B
+% \LaTeX{}$B$H$N8_49@-$K$D$$$F=R$Y$F$$$^$9!#(B
+%
+% \item[$BIUO?(B\ref{app:dst}]
+% $B$3$NJ8=q%=!<%9(B(platex.dtx)$B$N(B
+% \dst{}$B$N$?$a$N%*%W%7%g%s$K$D$$$F=R$Y$F$$$^$9!#(B
+%
+% \item[$BIUO?(B\ref{app:pldoc}]
+% \pLaTeXe{}$B$N(Bdtx$B%U%!%$%k$r$^$H$a$F!"0l$D$N%=!<%9%3!<%I@bL@=q$K(B
+% $B$9$k$?$a$NJ8=q%U%!%$%k$N@bL@$r$7$F$$$^$9!#(B
+%
+% \item[$BIUO?(B\ref{app:omake}]
+% $BIUO?(B\ref{app:pldoc}$B$G@bL@$7$?J8=q%U%!%$%k$r=hM}$9$k(Bsh$B%9%/%j%W%H!J<j=g!K!"(B
+% \dst{}$BJ8=q%U%!%$%kFb$NF~$l;R$NBP1~$rD4$Y$k(Bperl$B%9%/%j%W%H$J$I$K$D$$$F(B
+% $B@bL@$7$F$$$^$9!#(B
+% \end{description}
+% \end{quote}
+%\else
+% This document consists of following parts:
+%
+% \begin{quote}
+% \begin{description}
+% \item[Section \ref{platex:intro}]
+% This section; describes this document itself.
+%
+% \item[Section \ref{platex:plcore}]
+% Brief explanation of extensions in \pLaTeXe.
+% Also describes the standard classes and packages.
+%
+% \item[Section \ref{platex:compatibility}]
+% The compatibility note for users of the old version of
+% \pLaTeXe\ or those of the original \LaTeXe.
+%
+% \item[Appendix \ref{app:dst}]
+% Describes \dst\ Options for this document.
+%
+% \item[Appendix \ref{app:pldoc}]
+% Description of `pldoc.tex' (counterpart for `source2e.tex' in \LaTeXe).
+%
+% \item[Appendix \ref{app:omake}]
+% Description of a shell script to process `pldoc.tex', and
+% a tiny perl program to check \dst\ guards, etc.
+% \end{description}
+% \end{quote}
+%\fi
+%
+%
+%\ifJAPANESE
+% \section{\pLaTeXe{}$B$N5!G=$K$D$$$F(B}\label{platex:plcore}
+% \pLaTeXe{}$B$,Ds6!$9$k%U%!%$%k$O!"<!$N(B3$B<oN`$KJ,N`$9$k$3$H$,$G$-$^$9!#(B
+%
+% \begin{itemize}
+% \item $B%U%)!<%^%C%H%U%!%$%k(B
+% \item $B%/%i%9%U%!%$%k(B
+% \item $B%Q%C%1!<%8%U%!%$%k(B
+% \end{itemize}
+%
+% $B%U%)!<%^%C%H%U%!%$%k$K$O!"4pK\E*$J5!G=$,Dj5A$5$l$F$*$j!"(B
+% \pLaTeXe{}$B$N3K$H$J$k%U%!%$%k$G$9!#(B
+% $B$3$N%U%!%$%k$KDj5A$5$l$F$$$k%^%/%m$O!"<B9T;~$NB.EY$r9b$a$k$?$a$K!"(B
+% $B$"$i$+$8$a(B\TeX{}$B$NFbIt7A<0$N7A$GJ]B8$5$l$F$$$^$9!#(B
+%
+% $B%/%i%9%U%!%$%k$OJ8=q$N%l%$%"%&%H$r@_Dj$9$k%U%!%$%k!"(B
+% $B%Q%C%1!<%8%U%!%$%k$O%^%/%m$N3HD%$rDj5A$9$k%U%!%$%k$G$9!#(B
+% $BA0<T$O(B|\documentclass|$B%3%^%s%I$rMQ$$$FFI$_9~$_!"(B
+% $B8e<T$O(B|\usepackage|$B%3%^%s%I$rMQ$$$FFI$_9~$_$^$9!#(B
+%
+% \begin{chuui}[$B8E$$(B\pLaTeX~2.09$B%f!<%6$X$NCm0U!'(B]\normalfont
+% $B%/%i%9%U%!%$%k$H%Q%C%1!<%8%U%!%$%k$O!"=>Mh!"%9%?%$%k%U%!%$%k$H8F$P$l$F$$$?(B
+% $B$b$N$G$9!#(B\LaTeXe{}$B$G$O$=$l$i$r!"%l%$%"%&%H$K4X$9$k$b$N$r%/%i%9%U%!%$%k$H(B
+% $B8F$S!"%^%/%m$N3HD%$r$9$k$b$N$r%Q%C%1!<%8%U%!%$%k$H8F$s$G6hJL$9$k$h$&$K(B
+% $B$J$j$^$7$?!#(B
+% \end{chuui}
+%\else
+% \section{About Functions of \pLaTeXe}\label{platex:plcore}
+% The structure of \pLaTeXe\ is similar to that of \LaTeXe;
+% it consists of 3 types of files: a format (platex.ltx),
+% classes and packages.
+%\fi
+%
+%\ifJAPANESE
+% \subsection{$B%U%)!<%^%C%H%U%!%$%k(B}
+% \pLaTeX{}$B$N%U%)!<%^%C%H%U%!%$%k$r:n@.$9$k$K$O!"(B
+% $B%=!<%9%U%!%$%k(B``platex.ltx''$B$r(B\epTeX{}$B$N(BINI$B%b!<%I$G=hM}$7$^$9(B
+% \footnote{2016$BG/0JA0$O(B\pTeX{}$B$H(B\epTeX{}$B$N$I$A$i$G$b%U%)!<%^%C%H$r:n@.$9$k(B
+% $B$3$H$,$G$-$^$7$?$,!"(B2017$BG/$K(B\LaTeX{}$B$,(B\eTeX{}$BI,?\$H$J$C$?$3$H$KH<$$!"(B
+% \pLaTeX{}$B$b(B\epTeX{}$B$,I,?\$H$J$j$^$7$?!#(B}$B!#(B
+% $B$?$@$7!"(B\TeX\ Live$B$d(BW32\TeX{}$B$G$O$3$N=hM}$r4JC1$K$9$k(B|fmtutil-sys|$B$"$k$$$O(B
+% |fmtutil|$B$H$$$&%W%m%0%i%`$,MQ0U$5$l$F$$$^$9!#(B
+% $B0J2<$r<B9T$9$l$P!"%U%)!<%^%C%H%U%!%$%k(B\file{platex.fmt}$B$,:n@.$5$l$^$9!#(B
+%\else
+% \subsection{About the Format}
+% To make a format for \pLaTeX,
+% process ``platex.ltx'' with INI mode of \epTeX.\footnote{Formerly
+% both \pTeX\ and \epTeX\ can make the format file for \pLaTeX, however,
+% it's not true anymore because \LaTeX\ requires \eTeX\ since 2017.}
+% A handy command `fmtutil-sys' (or `fmtutil') for this purpose
+% is available in \TeX\ Live. The following command generates \file{platex.fmt}.
+%\fi
+%\begin{verbatim}
+% fmtutil-sys --byfmt platex
+%\end{verbatim}
+%
+%\ifJAPANESE
+% $B<!$N%j%9%H$,!"(B\file{platex.ltx}$B$NFbMF$G$9!#(B
+% $B$?$@$7!"$3$N%P!<%8%g%s$G$O!"(B\LaTeX{}$B$+$i(B\pLaTeX{}$B$X$N3HD%$r(B
+% \file{plcore.ltx}$B$r%m!<%I$9$k$3$H$G9T$J$$!"(B
+% \file{latex.ltx}$B$K$OD>@\!"<j$r2C$($J$$$h$&$K$7$F$$$^$9!#(B
+% $B$7$?$,$C$F(B\file{platex.ltx}$B$O$H$F$bC;$$$b$N$H$J$C$F$$$^$9!#(B
+% \file{latex.ltx}$B$K$O(B\LaTeX{}$B$N%3%^%s%I$,!"(B
+% \file{plcore.ltx}$B$K$O(B\pLaTeX{}$B$G3HD%$7$?%3%^%s%I$,Dj5A$5$l$F$$$^$9!#(B
+%\else
+% The content of \file{platex.ltx} is shown below.
+% In the current version of \pLaTeX,
+% first we simply load \file{latex.ltx} and
+% modify/extend some definitions by loading \file{plcore.ltx}.
+%\fi
+% \begin{macrocode}
+%<*plcore>
+% \end{macrocode}
+%
+%\ifJAPANESE
+% \file{latex.ltx}$B$NKvHx$G;H$o$l$F$$$k(B|\dump|$B$r$$$C$?$sL58z2=$7$^$9!#(B
+%\else
+% Temporarily disable |\dump| at the end of \file{latex.ltx}.
+%\fi
+% \begin{macrocode}
+\let\orgdump\dump
+\let\dump\relax
+% \end{macrocode}
+%
+%\ifJAPANESE
+% \file{latex.ltx}$B$rFI$_9~$_$^$9!#(B
+% \TeX\ Live$B$NI8=`E*%$%s%9%H!<%k$G$O!"$3$NCf$G(BBabel$BM3Mh$N%O%$%U%M!<%7%g%s!&(B
+% $B%Q%?!<%s(B\file{hyphen.cfg}$B$,FI$_9~$^$l$k$O$:$G$9!#(B
+% \changes{v1.0g}{2016/05/07}{$B%U%)!<%^%C%H:n@.;~$K(B\LaTeX{}$B$N%P%J!<$r0lC6J]B8(B}
+% \changes{v1.0n}{2016/09/14}{\LaTeX{}$B$N%P%J!<$NJ]B8$7$+$?$r2~NI(B}
+% \changes{v1.0p}{2017/11/11}{\LaTeX{}$B$N%P%J!<$rJ]B8$9$k%3!<%I$r(B
+% \file{platex.ltx}$B$+$i(B\file{plcore.ltx}$B$X0\F0(B}
+%\else
+% Load \file{latex.ltx} here.
+% Within the standard installation of \TeX\ Live, \file{hyphen.cfg}
+% provided by ``Babel'' package will be used.
+% \changes{v1.0g}{2016/05/07}{Save \LaTeX\ banner}
+% \changes{v1.0n}{2016/09/14}{Improved banner saving method}
+% \changes{v1.0p}{2017/11/11}{Moved banner saving code from
+% \file{platex.ltx} to \file{plcore.ltx}}
+%\fi
+% \begin{macrocode}
+\input latex.ltx
+% \end{macrocode}
+%
+%\ifJAPANESE
+% \file{plcore.ltx}$B$rFI$_9~$_$^$9!#(B
+%\else
+% Load \file{plcore.ltx}.
+%\fi
+% \begin{macrocode}
+\typeout{**************************^^J%
+ *^^J%
+ * making pLaTeX format^^J%
+ *^^J%
+ **************************}
+\makeatletter
+\input plcore.ltx
+% \end{macrocode}
+%
+%\ifJAPANESE
+% $B%U%)%s%H4XO"$N%G%U%)%k%H@_Dj%U%!%$%k$G$"$k!"(B
+% \file{pldefs.ltx}$B$rFI$_9~$_$^$9!#(B
+% \TeX{}$B$NF~NO%U%!%$%k8!:w%Q%9$K@_Dj$5$l$F$$$k(B
+% $B%G%#%l%/%H%j$K(B\file{pldefs.cfg}$B%U%!%$%k$,$"$k>l9g$O!"(B
+% $B$=$N%U%!%$%k$r;H$$$^$9!#(B
+% \changes{v1.0s}{2017/12/05}{$B%G%U%)%k%H@_Dj%U%!%$%k$NFI$_9~$_$r(B
+% \file{plcore.ltx}$B$+$i(B\file{platex.ltx}$B$X0\F0(B}
+%\else
+% Load font-related default settings, \file{pldefs.ltx}.
+% If a file \file{pldefs.cfg} is found, then that file will be
+% used instead.
+% \changes{v1.0s}{2017/12/05}{Moved loading default settings
+% from \file{plcore.ltx} to \file{platex.ltx}}
+%\fi
+% \begin{macrocode}
+\InputIfFileExists{pldefs.cfg}
+ {\typeout{*************************************^^J%
+ * Local config file pldefs.cfg used^^J%
+ *************************************}}%
+ {\input{pldefs.ltx}}
+% \end{macrocode}
+%
+%\ifJAPANESE
+% $B0JA0$N%P!<%8%g%s$G$O!"%U%)!<%^%C%H:n@.;~$K(B\pLaTeX{}$B$N%P!<%8%g%s$,(B
+% $B$o$+$k$h$&$K!"C<Kv$KI=<($7$F$$$^$7$?$,!"(B|\everyjob| $B$K%P%J!<I=<((B
+% $B0J30$N%3!<%I$,4^$^$l$k2DG=@-$r9MN8$7!"0BA4$N$?$a$d$a$^$7$?!#(B
+% \changes{v1.0w}{2018/04/08}{$B0BA4$N$?$a%U%)!<%^%C%H:n@.;~$N(B
+% $B%P%J!<I=<($r$d$a$?(B}
+%\else
+% In the previous version, we displayed \pLaTeX\ version
+% on the terminal, so that it can be easily recognized
+% during format creation; however |\everyjob| can contain
+% any code other than showing a banner, so now disabled.
+% \changes{v1.0w}{2018/04/08}{Stop showing banner during
+% format generation for safety}
+%\fi
+% \begin{macrocode}
+%\the\everyjob
+% \end{macrocode}
+%
+%\ifJAPANESE
+% \pLaTeXe{}$B$N5/F0;~$K(B\file{platex.cfg}$B$,$"$k>l9g!"$=$l$rFI$_9~$`(B
+% $B$h$&$K$7$^$9!#(B
+% $B%P!<%8%g%s(B2016/07/01$B$G$O%3!<%I$r(B\file{plcore.ltx}$B$KF~$l$F$$$^$7$?(B
+% $B$,!"(B\file{platex.ltx}$B$X0\F0$7$^$7$?!#(B
+% \changes{v1.0m}{2016/08/26}{\file{platex.cfg}$B$NFI$_9~$_$r(B
+% \file{plcore.ltx}$B$+$i(B\file{platex.ltx}$B$X0\F0(B}
+%\else
+% Load \file{platex.cfg} if it exists at runtime.
+% \changes{v1.0m}{2016/08/26}{Moved loading \file{platex.cfg}
+% from \file{plcore.ltx} to \file{platex.ltx}}
+%\fi
+% \begin{macrocode}
+\everyjob\expandafter{%
+ \the\everyjob
+ \IfFileExists{platex.cfg}{%
+ \typeout{*************************^^J%
+ * Loading platex.cfg.^^J%
+ *************************}%
+ \input{platex.cfg}}{}%
+}
+% \end{macrocode}
+%
+%\ifJAPANESE
+% $B%U%)!<%^%C%H%U%!%$%k$K%@%s%W$7$^$9!#(B
+% \changes{v1.0i}{2016/05/12}{$B0l;~%3%^%s%I(B\cs{orgdump}$B$r:G=*E*$KL$Dj5A$X(B}
+%\else
+% Dump to the format file.
+% \changes{v1.0i}{2016/05/12}{Undefine temporary command
+% \cs{orgdump} in the end.}
+%\fi
+% \begin{macrocode}
+\let\dump\orgdump
+\let\orgdump\@undefined
+\makeatother
+\dump
+%\endinput
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</plcore>
+% \end{macrocode}
+%
+%\ifJAPANESE
+% $B<B:]$K(B\pLaTeXe{}$B$X$N3HD%$r9T$J$C$F$$$k(B\file{plcore.ltx}$B$O!"(B
+% \dst{}$B%W%m%0%i%`$K$h$C$F!"<!$N%U%!%$%k$NCGJR$,O"7k$5$l$?$b$N$G$9!#(B
+%
+% \begin{itemize}
+% \item \file{plvers.dtx}$B$O!"(B\pLaTeXe{}$B$N%U%)!<%^%C%H%P!<%8%g%s$r(B
+% $BDj5A$7$F$$$^$9!#(B
+% \item \file{plfonts.dtx}$B$O!"(B\NFSS2$B$r3HD%$7$F$$$^$9!#(B
+% \item \file{plcore.dtx}$B$O!">e5-0J30$N%3%^%s%I$G%U%)!<%^%C%H%U%!%$%k$K(B
+% $B3JG<$5$l$k%3%^%s%I$rDj5A$7$F$$$^$9!#(B
+% \end{itemize}
+%
+% $B$^$?!"%W%j%m!<%I%U%)%s%H$dAHHG%Q%i%a!<%?$J$I$N%G%U%)%k%H@_Dj$O!"(B
+% \file{platex.ltx}$B$NCf$G(B\file{pldefs.ltx}$B$r%m!<%I$9$k$3$H$K$h$j9T$$$^$9(B
+% \footnote{$B%"%9%-!<HG$G$O(B\file{plcore.ltx}$B$NCf$G%m!<%I$7$F$$$^$7$?$,!"(B
+% 2018$BG/0J9_$N?7$7$$%3%_%e%K%F%#HG(B\pLaTeX{}$B$G$O(B
+% \file{platex.ltx}$B$+$iFI$_9~$`$3$H$K$7$^$7$?!#(B}$B!#(B
+% $B$3$N%U%!%$%k(B\file{pldefs.ltx}$B$b(B\file{plfonts.dtx}$B$+$i@8@.$5$l$^$9!#(B
+% \begin{chuui}
+% $B$3$N%U%!%$%k$K5-=R$5$l$F$$$k@_Dj$rJQ99$9$l$P(B
+% \pLaTeXe{}$B$r%+%9%?%^%$%:$9$k$3$H$,$G$-$^$9$,!"(B
+% $B$=$N>l9g$O(B\file{pldefs.ltx}$B$rD>@\=$@5$9$k$N$G$O$J$/!"$$$C$?$s(B
+% \file{pldefs.cfg}$B$H$$$&L>A0$G%3%T!<$7$F!"$=$N%U%!%$%k$rJT=8$7$F$/$@$5$$!#(B
+% $B%U%)!<%^%C%H:n@.;~$K(B\file{pldefs.cfg}$B$,B8:_$7$?>l9g$O!"$=$A$i$,(B
+% \file{pldefs.ltx}$B$NBe$o$j$KFI$_9~$^$l$^$9!#(B
+% \end{chuui}
+%\else
+% The file \file{plcore.ltx}, which provides modifications/extensions
+% to make \pLaTeXe, is a concatenation of stripped files below
+% using \dst\ program.
+%
+% \begin{itemize}
+% \item \file{plvers.dtx} defines the format version of \pLaTeXe.
+% \item \file{plfonts.dtx} extends \NFSS2 for Japanese font selection.
+% \item \file{plcore.dtx} defines other modifications to \LaTeXe.
+% \end{itemize}
+%
+% Moreover, default settings of pre-loaded fonts and typesetting parameters
+% are done by loading \file{pldefs.ltx} inside
+% \file{platex.ltx}.\footnote{ASCII \pLaTeX\ loaded \file{pldefs.ltx}
+% inside \file{plcore.ltx}; however, \pLaTeX\ community edition newer than
+% 2018 loads \file{pldefs.ltx} inside \file{platex.ltx}.}
+% This file \file{pldefs.ltx} is also stripped from \file{plfonts.dtx}.
+% \begin{chuui}
+% You can customize \pLaTeXe\ by tuning these settings.
+% If you need to do that, copy/rename it as \file{pldefs.cfg} and edit it,
+% instead of overwriting \file{pldefs.ltx} itself.
+% If a file named \file{pldefs.cfg} is found at a format creation
+% time, it will be read as a substitute of \file{pldefs.ltx}.
+% \end{chuui}
+%\fi
+%
+%
+%\ifJAPANESE
+% \subsubsection{$B%P!<%8%g%s(B}
+% \pLaTeXe{}$B$N%P!<%8%g%s$d%U%)!<%^%C%H%U%!%$%kL>$O!"(B
+% \file{plvers.dtx}$B$GDj5A$7$F$$$^$9!#(B
+%\else
+% \subsubsection{Version}
+% The version (like ``\pfmtversion'') and the format name
+% (``\pfmtname'') of \pLaTeXe\ are defined in \file{plvers.dtx}.
+%\fi
+%
+%
+%\ifJAPANESE
+% \subsubsection{\NFSS2$B%3%^%s%I(B}
+% \LaTeXe{}$B$G$O!"%U%)%s%HA*Br5!9=$H$7$F(B\NFSS2$B$rMQ$$$F$$$^$9!#(B
+% \pLaTeXe{}$B$G$O!"%*%j%8%J%k$N(B\NFSS2$B$HF1MM$N%$%s%?!<%U%'%$%9$G!"(B
+% $BOBJ8%U%)%s%H$rA*Br$G$-$k$h$&$K!"(B\file{plfonts.dtx}$B$G(B\NFSS2$B$r3HD%$7$F$$$^$9!#(B
+%
+% \pLaTeXe{}$B$N(B\NFSS2$B$O!"%U%)%s%H$r@ZBX$($k%3%^%s%I$r;XDj$9$k$H$-$K!"(B
+% $B$=$l$,2$J8=qBN$+OBJ8=qBN$N$$$:$l$+$rBP>]$H$9$k$b$N$+$r!"(B
+% $B$G$-$k$@$10U<1$7$J$$$h$&$K$9$kJ}8~$G3HD%$7$F$$$^$9!#(B
+% $B$$$$$+$($l$P!"%3%^%s%I$,!J2DG=$J8B$j$N!KH=CG$r$7$^$9!#(B
+% $B$7$?$,$C$F?tB?$/$"$k1Q8lHG$N%/%i%9%U%!%$%k$d%Q%C%1!<%8%U%!%$%k$J$I$G(B
+% $B=qBN$NJQ99$r9T$C$F$$$k2U=j$r=$@5$9$kI,MW$O$"$^$j$"$j$^$;$s!#(B
+%
+% \NFSS2$B$K$D$$$F$N>\:Y$O!"(B\LaTeXe{}$B$KIUB0$N(B\file{fntguide.tex}$B$r;2>H$7$F(B
+% $B$/$@$5$$!#(B
+%\else
+% \subsubsection{\NFSS2 Commands}
+% \LaTeXe\ uses \NFSS2 as a font selection scheme, however, it
+% supports only alphabetic fonts.
+% \pLaTeXe\ extends \NFSS2 to enable selection of Japanese fonts in
+% a consistent manner with the original \NFSS2.
+%
+% Most of the interface commands are defined to be clever enough,
+% so that it can automatically judge whether it is going to
+% change alphpabetic fonts or Japanese fonts.
+% It works almost fine with most of the widely used classes and
+% packages, without any modification.
+%
+% For the defail of (the original) \NFSS2, please refer to
+% \file{fntguide.tex} in \LaTeXe.
+%\fi
+%
+%
+%\ifJAPANESE
+% \subsubsection{$B=PNO%k!<%A%s$H%U%m!<%H(B}
+% \file{plcore.dtx}$B$O!"<!$N9`L\$K4X$9$k%3%^%s%I$rF|K\8l=hM}MQ$K=$@5$d3HD%(B
+% $B$r$7$F$$$^$9!#(B
+%
+% \begin{itemize}
+% \item $B%W%j%"%s%V%k%3%^%s%I(B
+% \item $B2~%Z!<%8(B
+% \item $B2~9T(B
+% \item $B%*%V%8%'%/%H$N=PNO=g=x(B
+% \item $B%H%s%\(B
+% \item $B5SCm%^%/%m(B
+% \item $BAj8_;2>H(B
+% \item $B5?;w%?%$%WF~NO(B
+% \end{itemize}
+%\else
+% \subsubsection{Output Routine and Floats}
+% \file{plcore.dtx} modifies and extends some \LaTeXe\ commands
+% for Japanese processing.
+%
+% \begin{itemize}
+% \item Preamble commands
+% \item Page breaking
+% \item Line breaking
+% \item The order of float objects
+% \item Crop marks (``tombow'')
+% \item Footnote macros
+% \item Cross-referencing
+% \item Verbatim
+% \end{itemize}
+%\fi
+%
+%
+%\ifJAPANESE
+% \subsection{$B%/%i%9%U%!%$%k$H%Q%C%1!<%8%U%!%$%k(B}
+%
+% \pLaTeXe{}$B$,Ds6!$r$9$k%/%i%9%U%!%$%k$d%Q%C%1!<%8%U%!%$%k$O!"(B
+% $B%*%j%8%J%k$N%U%!%$%k$r4p$K$7$F$$$^$9!#(B
+%
+% \pLaTeXe{}$B$KIUB0$N%/%i%9%U%!%$%k$O!"<!$N$H$*$j$G$9!#(B
+%
+% \begin{itemize}
+% \item jarticle.cls, jbook.cls, jreport.cls\par
+% $B2#AHMQ$NI8=`%/%i%9%U%!%$%k!#(B
+% \file{jclasses.dtx}$B$+$i:n@.$5$l$k!#(B
+%
+% \item tarticle.cls, tbook.cls, treport.cls\par
+% $B=DAHMQ$NI8=`%/%i%9%U%!%$%k!#(B
+% \file{jclasses.dtx}$B$+$i:n@.$5$l$k!#(B
+%
+% \item jltxdoc.cls\par
+% $BF|K\8l$N(B\file{.dtx}$B%U%!%$%k$rAHHG$9$k$?$a$N%/%i%9%U%!%$%k!#(B
+% \file{jltxdoc.dtx}$B$+$i:n@.$5$l$k!#(B
+% \end{itemize}
+%\else
+% \subsection{Classes and Packages}
+%
+% Classes and packages bundled with \pLaTeXe\ are based on
+% those in original \LaTeXe, with some Japanese localization.
+%
+% \pLaTeXe\ classes:
+%
+% \begin{itemize}
+% \item jarticle.cls, jbook.cls, jreport.cls\par
+% Standard \emph{yoko-kumi} (horizontal writing) classes;
+% stripped from \file{jclasses.dtx}.
+%
+% \item tarticle.cls, tbook.cls, treport.cls\par
+% Standard \emph{tate-kumi} (vertical writing) classes;
+% stripped from \file{jclasses.dtx}.
+%
+% \item jltxdoc.cls\par
+% Class for typesetting Japanese \file{.dtx} file;
+% stripped from \file{jltxdoc.dtx}.
+% \end{itemize}
+%\fi
+%
+%\ifJAPANESE
+% $B$^$?!"(B\pLaTeXe{}$B$KIUB0$N%Q%C%1!<%8%U%!%$%k$O!"<!$N$H$*$j$G$9!#(B
+% \changes{v1.0d}{2016/01/27}{\pLaTeXe{}$B$KIUB0$9$k%U%!%$%k$N@bL@$r99?7(B}
+% \changes{v1.0j}{2016/05/20}{pfltrace$B$N@bL@$rDI2C(B}
+%
+% \begin{itemize}
+% \item plext.sty\par
+% $B=DAHMQ$N3HD%%3%^%s%I$J$I$,Dj5A$5$l$F$$$k%U%!%$%k!#(B
+% \file{plext.dtx}$B$+$i:n@.$5$l$k!#(B
+%
+% \item ptrace.sty\par
+% \LaTeX{}$B$G%U%)%s%HA*Br%3%^%s%I$N%H%l!<%9$K;H$&(B\file{tracefnt.sty}$B$,(B
+% $B:FDj5A$7$F$7$^$&(B\NFSS2$B%3%^%s%I$r!"(B\pLaTeXe{}$BMQ$K:F!9Dj5A$9$k$?$a$N(B
+% $B%Q%C%1!<%8!#(B
+% \file{plfonts.dtx}$B$+$i:n@.$5$l$k!#(B
+%
+% \item pfltrace.sty\par
+% \LaTeX{}$B$G%U%m!<%H4XO"%3%^%s%I$N%H%l!<%9$K;H$&(B\file{fltrace.sty}%
+% \footnote{\LaTeXe\ 2014/05/01$B$GDI2C$5$l$^$7$?!#;29M!'(B
+% \LaTeXe\ News Issue 21 (ltnews21.tex)}$B$,:FDj5A$7$F$7$^$&%3%^%s%I(B
+% $B$r!"(B\pLaTeXe{}$BMQ$K:F!9Dj5A$9$k$?$a$N%Q%C%1!<%8!#(B
+% \file{plcore.dtx}$B$+$i:n@.$5$l$k!#(B
+%
+% \item oldpfont.sty\par
+% \pLaTeX~2.09$B$N%U%)%s%H%3%^%s%I$rDs6!$9$k%Q%C%1!<%8!#(B
+% \file{pl209.dtx}$B$+$i:n@.$5$l$k!#(B
+% \end{itemize}
+%
+% $B$J$*!"0JA0$N%P!<%8%g%s$KF1:-$7$F$$$?(Bascmac$B%Q%C%1!<%8$H(B
+% nidanfloat$B%Q%C%1!<%8$O!"JL$N%P%s%I%k$H$7$FFHN)$5$;$^$7$?!#(B
+% \changes{v1.0t}{2018/02/07}{ascmac$B%Q%C%1!<%8$rFHN)$5$;$?(B}
+% \changes{v1.0u}{2018/02/18}{nidanfloat$B%Q%C%1!<%8$rFHN)$5$;$?(B}
+%\else
+% \pLaTeXe\ packages:
+% \changes{v1.0d}{2016/01/27}{Updated descriptions of \pLaTeXe\ files}
+% \changes{v1.0j}{2016/05/20}{Add description of `pfltrace'}
+%
+% \begin{itemize}
+% \item plext.sty\par
+% Useful macros and extensions for vertical writing;
+% stripped from \file{plext.dtx}.
+%
+% \item ptrace.sty\par
+% \pLaTeXe\ version of \file{tracefnt.sty};
+% the package \file{tracefnt.sty} overwrites \pLaTeXe-style \NFSS2
+% commands, so \file{ptrace.sty} provides redefinitions to recover
+% \pLaTeXe\ extensions.
+% Stripped from \file{plfonts.dtx}.
+%
+% \item pfltrace.sty\par
+% \pLaTeXe\ version of \file{fltrace.sty} (introduced in
+% \LaTeXe\ 2014/05/01);
+% stripped from \file{plcore.dtx}.
+%
+% \item oldpfont.sty\par
+% Provides \pLaTeX~2.09 font commands;
+% stripped from \file{pl209.dtx}.
+% \end{itemize}
+%
+% The packages ``ascmac.sty'' and ``nidanfloat.sty'',
+% which had been included in previous versions of \pLaTeX,
+% is now distributed as a separate bundle.
+% \changes{v1.0t}{2018/02/07}{Moved ascmac package to separate bundle}
+% \changes{v1.0u}{2018/02/18}{Moved nidanfloat package to separate bundle}
+%\fi
+%
+%
+%\ifJAPANESE
+% \section{$BB>$N%U%)!<%^%C%H!&5l%P!<%8%g%s$H$N8_49@-(B}
+% \label{platex:compatibility}
+% $B$3$3$G$O!"$3$N(B\pLaTeXe{}$B$N%P!<%8%g%s$H0JA0$N%P!<%8%g%s!"$"$k$$$O(B
+% \LaTeXe{}$B$H$N8_49@-$K$D$$$F@bL@$r$7$F$$$^$9!#(B
+%
+% \subsection{\LaTeXe{}$B$H$N8_49@-(B}
+% \pLaTeXe{}$B$O!"(B\LaTeXe{}$B$N>e0L8_49$H$$$&7A$r<h$C$F$$$^$9$,!"(B
+% $B$$$/$D$+$NL?Na$NDj5A$d%Q%i%a!<%?$J$I$bJQ99$7$F$$$^$9!#(B
+% $B$7$?$,$C$F1QJ8=q$J$I!"(B\LaTeXe{}$B$G$b=hM}$G$-$k%U%!%$%k$r(B
+% \pLaTeXe{}$B$G=hM}$7$F$b!"40A4$KF1$87k2L$K$J$k$H$O8B$j$^$;$s!#(B
+%
+% \LaTeXe{}$B8~$1$K=q$+$l$?B?$/$N%/%i%9%U%!%$%k$d%Q%C%1!<%8%U%!%$%k$O!"(B
+% $B$=$N$^$^;H$($k$H;W$$$^$9!#(B
+% $B$?$@$7!"$=$l$i$,(B\pLaTeXe{}$B$G3HD%$7$F$$$k%3%^%s%I$HF1$8L>A0$N(B
+% $B%3%^%s%I$r:FDj5A$7$F$$$k>l9g$O!"(B
+% $B$=$N3HD%$N;EJ}$K$h$C$F$O%(%i!<$K$J$k$3$H$b$"$j$^$9!#(B
+% $BMQ$$$h$&$H$7$F$$$k%/%i%9%U%!%$%k$d%Q%C%1!<%8%U%!%$%k$,(B
+% $B$&$^$/F0$/$+$I$&$+$r!"40A4$K3N$+$a$kJ}K!$O;DG0$J$,$i$"$j$^$;$s!#(B
+% $B0lHV4JC1$J$N$O!"F0$+$7$F$_$k$3$H$G$9!#IT9,$K$b$&$^$/F0$+$J$$>l9g$O!"(B
+% $B%m%0%U%!%$%k$dIUB0$NJ8=q%U%!%$%k$r;29M$K860x$rD4$Y$F$/$@$5$$!#(B
+%
+% $B$J$*!"$$$/$D$+$N(B\LaTeX{}$B%Q%C%1!<%8$K$D$$$F$O!"(B\pLaTeX{}$B8~$1$N(B
+% $B%Q%C%A$,MQ0U$5$l$F$$$^$9!#$=$N0lMw$O!"(B
+% \texttt{plautopatch}$B%Q%C%1!<%8!J(BHironobu Yamashita$B:n!K$N(B
+% $B%I%-%e%a%s%H!JF|K\8lHG$O(Bplautopatch-ja.pdf$B!K$K5-:\$5$l$F$$$^$9!#(B
+% \changes{v1.0x}{2018/09/03}{plautopatch$B$K8@5Z(B}
+%\else
+% \section{Compatibility with Other Formats and Older Versions}
+% \label{platex:compatibility}
+% Here we provide some information about the compatibility between
+% current \pLaTeXe\ and older versions or original \LaTeXe.
+%
+% \subsection{Compatibility with \LaTeXe}
+% \pLaTeXe\ is in most part upper compatible with \LaTeXe,
+% but some parameters are adjusted to be suitable for Japanese.
+% Therefore, you should not expect identical output, even though
+% the same source can be processed on both \LaTeXe\ and \pLaTeXe.
+%
+% We hope that most classes and packages meant for \LaTeXe\ works
+% also for \pLaTeXe\ without any modification. However for example,
+% if a class or a package redefines a command which is already
+% modified by \pLaTeXe, it might cause an error at the worst case.
+% We cannot tell whether a class or a package works fine with
+% \pLaTeXe\ beforehand; the easiest way is to try to use it.
+% If it fails, please refer to the log file or a package manual.
+%
+% Some \LaTeX\ packages are known to be incompatible with \pLaTeX.
+% For those packages, \pLaTeX-specific patches might be available.
+% Please refer to the documentation of the \texttt{plautopatch}
+% package (by Hironobu Yamashita).
+% \changes{v1.0x}{2018/09/03}{Mention plautopatch.}
+%\fi
+%
+%\ifJAPANESE
+% \subsection{\pLaTeX~2.09$B$H$N8_49@-(B}
+% \pLaTeXe{}$B$G$O!"J8=q$,;HMQ$9$k%/%i%9$r!"(B
+% $B%W%j%"%s%V%k$G(B|\documentclass|$B%3%^%s%I$K$h$j;XDj$7$^$9!#(B
+% $B$3$3$G(B|\documentclass|$B$NBe$o$j$K(B|\documentstyle|$B$r(B
+% $BMQ$$$k$H!"(B\pLaTeXe{}$B$O<+F0E*$K(B\emph{2.09$B8_49%b!<%I(B}$B$KF~$j$^$9!#(B
+% $B$3$l$O(B\LaTeXe{}$B$,(B\LaTeX~2.09$B8_49%b!<%I$KF~$k$N$HF1MM$G!"(B
+% $B8_49%b!<%I$O8E$$J8=q$rAHHG$9$k$?$a$@$1$K:n$i$l$F$$$^$9!#(B
+% $B?7$7$/J8=q$r:n@.$9$k>l9g$O!"(B|\documentclass|$B%3%^%s%I$rMQ$$$F$/$@$5$$!#(B
+%
+% $B8_49%b!<%I$G$O(B(p)\LaTeXe{}$B$N?7$7$$5!G=$rMxMQ$G$-$:!"(B
+% $B$^$?8E$$%M%$%F%#%V$J(B\pLaTeX~2.09$B4D6-$HHyL/$K0[$J$k7k2L$K$J$k(B
+% $B2DG=@-$b$"$k$H$$$&E@$O!"1Q8lHG$N(B\LaTeXe{}$B$G$bF1$8$G$9!#(B
+% $B>\:Y$O!"(B\LaTeXe $B$KIUB0$N(B\file{usrguide.tex}$B$r;2>H$7$F$/$@$5$$!#(B
+%\else
+% \subsection{Compatibility with \pLaTeX~2.09}
+% \pLaTeXe\ has `\pLaTeX~2.09 compatibility mode'; use
+% |\documentstyle| to enter it, but the support might be limited.
+% Note that the 2.09 compatibility mode is provided solely to
+% allow you to process very old documents,
+% which were written for a very old system.
+%\fi
+%
+%
+%\ifJAPANESE
+% \subsection{latexrelease$B%Q%C%1!<%8$X$NBP1~(B}
+% \changes{v1.0e}{2016/02/16}{platexrelease$B$N@bL@$rDI2C(B}
+% \LaTeX\ \texttt{<2015/01/01>}$B$GF3F~$5$l$?(Blatexrelease$B%Q%C%1!<%8$r(B
+% $B$b$H$K!"?7$7$$(B\pLaTeX{}$B$G$O(Bplatexrelease$B%Q%C%1!<%8$rMQ0U$7$^$7$?!#(B
+% platexrelease$B%Q%C%1!<%8$rMQ$$$k$H!"2a5n$N(B\pLaTeX{}$B$r%(%_%e%l!<%H(B
+% $B$7$?$j!"%U%)!<%^%C%H$r:n$jD>$9$3$H$J$/?7$7$$(B\pLaTeX{}$B$r;n$7$?$j$9$k(B
+% $B$3$H$,$G$-$^$9!#>\:Y$O(Bplatexrelease$B$N%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(B
+%\else
+% \subsection{Support for Package `latexrelease'}
+% \changes{v1.0e}{2016/02/16}{Add a description of platexrelease}
+% \pLaTeX\ provides `platexrelease' package, which is based on
+% `latexrelease' package (introduced in \LaTeX\ \texttt{<2015/01/01>}).
+% It may be used to ensure stability where needed, by emulating
+% the specified format date without regenerating the format file.
+% For more detail, please refer to its documentation.
+%\fi
+%
+%
+%
+% \appendix
+%
+%\ifJAPANESE
+% \section{\dst{}$B%W%m%0%i%`$N$?$a$N%*%W%7%g%s(B}\label{app:dst}
+% $B$3$NJ8=q$N%=!<%9(B(\file{platex.dtx})$B$r(B\dst{}$B%W%m%0%i%`$G(B
+% $B=hM}$9$k$3$H$K$h$C$F!"(B
+% $B$$$/$D$+$N0[$J$k%U%!%$%k$r@8@.$9$k$3$H$,$G$-$^$9!#(B
+% \dst{}$B%W%m%0%i%`$N>\:Y$O!"(B\file{docstrip.dtx}$B$r;2>H$7$F$/$@$5$$!#(B
+%
+% $B$3$NJ8=q$N(B\dst{}$B%W%m%0%i%`$N$?$a$N%*%W%7%g%s$O!"<!$N$H$*$j$G$9!#(B
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{l|p{.8\linewidth}}
+% \emph{$B%*%W%7%g%s(B} & \emph{$B0UL#(B}\\\hline
+% plcore & $B%U%)!<%^%C%H%U%!%$%k$r:n$k$?$a$N%U%!%$%k$r@8@.(B\\
+% pldoc & \pLaTeXe{}$B$N%=!<%9%U%!%$%k$r$^$H$a$FAHHG$9$k$?$a$N(B
+% $BJ8=q%U%!%$%k(B(pldoc.tex)$B$r@8@.(B\\[2mm]
+% shprog & $B>e5-$N%U%!%$%k$r:n@.$9$k$?$a$N(Bsh$B%9%/%j%W%H$r@8@.(B\\
+% plprog & $BF~$l;R9=B$$rD4$Y$k4JC1$J(Bperl$B%9%/%j%W%H$r@8@.(B\\
+% Xins & $B>e5-$N(Bsh$B%9%/%j%W%H$d(Bperl$B%9%/%j%W%H$r<h$j=P$9$?$a$N(B
+% \dst{}$B%P%C%A%U%!%$%k(B(Xins.ins)$B$r@8@.(B\\
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%\else
+% \section{\dst\ Options}\label{app:dst}
+% By processing \file{platex.dtx} with \dst\ program,
+% different files can be generated.
+% Here are the \dst\ options for this document:
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{l|p{.8\linewidth}}
+% \emph{Option} & \emph{Function}\\\hline
+% plcore & Generates a fragment of format sources\\
+% pldoc & Generates `pldoc.tex' for typesetting
+% \pLaTeXe\ sources\\[2mm]
+% shprog & Generates a shell script to process `pldoc.tex'\\
+% plprog & Generates a tiny perl program to check
+% \dst\ guards nesting\\
+% Xins & Generates a \dst\ batch file `Xins.ins' for
+% generating the above shell/perl scripts\\
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%\fi
+%
+%\ifJAPANESE
+% \subsection{$B%U%!%$%k$N<h$j=P$7J}(B}
+%
+% $B$?$H$($P!"$3$NJ8=q$N(B``plcore''$B$NItJ,$r(B``\file{platex.ltx}''$B$H$$$&(B
+% $B%U%!%$%k$K$9$k$H$-$N<j=g$O$D$.$N$h$&$K$J$j$^$9!#(B
+%
+% \begin{enumerate}
+% \item platex docstrip
+% \item $BF~NO%U%!%$%k$N3HD%;R!J(Bdtx$B!K$rF~NO$9$k!#(B
+% \item $B=PNO%U%!%$%k$N3HD%;R!J(Bltx$B!K$rF~NO$9$k!#(B
+% \item \dst{}$B%*%W%7%g%s!J(Bplcore$B!K$rF~NO$9$k!#(B
+% \item $BF~NO%U%!%$%kL>!J(Bplatex$B!K$rF~NO$9$k!#(B
+% \item \file{platex.ltx}$B$,B8:_$9$k>l9g$O!"3NG'$r5a$a$F$/$k$N$G!"(B
+% ``y''$B$rF~NO$9$k!#(B
+% \item $BJL$N=hM}$r9T$J$&$+$rLd$o$l$k$N$G!"(B``n''$B$rF~NO$9$k!#(B
+% \end{enumerate}
+% $B$3$l$G!"(B\file{platex.ltx}$B$,:n$i$l$^$9!#(B
+%
+% $B$"$k$$$O!"<!$N$h$&$JFbMF$N%U%!%$%k(B\file{fmt.ins}$B$r:n@.$7!"(B
+% |platex fmt.ins|$B$9$k$3$H$G$b(B\file{platex.ltx}$B$r:n$k$3$H$,$G$-$^$9!#(B
+%
+%\begin{verbatim}
+% \def\batchfile{fmt.ins}
+% \input docstrip.tex
+% \generateFile{platex.ltx}{t}{\from{platex.dtx}{plcore}}
+%\end{verbatim}
+%\else
+% ^^A (- English version omitted, not so useful -)
+%\fi
+%
+%
+%\ifJAPANESE
+% \section{$BJ8=q%U%!%$%k(B}\label{app:pldoc}
+% \changes{v1.0c}{1997/01/25}{pldoc.dic$B$r(Bfilecontents$B4D6-$K$h$j:n@.(B}
+% $B$3$3$G$O!"$3$N%Q%C%1!<%8$K4^$^$l$F$$$k(Bdtx$B%U%!%$%k$r$^$H$a$FAHHG$7!"(B
+% $B%=!<%9%3!<%I@bL@=q$rF@$k$?$a$NJ8=q%U%!%$%k(B\file{pldoc.tex}$B$K$D$$$F(B
+% $B@bL@$r$7$F$$$^$9!#8DJL$K=hM}$7$?>l9g$H0[$J$j!"(B
+% $BJQ99MzNr$d:w0z$bIU$-$^$9!#A4BN$G!"$*$h$=(B200$B%Z!<%8DxEY$K$J$j$^$9!#(B
+%
+% $B%G%U%)%k%H$G$O%=!<%9%3!<%I$N@bL@$,F|K\8l$G=q$+$l$^$9!#(B
+% $B$b$71Q8l$N@bL@=q$rFI$_$?$$>l9g$O!"(B\par\medskip
+% \begin{minipage}{.5\textwidth}\ttfamily
+% | |\cs{newif}\cs{ifJAPANESE}
+% \end{minipage}\par\medskip\noindent
+% $B$H$$$&FbMF$N(B\file{platex.cfg}$B$rM=$aMQ0U$7$F$+$i(B\file{pldoc.tex}$B$r(B
+% $B=hM}$7$F$/$@$5$$!J(B2016$BG/(B7$B7n(B1$BF|0J9_$N%3%_%e%K%F%#HG(B\pLaTeXe{}$B$,I,MW!K!#(B
+%\else
+% \section{Documentation of \pLaTeXe\ sources}\label{app:pldoc}
+% \changes{v1.0c}{1997/01/25}{Add to filecontents environment for pldoc.dic.}
+% The contents of `pldoc.tex' for typesetting \pLaTeXe\ sources
+% is described here. Compared to individual processings,
+% batch processing using `pldoc.tex' prints also changes and an index.
+% The whole document will have about 200 pages.
+%
+% By default, the description of \pLaTeXe\ sources is written in
+% Japanese. If you need English version, first save\par\medskip
+% \begin{minipage}{.5\textwidth}\ttfamily
+% | |\cs{newif}\cs{ifJAPANESE}
+% \end{minipage}\par\medskip\noindent
+% as \file{platex.cfg}, and process \file{pldoc.tex}
+% (\pLaTeXe\ Community Edition newer than July 2016 is required).
+%\fi
+%
+%\ifJAPANESE
+% |filecontents|$B4D6-$O!"0z?t$K;XDj$5$l$?%U%!%$%k$,B8:_$9$k$H$-$O2?$b(B
+% $B$7$^$;$s$,!"B8:_$7$J$$$H$-$O!"4D6-Fb$NFbMF$G%U%!%$%k$r:n@.$7$^$9!#(B
+% \file{pldoc.dic}$B%U%!%$%k$O!"(Bmendex$B%W%m%0%i%`$G:w0z$r=hM}$9$k$H$-$K(B
+% \cs{$B@>Nq(B}, \cs{$BOBNq(B}$B$KBP$9$k!VFI$_!W$rIU$1$k$?$a$KI,MW$G$9!#(B
+%\else
+% First, create \file{pldoc.dic}; it serves as a dictionary
+% for `mendex' (Japanese index processor\footnote{Developed by
+% ASCII Corporation; the program `makeindex' cannot handle
+% Japanese characters properly, especially Kanji characters
+% which should be sorted by its readings.}), which is necessary
+% for indexing control sequences containing Japanese characters
+% (\cs{$B@>Nq(B} and \cs{$BOBNq(B}).
+%\fi
+% \begin{macrocode}
+%<*pldoc>
+\begin{filecontents}{pldoc.dic}
+$B@>Nq(B $B$;$$$l$-(B
+$BOBNq(B $B$o$l$-(B
+\end{filecontents}
+% \end{macrocode}
+%
+%\ifJAPANESE
+% $BJ8=q%/%i%9$K$O!"(B\file{jltxdoc}$B%/%i%9$rMQ$$$^$9!#(B
+% \file{plext.dtx}$B$NCf$G%5%s%W%k$rAH$_N)$F$F$$$^$9$N$G!"(B
+% \file{plext}$B%Q%C%1!<%8$,I,MW$G$9!#(B
+%\else
+% We use \file{jltxdoc} class; we also require \file{plext} package,
+% since \file{plext.dtx} contains several examples of partial
+% vertical writing.
+%\fi
+% \begin{macrocode}
+\documentclass{jltxdoc}
+\usepackage{plext}
+\listfiles
+
+% \end{macrocode}
+%\ifJAPANESE
+% $B$$$/$D$+$N(B\TeX{}$B%W%j%_%F%#%V$H(Bplain \TeX{}$B%3%^%s%I$r(B
+% $B:w0z$K=PNO$7$J$$$h$&$K$7$^$9!#(B
+%\else
+% Do not index some \TeX\ primitives, and some common
+% plain \TeX\ commands.
+%\fi
+% \begin{macrocode}
+\DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global}
+\DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,%
+ \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi}
+\DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,%
+ \vbox,\vtop,\vcenter}
+\DoNotIndex{\@empty,\immediate,\write}
+\DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup}
+\DoNotIndex{\divide,\advance,\multiply,\count,\dimen}
+\DoNotIndex{\relax,\space,\string}
+\DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,%
+ \closein,\closeout}
+\DoNotIndex{\catcode,\endinput}
+\DoNotIndex{\jobname,\message,\read,\the,\m@ne,\noexpand}
+\DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss,\vss,\unskip}
+\DoNotIndex{\m@ne,\z@,\z@skip,\@ne,\tw@,\p@,\@minus,\@plus}
+\DoNotIndex{\dp,\wd,\ht,\setlength,\addtolength}
+\DoNotIndex{\newcommand, \renewcommand}
+
+% \end{macrocode}
+%\ifJAPANESE
+% $B:w0z$HJQ99MzNr$N8+=P$7$K(B|\part|$B$rMQ$$$k$h$&$K@_Dj$r$7$^$9!#(B
+%\else
+% Set up the Index and Change History to use |\part|.
+%\fi
+% \begin{macrocode}
+\ifJAPANESE
+\IndexPrologue{\part*{$B:w(B $B0z(B}%
+ \markboth{$B:w(B $B0z(B}{$B:w(B $B0z(B}%
+ \addcontentsline{toc}{part}{$B:w(B $B0z(B}%
+$B%$%?%j%C%/BN$N?t;z$O!"$=$N9`L\$,@bL@$5$l$F$$$k%Z!<%8$r<($7$F$$$^$9!#(B
+$B2<@~$N0z$+$l$??t;z$O!"Dj5A$5$l$F$$$k%Z!<%8$r<($7$F$$$^$9!#(B
+$B$=$NB>$N?t;z$O!"$=$N9`L\$,;H$o$l$F$$$k%Z!<%8$r<($7$F$$$^$9!#(B}
+\else
+\IndexPrologue{\part*{Index}%
+ \markboth{Index}{Index}%
+ \addcontentsline{toc}{part}{Index}%
+The italic numbers denote the pages where the corresponding entry
+is described, numbers underlined point to the definition,
+all others indicate the places where it is used.}
+\fi
+%
+\ifJAPANESE
+\GlossaryPrologue{\part*{$BJQ99MzNr(B}%
+ \markboth{$BJQ99MzNr(B}{$BJQ99MzNr(B}%
+ \addcontentsline{toc}{part}{$BJQ99MzNr(B}}
+\else
+\GlossaryPrologue{\part*{Change History}%
+ \markboth{Change History}{Change History}%
+ \addcontentsline{toc}{part}{Change History}}
+\fi
+
+% \end{macrocode}
+%\ifJAPANESE
+% $BI8=`$N(B|\changes|$B%3%^%s%I$r!"J#?t%U%!%$%k$NJ8=q$K9g$&$h$&$K=$@5$7$F$$$^$9!#(B
+%\else
+% Modify the standard |\changes| command slightly, to better cope with
+% this multiple file document.
+%\fi
+% \begin{macrocode}
+\makeatletter
+\def\changes@#1#2#3{%
+ \let\protect\@unexpandable@protect
+ \edef\@tempa{\noexpand\glossary{#2\space
+ \currentfile\space#1\levelchar
+ \ifx\saved@macroname\@empty
+ \space\actualchar\generalname
+ \else
+ \expandafter\@gobble
+ \saved@macroname\actualchar
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar
+ \fi
+ :\levelchar #3}}%
+ \@tempa\endgroup\@esphack}
+% \end{macrocode}
+%\ifJAPANESE
+% $B%3!<%I9T$G$O!">/$7$N(BOverfull$B$r7Y9pL5$7$K5vMF$7$^$9!#(B
+% \changes{v1.0v}{2018/04/06}{$B:G?7$N(Bsource2e$B$X$NDI?o(B}
+%\else
+% Codelines are allowed to run over a bit without
+% showing up as overfull.
+% \changes{v1.0v}{2018/04/06}{Sync with the latest \file{source2e.tex}}
+%\fi
+% \begin{macrocode}
+\renewcommand*\MacroFont{\fontencoding\encodingdefault
+ \fontfamily\ttdefault
+ \fontseries\mddefault
+ \fontshape\updefault
+ \small
+ \hfuzz 6pt\relax}
+% \end{macrocode}
+%\ifJAPANESE
+% $B>OHV9f$N7e?t$,B?$$>l9g$r9MN8$7!"L\<!$G$N%9%Z!<%9$r>/$7A}$d$7$^$9!#(B
+%\else
+% Section numbers now reach eg 19.12 which need more space.
+%\fi
+% \begin{macrocode}
+\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.8em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.4em}}
+\makeatother
+% \end{macrocode}
+%\ifJAPANESE
+% $BJQ99MzNr$H(B2$BCJAH$N:w0z$r:n@.$7$^$9!#(B
+%\else
+% Produce a Change Log and (2 column) Index.
+%\fi
+% \begin{macrocode}
+\RecordChanges
+\CodelineIndex
+\EnableCrossrefs
+\setcounter{IndexColumns}{2}
+\settowidth\MacroIndent{\ttfamily\scriptsize 000\ }
+% \end{macrocode}
+%\ifJAPANESE
+% $B$3$NJ8=q$N%?%$%H%k!&Cx<T!&F|IU$r@_Dj$7$^$9!#(B
+% \changes{v1.0c}{1997/01/29}{\file{pltpatch.ltx}$B$r(B\file{plpatch.ltx}$B$KL>>NJQ99(B}
+% \changes{v1.0h}{2016/05/08}{$B%I%-%e%a%s%H$+$i(B\file{plpatch.ltx}$B$r=|30(B}
+% \changes{v1.0l}{2016/06/19}{$B%Q%C%A%l%Y%k$r(B\file{plvers.dtx}$B$+$i<hF@(B}
+% \changes{v1.0o}{2017/09/24}{$B%Q%C%A%l%Y%k$,Ii$N?t$N>l9g$r(Bpre-release$B07$$$X(B}
+% \changes{v1.0y}{2018/09/22}{$B:G=*99?7F|$r(B\file{pldoc.pdf}$B$KI=<((B}
+%\else
+% Set the title, authors and the date for this document.
+% \changes{v1.0c}{1997/01/29}{Rename \file{pltpatch.ltx} to \file{plpatch.ltx}.}
+% \changes{v1.0h}{2016/05/08}{Exclude \file{plpatch.ltx} from the document}
+% \changes{v1.0l}{2016/06/19}{Get the patch level from \file{plvers.dtx}}
+% \changes{v1.0o}{2017/09/24}{Allow negative patch level for pre-release}
+% \changes{v1.0y}{2018/09/22}{Show last update info on \file{pldoc.pdf}}
+%\fi
+% \begin{macrocode}
+ \title{The \pLaTeXe\ Sources}
+ \author{Ken Nakano \& Japanese \TeX\ Development Community}
+
+% Get the date and patch level from plvers.dtx
+\makeatletter
+\let\patchdate=\@empty
+\begingroup
+ \def\ProvidesFile#1\pfmtversion#2#3\ppatch@level#4{%
+ \date{#2}\xdef\patchdate{#4}\endinput}
+ \input{plvers.dtx}
+\endgroup
+
+% Add the patch version if available.
+\def\Xpatch{0}
+\ifx\patchdate\Xpatch\else
+% number is assumed
+\ifnum\patchdate>0
+ \edef\@date{\@date\space Patch level\space\patchdate}
+\else
+ \edef\@date{\@date\space Pre-Release\patchdate}
+\fi\fi
+
+% Add the last update info, in case formate date unchanged
+% Note: \@ifl@t@r can be used only in preamble.
+\def\lastupd@te{0000/00/00}
+\begingroup
+ \def\ProvidesFile#1[#2 #3]{%
+ \def\@tempd@te{#2}\endinput
+ \@ifl@t@r{\@tempd@te}{\lastupd@te}{%
+ \global\let\lastupd@te\@tempd@te
+ }{}}
+ \let\ProvidesClass\ProvidesFile
+ \let\ProvidesPackage\ProvidesFile
+ \input{plvers.dtx}
+ \input{plfonts.dtx}
+ \input{plcore.dtx}
+ \input{plext.dtx}
+ \input{pl209.dtx}
+ \input{kinsoku.dtx}
+ \input{jclasses.dtx}
+ \input{jltxdoc.cls}
+\endgroup
+\@ifl@t@r{\lastupd@te}{\pfmtversion}{%
+ \edef\@date{\@date\break (last updated: \lastupd@te)}%
+}{}
+\makeatother
+% \end{macrocode}
+%\ifJAPANESE
+% $B$3$3$+$i$,K\J8%Z!<%8$H$J$j$^$9!#(B
+%\else
+% Here starts the document body.
+%\fi
+% \begin{macrocode}
+\begin{document}
+\pagenumbering{roman}
+\maketitle
+\renewcommand\maketitle{}
+\tableofcontents
+\clearpage
+\pagenumbering{arabic}
+
+\DocInclude{plvers} % pLaTeX version
+
+\DocInclude{plfonts} % NFSS2 commands
+
+\DocInclude{plcore} % kernel commands
+
+\DocInclude{plext} % external commands
+
+\DocInclude{pl209} % 2.09 compatibility mode commands
+
+\DocInclude{kinsoku} % kinsoku parameter
+
+\DocInclude{jclasses} % Standard class
+
+\DocInclude{jltxdoc} % dtx documents class
+
+% \end{macrocode}
+%\ifJAPANESE
+% \file{ltxdoc.cfg}$B$K(B|\AtEndOfClass{\OnlyDescription}|$B$,;XDj$5$l$F$$$k>l9g$O!"(B
+% $B$3$3$G=*N;$7$^$9!#(B
+%\else
+% Stop here if \file{ltxdoc.cfg} says |\AtEndOfClass{\OnlyDescription}|.
+%\fi
+% \begin{macrocode}
+\StopEventually{\end{document}}
+
+% \end{macrocode}
+%\ifJAPANESE
+% $BJQ99MzNr$H:w0z$rAHHG$7$^$9!#(B
+% $BJQ99MzNr%U%!%$%k$H:w0z$N:n$jJ}$N>\:Y$K$D$$$F$O!"(B
+% $B$*$^$1(B\ref{app:shprog}$B$r;2>H$7$F$/$@$5$$!#(B
+%\else
+% Print Change History and Index.
+% Please refer to Appendix \ref{app:shprog} for
+% processing of Change History and Index.
+%\fi
+% \begin{macrocode}
+\clearpage
+\pagestyle{headings}
+% Make TeX shut up.
+\hbadness=10000
+\newcount\hbadness
+\hfuzz=\maxdimen
+%
+\PrintChanges
+\clearpage
+%
+\begingroup
+ \def\endash{--}
+ \catcode`\-\active
+ \def-{\futurelet\temp\indexdash}
+ \def\indexdash{\ifx\temp-\endash\fi}
+
+ \PrintIndex
+\endgroup
+% \end{macrocode}
+%\ifJAPANESE
+% \file{ltxdoc.cfg}$B$K(B2$BEYL\$N(B|\PrintIndex|$B$,;XDj$5$l$F$$$k$+$b$7$l$^$;$s!#(B
+% $B$=$3$G!":G8e$K!"JQ99MzNr$d:w0z$,(B2$BEYAHHG$5$l$J$$$h$&$K(B|\PrintChanges|$B$*$h$S(B
+% |\PrintIndex|$B%3%^%s%I$r2?$b<B9T$7$J$$$h$&$K$7$^$9!#(B
+%\else
+% Make sure that the index is not printed twice
+% (ltxdoc.cfg might have a second \PrintIndex command).
+%\fi
+% \begin{macrocode}
+\let\PrintChanges\relax
+\let\PrintIndex\relax
+\end{document}
+%</pldoc>
+% \end{macrocode}
+%
+%
+%
+%\ifJAPANESE
+% \section{$B$*$^$1%W%m%0%i%`(B}\label{app:omake}
+%
+% \subsection{$B%7%'%k%9%/%j%W%H(B\file{mkpldoc.sh}}\label{app:shprog}
+% \pLaTeXe{}$B$N%^%/%mDj5A%U%!%$%k$r$^$H$a$FAHHG$7!"JQ99MzNr$H:w0z$b(B
+% $BIU$1$k$H$-$KJXMx$J%7%'%k%9%/%j%W%H$G$9!#(B
+% $B$3$N%7%'%k%9%/%j%W%H(B\footnote{$B$3$N%7%'%k%9%/%j%W%H$O(BUNIX$BMQ$G$9!#(B
+% $B$7$+$7(Brm$B%3%^%s%I$r(Bdelete$B%3%^%s%I$K$9$k$J$I$9$l$P!"4JC1$K(BDOS$B$J$I$N%P%C%A(B
+% $B%U%!%$%k$K=$@5$9$k$3$H$,$G$-$^$9!#(B}$B$N;HMQJ}K!$O<!$N$H$*$j$G$9!#(B
+%\begin{verbatim}
+% sh mkpldoc.sh
+%\end{verbatim}
+%\else
+% \section{Additional Utility Programs}\label{app:omake}
+%
+% \subsection{Shell Script \file{mkpldoc.sh}}\label{app:shprog}
+% A shell script to process `pldoc.tex' and produce a fully indexed
+% source code description. Run |sh mkpldoc.sh| to use it.
+%\fi
+%
+%\ifJAPANESE
+% \subsubsection{\file{mkpldoc.sh}$B$NFbMF(B}
+% $B$^$:!"0JA0$K(B\file{pldoc.tex}$B$r=hM}$7$?$H$-$K:n@.$5$l$?!"(B
+% $BL\<!%U%!%$%k$d:w0z%U%!%$%k$J$I$r:o=|$7$^$9!#(B
+% \changes{v1.0c}{1997/01/23}{gind.ist$B$H(Bgglo.ist$B$r(B
+% \$TEXMF/tex/latex2e/base$B%G%#%l%/%H%j$+$i%3%T!<$7$J$$$h$&$K$7$?(B}
+% \changes{v1.0d}{2016/01/27}{rm$B%3%^%s%I<B9TA0$KB8:_3NG'$9$k$h$&$K$7$?(B}
+%\else
+% \subsubsection{Content of \file{mkpldoc.sh}}
+% First, delete auxiliary files which might be created in the
+% previous runs.
+% \changes{v1.0c}{1997/01/23}{Don't copy gind.ist and gglo.ist from
+% \$TEXMF/tex/latex2e/base directory.}
+% \changes{v1.0d}{2016/01/27}{Add -e test before rm command}
+%\fi
+% \begin{macrocode}
+%<*shprog>
+%<ja>rm -f pldoc.toc pldoc.idx pldoc.glo
+%<en>rm -f pldoc-en.toc pldoc-en.idx pldoc-en.glo
+% \end{macrocode}
+%\ifJAPANESE
+% $B$=$7$F!"(B\file{ltxdoc.cfg}$B$r6u$K$7$^$9!#(B
+% $B$3$N%U%!%$%k$O!"(B\file{jltxdoc.cls}$B$NDj5A$rJQ99$9$k$b$N$G$9$,!"(B
+% $B$3$3$G$O!"JQ99$5$l$?$/$"$j$^$;$s!#(B
+%\else
+% First run: empty the config file \file{ltxdoc.cfg}.
+%\fi
+% \begin{macrocode}
+echo "" > ltxdoc.cfg
+% \end{macrocode}
+%\ifJAPANESE
+% $B$=$7$F!"(B\file{pldoc.tex}$B$r=hM}$7$^$9!#(B
+%\else
+% Now process \file{pldoc.tex}.
+%\fi
+% \begin{macrocode}
+%<ja>platex pldoc.tex
+%<en>platex -jobname=pldoc-en pldoc.tex
+% \end{macrocode}
+%\ifJAPANESE
+% $B:w0z$HJQ99MzNr$r:n@.$7$^$9!#(B
+% $B$3$N%9%/%j%W%H$G$O!"JQ99MzNr$d:w0z$r@8@.$9$k$N$K(Bmendex$B%W%m%0%i%`$rMQ$$$F(B
+% $B$$$^$9!#(Bmendex$B$O(Bmakeindex$B$N>e0L8_49$N%U%!%$%k@07A%3%^%s%I$G!"(B
+% $B:w0z8l$NFI$_$r<+F0E*$KIU$1$k$J$I$N5!G=$,$"$j$^$9!#(B
+%
+% |-s|$B%*%W%7%g%s$O!":w0z%U%!%$%k$r@07A$9$k$?$a$N%9%?%$%k%*%W%7%g%s$G$9!#(B
+% $B:w0zMQ$N(B\file{gind.ist}$B$HJQ99MzNrMQ$N(B\file{gglo.ist}$B$O!"(B
+% \LaTeX{}$B$N%G%#%9%H%j%S%e!<%7%g%s$KIUB0$7$F$$$^$9!#(B
+%
+% |-o|$B$O!"=PNO$9$k%U%!%$%kL>$r;XDj$9$k%*%W%7%g%s$G$9!#(B
+%
+% |-f|$B$O!"9`L\$K(B``$BFI$_(B''$B$,$J$/$F$b%(%i!<$H$7$J$$%*%W%7%g%s$G$9!#(B
+% makeindex$B%3%^%s%I$K$O!"$3$N%*%W%7%g%s$,$"$j$^$;$s!#(B
+%\else
+% Make the Change log and Glossary (Change History) using mendex.
+% `Mendex' is a Japanese index processor, which is mostly upper
+% compatible with `makeindex' and automatically handles readings
+% of Kanji words.
+%
+% Option |-s| employs a style file for formatting.
+% Here we use \file{gind.ist} and \file{gglo.ist} from \LaTeXe.
+%
+% Option |-o| specifies output index file name.
+%
+% Option |-f| forces to output Kanji characters even non-existent
+% in dictionaries. (Makeindex does not have this option.)
+%\fi
+% \begin{macrocode}
+%<ja>mendex -s gind.ist -d pldoc.dic -o pldoc.ind pldoc.idx
+%<en>mendex -s gind.ist -d pldoc.dic -o pldoc-en.ind pldoc-en.idx
+%<ja>mendex -f -s gglo.ist -o pldoc.gls pldoc.glo
+%<en>mendex -f -s gglo.ist -o pldoc-en.gls pldoc-en.glo
+% \end{macrocode}
+%\ifJAPANESE
+% \file{ltxdoc.cfg}$B$NFbMF$r(B|\includeonly{}|$B$K$7!"(B\file{pldoc.tex}$B$r=hM}$7$^$9!#(B
+% $B$3$N%3%^%s%I$O!"0z?t$K;XDj$5$l$?%U%!%$%k$@$1$r(B``|\include|''$B$9$k$?$a$N(B
+% $B%3%^%s%I$G$9$,!"$3$3$G$O2?$b(B|\include|$B$7$?$/(B\emph{$B$J$$(B}$B$N$G!"(B
+% $B0z?t$K$O2?$b;XDj$r$7$^$;$s!#(B
+% $B$7$+$7!"(B|\input|$B$G;XDj$5$l$F$$$k%U%!%$%k$OFI$_9~$^$l$^$9!#(B
+% $B$7$?$,$C$F!"L\<!$d:w0z$dJQ99MzNr$N%U%!%$%k$,=hM}$5$l$^$9!#(B
+% $B$3$N=hM}$O!"<g$K!"$3$l$i$G%(%i!<$,=P$k$+$I$&$+$N3NG'$G$9!#(B
+%\else
+% Second run: append |\includeonly{}| to \file{ltxdoc.cfg} to
+% speed up things. This run is needed only to get changes and index
+% listed in \file{.toc} file.
+%\fi
+% \begin{macrocode}
+echo "\includeonly{}" > ltxdoc.cfg
+%<ja>platex pldoc.tex
+%<en>platex -jobname=pldoc-en pldoc.tex
+% \end{macrocode}
+%\ifJAPANESE
+% $B:G8e$K!":F$S(B\file{ltxdoc.cfg}$B$r6u$K$7$F!"(B\file{pldoc.tex}$B$r=hM}$r$7$^$9!#(B
+% $BK\J8$r(B1$B%Z!<%8$+$i3+;O$7$F$$$^$9$N$G!"$3$N8e!"$b$&0lEY=hM}$r$9$k(B
+% $BI,MW$O$"$j$^$;$s!#(B
+%\else
+% Third and final run: restore the cfg file to put
+% everything together.
+%\fi
+% \begin{macrocode}
+echo "" > ltxdoc.cfg
+%<ja>platex pldoc.tex
+%<en>platex -jobname=pldoc-en pldoc.tex
+# EOT
+%</shprog>
+% \end{macrocode}
+%
+%
+%\ifJAPANESE
+% \subsection{Perl$B%9%/%j%W%H(B\file{dstcheck.pl}}\label{app:plprog}
+% \dst{}$BJ8=q%U%!%$%k$O!"(B\LaTeX{}$B$N%=!<%9$H$=$NJ8=q$rF1;~$K4IM}$9$kJ}K!$H$7$F!"(B
+% $B$H$F$b$9$0$l$F$$$k$H;W$$$^$9!#$7$+$7!"$?$H$($P(B\file{jclasses.dtx}$B$N$h$&$K!"(B
+% $B>r7o$,B?$/$J$k$H!"F~$l;R9=B$$,$o$+$i$J$/$J$C$F$7$^$$$,$A$G$9!#(B
+% \LaTeX{}$B$G=hM}$9$l$P!"%(%i!<$K$h$C$F$o$+$j$^$9$,!"(B
+% $BJ8=q%U%!%$%k$,Bg$-$/$J$k$HLLE]$G$9!#(B
+%
+% $B$3$3$G$O!"(B\dst{}$BJ8=q%U%!%$%k$NF~$l;R9=B$$rD4$Y$k$N$KJXMx$J!"(B
+% perl$B%9%/%j%W%H$K$D$$$F@bL@$r$7$F$$$^$9!#(B
+%
+% $B$3$N(Bperl$B%9%/%j%W%H$N;HMQJ}K!$O<!$N$H$*$j$G$9!#(B
+%\else
+% \subsection{Perl Script \file{dstcheck.pl}}\label{app:plprog}
+% Here we provide a perl script which helps checking the nested
+% \dst\ guards. Usage:
+%\fi
+%
+%\begin{verbatim}
+% perl dstcheck.pl <file-name>
+%\end{verbatim}
+%
+%\ifJAPANESE
+%\else
+% The description of this script itself is available only in Japanese.
+%\fi
+%
+%\ifJAPANESE
+% \subsubsection{\file{dstcheck.pl}$B$NFbMF(B}
+% $B:G=i$K!"$3$N(Bperl$B%9%/%j%W%H$,2?$r$9$k$N$+$r4JC1$K5-=R$7$?%3%a%s%H$r(B
+% $BIU$1$^$9!#(B
+%\fi
+% \begin{macrocode}
+%<*plprog>
+##
+## DOCSTRIP $BJ8=qFb$N4D6-$d>r7o$NF~$l;R$rD4$Y$k(B perl $B%9%/%j%W%H(B
+##
+% \end{macrocode}
+%\ifJAPANESE
+% $B$3$N%9%/%j%W%H$O!"F~$l;R$NBP1~$rD4$Y$k$?$a$K!"<!$N%9%?%C%/$rMQ$$$^$9!#(B
+% \meta{$B>r7o(B}$B$"$k$$$O(B\meta{$B4D6-(B}$B$r3+;O$9$k%3!<%I$,8=$l$?$H$-$K!"(B
+% $B$=$l$i$O%9%?%C%/$K%W%C%7%e$5$l!"=*N;$9$k%3!<%I$G%]%C%W$5$l$^$9!#(B
+% $B$7$?$,$C$F!"8=:_$N(B\meta{$B>r7o(B}$B$"$k$$$O(B\meta{$B4D6-(B}$B$H!"(B
+% $B%9%?%C%/$+$i<h$j=P$7$?(B\meta{$B>r7o(B}$B$"$k$$$O(B\meta{$B4D6-(B}$B$H0lCW$9$l$P!"(B
+% $BBP1~$,<h$l$F$$$k$H$$$($^$9!#$=$&$G$J$1$l$P%(%i!<$G$9!#(B
+%
+% |@dst|$B%9%?%C%/$K$O!"(B\meta{$B>r7o(B}$B$,F~$j$^$9!#(B
+% $B>r7o$N3+;O$O!"(B``|%<*|\meta{$B>r7o(B}|>|''$B$G$9!#(B
+% $B>r7o$N=*N;$O!"(B``|%</|\meta{$B>r7o(B}|>|''$B$G$9!#(B
+% \meta{$B>r7o(B}$B$K$O!"(B|>|$BJ8;z$,4^$^$l$^$;$s!#(B
+% |@env|$B%9%?%C%/$K$O!"(B\meta{$B4D6-(B}$B$,F~$j$^$9!#(B
+%
+% $B@hF,$rL@<(E*$K<($9$?$a$K!"%@%_!<$NCM$r=i4|CM$H$7$FMQ$$$^$9!#(B
+% $B%9%?%C%/$O!"(B\meta{$B>r7o(B}$B$"$k$$$O(B\meta{$B4D6-(B}$B$NL>A0$H!"$=$N9THV9f$r%Z%"$K$7$F(B
+% $BA`:n$r$7$^$9!#(B
+%\fi
+% \begin{macrocode}
+push(@dst,"DUMMY"); push(@dst,"000");
+push(@env,"DUMMY"); push(@env,"000");
+% \end{macrocode}
+%\ifJAPANESE
+% $B$3$N(B|while|$B%k!<%W$NCf$N%9%/%j%W%H$O!"J8=q%U%!%$%k$N#19T$4$H$K<B9T$r$7$^$9!#(B
+%\fi
+% \begin{macrocode}
+while (<>) {
+% \end{macrocode}
+%\ifJAPANESE
+% $BF~NO9T$,>r7o$r3+;O$9$k9T$J$N$+$rD4$Y$^$9!#(B
+% $B>r7o$N3+;O9T$J$i$P!"(B|@dst|$B%9%?%C%/$K(B\meta{$B>r7o(B}$B$H9THV9f$r%W%C%7%e$7$^$9!#(B
+%\fi
+% \begin{macrocode}
+ if (/^%<\*([^>]+)>/) { # check conditions
+ push(@dst,$1);
+ push(@dst,$.);
+% \end{macrocode}
+%\ifJAPANESE
+% $B$=$&$G$J$1$l$P!">r7o$N=*N;9T$J$N$+$rD4$Y$^$9!#(B
+% $B8=:_9T$,>r7o$N=*N;$r<($7$F$$$k>l9g$O!"(B|@dst|$B%9%?%C%/$r%]%C%W$7$^$9!#(B
+%\fi
+% \begin{macrocode}
+ } elsif (/^%<\/([^>]+)>/) {
+ $linenum = pop(@dst);
+ $conditions = pop(@dst);
+% \end{macrocode}
+%\ifJAPANESE
+% $B8=:_9T$N(B\meta{$B>r7o(B}$B$H!"%9%?%C%/$+$i<h$j=P$7$?(B\meta{$B>r7o(B}$B$,0lCW$7$J$$>l9g!"(B
+% $B$=$N;]$N%a%C%;!<%8$r=PNO$7$^$9!#(B
+%
+% $B$J$*!"(B|DUMMY|$B$H0lCW$7$?>l9g$O!"0lHV30B&$N%k!<%W$,9g$C$F$$$J$$$H(B
+% $B$$$&$3$H$r<($7$F$$$^$9!#$3$N$H$-!"$3$l$i$N%@%_!<CM$r%9%?%C%/$KLa$7$^$9!#(B
+% $B$$$D$G$b%9%?%C%/$N@hF,$r%@%_!<CM$K$9$k$?$a$G$9!#(B
+%\fi
+% \begin{macrocode}
+ if ($1 ne $conditions) {
+ if ($conditions eq "DUMMY") {
+ print "$ARGV: `</$1>' (l.$.) is not started.\n";
+ push(@dst,"DUMMY");
+ push(@dst,"000");
+ } else {
+ print "$ARGV: `<*$conditions>' (l.$linenum) is ended ";
+ print "by `<*$1>' (l.$.)\n";
+ }
+ }
+ }
+% \end{macrocode}
+%\ifJAPANESE
+% $B4D6-$NF~$l;R$b>r7o$HF1$8$h$&$KD4$Y$^$9!#(B
+%
+% verbatim$B4D6-$N$H$-$K!"$=$NFbB&$r%9%-%C%W$7$F$$$k$3$H$KCm0U$r$7$F$/$@$5$$!#(B
+%\fi
+% \begin{macrocode}
+ if (/^% *\\begin\{verbatim\}/) { # check environments
+ while(<>) {
+ last if (/^% *\\end\{verbatim\}/);
+ }
+ } elsif (/^% *\\begin\{([^{}]+)\}\{(.*)\}/) {
+ push(@env,$1);
+ push(@env,$.);
+ } elsif (/^% *\\begin\{([^{}]+)\}/) {
+ push(@env,$1);
+ push(@env,$.);
+ } elsif (/^% *\\end\{([^{}]+)\}/) {
+ $linenum = pop(@env);
+ $environment = pop(@env);
+ if ($1 ne $environment) {
+ if ($environment eq "DUMMY") {
+ print "$ARGV: `\\end{$1}' (l.$.) is not started.\n";
+ push(@env,"DUMMY");
+ push(@env,"000");
+ } else {
+ print "$ARGV: \\begin{$environement} (l.$linenum) is ended ";
+ print "by \\end{$1} (l.$.)\n";
+ }
+ }
+ }
+% \end{macrocode}
+%\ifJAPANESE
+% $B$3$3$^$G$,!":G=i$N(B|while|$B%k!<%W$G$9!#(B
+%\fi
+% \begin{macrocode}
+}
+% \end{macrocode}
+%\ifJAPANESE
+% $BJ8=q%U%!%$%k$rFI$_9~$s$@8e!"=*N;$7$F$$$J$$>r7o$,$"$k$+$I$&$+$r3NG'$7$^$9!#(B
+% $B$9$Y$F$N>r7o$NBP1~$,$H$l$F$$$l$P!"$3$N;~E@$G$N(B|@dst|$B%9%?%C%/$K$O(B
+% $B%@%_!<CM$7$+F~$C$F$$$^$;$s!#$7$?$,$C$F!"BP1~$,<h$l$F$$$k>l9g$O!"(B
+% $B:G=i$N#2$D$N%]%C%W$K$h$C$F!"%@%_!<CM$,@_Dj$5$l$^$9!#(B
+% $B%@%_!<CM$G$J$1$l$P!"%@%_!<CM$K$J$k$^$G!"<h$j=P$7$?CM$r=PNO$7$^$9!#(B
+%\fi
+% \begin{macrocode}
+$linenum = pop(@dst);
+$conditions = pop(@dst);
+while ($conditions ne "DUMMY") {
+ print "$ARGV: `<*$conditions>' (l.$linenum) is not ended.\n";
+ $linenum = pop(@dst);
+ $conditions = pop(@dst);
+}
+% \end{macrocode}
+%\ifJAPANESE
+% $B4D6-$NF~$l;R$K$D$$$F$b!">r7o$NF~$l;R$HF1MM$K3NG'$r$7$^$9!#(B
+%\fi
+% \begin{macrocode}
+$linenum = pop(@env);
+$environment = pop(@env);
+while ($environment ne "DUMMY") {
+ print "$ARGV: `\\begin{$environment}' (l.$linenum) is not ended.\n";
+ $linenum = pop(@env);
+ $environment = pop(@env);
+}
+exit;
+%</plprog>
+% \end{macrocode}
+%
+%\ifJAPANESE
+% \subsection{\dst{}$B%P%C%A%U%!%$%k(B}
+% \changes{v1.0b}{1996/02/01}{\file{omake-sh.ins}, \file{omake-pl.ins}$B$r(B
+% \dst{}$B$NJQ99$K$H$b$J$&JQ99$r$7$?(B}
+% \changes{v1.0c}{1997/01/23}{\dst{}$B$K$H$b$J$&JQ99(B}
+% $B$3$3$G$O!"IUO?(B\ref{app:shprog}$B$HIUO?(B\ref{app:plprog}$B$G@bL@$r$7$?Fs$D$N(B
+% $B%9%/%j%W%H$r!"$3$N%U%!%$%k$+$i<h$j=P$9$?$a$N(B\dst{}$B%P%C%A%U%!%$%k$K$D$$$F(B
+% $B@bL@$r$7$F$$$^$9!#(B
+%\else
+% \subsection{\dst{} Batch file}
+% \changes{v1.0b}{1996/02/01}{Adjusted for the latest
+% \dst\ (\file{omake-sh.ins} and \file{omake-pl.ins}.}
+% \changes{v1.0c}{1997/01/23}{Adjusted for the latest \dst.}
+% Here we introduce a \dst\ batch file `Xins.ins,' which generates the
+% scripts described in Appendix \ref{app:shprog} and \ref{app:plprog}.
+%\fi
+%
+%\ifJAPANESE
+% $B$^$:!"(B\dst{}$B%Q%C%1!<%8$r%m!<%I$7$^$9!#(B
+% $B$^$?!"<B9T7P2a$N%a%C%;!<%8$r=PNO$7$J$$$h$&$K$7$F$$$^$9!#(B
+%\fi
+% \begin{macrocode}
+%<*Xins>
+\input docstrip
+\keepsilent
+% \end{macrocode}
+%\ifJAPANESE
+% \dst{}$B%W%m%0%i%`$O!"O"B3$9$kFs$D$N%Q!<%;%s%H5-9f(B(\%\%)$B$G$O$8$^$k9T$r(B
+% $B%a%?%3%a%s%H$H$_$J$7!">r7o$K$h$i$:=PNO$r$7$^$9!#(B
+% $B$7$+$7!"(B``\%''$B$O(B\TeX{}$B$G$O%3%a%s%H$G$"$C$F$b!"(Bsh$B$d(Bperl$B$K$H$C$F$O%3%a%s%H(B
+% $B$G$O$"$j$^$;$s!#$=$3$G!"%a%?%3%a%s%H$H$7$F=PNO$9$kJ8;z$r(B``\#\#''$B$H(B
+% $BJQ99$7$^$9!#(B
+%\fi
+% \begin{macrocode}
+{\catcode`#=12 \gdef\MetaPrefix{## }}
+% \end{macrocode}
+%\ifJAPANESE
+% $B$=$7$F!"%W%j%"%s%V%k$K=PNO$5$l$k%a%C%;!<%8$r@k8@$7$^$9!#(B
+% $B$3$3$G$O!"$H$/$K2?$b;XDj$7$F$$$^$;$s$,!"@k8@$r$7$J$$$H%G%U%)%k%H$N5-=R$,(B
+% `\%\%'$BIU$-$G=PNO$5$l$F$7$^$&$?$a!"$=$l$rM^@)$9$kL\E*$G;HMQ$7$F$$$^$9!#(B
+%\fi
+% \begin{macrocode}
+\declarepreamble\thispre
+\endpreamble
+\usepreamble\thispre
+% \end{macrocode}
+%\ifJAPANESE
+% $B%]%9%H%"%s%V%k$bF1MM$K!"@k8@$r$7$J$$$H(B`|\endinput|'$B$,=PNO$5$l$^$9!#(B
+%\fi
+% \begin{macrocode}
+\declarepostamble\thispost
+\endpostamble
+\usepostamble\thispost
+% \end{macrocode}
+%\ifJAPANESE
+% |\generate|$B%3%^%s%I$G!"$I$N%U%!%$%k$K!"$I$N%U%!%$%k$N$I$NItJ,$r=PNO$9$k$N$+(B
+% $B$r;XDj$7$^$9!#(B
+%\fi
+% \begin{macrocode}
+\generate{
+ \file{dstcheck.pl}{\from{platex.dtx}{plprog}}
+ \file{mkpldoc.sh}{\from{platex.dtx}{shprog,ja}}
+ \file{mkpldoc-en.sh}{\from{platex.dtx}{shprog,en}}
+}
+\endbatchfile
+%</Xins>
+% \end{macrocode}
+%
+% \newpage
+% \begin{thebibliography}{99}
+% \bibitem{platex2e-book}
+% $BCfLn(B $B8-(B
+% \newblock $B!XF|K\8l(B\LaTeXe $B%V%C%/!Y(B
+% \newblock $B%"%9%-!<(B, 1996.
+%
+% \bibitem{tate-book}
+% $B%$%s%W%l%9!&%i%\4F=$(B, $B%"%9%-!<=q@RJT=8ItJT(B
+% \newblock $B!X=DAHBP1~(B $B%Q!<%=%J%kF|K\8l(B\TeX{}$B!Y(B
+% \newblock $B%"%9%-!<=PHG6I(B, 1994
+%
+% \bibitem{jtex-tech}
+% $B%"%9%-!<=PHG5;=QIt@UG$JT=8(B
+% \newblock $B!XF|K\8l(B\TeX $B%F%/%K%+%k%V%C%/(BI$B!Y(B
+% \newblock $B%"%9%-!<(B, 1990.
+%
+% \bibitem{ajt2008okumura}
+% Haruhiko Okumura,
+% \newblock \pTeX\ and Japanese Typesetting
+% \newblock The Asian Journal of \TeX, Volume~2, No.~1, 2008.\\
+% (\texttt{http://ajt.ktug.org/2008/0201okumura.pdf})
+%
+% \bibitem{tb29hamano}
+% Hisato Hamano,
+% \newblock Vertical Typesetting with \TeX.
+% \newblock TUGboat issue 11:3, 1990.\\
+% (\texttt{https://tug.org/TUGboat/tb11-3/tb29hamano.pdf})
+%
+% \bibitem{tex-book}
+% Donald~E. Knuth.
+% \newblock ``{\em The \TeX book}''.
+% \newblock Addison-Wesley, 1984.
+% \newblock ($BK.Lu!':XF#?.CK4F=$(B, $B:mC+9%51Lu(B,
+% \TeX $B%V%C%/(B $B2~D{?7HG(B, $B%"%9%-!<=PHG6I(B, 1989)
+%
+% \bibitem{latex-book2}
+% Laslie Lamport.
+% \newblock ``{\em {\LaTeX:} A Document Preparation System}''.
+% \newblock Addison-Wesley, second edition, 1994.
+%
+% \bibitem{latex-book}
+% Laslie Lamport.
+% \newblock ``{\em {\LaTeX:} A Document Preparation System}''.
+% \newblock Addison-Wesley, 1986.
+% \newblock ($BK.Lu!'ARBtNI0l4F=$(B, $BBgLn=S<#!&>.JkGnDL!&F#1:$O$kH~Lu(B,
+% $BJ8=q=hM}%7%9%F%`(B \LaTeX, $B%"%9%-!<(B, 1990)
+%
+% \bibitem{latex-comp}
+% Michel Goossens, Frank Mittelbach, Alexander Samarin.
+% \newblock ``{\em The {\LaTeX} Companion}''.
+% \newblock Addison-Wesley, 1994.
+%
+% \bibitem{perl}
+% $B2OLn(B $B??<#(B
+% \newblock $B!XF~Lg(BPerl$B!Y(B
+% \newblock $B%"%9%-!<=PHG6I(B, 1994
+% \end{thebibliography}
+%
+% \iffalse
+% $B$3$3$G!"$3$N$"$H$KAHHG$5$l$k$+$b$7$l$J$$J8=q$N$?$a$K!"(B
+% $B@a8+=P$7$NHV9f$r;;MQ?t;z$KLa$7$^$9!#(B
+% \fi
+%
+% \renewcommand{\thesection}{\arabic{section}}
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/platex/platex.ini b/language/japanese/platex/platex.ini
new file mode 100644
index 0000000000..3ac0f71b23
--- /dev/null
+++ b/language/japanese/platex/platex.ini
@@ -0,0 +1,9 @@
+%% for pLaTeX (ASCII Nihongo LaTeX)
+%% written by Tono san (modified by texjporg 2016/05/12)
+%%
+\begingroup \catcode`\{=1 \catcode`\}=2%
+ \immediate\write20{<<< making "platex with Babel" format >>>}
+\endgroup
+\scrollmode
+\input platex.ltx
+\endinput
diff --git a/language/japanese/platex/platex.pdf b/language/japanese/platex/platex.pdf
new file mode 100644
index 0000000000..5cb716ebaf
--- /dev/null
+++ b/language/japanese/platex/platex.pdf
Binary files differ
diff --git a/language/japanese/platex/platexrelease.dtx b/language/japanese/platex/platexrelease.dtx
new file mode 100644
index 0000000000..2defdcf948
--- /dev/null
+++ b/language/japanese/platex/platexrelease.dtx
@@ -0,0 +1,384 @@
+% \iffalse meta-comment
+%% File: platexrelease.dtx
+%
+% Copyright (c) 2016-2019 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% \fi
+%
+%
+% \iffalse
+% \changes{v1.0}{2016/02/01}{first edition}
+% \changes{v1.0a}{2016/02/03}{latexrelease$B$r$b$H$K(Bplatexrelease$B$H$7$F3HD%(B}
+% \changes{v1.0b}{2016/02/16}{latexrelease$B$N%P!<%8%g%s3NG'$rF3F~(B}
+% \changes{v1.0c}{2016/04/12}{$B%I%-%e%a%s%H$r99?7(B}
+% \changes{v1.0d}{2016/06/08}{p\LaTeX\ \texttt{!<2016/04/17!>}$BHG$H(B
+% p\LaTeX\ \texttt{!<2016/05/07!>}$BHG$K7Y9p(B}
+% \changes{v1.0e}{2016/06/30}{p\LaTeX\ \texttt{!<2016/06/10!>}$BHG$K7Y9p(B}
+% \changes{v1.0f}{2016/07/05}{$B8E$$(Bplatexrelease$B$N7Y9p$K(B\cs{pfmtversion}$B$G(B
+% $B$J$/(B\cs{platexreleaseversion}$B$r;HMQ(B(\LaTeXe\ r1207)}
+% \changes{v1.0g}{2016/09/08}{p\LaTeX\ \texttt{!<2016/09/03!>}$BHG$K7Y9p(B}
+% \changes{v1.0h}{2017/09/26}{p\LaTeX\ \texttt{!<2017/07/29!>}$BHG$K7Y9p(B}
+% \changes{v1.0i}{2017/12/06}{$B%?%$%]=$@5(B}
+% \changes{v1.0j}{2018/01/27}{p\LaTeX\ \texttt{!<2017/09/26!>}$BHG$K7Y9p(B}
+% \changes{v1.0k}{2018/01/27}{Add \cs{platexreleaseversion} info
+% to \cs{ProvidesPackage} output
+% (sync with latexrelease.dtx 2017/12/17 v1.0i)}
+% \changes{v1.0l}{2018/04/06}{Drop an extra period in warning message
+% (sync with latexrelease.dtx 2018/02/18 v1.0j)}
+% \changes{v1.0m}{2018/05/22}{reset \cs{\requestedLaTeXdate} for
+% current and latest options
+% (sync with latexrelease.dtx 2018/05/08 v1.0k)}
+% \fi
+%
+% \iffalse
+\NeedsTeXFormat{pLaTeX2e}
+%<*driver>
+\def\platexreleaseversion{<date only known in .sty file>}
+\ProvidesFile{platexrelease.dtx}
+%</driver>
+%<platexrelease>\ProvidesPackage{platexrelease}
+ [2018/05/22 v1.0m latexrelease support for pLaTeX Kernel
+ (including releases up to \platexreleaseversion)]
+%<*driver>
+\documentclass{jltxdoc}
+\GetFileInfo{platexrelease.dtx}
+\author{Japanese \TeX\ Development Community}
+\title{The \textsf{platexrelease} package}
+\date{$B:n@.F|!'(B\filedate}
+\begin{document}
+ \newcommand\Lpack[1]{\textsf{#1}}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \changes{v1.0}{2016/02/01}{p\LaTeXe $BMQ$K(B\file{latexrelease.dtx}$B$r=$@5(B}
+% \changes{v1.0a}{2016/02/03}{latexrelease$B$r$b$H$K(Bplatexrelease$B$H$7$F3HD%(B}
+%
+% p\LaTeXe{}$B$,%Y!<%9$K$7$F$$$k(B\LaTeXe{}$B$O!"(B2015$BG/$h$jA0$^$G$O%+!<%M%k$N(B
+% $B8_49@-$r<:$o$;$kBg$-$JJQ99$O2C$($i$l$:!"=$@5$O(B\Lpack{fixltx2e}$B%Q%C%1!<%8(B
+% $B$GDs6!$5$l$F$$$^$7$?!#$7$+$7!"(B2015$BG/0J9_$O(B\Lpack{fixltx2e}$B$NJQ99E@$,(B
+% $B$9$Y$F(B\LaTeXe{}$B$N%+!<%M%k$K<h$j9~$^$l!"Be$o$j$K2a5n$N%P!<%8%g%s$N(B
+% \LaTeXe{}$B$r%(%_%e%l!<%H$9$k$?$a$N(B\Lpack{latexrelease}$B%Q%C%1!<%8$,Ds6!(B
+% $B$5$l$k$h$&$K$J$j$^$7$?!#(B
+%
+% $B$3$N(B\Lpack{platexrelease}$B%Q%C%1!<%8$O!"(Bp\LaTeXe{}$B$G(B\Lpack{latexrelease}$B$K(B
+% $BAjEv$9$k5!G=$rDs6!$9$k$?$a$N%Q%C%1!<%8$G$9!#(B
+% $B4pK\E*$J;H$$J}$O(B
+%\begin{verbatim}
+% \RequirePackage[2015/01/01]{platexrelease}
+% \documentclass{jarticle}
+% ....
+%\end{verbatim}
+% $B$G$9!#(B\Lpack{latexrelease}$B$NBe$o$j$K(B\Lpack{platexrelease}$B$rFI$_9~$^$J(B
+% $B$$$H!"(Bp\LaTeXe{}$B$GF|K\8lMQ$K2C$($?(B\LaTeXe{}$B$X$N%Q%C%A$,%-%c%s%;%k$5$l(B
+% $B$F$7$^$&>l9g$,$"$j$^$9$N$GCm0U$7$F$/$@$5$$!#$3$N$3$H$r%f!<%6$KCN$i$;$k(B
+% $B$?$a!"(Bp\LaTeX{}$B$N%+!<%M%k$O!"!V(B\Lpack{latexrelease}$B%Q%C%1!<%8$,FI$_9~(B
+% $B$^$l$?$N$K(B\Lpack{platexrelease}$B%Q%C%1!<%8$,FI$_9~$^$l$J$+$C$?>l9g!W$K(B
+% $B7Y9p$r=P$7!"(B\Lpack{platexrelease}$B%Q%C%1!<%8$NMxMQ$r?d>)$7$^$9!#$^$?!"(B
+% $B!VFI$_9~$^$l$?(B\Lpack{latexrelease}$B$K$D$$$F(B\Lpack{platexrelease}$B$,(B
+% $BL$CN$G$"$k!W>l9g$b!"(B\Lpack{platexrelease}$B$,K|A4$G$O$"$j$^$;$s$N$G7Y9p(B
+% $B$r=P$7$^$9!#(B\Lpack{latexrelease}$B$N;H$$$+$?$K$D$$$F$O!"(B
+% \Lpack{latexrelease}$B$N%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(B
+%
+% \section{$B%Q%C%1!<%8%*%W%7%g%s(B}
+%
+% \Lpack{latexrelease}$B%Q%C%1!<%8$HF1MM$G$9!#(B\Lpack{platexrelease}$B$K(B
+% $B;XDj$5$l$?%*%W%7%g%s$O!"FbIt$GFI$_9~$^$l$k(B\Lpack{latexrelease}$B$K$b(B
+% $B$=$N$^$^EO$j$^$9!#(B\Lpack{platexrelease}$B$H(B\Lpack{latexrelease}
+% $B$N4V$N4X78$b$3$3$G6qBNE*$K@bL@$7$^$9!#(B
+% \begin{itemize}
+% \item |\RequirePackage[|\emph{yyyy/mm/dd}|]{platexrelease}| \par
+% p\LaTeXe{}$B$N%U%)!<%^%C%H$NF|IU$r;XDj$7$^$9!#G$0U$NF|IU$r;XDj$G$-$^$9(B
+% $B$,!"%Q%C%1!<%8$h$j$bL$Mh$NF|IU$,;XDj$5$l$?>l9g$O7Y9p$7$^$9!#$3$N%*%W(B
+% $B%7%g%s$,;XDj$5$l$k$H!"!V(B\emph{yyyy/mm/dd}$B;~E@$N(B\LaTeX{}$B%+!<%M%k$rFI$_(B
+% $B9~$s$@8e$K!"F1$8$/(B\emph{yyyy/mm/dd}$B;~E@$N(Bp\LaTeX{}$B%+!<%M%k$rFI$_9~$s(B
+% $B$@$b$N!W$r%(%_%e%l!<%H$7$^$9!#(B
+% \item |\RequirePackage[current]{platexrelease}| \par
+% $B$3$l$O%G%U%)%k%H$N5sF0$G$9!#%U%)!<%^%C%H$NF|IU$O<B8zE*$KJQ99$7$^$;$s(B
+% $B$,!"(B|\plIncludeInRelease|$B%3%^%s%I$,Dj5A$5$l$k$3$H$rJ]>Z$7$^$9!#(B
+% $B6qBNE*$K$O(B\LaTeX{}$B$N%U%)!<%^%C%H$O(B |\fmtversion| $B$K!"(B% p\LaTeX{}$B$N(B
+% $B%U%)!<%^%C%H$O(B |\pfmtversion| $B$K$J$j$^$9!#(B
+% \item |\RequirePackage[latest]{platexrelease}| \par
+% p\LaTeX{}$B$N%U%)!<%^%C%H$NF|IU$r!"$3$N%U%!%$%k$N%j%j!<%9F|$K@_Dj$7$^$9!#(B
+% $B$7$?$,$C$F!"8E$$%U%)!<%^%C%H$r;H$C$F$$$k>l9g$O8=:_MxMQ2DG=$J$9$Y$F$N(B
+% $B%Q%C%A$,E,MQ$5$l$^$9!#6qBNE*$K$O!"!V(B\Lpack{latexrelease}$B$,CN$C$F$$$k(B
+% $B:G?7$N(B\LaTeX{}$B%+!<%M%k$rFI$_9~$s$@8e$K!"(B\Lpack{platexrelease}$B$,CN$C$F(B
+% $B$$$k:G?7$N(Bp\LaTeX{}$B%+!<%M%k$rFI$_9~$s$@$b$N!W$r%(%_%e%l!<%H$7$^$9!#(B
+% \end{itemize}
+%
+% \section{p\LaTeX{}$B%+!<%M%k$d%Q%C%1!<%83+H/<T8~$1(B}
+%
+% \subsection{$B%U%)!<%^%C%H:n@.$K$+$+$o$k%U%!%$%k$rJQ99$9$k>l9g(B}
+%
+% p\LaTeX{}$B$N%U%)!<%^%C%H(Bplatex.fmt$B$N%=!<%9$rJQ99$9$k>l9g$O!"Bg$^$+$K(B
+% $B0J2<$N$h$&$K%,!<%I$rIU$1$^$9!#(B
+% \begin{enumerate}
+% \item $B8E$$%3!<%I$r(B \par
+% |\plIncludeInRelease{$BF|IU(B}{$B%i%Y%k(B}{$B%a%C%;!<%8(B}| $B!D(B
+% |\plEndIncludeInRelease| \par
+% $B$K64$_!"A4BN$r(B |<platexrelease>| $B%,!<%I$N2<$KCV$-$^$9!#?7$7$$%3!<%I$H(B
+% $B6hJL$,$D$/$h$&$K!"$9$Y$F$N9T$K%,!<%I$rIU$1$^$9!#(B
+% \item $B?7$7$$%3!<%I$O(B \par
+% |\plIncludeInRelease{$BF|IU(B}{$B%i%Y%k(B}{$B%a%C%;!<%8(B}| $B!D(B
+% |\plEndIncludeInRelease| \par
+% $B$K64$_$^$9!#%3!<%IItJ,$O(B \verb+<*pl$B%J%s%H%+(B|platexrelease>+ $B%,!<%I$NCf!"(B
+% |\plIncludeInRelease| $B$H(B |\plEndIncludeInRelease| $B$K$O(B |<platexrelease>|
+% $B%,!<%I$rIU$1$^$9!#(B
+% \item $B$9$Y$F$N%3!<%I$O$b$H$b$H(B |<*pl$B%J%s%H%+(B>| $B%,!<%I$NCf$K$"$k$O$:$G$9(B
+% $B$N$G!"(B|\begin{macrocode}| $BD>8e$K$$$C$?$s(B |<*pl$B%J%s%H%+(B>| $B%,!<%I$r=*N;$7!"(B
+% |\end{macrocode}| $BD>A0$K$b$&0lEY(B |<*pl$B%J%s%H%+(B>| $B%,!<%I$r3+;O$7$^$9!#(B
+% \end{enumerate}
+% $BF|IU$O(B2006/11/10$B;~E@$N%"%9%-!<HG$N%3!<%I$J$i!V(B0000/00/00$B!W$H$7!"(B
+% $B$=$N8e$J$i!V<!2s%j%j!<%9!JM=Dj!KF|!W$H$7$^$9!#$9$Y$F$NF|IU%V%m%C%/$O(B
+% $B9_=g$KJB$Y$k$H$h$$$h$&$G$9!#(B
+%
+% $BE57?Nc$r<($7$^$9!#(B
+%\begin{verbatim}
+% % \begin{macro}{\em}
+% % \begin{macro}{\emph}
+% % \begin{macro}{\eminnershape}
+% % \changes{v1.3d}{1997/06/25}{\cs{em},\cs{emph}$B$GOBJ8$r6/D4=qBN$K(B}
+% % \changes{v1.6}{2016/02/01}{\LaTeX\ \texttt{!<2015/01/01!>}$B$G$N(B\cs{em}$B$N(B
+% % $BDj5AJQ99$KBP1~!#(B\cs{eminnershape}$B$rDI2C!#(B}
+% % $B=>Mh$O(B|\em|, |\emph|$B$GOBJ8%U%)%s%H$N@Z$jBX$($O9T$C$F$$$^$;$s$G$7$?$,!"(B
+% % $BOBJ8%U%)%s%H$b(B|\gtfamily|$B$K@Z$jBX$($k$h$&$K$7$^$7$?!#(B
+% % \LaTeX\ \texttt{<2015/01/01>}$B$GDI2C$5$l$?(B|\eminnershape|$B$b<h$jF~$l!"(B
+% % $B6/D4%3%^%s%I$rF~$l;R$K$9$k>l9g$N=qBN$r<+M3$K:FDj5A$G$-$k$h$&$K$J$j$^$7$?!#(B
+% % \begin{macrocode}
+% %</pldefs>
+% %<platexrelease>\plIncludeInRelease{2016/04/17}{\eminnershape}{\eminnershape}%
+% %<*pldefs|platexrelease>
+% \DeclareRobustCommand\em
+% {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+% \eminnershape \else \gtfamily \itshape \fi}%
+% \def\eminnershape{\mcfamily \upshape}%
+% %</pldefs|platexrelease>
+% %<platexrelease>\plEndIncludeInRelease
+% %<platexrelease>\plIncludeInRelease{0000/00/00}{\eminnershape}{\eminnershape}%
+% %<platexrelease>\DeclareRobustCommand\em
+% %<platexrelease> {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+% %<platexrelease> \mcfamily \upshape \else \gtfamily \itshape \fi}
+% %<platexrelease>\let\eminnershape\@undefined
+% %<platexrelease>\plEndIncludeInRelease
+% %<*pldefs>
+% % \end{macrocode}
+% % \end{macro}
+% % \end{macro}
+% % \end{macro}
+%\end{verbatim}
+%
+% $B$"$H$O!"(B|\ProvidesFile|$B$N%P!<%8%g%sHV9f!"(B|\CheckSum|$B!"(B|\changes|$B$H(B
+% $B$$$C$?=>Mh$HF1$8JQ99$r9T$$$^$9!#(B
+%
+% \subsection{$B%Q%C%1!<%8:n@.$K$+$+$o$k%U%!%$%k$rJQ99$9$k>l9g(B}
+%
+% $B%U%)!<%^%C%H$K$+$+$o$k>l9g$H0[$J$kE@$O!"(B|<platexrelease>| $B%,!<%I$,(B
+% $BITMW$G$"$k$H$$$&E@$G$9!#(B
+% \begin{enumerate}
+% \item $B8E$$%3!<%I$r(B \par
+% |\plIncludeInRelease{$BF|IU(B}[$B%U%)!<%^%C%H$NF|IU(B]{$B%i%Y%k(B}{$B%a%C%;!<%8(B}|
+% $B!D(B |\plEndIncludeInRelease| \par
+% $B$K64$_$^$9!#(B
+% \item $B?7$7$$%3!<%I$r(B \par
+% |\plIncludeInRelease{$BF|IU(B}[$B%U%)!<%^%C%H$NF|IU(B]{$B%i%Y%k(B}{$B%a%C%;!<%8(B}|
+% $B!D(B |\plEndIncludeInRelease| \par
+% $B$K64$_$^$9!#(B
+% \end{enumerate}
+% $BF|IU$O(B2006/11/10$B;~E@$N%"%9%-!<HG$N%3!<%I$J$i!V(B0000/00/00$B!W$H$7!"(B
+% $B$=$N8e$J$i!V<!2s%j%j!<%9!JM=Dj!KF|!W$H$7$^$9!#$9$Y$F$NF|IU%V%m%C%/$O(B
+% $B9_=g$KJB$Y$k$H$h$$$h$&$G$9!#(B
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \section{$B%3!<%I(B}
+%
+% $B:G=i$K(B\Lpack{latexrelease}$B%Q%C%1!<%8$rFI$_9~$_$^$9!#(B
+% \begin{macrocode}
+%<*platexrelease>
+\RequirePackageWithOptions{latexrelease}
+% \end{macrocode}
+%
+% $BFI$_9~$s$@(B\Lpack{latexrelease}$B%Q%C%1!<%8$N%P!<%8%g%s$r3NG'$7!"(B
+% \Lpack{platexrelease}$B$,L$BP1~$N?7$7$$$b$N$G$"$C$?>l9g$K7Y9p$7$^$9!#(B
+% \changes{v1.0b}{2016/02/16}{latexrelease$B$N%P!<%8%g%s3NG'$rF3F~(B}
+% \begin{macrocode}
+\ifnum\expandafter\@parse@version\latexreleaseversion//00\@nil
+ >\expandafter\@parse@version\p@known@latexreleaseversion//00\@nil
+ \PackageWarningNoLine{platexrelease}{%
+ Version of `latexrelease' is newer than\MessageBreak
+ what `platexrelease' knows}
+\fi
+% \end{macrocode}
+%
+% \Lpack{platexrelease}$B%Q%C%1!<%8$N%*%W%7%g%s$rDj5A$7$^$9!#%3!<%I$O(B
+% \Lpack{latexrelease}$B$N$b$N$r(Bp\LaTeXe{}$BMQ$K=q$-49$($?$b$N$G$9!#(B
+% \changes{v1.0m}{2018/05/22}{reset \cs{\requestedLaTeXdate} for
+% current and latest options
+% (sync with latexrelease.dtx 2018/05/08 v1.0k)}
+% \begin{macrocode}
+\DeclareOption*{%
+ \def\@plIncludeInRelease#1[#2]{\@plIncludeInRele@se{#1}}%
+ \let\requestedplpatchdate\CurrentOption}
+\DeclareOption{latest}{%
+ \let\requestedplpatchdate\platexreleaseversion
+ \AtEndOfPackage{\def\requestedpLaTeXdate{0}}}
+\DeclareOption{current}{%
+ \let\requestedplpatchdate\pfmtversion
+ \AtEndOfPackage{\def\requestedpLaTeXdate{0}}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\let\requestedplpatchdate\pfmtversion
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\reserved@a{%
+\edef\requestedpLaTeXdate{\the\count@}%
+\reserved@b}
+\def\reserved@b#1\\{%
+\def\reserved@b{#1}%
+\ifx\reserved@b\@empty\else
+\PackageError{platexrelease}%
+ {Unexpected option \requestedplpatchdate}%
+ {The option must be of the form yyyy/mm/dd or yyyy-mm-dd}%
+\fi}
+\afterassignment\reserved@a
+\count@\expandafter
+ \@parse@version\expandafter0\requestedplpatchdate//00\@nil\\
+% \end{macrocode}
+%
+% \begin{macrocode}
+\edef\currentpLaTeXdate{%
+ \expandafter\@parse@version\pfmtversion//00\@nil}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifnum\requestedpLaTeXdate=\currentpLaTeXdate
+\PackageWarningNoLine{platexrelease}{%
+ Current format date selected, no patches applied}
+\expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% $B$h$j?7$7$$%U%)!<%^%C%H$KBP$7$F$O!"$h$j?7$7$$%P!<%8%g%s$N(B
+% \Lpack{platexrelease}$B$,Ds6!$5$l$F$$$k$O$:$G$9!#(B
+% \changes{v1.0f}{2016/07/05}{$B8E$$(Bplatexrelease$B$N7Y9p$K(B\cs{pfmtversion}$B$G(B
+% $B$J$/(B\cs{platexreleaseversion}$B$r;HMQ(B(\LaTeXe\ r1207)}
+% \begin{macrocode}
+\ifnum\currentpLaTeXdate
+ >\expandafter\@parse@version\platexreleaseversion//00\@nil
+\PackageWarningNoLine{platexrelease}{%
+The current package is for an older pLaTeX format:\MessageBreak
+pLaTeX \platexreleaseversion\space\MessageBreak
+Obtain a newer version of this package!}
+\expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% $B>-Mh$N(Bp\LaTeXe{}$B$r$D$/$j$@$9%Q%C%A$O$"$j$^$;$s$,!"%*%W%7%g%s$O(B
+% $B8=;~E@$G$O<u$1F~$l$^$9!#(B
+% \begin{macrocode}
+\ifnum\requestedpLaTeXdate
+ >\expandafter\@parse@version\platexreleaseversion//00\@nil
+\PackageWarningNoLine{platexrelease}{%
+The current package is for pLaTeX \platexreleaseversion:\MessageBreak
+It has no patches beyond that date\MessageBreak
+There may be an updated version\MessageBreak
+of this package available from CTAN}
+\expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% $B%U%)!<%^%C%H$N%P!<%8%g%s$rMW5a$5$l$F$$$kF|IU$K99?7$7$^$9!#(B
+% \begin{macrocode}
+\let\pfmtversion\requestedplpatchdate
+\let\currentpLaTeXdate\requestedpLaTeXdate
+%</platexrelease>
+% \end{macrocode}
+%
+% $B$3$N$"$H$O!"(Bp\LaTeXe{}$B$N%+!<%M%k$NJQ99E@$r<($9%3!<%I$,F~$j$^$9!#(B
+%
+% \section{$BCm0U!'(Bp\LaTeXe{}$B$N%P%0>pJs(B}
+%
+% $B0J2<$NF|IU$N(Bp\LaTeXe{}$B$K$O(Bcritical$B$J%P%0$,$"$k$3$H$r!"(B
+% $BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$,GD0.$7$F$$$^$9!#(B
+% $B%(%_%e%l!<%H$7$h$&$H9M$($F$$$k>l9g$O!"Cm0U$7$F$/$@$5$$!#(B
+% \changes{v1.0d}{2016/06/08}{p\LaTeX\ \texttt{!<2016/04/17!>}$BHG$H(B
+% p\LaTeX\ \texttt{!<2016/05/07!>}$BHG$K7Y9p(B}
+% \changes{v1.0e}{2016/06/30}{p\LaTeX\ \texttt{!<2016/06/10!>}$BHG$K7Y9p(B}
+% \changes{v1.0g}{2016/09/08}{p\LaTeX\ \texttt{!<2016/09/03!>}$BHG$K7Y9p(B}
+% \changes{v1.0h}{2017/09/26}{p\LaTeX\ \texttt{!<2017/07/29!>}$BHG$K7Y9p(B}
+% \changes{v1.0i}{2017/12/06}{$B%?%$%]=$@5(B}
+% \changes{v1.0j}{2018/01/27}{p\LaTeX\ \texttt{!<2017/09/26!>}$BHG$K7Y9p(B}
+% \begin{macrocode}
+\def\pliirpkg@ver@warn{%
+ You selected pLaTeX2e <\pfmtversion>, but\MessageBreak
+ this version of pLaTeX2e is known to have\MessageBreak
+ some critical bugs. We advise you to\MessageBreak
+ select another format date}
+\plIncludeInRelease{2017/10/28}{\PackageWarning}{pLaTeX Info}%
+ % * <2019-04-06>
+ % * <2018-12-01>
+ % * <2018-07-28>+1
+ % * <2018-07-28>
+ % * <2018-05-20>
+ % * <2018-04-01>+2
+ % * <2018-04-01>+1
+ % * <2018-04-01>
+ % * <2018/03/09>+1
+ % * <2018/03/09>
+ % * <2017/10/28>+4
+\plEndIncludeInRelease
+\plIncludeInRelease{2017/07/29}{\PackageWarning}{pLaTeX Info}%
+ % * <2017/10/28>+3
+ % * <2017/10/28>+2
+ % * <2017/10/28>+1
+ % * <2017/10/28>
+ % * <2017/09/26>
+ % * <2017/07/29>+1
+ % - Enabling \linebreak before prebreakpenalty caused
+ % ineffective \nolinebreak (fixed in <2017/10/28>+4)
+ % * <2017/07/29>
+ % - Inhibit JFM glue in tabular cells resulted in
+ % misplaced right alignment (fixed in <2017/09/26>)
+ \PackageWarningNoLine{platexrelease}{\pliirpkg@ver@warn}
+\plEndIncludeInRelease
+\plIncludeInRelease{2016/09/08}{\PackageWarning}{pLaTeX Info}%
+ % * <2017/05/05>
+ % * <2017/04/08>
+ % * <2016/11/29>
+ % * <2016/09/08>
+\plEndIncludeInRelease
+\plIncludeInRelease{2016/09/03}{\PackageWarning}{pLaTeX Info}%
+ % * <2016/09/03>
+ % - \footnotetext in vertical mode resulted in extra
+ % vertical space (fixed in <2016/09/08>)
+ \PackageWarningNoLine{platexrelease}{\pliirpkg@ver@warn}
+\plEndIncludeInRelease
+\plIncludeInRelease{2016/07/01}{\PackageWarning}{pLaTeX Info}%
+ % * <2016/07/01>
+\plEndIncludeInRelease
+\plIncludeInRelease{2016/04/17}{\PackageWarning}{pLaTeX Info}%
+ % * <2016/06/10>+1
+ % * <2016/06/10>
+ % * <2016/05/07>
+ % * <2016/04/17>
+ % - Fix for non-zero baselineshift in accent composition
+ % was problematic (fixed in <2016/07/01>)
+ \PackageWarningNoLine{platexrelease}{\pliirpkg@ver@warn}
+\plEndIncludeInRelease
+\plIncludeInRelease{0000/00/00}{\PackageWarning}{pLaTeX Info}%
+ % * <2006/11/10>
+\plEndIncludeInRelease
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/platex/platexrelease.ins b/language/japanese/platex/platexrelease.ins
new file mode 100644
index 0000000000..d7b49dc39b
--- /dev/null
+++ b/language/japanese/platex/platexrelease.ins
@@ -0,0 +1,25 @@
+\input docstrip
+\keepsilent
+\ifToplevel{\askonceonly}
+\usedir{tex/platex/base}
+
+\Msg{*** Generating the pLaTeX files for supporting latexrelease ***}
+
+\preamble
+
+Copyright (c) 2016-2018 Japanese TeX Development Community
+
+This file is part of the pLaTeX2e system (community edition).
+-------------------------------------------------------------
+
+\endpreamble
+
+\generate{
+ \file{platexrelease.sty}{
+ \from{plvers.dtx}{platexrelease}
+ \from{platexrelease.dtx}{platexrelease}
+ \from{plfonts.dtx}{platexrelease}
+ \from{plcore.dtx}{platexrelease}}
+}
+
+\endbatchfile
diff --git a/language/japanese/platex/platexrelease.pdf b/language/japanese/platex/platexrelease.pdf
new file mode 100644
index 0000000000..df2e838e32
--- /dev/null
+++ b/language/japanese/platex/platexrelease.pdf
Binary files differ
diff --git a/language/japanese/platex/plcls.ins b/language/japanese/platex/plcls.ins
new file mode 100644
index 0000000000..6993d136ba
--- /dev/null
+++ b/language/japanese/platex/plcls.ins
@@ -0,0 +1,48 @@
+\input docstrip
+\keepsilent
+\ifToplevel{\askonceonly}
+\usedir{tex/platex/base}
+
+\Msg{*** Generating the pLaTeX class files ***}
+
+\preamble
+
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016-2019 Japanese TeX Development Community
+
+This file is part of the pLaTeX2e system (community edition).
+-------------------------------------------------------------
+
+\endpreamble
+
+%
+% $B2#AHMQ%/%i%9%U%!%$%k(B
+%
+\generate{
+ \file{jarticle.cls}{\from{jclasses.dtx}{article,yoko}}
+ \file{jreport.cls}{\from{jclasses.dtx}{report,yoko}}
+ \file{jbook.cls}{\from{jclasses.dtx}{book,yoko}}
+ \file{jsize10.clo}{\from{jclasses.dtx}{10pt,yoko}}
+ \file{jsize11.clo}{\from{jclasses.dtx}{11pt,yoko}}
+ \file{jsize12.clo}{\from{jclasses.dtx}{12pt,yoko}}
+ \file{jbk10.clo}{\from{jclasses.dtx}{10pt,bk,yoko}}
+ \file{jbk11.clo}{\from{jclasses.dtx}{11pt,bk,yoko}}
+ \file{jbk12.clo}{\from{jclasses.dtx}{12pt,bk,yoko}}
+}
+
+%
+% $B=DAHMQ%/%i%9%U%!%$%k(B
+%
+\generate{
+ \file{tarticle.cls}{\from{jclasses.dtx}{article,tate}}
+ \file{treport.cls}{\from{jclasses.dtx}{report,tate}}
+ \file{tbook.cls}{\from{jclasses.dtx}{book,tate}}
+ \file{tsize10.clo}{\from{jclasses.dtx}{10pt,tate}}
+ \file{tsize11.clo}{\from{jclasses.dtx}{11pt,tate}}
+ \file{tsize12.clo}{\from{jclasses.dtx}{12pt,tate}}
+ \file{tbk10.clo}{\from{jclasses.dtx}{10pt,bk,tate}}
+ \file{tbk11.clo}{\from{jclasses.dtx}{11pt,bk,tate}}
+ \file{tbk12.clo}{\from{jclasses.dtx}{12pt,bk,tate}}
+}
+
+\endbatchfile
diff --git a/language/japanese/platex/plcore.dtx b/language/japanese/platex/plcore.dtx
new file mode 100644
index 0000000000..d71af9c45f
--- /dev/null
+++ b/language/japanese/platex/plcore.dtx
@@ -0,0 +1,2474 @@
+% \iffalse meta-comment
+%% File: plcore.dtx
+%
+% Copyright 1994-2001 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016-2019 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ifx\JAPANESEtrue\undefined
+ \expandafter\newif\csname ifJAPANESE\endcsname
+ \JAPANESEtrue
+\fi
+\def\eTeX{$\varepsilon$-\TeX}
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+%</driver>
+% \fi
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.0}{1994/09/16}{first edition}
+% \changes{v1.1}{1995/04/12}{$B5SCm%^%/%m=$@5(B}
+% \changes{v1.1a}{1995/11/10}{\cs{topmargin}$B$,H?1G$5$l$J$$%P%0$r=$@5(B}
+% \changes{v1.1b}{1996/01/26}{$B5SCm%^!<%/$N8e$m$KM>7W$J%9%Z!<%9$,F~$k$N$r=$@5(B}
+% \changes{v1.1c}{1996/01/30}{$B%U%!%$%kL>$r(B\file{ploutput.dtx}$B$+$i(B
+% \file{plcore.dtx}$B$H$7$?!#%-%c%W%7%g%s3HD%$r(B\file{plext.dtx}$B$K0\F0!#(B
+% $B%W%j%"%s%V%k%3%^%s%I$rDI2C(B}
+% \changes{v1.1d}{1996/02/17}{\cs{printglossary}$B$rDI2C(B}
+% \changes{v1.1e}{1996/03/12}{tabbing$B4D6-$G$NOB2$J84V%9%Z!<%9(B}
+% \changes{v1.1f}{1996/07/10}{$B%H%s%\$^$o$j$r=$@5(B}
+% \changes{v1.1g}{1997/01/16}{\LaTeX\ \textt{!<1996/06/01!>}$B$KBP1~(B}
+% \changes{v1.1h}{1997/06/25}{\LaTeX{}$B$N2~9T%^%/%m$NJQ99$KBP1~!#(B
+% $B$"$j$,$H$&!"1|B<$5$s!#(B}
+% \changes{v1.1i}{1998/02/03}{\cs{@shipoutsetup}$B$r(B\cs{@outputpage}$BFb$KF~$l$?(B}
+% \changes{v1.1j}{2001/05/10}{\cs{@makecol}$B$GAH$_N)$F$i$l$k(B
+% \cs{@outputbox}$B$NBg$-$5$,!"=DAH$GCf?H$,6u$N%\%C%/%9$@$1$N>l9g$bE,@5$K$J$k(B
+% $B$h$&$K=$@5(B}
+% \changes{v1.2}{2001/09/04}{$BK\J8$H(B\cs{footnoterule}$B$,=E$J$C$F$7$^$&$N$r=$@5(B}
+% \changes{v1.2a}{2001/09/26}{\LaTeX\ \texttt{!<2001/06/01!>}$B$KBP1~(B}
+% \changes{v1.2b}{2016/01/26}{2013$BG/0J9_$N(Bp\TeX\ (r28720)$B$G5SCmHV9f$NA08e$NOBJ8J8;z(B
+% $B$H$N4V$K(Bxkanjiskip$B$,F~$C$F$7$^$&LdBj$KBP1~!#(B
+% \cs{@outputbox}$B$N?<$5$,B>$N$b$N$N0LCV$K1F6A$rM?$($J$$(B
+% $B$h$&$K$9$k(B\texttt{\cs{vskip}~-\cs{dimen@}}$B$,=DAH%b!<%I$G$OL58z$K$J$C$F$$$?$N$G=$@5(B}
+% \changes{v1.2c}{2016/02/28}{1.2b$B$HF1MM$N=$@5$r(Btabular$B4D6-$K$b9T$C$?(B}
+% \changes{v1.2c}{2016/02/28}{1.2b$B$HF1MM$N=$@5$r(B\cs{parbox}$BL?Na$K$b9T$C$?(B}
+% \changes{v1.2c}{2016/02/28}{1.2b$B$HF1MM$N=$@5$r(B\cs{underline}$BL?Na$K$b9T$C$?(B}
+% \changes{v1.2d}{2016/04/01}{multicol$B%Q%C%1!<%8$r;H$&$H%H%s%\$N2<C<$,=L$`LdBj$r=$@5(B}
+% \changes{v1.2e}{2016/05/20}{\file{fltrace}$B%Q%C%1!<%8$N(Bp\LaTeX{}$BHG(B
+% $B$H$7$F(B\file{pfltrace}$B%Q%C%1!<%8$r?7@_(B}
+% \changes{v1.2f}{2016/06/30}{\cs{@begindvibox}$B$r>o$K2#AH$K(B}
+% \changes{v1.2g}{2016/08/25}{$B%+%&%s%?(B\cs{pltx@foot@penalty}$B$rDI2C(B}
+% \changes{v1.2g}{2016/08/25}{$B9g0u$NA0$NJ8;z$H9g0u$N4V$r%Y%?AH$K(B}
+% \changes{v1.2g}{2016/08/25}{$BJD$83g8LN`$ND>8e$K(B\cs{footnotetext}$B$,B3$/(B
+% $B>l9g$K2~9T$,5/$-$k$3$H$,$"$kLdBj$KBP=h(B}
+% \changes{v1.2g}{2016/08/25}{$B5SCm$N9g0uD>8e$G$N2~9T$,6X;_$5$l$F$7$^$&(B
+% $BLdBj$KBP=h(B}
+% \changes{v1.2h}{2016/09/01}{$B=DAH$G(Blongtable$B%Q%C%1!<%8$r;H$C$FI=AH$NESCf$G2~%Z!<%8(B
+% $B$9$k$H$-L58B%k!<%W$,5/$3$kLdBj$KBP=h(B(Issue 21)}
+% \changes{v1.2i}{2016/09/08}{v1.2g$B$N=$@5$GF~$l$?(B\cs{null}$B$,$^$:$+$C$?$N$G(B
+% $B?eJ?%b!<%I$N$H$-$@$1H/9T$9$k$3$H$K$7$?(B(Issue 23)}
+% \changes{v1.2j}{2016/11/09}{FAM256$B%Q%C%AE,MQ(Be-p\TeX{}$B$KBP1~(B}
+% \changes{v1.2k}{2017/02/20}{$BL\<!$G(B\cs{ref}$B$r;H$C$?>l9g$K8e$m$N6uGr$,>C$($k(B
+% $B8=>]$KBP=h$9$k$?$a!"(B\cs{relax}$B$N$"$H$K(B\{\}$B$rDI2C(B}
+% \changes{v1.2l}{2017/02/25}{$B5SCm$H%\%H%`%U%m!<%H$N=g=x$rF~$lBX$($?$3$H$G(B
+% $BHGLLA4BN$N?bD>0LCV$,$:$l$F$$$?$N$r=$@5(B(Issue 32)}
+% \changes{v1.2l}{2017/02/25}{\cs{@makecol}$B$rJQ99$7$?$N$K(B
+% \cs{@makespecialcolbox}$B$rJQ99$7$J$$!"$H$$$&H=CG$K$D$$$FL@J82=(B}
+% \changes{v1.2m}{2017/03/19}{\cs{language}$B$r%j%;%C%H(B
+% (sync with ltoutput.dtx 2017/03/10 v1.3c)}
+% \changes{v1.2m}{2017/03/19}{\cs{verb}$B$NESCf$G%O%$%U%M!<%7%g%s$,5/$-$J$$(B
+% $B$h$&$K(B\cs{language}$B$r@_Dj(B(sync with ltmiscen.dtx 2017/03/09 v1.1m)}
+% \changes{v1.2n}{2017/04/23}{$B%I%-%e%a%s%H$NDI2C(B}
+% \changes{v1.2o}{2017/05/03}{$B9TF,6XB'J8;z$ND>A0$G$b2~9T$9$k$h$&$K$7$?(B}
+% \changes{v1.2p}{2017/07/21}{tabular$B4D6-$N%;%kFb$N(BJFM$B%0%k!=$r:o=|(B}
+% \changes{v1.2q}{2017/08/25}{\cs{nolinebreak}$B$N>l9g$K(B\cs{(x)kanjiskip}$B$,(B
+% $BF~$i$J$/$J$C$F$$$?$N$r=$@5(B}
+% \changes{v1.2r}{2017/09/26}{tabular$B4D6-$N1&B7$((B(r)$B$G7S@~$,$:$l$k$h$&$K(B
+% $B$J$C$F$$$?%P%0$r=$@5(B}
+% \changes{v1.2s}{2017/09/27}{$BAj8_;2>H$N%9%Z!<%9%U%!%/%?!<$rJd@5(B}
+% \changes{v1.2s}{2017/09/27}{\cs{verb}$B$NKAF,$NH>3Q6uGr$rJ];}(B}
+% \changes{v1.2s}{2017/09/27}{tabbing$B4D6-$N9TKAF,$N(BJFM$B%0%k!=$r:o=|(B}
+% \changes{v1.2t}{2017/10/31}{v1.2s$B$NJQ99$KH<$$!"(B\cs{ref}$B$,?t<0%b!<%I$G(B
+% $B%(%i!<$K$J$C$F$$$?$N$r=$@5(B}
+% \changes{v1.2u}{2017/11/04}{emath$B$N(B\cs{marusuuref}$BBP:v(B}
+% \changes{v1.2v}{2018/01/27}{v1.2o$B$H(Bv1.2q$B$N=$@5$G(B\cs{nolinebreak}$B$,(B
+% $B8z$+$J$$>l9g$,$"$C$?$N$G!"85$KLa$7$?(B}
+% \changes{v1.2w}{2018/02/24}{e-up\TeX{}$B$G$b(B\cs{omathchardef}$B$r;HMQ(B}
+% \changes{v1.2x}{2018/03/01}{JFM$B%0%k!<%N!<%I$r:o=|$9$k%^%/%mDI2C(B}
+% \changes{v1.2x}{2018/03/01}{\cs{removejfmglue}$B$,$"$l$PMxMQ$9$k$h$&$K$7$?(B}
+% \changes{v1.2x}{2018/03/01}{$B%;%k:G=i$N(B\cs{par}$B$G6u9T$,F~$i$J$$$h$&$K$7$?(B}
+% \changes{v1.2x}{2018/03/01}{\cs{everypar}$B$K(B\cs{inhibitglue}$B$r;E9~$`%^%/%mDI2C(B}
+% \changes{v1.2y}{2018/03/12}{\cs{inhibitglue}$B$r(B\cs{everypar}$B$NKvHx$K0\F0(B}
+% \changes{v1.2z}{2018/05/13}{\cs{@tombowbleed}$B%^%/%mDI2C(B}
+% \changes{v1.2z}{2018/05/13}{\cs{@tombowcolor}$B%^%/%mDI2C(B}
+% \changes{v1.2z}{2018/05/13}{bleed$BI}$r(B\cs{@tombowbleed}$B$K@Z$j=P$7(B}
+% \changes{v1.2z}{2018/05/13}{$B?'$NIU$$$?%F%-%9%H$NESCf$G2~%Z!<%8$9$k$H(B
+% $B%H%s%\$K$b?'$,IU$/8=>]$KBP=h!"$5$i$K%H%s%\$N?'$r(B\cs{@tombowcolor}$B$X!&(B
+% bleed$BI}$r(B\cs{@tombowbleed}$B$K@Z$j=P$7(B}
+% \changes{v1.2z}{2018/05/13}{$B%3%^%s%I$KJ,N%!"$5$i$K(B
+% bleed$BI}$r(B\cs{@tombowbleed}$B$K@Z$j=P$7(B}
+% \changes{v1.2z}{2018/05/13}{\cs{@tombowreset@@paper}$B%3%^%s%I$KJ,N%(B}
+% \changes{v1.3}{2018/09/02}{\cs{removejfmglue}$B$N5sF0$rL@J82=(B}
+% \changes{v1.3}{2018/09/02}{\file{platexrelease}$B%P%0=$@5(B}
+% \changes{v1.3a}{2018/10/31}{\LaTeXe{}$B$H(Bp\LaTeXe{}$B$N99?7%?%$%_%s%0$:$lBP:v$r(B
+% \file{plvers.dtx} (plfinal) $B$+$i(B\file{plcore.dtx}$B$X0\F0!"(Blatexrelease$BBP:v(B
+% (sync with ltfinal 2018/08/24 v2.1f)}
+% \changes{v1.3b}{2019/02/08}{$BCf1{B7$($N%;%k$G$N(B\cs{unskip}$BBP:v(B
+% (sync with lttab 2018/12/30 v1.1p)}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{plcore.dtx}[2019/02/08 v1.3b pLaTeX core file]
+% \iffalse
+\documentclass{jltxdoc}
+\GetFileInfo{plcore.dtx}
+\title{p\LaTeXe{}$B$N3HD%(B\space\fileversion}
+\author{Ken Nakano \& Hideaki Togashi}
+\date{$B:n@.F|!'(B\filedate}
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \section{$B35MW(B}\label{plcore:intro}
+% $B$3$N%U%!%$%k$G$O!"$D$.$N5!G=$N3HD%$d=$@5$r9T$C$F$$$^$9!#(B
+% $B>\:Y$O!"$=$l$>$l$N9`L\$N@bL@$r;2>H$7$F$/$@$5$$!#(B
+%
+% \begin{itemize}
+% \item $B%W%j%"%s%V%k%3%^%s%I(B
+% \item $B2~%Z!<%8(B
+% \item $B2~9T(B
+% \item $B%*%V%8%'%/%H$N=PNO=g=x(B
+% \item $B%H%s%\(B
+% \item $B5SCm%^%/%m(B
+% \item $BAj8_;2>H(B
+% \item $B5?;w%?%$%WF~NO(B
+% \item tabbing$B4D6-(B
+% \item $BMQ8l=8$N=PNO(B
+% \item $B;~J,$r<($9%+%&%s%?(B
+% \end{itemize}
+%
+%
+% \section{$B%3!<%I(B}
+%
+% $B$3$N%U%!%$%k$NFbMF$O!"(Bp\LaTeXe{}$B$N%3%"ItJ,$G$9!#(B
+% \begin{macrocode}
+%<*plcore>
+% \end{macrocode}
+%
+% \subsection{$B%W%j%"%s%V%k%3%^%s%I(B}
+% $BJ8=q%U%!%$%k$,I,MW$H$9$k%U%)!<%^%C%H%U%!%$%k$N;XDj$r$9$k%3%^%s%I$r(B
+% $B3HD%$7!"(Bp\LaTeXe{}$B%U%)!<%^%C%H%U%!%$%k$bG'<1$9$k$h$&$K$7$^$9!#(B
+%
+% \begin{macro}{\NeedsTeXFormat}
+% \begin{macro}{\@needsPformat}
+% \begin{macro}{\@needsPf@rmat}
+% |\NeedsTeXFormats|$B$K(B``pLaTeX2e''$B$r;XDj$9$k$H!"(B
+% ``LaTeX2e''$B%U%)!<%^%C%H$rI,MW$H$9$k1Q8lHG$N%/%i%9%U%!%$%k$d(B
+% $B%Q%C%1!<%8%U%!%$%k$J$I$,;H$($J$/$J$C$F$7$^$&$?$a$K:FDj5A$7$^$9!#(B
+% $B$3$N%3%^%s%I$O(B\file{ltclass.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \begin{macrocode}
+\def\NeedsTeXFormat#1{%
+ \def\reserved@a{#1}%
+ \ifx\reserved@a\pfmtname
+ \expandafter\@needsPformat
+ \else
+ \ifx\reserved@a\fmtname
+ \expandafter\expandafter\expandafter\@needsformat
+ \else
+ \@latex@error{This file needs format `\reserved@a'%
+ \MessageBreak but this is `\pfmtname'}{%
+ The current input file will not be processed
+ further,\MessageBreak
+ because it was written for some other flavor of
+ TeX.\MessageBreak\@ehd}%
+ \endinput
+ \fi
+ \fi}
+%
+\def\@needsPformat{\@ifnextchar[\@needsPf@rmat{}}
+%
+\def\@needsPf@rmat[#1]{%
+ \@ifl@t@r\pfmtversion{#1}{}%
+ {\@latex@warning@no@line
+ {You have requested release `#1' of pLaTeX,\MessageBreak
+ but only release `\pfmtversion' is available}}}
+%
+\@onlypreamble\@needsPformat
+\@onlypreamble\@needsPf@rmat
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\documentstyle}
+% |\documentclass|$B$NBe$o$j$K(B|\documentstyle|$B$,;H$o$l$k$H!"(B
+% \LaTeX~2.09$B8_49%b!<%I$KF~$j$^$9!#$3$N$H$-!"(B
+% $B%*%j%8%J%k$N(B\LaTeX{}$B$G$O(B\file{latex209.def}$B$rFI$_9~$_$^$9$,!"(B
+% p\LaTeXe{}$B$G$O(B\file{pl209.def}$B$rFI$_9~$_$^$9!#(B
+% $B$3$N%3%^%s%I$O(B\file{ltclass.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \begin{macrocode}
+\def\documentstyle{%
+ \makeatletter\input{pl209.def}\makeatother
+ \documentclass}
+%</plcore>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{$BD>A0$N(BJFM$BM3Mh%9%Z!<%9$N:o=|!Z%3%_%e%K%F%#HGFH<+![(B}
+% $B8=>u$N(Bp\TeX{}$B!J(B\TeX\ Live 2017$B;~E@!K$G$O!"(B
+% |\inhibitglue|$B%W%j%_%F%#%V$O!V(BJFM$BM3Mh$N%9%Z!<%9!J%0%k!<!&%+!<%s!KA^F~(B
+% $B%k!<%A%s$rM^@)$9$k!WF/$-$r$7$^$9!#$7$+$7!"4{$KA^F~$5$l$F$7$^$C$?(B
+% JFM$B%0%k!<$d%+!<%s$r:o=|$9$k$3$H$O$G$-$^$;$s!#(B
+%
+% \begin{macro}{\removejfmglue}
+% $B$=$3$G!"!V:G8e$N%N!<%I$,(BJFM$B%0%k!<$G$"$C$?>l9g$K$=$l$r:o=|$9$k!W$H$$$&(B
+% $B%f!<%68~$1L?Na$rDj5A$7$^$9!#$3$N5!G=$K$O(Be-p\TeX{} 180226$B0J9_$N(B
+% |\lastnodesubtype|$B%W%j%_%F%#%V$,I,MW$G$9!#(B
+% $B$3$NL?Na$O$"$/$^$G!V(B\verb+\removejfmglue+$B$NE83+;~E@$G(B
+% $B4{$K(Bp\TeX{}$B$K$h$C$FA^F~40N;$7$F$$$k(BJFM$B%0%k!<!W$@$1$r(B
+% $B:o=|$7!"!V$3$l$+$iA^F~$5$l$h$&$H$9$k(BJFM$B%0%k!<!W$OM^@)$7$^$;$s!#Nc$($P(B
+%\begin{verbatim}
+% $B;O!K(B\removejfmglue $BCf!K(B\relax\removejfmglue $B=*(B
+%\end{verbatim}
+% $B$H$$$&F~NO$+$i$O(B
+% \begin{quote}
+% $B;O!K(B\removejfmglue $BCf!K(B\relax\removejfmglue $B=*(B
+% \end{quote}
+% $B$,F@$i$l$^$9!J:G=i$N(B\verb+\removejfmglue+$B$O7k2LE*$K2?$b$7$F$$$^$;$s!K!#(B
+% \changes{v1.2x}{2018/03/01}{JFM$B%0%k!<%N!<%I$r:o=|$9$k%^%/%mDI2C(B}
+% \changes{v1.3}{2018/09/02}{\cs{removejfmglue}$B$N5sF0$rL@J82=(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2018/03/09}%
+%<platexrelease> {\removejfmglue}{Macro added}%
+%<*plcore|platexrelease>
+% \end{macrocode}
+% \begin{macrocode}
+\ifx\lastnodesubtype\@undefined
+ \let\removejfmglue\@undefined
+\else
+ \setbox0\hbox{%
+ \ifdefined\ucs %% upTeX check
+ \jfont\tenmin=upjisr-h at 9.62216pt
+ \else
+ \jfont\tenmin=min10
+ \fi\tenmin
+ \char\jis"214B\null\setbox0\lastbox
+ \global\chardef\pltx@gluetype\lastnodetype
+ \global\chardef\pltx@jfmgluesubtype\lastnodesubtype
+ }
+ \setbox0=\box\voidb@x
+ \protected\def\removejfmglue{%
+ \ifnum\lastnodetype=\pltx@gluetype\relax
+ \ifnum\lastnodesubtype=\pltx@jfmgluesubtype\relax
+ \unskip
+ \fi
+ \fi}
+\fi
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}%
+%<platexrelease> {\removejfmglue}{Macro added}%
+%<platexrelease>\let\removejfmglue\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B2~%Z!<%8(B}
+% $B=DAH$N$H$-!"2~%Z!<%88e$NFbMF$,6v?t%Z!<%8!J1&%Z!<%8!K$+$i$O$8$^$k$h$&$K$7$^$9!#(B
+% $B2#AH$N$H$-$K$O!"4q?t%Z!<%8!J1&%Z!<%8!K$+$i$O$8$^$j$^$9!#(B
+%
+% \begin{macro}{\cleardoublepage}
+% $B$3$N%3%^%s%I$K$h$C$F=PNO$5$l$k!"Gr%Z!<%8$N%Z!<%8%9%?%$%k$r(B
+% \pstyle{empty}$B$K$7!"%X%C%@$H%U%C%?$,F~$i$J$$$h$&$K$7$F$$$^$9!#(B
+% \file{ltoutput.dtx}$B$NDj5A$r!"=DAH!"2#AH$K9g$o$;$F!"Dj5A$7$J$*$7$?$b$N$G$9!#(B
+% \begin{macrocode}
+%<*plcore>
+\def\cleardoublepage{\clearpage\if@twoside
+ \ifodd\c@page
+ \iftdir
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+ \else
+ \ifydir
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+ \fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B2~9T(B}
+%
+% \begin{macro}{\@gnewline}
+% \changes{v1.1c}{1995/08/25}{$B9TF,6XB'J8;z$ND>A0$G$N2~9T$G$NIT6q9g$N=$@5(B}
+% $BF|K\8l(B\TeX{}$B$N9TF,6XB'=hM}$O!"6XB'BP>]J8;z$ND>A0$K!"(B
+% |\prebreakpenalty|$B$G;XDj$5$l$?%Z%J%k%F%#$NCM$rA^F~$9$k$3$H$G(B
+% $B9T$J$C$F$$$^$9!#(B
+% $B$H$3$m$,!"2~9T%3%^%s%I$OIi$N%Z%J%k%F%#$NCM$rA^F~$9$k$3$H$G2~9T$r9T$J$$$^$9!#(B
+% $B$=$N$?$a$K!"6XB'%Z%J%k%F%#$NCM$,(B$10000$$B$NJ8;z$ND>8e$G$O!"%Z%J%k%F%#$NCM$,(B
+% $BAj;&$5$l!"2~9T$9$k$3$H$,$G$-$^$;$s!#(B
+%
+%\begin{verbatim}
+% $B$"$$$&$($*(B\\
+% $B!*$+$-$/$1$3(B
+%\end{verbatim}
+%
+% $B$7$?$,$C$F!"(B|\newline|$B%^%/%m$K(B|\mbox{}|$B$rF~$l$k$3$H$K$h$C$F!"(B
+% |\newline|$B%^%/%m$N%Z%J%k%F%#(B$-10000$$B$H9TF,J8;z$N%Z%J%k%F%#(B$10000$$B$,(B
+% $B2C;;$5$l$J$$$h$&$K$7$^$9!#(B|\\|$B$O(B|\newline|$B%^%/%m$r8F$S=P$7$F$$$^$9!#(B
+%
+% $B$J$*!"(B|\newline|$B%^%/%m$O(B\file{ltspaces.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+%
+% \changes{v1.1j}{1999/04/05}{$B%*%W%7%g%s$rIU$1$?>l9g$K!"M>7W$J6uGr(B
+% $B$,F~$C$F$7$^$&$N$r=$@5!#$"$j$,$H$&!"NkLZN4;V!w5~ETBg3X$5$s!#(B}
+% \changes{v1.1h}{1997/06/25}{\LaTeX{}$B$N2~9T%^%/%m$NJQ99$KBP1~!#(B
+% $B$"$j$,$H$&!"1|B<$5$s!#(B}
+% \LaTeX\ \texttt{<1996/12/01>}$B$G2~9T%^%/%m$,JQ99$5$l!"(B|\\|$B$,(B
+% |\newline|$B$r8F$S=P$5$J$/$J$C$?$?$a!"JQ99$5$l$?2~9T%^%/%m$KBP1~$7$^$7(B
+% $B$?!#(B|\null|$B$NA^F~0LCV$OF1$8$G$9!#(B
+% \file{ltspace.dtx}$B$NDj5A$r>e5-$K9g$o$;$F!"Dj5A$7$J$*$7$^$7$?!#(B
+%
+% \emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$kJdB-(B}$B!'(B
+% $B%"%9%-!<$K$h$k(Bp\LaTeX{}$B$G$O!"9TF,6XB'J8;z$ND>A0$G(B|\\|$B$K$h$k6/@)2~9T$r(B
+% $B9T$($k$h$&$K$9$k$H$$$&L\E*$G(B
+% |\null|$B$r(B|\@gnewline|$B%^%/%mFb$KA^F~$7$F$$$^$7$?!#(B
+% $B$7$+$7!"$3$l$G$O(B|\\\par|$B$H=q$$$?>l9g$K(BUnderfull$B7Y9p$,=P$J$/$J$C$F(B
+% $B$$$^$9!J(B|tests/newline_par.tex|$B$r(B\texttt{latex}$B$H(B\texttt{platex}$B$G(B
+% $B=hM}$7$F$_$F$/$@$5$$!K!#(B
+%
+% $B$b$7(B|\null|$B$NBe$o$j$K(B|\hskip\z@|$B$rA^F~$9$l$P!"(B\LaTeX{}$B$HF1MM$K(B
+% Underfull$B7Y9p$r=P$9$3$H$,$G$-$^$9!#(B
+% $B$?$@$7!"(B|\null|$B$rA^F~$7$?>l9g$H0[$J$j!"6/@)2~9T8e$N9TF,$K(B
+% JFM$B%0%k!=$,F~$i$J$/$J$j$^$9!#$3$l$O$`$7$m!"1|B<$5$s$N(Bjsclasses$B$G(B
+% $B9TF,$rE7%D%-$KD>$7$F$$$k$N$HF1$8$G$9$,!"(Bp\LaTeX{}$B$H$7$F$O5sF0$,(B
+% $BJQ2=$7$F$7$^$$$^$9$N$G!"8=;~E@$G$O(B|\null|$B"*(B|\hskip\z@|$B$X$NJQ99$r(B
+% $B8+Aw$C$F$$$^$9!#(B
+% \changes{v1.2n}{2017/04/23}{$B%I%-%e%a%s%H$NDI2C(B}
+%
+% \begin{macrocode}
+\def\@gnewline #1{%
+ \ifvmode
+ \@nolnerr
+ \else
+ \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
+ \ignorespaces
+ \fi}
+%</plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@no@lnbk}
+% \emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$kDI2C(B}$B!'(B
+% $B$5$i$K!"(B|\\|$B$@$1$G$J$/(B|\linebreak|$B$K$D$$$F$bF1MM$NBP=h$r$7$^$9!#(B
+% \LaTeX{}$B$NDj5A$N$^$^$G$O%^%/%m$K$h$k%Z%J%k%F%#(B$-10000$$B$H(B
+% $B9TF,J8;z$N%Z%J%k%F%#(B$10000$$B$,2C;;$5$l$F$7$^$&$?$a!"(B
+% |\hskip\z@\relax|$B$rF~$l$F$*$-$^$9!#$J$*!"(B|\linebreak|$B$rH/9T$7$F(B
+% $B9TJ,3d$,5/$-$?>l9g!"?7$7$$9TF,$N(BJFM$B%0%k!=$O>C$($k$H$$$&=>Mh$N(B
+% p\LaTeX{}$B$N5sF0$b0];}$7$F$$$^$9!#(B
+% \changes{v1.2o}{2017/05/03}{$B9TF,6XB'J8;z$ND>A0$G$b2~9T$9$k$h$&$K$7$?(B}
+%
+% $BA02s$N(B|\hskip\z@\relax|$B$NDI2C$G$O!"(B|\nolinebreak|$B$N>l9g$K(B|\kanjiskip|$B$d(B
+% |\xkanjiskip|$B$,F~$i$J$$LdBj$,5/$-$F$7$^$$$^$7$?!#$=$3$G!"(B
+% |\penalty\z@\relax|$B$KJQ99$7$^$7$?!#$3$l$O!"L@<(E*$J(B|\penalty|$B%W%j%_%F%#%V(B
+% $BF1;N$N9g;;$O9T$o$l$J$$$3$H$rMxMQ$7$F$$$^$9!#(B
+% \changes{v1.2q}{2017/08/25}{\cs{nolinebreak}$B$N>l9g$K(B\cs{(x)kanjiskip}$B$,(B
+% $BF~$i$J$/$J$C$F$$$?$N$r=$@5(B}
+%
+% $B$H$3$m$,!"$=$NJQ99$K$h$C$F$=$b$=$b(B|\nolinebreak|$B$,8z$+$J$$>l9g$,(B
+% $B@8$8$?$N$G!"JQ99A4BN$r$$$C$?$s%-%c%s%;%k$7$F85$KLa$7$^$9!#(B
+% \changes{v1.2v}{2018/01/27}{v1.2o$B$H(Bv1.2q$B$N=$@5$G(B\cs{nolinebreak}$B$,(B
+% $B8z$+$J$$>l9g$,$"$C$?$N$G!"85$KLa$7$?(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2017/10/28}{\@no@lnbk}
+%<platexrelease> {Break before prebreakpenalty (revert)}%
+%<platexrelease>\def\@no@lnbk #1[#2]{%
+%<platexrelease> \ifvmode
+%<platexrelease> \@nolnerr
+%<platexrelease> \else
+%<platexrelease> \@tempskipa\lastskip
+%<platexrelease> \unskip
+%<platexrelease> \penalty #1\@getpen{#2}%
+%<platexrelease> \ifdim\@tempskipa>\z@
+%<platexrelease> \hskip\@tempskipa
+%<platexrelease> \ignorespaces
+%<platexrelease> \fi
+%<platexrelease> \fi}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2017/07/29}{\@no@lnbk}
+%<platexrelease> {Break before prebreakpenalty (another)}%
+%<platexrelease>\def\@no@lnbk #1[#2]{%
+%<platexrelease> \ifvmode
+%<platexrelease> \@nolnerr
+%<platexrelease> \else
+%<platexrelease> \@tempskipa\lastskip
+%<platexrelease> \unskip
+%<platexrelease> \penalty #1\@getpen{#2}%
+%<platexrelease> \penalty\z@\relax %% added (2017/08/25)
+%<platexrelease> \ifdim\@tempskipa>\z@
+%<platexrelease> \hskip\@tempskipa
+%<platexrelease> \ignorespaces
+%<platexrelease> \fi
+%<platexrelease> \fi}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2017/05/05}{\@no@lnbk}
+%<platexrelease> {Break before prebreakpenalty}%
+%<platexrelease>\def\@no@lnbk #1[#2]{%
+%<platexrelease> \ifvmode
+%<platexrelease> \@nolnerr
+%<platexrelease> \else
+%<platexrelease> \@tempskipa\lastskip
+%<platexrelease> \unskip
+%<platexrelease> \penalty #1\@getpen{#2}%
+%<platexrelease> \hskip\z@\relax %% added (2017/05/03)
+%<platexrelease> \ifdim\@tempskipa>\z@
+%<platexrelease> \hskip\@tempskipa
+%<platexrelease> \ignorespaces
+%<platexrelease> \fi
+%<platexrelease> \fi}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@no@lnbk}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\def\@no@lnbk #1[#2]{%
+%<platexrelease> \ifvmode
+%<platexrelease> \@nolnerr
+%<platexrelease> \else
+%<platexrelease> \@tempskipa\lastskip
+%<platexrelease> \unskip
+%<platexrelease> \penalty #1\@getpen{#2}%
+%<platexrelease> \ifdim\@tempskipa>\z@
+%<platexrelease> \hskip\@tempskipa
+%<platexrelease> \ignorespaces
+%<platexrelease> \fi
+%<platexrelease> \fi}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% $B$J$*!"(B\LaTeX{}$BMQ$NL?Na$G$"$k(B|\\|$B$H(B|\linebreak|$B$K$O>e5-$N$h$&$J(B
+% $B6XB'J8;z$X$NBP:v$rF~$l$F$$$^$9$,!"(Bplain \TeX{}$B8_49$N%7%s%W%k$J(B
+% $BL?Na$G$"$k(B|\break|$B$d(B|\nobreak|$B$K$O!"BP:v$r9T$$$^$;$s!#(B
+%
+% \subsection{$B%*%V%8%'%/%H$N=PNO=g=x(B}
+% $B%*%j%8%J%k$N(B\LaTeX{}$B$O!"%H%C%W%U%m!<%H!"K\J8!"5SCm!"%\%H%`%U%m!<%H(B
+% $B$N=gHV$G=PNO$7$^$9$1$l$I$b!"F|K\8lAHHG$G$O!"%H%C%W%U%m!<%H!"K\J8!"(B
+% $B%\%H%`%U%m!<%H!"5SCm$H$$$&=gHV$NJ}$,0lHLE*$G$9$N$G!"(B
+% $B$3$N$h$&$J=gHV$K$J$k$h$&=$@5$r$7$^$9!#(B
+%
+% $B$7$?$,$C$F!"J8=q%U%!%$%k$K$h$C$F$O(B\LaTeX{}$B$NAHHG7k2L$H0[$J$k>l9g$,(B
+% $B$"$j$^$9$N$G!"Cm0U$r$7$F$/$@$5$$!#(B
+%
+% 2014$BG/$K(B\LaTeX{}$B$K(B\file{fltrace}$B%Q%C%1!<%8$,DI2C$5$l$^$7$?$N$G!"(B
+% $B$=$N(Bp\LaTeX{}$BHG$H$7$F(B\file{pfltrace}$B%Q%C%1!<%8$rDI2C$7$^$9!#(B
+% $B$3$N(B\file{pfltrace}$B%Q%C%1!<%8$O(B\LaTeX{}$B$N(B\file{fltrace}$B%Q%C%1!<%8$K(B
+% $B0MB8$7$^$9!#(B
+% \changes{v1.2e}{2016/05/20}{\file{fltrace}$B%Q%C%1!<%8$N(Bp\LaTeX{}$BHG(B
+% $B$H$7$F(B\file{pfltrace}$B%Q%C%1!<%8$r?7@_(B}
+% \begin{macrocode}
+%<*fltrace>
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pfltrace}
+ [2016/05/20 v1.2e Standard pLaTeX package (float tracing)]
+\RequirePackageWithOptions{fltrace}
+%</fltrace>
+% \end{macrocode}
+%
+% \begin{macro}{\@makecol}
+% $B$3$N%^%/%m$,AH$_N)$F$kItJ,$NCf?4$H$J$j$^$9!#(B
+% \file{ltoutput.dtx}$B$GDj5A$5$l$F$$$k$b$N$G$9!#(B
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2017/04/08}{\@makecol}
+%<platexrelease> {Take into account depth of footnote}%
+%<*plcore|platexrelease>
+\gdef\@makecol{%
+ \setbox\@outputbox\box\@cclv%
+ \let\@elt\relax % added on LaTeX (ltoutput.dtx 2003/12/16 v1.2k)
+ \xdef\@freelist{\@freelist\@midlist}%
+ \global \let \@midlist \@empty
+ \@combinefloats
+% \end{macrocode}
+% $B%*%j%8%J%k$N(B\LaTeX{}$B$O!"%H%C%W%U%m!<%H!"K\J8!"5SCm!"%\%H%`%U%m!<%H$N=gHV$G(B
+% $B=PNO$7$^$9!#0lJ}(Bp\LaTeX{}$B$O!"%H%C%W%U%m!<%H!"K\J8!"%\%H%`%U%m!<%H!"5SCm$N(B
+% $B=gHV$G=PNO$7$^$9!#(B
+% $B$H$3$m$,!"%"%9%-!<HG$N%3!<%I$O=gHV$rF~$lBX$($k$@$1$G$J$/!"5SCm$N$"$k%Z!<%8$N(B
+% $BHGLLA4BN$N?bD>0LCV$,!JFC$K=DAH$G82Cx$K!K$:$l$F$7$^$C$F$$$^$7$?!#(B
+% $B$3$l$OJd@5NL(B|\dp\@outputbox|$B$N<hF@$r(B\emph{$B5SCmA^F~$h$jA0(B}$B$K9T$C$F$$$?$?$a$G!"(B
+% $B%3%_%e%K%F%#HG(Bp\LaTeX{}$B$G$O$3$NLdBj$KBP=h$7$F$"$j$^$9!#(B
+% $B7k2LE*$K!"(Bfnpos$B%Q%C%1!<%8(B(yafoot)$B$N(B
+% |\makeFNbottom|$B$+$D(B|\makeFNbelow|$B$J>uBV$H40A4$KEy2A$K$J$j$^$7$?!#(B
+% \changes{v1.2l}{2017/02/25}{$B5SCm$H%\%H%`%U%m!<%H$N=g=x$rF~$lBX$($?$3$H$G(B
+% $BHGLLA4BN$N?bD>0LCV$,$:$l$F$$$?$N$r=$@5(B(Issue 32)}
+% \begin{macrocode}
+ \let\pltx@textbottom\@textbottom % save (pLaTeX 2017/02/25)
+ \ifvoid\footins\else % changed (pLaTeX 2017/02/25)
+ \setbox\@outputbox \vbox {%
+ \boxmaxdepth \@maxdepth
+ \unvbox \@outputbox
+ \@textbottom % inserted here (pLaTeX 2017/02/25)
+ \vskip \skip\footins
+ \color@begingroup
+ \normalcolor
+ \footnoterule
+ \unvbox \footins
+ \color@endgroup
+ }%
+ \let\@textbottom\relax % disable temporarily (pLaTeX 2017/02/25)
+ \fi
+ \ifvbox\@kludgeins
+ \@makespecialcolbox
+ \else
+ \setbox\@outputbox \vbox to\@colht {%
+ %\boxmaxdepth \@maxdepth % comment out on LaTeX 1997/12/01
+ \@texttop
+ \dimen@ \dp\@outputbox
+ \unvbox \@outputbox
+% \end{macrocode}
+% $B=DAH$N:]$K(B|\@outputbox|$B$NFbMF$,6u$N%\%C%/%9$@$1$N>l9g$K!"(B|\wd\@outputbox|$B$,(B
+% 0pt$B$K$J$C$F$7$^$$!"7k2L$H$7$F%U%C%?$N0LCV$,$/$k$C$F$7$^$C$F$$$?!#(B
+% 0$B$N(B|\hskip|$B$rH/@8$5$;$k$H(B|\wd\@outputbox|$B$NCM$,4|BT$7$?$b$N$H$J$k$N$G!"(B
+% $B=DAH$N>l9g$O$=$NJ}K!$GBP=h$9$k!#(B
+%
+% $B$?$@$7!"(B0$B$N(B|\hskip|$B$rH/@8$5$;$k$H$-!"?eJ?%b!<%I$KF~$C$F$7$^$&$H!"$?$H$($P(B
+% longtable$B%Q%C%1!<%8$r;HMQ$7$FI=AHESCf$G2~%Z!<%8$9$k$H$-$K(B|\par -> {\vskip}|$B$N(B
+% $BL58B%k!<%W$,5/$-$F$7$^$$$^$9!#$=$3$G!"(B|\vbox|$B$NCf$GH/@8$5$;$^$9!#(B
+% \changes{v1.1j}{2001/05/10}{\cs{@makecol}$B$GAH$_N)$F$i$l$k(B
+% \cs{@outputbox}$B$NBg$-$5$,!"=DAH$GCf?H$,6u$N%\%C%/%9$@$1$N>l9g$bE,@5$K$J$k(B
+% $B$h$&$K=$@5(B}
+% \changes{v1.2b}{2016/01/26}{\cs{@outputbox}$B$N?<$5$,B>$N$b$N$N0LCV$K1F6A$rM?$($J$$(B
+% $B$h$&$K$9$k(B\texttt{\cs{vskip}~-\cs{dimen@}}$B$,=DAH%b!<%I$G$OL58z$K$J$C$F$$$?$N$G=$@5(B}
+% \changes{v1.2h}{2016/09/01}{$B=DAH$G(Blongtable$B%Q%C%1!<%8$r;H$C$FI=AH$NESCf$G2~%Z!<%8(B
+% $B$9$k$H$-L58B%k!<%W$,5/$3$kLdBj$KBP=h(B(Issue 21)}
+% \begin{macrocode}
+ \iftdir\vbox{\hskip\z@}\fi
+ \vskip -\dimen@
+ \@textbottom
+ }%
+ \fi
+ \let\@textbottom\pltx@textbottom % restore (pLaTeX 2017/02/25)
+ \global \maxdepth \@maxdepth
+}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/09/03}{\@makecol}
+%<platexrelease> {Avoid infinite loop}%
+%<platexrelease>\gdef\@makecol{%
+%<platexrelease> \setbox\@outputbox\box\@cclv%
+%<platexrelease> \xdef\@freelist{\@freelist\@midlist}%
+%<platexrelease> \global \let \@midlist \@empty
+%<platexrelease> \@combinefloats
+%<platexrelease> \ifvbox\@kludgeins
+%<platexrelease> \@makespecialcolbox
+%<platexrelease> \else
+%<platexrelease> \setbox\@outputbox \vbox to\@colht {%
+%<platexrelease> %\boxmaxdepth \@maxdepth % comment out on LaTeX 1997/12/01
+%<platexrelease> \@texttop
+%<platexrelease> \dimen@ \dp\@outputbox
+%<platexrelease> \unvbox \@outputbox
+%<platexrelease> \iftdir\vbox{\hskip\z@}\fi
+%<platexrelease> \vskip -\dimen@
+%<platexrelease> \@textbottom
+%<platexrelease> \ifvoid\footins\else % for pLaTeX
+%<platexrelease> \vskip \skip\footins
+%<platexrelease> \color@begingroup
+%<platexrelease> \normalcolor
+%<platexrelease> \footnoterule
+%<platexrelease> \unvbox \footins
+%<platexrelease> \color@endgroup
+%<platexrelease> \fi
+%<platexrelease> }%
+%<platexrelease> \fi
+%<platexrelease> \global \maxdepth \@maxdepth
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\@makecol}
+%<platexrelease> {Adjust for \dp\@outputbox in tate mode}%
+%<platexrelease>\gdef\@makecol{%
+%<platexrelease> \setbox\@outputbox\box\@cclv%
+%<platexrelease> \xdef\@freelist{\@freelist\@midlist}%
+%<platexrelease> \global \let \@midlist \@empty
+%<platexrelease> \@combinefloats
+%<platexrelease> \ifvbox\@kludgeins
+%<platexrelease> \@makespecialcolbox
+%<platexrelease> \else
+%<platexrelease> \setbox\@outputbox \vbox to\@colht {%
+%<platexrelease> %\boxmaxdepth \@maxdepth % comment out on LaTeX 1997/12/01
+%<platexrelease> \@texttop
+%<platexrelease> \dimen@ \dp\@outputbox
+%<platexrelease> \unvbox \@outputbox
+%<platexrelease> \iftdir\hskip\z@\fi
+%<platexrelease> \vskip -\dimen@
+%<platexrelease> \@textbottom
+%<platexrelease> \ifvoid\footins\else % for pLaTeX
+%<platexrelease> \vskip \skip\footins
+%<platexrelease> \color@begingroup
+%<platexrelease> \normalcolor
+%<platexrelease> \footnoterule
+%<platexrelease> \unvbox \footins
+%<platexrelease> \color@endgroup
+%<platexrelease> \fi
+%<platexrelease> }%
+%<platexrelease> \fi
+%<platexrelease> \global \maxdepth \@maxdepth
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@makecol}
+%<platexrelease> {ASCII Corporation original}%
+%<platexrelease>\gdef\@makecol{%
+%<platexrelease> \setbox\@outputbox\box\@cclv%
+%<platexrelease> \xdef\@freelist{\@freelist\@midlist}%
+%<platexrelease> \global \let \@midlist \@empty
+%<platexrelease> \@combinefloats
+%<platexrelease> \ifvbox\@kludgeins
+%<platexrelease> \@makespecialcolbox
+%<platexrelease> \else
+%<platexrelease> \setbox\@outputbox \vbox to\@colht {%
+%<platexrelease> %\boxmaxdepth \@maxdepth % comment out on LaTeX 1997/12/01
+%<platexrelease> \@texttop
+%<platexrelease> \dimen@ \dp\@outputbox
+%<platexrelease> \unvbox \@outputbox
+%<platexrelease> \iftdir\hskip\z@
+%<platexrelease> \else\vskip -\dimen@\fi
+%<platexrelease> \@textbottom
+%<platexrelease> \ifvoid\footins\else % for pLaTeX
+%<platexrelease> \vskip \skip\footins
+%<platexrelease> \color@begingroup
+%<platexrelease> \normalcolor
+%<platexrelease> \footnoterule
+%<platexrelease> \unvbox \footins
+%<platexrelease> \color@endgroup
+%<platexrelease> \fi
+%<platexrelease> }%
+%<platexrelease> \fi
+%<platexrelease> \global \maxdepth \@maxdepth
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@makespecialcolbox}
+% $BK\J8!J$"$k$$$O%\%H%`%U%m!<%H!K$H5SCm$N4V$K(B|\@textbottom|$B$rF~$l$?$$$N$G!"(B
+% |\@makespecialcolbox|$B%3%^%s%I$b=$@5$r$7$^$9!#(B
+% $B$d$O$j!"(B\file{ltoutput.dtx}$B$GDj5A$5$l$F$$$k$b$N$G$9!#(B
+%
+% $B$3$N%^%/%m$O!"(B|\enlargethispage|$B$,;H$o$l$?$H$-$K!"(B
+% |\@makecol|$B%^%/%m$+$i8F$S=P$5$l$^$9!#(B
+%
+% \noindent\emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$kJdB-(B(2017/02/25)}$B!'(B
+% 2016/11/29$B0JA0$N(Bp\LaTeX{}$B$G$O!"(B|\@makecol|$B$O%\%H%`%U%m!<%H$rA^F~$7$?8e!"(B
+% $B$9$0$K(B|\@kludgeins|$B$,6u$+$I$&$+H=Dj$7(B
+% \begin{itemize}
+% \item $B6u$N>l9g$O!";D$j$9$Y$F$N=hM}$r(B|\@makespecialcolbox|$B$KG$$;$k(B
+% \item $B6u$G$J$$>l9g$O!"(B|\@makecol|$B<+?H$G;D$j$9$Y$F$N=hM}$r9T$&(B
+% \end{itemize}
+% $B$H$7$F$$$^$7$?!#$7$+$7(B2017/04/08$B0J9_$N(Bp\LaTeX{}$B$G$O!"(B|\@makecol|$B$O%\%H%`(B
+% $B%U%m!<%H$H5SCm$rA^F~$7$F$+$i(B|\@kludgeins|$B$NH=Dj$K0\$k$h$&$K$7$F$$$^$9!#(B
+% $B$7$?$,$C$F!"?7$7$$(B|\@makecol|$B$+$i0J2<$K5-$9(B|\@makespecialcolbox|$B$,8F$S(B
+% $B=P$5$l$k>l9g$O!"(B|\ifvoid\footins|$B!JFs2U=j!K$NH=Dj$O>o$K??$H$J$k$O$:$G$9!#(B
+% $BMW$9$k$K!V$D$.$NItJ,$,(Bp\LaTeX{}$BMQ$N=$@5$G$9!#!W$H$$$&Fs2U=j$N%3!<%I$O(B
+% $B<B<AE*$KITMW$H$J$j$^$7$?!#(B
+%
+% $B$7$+$7!"$@$+$i$H$$$C$F>C$7$F$7$^$&$H!"8E$$(Bp\LaTeX{}$B$N(B|\@makecol|$B$r(B
+% $B%Y!<%9$K:n$i$l$?30It%Q%C%1!<%8$+$i(B|\@makespecialcolbox|$B$,8F$S=P$5$l$k(B
+% $B>l9g$K5SCm$,>CLG$9$k$*$=$l$,$"$j$^$9!#$3$N$?$a!"(B|\@makespecialcolbox|$B$O(B
+% $B=>Mh$N%3!<%I$N$^$^0];}$7$F$"$j$^$9!J32$O$"$j$^$;$s!K!#(B
+% \changes{v1.2l}{2017/02/25}{\cs{@makecol}$B$rJQ99$7$?$N$K(B
+% \cs{@makespecialcolbox}$B$rJQ99$7$J$$!"$H$$$&H=CG$K$D$$$FL@J82=(B}
+% \begin{macrocode}
+%<*plcore|fltrace>
+\gdef\@makespecialcolbox{%
+%<*trace>
+ \fl@trace{Krudgeins ht \the\ht\@kludgeins\space
+ dp \the\dp\@kludgeins\space
+ wd \the\wd\@kludgeins}%
+%</trace>
+ \setbox\@outputbox \vbox {%
+ \@texttop
+ \dimen@ \dp\@outputbox
+ \unvbox\@outputbox
+ \vskip-\dimen@
+ }%
+ \@tempdima \@colht
+ \ifdim \wd\@kludgeins>\z@
+ \advance \@tempdima -\ht\@outputbox
+ \advance \@tempdima \pageshrink
+%<*trace>
+ \fl@trace {Natural ht of col: \the\ht\@outputbox}%
+ \fl@trace {\string \@colht: \the\@colht}%
+ \fl@trace {Pageshrink added: \the\pageshrink}%
+ \fl@trace {Hence, space added: \the\@tempdima}%
+%</trace>
+ \setbox\@outputbox \vbox to \@colht {%
+% \boxmaxdepth \maxdepth
+ \unvbox\@outputbox
+ \vskip \@tempdima
+ \@textbottom
+% \end{macrocode}
+% $B$D$.$NItJ,$,(Bp\LaTeX{}$BMQ$N=$@5$G$9!#(B
+% \changes{v1.2}{2001/09/04}{$BK\J8$H(B\cs{footnoterule}$B$,=E$J$C$F$7$^$&$N$r=$@5(B}
+% \begin{macrocode}
+ \ifvoid\footins\else % for pLaTeX
+ \vskip\skip\footins
+ \color@begingroup
+ \normalcolor
+ \footnoterule
+ \unvbox \footins
+ \color@endgroup
+ \fi
+ }%
+ \else
+ \advance \@tempdima -\ht\@kludgeins
+%<*trace>
+ \fl@trace {Natural ht of col: \the\ht\@outputbox}%
+ \fl@trace {\string \@colht: \the\@colht}%
+ \fl@trace {Extra size added: -\the \ht \@kludgeins}%
+ \fl@trace {Hence, height of inner box: \the\@tempdima}%
+ \fl@trace {Max? pageshrink available: \the\pageshrink}%
+%</trace>
+ \setbox \@outputbox \vbox to \@colht {%
+ \vbox to \@tempdima {%
+ \unvbox\@outputbox
+ \@textbottom
+% \end{macrocode}
+% $B$D$.$NItJ,$,(Bp\LaTeX{}$BMQ$N=$@5$G$9!#(B
+% $B5SCm$,$"$l$P!"$3$3$G$=$l$r=PNO$7$^$9!#(B
+% \changes{v1.2}{2001/09/04}{$BK\J8$H(B\cs{footnoterule}$B$,=E$J$C$F$7$^$&$N$r=$@5(B}
+% \begin{macrocode}
+ \ifvoid\footins\else % for pLaTeX
+ \vskip\skip\footins
+ \color@begingroup
+ \normalcolor
+ \footnoterule
+ \unvbox \footins
+ \color@endgroup
+ \fi
+ }\vss}%
+ \fi
+ {\setbox \@tempboxa \box \@kludgeins}%
+%<*trace>
+ \fl@trace {kludgeins box made void}%
+%</trace>
+}
+%</plcore|fltrace>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@reinserts}
+% $B$3$N%^%/%m$O!"(B|\@specialoutput|$B%^%/%m$+$i8F$S=P$5$l$^$9!#(B
+% $B%\%C%/%9(B|footins|$B$,AH$_N)$F$i$l$?%b!<%I$K9g$o$;$F(B
+% $B=D%b!<%I$+2#%b!<%I$G(B|\unvbox|$B$r$7$^$9!#(B
+% \begin{macrocode}
+%<*plcore>
+\def\@reinserts{%
+ \ifvoid\footins\else\insert\footins{%
+ \iftbox\footins\tate\else\yoko\fi
+ \unvbox\footins}\fi
+ \ifvbox\@kludgeins\insert\@kludgeins{\unvbox\@kludgeins}\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B%H%s%\(B}
+% $B$3$3$G$O%H%s%\$r=PNO$9$k$?$a$N%^%/%m$rDj5A$7$F$$$^$9!#(B
+%
+% \begin{macro}{\iftombow}
+% \begin{macro}{\iftombowdate}
+% |\iftombow|$B$O%H%s%\$r=PNO$9$k$+$I$&$+!"(B|\iftombowdate|$B$O(BDVI$B$r:n@.$7$?(B
+% $BF|IU$r%H%s%\$NOF$K=PNO$9$k$+$I$&$+$r<($9$?$a$KMQ$$$^$9!#(B
+% \begin{macrocode}
+\newif\iftombow \tombowfalse
+\newif\iftombowdate \tombowdatetrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@tombowwidth}
+% |\@tombowwidth|$B$K$O!"%H%s%\MQ7S@~$NB@$5$r;XDj$7$^$9!#(B
+% $B%G%U%)%k%H$O(B0.1$B%]%$%s%H$G$9!#(B
+% $B$3$NCM$rJQ99$7!"(B|\maketombowbox|$B%3%^%s%I$r<B9T$9$k$3$H$K$h$j!"%H%s%\$N(B
+% $B7S@~B@$5$rJQ99$7$F=PNO$9$k$3$H$,$G$-$^$9!#DL>o$N;H$$J}$G$O!"(B
+% $B%H%s%\$N7S@~$rJQ99$9$kI,MW$O$"$j$^$;$s!#(BDVI$B$r%U%#%k%`$KLLIU$1=PNO$9$k(B
+% $B$H$-!"%H%s%\$r$D$1$:$K0LCV$O$=$N$^$^$K$9$kI,MW$,$"$k$H$-$K!"$3$NB@$5$r(B
+% $B%<%m%]%$%s%H$K$7$^$9!#(B
+% \begin{macrocode}
+\newdimen\@tombowwidth
+\setlength{\@tombowwidth}{.1\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@tombowbleed}
+% |\@tombowbleed|$B$O!"(Bbleed$BI}$r;XDj$7$^$9!#(B
+% $B%G%U%)%k%H$O(B3mm$B$G$9!#(B
+% \changes{v1.2z}{2018/05/13}{\cs{@tombowbleed}$B%^%/%mDI2C(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2018/05/20}{\@tombowbleed}{Macro added}%
+%<*plcore|platexrelease>
+\def\@tombowbleed{3mm}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@tombowbleed}{Macro added}%
+%<platexrelease>\let\@tombowbleed\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@tombowcolor}
+% |\@tombowcolor|$B$O!"%H%s%\$N?'$G$9!#(B
+% $B%G%U%)%k%H$O(B|\normalcolor|$B$G$9!#(B
+% \changes{v1.2z}{2018/05/13}{\cs{@tombowcolor}$B%^%/%mDI2C(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2018/05/20}{\@tombowcolor}{Macro added}%
+%<*plcore|platexrelease>
+\def\@tombowcolor{\normalcolor}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@tombowcolor}{Macro added}%
+%<platexrelease>\let\@tombowcolor\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% $B%H%s%\MQ$N7S@~$rDj5A$7$^$9!#(B
+%
+% \begin{macro}{\@TL}
+% \begin{macro}{\@Tl}
+% \begin{macro}{\@TC}
+% \begin{macro}{\@TR}
+% \begin{macro}{\@Tr}
+% |\@TL|$B$H(B|\@Tl|$B$O%Z!<%8>eIt$N:8B&!"(B
+% |\@TC|$B$O%Z!<%8>eIt$NCf1{!"(B
+% |\@TR|$B$H(B|\@Tr|$B$O%Z!<%8>eIt$N:8B&$N%H%s%\$H$J$k%\%C%/%9$G$9!#(B
+% \begin{macrocode}
+\newbox\@TL\newbox\@Tl
+\newbox\@TC
+\newbox\@TR\newbox\@Tr
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@BL}
+% \begin{macro}{\@Bl}
+% \begin{macro}{\@BC}
+% \begin{macro}{\@BR}
+% \begin{macro}{\@Br}
+% |\@BL|$B$H(B|\@Bl|$B$O%Z!<%82<It$N:8B&!"(B
+% |\@BC|$B$O%Z!<%82<It$NCf1{!"(B
+% |\@BR|$B$H(B|\@Br|$B$O%Z!<%82<It$N:8B&$N%H%s%\$H$J$k%\%C%/%9$G$9!#(B
+% \begin{macrocode}
+\newbox\@BL\newbox\@Bl
+\newbox\@BC
+\newbox\@BR\newbox\@Br
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@CL}
+% \begin{macro}{\@CR}
+% |\@CL|$B$O%Z!<%8:8B&$NCf1{!"(B|\@CR|$B$O%Z!<%81&B&$NCf1{$N%H%s%\$H$J$k(B
+% $B%\%C%/%9$G$9!#(B
+% \begin{macrocode}
+\newbox\@CL
+\newbox\@CR
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@bannertoken}
+% \begin{macro}{\@bannerfont}
+% |\@bannertoken|$B%H!<%/%s$O!"%H%s%\$N2#$K=PNO$9$kJ8;zNs$rF~$l$^$9!#(B
+% $B%G%U%)%k%H$G$O2?$b=PNO$7$^$;$s!#(B
+% |\@bannerfont|$B%U%)%s%H$O!"$=$NJ8;zNs$r=PNO$9$k$?$a$N%U%)%s%H$G$9!#(B
+% 9$B%]%$%s%H$N%?%$%W%i%$%?BN$H$7$F$$$^$9!#(B
+% \changes{v1.1f}{1996/09/03}{Add \cs{@bannertoken}.}
+% \begin{macrocode}
+\font\@bannerfont=cmtt9
+\newtoks\@bannertoken
+\@bannertoken{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\maketombowbox}
+% |\maketombowbox|$B%3%^%s%I$O!"%H%s%\$H$J$k%\%C%/%9$r:n$k$?$a$KMQ$$$^$9!#(B
+% $B$3$N%3%^%s%I$O!"%H%s%\$H$J$k%\%C%/%9$r:n$k$@$1$G!"$=$l$i$N%\%C%/%9$r(B
+% $B=PNO$9$k$N$G$O$J$$$3$H$KCm0U$r$7$F$/$@$5$$!#(B
+% \changes{v1.2z}{2018/05/13}{bleed$BI}$r(B\cs{@tombowbleed}$B$K@Z$j=P$7(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2018/05/20}{\maketombowbox}
+%<platexrelease> {Use \@tombowbleed}%
+%<*plcore|platexrelease>
+\def\maketombowbox{%
+ \setbox\@TL\hbox to\z@{\yoko\hss
+ \vrule width\dimexpr 10mm+\@tombowbleed\relax height\@tombowwidth depth\z@
+ \vrule height10mm width\@tombowwidth depth\z@
+% \end{macrocode}
+% \changes{v1.0f}{1996/07/10}{$B%H%s%\$N2#$K(BDVI$B%U%!%$%k$N:n@.F|$r=PNO$9$k(B
+% $B$h$&$K$7$?!#(B}
+% \changes{v1.0g}{1997/01/23}{$B:n@.F|$N=PNO$r$9$k$+$I$&$+$r%U%i%0$G;XDj$9$k(B
+% $B$h$&$K$7$?!#(B}
+% \begin{macrocode}
+ \iftombowdate
+ \raise4pt\hbox to\z@{\hskip5mm\@bannerfont\the\@bannertoken\hss}%
+ \fi}%
+ \setbox\@Tl\hbox to\z@{\yoko\hss
+ \vrule width10mm height\@tombowwidth depth\z@
+ \vrule height\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth depth\z@}%
+ \setbox\@TC\hbox{\yoko
+ \vrule width10mm height\@tombowwidth depth\z@
+ \vrule height10mm width\@tombowwidth depth\z@
+ \vrule width10mm height\@tombowwidth depth\z@}%
+ \setbox\@TR\hbox to\z@{\yoko
+ \vrule height10mm width\@tombowwidth depth\z@
+ \vrule width\dimexpr 10mm+\@tombowbleed\relax height\@tombowwidth depth\z@\hss}%
+ \setbox\@Tr\hbox to\z@{\yoko
+ \vrule height\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth depth\z@
+ \vrule width10mm height\@tombowwidth depth\z@\hss}%
+%
+ \setbox\@BL\hbox to\z@{\yoko\hss
+ \vrule width\dimexpr 10mm+\@tombowbleed\relax depth\@tombowwidth height\z@
+ \vrule depth10mm width\@tombowwidth height\z@}%
+ \setbox\@Bl\hbox to\z@{\yoko\hss
+ \vrule width10mm depth\@tombowwidth height\z@
+ \vrule depth\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth height\z@}%
+ \setbox\@BC\hbox{\yoko
+ \vrule width10mm depth\@tombowwidth height\z@
+ \vrule depth10mm width\@tombowwidth height\z@
+ \vrule width10mm depth\@tombowwidth height\z@}%
+ \setbox\@BR\hbox to\z@{\yoko
+ \vrule depth10mm width\@tombowwidth height\z@
+ \vrule width\dimexpr 10mm+\@tombowbleed\relax depth\@tombowwidth height\z@\hss}%
+ \setbox\@Br\hbox to\z@{\yoko
+ \vrule depth\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth height\z@
+ \vrule width10mm depth\@tombowwidth height\z@\hss}%
+%
+ \setbox\@CL\hbox to\z@{\yoko\hss
+ \vrule width10mm height.5\@tombowwidth depth.5\@tombowwidth
+ \vrule height10mm depth10mm width\@tombowwidth}%
+ \setbox\@CR\hbox to\z@{\yoko
+ \vrule height10mm depth10mm width\@tombowwidth
+ \vrule height.5\@tombowwidth depth.5\@tombowwidth width10mm\hss}%
+}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\maketombowbox}
+%<platexrelease> {ASCII Corporation original}%
+%<platexrelease>\def\maketombowbox{%
+%<platexrelease> \setbox\@TL\hbox to\z@{\yoko\hss
+%<platexrelease> \vrule width13mm height\@tombowwidth depth\z@
+%<platexrelease> \vrule height10mm width\@tombowwidth depth\z@
+%<platexrelease> \iftombowdate
+%<platexrelease> \raise4pt\hbox to\z@{\hskip5mm\@bannerfont\the\@bannertoken\hss}%
+%<platexrelease> \fi}%
+%<platexrelease> \setbox\@Tl\hbox to\z@{\yoko\hss
+%<platexrelease> \vrule width10mm height\@tombowwidth depth\z@
+%<platexrelease> \vrule height13mm width\@tombowwidth depth\z@}%
+%<platexrelease> \setbox\@TC\hbox{\yoko
+%<platexrelease> \vrule width10mm height\@tombowwidth depth\z@
+%<platexrelease> \vrule height10mm width\@tombowwidth depth\z@
+%<platexrelease> \vrule width10mm height\@tombowwidth depth\z@}%
+%<platexrelease> \setbox\@TR\hbox to\z@{\yoko
+%<platexrelease> \vrule height10mm width\@tombowwidth depth\z@
+%<platexrelease> \vrule width13mm height\@tombowwidth depth\z@\hss}%
+%<platexrelease> \setbox\@Tr\hbox to\z@{\yoko
+%<platexrelease> \vrule height13mm width\@tombowwidth depth\z@
+%<platexrelease> \vrule width10mm height\@tombowwidth depth\z@\hss}%
+%<platexrelease> \setbox\@BL\hbox to\z@{\yoko\hss
+%<platexrelease> \vrule width13mm depth\@tombowwidth height\z@
+%<platexrelease> \vrule depth10mm width\@tombowwidth height\z@}%
+%<platexrelease> \setbox\@Bl\hbox to\z@{\yoko\hss
+%<platexrelease> \vrule width10mm depth\@tombowwidth height\z@
+%<platexrelease> \vrule depth13mm width\@tombowwidth height\z@}%
+%<platexrelease> \setbox\@BC\hbox{\yoko
+%<platexrelease> \vrule width10mm depth\@tombowwidth height\z@
+%<platexrelease> \vrule depth10mm width\@tombowwidth height\z@
+%<platexrelease> \vrule width10mm depth\@tombowwidth height\z@}%
+%<platexrelease> \setbox\@BR\hbox to\z@{\yoko
+%<platexrelease> \vrule depth10mm width\@tombowwidth height\z@
+%<platexrelease> \vrule width13mm depth\@tombowwidth height\z@\hss}%
+%<platexrelease> \setbox\@Br\hbox to\z@{\yoko
+%<platexrelease> \vrule depth13mm width\@tombowwidth height\z@
+%<platexrelease> \vrule width10mm depth\@tombowwidth height\z@\hss}%
+%<platexrelease> \setbox\@CL\hbox to\z@{\yoko\hss
+%<platexrelease> \vrule width10mm height.5\@tombowwidth depth.5\@tombowwidth
+%<platexrelease> \vrule height10mm depth10mm width\@tombowwidth}%
+%<platexrelease> \setbox\@CR\hbox to\z@{\yoko
+%<platexrelease> \vrule height10mm depth10mm width\@tombowwidth
+%<platexrelease> \vrule height.5\@tombowwidth depth.5\@tombowwidth width10mm\hss}%
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@outputtombow}
+% |\@outputtombow|$B%3%^%s%I$O!"%H%s%\$r=PNO$9$k$N$KMQ$$$^$9!#(B
+% $B%3%_%e%K%F%#HG$G$O!"!V?'IU$-%F%-%9%H$NESCf$G2~%Z!<%8$,5/$-$?>l9g$K!"(B
+% $B%H%s%\$K$b?'$,IU$$$F$7$^$&!W$H$$$&8=>]$rKI$.!"$5$i$K%H%s%\$N?'$r(B
+% $B4JC1$KJQ$($i$l$k$h$&!"(B|\@tombowcolor|$B$H$$$&%^%/%m$K@Z$j=P$7$F$$$^$9!#(B
+% \changes{v1.2d}{2016/04/01}{multicol$B%Q%C%1!<%8$r;H$&$H%H%s%\$N2<C<$,=L$`LdBj$r=$@5(B}
+% \changes{v1.2z}{2018/05/13}{$B?'$NIU$$$?%F%-%9%H$NESCf$G2~%Z!<%8$9$k$H(B
+% $B%H%s%\$K$b?'$,IU$/8=>]$KBP=h!"$5$i$K%H%s%\$N?'$r(B\cs{@tombowcolor}$B$X!&(B
+% bleed$BI}$r(B\cs{@tombowbleed}$B$K@Z$j=P$7(B}
+% \changes{v1.3}{2018/09/02}{\file{platexrelease}$B%P%0=$@5(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2018/05/20}{\@outputtombow}
+%<platexrelease> {Use \@tombowcolor and \@tombowbleed}%
+%<*plcore|platexrelease>
+\def\@outputtombow{%
+ \iftombow
+ \vbox to\z@{\kern-\dimexpr 10mm+\@tombowbleed\relax\relax
+ \boxmaxdepth\maxdimen
+ \moveleft\@tombowbleed \vbox to\@@paperheight{%
+ \color@begingroup
+ \@tombowcolor
+ \hbox to\@@paperwidth{\hskip\@tombowbleed\relax
+ \copy\@TL\hfill\copy\@TC\hfill\copy\@TR\hskip\@tombowbleed}%
+ \kern-10mm
+ \hbox to\@@paperwidth{\copy\@Tl\hfill\copy\@Tr}%
+ \vfill
+ \hbox to\@@paperwidth{\copy\@CL\hfill\copy\@CR}%
+ \vfill
+ \hbox to\@@paperwidth{\copy\@Bl\hfill\copy\@Br}%
+ \kern-10mm
+ \hbox to\@@paperwidth{\hskip\@tombowbleed\relax
+ \copy\@BL\hfill\copy\@BC\hfill\copy\@BR\hskip\@tombowbleed}%
+ \color@endgroup
+ }\vss
+ }%
+ \fi
+}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\@outputtombow}
+%<platexrelease> {Safe \boxmaxdepth}%
+%<platexrelease>\def\@outputtombow{%
+%<platexrelease> \iftombow
+%<platexrelease> \vbox to\z@{\kern-13mm\relax
+%<platexrelease> \boxmaxdepth\maxdimen
+%<platexrelease> \moveleft3mm\vbox to\@@paperheight{%
+%<platexrelease> \hbox to\@@paperwidth{\hskip3mm\relax
+%<platexrelease> \copy\@TL\hfill\copy\@TC\hfill\copy\@TR\hskip3mm}%
+%<platexrelease> \kern-10mm
+%<platexrelease> \hbox to\@@paperwidth{\copy\@Tl\hfill\copy\@Tr}%
+%<platexrelease> \vfill
+%<platexrelease> \hbox to\@@paperwidth{\copy\@CL\hfill\copy\@CR}%
+%<platexrelease> \vfill
+%<platexrelease> \hbox to\@@paperwidth{\copy\@Bl\hfill\copy\@Br}%
+%<platexrelease> \kern-10mm
+%<platexrelease> \hbox to\@@paperwidth{\hskip3mm\relax
+%<platexrelease> \copy\@BL\hfill\copy\@BC\hfill\copy\@BR\hskip3mm}%
+%<platexrelease> }\vss
+%<platexrelease> }%
+%<platexrelease> \fi
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@outputtombow}
+%<platexrelease> {ASCII Corporation original}%
+%<platexrelease>\def\@outputtombow{%
+%<platexrelease> \iftombow
+%<platexrelease> \vbox to\z@{\kern-13mm\relax
+%<platexrelease> \moveleft3mm\vbox to\@@paperheight{%
+%<platexrelease> \hbox to\@@paperwidth{\hskip3mm\relax
+%<platexrelease> \copy\@TL\hfill\copy\@TC\hfill\copy\@TR\hskip3mm}%
+%<platexrelease> \kern-10mm
+%<platexrelease> \hbox to\@@paperwidth{\copy\@Tl\hfill\copy\@Tr}%
+%<platexrelease> \vfill
+%<platexrelease> \hbox to\@@paperwidth{\copy\@CL\hfill\copy\@CR}%
+%<platexrelease> \vfill
+%<platexrelease> \hbox to\@@paperwidth{\copy\@Bl\hfill\copy\@Br}%
+%<platexrelease> \kern-10mm
+%<platexrelease> \hbox to\@@paperwidth{\hskip3mm\relax
+%<platexrelease> \copy\@BL\hfill\copy\@BC\hfill\copy\@BR\hskip3mm}%
+%<platexrelease> }\vss
+%<platexrelease> }%
+%<platexrelease> \fi
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@paperheight}
+% \begin{macro}{\@@paperwidth}
+% \begin{macro}{\@@topmargin}
+% |\@@paperheight|$B$O!"MQ;f$N=D$ND9$5$K%H%s%\$ND9$5$r2C$($?D9$5$K$J$j$^$9!#(B
+%
+% |\@@paperwidth|$B$O!"MQ;f$N2#$ND9$5$K%H%s%\$ND9$5$r2C$($?D9$5$K$J$j$^$9!#(B
+%
+% |\@@topmargin|$B$O!"8=:_$N%H%C%W%^!<%8%s$K(B1$B%$%s%A2C$($?D9$5$K$J$j$^$9!#(B
+% \begin{macrocode}
+\newdimen\@@paperheight
+\newdimen\@@paperwidth
+\newdimen\@@topmargin
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@tombowreset@@paper}
+% $B%H%s%\=PNO%*%W%7%g%s$,;XDj$5$l$F$$$k>l9g$K(B
+% $BMQ;f%5%$%:$r:F@_Dj$9$kL?Na$G$9!#(B
+% |\@outputpage|$B$X2C$($kJQ99$r4J7i$K$9$k$?$a!"J,N%$7$?>e$G(B
+% |\@tombowbleed|$B$r;H$&$h$&$K$7$^$7$?!#(B
+% \changes{v1.2z}{2018/05/13}{$B%3%^%s%I$KJ,N%!"$5$i$K(B
+% bleed$BI}$r(B\cs{@tombowbleed}$B$K@Z$j=P$7(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2018/05/20}{\@tombowreset@@paper}
+%<platexrelease> {Macro separated}%
+%<*plcore|platexrelease>
+\def\@tombowreset@@paper{%
+ \@@topmargin\topmargin
+ \iftombow
+ \@@paperwidth\paperwidth
+ \advance\@@paperwidth 2\dimexpr\@tombowbleed\relax
+ \@@paperheight\paperheight \advance\@@paperheight 10mm\relax
+ \advance\@@paperheight 2\dimexpr\@tombowbleed\relax
+ \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax
+ \fi
+}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@tombowreset@@paper}
+%<platexrelease> {Macro separated}%
+%<platexrelease>\let\@tombowreset@@paper\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@shipoutsetup}
+% \changes{v1.1i}{1998/02/03}{Command removed}
+% |\@outputpage|$BFb$KA^F~$7$?$N$G:o=|$7$^$7$?!#(B
+% \end{macro}
+%
+% \begin{macro}{\@outputpage}
+% |\textwidth|$B$H(B|\textheight|$B$N8r49$O!"(B|\@shipoutsetup|$BFb$G$O9T$J$$$^$;$s!#(B
+% $B$J$<$J$i!"(B|\@shipoutsetup|$B%^%/%m$,<B9T$5$l$k$H$-$O!"(B
+% |\shipout|$B$5$l$k(Bvbox$B$NCf$G$"$j!"$3$N$H$-$O2#AH%b!<%I$G$9$N$G!"(B
+% $B$D$M$K(B|\iftdir|$B$O56$HH=CG$5$l!"=D$H2#$N%5%$%:$r8r49$G$-$J$$$+$i$G$9!#(B
+%
+% $B$J$*!"$3$NJQ99$r%m!<%+%k$J$b$N$K$9$k$?$a$K!"(B
+% |\begingroup|$B$H(B|\endgroup|$B$G0O$_$^$9!#(B
+% \changes{v1.2a}{2001/09/26}{\LaTeX\ \texttt{!<2001/06/01!>}$B$KBP1~(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2018/05/20}{\@outputpage}
+%<platexrelease> {Use \@tombowreset@@paper}%
+%<*plcore|platexrelease>
+\def\@outputpage{%
+\begingroup % the \endgroup is put in by \aftergroup
+ \iftdir
+ \dimen\z@\textwidth \textwidth\textheight \textheight\dimen\z@
+ \fi
+ \let \protect \noexpand
+% \end{macrocode}
+% \LaTeXe\ 2017-04-15$B$G$O(Bverbatim$B4D6-Fb$G%O%$%U%M!<%7%g%s$,5/$-$J$$$h$&$K(B
+% $B=$@5$5$l$^$7$?$,!"(Bverbatim$B4D6-$NESCf$G2~%Z!<%8$,5/$-$?>l9g$K%X%C%@$G(B
+% $B%O%$%U%M!<%7%g%s$,M^@)$5$l$k$N$O@5$7$/$J$$$N$G!"(B|\language|$B$r(B
+% |\begin{document}|$B$G$NCM$K%j%;%C%H$7$^$9!J;29M!'(Blatex2e svn r1407$B!K!#(B
+% $B%W%j%"%s%V%k$GFCJL$K@_Dj$5$l$l$P$=$NCM!"@_Dj$5$l$J$1$l$P(B0$B$G$9!JK|$,0l(B
+% |\document|$B$NDj5A$,8E$$>l9g(B\footnote{\LaTeXe\ 2017/01/01$B0JA0$r;H$C$F(B
+% p\LaTeXe{}$B$N%U%)!<%^%C%H$r:n@.$7$?>l9g$d!"(Bdinbrief.cls$B$N$h$&$KFH<+$N(B
+% $B:FDj5A$r9T$&%/%i%9$d%Q%C%1!<%8$r;H$C$?>l9g$K5/$3$k$+$b$7$l$^$;$s!#(B}$B$O(B
+% $-1$$B$K$J$j$^$9$,!"$3$l$O(B0$B$HF1$8$O$?$i$-$r$9$k$N$GLdBj$O5/$-$^$;$s!K!#(B
+% \changes{v1.2m}{2017/03/19}{\cs{language}$B$r%j%;%C%H(B
+% (sync with ltoutput.dtx 2017/03/10 v1.3c)}
+% \begin{macrocode}
+ \language\document@default@language
+ \@resetactivechars
+ \global\let\@@if@newlist\if@newlist
+ \global\@newlistfalse
+ \@parboxrestore
+ \shipout\vbox{\yoko
+ \set@typeset@protect
+ \aftergroup\endgroup
+ \aftergroup\set@typeset@protect
+% \end{macrocode}
+% \changes{v1.1g}{1998/02/03}{\cs{@shipoutsetup}$B$r(B\cs{@outputpage}$BFb$KF~$l$?(B}
+% $B$3$3$+$i(B|\@shipoutsetup|$B$NFbMF!#(B
+% \begin{macrocode}
+ \if@specialpage
+ \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+ \fi
+% \end{macrocode}
+% \changes{v1.1c}{1995/02/05}{\cs{oddsidemargin}$B$H(B\cs{evensidemargin}$B$,(B
+% $B5U$@$C$?$N$r=$@5(B}
+% \begin{macrocode}
+ \if@twoside
+ \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+ \iftdir\let\@themargin\evensidemargin
+ \else\let\@themargin\oddsidemargin\fi
+ \else \let\@thehead\@evenhead
+ \let\@thefoot\@evenfoot
+ \iftdir\let\@themargin\oddsidemargin
+ \else\let\@themargin\evensidemargin\fi
+ \fi\fi
+% \end{macrocode}
+% $B%H%s%\=PNO%*%W%7%g%s$,;XDj$5$l$F$$$k>l9g!"$3$3$GMQ;f%5%$%:$r:F@_Dj$7$^$9!#(B
+% \TeX $B$N2C$($k:8$H>eIt$N(B1$B%$%s%A$O!"%H%s%\$NFbB&$KF~$j$^$9!#(B
+% \changes{v1.1a}{1995/11/10}{\cs{topmargin}$B$,H?1G$5$l$J$$%P%0$r=$@5(B}
+% \changes{v1.2z}{2018/05/13}{\cs{@tombowreset@@paper}$B%3%^%s%I$KJ,N%(B}
+% \begin{macrocode}
+ \@tombowreset@@paper
+% \end{macrocode}
+% \begin{macrocode}
+ \reset@font
+ \normalsize
+ \normalsfcodes
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+% \end{macrocode}
+% $B$3$3$^$G$,(B|\@shipoutsetup|$B$NFbMF!#(B
+% \begin{macrocode}
+ \@begindvi
+ \@outputtombow
+ \vskip \@@topmargin
+ \moveright\@themargin\vbox{%
+ \setbox\@tempboxa \vbox to\headheight{%
+ \vfil
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thehead}%
+ \color@endbox
+ }% %% 22 Feb 87
+ \dp\@tempboxa \z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \baselineskip \footskip
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thefoot}%
+ \color@endbox
+ }%
+ }%
+% \endgroup now inserted by \aftergroup
+% \end{macrocode}
+% |\if@newlist|$B$r=i4|2=!#(B
+% \begin{macrocode}
+ \global\let\if@newlist\@@if@newlist
+ \global \@colht \textheight
+ \stepcounter{page}%
+ \let\firstmark\botmark
+}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2017/04/08}{\@outputpage}
+%<platexrelease> {Reset language for hyphenation}%
+%<platexrelease>\def\@outputpage{%
+%<platexrelease>\begingroup % the \endgroup is put in by \aftergroup
+%<platexrelease> \iftdir
+%<platexrelease> \dimen\z@\textwidth \textwidth\textheight \textheight\dimen\z@
+%<platexrelease> \fi
+%<platexrelease> \let \protect \noexpand
+%<platexrelease> \language\document@default@language
+%<platexrelease> \@resetactivechars
+%<platexrelease> \global\let\@@if@newlist\if@newlist
+%<platexrelease> \global\@newlistfalse
+%<platexrelease> \@parboxrestore
+%<platexrelease> \shipout\vbox{\yoko
+%<platexrelease> \set@typeset@protect
+%<platexrelease> \aftergroup\endgroup
+%<platexrelease> \aftergroup\set@typeset@protect
+%<platexrelease> \if@specialpage
+%<platexrelease> \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+%<platexrelease> \fi
+%<platexrelease> \if@twoside
+%<platexrelease> \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+%<platexrelease> \iftdir\let\@themargin\evensidemargin
+%<platexrelease> \else\let\@themargin\oddsidemargin\fi
+%<platexrelease> \else \let\@thehead\@evenhead
+%<platexrelease> \let\@thefoot\@evenfoot
+%<platexrelease> \iftdir\let\@themargin\oddsidemargin
+%<platexrelease> \else\let\@themargin\evensidemargin\fi
+%<platexrelease> \fi\fi
+%<platexrelease> \@@topmargin\topmargin
+%<platexrelease> \iftombow
+%<platexrelease> \@@paperwidth\paperwidth \advance\@@paperwidth 6mm\relax
+%<platexrelease> \@@paperheight\paperheight \advance\@@paperheight 16mm\relax
+%<platexrelease> \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax
+%<platexrelease> \fi
+%<platexrelease> \reset@font
+%<platexrelease> \normalsize
+%<platexrelease> \normalsfcodes
+%<platexrelease> \let\label\@gobble
+%<platexrelease> \let\index\@gobble
+%<platexrelease> \let\glossary\@gobble
+%<platexrelease> \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+%<platexrelease> \@begindvi
+%<platexrelease> \@outputtombow
+%<platexrelease> \vskip \@@topmargin
+%<platexrelease> \moveright\@themargin\vbox{%
+%<platexrelease> \setbox\@tempboxa \vbox to\headheight{%
+%<platexrelease> \vfil
+%<platexrelease> \color@hbox
+%<platexrelease> \normalcolor
+%<platexrelease> \hb@xt@\textwidth{\@thehead}%
+%<platexrelease> \color@endbox
+%<platexrelease> }% %% 22 Feb 87
+%<platexrelease> \dp\@tempboxa \z@
+%<platexrelease> \box\@tempboxa
+%<platexrelease> \vskip \headsep
+%<platexrelease> \box\@outputbox
+%<platexrelease> \baselineskip \footskip
+%<platexrelease> \color@hbox
+%<platexrelease> \normalcolor
+%<platexrelease> \hb@xt@\textwidth{\@thefoot}%
+%<platexrelease> \color@endbox
+%<platexrelease> }%
+%<platexrelease> }%
+%<platexrelease> \global\let\if@newlist\@@if@newlist
+%<platexrelease> \global \@colht \textheight
+%<platexrelease> \stepcounter{page}%
+%<platexrelease> \let\firstmark\botmark
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@outputpage}
+%<platexrelease> {ASCII Corporation original}%
+%<platexrelease>\def\@outputpage{%
+%<platexrelease>\begingroup % the \endgroup is put in by \aftergroup
+%<platexrelease> \iftdir
+%<platexrelease> \dimen\z@\textwidth \textwidth\textheight \textheight\dimen\z@
+%<platexrelease> \fi
+%<platexrelease> \let \protect \noexpand
+%<platexrelease> \@resetactivechars
+%<platexrelease> \global\let\@@if@newlist\if@newlist
+%<platexrelease> \global\@newlistfalse
+%<platexrelease> \@parboxrestore
+%<platexrelease> \shipout\vbox{\yoko
+%<platexrelease> \set@typeset@protect
+%<platexrelease> \aftergroup\endgroup
+%<platexrelease> \aftergroup\set@typeset@protect
+%<platexrelease> \if@specialpage
+%<platexrelease> \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+%<platexrelease> \fi
+%<platexrelease> \if@twoside
+%<platexrelease> \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+%<platexrelease> \iftdir\let\@themargin\evensidemargin
+%<platexrelease> \else\let\@themargin\oddsidemargin\fi
+%<platexrelease> \else \let\@thehead\@evenhead
+%<platexrelease> \let\@thefoot\@evenfoot
+%<platexrelease> \iftdir\let\@themargin\oddsidemargin
+%<platexrelease> \else\let\@themargin\evensidemargin\fi
+%<platexrelease> \fi\fi
+%<platexrelease> \@@topmargin\topmargin
+%<platexrelease> \iftombow
+%<platexrelease> \@@paperwidth\paperwidth \advance\@@paperwidth 6mm\relax
+%<platexrelease> \@@paperheight\paperheight \advance\@@paperheight 16mm\relax
+%<platexrelease> \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax
+%<platexrelease> \fi
+%<platexrelease> \reset@font
+%<platexrelease> \normalsize
+%<platexrelease> \normalsfcodes
+%<platexrelease> \let\label\@gobble
+%<platexrelease> \let\index\@gobble
+%<platexrelease> \let\glossary\@gobble
+%<platexrelease> \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+%<platexrelease> \@begindvi
+%<platexrelease> \@outputtombow
+%<platexrelease> \vskip \@@topmargin
+%<platexrelease> \moveright\@themargin\vbox{%
+%<platexrelease> \setbox\@tempboxa \vbox to\headheight{%
+%<platexrelease> \vfil
+%<platexrelease> \color@hbox
+%<platexrelease> \normalcolor
+%<platexrelease> \hb@xt@\textwidth{\@thehead}%
+%<platexrelease> \color@endbox
+%<platexrelease> }% %% 22 Feb 87
+%<platexrelease> \dp\@tempboxa \z@
+%<platexrelease> \box\@tempboxa
+%<platexrelease> \vskip \headsep
+%<platexrelease> \box\@outputbox
+%<platexrelease> \baselineskip \footskip
+%<platexrelease> \color@hbox
+%<platexrelease> \normalcolor
+%<platexrelease> \hb@xt@\textwidth{\@thefoot}%
+%<platexrelease> \color@endbox
+%<platexrelease> }%
+%<platexrelease> }%
+%<platexrelease> \global\let\if@newlist\@@if@newlist
+%<platexrelease> \global \@colht \textheight
+%<platexrelease> \stepcounter{page}%
+%<platexrelease> \let\firstmark\botmark
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtBeginDvi}
+% p\LaTeX{}$B$N=PNO%k!<%A%s$N(B|\@outputpage|$B$G$O!"(B|\shipout|$B$9$k(Bvbox$B$NCf?H$K(B
+% |\yoko|$B$r;XDj$7$F$$$^$9!#$3$N$?$a!"(B|\AtBeginDocument{\AtBeginDvi{}}|$B$H$$$&(B
+% $B%3!<%I$r=q$/$H(B\texttt{Incompatible direction list can't be unboxed.}$B$H$$$&(B
+% $B%(%i!<$,=P$F$7$^$$$^$9!#(B
+%
+% $B$=$3$G!"%3%_%e%K%F%#HG(Bp\LaTeX{}$B$G$O!V(B|\shipout|$B$G(B|\yoko|$B$,;XDj$5$l$F$$$k!W(B
+% $B$3$H$r:,5r$H$7$F(B
+% \begin{center}
+% |\@begindvibox|$B$O!J6u$G$J$$8B$j!K>o$K2#AH$G$J$1$l$P$J$i$J$$(B
+% \end{center}
+% $B$H2>Dj$7$^$9!#$3$N2>Dj$K=>$$!"(B|\AtBeginDvi|$B$r:FDj5A$7$^$9!#(B
+% \changes{v1.2f}{2016/06/30}{\cs{@begindvibox}$B$r>o$K2#AH$K(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2016/07/01}{\AtBeginDvi}
+%<platexrelease> {Fix for incompatible direction}%
+%<*plcore|platexrelease>
+\def \AtBeginDvi #1{%
+ \global \setbox \@begindvibox
+ \vbox{\yoko \unvbox \@begindvibox #1}%
+}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\AtBeginDvi}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\def \AtBeginDvi #1{%
+%<platexrelease> \global \setbox \@begindvibox
+%<platexrelease> \vbox{\unvbox \@begindvibox #1}%
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B5SCm%^%/%m(B}
+% $B5SCm$rAH$_N)$F$kItJ,$N%^%/%m$r:FDj5A$7$^$9!#(B
+% $B<g$J=$@5E@$O!"=DAH%b!<%I$G$NF0:n$NDI2C$G$9!#(B
+%
+% $B$3$l$i$N%^%/%m$O!"(B\file{ltfloat.dtx}$B$GDj5A$5$l$F$$$?$b$N$G$9!#(B
+%
+% \begin{macro}{\thempfn}
+% $BK\J8$G;H$o$l$k5SCm5-9f$G$9!#(B
+%
+% |\@footnotemark|$B$G=D2#$NH=CG$r$9$k$h$&$K$7$?$?$a!":o=|!#(B
+%
+% \changes{v1.0a}{1995/04/12}{Removed \texttt{\protect\bslash thempfn}}
+% \begin{macrocode}
+%\def\thempfn{%
+% \ifydir\thefootnote\else\hbox{\yoko\thefootnote}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\thempfootnote}
+% minipage$B4D6-$G;H$o$l$k5SCm5-9f$G$9!#(B
+%
+% \changes{v1.0a}{1995/04/12}{Removed \texttt{\protect\bslash thempfootnote}}
+% \begin{macrocode}
+%\def\thempfootnote{%
+% \ifydir\alph{mpfootnote}\else\hbox{\yoko\alph{mpfootnote}}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefnmark}
+% $B5SCm5-9f$r:n@.$9$k%^%/%m$G$9!#(B
+%
+% \changes{v1.0a}{1995/04/12}{$B=DAH$G$b>eIU$-?t;z$r;H$&$h$&$K=$@5(B}
+% \changes{v1.1b}{1996/01/26}{$B5SCm%^!<%/$N8e$m$KM>7W$J%9%Z!<%9$,F~$k$N$r=$@5(B}
+% \changes{v1.1g}{1997/02/14}{$B=DAH;~$K5SCm%^!<%/$N=qBN$,@5$7$/$J$$$N$r=$@5(B}
+% \changes{v1.2b}{2016/01/26}{2013$BG/0J9_$N(Bp\TeX\ (r28720)$B$G5SCmHV9f$NA08e$NOBJ8J8;z(B
+% $B$H$N4V$K(Bxkanjiskip$B$,F~$C$F$7$^$&LdBj$KBP1~(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\@makefnmark}
+%<platexrelease> {Remove extra \xkanjiskip}%
+%<*plcore|platexrelease>
+\renewcommand\@makefnmark{%
+ \ifydir \hbox{}\hbox{\@textsuperscript{\normalfont\@thefnmark}}\hbox{}%
+ \else\hbox{\yoko\@textsuperscript{\normalfont\@thefnmark}}\fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@makefnmark}
+%<platexrelease> {ASCII Corporation original}%
+%<platexrelease>\renewcommand\@makefnmark{\hbox{%
+%<platexrelease> \ifydir \@textsuperscript{\normalfont\@thefnmark}%
+%<platexrelease> \else\hbox{\yoko\@textsuperscript{\normalfont\@thefnmark}}\fi}}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pltx@foot@penalty}
+% $B3+$-3g8LN`$ND>8e$K(B|\footnotetext|$B$,B3$$$?>l9g!"(B|\footnotetext|$B$NA0$G$N2~9T$O(B
+% $BK>$^$7$/$"$j$^$;$s!#$3$N$h$&$J>l9g$KBP=h$9$k$?$a$K!"(B|\pltx@foot@penalty|$B$H$$$&(B
+% $B%+%&%s%?$rMQ0U$7$^$7$?!#(B|\footnotetext|$B$N:G=i$G!VD>A0$N%Z%J%k%F%#CM!W(B
+% $B$H$7$F$3$N%+%&%s%?$,=i4|2=$5$l$^$9!#(B
+% |\footnotemark|,~|\footnote|$B$G$O;H$o$J$$$N$G(B0$B$K@_Dj$7$F$$$^$9!#(B
+% \changes{v1.2g}{2016/08/25}{$B%+%&%s%?(B\cs{pltx@foot@penalty}$B$rDI2C(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/09/03}{\pltx@foot@penalty}
+%<platexrelease> {Add new counter \pltx@foot@penalty}%
+%<*plcore|platexrelease>
+\ifx\@undefined\pltx@foot@penalty \newcount\pltx@foot@penalty \fi
+\pltx@foot@penalty\z@
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\pltx@foot@penalty}
+%<platexrelease> {Add new counter \pltx@foot@penalty}%
+%<platexrelease>\let\pltx@foot@penalty\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footnotemark}
+% \begin{macro}{\footnote}
+% $B$^$?!"9g0u$NA0$NJ8;z$H9g0u$N4V$O86B'%Y%?AH$G$9!JC"$7!"(BJIS~X~4051$B$K$ONc30M-$j!K!#(B
+% $B$=$N$?$a!"9g0u$r=PNO$9$k(B|\footnotemark|,~|\footnote|$B$N:G=i$G(B|\inhibitglue|$B$r(B
+% $B<B9T$7$F$*$/$3$H$K$7$^$9!J(B|\@makefnmark|$B$NCf$KCV$$$F$b8zNO$,$"$j$^$;$s!K!#(B
+% \changes{v1.2g}{2016/08/25}{$B9g0u$NA0$NJ8;z$H9g0u$N4V$r%Y%?AH$K(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/09/03}{\footnote}
+%<platexrelease> {Append \inhibitglue in \footnotemark}%
+%<*plcore|platexrelease>
+% \end{macrocode}
+% \begin{macrocode}
+\def\footnote{\inhibitglue
+ \@ifnextchar[\@xfootnote{\stepcounter\@mpfn
+ \protected@xdef\@thefnmark{\thempfn}%
+ \@footnotemark\@footnotetext}}
+\def\footnotemark{\inhibitglue
+ \@ifnextchar[\@xfootnotemark
+ {\stepcounter{footnote}%
+ \protected@xdef\@thefnmark{\thefootnote}%
+ \@footnotemark}}
+% \end{macrocode}
+% \begin{macrocode}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\footnote}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\def\footnote{\@ifnextchar[\@xfootnote{\stepcounter\@mpfn
+%<platexrelease> \protected@xdef\@thefnmark{\thempfn}%
+%<platexrelease> \@footnotemark\@footnotetext}}
+%<platexrelease>\def\footnotemark{%
+%<platexrelease> \@ifnextchar[\@xfootnotemark
+%<platexrelease> {\stepcounter{footnote}%
+%<platexrelease> \protected@xdef\@thefnmark{\thefootnote}%
+%<platexrelease> \@footnotemark}}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\footnotetext}
+% |\footnotetext|$B$ND>A0$N%Z%J%k%F%#CM$rJ];}$7$^$9!#(B
+% \changes{v1.2g}{2016/08/25}{$BJD$83g8LN`$ND>8e$K(B\cs{footnotetext}$B$,B3$/(B
+% $B>l9g$K2~9T$,5/$-$k$3$H$,$"$kLdBj$KBP=h(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/09/03}{\footnotetext}
+%<platexrelease> {Preserve penalty before \footnotetext}%
+%<*plcore|platexrelease>
+% \end{macrocode}
+% \begin{macrocode}
+\def\footnotetext{%
+ \ifhmode\pltx@foot@penalty\lastpenalty\unpenalty\fi%
+ \@ifnextchar [\@xfootnotenext
+ {\protected@xdef\@thefnmark{\thempfn}%
+ \@footnotetext}}
+% \end{macrocode}
+% \begin{macrocode}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\footnotetext}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\def\footnotetext{%
+%<platexrelease> \@ifnextchar [\@xfootnotenext
+%<platexrelease> {\protected@xdef\@thefnmark{\thempfn}%
+%<platexrelease> \@footnotetext}}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@footnotetext}
+% $B%$%s%5!<%H%\%C%/%9(B|\footins|$B$K5SCm$N%F%-%9%H$rF~$l$^$9!#(B
+% $B%3%_%e%K%F%#HG(Bp\LaTeX{}$B$G$O(B|\footnotetext|,~|\footnote|$B$ND>8e$G(B
+% $B2~9T$r2DG=$K$7$^$9!#(Bjsclasses$B$G$O$3$NJQ99$K2C$(!"5SCm$G(B|\verb|$B$,(B
+% $B;H$($k$h$&$K:FDj5A$5$l$^$9!#(B
+%
+% \changes{v1.0a}{1995/04/07}{$BAHJ}8~$NH=Dj$r%\%C%/%9$N30$G$9$k$h$&$K$7$?(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/09/08}{\@footnotetext}
+%<platexrelease> {Allow break after \footnote (more fix)}%
+%<*plcore|platexrelease>
+% \end{macrocode}
+% \begin{macrocode}
+\long\def\@footnotetext#1{%
+ \ifydir\def\@tempa{\yoko}\else\def\@tempa{\tate}\fi
+ \insert\footins{\@tempa%
+ \reset@font\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+% \end{macrocode}
+%
+% p\TeX{}$B$G$O(B|\insert|$B$ND>8e$KOBJ8J8;z$,Mh$?>l9g!"$=$3$G$N2~9T$O5v$5$l$J$$(B
+% $B$H$$$&5sF0$K$J$C$F$$$^$9!#$3$N$?$a!"=>Mh$O5SCmHV9f!J9g0u!K$ND>8e$N2~9T$,(B
+% $BM^@)$5$l$F$$$^$7$?!#$7$+$7!"(B|\hbox|$B$ND>8e$KOBJ8J8;z$,Mh$?>l9g$O!"$=$3$G(B
+% $B$N2~9T$O5v$5$l$^$9$+$i!":G8e$K(B|\null|$B$rDI2C$7$^$9!#(B
+% $B$^$?!"(B|\pltx@foot@penalty|$B$NCM$,(B0$B$G$O$J$+$C$?>l9g!"(B
+% $B5SCm$NA0$K%Z%J%k%F%#$,$"$C$?$H$$$&$3$H$G$9$+$i!"I|3h$5$;$F$*$-$^$9!#(B
+% \changes{v1.2g}{2016/08/25}{$B5SCm$N9g0uD>8e$G$N2~9T$,6X;_$5$l$F$7$^$&(B
+% $BLdBj$KBP=h(B}
+% \changes{v1.2i}{2016/09/08}{v1.2g$B$N=$@5$GF~$l$?(B\cs{null}$B$,$^$:$+$C$?$N$G(B
+% $B?eJ?%b!<%I$N$H$-$@$1H/9T$9$k$3$H$K$7$?(B(Issue 23)}
+% \begin{macrocode}
+ \color@endgroup}\ifhmode\null\fi
+ \ifnum\pltx@foot@penalty=\z@\else
+ \penalty\pltx@foot@penalty
+ \pltx@foot@penalty\z@
+ \fi}
+% \end{macrocode}
+% \begin{macrocode}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/09/03}{\@footnotetext}
+%<platexrelease> {Allow break after \footnote}%
+%<platexrelease>\long\def\@footnotetext#1{%
+%<platexrelease> \ifydir\def\@tempa{\yoko}\else\def\@tempa{\tate}\fi
+%<platexrelease> \insert\footins{\@tempa%
+%<platexrelease> \reset@font\footnotesize
+%<platexrelease> \interlinepenalty\interfootnotelinepenalty
+%<platexrelease> \splittopskip\footnotesep
+%<platexrelease> \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+%<platexrelease> \hsize\columnwidth \@parboxrestore
+%<platexrelease> \protected@edef\@currentlabel{%
+%<platexrelease> \csname p@footnote\endcsname\@thefnmark
+%<platexrelease> }%
+%<platexrelease> \color@begingroup
+%<platexrelease> \@makefntext{%
+%<platexrelease> \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+%<platexrelease> \color@endgroup}\null
+%<platexrelease> \ifnum\pltx@foot@penalty=\z@\else
+%<platexrelease> \penalty\pltx@foot@penalty
+%<platexrelease> \pltx@foot@penalty\z@
+%<platexrelease> \fi}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@footnotetext}
+%<platexrelease> {ASCII Corporation original}%
+%<platexrelease>\long\def\@footnotetext#1{%
+%<platexrelease> \ifydir\def\@tempa{\yoko}\else\def\@tempa{\tate}\fi
+%<platexrelease> \insert\footins{\@tempa%
+%<platexrelease> \reset@font\footnotesize
+%<platexrelease> \interlinepenalty\interfootnotelinepenalty
+%<platexrelease> \splittopskip\footnotesep
+%<platexrelease> \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+%<platexrelease> \hsize\columnwidth \@parboxrestore
+%<platexrelease> \protected@edef\@currentlabel{%
+%<platexrelease> \csname p@footnote\endcsname\@thefnmark
+%<platexrelease> }%
+%<platexrelease> \color@begingroup
+%<platexrelease> \@makefntext{%
+%<platexrelease> \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+%<platexrelease> \color@endgroup}}
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@footnotemark}
+% \changes{v1.0a}{1995/04/12}{$B5SCm5-9f$N=PNO0LCV$ND4@0(B}
+% \changes{v1.1g}{1997/02/14}{$B=DAH;~$N0LCVD4@0$r(B2\cs{cht}$B$+$i(B.9zh$B$KJQ99(B}
+% $B5SCm5-9f$r=PNO$7$^$9!#(B
+% \begin{macrocode}
+\def\@footnotemark{\leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ \ifydir\@makefnmark
+ \else\hbox to\z@{\hskip-.25zw\raise.9zh\@makefnmark\hss}\fi
+ \ifhmode\spacefactor\@x@sf\fi\relax}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$BAj8_;2>H(B}
+%
+% \begin{macro}{\@setref}
+% \changes{v1.1c}{1995/09/07}{change \cs{null} to \cs{relax} in \cs{@setref}.}
+% \changes{v1.2k}{2017/02/20}{$BL\<!$G(B\cs{ref}$B$r;H$C$?>l9g$K8e$m$N6uGr$,>C$($k(B
+% $B8=>]$KBP=h$9$k$?$a!"(B\cs{relax}$B$N$"$H$K(B\{\}$B$rDI2C(B}
+% |\ref|$B%3%^%s%I$d(B|\pageref|$B%3%^%s%I$G;2>H$7$?$H$-!"$3$l$i$N%3%^%s%I$K(B
+% $B$h$C$F=PNO$5$l$?HV9f$HB3$/#2%P%$%HJ8;z$H$N4V$K(B|\xkanjiskip|$B$,F~$j$^$;$s!#(B
+% $B$3$l$O!"(B|\null|$B$,(B|\hbox{}|$B$HDj5A$5$l$F$$$k$?$a$G$9!#(B
+% $B$=$3$G(B|\null|$B$r<h$j=|$-$^$9!#(B
+% $B$3$N%3%^%s%I$O!"(B\file{ltxref.dtx}$B$GDj5A$5$l$F$$$k$b$N$G$9!#(B
+%
+% $B$7$+$7!"C1$K(B|\null|$B$r(B|\relax|$B$KCV$-49$($k$@$1$G$O!"(B|\section|$B$N$h$&$J(B
+% $B!VF0$/0z?t!W$G(B|\ref|$B$J$I$r;H$C$?>l9g$K!"L\<!$G8e$m$N6uGr$,>C$($F$7$^$$$^$9!#(B
+% $B$=$3$G!"(B|\relax|$B$N$"$H$K(B|{}|$B$rDI2C$7$^$7$?!#=>Mh$b(B|\protect\ref|$B$N$h$&$K;H$($P(B
+% $BLdBj$"$j$^$;$s$G$7$?$,!"(B\LaTeX{}$B$G$OE83+$5$l$F$bLdBj$,5/$-$J$$(Brobust$B$J<BAu$K(B
+% $B$J$C$F$$$^$9$N$G!"$3$l$K=>$$$^$9!#(B
+%
+% $B$5$i$K!"Nc$($P(B``see Appendix A.''$B$N$h$&$J5-=R$,J8Kv$K$"$j!"$+$D(B
+% ``A''$B$rAj8_;2>H$G<hF@$7$?>l9g$N%9%Z!<%9%U%!%/%?!<$rJd@5$9$k$?$a!"(B
+% |\spacefactor\@m{}|$B$K=$@5$7$^$7$?!#$3$l$G!"(B``A.''$B$N8e$N%9%Z!<%9$,(B
+% $BJ8Kv$H$7$F07$o$l$^$9!#(B
+% $B!V(B\LaTeXe{}$B%^%/%m(B\&$B%/%i%9(B $B%W%m%0%i%_%s%0<BA)2r@b!W$N%3!<%I$r;29M$K(B
+% $B$7$^$7$?$,!"?t<0%b!<%IFb$G$b%(%i!<$K$J$i$J$$$h$&$K2~NI$7$F$$$^$9!#(B
+% \changes{v1.2s}{2017/09/27}{$BAj8_;2>H$N%9%Z!<%9%U%!%/%?!<$rJd@5(B}
+% \changes{v1.2t}{2017/10/31}{v1.2s$B$NJQ99$KH<$$!"(B\cs{ref}$B$,?t<0%b!<%I$G(B
+% $B%(%i!<$K$J$C$F$$$?$N$r=$@5(B}
+% \changes{v1.2u}{2017/11/04}{emath$B$N(B\cs{marusuuref}$BBP:v(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2017/10/28}{\@setref}
+%<platexrelease> {Space factor after \ref}%
+%<*plcore|platexrelease>
+\def\@setref#1#2#3{%
+ \ifx#1\relax
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{Reference `#3' on page \thepage \space
+ undefined}%
+ \else
+ \expandafter#2#1\protect\@setref@{}% change \null to \protect\@setref@{}
+ \fi}
+\def\@setref@{\ifhmode\spacefactor\@m\fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2017/04/08}{\@setref}
+%<platexrelease> {Spacing after \ref in moving arguments}%
+%<platexrelease>\def\@setref#1#2#3{%
+%<platexrelease> \ifx#1\relax
+%<platexrelease> \protect\G@refundefinedtrue
+%<platexrelease> \nfss@text{\reset@font\bfseries ??}%
+%<platexrelease> \@latex@warning{Reference `#3' on page \thepage \space
+%<platexrelease> undefined}%
+%<platexrelease> \else
+%<platexrelease> \expandafter#2#1\relax{}% change \null to \relax{}
+%<platexrelease> \fi}
+%<platexrelease>\let\@setref@\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@setref}
+%<platexrelease> {ASCII Corporation original}%
+%<platexrelease>\def\@setref#1#2#3{%
+%<platexrelease> \ifx#1\relax
+%<platexrelease> \protect\G@refundefinedtrue
+%<platexrelease> \nfss@text{\reset@font\bfseries ??}%
+%<platexrelease> \@latex@warning{Reference `#3' on page \thepage \space
+%<platexrelease> undefined}%
+%<platexrelease> \else
+%<platexrelease> \expandafter#2#1\relax% change \null to \relax
+%<platexrelease> \fi}
+%<platexrelease>\let\@setref@\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B5?;w%?%$%WF~NO(B}
+%
+% \begin{macro}{\verb}
+% \changes{v1.1b}{1995/04/05}{$B8_49%b!<%I$N$H$-$O!"(Bpl209.def$B$NDj5A$r;H$&(B}
+% \changes{v1.1g}{1997/01/16}
+% {\cs{verb}$B%3%^%s%I$r(B\LaTeX\ \texttt{!<1996/06/01!>}$B$K9g$o$;$F=$@5(B}
+% \LaTeX{}$B$N(B|\verb|$B%3%^%s%I$G$O!"?t<0%b!<%I$G$J$$$H$-$O!"(B
+% |\leavevmode|$B$G?eJ?%b!<%I$KF~$C$?$"$H!"(B|\null|$B$r=PNO$7$F$$$^$9!#(B
+% $B%^%/%m(B|\null|$B$O(B|\hbox{}|$B$H$7$FDj5A$5$l$F$$$^$9$N$G!"(B
+% $B$3$3$K$OOB2$J84V%9%Z!<%9!J(B|\xkanjiskip|$B!K$,F~$j$^$;$s!#(B
+%
+% $B$7$+$7!"C1$K(B|\null|$B$r=|$$$F$7$^$&$H!":#EY$O(B|\verb+ abc+|$B$N$h$&$K(B
+% |\verb|$B$NKAF,$KH>3Q6uGr$,$"$k>l9g$K$3$l$,>C$($F$7$^$$$^$9(B(TeX.SX 170245)$B!#(B
+% $B$=$3$G!"(Bp\LaTeX{}$B$G$O(B|\null|$B$NBe$o$j$K(B
+% \begin{enumerate}
+% \item $BOB2$J84V%9%Z!<%9$NA^F~=hM}$OF)2a$9$k(B
+% \item $B9TJ,3d;~$K>C$($k(B(discardable)$B%N!<%I$G$O$J$$(B
+% \end{enumerate}
+% $B$NN>>r7o$rK~$?$9%N!<%I$rA^F~$7$^$9!#$3$3$G$O(B|\vadjust{}|$B$H$7$^$7$?!#(B
+%
+% $B$3$N%^%/%m$O!"(B\file{ltmiscen.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \changes{v1.2s}{2017/09/27}{\cs{verb}$B$NKAF,$NH>3Q6uGr$rJ];}(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2017/10/28}{\verb}
+%<platexrelease> {Preserve beginning space characters}%
+%<*plcore|platexrelease>
+\if@compatibility\else
+\def\verb{\relax\ifmmode\hbox\else\leavevmode\vadjust{}\fi
+ \bgroup
+ \verb@eol@error \let\do\@makeother \dospecials
+ \verbatim@font\@noligs
+% \end{macrocode}
+% \LaTeXe\ 2017-04-15$B$KDI?o$7$F!"(B|\verb|$B$NESCf$G%O%$%U%M!<%7%g%s$,5/$-$J$$(B
+% $B$h$&$K(B|\language|$B$r@_Dj$7$^$9!J;29M!'(Blatex2e svn r1405$B!K!#(B
+% \changes{v1.2m}{2017/03/19}{\cs{verb}$B$NESCf$G%O%$%U%M!<%7%g%s$,5/$-$J$$(B
+% $B$h$&$K(B\cs{language}$B$r@_Dj(B(sync with ltmiscen.dtx 2017/03/09 v1.1m)}
+% \begin{macrocode}
+ \language\l@nohyphenation
+ \@ifstar\@sverb\@verb}
+\fi
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2017/04/08}{\verb}
+%<platexrelease> {Disable hyphenation in verb}%
+%<platexrelease>\if@compatibility\else
+%<platexrelease>\def\verb{\relax\ifmmode\hbox\else\leavevmode\fi
+%<platexrelease> \bgroup
+%<platexrelease> \verb@eol@error \let\do\@makeother \dospecials
+%<platexrelease> \verbatim@font\@noligs
+%<platexrelease> \language\l@nohyphenation
+%<platexrelease> \@ifstar\@sverb\@verb}
+%<platexrelease>\fi
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\verb}
+%<platexrelease> {ASCII Corporation original}%
+%<platexrelease>\if@compatibility\else
+%<platexrelease>\def\verb{\relax\ifmmode\hbox\else\leavevmode\fi
+%<platexrelease> \bgroup
+%<platexrelease> \verb@eol@error \let\do\@makeother \dospecials
+%<platexrelease> \verbatim@font\@noligs
+%<platexrelease> \@ifstar\@sverb\@verb}
+%<platexrelease>\fi
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{tabbing$B4D6-(B}
+%
+% \begin{macro}{\@startline}
+% tabbing$B4D6-$N9T$G!"Cf?H$,;O$a3g8LN`$J$I$G;O$^$k>l9g!"(B
+% $B:G=i$N9`L\$@$1(BJFM$B%0%k!<$,>C$($J$$8=>]$KBP=h$7$^$9!#(B
+% \changes{v1.2s}{2017/09/27}{tabbing$B4D6-$N9TKAF,$N(BJFM$B%0%k!=$r:o=|(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2017/10/28}{\@startline}
+%<platexrelease> {Inhibit JFM glue at the beginning}%
+%<*plcore|platexrelease>
+\gdef\@startline{%
+ \ifnum \@nxttabmar >\@hightab
+ \@badtab
+ \global\@nxttabmar \@hightab
+ \fi
+ \global\@curtabmar \@nxttabmar
+ \global\@curtab \@curtabmar
+ \global\setbox\@curline \hbox {}%
+ \@startfield
+ \strut\inhibitglue}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@startline}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\gdef\@startline{%
+%<platexrelease> \ifnum \@nxttabmar >\@hightab
+%<platexrelease> \@badtab
+%<platexrelease> \global\@nxttabmar \@hightab
+%<platexrelease> \fi
+%<platexrelease> \global\@curtabmar \@nxttabmar
+%<platexrelease> \global\@curtab \@curtabmar
+%<platexrelease> \global\setbox\@curline \hbox {}%
+%<platexrelease> \@startfield
+%<platexrelease> \strut}
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@stopfield}
+% \changes{v1.1d}{1996/03/12}{\cs{=}$B$N8e$m$KOB2$J84V%9%Z!<%9$,F~$k$N$r=$@5(B}
+% $BAj8_;2>H$d5?;w%?%$%WF~NO$G$O!"OB2$J84V%9%Z!<%9$,F~$i$J$$$N$G!"(B|\null|$B$r(B
+% $B<h$j=|$-$^$7$?$,!"(B|tabbing|$B4D6-$G$O!"5U$K(B|\null|$B$,$J$$$?$a!"(B
+% $BOB2$J84V%9%Z!<%9$,F~$C$F$7$^$&$N$G!"$=$l$rDI2C$7$^$9!#(B
+% \file{lttab.dtx}$B$GDj5A$5$l$F$$$k$b$N$G$9!#(B
+% \begin{macrocode}
+\gdef\@stopfield{\null\color@endgroup\egroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$BMQ8l=8$N=PNO(B}
+% \LaTeX{}$B$K$O!"$J$<$+MQ8l=8$r=PNO$9$k$?$a$N%3%^%s%I$,$"$j$^$;$s$N$G!"(B
+% $BDI2C$r$7$^$9!#(B
+% \changes{v1.1e}{1996/02/17}{\cs{printglossary}$B$rDI2C(B}
+%
+% \begin{macro}{\printglossary}
+% \cs{printglossary}$B%3%^%s%I$O!"C1$K3HD%;R$,(B\texttt{gls}$B$N%U%!%$%k$r(B
+% $BFI$_9~$`$@$1$G$9!#$3$N%U%!%$%k$N@8@.$K$O!"(Bmendex$B$J$I$rMQ$$$^$9!#(B
+% \begin{macrocode}
+\newcommand\printglossary{\@input@{\jobname.gls}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B;~J,$r<($9%+%&%s%?(B}
+% \TeX $B$K$O!"G/7nF|$r<($9?tCM$rJ];}$7$F$$$k%+%&%s%?$H$7$F!"$=$l$>$l(B
+% |\year|, |\month|, |\day|$B$,%W%j%_%F%#%V$H$7$FB8:_$7$^$9!#$7$+$7!"(B
+% $B;~J,$K$D$$$F$O!"?<Lk$NNm;~$+$i$N7P2a;~4V$r<($9(B|\time|$B%+%&%s%?$7$+B8:_(B
+% $B$7$F$$$^$;$s!#$=$3$G!"(Bp\LaTeXe{}$B$G$O!";~J,$r<($9$?$a$N%+%&%s%?(B|\hour|$B$H(B
+% |\minute|$B$r:n@.$7$F$$$^$9!#(B
+%
+% \begin{macro}{\hour}
+% \begin{macro}{\minute}
+% $B2?;~$+!J(B|\hour|$B!K$rF@$k$K$O!"(B|\time|$B$r(B60$B$G3d$C$?>&$r$=$N$^$^MQ$$$^$9!#(B
+% $B2?J,$+!J(B|\minute|$B!K$O!"(B|\hour|$B$K(B60$B$r3]$1$?CM$r(B|\time|$B$+$i0z$$$F;;=P$7$^$9!#(B
+% $B$3$3$G$O%+%&%s%?$r@k8@$9$k$@$1$G$9!#<B:]$N7W;;$O!"%/%i%9$d%Q%C%1!<%8$NCf(B
+% $B$G9T$J$C$F$$$^$9!#(B
+% \begin{macrocode}
+\newcount\hour
+\newcount\minute
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{tabular$B4D6-(B}
+% \LaTeX{}$B%+!<%M%k(B(lttab.dtx)$B$NL?Na72$r=$@5$7$^$9!#(B
+%
+% \begin{macro}{\@tabclassz}
+% \LaTeX{}$B%+!<%M%k$O!"%"%i%$%s%a%s%HJ8;z(B|&|$B$N<~0O$KH>3Q6uGr$r=q$$$?$+$I$&$+$K(B
+% $B$+$+$o$i$:M>J,$J%9%Z!<%9$r=PNO$7$J$$$h$&$K!"(B|\ignorespaces|$B$H(B|\unskip|$B$r(B
+% $BH/9T$7$F$$$^$9(B(lttab.dtx)$B!#$7$+$7!"$3$l$@$1$G$O(BJFM$B%0%k!<$,>C$($:$K;D$C$F(B
+% $B$7$^$&$N$G!"(Bp\LaTeX{}$B$G$ODI2C$NBP=h$rF~$l$^$9!#(B
+%
+% $B$^$:!"(B|l|, |c|, |r|$B$N>l9g$G$9!#(B
+% 2017/09/26$B$N=$@5$G$O!V%;%k$NMWAG$r(B|\mbox|$B$KF~$l!"(B
+% $B$=$N:G=i$G(B|\inhibitglue|$B$rH/9T$9$k!W$H$$$&J}?K$G$7$?$,!"(B
+% 2018/03/09$B$N=$@5$G$O!V(B|\removejfmglue|$B%^%/%m$,Dj5A$5$l$F$$$k>l9g$O(B
+% $B:G=i$K(B|\inhibitglue|$B$rH/9T$7!":G8e$K(B|\removejfmglue|$B$rH/9T$9$k!W$H$$$&(B
+% $BJ}?K$K$7$^$9!#$3$&$9$l$P>/!9(B\LaTeX{}$B$H$N8_49@-$,8~>e$7$^$9!#(B
+% \changes{v1.2p}{2017/07/21}{tabular$B4D6-$N%;%kFb$N(BJFM$B%0%k!=$r:o=|(B}
+% \changes{v1.2r}{2017/09/26}{tabular$B4D6-$N1&B7$((B(r)$B$G7S@~$,$:$l$k$h$&$K(B
+% $B$J$C$F$$$?%P%0$r=$@5(B}
+% \changes{v1.2x}{2018/03/01}{\cs{removejfmglue}$B$,$"$l$PMxMQ$9$k$h$&$K$7$?(B}
+% \changes{v1.3b}{2019/02/08}{$BCf1{B7$($N%;%k$G$N(B\cs{unskip}$BBP:v(B
+% (sync with lttab 2018/12/30 v1.1p)}
+% ^^A $B$J$<$+(B v1.3b $B$NJQ99$OK\2H(B latexrelease $B$K4^$^$l$J$$$N$G$=$l$K9g$o$;$?(B
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2018/03/09}{\@tabclassz}
+%<platexrelease> {Inhibit JFM glue in tabular cells (better)}%
+%<*plcore|platexrelease>
+\ifx\removejfmglue\@undefined
+\def\@tabclassz{%
+ \ifcase\@lastchclass
+ \@acolampacol
+ \or
+ \@ampacol
+ \or
+ \or
+ \or
+ \@addamp
+ \or
+ \@acolampacol
+ \or
+ \@firstampfalse\@acol
+ \fi
+ \edef\@preamble{%
+ \@preamble{%
+ \ifcase\@chnum
+ \hfil\mbox{\inhibitglue\ignorespaces\@sharp\unskip}\hfil % c
+ \or
+ \hskip1sp\mbox{\inhibitglue\ignorespaces\@sharp\unskip}\hfil % l
+ \or
+ \hfil\hskip1sp\mbox{\inhibitglue\ignorespaces\@sharp\unskip}% % r
+ \fi}}}
+\else
+\def\@tabclassz{%
+ \ifcase\@lastchclass
+ \@acolampacol
+ \or
+ \@ampacol
+ \or
+ \or
+ \or
+ \@addamp
+ \or
+ \@acolampacol
+ \or
+ \@firstampfalse\@acol
+ \fi
+ \edef\@preamble{%
+ \@preamble{%
+ \ifcase\@chnum
+ \hfil\hskip1sp\inhibitglue
+ \ignorespaces\@sharp\unskip\removejfmglue\hfil % c
+ \or
+ \hskip1sp\inhibitglue
+ \ignorespaces\@sharp\unskip\removejfmglue\hfil % l
+ \or
+ \hfil\hskip1sp\inhibitglue
+ \ignorespaces\@sharp\unskip\removejfmglue % r
+ \fi}}}
+\fi
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2017/09/26}{\@tabclassz}
+%<platexrelease> {Inhibit JFM glue in tabular cells}%
+%<platexrelease>\def\@tabclassz{%
+%<platexrelease> \ifcase\@lastchclass
+%<platexrelease> \@acolampacol
+%<platexrelease> \or
+%<platexrelease> \@ampacol
+%<platexrelease> \or
+%<platexrelease> \or
+%<platexrelease> \or
+%<platexrelease> \@addamp
+%<platexrelease> \or
+%<platexrelease> \@acolampacol
+%<platexrelease> \or
+%<platexrelease> \@firstampfalse\@acol
+%<platexrelease> \fi
+%<platexrelease> \edef\@preamble{%
+%<platexrelease> \@preamble{%
+%<platexrelease> \ifcase\@chnum
+%<platexrelease> \hfil\mbox{\inhibitglue
+%<platexrelease> \ignorespaces\@sharp\unskip}\hfil % c
+%<platexrelease> \or
+%<platexrelease> \hskip1sp\mbox{\inhibitglue
+%<platexrelease> \ignorespaces\@sharp\unskip}\hfil % l
+%<platexrelease> \or
+%<platexrelease> \hfil\hskip1sp\mbox{\inhibitglue
+%<platexrelease> \ignorespaces\@sharp\unskip}% % r
+%<platexrelease> \fi}}}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2017/07/29}{\@tabclassz}
+%<platexrelease> {Inhibit JFM glue in tabular cells (wrong)}%
+%<platexrelease>\def\@tabclassz{%
+%<platexrelease> \ifcase\@lastchclass
+%<platexrelease> \@acolampacol
+%<platexrelease> \or
+%<platexrelease> \@ampacol
+%<platexrelease> \or
+%<platexrelease> \or
+%<platexrelease> \or
+%<platexrelease> \@addamp
+%<platexrelease> \or
+%<platexrelease> \@acolampacol
+%<platexrelease> \or
+%<platexrelease> \@firstampfalse\@acol
+%<platexrelease> \fi
+%<platexrelease> \edef\@preamble{%
+%<platexrelease> \@preamble{%
+%<platexrelease> \ifcase\@chnum
+%<platexrelease> \hfil\inhibitglue
+%<platexrelease> \ignorespaces\@sharp\unskip\unskip\hfil % c
+%<platexrelease> \or
+%<platexrelease> \hskip1sp\inhibitglue
+%<platexrelease> \ignorespaces\@sharp\unskip\unskip\hfil % l
+%<platexrelease> \or
+%<platexrelease> \hfil\hskip1sp\inhibitglue
+%<platexrelease> \ignorespaces\@sharp\unskip\unskip % r
+%<platexrelease> \fi}}}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@tabclassz}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\def\@tabclassz{%
+%<platexrelease> \ifcase\@lastchclass
+%<platexrelease> \@acolampacol
+%<platexrelease> \or
+%<platexrelease> \@ampacol
+%<platexrelease> \or
+%<platexrelease> \or
+%<platexrelease> \or
+%<platexrelease> \@addamp
+%<platexrelease> \or
+%<platexrelease> \@acolampacol
+%<platexrelease> \or
+%<platexrelease> \@firstampfalse\@acol
+%<platexrelease> \fi
+%<platexrelease> \edef\@preamble{%
+%<platexrelease> \@preamble{%
+%<platexrelease> \ifcase\@chnum
+%<platexrelease> \hfil\ignorespaces\@sharp\unskip\hfil
+%<platexrelease> \or
+%<platexrelease> \hskip1sp\ignorespaces\@sharp\unskip\hfil
+%<platexrelease> \or
+%<platexrelease> \hfil\hskip1sp\ignorespaces\@sharp\unskip
+%<platexrelease> \fi}}}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@classv}
+% $B<!$K!"(B|p|$B$N>l9g$G$9!#(B
+% 2017/07/29$B$N=$@5$G$O(B|\mbox{}\inhibitglue|$B$H(B|\unskip|$B$rDI2C$7$F$$$^$7$?$,!"(B
+% $B0J2<$N$h$&$K(B|p|$B;XDj$N%;%k$N:G=i$G(B|\par|$B$H$7$F(B
+% $B2~CJMn$rH/9T$9$k$H!"0l9T6u$$$F$7$^$&$H$$$&>I>u$,5/$-$F$7$^$$$^$9(B(platex/\#63)$B!#(B
+%\begin{verbatim}
+% \begin{tabular}{p{5cm}}
+% A\\
+% \relax\par
+% A
+% \end{tabular}
+%\end{verbatim}
+% $B$3$3$G$O!"(B2017/07/29$B$N=$@5$+$iJ}?K$r2~$a!"(B|\everypar|$BFb$K(B|\inhibitglue|$B$r(B
+% $B;E9~$`$H$$$&J}?K$GBP1~$7$^$9!#(B
+% \changes{v1.2p}{2017/07/21}{tabular$B4D6-$N%;%kFb$N(BJFM$B%0%k!=$r:o=|(B}
+% \changes{v1.2x}{2018/03/01}{$B%;%k:G=i$N(B\cs{par}$B$G6u9T$,F~$i$J$$$h$&$K$7$?(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2018/03/09}{\@classv}
+%<platexrelease> {Inhibit JFM glue in tabular cells (better)}%
+%<*plcore|platexrelease>
+\def\@classv{\@addtopreamble{\@startpbox{\@nextchar}\pltx@next@inhibitglue\ignorespaces
+\@sharp\unskip\@endpbox}}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2017/07/29}{\@classv}
+%<platexrelease> {Inhibit JFM glue in tabular cells}%
+%<platexrelease>\def\@classv{\@addtopreamble{\@startpbox{\@nextchar}\mbox{}\inhibitglue\ignorespaces
+%<platexrelease>\@sharp\unskip\@endpbox}}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@classv}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\def\@classv{\@addtopreamble{\@startpbox{\@nextchar}\ignorespaces
+%<platexrelease>\@sharp\@endpbox}}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pltx@next@inhibitglue}
+% $B?eJ?%b!<%I$G$"$l$P$=$N$^$^(B|\inhibitglue|$B$rH/9T$7!"$=$l0J30$G$"$l$P(B
+% |\everypar|$BFb$K(B|\inhibitglue|$B$r;E9~$_$^$9!#(B
+% \changes{v1.2x}{2018/03/01}{\cs{everypar}$B$K(B\cs{inhibitglue}$B$r;E9~$`%^%/%mDI2C(B}
+% \changes{v1.2y}{2018/03/12}{\cs{inhibitglue}$B$r(B\cs{everypar}$B$NKvHx$K0\F0(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2018/03/09}{\pltx@next@inhibitglue}
+%<platexrelease> {Add \pltx@next@inhibitglue}%
+%<*plcore|platexrelease>
+\protected\def\pltx@next@inhibitglue{%
+ \ifhmode\inhibitglue\else
+ \edef\@tempa{\everypar{%
+ \everypar{\unexpanded\expandafter{\the\everypar}}%
+ \unexpanded\expandafter{\the\everypar}\inhibitglue}}%
+ \@tempa\fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\pltx@next@inhibitglue}
+%<platexrelease> {Add \pltx@next@inhibitglue}%
+%<platexrelease>\let\pltx@next@inhibitglue\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{2013$BG/0J9_$N?7$7$$(Bp\TeX{}$BBP1~(B}
+% \LaTeXe{}$B$N%+!<%M%k$N%3!<%I$r$=$N$^$^;H$&$H!"(B2013$BG/0J9_$N(Bp\TeX{}$B$G$O(B
+% |\xkanjiskip|$BM3Mh$N%"%-$,A08e$KF~$C$F$7$^$&$3$H$,$"$j$^$7$?!#(B
+% $B$=$&$7$?L?Na$K%Q%C%A$r$"$F$^$9!#$J$*!"4{$K=P$F$-$?(B|\footnote|$B$NFbItL?Na(B
+% $B!J(B|\@makefnmark|$B!K$K$OF1MM$N%Q%C%A$,$b$&$"$F$F$"$j$^$9!#(B
+%
+% \begin{macro}{\@tabular}
+% tabular$B4D6-$NFbItL?Na$G$9!#$b$H$O(B\file{lttab.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \changes{v1.2c}{2016/02/28}{1.2b$B$HF1MM$N=$@5$r(Btabular$B4D6-$K$b9T$C$?(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\@tabular}
+%<platexrelease> {Remove extra \xkanjiskip}%
+%<*plcore|platexrelease>
+\def\@tabular{\leavevmode \null\hbox \bgroup $\let\@acol\@tabacol
+ \let\@classz\@tabclassz
+ \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@tabular}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\def\@tabular{\leavevmode \hbox \bgroup $\let\@acol\@tabacol
+%<platexrelease> \let\@classz\@tabclassz
+%<platexrelease> \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\endtabular}
+% \begin{macro}{\endtabular*}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\endtabular}
+%<platexrelease> {Remove extra \xkanjiskip}%
+%<*plcore|platexrelease>
+\def\endtabular{\crcr\egroup\egroup $\egroup\null}
+\expandafter \let \csname endtabular*\endcsname = \endtabular
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\endtabular}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\def\endtabular{\crcr\egroup\egroup $\egroup}
+%<platexrelease>\expandafter \let \csname endtabular*\endcsname = \endtabular
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@iiiparbox}
+% |\parbox|$B$NFbItL?Na$G$9!#$b$H$O(B\file{ltboxes.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \changes{v1.2c}{2016/02/28}{1.2b$B$HF1MM$N=$@5$r(B\cs{parbox}$BL?Na$K$b9T$C$?(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\@iiiparbox}
+%<platexrelease> {Remove extra \xkanjiskip}%
+%<*plcore|platexrelease>
+\let\@parboxto\@empty
+\long\def\@iiiparbox#1#2[#3]#4#5{%
+ \leavevmode
+ \@pboxswfalse
+ \setlength\@tempdima{#4}%
+ \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
+ \ifx\relax#2\else
+ \setlength\@tempdimb{#2}%
+ \edef\@parboxto{to\the\@tempdimb}%
+ \fi
+ \if#1b\vbox
+ \else\if #1t\vtop
+ \else\ifmmode\vcenter
+ \else\@pboxswtrue\null$\vcenter% !!!
+ \fi\fi\fi
+ \@parboxto{\let\hss\vss\let\unhbox\unvbox
+ \csname bm@#3\endcsname}%
+ \if@pboxsw \m@th$\null\fi% !!!
+ \@end@tempboxa}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@iiiparbox}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\let\@parboxto\@empty
+%<platexrelease>\long\def\@iiiparbox#1#2[#3]#4#5{%
+%<platexrelease> \leavevmode
+%<platexrelease> \@pboxswfalse
+%<platexrelease> \setlength\@tempdima{#4}%
+%<platexrelease> \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
+%<platexrelease> \ifx\relax#2\else
+%<platexrelease> \setlength\@tempdimb{#2}%
+%<platexrelease> \edef\@parboxto{to\the\@tempdimb}%
+%<platexrelease> \fi
+%<platexrelease> \if#1b\vbox
+%<platexrelease> \else\if #1t\vtop
+%<platexrelease> \else\ifmmode\vcenter
+%<platexrelease> \else\@pboxswtrue $\vcenter
+%<platexrelease> \fi\fi\fi
+%<platexrelease> \@parboxto{\let\hss\vss\let\unhbox\unvbox
+%<platexrelease> \csname bm@#3\endcsname}%
+%<platexrelease> \if@pboxsw \m@th$\fi
+%<platexrelease> \@end@tempboxa}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\underline}
+% $B2<@~$r0z$/L?Na$G$9!#$b$H$O(B\file{ltboxes.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \changes{v1.2c}{2016/02/28}{1.2b$B$HF1MM$N=$@5$r(B\cs{underline}$BL?Na$K$b9T$C$?(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\underline}
+%<platexrelease> {Remove extra \xkanjiskip}%
+%<*plcore|platexrelease>
+\def\underline#1{%
+ \relax
+ \ifmmode\@@underline{#1}%
+ \else \leavevmode\null$\@@underline{\hbox{#1}}\m@th$\null\relax\fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\underline}
+%<platexrelease> {LaTeX2e original}%
+%<platexrelease>\def\underline#1{%
+%<platexrelease> \relax
+%<platexrelease> \ifmmode\@@underline{#1}%
+%<platexrelease> \else $\@@underline{\hbox{#1}}\m@th$\relax\fi}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{e-p\TeX{}$B$G$N(BFAM256$B%Q%C%A$NMxMQ(B}
+%
+% \begin{macro}{\e@alloc@chardef}
+% \begin{macro}{\e@alloc@top}
+% \LaTeXe\ 2015/01/01$B0J9_!"3HD%%l%8%9%?$,$"$l$PMxMQ$9$k$h$&$K$J$C$F$$$^$9(B
+% $B$N$G!"(Be-p\TeX{}$B$N3HD%%l%8%9%?$rMxMQ$G$-$k$h$&$K@_Dj$7$^$9!#(B
+% \changes{v1.2j}{2016/11/09}{FAM256$B%Q%C%AE,MQ(Be-p\TeX{}$B$KBP1~(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2018/03/09}%
+%<platexrelease> {\e@alloc@chardef}{Extended Allocation (FAM256)}%
+%<*plcore|platexrelease>
+% \end{macrocode}
+% \begin{macrocode}
+\ifx\omathchar\@undefined
+ \ifx\widowpenalties\@undefined
+% \end{macrocode}
+% $B%*%j%8%J%k$N(B\TeX{}$B$N>l9g!J3HD%$J$7$N%"%9%-!<(Bp\TeX{}$B$N>l9g!K!#(B
+% \begin{macrocode}
+ \mathchardef\e@alloc@top=255
+ \let\e@alloc@chardef\chardef
+ \else
+% \end{macrocode}
+% e-\TeX{}$B3HD%$G(B$2^{15}$$B8D$N%l%8%9%?$,MxMQ$G$-$^$9!#(B
+% ^^A $BHwK:O?!'!V(BFAM256$B$J$7$N(Be-(u)p\TeX{}$B!W$O;v<B>eB8:_$7$J$$$O$:!#(B
+% ^^A $B$?$@$7!"$?$H$($P(Be-(u)p\TeX{}$B$r%Y!<%9$K$7$?(B
+% ^^A p\TeX{}-ng (Asiatic pTeX)$B$O(Be-\TeX{}$B3HD%$r;}$C$F$$$F!"(B
+% ^^A FAM256$B%Q%C%A$OE,MQ$5$l$F$$$J$$$?$a!"$3$3$K3:Ev$9$k!#(B
+% ^^A cf: https://github.com/clerkma/ptex-ng
+% ^^A $B$J$*!"(Bp\TeX{}-ng$B$O(Be-p\TeX{}$B$HF1MM$K(Bpdf\TeX{}$B3HD%$N(B
+% ^^A $B0lIt!J(Be-p\TeX{}$B$HHO0O$,0lCW$7$J$$!K$r;}$C$F$$$k$3$H!"(B
+% ^^A $B$^$?(B|\epTeXinputencoding|$B$J$I$N(Be-p\TeX{}$BFH<+$N%W%j%_%F%#%V$r(B
+% ^^A $B;}$C$F$$$J$$$3$H$K$bCm0U!#(B
+% ^^A $B!J(B|\lastnodechar|$B$b(Be-p\TeX{}$BFH<+$@$C$?$,!"(B2017/09/06$BIU$G(B
+% ^^A p\TeX{}-ng$B$K$bDI2C$5$l$F$$$k!#!K(B
+% \begin{macrocode}
+ \mathchardef\e@alloc@top=32767
+ \let\e@alloc@chardef\mathchardef
+ \fi
+\else
+% \end{macrocode}
+% FAM256$B%Q%C%A$,E,MQ$5$l$?(Be-p\TeX{}$B$N>l9g$O!"(B$2^{16}$$B8D$N%l%8%9%?$,MxMQ$G$-$^$9!#(B
+% \changes{v1.2w}{2018/02/24}{e-up\TeX{}$B$G$b(B\cs{omathchardef}$B$r;HMQ(B}
+% ^^A $BHwK:O?!'(Bup\TeX{}$B$G$O(B|\omathchardef|$B$G$J$/(B|\chardef|$B$b2D$@$,!"(B
+% ^^A $B%U%)!<%^%C%H:n@.;~$K(B|-kanji-internal=euc|$B$,;XDj$5$l$k2DG=@-$,(B
+% ^^A $B$J$$$H$O8@$$@Z$l$J$$$N$G!"(BFAM256$B%Q%C%AE,MQ:Q(Be-(u)p\TeX{}$B$J$i$P(B
+% ^^A $B>o$K(B|\omathchardef|$B$rMQ$$$k$3$H$K$9$k!#(B
+% \begin{macrocode}
+ \omathchardef\e@alloc@top=65535
+ \let\e@alloc@chardef\omathchardef
+\fi
+% \end{macrocode}
+% \begin{macrocode}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/11/29}%
+%<platexrelease> {\e@alloc@chardef}{Extended Allocation (FAM256)}%
+%<platexrelease>\ifx\omathchar\@undefined
+%<platexrelease> \ifx\widowpenalties\@undefined
+%<platexrelease> \mathchardef\e@alloc@top=255
+%<platexrelease> \let\e@alloc@chardef\chardef
+%<platexrelease> \else
+%<platexrelease> \mathchardef\e@alloc@top=32767
+%<platexrelease> \let\e@alloc@chardef\mathchardef
+%<platexrelease> \fi
+%<platexrelease>\else
+%<platexrelease> \ifx\enablecjktoken\@undefined % pTeX
+%<platexrelease> \omathchardef\e@alloc@top=65535
+%<platexrelease> \let\e@alloc@chardef\omathchardef
+%<platexrelease> \else % upTeX
+%<platexrelease> \chardef\e@alloc@top=65535
+%<platexrelease> \let\e@alloc@chardef\chardef
+%<platexrelease> \fi
+%<platexrelease>\fi
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2015/01/01}%
+%<platexrelease> {\e@alloc@chardef}{LaTeX2e original}%
+%<platexrelease>\ifx\widowpenalties\@undefined
+%<platexrelease> \mathchardef\e@alloc@top=255
+%<platexrelease> \let\e@alloc@chardef\chardef
+%<platexrelease>\else
+%<platexrelease> \mathchardef\e@alloc@top=32767
+%<platexrelease> \let\e@alloc@chardef\mathchardef
+%<platexrelease>\fi
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}%
+%<platexrelease> {\e@alloc@chardef}{LaTeX2e original}%
+%<platexrelease>\let\e@alloc@top\@undefined
+%<platexrelease>\let\e@alloc@chardef\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\e@mathgroup@top}
+% 2015/01/01$B0J9_$N(B\LaTeXe{}$B%+!<%M%k$O!"(BXe\TeX{}$B$H(BLua\TeX{}$B$KBP$7$F?t<0(Bfam$B$N(B
+% $B>e8B$r(B16$B$+$i(B256$B$KA}$d$7$F$$$^$9!J(B|\Umathcode| $B$GH=Dj!K!#(B
+% FAM256$B%Q%C%A$,E,MQ$5$l$?(Be-p\TeX{}$B$G$bF1MM$K>e8B$r(B16$B$+$i(B256$B$KA}$d$7$^$9!#(B
+% $B$3$l$G(B
+%\begin{verbatim}
+% ! LaTeX Error: Too many math alphabets used in version normal.
+%\end{verbatim}
+% $B$,=P$K$/$/$J$k$O$:$G$9!#(B
+% \changes{v1.2j}{2016/11/09}{FAM256$B%Q%C%AE,MQ(Be-p\TeX{}$B$KBP1~(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/11/29}%
+%<platexrelease> {\e@mathgroup@top}{Extended Allocation (FAM256)}%
+%<*plcore|platexrelease>
+% \end{macrocode}
+% \begin{macrocode}
+\ifx\omathchar\@undefined
+ \chardef\e@mathgroup@top=16 % LaTeX2e kernel standard
+\else
+ \mathchardef\e@mathgroup@top=256 % for e-pTeX FAM256 patched
+\fi
+% \end{macrocode}
+% \begin{macrocode}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2015/01/01}%
+%<platexrelease> {\e@mathgroup@top}{LaTeX2e original}%
+%<platexrelease>\chardef\e@mathgroup@top=16
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}%
+%<platexrelease> {\e@mathgroup@top}{LaTeX2e original}%
+%<platexrelease>\let\e@mathgroup@top\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{\LaTeXe{}$B$H(Bp\LaTeXe{}$B$N99?7%?%$%_%s%0$:$lBP:v(B}
+% \changes{v1.3a}{2018/10/31}{\LaTeXe{}$B$H(Bp\LaTeXe{}$B$N99?7%?%$%_%s%0$:$lBP:v$r(B
+% \file{plvers.dtx} (plfinal) $B$+$i(B\file{plcore.dtx}$B$X0\F0!"(Blatexrelease$BBP:v(B
+% (sync with ltfinal 2018/08/24 v2.1f)}
+%
+% \begin{macro}{\l@nohyphenation}
+% $BDL>o$O(BBabel$B$N%O%$%U%M!<%7%g%sDj5A$K$h$jDs6!$5$l$k%Q%i%a!<%?$G$9!#(B
+% $B$7$+$7!"(B\LaTeXe\ 2017-04-15$B0J9_!&(Bp\LaTeXe\ 2017-04-08$B0J9_$G$O!"(B
+% |\verb|$B$NESCf$G%O%$%U%M!<%7%g%s$,5/$-$J$$$h$&$K$9$k$?$a$KI,?\$N(B
+% $B$b$N$H$J$j$^$7$?!#(B
+% \LaTeXe{}$B$OFC<l$J>u67$bA[Dj$7$F(Bltfinal.dtx$B$GBP:v$7$F$$$k$h$&$G$9$N$G!"(B
+% p\LaTeXe{}$B$bG0$N$?$a$3$3$GBP:v$7$^$9!J;29M!'(Blatex2e svn r1405$B!K!#(B
+% \begin{macrocode}
+%<*plcore>
+\ifx\l@nohyphenation \@undefined
+ \newlanguage\l@nohyphenation
+\fi
+%</plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\document@default@language}
+% \LaTeXe\ 2017-04-15$B$GF3F~$5$l$?%Q%i%a!<%?$G$9$,!"$3$l$K@hN)$A(B
+% p\LaTeXe\ 2017-04-08$B$G$b;HMQ$7$F$$$^$9!#(B
+% verbatim$B4D6-$NESCf$G(B
+% $B2~%Z!<%8$,5/$-$?>l9g$K%X%C%@$G%O%$%U%M!<%7%g%s$,M^@)$5$l$J$$$h$&$K!"(B
+% |\@outputpage|$B$G(B|\language|$B$r%j%;%C%H$9$k$H$-$K;H$o$l$^$9(B
+% $B!J;29M!'(Blatex2e svn r1407$B!K!#(B
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2017/04/08}{\document@default@language}%
+%<platexrelease> {Save language for hyphenation}%
+%<*plcore|platexrelease>
+\ifx\document@default@language \@undefined
+ \let\document@default@language\m@ne
+\fi
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\document@default@language}%
+%<platexrelease> {Save language for hyphenation}%
+%<platexrelease>\let\document@default@language\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+\endinput
diff --git a/language/japanese/platex/pldoc.pdf b/language/japanese/platex/pldoc.pdf
new file mode 100644
index 0000000000..2d845301aa
--- /dev/null
+++ b/language/japanese/platex/pldoc.pdf
Binary files differ
diff --git a/language/japanese/platex/pldocs.ins b/language/japanese/platex/pldocs.ins
new file mode 100644
index 0000000000..f5ad788c1f
--- /dev/null
+++ b/language/japanese/platex/pldocs.ins
@@ -0,0 +1,24 @@
+\input docstrip
+\keepsilent
+\ifToplevel{\askonceonly}
+\usedir{tex/platex/base}
+
+\Msg{*** Generating the pLaTeX files for making the documents ***}
+
+\preamble
+
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016-2018 Japanese TeX Development Community
+
+This file is part of the pLaTeX2e system (community edition).
+-------------------------------------------------------------
+
+\endpreamble
+
+\generate{
+ \file{jltxdoc.cls}{\from{jltxdoc.dtx}{class}}
+ \file{pldoc.tex}{\from{platex.dtx}{pldoc}}
+ \file{Xins.ins}{\from{platex.dtx}{Xins}}
+}
+
+\endbatchfile
diff --git a/language/japanese/platex/plext.dtx b/language/japanese/platex/plext.dtx
new file mode 100644
index 0000000000..8dbce77002
--- /dev/null
+++ b/language/japanese/platex/plext.dtx
@@ -0,0 +1,1457 @@
+% \iffalse meta-comment
+%% File: plext.dtx
+%
+% Copyright 2001 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016-2018 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% \fi
+%
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.0}{1994/09/16}{first edition}
+% \changes{v1.1a}{1995/03/11}{$B=DAH%^%/%m<BAu(B}
+% \changes{v1.1b}{1995/04/01}{$B8_49%b!<%IItJ,$rJL%U%!%$%k$K0\F0(B}
+% \changes{v1.1c}{1995/08/25}{\cs{newline}, \cs{strut}$B$N=$@5(B}
+% \changes{v1.1d}{1995/11/10}{$B%*%j%8%J%k$H$N%3%^%s%IL>%P%C%F%#%s%0$r$d$a$?(B}
+% \changes{v1.1d}{1995/11/21}{\cs{Rensuji}, \cs{prensuji}$B$r:n@.(B}
+% \changes{v1.1e}{1995/11/21}{$B%W%j%"%s%V%k%3%^%s%I$r(B\file{plcore}$B$K0\F0(B}
+% \changes{v1.1f}{1996/01/09}{$B=DAH$K0MB8$7$J$$%3%^%s%I$rJ,N%$7!"$3$N%U%!%$%k$r(B
+% $B3HD%%Q%C%1!<%8$H$7$?(B}
+% \changes{v1.1g}{1996/01/12}{minipage$B4D6-$NCf$G(B\cs{parbox}$B$r2sE>%*%W%7%g%s(B
+% $BIU$-$G;HMQ$9$k$H%(%i!<$H$J$k%P%0$r=$@5(B}
+% \changes{v1.1h}{1996/01/30}{$B%-%c%W%7%g%s3HD%%^%/%m$rDI2C(B}
+% \changes{v1.1i}{2001/05/10}{$B=DAH$G(Bz$B$r;XDj$9$k$H%(%i!<$K$J$k$N$r=$@5!#(B
+% $B$"$j$,$H$&!"Bg@P$5$s(B}
+% \changes{v1.2}{2001/09/26}{$B%?%0L>$r(Bplcore$B$+$i(Bpackage$B$KJQ99$7$?(B}
+% \changes{v1.2a}{2016/08/20}{tabular$B4D6-A0$NM>J,$J(B\cs{xkanjiskip}$B$r:o=|(B}
+% \changes{v1.2a}{2016/08/20}{tabular$B4D6-8e$NM>J,$J(B\cs{xkanjiskip}$B$r:o=|(B}
+% \changes{v1.2a}{2016/08/20}{\cs{parbox}$BA08e$NM>J,$J(B\cs{xkanjiskip}$B$r:o=|(B}
+% \changes{v1.2a}{2016/08/20}{$B2#AH$G(B\texttt{<t>}$B$r;XDj$7$?>l9g$K(B
+% \cs{@arstrutbox}$B$rM>7W$K(B\cs{hbox}$B$KF~$l$F$$$?$N$r=$@5(B}
+% \changes{v1.2b}{2016/11/07}{$B2#AH$GCJMn$NF,$K(B\cs{rensuji}$B$r;H$($k(B
+% $B$h$&$K(B\cs{leavevmode}$B$rDI2C$7$F=$@5(B}
+% \changes{v1.2c}{2016/11/19}{Use \cs{setlength}, so that
+% calc extensions apply (sync with lttab.dtx v1.1j)}
+% \changes{v1.2c}{2016/11/19}{Use \cs{@setminpage}
+% (sync with ltboxes v1.1a)}
+% \changes{v1.2c}{2016/11/19}{put \cs{global} into definition
+% of \cs{@minipagefalse} (sync with ltboxes v1.0z)}
+% \changes{v1.2c}{2016/11/19}{Changed \cs{endgraf} to
+% \cs{@@par} (sync with ltboxes.dtx v1.0y)}
+% \changes{v1.2c}{2016/11/19}{Changed \cs{@empty} to \cs{relax} as
+% flag for natural width: pr/2975 (sync with ltboxes.dtx v1.1f)}
+% \changes{v1.2c}{2016/11/19}{Ensure \cs{@parboxto} holds the value
+% of \cs{@tempdimb} not the register itself (pr/3867)
+% (sync with ltboxes.dtx v1.1g)}
+% \changes{v1.2d}{2017/02/04}{\cs{Kanji}$B$N0z?t$@$1$G$J$/8e$KO"B3$9$k(B
+% $B?t;z$b4A?t;z$K$J$C$F$7$^$&%P%0$r=$@5(B}
+% \changes{v1.2e}{2017/03/02}{Make \cs{parbox} Robust
+% (sync with ltboxes 2015/01/08 v1.1h)}
+% \changes{v1.2f}{2017/03/28}{$BI=$H<~0O$H$NB7$(0LCV$r=$@5(B}
+% \changes{v1.2f}{2017/03/28}{$BCJMn$NH"$H<~0O$H$NB7$(0LCV$r=$@5(B}
+% \changes{v1.2g}{2017/05/04}{Make \cs{pbox} Robust}
+% \changes{v1.2g}{2017/05/04}{Use \cs{setlength}, so that
+% calc extensions apply}
+% \changes{v1.2h}{2017/07/21}{$BI=$H<~0O$H$NB7$(0LCV$r$5$i$K=$@5(B}
+% \changes{v1.2i}{2018/09/09}{Made caption an error outside a float: latex/2815
+% (sync with ltfloat 1999/04/19 v1.1u)}
+% \changes{v1.2i}{2018/09/09}{$B=D?t<0%G%#%l%/%7%g%s$NO"?t;z(B}
+% \changes{v1.2i}{2018/09/09}{Moved the code associated with
+% \cs{@mkpream} into the group provided by the box,
+% for robustness (latex/2183)
+% (sync with lttab.dtx 1996/10/21 v1.1i)}
+% \changes{v1.2i}{2018/09/09}{Use \cs{set@typeset@protect}
+% (sync with lttab.dtx 1996/10/21 v1.1i)}
+% \changes{v1.2i}{2018/09/09}{Check for hmode to see if something
+% went wrong during parsing (pr/2884)
+% (sync with lttab.dtx 1998/11/13 v1.1m)}
+% \changes{v1.2i}{2018/09/09}{$B0BA4$N$?$a!"(B\cs{DeclareLayoutCaption}$B$G(B
+% $BDj5A$9$kFbItL?Na$r(B\cs{...@layoutcaption}$B$+$i(B
+% \cs{...@layoutc@ption}$B$XJQ99(B}
+% \changes{v1.2j}{2018/09/20}{Change \cs{@stabular} to \cs{p@stabular},
+% to avoid conflict with \textsf{stabular} package}
+% \changes{v1.2k}{2018/10/07}{$B%-%c%W%7%g%s$N%G%U%)%k%H$NAHJ}8~$r(By$B$+$i(Bn$B$X(B
+% $BJQ99(B (forum:2506, issue~76)}
+% \changes{v1.2k}{2018/10/07}{$B%-%c%W%7%g%s$NAH$_J}8~$,4pK\AH$NAH$_J}8~$H(B
+% $BD>8r$9$k>l9g$K!"?<$5$rK:$l$F$$$?%P%0=$@5(B (forum:2506, issue~76)}
+% \fi
+%
+% \iffalse
+\NeedsTeXFormat{pLaTeX2e}
+%<*driver>
+\ProvidesFile{plext.dtx}
+%</driver>
+%<package>\ProvidesPackage{plext}
+ [2018/10/07 v1.2k pLaTeX package file (community edition)]
+%<*driver>
+\documentclass{jltxdoc}
+\usepackage{plext}
+\GetFileInfo{plext.dtx}
+\title{p\LaTeXe{}$B3HD%%Q%C%1!<%8(B\space\fileversion}
+\author{Ken Nakano}
+\date{$B:n@.F|!'(B\filedate}
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \section{$B35MW(B}\label{plext:intro}
+% $B$3$N%Q%C%1!<%8$O!"0J2<$N9`L\$K4X$9$k5!G=$r3HD%$9$k$b$N$G$9!#(B
+%
+% \begin{itemize}
+% \item $BI=AH4D6-(B
+% \item $B%U%m!<%H$H%-%c%W%7%g%s$N=PNO0LCV(B
+% \item $BCJMn%\%C%/%94D6-(B
+% \item $B:n?^4D6-(B
+% \item $BO"?t;z!"4A?t;z!"K5E@!"2<@~(B
+% \item $B;2>HHV9f(B
+% \end{itemize}
+%
+% $B$3$N%Q%C%1!<%8$O=DAHMQ%/%i%9!J(Btarticle, tbook, treport$B!K$N$H$-$K$O!"(B
+% $B<+F0E*$KFI$_9~$^$l$^$9!#2#AHMQ%/%i%9!J(Bjarticle, jbook, jreport$B!K$G(B
+% $B3HD%5!G=$r;H$$$?$$>l9g$O!"J8=q%U%!%$%k$N%W%j%"%s%V%k$K0J2<$N0l9T$r(B
+% $B5-=R$7$F$/$@$5$$!#(B
+%
+%\begin{verbatim}
+% \usepackage{plext}
+%\end{verbatim}
+%
+% \section{$BAHJ}8~%*%W%7%g%s$K$D$$$F(B}
+% $B$D$.$N4D6-$d%3%^%s%I$O!"AHJ}8~%*%W%7%g%s$,DI2C$5$l!"3HD%$5$l$F$$$^$9!#(B
+%
+% \begin{itemize}
+% \item tabular$B4D6-!"(Barray$B4D6-(B
+% \item |\layoutcaption|$B%3%^%s%I(B
+% \item minipage$B4D6-!"(B|\parbox|$B%3%^%s%I!"(B|\pbox|$B%3%^%s%I(B
+% \item picture$B4D6-(B
+% \end{itemize}
+%
+% $BAHJ}8~%*%W%7%g%s$O!"%3%^%s%IL>$d4D6-$N8e$m$G(B|<|$B$H(B|>|$B$G0O$C$F!"(B
+% ``y'', ``t'', ``z''$B$N$$$:$l$+$r;XDj$7$^$9!#(B
+% $B$=$l$>$l$N%*%W%7%g%s$N0UL#$O$D$.$N$H$*$j$G$9!#(B
+% $B%G%U%)%k%H$NAH$_J}8~$O!"2#AH$N$H$-$O(B``y''$B!"=DAH$N$H$-$O(B``t''$B$G$9!#(B
+%
+% \medskip
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{c|l}
+% \emph{$B%*%W%7%g%s(B} & \emph{$B0UL#(B}\\\hline
+% \texttt{y}& $B2#AH$G=PNO!J2#AH%b!<%I$G$O2?$b$7$J$$!K(B\\
+% \texttt{t}& $B=DAH$G=PNO!J=DAH%b!<%I$G$O2?$b$7$J$$!K(B\\
+% \texttt{z}& 90$BEY2sE>$7$F=PNO!J2#AH%b!<%I$G$O2?$b$7$J$$!K(B\\
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% $BAHJ}8~%*%W%7%g%s$rMQ$$$?%5%s%W%k$r?^(B\ref{fig:diroption}$B$K<($7$^$9!#(B
+% $B:8$+$i!"(B``y'', ``t'', ``z''$B%*%W%7%g%s$r;XDj$7$F$"$j$^$9!#(B
+%
+% \begin{figure}[htb]
+% \begin{small}
+% \begin{tsample}{10zw}
+% \vfil
+% \parbox<z>{10zw}{$B$?$H$($P!"$3$l$O$$$C$?$$2?!"$$$C$?$$$I$&$7$F!"(B
+% $B$J$I$H;W$($k$h$&$J$3$H$,@$$NCf$K$O$?$/$5$s$"$j$^$9!*(B}\par
+% \vfil
+% \parbox<t>{10zw}{$B$?$H$($P!"$3$l$O$$$C$?$$2?!"$$$C$?$$$I$&$7$F!"(B
+% $B$J$I$H;W$($k$h$&$J$3$H$,@$$NCf$K$O$?$/$5$s$"$j$^$9!)(B}\par
+% \vfil
+% \parbox<y>{10zw}{$B$?$H$($P!"$3$l$O$$$C$?$$2?!"$$$C$?$$$I$&$7$F!"(B
+% $B$J$I$H;W$($k$h$&$J$3$H$,@$$NCf$K$O$?$/$5$s$"$j$^$9!#(B}
+% \vfil
+% \end{tsample}
+% \end{small}
+% \caption{$BAHJ}8~%*%W%7%g%s$N;HMQNc(B\label{fig:diroption}}
+% \end{figure}
+%
+%
+% \section{$B%3!<%I(B}
+%
+% \begin{macro}{\if@rotsw}
+% $B$3$N%9%$%C%A$O!"=DAH%b!<%I$G(B90$BEY2sE>$5$;$k$+$I$&$+$r<($9$N$K;H$$$^$9!#(B
+% \begin{macrocode}
+%<*package>
+\newif\if@rotsw
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$BI=AH4D6-(B}
+% tabular$B4D6-$H(Barray$B4D6-$O!"AHJ}8~$r;XDj$9$k%*%W%7%g%s$rDI2C$7$^$7$?!#(B
+% $B$3$l$i$N%3%^%s%I$O!"(B\file{lttab.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+%
+% \begin{macro}{\array}
+% \begin{macro}{\tabular}
+% \begin{macro}{\tabular*}
+% array$B4D6-$H(Btabular$B4D6-$r3+;O$9$k%3%^%s%I$G$9!#(B
+% tabular$B4D6-$K$O%"%9%?%j%9%/7A<0$,$"$j$^$9!#(B
+% \begin{macrocode}
+\def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz
+ \let\@classiv\@arrayclassiv
+ \let\\\@arraycr\let\@halignto\@empty\X@tabarray}
+%
+\def\tabular{\let\@halignto\@empty\X@tabular}
+\@namedef{tabular*}{\@ifnextchar<%>
+ {\p@stabular}{\p@stabular<Z>}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\X@tabarray}
+% \begin{macro}{\X@tabular}
+% $BAHJ}8~%*%W%7%g%s$rD4$Y$^$9!#(B
+% \changes{v1.1c}{1995/08/11}{\cs{tabarray}$B$N%?%$%W%_%9=$@5(B}
+% \changes{v1.1d}{1995/11/10}{\cs{@tabarray} to \cs{p@tabarray}}
+% \changes{v1.1d}{1995/11/10}{\cs{@tabular} to \cs{p@tabular}}
+% \begin{macrocode}
+\def\X@tabarray{\@ifnextchar<%>
+ {\p@tabarray}{\p@tabarray<Z>}}
+\def\X@tabular{\@ifnextchar<%>
+ {\p@tabular}{\p@tabular<Z>}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\p@stabular}
+% \begin{macro}{\p@tabular}
+% $B%"%9%?%j%9%/7A<0$N>l9g$O!"AHJ}8~%*%W%7%g%s$N8e$m$KI}$r;XDj$7$^$9!#(B
+% \changes{v1.1d}{1995/11/10}{\cs{@tabular} to \cs{p@tabular}}
+% \changes{v1.2a}{2016/08/20}{tabular$B4D6-A0$NM>J,$J(B\cs{xkanjiskip}$B$r:o=|(B}
+% \changes{v1.2c}{2016/11/19}{Use \cs{setlength}, so that
+% calc extensions apply (sync with lttab.dtx v1.1j)}
+% \changes{v1.2j}{2018/09/20}{Change \cs{@stabular} to \cs{p@stabular},
+% to avoid conflict with \textsf{stabular} package}
+% \begin{macrocode}
+\def\p@stabular<#1>#2{%
+ \setlength\dimen@{#2}%
+ \edef\@halignto{to\the\dimen@}\p@tabular<#1>}
+\def\p@tabular<#1>{\leavevmode \null\hbox \bgroup $\let\@acol\@tabacol
+ \let\@classz\@tabclassz
+ \let\@classiv\@tabclassiv \let\\\@tabularcr\p@tabarray<#1>}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\p@tabarray}
+% $B0LCV%*%W%7%g%s$rD4$Y$^$9!#(B
+% \changes{v1.1d}{1995/11/10}{\cs{@tabarray} to \cs{p@tabarray}}
+% \begin{macrocode}
+\def\p@tabarray<#1>{\m@th\@ifnextchar[%]
+ {\p@array<#1>}{\p@array<#1>[c]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\p@array}
+% tabular$B4D6-$H(Barray$B4D6-$NFbIt7A<0$G$9!#(B
+% \changes{v1.1c}{1995/09/11}{Add \cs{adjustbaseline}.}
+% \changes{v1.1d}{1995/11/10}{\cs{@array} to \cs{p@array}}
+% \changes{v1.2a}{2016/08/20}{$B2#AH$G(B\texttt{<t>}$B$r;XDj$7$?>l9g$K(B
+% \cs{@arstrutbox}$B$rM>7W$K(B\cs{hbox}$B$KF~$l$F$$$?$N$r=$@5(B}
+% \changes{v1.2i}{2018/09/09}{Moved the code associated with
+% \cs{@mkpream} into the group provided by the box,
+% for robustness (latex/2183)
+% (sync with lttab.dtx 1996/10/21 v1.1i)}
+% \begin{macrocode}
+\def\p@array<#1>[#2]#3{%
+ \fork@array@option<#1>[#2]\@begin@alignbox
+ \bgroup\box@dir\adjustbaseline
+ \setbox\@arstrutbox\hbox{%
+ \iftdir
+ \if #1y\relax\yoko
+ \vrule\@height\arraystretch\ht\strutbox
+ \@depth\arraystretch\dp\strutbox \@width\z@
+ \else\if #1z\relax\@rotswtrue
+ \vrule\@height\arraystretch\ht\zstrutbox
+ \@depth\arraystretch\dp\zstrutbox \@width\z@
+ \else
+ \vrule\@height\arraystretch\ht\tstrutbox
+ \@depth\arraystretch\dp\tstrutbox \@width\z@
+ \fi\fi
+ \else
+ \if #1t\relax\tate
+ \vrule\@height\arraystretch\ht\tstrutbox
+ \@depth\arraystretch\dp\tstrutbox \@width\z@
+ \else
+ \vrule\@height\arraystretch\ht\strutbox
+ \@depth\arraystretch\dp\strutbox \@width\z@
+ \fi
+ \fi}%
+ \@mkpream{#3}\edef\@preamble{\ialign \noexpand\@halignto
+ \bgroup \tabskip\z@skip \@arstrut \@preamble \tabskip\z@skip \cr}%
+ \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
+ \let\tabularnewline\\%
+% \end{macrocode}
+% \changes{v1.2i}{2018/09/09}{Use \cs{set@typeset@protect}
+% (sync with lttab.dtx 1996/10/21 v1.1i)}
+% \begin{macrocode}
+ \let\par\@empty
+ \let\@sharp##%
+ \set@typeset@protect
+ \lineskip\z@skip\baselineskip\z@skip
+% \end{macrocode}
+% \changes{v1.2i}{2018/09/09}{Check for hmode to see if something
+% went wrong during parsing (pr/2884)
+% (sync with lttab.dtx 1998/11/13 v1.1m)}
+% \begin{macrocode}
+ \ifhmode \@preamerr\z@ \@@par\fi
+ \@preamble}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\endarray}
+% \begin{macro}{\endtabular}
+% array$B4D6-$H(Btabular$B4D6-$N=*N;%3%^%s%I$G$9!#(B
+% |\@end@alignbox|$B$O(B|\p@array|$B$+$i8F$S=P$5$l$k(B|\fork@array@option|$B$K$h$C$F(B
+% $B@_Dj$5$l$^$9!#(B
+% \changes{v1.2a}{2016/08/20}{tabular$B4D6-8e$NM>J,$J(B\cs{xkanjiskip}$B$r:o=|(B}
+% \begin{macrocode}
+\def\endarray{\crcr\egroup\egroup\@end@alignbox}
+\def\endtabular{\crcr\egroup\egroup\@end@alignbox $\egroup\null}
+\expandafter \let \csname endtabular*\endcsname = \endtabular
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\fork@array@option}
+% array$B4D6-$H(Btabular$B4D6-$GM?$($i$l$?(B
+% $BBh0l0z?t$HBhFs0z?t$NAH9g$;$NJ,4t$r9T$J$$$^$9!#(B
+%
+% $B%3%_%e%K%F%#HG$G$O!"%"%9%-!<HG$GIT<+A3$@$C$?I=AH!J(Barray$B4D6-$*$h$S(Btabular$B4D6-!K$H(B
+% $B<~0O$NK\J8$H$NB7$(0LCV$r=$@5$7!"0J2<$N$h$&$K@_7W$7$^$7$?!#(B
+% \begin{itemize}
+% \item $B<~0O$NAHJ}8~$,2#AH$+$DAHJ}8~$,(B|<y>|, |<z>|$B;XDj$N>l9g(B
+% \begin{itemize}
+% \item |[t]|$B;XDj$N$H$-(B\\$B0l9TL\$N%Y!<%9%i%$%s$,<~0O$N$=$l$H0lCW!J7S@~$N>l9g$OOBJ8%Y!<%9%i%$%s$N0LCV!K(B
+% \item |[c]|$B;XDj$N$H$-(B\\$BI=AH$NCf?4$,<~0O$N?t<0<4$rDL$k!J2$J8%Y!<%9%i%$%s%7%U%H$N1F6A2<!K(B
+% \item |[b]|$B;XDj$N$H$-(B\\$B:G=*9T$N%Y!<%9%i%$%s$,<~0O$N$=$l$H0lCW!J7S@~$N>l9g$OOBJ8%Y!<%9%i%$%s$N0LCV!K(B
+% \end{itemize}
+% \item $B<~0O$NAHJ}8~$,2#AH$+$DAHJ}8~$,(B|<t>|$B;XDj$N>l9g(B
+% \begin{itemize}
+% \item |[t]|$B;XDj$N$H$-(B\\$BI=AH$N>eC<$,<~0O$NOBJ8%Y!<%9%i%$%s$H0lCW(B
+% \item |[c]|$B;XDj$N$H$-(B\\$BI=AH$NCf?4$,<~0O$N?t<0<4$rDL$k!J2$J8%Y!<%9%i%$%s%7%U%H$N1F6A2<!K(B
+% \item |[b]|$B;XDj$N$H$-(B\\$BI=AH$N2<C<$,<~0O$NOBJ8%Y!<%9%i%$%s$H0lCW(B
+% \end{itemize}
+% \item $B<~0O$NAHJ}8~$,=DAH$+$DAHJ}8~$,(B|<y>|$B;XDj$N>l9g(B
+% \begin{itemize}
+% \item |[t]|$B;XDj$N$H$-(B\\$BI=AH$N>eC<$,<~0O$NOBJ8%Y!<%9%i%$%s$H0lCW(B
+% \item |[c]|$B;XDj$N$H$-(B\\$BI=AH$NCf?4$,<~0O$N?t<0<4$rDL$k!J2$J8%Y!<%9%i%$%s%7%U%H$N1F6A2<!K(B
+% \item |[b]|$B;XDj$N$H$-(B\\$BI=AH$N2<C<$,<~0O$NOBJ8%Y!<%9%i%$%s$H0lCW(B
+% \end{itemize}
+% \item $B<~0O$NAHJ}8~$,=DAH$+$DAHJ}8~$,(B|<t>|$B;XDj$N>l9g(B
+% \begin{itemize}
+% \item |[t]|$B;XDj$N$H$-(B\\$B0l9TL\$N%Y!<%9%i%$%s$,<~0O$N$=$l$H0lCW!J7S@~$N>l9g$OOBJ8%Y!<%9%i%$%s$N0LCV!K(B
+% \item |[c]|$B;XDj$N$H$-(B\\$BI=AH$NCf?4$,<~0O$N?t<0<4$rDL$k!J2$J8%Y!<%9%i%$%s%7%U%H$N1F6A2<!K(B
+% \item |[b]|$B;XDj$N$H$-(B\\$B:G=*9T$N%Y!<%9%i%$%s$,<~0O$N$=$l$H0lCW!J7S@~$N>l9g$OOBJ8%Y!<%9%i%$%s$N0LCV!K(B
+% \end{itemize}
+% \item $B<~0O$NAHJ}8~$,=DAH$+$DAHJ}8~$,(B|<z>|$B;XDj$N>l9g(B
+% \begin{itemize}
+% \item |[t]|$B;XDj$N$H$-(B\\$B0l9TL\$N2$J8%Y!<%9%i%$%s$,<~0O$N$=$l$H0lCW(B
+% \item |[c]|$B;XDj$N$H$-(B\\$BI=AH$NCf?4$,<~0O$N?t<0<4$rDL$k!J2$J8%Y!<%9%i%$%s%7%U%H$N1F6A2<!K(B
+% \item |[b]|$B;XDj$N$H$-(B\\$B:G=*9T$N2$J8%Y!<%9%i%$%s$,<~0O$N$=$l$H0lCW(B
+% \end{itemize}
+% \end{itemize}
+% \changes{v1.2f}{2017/03/28}{$BI=$H<~0O$H$NB7$(0LCV$r=$@5(B}
+% \changes{v1.2h}{2017/07/21}{$BI=$H<~0O$H$NB7$(0LCV$r$5$i$K=$@5(B}
+% \begin{macrocode}
+\def\fork@array@option<#1>[#2]{%
+\@rotswfalse
+% \end{macrocode}
+% $B=DAH%b!<%I$N$H$-!'(B
+% \begin{macrocode}
+\iftdir
+\if #1y\relax\let\box@dir\yoko
+ \if #2t\relax
+ \def\@begin@alignbox{%
+ \@tempdima=\tbaselineshift
+ \advance\@tempdima-\ybaselineshift
+ \raise\@tempdima\vtop\bgroup\kern\z@\vtop}%
+ \let\@end@alignbox\egroup
+ \else\if #2b\relax
+ \def\@begin@alignbox{%
+ \@tempdima=\tbaselineshift
+ \advance\@tempdima-\ybaselineshift
+ \raise\@tempdima\vbox\bgroup\vbox}%
+ \def\@end@alignbox{\kern\z@\egroup}%
+ \else
+ \let\@begin@alignbox\vcenter
+ \let\@end@alignbox\relax
+ \fi\fi
+\else\if #1z\relax\let\box@dir\relax\@rotswtrue
+ \if #2t\relax
+ \def\@begin@alignbox{%
+ \@tempdima=\tbaselineshift
+ \advance\@tempdima-\ybaselineshift
+ \advance\@tempdima\ht\tstrutbox
+ \raise\arraystretch\@tempdima\vtop\bgroup\kern\z@\vtop}%
+ \let\@end@alignbox\egroup
+ \else\if #2b\relax
+ \def\@begin@alignbox{%
+ \@tempdima=\tbaselineshift
+ \advance\@tempdima-\ybaselineshift
+ \advance\@tempdima-\dp\tstrutbox
+ \raise\arraystretch\@tempdima\vbox\bgroup\vbox}%
+ \def\@end@alignbox{\kern\z@\egroup}%
+ \else
+ \let\@begin@alignbox\vcenter
+ \let\@end@alignbox\relax
+ \fi\fi
+\else\let\box@dir\tate
+ \if #2t\relax
+ \let\@begin@alignbox\vtop
+ \let\@end@alignbox\relax
+ \else\if #2b\relax
+ \let\@begin@alignbox\vbox
+ \let\@end@alignbox\relax
+ \else
+ \let\@begin@alignbox\vcenter
+ \let\@end@alignbox\relax
+ \fi\fi
+\fi\fi
+% \end{macrocode}
+% $B2#AH%b!<%I$N$H$-!'(B
+% \begin{macrocode}
+\else
+\if #1t\relax\let\box@dir\tate
+ \if #2t\relax
+ \def\@begin@alignbox{\vtop\bgroup\kern\z@\vbox}%
+ \let\@end@alignbox\egroup
+ \else\if #2b\relax
+ \def\@begin@alignbox{\vbox\bgroup\vbox}%
+ \def\@end@alignbox{\kern\z@\egroup}%
+ \else
+ \let\@begin@alignbox\vcenter
+ \let\@end@alignbox\relax
+ \fi\fi
+\else\let\box@dir\yoko
+ \if #2t\relax
+ \let\@begin@alignbox\vtop
+ \let\@end@alignbox\relax
+ \else\if #2b\relax
+ \let\@begin@alignbox\vbox
+ \let\@end@alignbox\relax
+ \else
+ \let\@begin@alignbox\vcenter
+ \let\@end@alignbox\relax
+ \fi\fi
+\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B%U%m!<%H$H%-%c%W%7%g%s$N=PNO0LCV(B}
+% $B%-%c%W%7%g%s$H%U%m!<%H$O!"(B
+% $B=PNO0LCV$N;XDj$dBg$-$5$N;XDj$J$I$,$G$-$k$h$&$K3HD%$7$F$$$^$9!#(B
+% $B>\:Y$O!"!XF|K\8l(B\LaTeXe{}$B%V%C%/!Y$r;2>H$7$F$/$@$5$$!#(B
+%
+% |\layoutfloat|$B%3%^%s%I$G:n$i$l$k%\%C%/%9$G$9!#(B
+% \begin{macrocode}
+\newbox\@floatbox
+% \end{macrocode}
+% $B%U%m!<%H%*%V%8%'%/%H$NI}$H9b$5$G$9!#(B
+% \begin{macrocode}
+\newdimen\floatwidth
+\newdimen\floatheight
+% \end{macrocode}
+% $B%U%m!<%H%*%V%8%'%/%H$N$^$o$j$K0z$+$l$k7S@~$NB@$5$G$9!#(B
+% \begin{macrocode}
+\newdimen\floatruletick \floatruletick=0.4pt
+% \end{macrocode}
+% $B%U%m!<%H%*%V%8%'%/%H$H%-%c%W%7%g%s$N4V$N%"%-$G$9!#(B
+% \begin{macrocode}
+\newdimen\captionfloatsep \captionfloatsep=10pt
+% \end{macrocode}
+% |\caption@dir|$B$K$O!"%-%c%W%7%g%s$rAH$`J}8~$r<($9%*%W%7%g%s$,3JG<$5$l$^$9!#(B
+% |\captiondir|$B$O(B|\caption@dir|$B$NCM$H8=:_$NAH$_J}8~$K$h$C$F!"(B
+% |\yoko|, |\tate|, |\relax|$B$N$$$:$l$+$K@_Dj$5$l$^$9!#(B
+% \begin{macrocode}
+\def\caption@dir{Z}
+\let\captiondir\relax
+% \end{macrocode}
+% $B%-%c%W%7%g%s$NI}$G$9!#(B
+% \begin{macrocode}
+\newdimen\captionwidth \captionwidth\z@
+% \end{macrocode}
+% $B%-%c%W%7%g%s$rIU$1$k0LCV$r;XDj$7$^$9!#(B
+% \begin{macrocode}
+\def\caption@posa{Z}
+\def\caption@posb{Z}
+% \end{macrocode}
+% $BAH$_N)$F$i$l$?%-%c%W%7%g%s$,3JG<$5$l$k%\%C%/%9$G$9!#(B
+% \begin{macrocode}
+\newbox\@captionbox
+% \end{macrocode}
+% $B%-%c%W%7%g%s$K;H$o$l$kJ8;z$G$9!#(B
+% \begin{macrocode}
+\def\captionfontsetup{\normalfont\normalsize}
+% \end{macrocode}
+%
+% \begin{macro}{\layoutfloat}
+% \begin{macro}{\X@layoutfloat}
+% \begin{macro}{\@layoutfloat}
+% |\layoutfloat|$B$O?^I=N`$NBg$-$5$H0LCV$r;XDj$9$k$N$K;H$$$^$9!#(B
+% $BBg$-$5$r>JN,$9$k$+!"Ii$NCM$r;XDj$9$k$H!"(B
+% $B$=$N%*%V%8%'%/%H$N<+A3$JD9$5$K$J$j$^$9!#$3$N$H$-$O!"7S$,0z$+$l$^$;$s!#(B
+% $B@5$NBg$-$5$r;XDj$9$k$H!"(B|\floatruletick|$B$NB@$5$N7S$G0O$^$l$^$9!#(B
+%
+% $B0LCV;XDj$r>JN,$7$?>l9g!"Cf1{B7$($K$J$k$h$&$K$7$F$$$^$9!#(B
+% \begin{macrocode}
+\def\layoutfloat{\@ifnextchar(%)
+ {\X@layoutfloat}{\X@layoutfloat(-5\p@,-5\p@)}}
+%
+\def\X@layoutfloat(#1,#2){\@ifnextchar[%]
+ {\@layoutfloat(#1,#2)}{\@layoutfloat(#1,#2)[c]}}
+%
+\long\def\@layoutfloat(#1,#2)[#3]#4{%
+ \setbox\z@\hbox{#4}%
+ \floatwidth=#1 \floatheight=#2 \edef\float@pos{#3}%
+ \ifdim\floatwidth<\z@
+ \floatwidth\wd\z@\floatruletick\z@
+ \fi
+ \ifdim\floatheight<\z@
+ \floatheight\ht\z@\advance\floatheight\dp\z@\relax
+ \floatruletick\z@
+ \fi
+ \setbox\@floatbox\vbox to\floatheight{\offinterlineskip
+ \hrule width\floatwidth height\floatruletick depth\z@
+ \vss\hbox to\floatwidth{%
+ \vrule width\floatruletick height\floatheight depth\z@
+ \hss\vbox to\floatheight{\hsize\floatwidth\vss#4\vss}\hss
+ \vrule width\floatruletick height\floatheight depth\z@
+ }\hrule width\floatwidth height\floatruletick depth\z@}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\DeclareLayoutCaption}
+% |\DeclareLayoutCaption|$B%3%^%s%I$O!"%-%c%W%7%g%s$NAHJ}8~!"IU$1$k0LCV$dI}$N(B
+% $B%G%U%)%k%H$r%U%m!<%H$N%?%$%W$4$H$K@_Dj$9$k$3$H$,$G$-$^$9!#(B
+% $B$3$N%3%^%s%I$G%G%U%)%k%HCM$,@_Dj$5$l$F$$$J$$$H!"(B
+% |\pcaption|$B%3%^%s%I$G%(%i!<$,H/$;$i$l$^$9!#(B
+% $B$3$N%3%^%s%I$O%W%j%"%s%V%k$G$N$_!";HMQ$G$-$^$9!#(B
+%
+% |\DeclareLayoutCaption|\meta{type}^^A
+% |<|\meta{dir}|>(|\meta{width}|)[|\meta{pos1}\meta{pos2}|]|
+%
+% $B%3%^%s%I0z?t$r>JN,$9$k$3$H$O$G$-$^$;$s!#(B
+% \meta{dir}$B$K$O!"(B`|y|', `|t|', `|z|', `|n|'$B$N$$$:$l$+$r;XDj$7$^$9!#(B
+% `|n|'$B$H;XDj$r$9$k$H!"K\J8$NAH$_J}8~$HF1$8J}8~$G%-%c%W%7%g%s$,AH$^$l$^$9!#(B
+% $B$3$l$,%G%U%)%k%H$G$9!#!JJdB-!'(B2018/09/20 v1.2j$B$^$G$O!"$3$N@bL@$KH?$7$F(B
+% $B<B:]$N%3!<%I$O(B`|y|'$B$,%G%U%)%k%H$K$J$C$F$*$j!"(B
+% $B!VF|K\8l(B\LaTeXe{}$B%V%C%/!W$K$b(B`|y|'$B$H=q$+$l$F$$$^$7$?$,!"(B
+% $B8e=R$N!z$N%P%0=$@5$K9g$o$;!"(B2018/10/07 v1.2k$B$G(B`|n|'$B$KD>$7$^$7$?!#!K(B
+%
+% \meta{width}$B$K$O!"%-%c%W%7%g%s$r@^$jJV$9D9$5$r;XDj$7$^$9!#(B
+% `|(12zw)|'$B$H;XDj$r$9$k$H!"4A;z(B12$BJ8;zJ,$ND9$5$G@^$jJV$5$l$^$9!#(B
+% $B%G%U%)%k%H$O(B|(.8\linewidth)|$B$G$9!#(B
+% ^^A $B!JJdB-!'(B2018/09/20 v1.2j$B$^$G$O!"$3$3$N@bL@J8$@$1(B
+% ^^A `|(\floatwidth)|'$B$,%G%U%)%k%H$H=q$+$l$F$$$^$7$?$,!"(B
+% ^^A $B<B:]$N%3!<%I5Z$S!VF|K\8l(B\LaTeXe{}$B%V%C%/!W$K9g$o$;$^$7$?!#!K(B
+% $B$J$*!"%-%c%W%7%g%s$NI}$r%U%m!<%H%*%V%8%'%/%H$NI}$K9g$o$;$k>l9g$O(B
+% `|(\floatwidth)|'$B$H;XDj$7!"9b$5$K9g$o$;$k>l9g$O(B`|(\floatheight)|'$B$H(B
+% $B;XDj$7$^$9!#(B
+%
+% \meta{pos1}$B$H(B\meta{pos2}$B$K$O!"%-%c%W%7%g%s$r=PNO$9$k0LCV$r;XDj$7$^$9!#(B
+% \meta{pos1}$B$O!"(B`|c|', `|t|', `|b|'$B$N$$$:$l$+$G$9!#(B
+% \meta{pos2}$B$O!"(B`|u|', `|d|', `|l|', `|r|'$B$N$$$:$l$+$G$9!#(B
+% $B%G%U%)%k%H$O!"(B|figure|$B%?%$%W$,(B`|cd|'$B!"(B|table|$B%?%$%W$O(B`|cu|'$B$G$9!#(B
+% \changes{v1.2i}{2018/09/09}{$B0BA4$N$?$a!"(B\cs{DeclareLayoutCaption}$B$G(B
+% $BDj5A$9$kFbItL?Na$r(B\cs{...@layoutcaption}$B$+$i(B
+% \cs{...@layoutc@ption}$B$XJQ99(B}
+% \begin{macrocode}
+\def\DeclareLayoutCaption#1<#2>(#3)[#4#5]{%
+ \expandafter
+ \ifx\csname #1@layoutc@ption\endcsname\relax \else
+ \@latex@info{Redeclaring capiton layout setting of '#1'}%
+ \fi
+ \expandafter
+ \gdef\csname #1@layoutc@ption\endcsname{%
+ \if Z\caption@dir\def\caption@dir{#2}\fi
+ \ifdim\captionwidth=\z@ \captionwidth=#3\relax\fi
+ \if Z\caption@posa\def\caption@posa{#4}\fi
+ \if Z\caption@posb\def\caption@posb{#5}\fi}}
+\@onlypreamble\DeclareLayoutCaption
+% \end{macrocode}
+% \changes{v1.0h}{1996/03/13}{$B%-%c%W%7%g%s=PNO0LCV$N=i4|CM$r@_Dj(B}
+% \changes{v1.2k}{2018/10/07}{$B%-%c%W%7%g%s$N%G%U%)%k%H$NAHJ}8~$r(By$B$+$i(Bn$B$X(B
+% $BJQ99(B (forum:2506, issue~76)}
+% \begin{macrocode}
+\DeclareLayoutCaption{figure}<n>(.8\linewidth)[cd]
+\DeclareLayoutCaption{table}<n>(.8\linewidth)[cu]
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\layoutcaption}
+% \begin{macro}{\X@layoutcaption}
+% \begin{macro}{\@ilayoutcaption}
+% \begin{macro}{\@iilayoutcaption}
+% |\DeclareLayoutCaption|$B%3%^%s%I$G@_Dj$r$7$?!"%G%U%)%k%HCM$H$O0[$J$k@_Dj$G(B
+% $BAH$_$?$$>l9g$O!"(B|\layoutcaption|$B%3%^%s%I$r;HMQ$7$^$9!#(B
+%
+% |\layoutcaption<|\meta{dir}|>(|\meta{width}|)[|\meta{pos}|]|
+%
+% $B$J$*!"(B|\layoutcaption|$B$KAH$_J}8~%*%W%7%g%s$rIU$1$^$7$?$N$G!"(B
+% |\captiondir|$B$GAH$_J}8~$r;XDj$9$kI,MW$O$"$j$^$;$s!#(B
+% $B$^$?!"(B|\captiondir|$B$G;XDj$r$7$F$b!"$=$NCM$OL5;k$5$l$^$9!#(B
+% \begin{macrocode}
+\def\layoutcaption{\def\caption@dir{Z}\captionwidth\z@
+ \def\caption@posa{Z}\def\caption@posb{Z}%
+ \@ifnextchar<\X@layoutcaption{%
+ \@ifnextchar(\@ilayoutcaption{%
+ \@ifnextchar[\@iilayoutcaption\relax}}}
+%
+\def\X@layoutcaption<#1>{\def\caption@dir{#1}%
+ \@ifnextchar(\@ilayoutcaption{%
+ \@ifnextchar[\@iilayoutcaption\relax}}
+%
+\def\@ilayoutcaption(#1){\setlength\captionwidth{#1}%
+ \@ifnextchar[{\@iilayoutcaption}{\relax}}
+%
+\def\@iilayoutcaption[#1#2]{%
+ \def\caption@posa{#1}\def\caption@posb{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pcaption}
+% \begin{macro}{\@pcaption}
+% $B%-%c%W%7%g%s$r?^I=N`$NE7CO:81&$N;XDj2U=j$KIU$1$k$K$O(B|\pcaption|$B%3%^%s%I$G(B
+% $B;XDj$r$7$^$9!#0LCV$N;XDj$O(B|\layoutcaption|$B%3%^%s%I$G9T$J$$$^$9!#(B
+% |\layoutcaption|$B%3%^%s%I$,>JN,$5$l$?>l9g$O!"(B|\DeclareLayoutCaption|$B%3%^%s%I(B
+% $B$G@_Dj$5$l$F$$$k%G%U%)%k%HCM$,;H$o$l$^$9!#(B
+% \changes{v1.2i}{2018/09/09}{Made caption an error outside a float: latex/2815
+% (sync with ltfloat 1999/04/19 v1.1u)}
+% \begin{macrocode}
+\def\pcaption{%
+ \ifx\@captype\@undefined
+ \@latex@error{\noexpand\pcaption outside float}\@ehd
+ \expandafter\@gobble
+ \else
+ \refstepcounter\@captype
+ \expandafter\@firstofone
+ \fi
+ {\@dblarg{\@pcaption\@captype}}%
+}
+%
+\long\def\@pcaption#1[#2]#3{%
+ \addcontentsline{\csname ext@#1\endcsname}{#1}{%
+ \protect\numberline{\csname the#1\endcsname}{\ignorespaces#2}}%
+ \ifvoid\@floatbox
+ \@latex@error{Use \noexpand\pcaption with `\string\layoutfloat'}\@eha
+ \fi
+ \make@pcaptionbox{#3}%
+ \@pboxswfalse
+ \setbox\@tempboxa\vbox{\hbox to\hsize{\if l\float@pos\else\hss\fi
+ \if l\caption@posb\box\@captionbox\kern\captionfloatsep\fi
+ \if t\caption@posa\vtop
+ \else\if b\caption@posa\vbox
+ \else\@pboxswtrue $\vcenter \fi\fi
+ {\if u\caption@posb\box\@captionbox\kern\captionfloatsep\fi
+ \unvbox\@floatbox
+ \if d\caption@posb\kern\captionfloatsep\box\@captionbox\fi}%
+ \if@pboxsw \m@th$\fi
+ \if r\caption@posb\kern\captionfloatsep\box\@captionbox\fi
+ \if r\float@pos\else\hss\fi}}%
+ \par\vskip.25\baselineskip
+ \box\@tempboxa}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\make@pcaptionbox}
+% $B%-%c%W%7%g%s$rAH$_N)$F!"(B|\@captionbox|$B$r:n@.$7$^$9!#(B
+% \begin{macrocode}
+\def\make@pcaptionbox#1{%
+% \end{macrocode}
+% $B$^$:!"%G%U%)%k%H$N@_Dj$,$5$l$F$$$k$+$r3NG'$7$^$9!#(B
+% $B@_Dj$5$l$F$$$J$$>l9g$O!"7Y9p%a%C%;!<%8$r=PNO$7!"(B
+% $B8=:_$NAH%b!<%I$G$N%G%U%)%k%HCM$r;HMQ$7$^$9!#(B
+% $B@_Dj$5$l$F$$$l$P!"$=$N%G%U%)%k%HCM$K$7$^$9!#(B
+%
+% \changes{v1.1h}{1996/03/13}{typo: \cs{@latex@warning}.}
+% \begin{macrocode}
+ \expandafter
+ \ifx\csname\@captype @layoutc@ption\endcsname\relax
+ \@latex@warning{Default caption layout of `\@captype' unknown}%
+ \def\caption@dir{Z}\captionwidth\z@
+ \def\caption@posa{Z}\def\caption@posb{Z}%
+ \else
+ \csname \@captype @layoutc@ption\endcsname
+ \fi
+% \end{macrocode}
+% $B<!$K!"AH$_J}8~$r@_Dj$7$^$9!#(B
+% $B4pK\AH$NAH$_J}8~$H%-%c%W%7%g%s$NAH$_J}8~$rJQ$($k>l9g$K$O!"(B
+% |\@tempswa|$B$r??$H$7$^$9!#J8;z$r2sE>$5$;$k$H$-$O(B|\@rotsw|$B$r??$K$7$^$9!#(B
+% \begin{macrocode}
+ \@rotswfalse \@tempswafalse
+ \iftdir\if y\caption@dir \let\captiondir\yoko \@tempswatrue
+ \else\if z\caption@dir \let\captiondir\relax \@rotswtrue
+ \else\let\captiondir\tate\fi\fi
+ \else\if t\caption@dir\let\captiondir\tate \@tempswatrue
+ \else\let\captiondir\yoko\fi
+ \fi
+% \end{macrocode}
+% $B%-%c%W%7%g%s$rAH$_N)$F$kA0$K!"$^$:!"%-%c%W%7%g%sJ8;zNs$,$I$NDxEY$ND9$5$r(B
+% $B;}$C$F$$$k$N$+$r3NG'$9$k$?$a$K!"(B|\hbox|$B$KF~$l$^$9!#(B
+% \begin{macrocode}
+ \setbox0\hbox{\if@rotsw $\fi\hbox{\captiondir
+ \captionfontsetup\parindent\z@\inhibitglue
+ \csname fnum@\@captype\endcsname\char\euc"A1A1\relax#1}%
+ \if@rotsw \m@th$\fi}%
+% \end{macrocode}
+% $B%-%c%W%7%g%s$NI}$K9g$o$;$k$?$a!":F$S!"%\%C%/%9$rAH$_N)$F$^$9!#(B
+%
+% $B%-%c%W%7%g%s$r@^$jJV$5$J$/$F$b$h$$>l9g!"(B|\@tempdima|$B$r%-%c%W%7%g%s$ND9$5$K(B
+% $B$7$^$9!#$?$@$7!"%-%c%W%7%g%s$NAH$_J}8~$,4pK\AH$NAH$_J}8~$H0[$J$k>l9g(B
+% $B!J(B|\@tempswa|$B$,??!K$O!"%\%C%/%9(B0$B$NI}$G$O$J$/!"9b$5$K@_Dj$r$7$^$9(B
+% $B!J(Bp\TeX{}$B$G$OF1$8%\%C%/%9$G$b!"AHJ}8~$K$h$C$F(B |\wd| $B$H(B |\ht|+|\wd| $B$N(B
+% $BJV$9@#K!$,0[$J$k$3$H$KCm0U!K!#(B
+% |\captionwidth|$B$NCM$,!"%-%c%W%7%g%s$NI}$h$j$bD9$$>l9g!"(B
+% $B@^$jJV$5$J$/$F$O$J$j$^$;$s$N$G!"(B|\@tempdima|$B$r(B|\captionwidth|$B$K$7$^$9!#(B
+%
+% \noindent\emph{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$k=$@5(B}$B!'(B
+% 2018/09/20 v1.2j$B$^$G$O!"%-%c%W%7%g%s$NAHJ}8~$,4pK\AH$NAH$_J}8~$H(B
+% $BD>8r$9$k>l9g$K?<$5$r9MN8$9$k$N$rK:$l$F$$$?$?$a$K!"(B
+% $BK\Mh$O@^$jJV$5$:$K:Q$`$O$:$NC;$$%-%c%W%7%g%s$,!"I,$:@^$jJV$5$l$F(B
+% $B$7$^$&$H$$$&%P%0!J!z!K$,$"$j$^$7$?!#(B2018/10/07 v1.2k$B$G$3$N%P%0$r(B
+% $B=$@5$7$?$?$a!"AHHG7k2L$,Bg$-$/JQ$o$k>l9g$,$"$j$^$9!#(B
+% \changes{v1.2k}{2018/10/07}{$B%-%c%W%7%g%s$NAH$_J}8~$,4pK\AH$NAH$_J}8~$H(B
+% $BD>8r$9$k>l9g$K!"?<$5$rK:$l$F$$$?%P%0=$@5(B (forum:2506, issue~76)}
+% \begin{macrocode}
+ \if@tempswa \@tempdima\ht0 \advance\@tempdima\dp0
+ \else \@tempdima\wd0 \fi
+ \ifdim\@tempdima>\captionwidth \@tempdima\captionwidth \fi
+ \@pboxswfalse
+ \setbox0\hbox{\if@rotsw $\fi
+ \if u\caption@posb\vbox
+ \else\if d\caption@posb\vbox
+ \else\if t\caption@posa\vtop
+ \else\if b\caption@posa\vbox
+ \else\ifmmode\vcenter\else\@pboxswtrue $\vcenter\fi
+ \fi\fi\fi\fi
+ {\hsize\@tempdima\kern\z@
+ \vbox{\captiondir\hsize\@tempdima
+ \captionfontsetup\parindent\z@\inhibitglue
+ \csname fnum@\@captype\endcsname\char\euc"A1A1\relax#1}\kern\z@
+ }\if@pboxsw \m@th$\fi \if@rotsw \m@th$\fi}%
+% \end{macrocode}
+% $B:G8e$K(B|\@captionbox|$B$rAH$_N)$F$^$9!#(B
+%
+% $B0LCV#2%*%W%7%g%s$,(B`|u|'$B$+(B`|d|'$B$N>l9g!"(B
+% $B$3$N%\%C%/%9$NI}$r%U%m!<%H%*%V%8%'%/%H$NI}$HF1$8D9$5$K$7!"(B
+% $B0LCV#1%*%W%7%g%s$G$NB7$($KAH$_N)$F$^$9!#(B
+%
+% $B0LCV#2%*%W%7%g%s$,(B`|l|'$B$+(B`|r|'$B$N>l9g$O!"%-%c%W%7%g%s$NI}$G$9!#(B
+% $B$3$N$H$-$N0LCV#1%*%W%7%g%s$NB7$($O!"$3$NA0$NCJ3,$G=`Hw$r$7$F$*$-!"(B
+% |\@pcaption|$B$G:G=*E*$K%U%m!<%H%*%V%8%'%/%H$HAH$_9g$o$;$k$H$-$K$J$5$l$^$9!#(B
+% \begin{macrocode}
+ \let\to@captionboxwidth\relax
+ \if l\caption@posb \else\if r\caption@posb\else
+ \def\to@captionboxwidth{to\floatwidth}\fi\fi
+ \setbox\@captionbox\hbox\to@captionboxwidth{%
+ \if t\caption@posa\else\hss\fi
+ \unhbox0\relax
+ \if b\caption@posa\else\hss\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{$BCJMn%\%C%/%94D6-(B}
+% minipage$B4D6-$H(B|\parbox|$B%3%^%s%I$b!"(Btabular$B4D6-$HF1$8$h$&$K!"(B
+% $BAHJ}8~$r;XDj$9$k%*%W%7%g%s$rDI2C$7$F$"$j$^$9!#(B
+% $B$3$l$i$N%3%^%s%I$O!"(B\file{ltboxes.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+%
+% |\parbox|$B%3%^%s%I$OI}$@$1$G$J$/9b$5$b;XDj$G$-$k$h$&$K$J$C$F$$$^$9!#(B
+% $B?7$7$$(B|\parbox|$B%3%^%s%I$K$D$$$F$N>\:Y$O!"(B\file{usrguide.tex}$B$r;2>H(B
+% $B$7$F$/$@$5$$!#(B
+%
+% \subsubsection*{minipage$B4D6-(B}
+%
+% \begin{macro}{\minipage}
+% $BAHJ}8~%*%W%7%g%s$rD4$Y$^$9!#(B
+% \begin{macrocode}
+\def\minipage{\@ifnextchar<%>
+ {\X@minipage}{\X@minipage<Z>}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\X@minipage}
+% $B0LCV%*%W%7%g%s$rD4$Y$^$9!#(B
+% \changes{v1.2c}{2016/11/19}{Changed \cs{@empty} to \cs{relax} as
+% flag for natural width: pr/2975 (sync with ltboxes.dtx v1.1f)}
+% \begin{macrocode}
+\def\X@minipage<#1>{\@ifnextchar[%]
+ {\@iminipage<#1>}{\@iiiminipage<#1>{c}\relax[s]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@iminipage}
+% $B9b$5%*%W%7%g%s$rD4$Y$^$9!#(B
+% \changes{v1.2c}{2016/11/19}{Changed \cs{@empty} to \cs{relax} as
+% flag for natural width: pr/2975 (sync with ltboxes.dtx v1.1f)}
+% \begin{macrocode}
+\def\@iminipage<#1>[#2]{\@ifnextchar[%]
+ {\@iiminipage<#1>{#2}}{\@iiiminipage<#1>{#2}\relax[s]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@iiminipage}
+% $BFbIt0LCV%*%W%7%g%s$rD4$Y$^$9!#(B
+% \begin{macrocode}
+\def\@iiminipage<#1>#2[#3]{\@ifnextchar[%]
+ {\@iiiminipage<#1>{#2}{#3}}{\@iiiminipage<#1>{#2}{#3}[#2]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@iiiminipage}
+% minipage$B4D6-$NFbIt7A<0$G$9!#(B
+% \changes{v1.1g}{1996/01/12}{\break Grouping \cs{@iiiminipage}}
+% \cs{leavevmode}$B$N8e$N(B\cs{bgroup}$B$O!"(B
+% $B2sE>%*%W%7%g%s$,;XDj$5$l$?$H$-$N%U%i%0(B|\if@rotsw|$B$,!"$3$N%^%/%m$NFbIt$@$1(B
+% $B$GM-8z$K$J$k$h$&$K$9$k$?$a$G$9!#$3$N3g8L$O!"(B\cs{endminipage}$B%3%^%s%I$G(B
+% $BJD$8$^$9!#(B
+% \begin{macrocode}
+\def\@iiiminipage<#1>#2#3[#4]#5{%
+ \leavevmode\bgroup
+ \setlength\@tempdima{#5}%
+ \def\@mpargs{<#1>{#2}{#3}[#4]{#5}}%
+ \@rotswfalse
+ \iftdir
+ \if #1y\relax\let\box@dir\yoko
+ \else\if #1z\relax\@rotswtrue \let\box@dir\relax
+ \else\let\box@dir\tate
+ \fi\fi
+ \else
+ \if #1t\relax\let\box@dir\tate
+ \else\let\box@dir\yoko
+ \fi
+ \fi
+ \setbox\@tempboxa\vbox\bgroup\box@dir
+ \if@rotsw \hsize\@tempdima\hbox\bgroup$\vbox\bgroup\fi
+% \end{macrocode}
+% \changes{v1.1c}{1995/09/11}{Add \cs{adjustbaseline}.}
+% \changes{v1.2c}{2016/11/19}{Use \cs{@setminpage}
+% (sync with ltboxes v1.1a)}
+% \begin{macrocode}
+ \adjustbaseline
+ \color@begingroup
+ \hsize\@tempdima
+ \textwidth\hsize \columnwidth\hsize
+ \@parboxrestore
+ \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}%
+ \c@mpfootnote\z@
+ \let\@footnotetext\@mpfootnotetext
+ \let\@listdepth\@mplistdepth \@mplistdepth\z@
+ \@minipagerestore
+ \@setminipage}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\endminipage}
+% minipage$B4D6-$N=*N;%3%^%s%I$G$9!#(B
+% \changes{v1.2c}{2016/11/19}{put \cs{global} into definition
+% of \cs{@minipagefalse} (sync with ltboxes v1.0z)}
+% \begin{macrocode}
+\def\endminipage{%
+ \par
+ \unskip
+ \ifvoid\@mpfootins\else
+ \vskip\skip\@mpfootins
+ \normalcolor
+ \footnoterule
+ \unvbox\@mpfootins
+ \fi
+ \@minipagefalse %% added 24 May 89
+ \color@endgroup
+ \if@rotsw \egroup\m@th$\egroup\fi
+% \end{macrocode}
+% \cs{@iiiminipage}$B$G3+;O$7$?%0%k!<%W$rJD$8$k$?$a$N(B\cs{egroup}$B$G$9!#(B
+% \begin{macrocode}
+ \egroup
+ \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}\egroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection*{\cs{parbox}$B%3%^%s%I(B}
+%
+% \begin{macro}{\parbox}
+% $BAHJ}8~%*%W%7%g%s$rD4$Y$^$9!#(B
+% \changes{v1.2e}{2017/03/02}{Make \cs{parbox} Robust
+% (sync with ltboxes 2015/01/08 v1.1h)}
+% \begin{macrocode}
+\DeclareRobustCommand\parbox{\@ifnextchar<%>
+ {\X@parbox}{\X@parbox<Z>}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\X@parbox}
+% $B0LCV%*%W%7%g%s$rD4$Y$^$9!#(B
+% \changes{v1.2c}{2016/11/19}{Changed \cs{@empty} to \cs{relax} as
+% flag for natural width: pr/2975 (sync with ltboxes.dtx v1.1f)}
+% \begin{macrocode}
+\def\X@parbox<#1>{\@ifnextchar[%]
+ {\@iparbox<#1>}{\@iiiparbox<#1>{c}\relax[s]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@iparbox}
+% $B9b$5%*%W%7%g%s$rD4$Y$^$9!#(B
+% \changes{v1.2c}{2016/11/19}{Changed \cs{@empty} to \cs{relax} as
+% flag for natural width: pr/2975 (sync with ltboxes.dtx v1.1f)}
+% \begin{macrocode}
+\def\@iparbox<#1>[#2]{\@ifnextchar[%]
+ {\@iiparbox<#1>{#2}}{\@iiiparbox<#1>{#2}\relax[s]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@iiparbox}
+% $BFbIt0LCV%*%W%7%g%s$rD4$Y$^$9!#(B
+% \begin{macrocode}
+\def\@iiparbox<#1>#2[#3]{\@ifnextchar[%]%
+ {\@iiiparbox<#1>{#2}{#3}}{\@iiiparbox<#1>{#2}{#3}[#2]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@iiiparbox}
+% |parbox|$B$NFbIt7A<0$G$9!#(B
+% \changes{v1.1c}{1995/09/11}{Add \cs{adjustbaseline}.}
+% \changes{v1.1c}{1995/10/24}{\break typo \cs{adjustbaesline}.}
+% \changes{v1.1g}{1996/01/12}{\break Grouping \cs{@iiiparbox}}
+% minipage$B4D6-$HF1$8$h$&$K%0%k!<%T%s%0$r$7$^$9!#(B
+% $B$3$N3g8L$HBP$K$J$k$N$O!"$3$N%^%/%m$N:G8e$N(B\cs{egroup}$B$G$9!#(B
+% \changes{v1.2a}{2016/08/20}{\cs{parbox}$BA08e$NM>J,$J(B\cs{xkanjiskip}$B$r:o=|(B}
+% \changes{v1.2c}{2016/11/19}{Changed \cs{endgraf} to
+% \cs{@@par} (sync with ltboxes.dtx v1.0y)}
+% \changes{v1.2c}{2016/11/19}{Changed \cs{@empty} to \cs{relax} as
+% flag for natural width: pr/2975 (sync with ltboxes.dtx v1.1f)}
+% \changes{v1.2c}{2016/11/19}{Ensure \cs{@parboxto} holds the value
+% of \cs{@tempdimb} not the register itself (pr/3867)
+% (sync with ltboxes.dtx v1.1g)}
+% \begin{macrocode}
+\long\def\@iiiparbox<#1>#2#3[#4]#5#6{%
+ \leavevmode\null\bgroup
+ \setlength\@tempdima{#5}%
+ \fork@parbox@option<#1>[#2]%
+\if@rotsw
+ \@begin@tempboxa\vbox{\box@dir\hsize\@tempdima
+ \hbox{$\vbox{\@parboxrestore\adjustbaseline#6\@@par}\m@th$}}%
+\else
+ \@begin@tempboxa\vbox{\box@dir
+ \hsize\@tempdima\@parboxrestore\adjustbaseline#6\@@par}%
+\fi
+ \ifx\relax#3\relax\else
+ \setlength\@tempdimb{#3}%
+ \edef\@parboxto{to\the\@tempdimb}%
+ \fi
+ \@begin@parbox\@parboxto{\box@dir\adjustbaseline
+ \let\hss\vss\let\unhbox\unvbox
+ \csname bm@#4\endcsname}\@end@parbox
+ \@end@tempboxa\egroup\null}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fork@parbox@option}
+% |\parbox|$B$GM?$($i$l$?Bh0l0z?t$HBhFs0z?t$NAH9g$;$NJ,4t$r9T$J$$$^$9!#(B
+%
+% $B%3%_%e%K%F%#HG$G$O!"%"%9%-!<HG$GIT<+A3$@$C$?(B|\parbox|$B$NH"$H(B
+% $B<~0O$NK\J8$H$NB7$(0LCV$r=$@5$7!"0J2<$N$h$&$K@_7W$7$^$7$?!#(B
+% \begin{itemize}
+% \item $B<~0O$NAHJ}8~$,2#AH$+$DAHJ}8~$,(B|<y>|, |<z>|$B;XDj$N>l9g(B
+% \begin{itemize}
+% \item |[t]|$B;XDj$N$H$-(B\\$B0l9TL\$N%Y!<%9%i%$%s$,<~0O$N$=$l$H0lCW(B
+% \item |[c]|$B;XDj$N$H$-(B\\$BH"$NCf?4$,<~0O$N?t<0<4$rDL$k!J2$J8%Y!<%9%i%$%s%7%U%H$N1F6A2<!K(B
+% \item |[b]|$B;XDj$N$H$-(B\\$B:G=*9T$N%Y!<%9%i%$%s$,<~0O$N$=$l$H0lCW(B
+% \end{itemize}
+% \item $B<~0O$NAHJ}8~$,2#AH$+$DAHJ}8~$,(B|<t>|$B;XDj$N>l9g(B
+% \begin{itemize}
+% \item |[t]|$B;XDj$N$H$-(B\\$BH"$N>eC<$,<~0O$NOBJ8J8;z$N9b$5$H0lCW(B
+% \item |[c]|$B;XDj$N$H$-(B\\$BH"$NCf?4$,<~0O$N?t<0<4$rDL$k!J2$J8%Y!<%9%i%$%s%7%U%H$N1F6A2<!K(B
+% \item |[b]|$B;XDj$N$H$-(B\\$BH"$N2<C<$,<~0O$NOBJ8J8;z$N?<$5$H0lCW(B
+% \end{itemize}
+% \item $B<~0O$NAHJ}8~$,=DAH$+$DAHJ}8~$,(B|<y>|$B;XDj$N>l9g(B
+% \begin{itemize}
+% \item |[t]|$B;XDj$N$H$-(B\\$BH"$N>eC<$,<~0O$NOBJ8J8;z$N9b$5$H0lCW(B
+% \item |[c]|$B;XDj$N$H$-(B\\$BH"$NCf?4$,<~0O$N?t<0<4$rDL$k!J2$J8%Y!<%9%i%$%s%7%U%H$N1F6A2<!K(B
+% \item |[b]|$B;XDj$N$H$-(B\\$BH"$N2<C<$,<~0O$NOBJ8J8;z$N?<$5$H0lCW(B
+% \end{itemize}
+% \item $B<~0O$NAHJ}8~$,=DAH$+$DAHJ}8~$,(B|<t>|$B;XDj$N>l9g(B
+% \begin{itemize}
+% \item |[t]|$B;XDj$N$H$-(B\\$B0l9TL\$N%Y!<%9%i%$%s$,<~0O$N$=$l$H0lCW(B
+% \item |[c]|$B;XDj$N$H$-(B\\$BH"$NCf?4$,<~0O$N?t<0<4$rDL$k!J2$J8%Y!<%9%i%$%s%7%U%H$N1F6A2<!K(B
+% \item |[b]|$B;XDj$N$H$-(B\\$B:G=*9T$N%Y!<%9%i%$%s$,<~0O$N$=$l$H0lCW(B
+% \end{itemize}
+% \item $B<~0O$NAHJ}8~$,=DAH$+$DAHJ}8~$,(B|<z>|$B;XDj$N>l9g(B
+% \begin{itemize}
+% \item |[t]|$B;XDj$N$H$-(B\\$BH"$N>eC<$,<~0O$NOBJ8J8;z$N9b$5$H0lCW(B
+% \item |[c]|$B;XDj$N$H$-(B\\$BH"$NCf?4$,<~0O$N?t<0<4$rDL$k!J2$J8%Y!<%9%i%$%s%7%U%H$N1F6A2<!K(B
+% \item |[b]|$B;XDj$N$H$-(B\\$BH"$N2<C<$,<~0O$NOBJ8J8;z$N?<$5$H0lCW(B
+% \end{itemize}
+% \end{itemize}
+% \changes{v1.2f}{2017/03/28}{$BCJMn$NH"$H<~0O$H$NB7$(0LCV$r=$@5(B}
+% \begin{macrocode}
+\def\fork@parbox@option<#1>[#2]{%
+\@rotswfalse
+% \end{macrocode}
+% $B=DAH%b!<%I$N$H$-!'(B
+% \begin{macrocode}
+\iftdir
+\if #1y\relax\let\box@dir\yoko
+ \if #2t\relax
+ \def\@begin@parbox{\raise\cht\vtop\bgroup\kern\z@\vtop}%
+ \let\@end@parbox\egroup
+ \else\if #2b\relax
+ \def\@begin@parbox{\lower\cdp\vbox\bgroup\vbox}%
+ \def\@end@parbox{\kern\z@\egroup}%
+ \else\ifmmode
+ \let\@begin@parbox\vcenter
+ \let\@end@parbox\relax
+ \else
+ \def\@begin@parbox{$\vcenter}%
+ \def\@end@parbox{\m@th$}%
+ \fi\fi\fi
+\else\if #1z\relax\@rotswtrue \let\box@dir\relax
+ \if #2t\relax
+ \def\@begin@parbox{\raise\cht\vtop\bgroup\kern\z@\vtop}%
+ \let\@end@parbox\egroup
+ \else\if #2b\relax
+ \def\@begin@parbox{\lower\cdp\vbox\bgroup\vbox}%
+ \def\@end@parbox{\kern\z@\egroup}%
+ \else\ifmmode
+ \let\@begin@parbox\vcenter
+ \let\@end@parbox\relax
+ \else
+ \def\@begin@parbox{$\vcenter}%
+ \def\@end@parbox{\m@th$}%
+ \fi\fi\fi
+\else\let\box@dir\tate
+ \if #2t\relax
+ \let\@begin@parbox\vtop
+ \let\@end@parbox\relax
+ \else\if #2b\relax
+ \let\@begin@parbox\vbox
+ \let\@end@parbox\relax
+ \else\ifmmode
+ \let\@begin@parbox\vcenter
+ \let\@end@parbox\relax
+ \else
+ \def\@begin@parbox{$\vcenter}%
+ \def\@end@parbox{\m@th$}%
+ \fi\fi\fi
+\fi\fi
+% \end{macrocode}
+% $B2#AH%b!<%I$N$H$-!'(B
+% \begin{macrocode}
+\else
+\if #1t\relax\let\box@dir\tate
+ \if #2t\relax
+ \def\@begin@parbox{\raise\cht\vtop\bgroup\kern\z@\vtop}%
+ \let\@end@parbox\egroup
+ \else\if #2b\relax
+ \def\@begin@parbox{\lower\cdp\vbox\bgroup\vbox}%
+ \def\@end@parbox{\kern\z@\egroup}%
+ \else\ifmmode
+ \let\@begin@parbox\vcenter
+ \let\@end@parbox\relax
+ \else
+ \def\@begin@parbox{$\vcenter}%
+ \def\@end@parbox{\m@th$}%
+ \fi\fi\fi
+\else\let\box@dir\yoko
+ \if #2t\relax
+ \let\@begin@parbox\vtop
+ \let\@end@parbox\relax
+ \else\if #2b\relax
+ \let\@begin@parbox\vbox
+ \let\@end@parbox\relax
+ \else\ifmmode
+ \let\@begin@parbox\vcenter
+ \let\@end@parbox\relax
+ \else
+ \def\@begin@parbox{$\vcenter}%
+ \def\@end@parbox{\m@th$}%
+ \fi\fi\fi
+\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection*{\cs{pbox}$B%3%^%s%I(B}
+%
+% |\pbox|$B$OAH$_J}8~$r;XDj$G$-$k%\%C%/%9%3%^%s%I$G$9!#(B
+% $B<!$N$h$&$J9=J8$H$J$C$F$$$^$9!#(B
+%
+% |\pbox<|\meta{dir}|>[|\meta{width}|][|\meta{pos}|]{|\meta{obj}|}|
+%
+% \begin{macro}{\pbox}
+% $B%*%W%7%g%s$rD4$Y$^$9!#(B
+% \changes{v1.2g}{2017/05/04}{Make \cs{pbox} Robust}
+% \begin{macrocode}
+\DeclareRobustCommand\pbox{\leavevmode\@ifnextchar<{\X@makePbox}{\X@makePbox<Z>}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\X@makepbox}
+% \begin{macro}{\@imakepbox}
+% \begin{macrocode}
+\def\X@makePbox<#1>{%
+ \@ifnextchar[{\@imakePbox<#1>}{\@imakePbox<#1>[-5\p@]}}
+%
+\def\@imakePbox<#1>[#2]{\@ifnextchar[%]
+ {\@iimakePbox<#1>{#2}}{\@iimakePbox<#1>{#2}[c]}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@iimakePbox}
+% |\pbox|$B$NFbIt7A<0$G$9!#(B
+% \changes{v1.1i}{2001/05/10}{$B=DAH$G(Bz$B$r;XDj$9$k$H%(%i!<$K$J$k$N$r=$@5!#(B}
+% \changes{v1.2g}{2017/05/04}{Use \cs{setlength}, so that
+% calc extensions apply}
+% \begin{macrocode}
+\def\@iimakePbox<#1>#2[#3]#4{%
+ \bgroup \@rotswfalse \@pboxswfalse
+ \iftdir
+ \if #1y\relax\let\box@dir\yoko
+ \else\if #1z\relax\@rotswtrue \let\box@dir\relax
+ \else\let\box@dir\tate
+ \fi\fi
+ \else
+ \if #1t\relax\let\box@dir\tate
+ \else\let\box@dir\yoko
+ \fi
+ \fi
+ \ifmmode\else\if@rotsw\@pboxswtrue\hbox\bgroup$\fi\fi
+ \setlength{\@tempdima}{#2}%
+ \ifdim\@tempdima<\z@ \hbox{\box@dir#4}\else
+ \hb@xt@\@tempdima{\box@dir
+ \if #3l\relax\else\hss\fi
+ #4\relax
+ \if #3r\relax\else\hss\fi}\fi
+ \if@pboxsw \m@th$\egroup\fi\egroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B:n?^4D6-(B}
+% picture$B4D6-$b!"AHJ}8~$r;XDj$9$k%*%W%7%g%s$rDI2C$7$F$"$j$^$9!#(B
+% $B$J$*!"$3$l$i$N%3%^%s%I$O!"(B\file{ltpictur.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+%
+% \begin{macro}{\picture}
+% $BAHJ}8~%*%W%7%g%s$rD4$Y$^$9!#(B
+% \begin{macrocode}
+\def\picture{\@ifnextchar<%>
+ {\X@picture}{\X@picture<Z>}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\X@picture}
+% $B?^7ANN0h%*%W%7%g%s$rD4$Y$^$9!#(B
+% \begin{macrocode}
+\def\X@picture<#1>(#2,#3){\@ifnextchar(%)
+ {\@@picture<#1>(#2,#3)}{\@@picture<#1>(#2,#3)(0,0)}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@picture}
+% picture$B4D6-$NFbIt$G$O%Y!<%9%i%$%s%7%U%H$NCM$r%<%m$K$7$^$9!#(B
+% $B0JA0$K@_Dj$5$l$F$$$?CM$O!"$=$l$>$lJ]B8$5$l!"=*N;;~$K!"$=$NCM$KLa$5$l$^$9!#(B
+% \begin{macrocode}
+\newdimen\save@ybaselineshift
+\newdimen\save@tbaselineshift
+\newdimen\@picwd
+% \end{macrocode}
+% |\picture|$B$NFbIt7A<0$G$9!##3AHL\$N0z?t$O!"86E@:BI8$G$9!#(B
+% \begin{macrocode}
+\def\@@picture<#1>(#2,#3)(#4,#5){%
+ \save@ybaselineshift\ybaselineshift
+ \save@tbaselineshift\tbaselineshift
+ \iftdir
+ \if#1y\let\box@dir\yoko
+ \@picwd=#3\unitlength \@picht=#2\unitlength
+ \@tempdima=#5\unitlength \@tempdimb=#4\unitlength
+ \else\let\box@dir\tate
+ \@picwd=#2\unitlength \@picht=#3\unitlength
+ \@tempdima=#4\unitlength \@tempdimb=#5\unitlength
+ \fi
+ \else
+ \if#1t\let\box@dir\tate
+ \@picwd=#3\unitlength \@picht=#2\unitlength
+ \@tempdima=#5\unitlength \@tempdimb=#4\unitlength
+ \else\let\box@dir\yoko
+ \@picwd=#2\unitlength \@picht=#3\unitlength
+ \@tempdima=#4\unitlength \@tempdimb=#5\unitlength
+ \fi
+ \fi
+ \setbox\@picbox\hbox to\@picwd\bgroup\box@dir
+ \hskip-\@tempdima\lower\@tempdimb\hbox\bgroup
+ \ybaselineshift\z@ \tbaselineshift\z@
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\endpicture}
+% $B?^7ANN0h$NI}$H9b$5$r;XDj$NBg$-$5$K$7$F$+$i!"=PNO$r$7$^$9!#(B
+% $B$=$7$F!":G8e$K%Y!<%9%i%$%s%7%U%H$NCM$r85$KLa$7$^$9!#(B
+% \begin{macrocode}
+\def\endpicture{%
+ \egroup\hss\egroup
+ \ht\@picbox\@picht \wd\@picbox\@picwd \dp\@picbox\z@
+ \mbox{\box\@picbox}%
+ \ybaselineshift\save@ybaselineshift
+ \tbaselineshift\save@tbaselineshift}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\put}
+% \begin{macro}{\line}
+% \begin{macro}{\vector}
+% \begin{macro}{\dashbox}
+% \begin{macro}{\oval}
+% \begin{macro}{\circle}
+% picture$B4D6-$NFbIt$G!"%U%)%s%H%5%$%:JQ99%3%^%s%I$J$I$,;HMQ$5$l$?>l9g!"(B
+% $B%Y!<%9%i%$%s%7%U%HNL$,?7$?$K@_Dj$5$l$F$7$^$&$?$a!"(B
+% $B$3$l$i$N%3%^%s%I$,%Y!<%9%i%$%s%7%U%H$N1F6A$r<u$1$J$$$h$&$K:FDj5A$r$7$^$9!#(B
+% $B%Y!<%9%i%$%s%7%U%H$rM-8z$K$7$?$$>l9g$O!"(B|\pbox|$B%3%^%s%I$r;HMQ$7$F$/$@$5$$!#(B
+% \begin{macrocode}
+\let\org@put\put
+\def\put{\ybaselineshift\z@\tbaselineshift\z@\org@put}
+%
+\let\org@line\line
+\def\line{\ybaselineshift\z@\tbaselineshift\z@\org@line}
+%
+\let\org@vector\vector
+\def\vector{\ybaselineshift\z@\tbaselineshift\z@\org@vector}
+%
+\let\org@dashbox\dashbox
+\def\dashbox{\ybaselineshift\z@\tbaselineshift\z@\org@dashbox}
+%
+\let\org@oval\oval
+\def\oval{\ybaselineshift\z@\tbaselineshift\z@\org@oval}
+%
+\let\org@circle\circle
+\def\circle{\ybaselineshift\z@\tbaselineshift\z@\org@circle}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \subsection{$BO"?t;z!?4A?t;z!?K5E@!?2<@~(B}
+% $B$3$3$G$O!"O"?t;z!"4A?t;z!"K5E@!"2<@~$K$D$$$F@bL@$r$7$F$$$^$9!#(B
+%
+% $BO"?t;z$H4A?t;z!"$*$h$SK5E@$H2<@~$K$D$$$F$N>\:Y$O!"(B
+% $B!XF|K\8l(B\LaTeXe{}$B%V%C%/!Y$r;2>H$7$F$/$@$5$$!#(B
+% $B$J$*!"K5E@$K;H$&J8;z$O(B\file{pldefs.ltx}$B$GDj5A$5$l$F$$$^$9!#(B
+%
+% $B$J$*!"O"?t;z%3%^%s%I$O#3<oN`$"$j$^$7$?$,!"(B
+% |\rensuji|$B%3%^%s%I0l$D$K$^$H$a$^$7$?!#(B
+% $B?7$7$$O"?t;z%3%^%s%I$O<!$N9=J8$H$J$j$^$9!#(B
+%
+% \medskip
+% |\rensuji[|\meta{pos}|]|\meta{$B2#$KJB$Y$kH>3QJ8;z(B}
+%
+% |\rensuji*[|\meta{pos}|]|\meta{$B2#$KJB$Y$kH>3QJ8;z(B}
+% \medskip
+%
+% $B%"%9%?%j%9%/7A<0$N>l9g$O!"9T4V$rO"?t;z$NI}$K9g$o$;$F9-$2$^$;$s!#(B
+% \meta{pos}$B$O!"O"?t;z$rB7$($k0LCV$G$9!#(B
+% `|c|'$B!JCf1{B7$(!K!"(B`|r|'$B!J1&4s$;!K!"(B`|l|'$B!J:84s$;!K$r;XDj$G$-$^$9!#(B
+% $B%G%U%)%k%H$G$O!"Cf1{$KB7$($^$9!#(B
+%
+% $B<!$N%U%i%0$,??$N>l9g$K$O!"O"?t;z$NI}$K9g$o$;$F9T4V$r9-$2(B\emph{$B$^$;$s(B}$B!#(B
+% $B%"%9%?%j%9%/7A<0$N>l9g$K??$K$J$j$^$9!#(B
+% \begin{macrocode}
+\newif\ifnot@advanceline
+% \end{macrocode}
+%
+% |\rensujiskip|$B$OO"?t;z$NA08e$KF~$k%"%-$G$9!#(B
+% $B%G%U%)%k%H$O!"8=:_$NJ8;z$NI}$N#4J,$N#1$r4p=`$K$7$F$$$^$9!#(B
+% \begin{macrocode}
+\newskip\rensujiskip
+\rensujiskip=0.25\chs plus.25zw minus.25zw
+% \end{macrocode}
+%
+% \subsubsection*{$BO"?t;z(B}
+%
+% \begin{macro}{\rensuji}
+% \begin{macro}{\@rensuji}
+% \begin{macro}{\@@rensuji}
+% |\rensuji|$B$O!"(B|*|$B7A<0$+$I$&$+$rD4$Y$^$9!#(B
+% |\@rensuji|$B$O!"0LCV%*%W%7%g%s$rD4$Y$^$9!#(B
+% |\@@rensuji|$B$,(B|\rensuji|$B$NFbIt7A<0$G$9!#(B
+% \changes{v1.2b}{2016/11/07}{$B2#AH$GCJMn$NF,$K(B\cs{rensuji}$B$r;H$($k(B
+% $B$h$&$K(B\cs{leavevmode}$B$rDI2C$7$F=$@5(B}
+% \changes{v1.2i}{2018/09/09}{$B=D?t<0%G%#%l%/%7%g%s$NO"?t;z(B}
+% \begin{macrocode}
+\DeclareRobustCommand\rensuji{%
+ \@ifstar{\not@advancelinetrue\@rensuji}{\@rensuji}}
+\def\@rensuji{\@ifnextchar[{\@@rensuji}{\@@rensuji[c]}}
+\def\@@rensuji[#1]#2{%
+ \ifvmode\leavevmode\fi
+ \iftdir\ifmdir\hbox{#2}\else
+ \hskip\rensujiskip
+ \ifnot@advanceline\not@advancelinefalse\else
+ \setbox\z@\hbox{\yoko#2}%
+ \@tempdima\ht\z@ \advance\@tempdima\dp\z@
+ \if #1c\relax\vrule\@width\z@ \@height.5\@tempdima \@depth.5\@tempdima
+ \else\if #1r\relax\vrule\@width\z@\@height\z@ \@depth\@tempdima
+ \else\vrule\@width\z@ \@height\@tempdima \@depth\z@
+ \fi\fi
+ \fi
+ \if #1c\relax\hbox to1zw{\yoko\hss#2\hss}%
+ \else\if #1r\relax\vbox{\hbox to1zw{\yoko\hss#2}}%
+ \else\vtop{\hbox to1zw{\yoko#2\hss}}%
+ \fi\fi
+ \hskip\rensujiskip
+ \fi\else\hbox{#2}\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Rensuji}
+% \begin{macro}{\prensuji}
+% \changes{v1.1d}{1995/11/21}{\cs{Rensuji}, \cs{prensuji}$B$r:n@.(B}
+% |\Rensuji|$B%3%^%s%I$H(B|\prensuji|$B%3%^%s%I$O!"(B|\rensuji|$B%3%^%s%I$GBeMQ$G$-(B
+% $B$^$9!#(B
+% \begin{macrocode}
+\let\Rensuji\rensuji
+\let\prensuji\rensuji
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection*{$B4A?t;z(B}
+%
+% \begin{macro}{\Kanji}
+% \begin{macro}{\@Kanji}
+% \begin{macro}{\kanji}
+% |\Kanji|$B%3%^%s%I$rDj5A$7$^$9!#(B|\Kanji|$B%3%^%s%I$O(B|\Alph|$B$HF1$8$h$&$K!"(B
+% $B%+%&%s%?$KBP$7$F$N$_;HMQ$9$k$3$H$,$G$-$^$9!#(B
+%
+% |\kanji|$B%3%^%s%I$O!"8eB3$NH>3Q?t;z$r4A?t;z$K$7$^$9!#(B
+% |\kanji 1989|$B$N$h$&$K;XDj$r$7$^$9!#(B
+% $B$?$@$7!"2#AH%b!<%I$N$H$-$K$O!"2?$b$7$^$;$s!#(B
+% $B$D$M$K4A?t;z$K$7$?$$>l9g$O!"(B|\kansuji|$B%W%j%_%F%#%V$r;H$C$F$/$@$5$$!#(B
+%
+% $B8eB3$N?t;z$^$G4A?t;z$K$J$C$F$7$^$&%P%0$r=$@5$7$^$7$?(B(Issue~\#33)$B!#(B
+% \changes{v1.0h}{1996/03/13}{\cs{@Kanji}$B$rDI2C!#1Q8lHG$HF1MM$K$7$?!#(B}
+% \changes{v1.2d}{2017/02/04}{\cs{Kanji}$B$N0z?t$@$1$G$J$/8e$KO"B3$9$k(B
+% $B?t;z$b4A?t;z$K$J$C$F$7$^$&%P%0$r=$@5(B}
+% \begin{macrocode}
+\def\Kanji#1{\expandafter\@Kanji\csname c@#1\endcsname}
+\def\@Kanji#1{\kansuji #1}
+\def\kanji{\iftdir\expandafter\kansuji\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection*{$BK5E@(B}
+%
+% \begin{macro}{\boutenchar}
+% \begin{macro}{\bou}
+% |\bou|$B$O!"K5E@$rIU$1$k%3%^%s%I$G$9!#(B
+%
+% $BK5E@$H$7$F=PNO$9$kJ8;z$O(B|\boutenchar|$B$K;XDj$7$^$9!#(B
+% $B$3$NJ8;z$O!"$$$D$G$b!"2#AHMQ%U%)%s%H$,;H$o$l$^$9!#(B
+% $B%G%U%)%k%H$O!"(BEUC$B%3!<%I(B|A1A2|$B!J(B\hbox{\yoko $B!"(B}$B!K$G$9!#(B
+% \begin{macrocode}
+\def\boutenchar{\char\euc"A1A2}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\bou#1{\ifvmode\leavevmode\fi\@bou#1\end}
+\def\@bou#1{%
+ \ifx#1\end \let\next=\relax
+ \else
+ \iftdir\if@rotsw
+ \hbox to\z@{\vbox to\z@{\boxmaxdepth\maxdimen
+ \vss\moveleft-0.2zw\hbox{\boutenchar}\nointerlineskip
+ \hbox{\char\euc"A1A1}}\hss}\nobreak#1\relax
+ \else
+ \hbox to\z@{\vbox to\z@{\boxmaxdepth\maxdimen
+ \vss\moveleft0.2zw\hbox{\yoko\boutenchar}\nointerlineskip
+ \hbox{\char\euc"A1A1}}\hss}\nobreak#1\relax
+ \fi\else
+ \hbox to\z@{\vbox to\z@{%
+ \vss\moveleft-0.2zw\hbox{\yoko\boutenchar}\nointerlineskip
+ \hbox{\char\euc"A1A1}}\hss}\nobreak#1\relax
+ \fi
+ \let\next=\@bou
+ \fi\next}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection*{$B2<@~(B}
+%
+% \begin{macro}{\kasen}
+% $B2<@~$r0z$/%3%^%s%I$G$9!#(B
+% $B2#AH%b!<%I$N$H$-$O!"0z?t$r(B|\underline|$B$KEO$7$^$9!#(B
+% $B=DAH%b!<%I$G$b!"2sE>%b!<%I$N(B|\parbox|$B$J$I$G;H$o$l$?$H$-$K$O!"(B
+% $B$d$O$j0z?t$r(B|\underline|$B$KEO$7$^$9!#(B
+% $B$3$l0J30$N>l9g$O!"0z?t$N>e$KD>@~$r0z$-$^$9!#(B
+% \begin{macrocode}
+\def\kasen#1{%
+ \ifydir\underline{#1}%
+ \else\if@rotsw\underline{#1}\else
+ \setbox\z@\hbox{#1}\leavevmode\raise.7zw
+ \hbox to\z@{\vrule\@width\wd\z@ \@depth\z@ \@height.4\p@\hss}%
+ \box\z@
+ \fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{$B;2>HHV9f(B}
+% $B;2>HHV9f$NN`$rO"?t;z$G=PNO$9$k$h$&$K:FDj5A$7$^$9!#(B
+% itemize$B4D6-$J$I$N%j%9%H7?$N%i%Y%k$K$D$$$F$O!"(Bjarticle$B$J$I$N(B
+% $B%Q%C%1!<%8$GDj5A$7$F$$$^$9!#>\:Y$O!"(B\file{jclasses.dtx}$B$r;2>H$7$F$/$@$5$$!#(B
+%
+% \begin{macro}{\@eqnnum}
+% \begin{macro}{\@thecounter}
+% $B$3$l$i$O(B|\equation|$B%3%^%s%I$G:n@.$5$l$??t<0$KIU2C$5$l$kHV9f$G$9!#(B
+% \file{ltmath.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \begin{macrocode}
+\def\@eqnnum{{\reset@font\rmfamily \normalcolor
+ \iftdir\raise.25zh\hbox{\yoko(\theequation)}%
+ \else (\theequation)\fi}}
+\def\@thecounter#1{\noexpand\rensuji{\noexpand\arabic{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@thmcounter}
+% |\newtheorem|$B%3%^%s%I$G:n@.$7$?4D6-$G;2>H$5$l$k%i%Y%k$G$9!#(B
+% \file{ltthm.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+% \begin{macrocode}
+\def\@thmcounter#1{\noexpand\rensuji{\noexpand\arabic{#1}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \Finale
+\endinput
diff --git a/language/japanese/platex/plfmt.ins b/language/japanese/platex/plfmt.ins
new file mode 100644
index 0000000000..bd64099ef5
--- /dev/null
+++ b/language/japanese/platex/plfmt.ins
@@ -0,0 +1,35 @@
+\input docstrip
+\keepsilent
+\ifToplevel{\askonceonly}
+\usedir{tex/platex/base}
+
+\Msg{*** Generating the pLaTeX files for making the documents ***}
+
+\preamble
+
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016-2018 Japanese TeX Development Community
+
+This file is part of the pLaTeX2e system (community edition).
+-------------------------------------------------------------
+
+\endpreamble
+
+\generate{
+ \file{platex.ltx}{\from{platex.dtx}{plcore}}
+ \file{plcore.ltx}{\from{plvers.dtx}{plcore}
+ \from{plfonts.dtx}{plcore}
+ \from{plcore.dtx}{plcore}
+ \from{plvers.dtx}{plfinal}}
+ \file{kinsoku.tex}{\from{kinsoku.dtx}{plcore}}
+ \file{pldefs.ltx}{\from{plfonts.dtx}{pldefs,xpt}}
+ \file{jy1mc.fd}{\from{plfonts.dtx}{JY1mc}}
+ \file{jy1gt.fd}{\from{plfonts.dtx}{JY1gt}}
+ \file{jt1mc.fd}{\from{plfonts.dtx}{JT1mc}}
+ \file{jt1gt.fd}{\from{plfonts.dtx}{JT1gt}}
+ \file{plext.sty}{\from{plext.dtx}{package}}
+ \file{ptrace.sty}{\from{plfonts.dtx}{trace}}
+ \file{pfltrace.sty}{\from{plcore.dtx}{fltrace,trace}}
+}
+
+\endbatchfile
diff --git a/language/japanese/platex/plfonts.dtx b/language/japanese/platex/plfonts.dtx
new file mode 100644
index 0000000000..78f54e1e6a
--- /dev/null
+++ b/language/japanese/platex/plfonts.dtx
@@ -0,0 +1,2803 @@
+% \iffalse meta-comment
+%% File: plfonts.dtx
+%
+% Copyright 1994-2006 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016-2018 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ifx\JAPANESEtrue\undefined
+ \expandafter\newif\csname ifJAPANESE\endcsname
+ \JAPANESEtrue
+\fi
+\def\eTeX{$\varepsilon$-\TeX}
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+%</driver>
+% \fi
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.0}{1994/09/16}{first edition}
+% \changes{v1.1}{1995/02/21}{\cs{selectfont}$B%"%k%4%j%:%`JQ99(B}
+% \changes{v1.1b}{1995/04/25}{\cs{selectfont}$B=$@5(B}
+% \changes{v1.1c}{1995/08/22}{$B=D2#%U%)%s%HF1;~@Z$jBX$((B}
+% \changes{v1.2}{1995/11/09}{\cs{DeclareFixedFont}$B$NF|K\8l2=(B}
+% \changes{v1.3}{1996/03/25}{$B?t<0%U%!%_%j$NDj5AJQ99(B}
+% \changes{v1.3a}{1997/01/25}{\LaTeX\ \texttt{!<1996/12/01!>$B$KBP1~(B}}
+% \changes{v1.3b}{1997/01/28}{\cs{textmc}, \cs{textgt}$B$NF0:n=$@5(B}
+% \changes{v1.3c}{1997/04/08}{$BOBJ8%(%s%3!<%I4XO"$N=$@5(B}
+% \changes{v1.3d}{1997/06/25}{\cs{em},\cs{emph}$B$GOBJ8$r6/D4=qBN$K(B}
+% \changes{v1.3e}{1997/07/10}{fd$B%U%!%$%kL>$N>.J8;z2=$,8z$$$F$$$J$+$C$?$N$r=$@5(B}
+% \changes{v1.3f}{1998/08/10}{\cs{DeclareFixedCommand}$B$r(B\cs{@onlypreamble}$B$K(B
+% $B$7$F$7$^$C$F$$$?$N$r=$@5(B}
+% \changes{v1.3g}{1999/04/05}{plpatch.ltx$B$NFbMF$rH?1G(B}
+% \changes{v1.3h}{1999/08/09}{\cs{strut}$B$N2~A1(B}
+% \changes{v1.3i}{2000/07/13}{\cs{text..}$B%3%^%s%I$N:8B&$K(B\cs{xkanjiskip}$B$,(B
+% $BF~$i$J$$$N$r=$@5(B}
+% \changes{v1.3j}{2000/10/24}{\cs{adjustbaseline}$B$GM>J,$J%"%-$,F~$i$J$$(B
+% $B$h$&$K$7$?(B}
+% \changes{v1.3k}{2001/05/10}{$B2$J8=qBN$N4p=`$r:F$S(B`/`$B$+$i(B`M'$B$KJQ99(B}
+% \changes{v1.3l}{2002/04/05}{\cs{adjustbaseline}$B$G%U%)%s%H$N4p=`CM$,=D=q$-(B
+% $B0J30$G$O@_Dj$5$l$J$$$N$r=$@5(B}
+% \changes{v1.3m}{2004/06/14}{\cs{fontfamily}$B%3%^%s%IFbIt%U%i%0JQ99(B}
+% \changes{v1.3n}{2004/08/10}{$BOBJ8%(%s%3!<%G%#%s%0$N@Z$jBX$($rM-8z2=(B}
+% \changes{v1.3o}{2005/01/04}{\cs{fontfamily}$BCf$N%U%i%0=$@5(B}
+% \changes{v1.3p}{2006/01/04}{\cs{DeclareFontEncoding@}$BCf$G(B
+% \cs{LastDeclaredEncodeng}$B$N:FDj5A$,H4$1$F$$$?$N$GDI2C(B}
+% \changes{v1.4}{2006/06/27}{\cs{reDeclareMathAlphabet}$B$r=$@5!#(B
+% $B$"$j$,$H$&!"(Bymt$B$5$s!#(B}
+% \changes{v1.5}{2006/11/10}{\cs{reDeclareMathAlphabet}$B$r=$@5!#(B
+% $B$"$j$,$H$&!"(Bymt$B$5$s!#(B}
+% \changes{v1.6}{2016/02/01}{\LaTeX\ \texttt{!<2015/01/01!>}$B$G$N(B\cs{em}$B$N(B
+% $BDj5AJQ99$KBP1~!#(B\cs{eminnershape}$B$rDI2C!#(B}
+% \changes{v1.6a}{2016/04/01}{$B%Y!<%9%i%$%sJd@5NL$,(B0$B$G$J$$$H$-$K(B
+% \cs{AA}$B$J$I0lIt$N9g@.J8;z$,$*$+$7$/$J$k$3$H$X$NBP1~!#(B}
+% \changes{v1.6b}{2016/04/30}{ptrace.sty$B$NKAF,$G(Btracefnt.sty$B$r(B
+% \cs{RequirePackageWithOptions}$B$9$k$h$&$K$7$?(B}
+% \changes{v1.6c}{2016/06/06}{v1.6a$B$G$N=$@5$G(B\'e $B$J$IA4$F$N%"%/%;%s%HIU$-J8;z$G(B
+% $B<~0O$K(B\cs{xkanjiskip}$B$,F~$i$J$/$J$C$F$$$?$N$r=$@5!#(B}
+% \changes{v1.6d}{2016/06/19}{$B%"%/%;%s%HIU$-J8;z$r$5$i$K=$@5(B(forum:1951)}
+% \changes{v1.6e}{2016/06/26}{v1.6a$B0J9_$N=$@5$GA4$F$N%"%/%;%s%HIU$-J8;z$G(B
+% $B%H%i%V%k$,Aj<!$$$@$?$a!"$$$C$?$s%Q%C%A$r=|5n!#(B}
+% \changes{v1.6f}{2017/02/20}{ptrace.sty$B$N(Bplatexrelease$BBP1~(B}
+% \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}$B$rDI2C(B}
+% \changes{v1.6f}{2017/02/20}{\cs{strutbox}$B$r=D2#N>BP1~$K(B}
+% \changes{v1.6f}{2017/02/20}{\cs{strutbox}$B$NBe$o$j$K(B\cs{ystrutbox}$B$r;HMQ(B}
+% \changes{v1.6f}{2017/02/20}{\cs{ystrut}$B$rDI2C(B}
+% \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}$B$rAH$_N)$F$k$h$&$K(B}
+% \changes{v1.6g}{2017/03/07}{$B%Y!<%9%i%$%sJd@5NL$r=$@5(B}
+% \changes{v1.6h}{2017/08/05}{$BOBJ8=qBN$N4p=`$rA43Q6uGr$+$i!V4A!W$KJQ99(B}
+% \changes{v1.6h}{2017/08/05}{trace$B$N%3!<%I$N(B\texttt{\%}$BK:$l$r=$@5(B}
+% \changes{v1.6i}{2017/09/24}{2010$BG/$N(Bp\TeX{}$BK\BN$N=$@5$K$h$j!"(Bv1.3i$B$GF~$l$?(B
+% $BBP=h$,ITMW$K$J$C$F$$$?$N$G:o=|(B}
+% \changes{v1.6i}{2017/09/24}{\cs{<}$B$,CJMnF,$G$b8z$/$h$&$K$7$?(B}
+% \changes{v1.6j}{2017/11/06}{\cs{cy@encoding}$B$H(B\cs{ct@encoding}$B$r(B
+% $B6qBNE*$JCM$G$O$J$/!V6u!W$G=i4|2=(B}
+% \changes{v1.6j}{2017/11/06}{$B=D2#$N%(%s%3!<%G%#%s%0$N%;%C%H2=$r(B
+% plcore$B$+$i(Bpldefs$B$X0\F0(B}
+% \changes{v1.6k}{2017/12/05}{$B%G%U%)%k%H@_Dj%U%!%$%k$NFI$_9~$_$r(B
+% \file{plcore.ltx}$B$+$i(B\file{platex.ltx}$B$X0\F0(B}
+% \changes{v1.6l}{2018/02/04}{$BOBJ8%9%1!<%kCM$rL@J82=(B}
+% \changes{v1.6m}{2018/03/31}{\file{utf8.def}$BM3Mh$N%3!<%I$rDI2C(B}
+% \changes{v1.6n}{2018/04/06}{\cs{UseRawInputEncoding}$B$G;H$o$l$k(B
+% \cs{DeclareFontEncoding@}$B$NJ]B8HG$bDj5A(B
+% (sync with ltfinal.dtx 2018/04/06 v2.1b)}
+% \changes{v1.6o}{2018/04/08}{Delay full UTF-8 handling to \cs{everyjob}
+% (sync with ltfinal.dtx 2018/04/08 v2.1d)}
+% \changes{v1.6p}{2018/04/09}{v1.6o$B$G2C$($?BP:v$r:o=|!#(B
+% $B;29M!'(Bplvers.dtx 2018/04/09 v1.1l$B$N(B\cs{everyjob}}
+% \changes{v1.6q}{2018/07/03}{$B%7%j!<%:(Bb$B$,(Bbx$B$HEy2A$K$J$k$h$&$K@k8@(B}
+% \changes{v1.6r}{2018/07/25}{PDF$B$N$7$*$j$K%"%/%;%s%HJ8;z$,4^$^$l$k>l9g$KBP1~(B}
+% \changes{v1.6r}{2018/07/25}{\cs{[no]fixcompositeaccent}$B%^%/%mDI2C(B}
+% \changes{v1.6r}{2018/07/25}{$B%3!<%I@0M}(B}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{plfonts.dtx}[2018/07/25 v1.6r pLaTeX New Font Selection Scheme]
+% \iffalse
+\documentclass{jltxdoc}
+\GetFileInfo{plfonts.dtx}
+\title{p\LaTeXe{}$B$N%U%)%s%H%3%^%s%I(B\space\fileversion}
+\author{Ken Nakano \& Hideaki Togashi}
+\date{$B:n@.F|!'(B\filedate}
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{$B35MW(B}\label{plfonts:intro}
+% $B$3$3$G$O!"OBJ8=qBN$r(B\NFSS2$B$N%$%s%?!<%U%'%$%9$GA*Br$9$k$?$a$N(B
+% $B%3%^%s%I$d%^%/%m$K$D$$$F@bL@$r$7$F$$$^$9!#(B
+% $B$^$?!"%U%)%s%HDj5A%U%!%$%k$d=i4|@_Dj%U%!%$%k$J$I$N@bL@$b$7$F$$$^$9!#(B
+% $B?7$7$$%U%)%s%HA*Br%3%^%s%I$N;H$$J}$K$D$$$F$O!"(B\file{fntguide.tex}$B$d(B
+% \file{usrguide.tex}$B$r;2>H$7$F$/$@$5$$!#(B
+%
+% \begin{description}
+% \item[$BBh(B\ref{plfonts:intro}$B@a(B] $B$3$N@a$G$9!#$3$N%U%!%$%k$N35MW$H(B
+% \dst{}$B%W%m%0%i%`$N$?$a$N%*%W%7%g%s$r<($7$F$$$^$9!#(B
+% \item[$BBh(B\ref{plfonts:codes}$B@a(B] $B<B:]$N%3!<%I$NItJ,$G$9!#(B
+% \item[$BBh(B\ref{plfonts:pldefs}$B@a(B] $B%W%j%m!<%I%U%)%s%H$d%(%i!<%U%)%s%H$J$I$N(B
+% $B=i4|@_Dj$K$D$$$F@bL@$r$7$F$$$^$9!#(B
+% \item[$BBh(B\ref{plfonts:fontdef}$B@a(B] $B%U%)%s%HDj5A%U%!%$%k$K$D$$$F(B
+% $B@bL@$r$7$F$$$^$9!#(B
+% \end{description}
+%
+%
+% \subsection{\dst{}$B%W%m%0%i%`$N$?$a$N%*%W%7%g%s(B}
+% \dst{}$B%W%m%0%i%`$N$?$a$N%*%W%7%g%s$r<!$K<($7$^$9!#(B
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{l|p{0.7\linewidth}}
+% \emph{$B%*%W%7%g%s(B} & \emph{$B0UL#(B}\\\hline
+% plcore & \file{plcore.ltx}$B$NCGJR$r@8@.$7$^$9!#(B\\
+% trace & \file{ptrace.sty}$B$r@8@.$7$^$9!#(B\\
+% JY1mc & $B2#AHMQ!"L@D+BN$N%U%)%s%HDj5A%U%!%$%k$r@8@.$7$^$9!#(B\\
+% JY1gt & $B2#AHMQ!"%4%7%C%/BN$N%U%)%s%HDj5A%U%!%$%k$r@8@.$7$^$9!#(B\\
+% JT1mc & $B=DAHMQ!"L@D+BN$N%U%)%s%HDj5A%U%!%$%k$r@8@.$7$^$9!#(B\\
+% JT1gt & $B=DAHMQ!"%4%7%C%/BN$N%U%)%s%HDj5A%U%!%$%k$r@8@.$7$^$9!#(B\\
+% pldefs & \file{pldefs.ltx}$B$r@8@.$7$^$9!#<!$N#4$D$N%*%W%7%g%s$rIU2C$9$k(B
+% $B$3$H$G!"%W%j%m!<%I$9$k%U%)%s%H$rA*Br$9$k$3$H$,$G$-$^$9!#(B
+% $B%G%U%)%k%H$O(B10pt$B$G$9!#(B\\
+% xpt & 10pt $B%W%j%m!<%I(B\\
+% xipt & 11pt $B%W%j%m!<%I(B\\
+% xiipt & 12pt $B%W%j%m!<%I(B\\
+% ori & \file{plfonts.tex}$B$K;w$?%W%j%m!<%I(B\\
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+%
+%
+% \section{$B%3!<%I(B}\label{plfonts:codes}
+% $B$3$N@a$G!"6qBNE*$K(B\NFSS2$B$r3HD%$9$k%3%^%s%I$d%^%/%m$NDj5A$r9T$J$C$F$$$^$9!#(B
+%
+% \subsection{$B=`Hw(B}
+% \NFSS2$B$r3HD%$9$k$?$a$N=`Hw$G$9!#(B
+% $BOBJ8%U%)%s%H$NB0@-$r3JG<$9$k%*%V%8%'%/%H$dD9$5JQ?t!"(B
+% $BB0@-$r@ZBX$($k:]$NH=CG:`NA$H$7$F;H$&%j%9%H$J$I$rDj5A$7$F$$$^$9!#(B
+%
+% \file{ptrace}$B%Q%C%1!<%8$O(B\LaTeX{}$B$N(B\file{tracefnt}$B%Q%C%1!<%8$K0MB8$7$^$9!#(B
+% \changes{v1.6b}{2016/04/30}{ptrace.sty$B$NKAF,$G(Btracefnt.sty$B$r(B
+% \cs{RequirePackageWithOptions}$B$9$k$h$&$K$7$?(B}
+% \begin{macrocode}
+%<*trace>
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{ptrace}
+ [2017/08/05 v1.6h Standard pLaTeX package (font tracing)]
+\RequirePackageWithOptions{tracefnt}
+%</trace>
+% \end{macrocode}
+%
+% \subsubsection{$BOBJ8%U%)%s%HB0@-(B}
+% $B$3$3$G$O!"OBJ8%U%)%s%H$NB0@-$r3JG<$9$k$?$a$N%*%V%8%'%/%H$K$D$$$F(B
+% $B@bL@$r$7$F$$$^$9!#(B
+%
+% \begin{macro}{\k@encoding}
+% \begin{macro}{\ck@encoding}
+% \begin{macro}{\cy@encoding}
+% \begin{macro}{\ct@encoding}
+% $BOBJ8%(%s%3!<%I$r<($9%*%V%8%'%/%H$G$9!#(B
+% |\ck@encoding|$B$O!":G8e$KA*Br$5$l$?OBJ8%(%s%3!<%IL>$r<($7$F$$$^$9!#(B
+% |\cy@encoding|$B$H(B|\ct@encoding|$B$O$=$l$>$l!":G8e$KA*Br$5$l$?!"(B
+% $B2#AHMQ$H=DAHMQ$NOBJ8%(%s%3!<%IL>$r<($7$F$$$^$9!#(B
+%
+% $B$3$3$G$OC1$K!V6u!W$K=i4|2=$9$k$@$1$K$7$F$$$^$9!#(B
+% \iffalse
+% $B%"%9%-!<HG$O(BJY1$B$d(BJT1$B$H$$$&6qBNE*$JCM$G=i4|2=$7$F$$$?$,!"$3$l$i$NCM$O(B
+% \file{pldefs.ltx}$B$GDj5A$9$k$b$N$G$"$k$+$i!"(B\file{plcore.ltx}$B$G(B
+% $B$=$l$r;H$&$N$O$*$+$7$$!#(B
+% \fi
+% \changes{v1.6j}{2017/11/06}{\cs{cy@encoding}$B$H(B\cs{ct@encoding}$B$r(B
+% $B6qBNE*$JCM$G$O$J$/!V6u!W$G=i4|2=(B}
+% \begin{macrocode}
+%<*plcore>
+\let\k@encoding\@empty
+\let\ck@encoding\@empty
+\let\cy@encoding\@empty
+\let\ct@encoding\@empty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\k@family}
+% $BOBJ8=qBN$N%U%!%_%j$r<($9%*%V%8%'%/%H$G$9!#(B
+% \begin{macrocode}
+\let\k@family\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\k@series}
+% $BOBJ8=qBN$N%7%j!<%:$r<($9%*%V%8%'%/%H$G$9!#(B
+% \begin{macrocode}
+\let\k@series\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\k@shape}
+% $BOBJ8=qBN$N%7%'%$%W$r<($9%*%V%8%'%/%H$G$9!#(B
+% \begin{macrocode}
+\let\k@shape\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\curr@kfontshape}
+% $B8=:_$NOBJ8%U%)%s%HL>$r<($9%*%V%8%'%/%H$G$9!#(B
+% \begin{macrocode}
+\def\curr@kfontshape{\k@encoding/\k@family/\k@series/\k@shape}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rel@fontshape}
+% $B4XO"IU$1$5$l$?%U%)%s%HL>$r<($9%*%V%8%'%/%H$G$9!#(B
+% \begin{macrocode}
+\def\rel@fontshape{\f@encoding/\f@family/\f@series/\f@shape}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$BD9$5JQ?t(B}
+% $B$3$3$G$O!"OBJ8%U%)%s%H$NI}$d9b$5$J$I$r3JG<$9$kJQ?t$K$D$$$F@bL@$r$7$F$$$^$9!#(B
+%
+% $BF,J8;z$,BgJ8;z$NJQ?t$O!"%N!<%^%k%5%$%:$N=qBN$NBg$-$5$G!"4p=`CM$H$J$j$^$9!#(B
+% $B$3$l$i$O!"(B\file{jart10.clo}$B$J$I$NJd=u%/%i%9%U%!%$%k$G@_Dj$5$l$^$9!#(B
+%
+% $B>.J8;z$@$1$+$i$J$kJQ?t$O!"(B
+% $B%U%)%s%H$,JQ99$5$l$?$H$-$K!J(B|\selectfont|$BFb$G!K99?7$5$l$^$9!#(B
+%
+% \begin{macro}{\Cht}
+% \begin{macro}{\cht}
+% |\Cht|$B$O4p=`$H$J$kOBJ8%U%)%s%H$NJ8;z$N9b$5$r<($7$^$9!#(B
+% |\cht|$B$O8=:_$NOBJ8%U%)%s%H$NJ8;z$N9b$5$r<($7$^$9!#(B
+% $B$J$*!"$3$N(B``$B9b$5(B''$B$O%Y!<%9%i%$%s$h$j>e$ND9$5$G$9!#(B
+% \begin{macrocode}
+\newdimen\Cht
+\newdimen\cht
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Cdp}
+% \begin{macro}{\cdp}
+% |\Cdp|$B$O4p=`$H$J$kOBJ8%U%)%s%H$NJ8;z$N?<$5$r<($7$^$9!#(B
+% |\cdp|$B$O8=:_$NOBJ8%U%)%s%H$NJ8;z$N?<$5$r<($7$^$9!#(B
+% $B$J$*!"$3$N(B``$B?<$5(B''$B$O%Y!<%9%i%$%s$h$j2<$ND9$5$G$9!#(B
+% \begin{macrocode}
+\newdimen\Cdp
+\newdimen\cdp
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Cwd}
+% \begin{macro}{\cwd}
+% |\Cwd|$B$O4p=`$H$J$kOBJ8%U%)%s%H$NJ8;z$NI}$r<($7$^$9!#(B
+% |\cwd|$B$O8=:_$NOBJ8%U%)%s%H$NJ8;z$NI}$r<($7$^$9!#(B
+% \begin{macrocode}
+\newdimen\Cwd
+\newdimen\cwd
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Cvs}
+% \begin{macro}{\cvs}
+% |\Cvs|$B$O4p=`$H$J$k9TAw$j$r<($7$^$9!#(B
+% $B%N!<%^%k%5%$%:$N(B|\baselineskip|$B$HF1CM$G$9!#(B
+% |\cvs|$B$O8=:_$N9TAw$j$r<($7$^$9!#(B
+% \begin{macrocode}
+\newdimen\Cvs
+\newdimen\cvs
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Chs}
+% \begin{macro}{\chs}
+% |\Chs|$B$O4p=`$H$J$k;zAw$j$r<($7$^$9!#(B|\Cwd|$B$HF1CM$G$9!#(B
+% |\chs|$B$O8=:_$N;zAw$j$r<($7$^$9!#(B
+% \begin{macrocode}
+\newdimen\Chs
+\newdimen\chs
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cHT}
+% |\cHT|$B$O!"8=:_$N%U%)%s%H$N9b$5$K?<$5$r2C$($?D9$5$r<($7$^$9!#(B
+% |\set@fontsize|$B%3%^%s%I!J<B:]$O(B|\size@update|$B!K$G99?7$5$l$^$9!#(B
+% \begin{macrocode}
+\newdimen\cHT
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B0l;~%3%^%s%I(B}
+%
+% \begin{macro}{\afont}
+% \LaTeX{}$BFbIt$N(B|\do@subst@correction|$B%^%/%m$G$O!"(B
+% |\fontname\font|$B$GJV$5$l$k30It%U%)%s%HL>$rMQ$$$F!"(B
+% \LaTeX{}$B%U%)%s%HL>$rDj5A$7$F$$$^$9!#$7$?$,$C$F!"(B|\font|$B$r$=$N$^$^;H$&$H!"(B
+% $BOBJ8%U%)%s%HL>$K2$J8$N30It%U%)%s%H$,EPO?$5$l$?$j!"(B
+% $B=DAH%U%)%s%HL>$K2#AHMQ$N30It%U%)%s%H$,3d$jIU$1$i$l$?$j$7$^$9$N$G!"(B
+% |\jfont|$B$+(B|\tfont|$B$rMQ$$$k$h$&$K$7$^$9!#(B
+% |\afont|$B$O!"(B|\font|$B%3%^%s%I$NJ]B8MQ$G$9!#(B
+% \begin{macrocode}
+\let\afont\font
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{$B%U%)%s%H%j%9%H(B}
+% $B$3$3$G$O!"%U%)%s%H$N%(%s%3!<%I$d%U%!%_%j$NL>A0$rEPO?$9$k%j%9%H$K$D$$$F(B
+% $B@bL@$r$7$F$$$^$9!#(B
+%
+% p\LaTeXe{}$B$N(B\NFSS2$B$G$O!"0l$D$N%3%^%s%I$GOBJ8$+2$J8$N$$$:$l$+!"$"$k$$$ON>J}$r(B
+% $BJQ99$9$k$?$a!"%3%^%s%I$K;XDj$5$l$?0z?t$,2?$r<($9$N$+$rH=CG$7$J$/$F$O(B
+% $B$J$j$^$;$s!#$3$NH=CG:`NA$H$7$F!"%j%9%H$rMQ$$$^$9!#(B
+%
+% $B$3$N$H$-$N6qBNE*$JH=CG<j=g$K$D$$$F$O!"%(%s%3!<%IA*Br%3%^%s%I$d(B
+% $B%U%!%_%jA*Br%3%^%s%I$J$I$NDj5A$r;2>H$7$F$/$@$5$$!#(B
+%
+% \begin{macro}{\inlist@}
+% $B<!$N%3%^%s%I$O!"%(%s%3!<%I$d%U%!%_%j$N%j%9%HFb$KBhFs0z?t$G;XDj$5$l$?J8;zNs(B
+% $B$,$"$k$+$I$&$+$rD4$Y$k%^%/%m$G$9!#(B
+% \begin{macrocode}
+\def\inlist@#1#2{%
+ \def\in@@##1<#1>##2##3\in@@{%
+ \ifx\in@##2\in@false\else\in@true\fi}%
+ \in@@#2<#1>\in@\in@@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\enc@elt}
+% \begin{macro}{\fam@elt}
+% |\enc@elt|$B$H(B|\fam@elt|$B$O!"EPO?$5$l$F$$$k%(%s%3!<%I$KBP$7$F!"(B
+% $B$J$s$i$+$N=hM}$rC`<!E*$K9T$J$$$?$$$H$-$K;HMQ$9$k$3$H$,$G$-$^$9!#(B
+% \begin{macrocode}
+\def\fam@elt{\noexpand\fam@elt}
+\def\enc@elt{\noexpand\enc@elt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fenc@list}
+% \begin{macro}{\kenc@list}
+% \begin{macro}{\kyenc@list}
+% \begin{macro}{\ktenc@list}
+% |\fenc@list|$B$K$O!"(B|\DeclareFontEncoding|$B%3%^%s%I$G@k8@$5$l$?%(%s%3!<%IL>$,(B
+% $B3JG<$5$l$F$$$-$^$9!#(B
+%
+% |\kyenc@list|$B$K$O!"(B|\DeclareYokoKanjiEncoding|$B%3%^%s%I$G@k8@$5$l$?(B
+% $B%(%s%3!<%IL>$,3JG<$5$l$F$$$-$^$9!#(B
+% |\ktenc@list|$B$K$O!"(B|\DeclareTateKanjiEncoding|$B%3%^%s%I$G@k8@$5$l$?(B
+% $B%(%s%3!<%IL>$,3JG<$5$l$F$$$-$^$9!#(B
+%
+% \changes{v1.1b}{1995/03/28}{$B%j%9%H$N=i4|CM$rJQ99(B}
+% \changes{v1.1b}{1995/05/10}{$B%j%9%HFb$N6uGr$r:o=|(B}
+%
+% $B$3$3$G!"$3$l$i$N%j%9%H$K6qBNE*$JCM$rF~$l$F=i4|2=$r$9$k$N$O!"(B
+% $B%j%9%H$K%(%s%3!<%I$NEPO?$r$9$k$h$&$K(B|\DeclareFontEncoding|$B$r:FDj5A(B
+% $B$9$kA0$K!"2$J8%(%s%3!<%I$,@k8@$5$l$k$?$a!"%j%9%H$KEPO?$5$l$J$$$+$i$G$9!#(B
+% \changes{v1.1}{1997/01/25}{Add TS1 encoding to the starting member of
+% \cs{fenc@list}.}
+% \begin{macrocode}
+\def\fenc@list{\enc@elt<OML>\enc@elt<T1>\enc@elt<OT1>\enc@elt<OMS>%
+ \enc@elt<OMX>\enc@elt<TS1>\enc@elt<U>}
+\let\kenc@list\@empty
+\let\kyenc@list\@empty
+\let\ktenc@list\@empty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\kfam@list}
+% \begin{macro}{\ffam@list}
+% \begin{macro}{\notkfam@list}
+% \begin{macro}{\notffam@list}
+% |\kfam@list|$B$K$O!"(B|\DeclareKanjiFamily|$B%3%^%s%I$G@k8@$5$l$?%U%!%_%jL>$,(B
+% $B3JG<$5$l$F$$$-$^$9!#(B
+%
+% |\ffam@list|$B$K$O!"(B|\DeclareFontFamily|$B%3%^%s%I$G@k8@$5$l$?%U%!%_%jL>$,(B
+% $B3JG<$5$l$F$$$-$^$9!#(B
+%
+% |\notkfam@list|$B$K$O!"OBJ8%U%!%_%j$G$O$J$$$H?dB,$5$l$?%U%!%_%jL>$,(B
+% $B3JG<$5$l$F$$$-$^$9!#$3$N%j%9%H$O(B|\fontfamily|$B%3%^%s%I$G:n@.$5$l$^$9!#(B
+%
+% |\notffam@list|$B$K$O2$J8%U%!%_%j$G$O$J$$$H?dB,$5$l$?%U%!%_%jL>$,(B
+% $B3JG<$5$l$F$$$-$^$9!#$3$N%j%9%H$O(B|\fontfamily|$B%3%^%s%I$G:n@.$5$l$^$9!#(B
+%
+% \changes{v1.1b}{1995/03/28}{$B%j%9%H$N=i4|CM$rJQ99(B}
+% \changes{v1.1b}{1995/05/10}{$B%j%9%HFb$N6uGr$r:o=|(B}
+%
+% $B$3$3$G!"$3$l$i$N%j%9%H$K6qBNE*$JCM$rF~$l$F=i4|2=$r$9$k$N$O!"(B
+% $B%j%9%H$K%U%!%_%j$NEPO?$r$9$k$h$&$K!"(B|\DeclareFontFamily|$B$,(B
+% $B:FDj5A$5$l$kA0$K!"$3$N%3%^%s%I$,;HMQ$5$l$k$?$a!"(B
+% $B%j%9%H$KEPO?$5$l$J$$$+$i$G$9!#(B
+% \begin{macrocode}
+\def\kfam@list{\fam@elt<mc>\fam@elt<gt>}
+\def\ffam@list{\fam@elt<cmr>\fam@elt<cmss>\fam@elt<cmtt>%
+ \fam@elt<cmm>\fam@elt<cmsy>\fam@elt<cmex>}
+% \end{macrocode}
+% \changes{v1.1c}{1996/03/06}{\cs{notkfam@list}$B$H(B\cs{notffam@list}$B$N(B
+% $B=i4|CM$rJQ99(B}
+% $B$D$.$NFs$D$N%j%9%H$N=i4|CM$H$7$F!">e5-$NCM$rMQ$$$^$9!#(B
+% $B$3$l$i$N%U%!%_%jL>$O!"OBJ8$G$J$$$3$H!"2$J8$G$J$$$3$H$,$O$C$-$j$7$F$$$^$9!#(B
+% \begin{macrocode}
+\let\notkfam@list\ffam@list
+\let\notffam@list\kfam@list
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{$B;YCl(B}
+% $B9T4V$ND4@0$J$I$KMQ$$$k;YCl$G$9!#(B
+% $B;YCl$N$b$H$H$J$k%\%C%/%9$NBg$-$5$O!"%U%)%s%H%5%$%:$,JQ99$5$l$k$?$S$K!"(B
+% |\set@fontsize|$B%3%^%s%I$K$h$C$FJQ2=$7$^$9!#(B
+%
+% $B%U%)%s%H%5%$%:$,JQ99$5$l$?$H$-$K!"(B|\set@fontsize|$B%3%^%s%I$G99?7$5$l$^$9!#(B
+%
+% $B=>Mh!"2#AH%\%C%/%9MQ$N;YCl$O(B|\strutbox|$B$G!"9b$5$H?<$5$,(B7$BBP(B3$B$H$J$C$F$$$^$7$?!#(B
+% $B$3$l$O(Bp\LaTeX{}$BC1BN$G$OLdBj$K$J$j$^$;$s$G$7$?$,!"3$30@=$N(B\LaTeX{}$B%Q%C%1!<%8$r(B
+% $B=DAH$G;HMQ$7$?>l9g$K!"0U?^$7$J$$I}$d9b$5$,<hF@$5$l$k$3$H$,$"$j$^$7$?!#(B
+% $B$3$NITET9g$r2sHr$9$k$?$a!"%3%_%e%K%F%#HG(Bp\LaTeX{}$B$G$O<!$NJ}K!$r$H$j$^$9!#(B
+% \begin{itemize}
+% \item |\ystrutbox|$B!J?7@_!K!'9b$5$H?<$5$,(B7$BBP(B3$B$N2#AH%\%C%/%9MQ$N;YCl(B
+% \item |\tstrutbox|$B!'9b$5$H?<$5$,(B5$BBP(B5$B$N=DAH%\%C%/%9MQ$N;YCl(B
+% \item |\zstrutbox|$B!'9b$5$H?<$5$,(B7$BBP(B3$B$N=DAH%\%C%/%9MQ$N;YCl(B
+% \item |\strutbox|$B!J;EMMJQ99!K!'=D2#$N%G%#%l%/%7%g%s$K1~$8$F(B
+% |\tstrutbox|$B$^$?$O(B|\ystrutbox|$B$KE83+$5$l$k%^%/%m(B
+% \end{itemize}
+% $B$9$J$o$A!"=>Mh$N(Bp\LaTeX{}$B$K$*$1$k(B|\strutbox|$B$HF1$85sF0$r<($9$N$,!"(B
+% $B?7@_$5$l$?(B|\ystrutbox|$B$H$$$&$3$H$K$J$j$^$9!#(B
+%
+% \begin{macro}{\tstrutbox}
+% \begin{macro}{\zstrutbox}
+% |\tstrutbox|$B$O9b$5$H?<$5$,(B5$BBP(B5$B!"(B
+% |\zstrutbox|$B$O9b$5$H?<$5$,(B7$BBP(B3$B$N;YCl%\%C%/%9$H$J$j$^$9!#(B
+% $B$3$l$i$O=DAH%\%C%/%9$N9T4V$ND4@0$J$I$K;H$$$^$9!#(B
+% \begin{macrocode}
+\newbox\tstrutbox
+\newbox\zstrutbox
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ystrutbox}
+% |\ystrutbox|$B$O9b$5$H?<$5$,(B7$BBP(B3$B$N2#AH%\%C%/%9MQ$N;YCl$G$9!#(B
+% \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}$B$rDI2C(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2017/04/08}{\ystrutbox}
+%<platexrelease> {Add \ystrutbox}%
+%<*plcore|platexrelease>
+\newbox\ystrutbox
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\ystrutbox}
+%<platexrelease> {Add \ystrutbox}%
+%<platexrelease>\let\ystrutbox\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\strutbox}
+% |\strutbox|$B$O=D2#N>BP1~$G$9!#(B
+% \changes{v1.6f}{2017/02/20}{\cs{strutbox}$B$r=D2#N>BP1~$K(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2017/04/08}{\strutbox}
+%<platexrelease> {Add \strutbox}%
+%<*plcore|platexrelease>
+\def\strutbox{\iftdir\tstrutbox\else\ystrutbox\fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\strutbox}
+%<platexrelease> {Add \strutbox}%
+%<platexrelease>\newbox\strutbox % emulation purpose only
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\strut}
+% $B%G%#%l%/%7%g%s$K1~$8$F(B|\ystrutbox|$B$H(B|\tstrutbox|$B$r;H$$J,$1$^$9!#(B
+% ^^A |\strutbox|$B$O(B|\yoko|$B%G%#%l%/%7%g%s$GAH$^$l$F$$$^$9$N$G!"(B
+% ^^A $B=DAH%\%C%/%9Fb$G(B|\unhcopy|$B$r$9$k$H%(%i!<$H$J$j$^$9!#(B
+% $B85!9$3$N%^%/%m$O(B\file{ltplain.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+%
+% \changes{v1.1c}{1995/08/24}{``\cs{centerling}~\cs{strut}''$B$NI}$,%<%m$K(B
+% $B$J$C$F$7$^$&$N$r=$@5(B}
+% \changes{v1.3h}{1999/08/09}{$B=DAH$N$H$-!"I}$N$"$k%\%C%/%9$K$J$C$F$7$^$&(B
+% $B$N$r=$@5(B}
+% \changes{v1.6f}{2017/02/20}{\cs{strutbox}$B$NBe$o$j$K(B\cs{ystrutbox}$B$r;HMQ(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2017/04/08}{\strut}
+%<platexrelease> {Use \ystrutbox}%
+%<*plcore|platexrelease>
+\def\strut{\relax
+ \ifydir
+ \ifmmode\copy\ystrutbox\else\unhcopy\ystrutbox\fi
+ \else
+ \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi
+ \fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\strut}
+%<platexrelease> {Use \ystrutbox}%
+%<platexrelease>\def\strut{\relax
+%<platexrelease> \ifydir
+%<platexrelease> \ifmmode\copy\strutbox\else\unhcopy\strutbox\fi
+%<platexrelease> \else
+%<platexrelease> \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi
+%<platexrelease> \fi}
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tstrut}
+% \begin{macro}{\zstrut}
+% \begin{macrocode}
+\def\tstrut{\relax\hbox{\tate
+ \ifmmode\copy\tstrutbox\else\unhcopy\tstrutbox\fi}}
+\def\zstrut{\relax\hbox{\tate
+ \ifmmode\copy\zstrutbox\else\unhcopy\zstrutbox\fi}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ystrut}
+% \changes{v1.6f}{2017/02/20}{\cs{ystrut}$B$rDI2C(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2017/04/08}{\ystrut}
+%<platexrelease> {Add \ystrut}%
+%<*plcore|platexrelease>
+\def\ystrut{\relax\hbox{\yoko
+ \ifmmode\copy\ystrutbox\else\unhcopy\ystrutbox\fi}}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\ystrut}
+%<platexrelease> {Add \ystrut}%
+%<platexrelease>\let\ystrut\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{$B%3%^%s%I(B}
+% $B<!$N%3%^%s%I$NDj5A$r$7$F$$$^$9!#(B
+%
+% \DeleteShortVerb{\|}
+% \MakeShortVerb{\+}
+% \begin{center}
+% \begin{tabular}{l|l}
+% \emph{$B%3%^%s%I(B} & \emph{$B0UL#(B}\\\hline
+% +\Declare{Font|YokoKanji|TateKanji}Encoding+ & $B%(%s%3!<%I$N@k8@(B\\
+% +\Declare{Yoko|Tate}KanjiEncodingDefaults+ &
+% $B%G%U%)%k%H$NOBJ8%(%s%3!<%I$N@k8@(B\\
+% +\Declare{Font|Kanji}Family+ & $B%U%!%_%j$N@k8@(B\\
+% +\DeclareKanjiSubstitution+ & $BOBJ8$NBeMQ%U%)%s%H$N@k8@(B\\
+% +\DeclareErrorKanjiFont+ & $BOBJ8$N%(%i!<%U%)%s%H$N@k8@(B \\
+% +\DeclareFixedFont+ & $B%U%)%s%H$NL>A0$N@k8@(B \\
+% +\reDeclareMathAlphabet+ & $BOB2$J8$rF1;~$K@Z$jBX$($k%3%^%s%I@k8@(B\\
+% +\{Declare|Set}RelationFont+ & $B=>B0=qBN$N@k8@(B\\
+% +\userelfont+ & $B2$J8=qBN$r=>B0=qBN$K$9$k(B\\
+% +\selectfont+ & $B%U%)%s%H$r@Z$jBX$($k(B\\
+% +\set@fontsize+ & $B%U%)%s%H%5%$%:$NJQ99(B\\
+% +\adjustbaseline+ & $B%Y!<%9%i%$%s%7%U%HNL$N@_Dj(B\\
+% +\{font|roman|kanji}encoding+ & $B%(%s%3!<%I$N;XDj(B\\
+% +\{font|roman|kanji}family+ & $B%U%!%_%j$N;XDj(B\\
+% +\{font|roman|kanji}series+ & $B%7%j!<%:$N;XDj(B\\
+% +\{font|roman|kanji}shape+ & $B%7%'%$%W$N;XDj(B\\
+% +\use{font|roman|kanji}+ & $B=qBN$N@Z$jBX$((B\\
+% +\normalfont+ & $B%G%U%)%k%HCM$N@_Dj$K@Z$jBX$($k(B\\
+% +\mcfamily+,+\gtfamily+ & $BOBJ8=qBN$rL@D+BN!"%4%7%C%/BN$K$9$k(B\\
+% +\textunderscore+ & $B%F%-%9%H%b!<%I$G$N2<@~%^%/%m(B\\
+% \end{tabular}
+% \end{center}
+% \DeleteShortVerb{\+}
+% \MakeShortVerb{\|}
+%
+%
+% \begin{macro}{\DeclareFontEncoding}
+% \begin{macro}{\DeclareFontEncoding@}
+% $B2$J8%(%s%3!<%I$r@k8@$9$k$?$a$N%3%^%s%I$G$9!#(B
+% \file{ltfssbas.dtx}$B$GDj5A$5$l$F$$$k$b$N$r!"(B
+% |\fenc@list|$B$r:n$k$h$&$K:FDj5A$r$7$F$$$^$9!#(B
+% \changes{v1.3p}{2006/01/04}{\break\cs{DeclareFontEncoding@}$BCf$G(B
+% \cs{LastDeclaredEncodeng}$B$N:FDj5A$,H4$1$F$$$?$N$GDI2C(B}
+% \begin{macrocode}
+\def\DeclareFontEncoding{%
+ \begingroup
+ \nfss@catcodes
+ \expandafter\endgroup
+ \DeclareFontEncoding@}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2018/04/01}{\DeclareFontEncoding@}
+%<platexrelease> {UTF-8 Encoding}%
+%<*plcore|platexrelease>
+% \end{macrocode}
+%
+% $B$^$:!"(B\LaTeXe\ 2017-04-15$B0JA0$N>l9g$N%3!<%I$G$9!#$3$N%3!<%I$O!"(B
+% |\UseRawInputEncoding|$B$NFbIt$G$b;H$o$l$^$9!#(B
+% \changes{v1.6n}{2018/04/06}{\cs{UseRawInputEncoding}$B$G;H$o$l$k(B
+% \cs{DeclareFontEncoding@}$B$NJ]B8HG!J=>Mh$NDj5A!K$r=`Hw(B
+% (sync with ltfinal.dtx 2018/04/06 v2.1b)}
+% \begin{macrocode}
+% for compatibility with LaTeX2e 2017-04-15 or earlier.
+% this code is used if MLTeX is enabled
+\def\DeclareFontEncoding@#1#2#3{%
+ \expandafter
+ \ifx\csname T@#1\endcsname\relax
+ \def\cdp@elt{\noexpand\cdp@elt}%
+ \xdef\cdp@list{\cdp@list\cdp@elt{#1}%
+ {\default@family}{\default@series}%
+ {\default@shape}}%
+ \expandafter\let\csname#1-cmd\endcsname\@changed@cmd
+% \end{macrocode}
+% $B0J2<$N(B2$B9T$,(Bp\LaTeXe{}$B$K$h$kDI2CItJ,$G$9!#(B
+% \begin{macrocode}
+ \def\enc@elt{\noexpand\enc@elt}%
+ \xdef\fenc@list{\fenc@list\enc@elt<#1>}%
+% \end{macrocode}
+% \begin{macrocode}
+ \else
+ \@font@info{Redeclaring font encoding #1}%
+ \fi
+ \global\@namedef{T@#1}{#2}%
+ \global\@namedef{M@#1}{\default@M#3}%
+ \xdef\LastDeclaredEncoding{#1}%
+ }
+\let\DeclareFontEncoding@saved\DeclareFontEncoding@
+% \end{macrocode}
+%
+% $B<!$K!"(B\LaTeXe\ 2018-04-01$B0J9_$N>l9g$N%3!<%I$G$9!#(B
+% \begin{macrocode}
+\ifx\IeC\@undefined\else
+% for LaTeX2e with UTF-8 input.
+\def\DeclareFontEncoding@#1#2#3{%
+ \expandafter
+ \ifx\csname T@#1\endcsname\relax
+ \def\cdp@elt{\noexpand\cdp@elt}%
+ \xdef\cdp@list{\cdp@list\cdp@elt{#1}%
+ {\default@family}{\default@series}%
+ {\default@shape}}%
+ \expandafter\let\csname#1-cmd\endcsname\@changed@cmd
+% \end{macrocode}
+% \LaTeXe\ 2018-04-01$B$G!"4{Dj$N2$J8F~NO%(%s%3!<%G%#%s%0$,(B
+% UTF-8$B$K$J$j$^$7$?!#$3$l$O!"(B\file{latex.ltx}$B$,(B\file{utf8.def}$B!J=>Mh$O(B
+% \LaTeX{}$B%=!<%9$K(B |\usepackage[utf8]{inputenc}| $B$H=q$$$?$H$-$K(B
+% $BFI$_9~$^$l$F$$$?$b$N!K$rFI$_9~$`$3$H$G<B8=$5$l$F$$$^$9!#(B
+% \file{utf8.def}$B$O(B |\DeclareFontEncoding@| $B$r:FDj5A$9$k$N$G!"(B
+% $B$3$l$K9g$o$;$k$?$a$N%3!<%I$rDI2C$7$^$9!#(B
+% \changes{v1.6m}{2018/03/31}{\file{utf8.def}$BM3Mh$N%3!<%I$rDI2C(B}
+% \begin{macrocode}
+ \begingroup
+ \wlog{Now handling font encoding #1 ...}%
+ \lowercase{%
+ \InputIfFileExists{#1enc.dfu}}%
+ {\wlog{... processing UTF-8 mapping file for font %
+ encoding #1}}%
+ {\wlog{... no UTF-8 mapping file for font encoding #1}}%
+ \endgroup
+% \end{macrocode}
+% $B0J2<$N(B2$B9T$,(Bp\LaTeXe{}$B$K$h$kDI2CItJ,$G$9!#(B
+% \begin{macrocode}
+ \def\enc@elt{\noexpand\enc@elt}%
+ \xdef\fenc@list{\fenc@list\enc@elt<#1>}%
+% \end{macrocode}
+% \begin{macrocode}
+ \else
+ \@font@info{Redeclaring font encoding #1}%
+ \fi
+ \global\@namedef{T@#1}{#2}%
+ \global\@namedef{M@#1}{\default@M#3}%
+ \xdef\LastDeclaredEncoding{#1}%
+ }
+% \end{macrocode}
+% ^^A pLaTeX2e <2018-04-01>+1$B$G$O0l;~E*$K!"$3$N>l=j$G(B
+% ^^A \LaTeXe\ 2018-04-01 Patch level 2$B$GF3F~$5$l$?(B
+% ^^A $B!V%3%^%s%I%i%$%s0z?t$K(BUnicode$BJ8;z$,;H$o$l$?>l9g$X$NBP=h!W(B
+% ^^A $B$X$NBP:v$r<B9T$7$F$$$^$7$?$,!"(B
+% ^^A pLaTeX2e <2018-04-01>+2$B$r0J$C$F!"(B\file{plvers.dtx}$BB&$,(B
+% ^^A $BBP1~40N;$7$?$?$a:o=|$7$^$7$?!#(B
+% \changes{v1.6o}{2018/04/08}{Delay full UTF-8 handling to \cs{everyjob}
+% (sync with ltfinal.dtx 2018/04/08 v2.1d)}
+% \changes{v1.6p}{2018/04/09}{v1.6o$B$G2C$($?BP:v$r:o=|!#(B
+% $B;29M!'(Bplvers.dtx 2018/04/09 v1.1l$B$N(B\cs{everyjob}}
+% \begin{macrocode}
+\fi
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\DeclareFontEncoding@}
+%<platexrelease> {UTF-8 Encoding}%
+%<platexrelease>\def\DeclareFontEncoding@#1#2#3{%
+%<platexrelease> \expandafter
+%<platexrelease> \ifx\csname T@#1\endcsname\relax
+%<platexrelease> \def\cdp@elt{\noexpand\cdp@elt}%
+%<platexrelease> \xdef\cdp@list{\cdp@list\cdp@elt{#1}%
+%<platexrelease> {\default@family}{\default@series}%
+%<platexrelease> {\default@shape}}%
+%<platexrelease> \expandafter\let\csname#1-cmd\endcsname\@changed@cmd
+%<platexrelease> \def\enc@elt{\noexpand\enc@elt}%
+%<platexrelease> \xdef\fenc@list{\fenc@list\enc@elt<#1>}%
+%<platexrelease> \else
+%<platexrelease> \@font@info{Redeclaring font encoding #1}%
+%<platexrelease> \fi
+%<platexrelease> \global\@namedef{T@#1}{#2}%
+%<platexrelease> \global\@namedef{M@#1}{\default@M#3}%
+%<platexrelease> \xdef\LastDeclaredEncoding{#1}%
+%<platexrelease> }
+%<platexrelease>\let\DeclareFontEncoding@saved\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\DeclareKanjiEncoding}
+% \begin{macro}{\DeclareYokoKanjiEncoding}
+% \begin{macro}{\DeclareYokoKanjiEncoding@}
+% \begin{macro}{\DeclareTateKanjiEncoding}
+% \begin{macro}{\DeclareTateKanjiEncoding@}
+% $BOBJ8%(%s%3!<%I$N@k8@$r$9$k%3%^%s%I$G$9!#(B
+% \changes{v1.3c}{1997/04/08}{$BOBJ8%(%s%3!<%I@k8@%3%^%s%I$r=DAHMQ$H2#AHMQ$G(B
+% $BJ,$1$k$h$&$K$7$?!#(B}
+% \begin{macrocode}
+\def\DeclareKanjiEncoding#1{%
+ \@latex@warning{%
+ The \string\DeclareKanjiEncoding\space is obsoleted command. Please use
+ \MessageBreak
+ the \string\DeclareTateKanjiEncoding\space for `Tate-kumi' encoding, and
+ \MessageBreak
+ the \string\DeclareYokoKanjiEncoding\space for `Yoko-kumi' encoding.
+ \MessageBreak
+ I treat the `#1' encoding as `Yoko-kumi'.}
+ \DeclareYokoKanjiEncoding{#1}%
+}
+\def\DeclareYokoKanjiEncoding{%
+ \begingroup
+ \nfss@catcodes
+ \expandafter\endgroup
+ \DeclareYokoKanjiEncoding@}
+%
+\def\DeclareYokoKanjiEncoding@#1#2#3{%
+ \expandafter
+ \ifx\csname T@#1\endcsname\relax
+ \def\cdp@elt{\noexpand\cdp@elt}%
+ \xdef\cdp@list{\cdp@list\cdp@elt{#1}%
+ {\default@k@family}{\default@k@series}%
+ {\default@k@shape}}%
+ \expandafter\let\csname#1-cmd\endcsname\@changed@kcmd
+ \def\enc@elt{\noexpand\enc@elt}%
+ \xdef\kyenc@list{\kyenc@list\enc@elt<#1>}%
+ \xdef\kenc@list{\kenc@list\enc@elt<#1>}%
+ \else
+ \@font@info{Redeclaring KANJI (yoko) font encoding #1}%
+ \fi
+ \global\@namedef{T@#1}{#2}%
+ \global\@namedef{M@#1}{\default@KM#3}%
+ }
+%
+\def\DeclareTateKanjiEncoding{%
+ \begingroup
+ \nfss@catcodes
+ \expandafter\endgroup
+ \DeclareTateKanjiEncoding@}
+%
+\def\DeclareTateKanjiEncoding@#1#2#3{%
+ \expandafter
+ \ifx\csname T@#1\endcsname\relax
+ \def\cdp@elt{\noexpand\cdp@elt}%
+ \xdef\cdp@list{\cdp@list\cdp@elt{#1}%
+ {\default@k@family}{\default@k@series}%
+ {\default@k@shape}}%
+ \expandafter\let\csname#1-cmd\endcsname\@changed@kcmd
+ \def\enc@elt{\noexpand\enc@elt}%
+ \xdef\ktenc@list{\ktenc@list\enc@elt<#1>}%
+ \xdef\kenc@list{\kenc@list\enc@elt<#1>}%
+ \else
+ \@font@info{Redeclaring KANJI (tate) font encoding #1}%
+ \fi
+ \global\@namedef{T@#1}{#2}%
+ \global\@namedef{M@#1}{\default@KM#3}%
+ }
+%
+\@onlypreamble\DeclareKanjiEncoding
+\@onlypreamble\DeclareYokoKanjiEncoding
+\@onlypreamble\DeclareYokoKanjiEncoding@
+\@onlypreamble\DeclareTateKanjiEncoding
+\@onlypreamble\DeclareTateKanjiEncoding@
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\DeclareKanjiEncodingDefaults}
+% $BOBJ8%(%s%3!<%I$N%G%U%)%k%HCM$r@k8@$9$k%3%^%s%I$G$9!#(B
+% \begin{macrocode}
+\def\DeclareKanjiEncodingDefaults#1#2{%
+ \ifx\relax#1\else
+ \ifx\default@KT\@empty\else
+ \@font@info{Overwriting KANJI encoding scheme text defaults}%
+ \fi
+ \gdef\default@KT{#1}%
+ \fi
+ \ifx\relax#2\else
+ \ifx\default@KM\@empty\else
+ \@font@info{Overwriting KANJI encoding scheme math defaults}%
+ \fi
+ \gdef\default@KM{#2}%
+ \fi}
+\let\default@KT\@empty
+\let\default@KM\@empty
+\@onlypreamble\DeclareKanjiEncodingDefaults
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\KanjiEncodingPair}
+% $BOBJ8$N=D2#$N%(%s%3!<%G%#%s%0$O$=$l$>$lBP$K$7$F07$&$?$a!"%;%C%H2=$9$k$?$a$N(B
+% $B%3%^%s%I$rDj5A$7$^$9!#(B
+% \changes{v1.3n}{2004/08/10}{$BOBJ8%(%s%3!<%G%#%s%0$N@Z$jBX$($rM-8z2=(B}
+% \begin{macrocode}
+\def\KanjiEncodingPair#1#2{\@namedef{t@enc@#1}{#2}\@namedef{y@enc@#2}{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\DeclareFontFamily}
+% $B2$J8%U%!%_%j$r@k8@$9$k$?$a$N%3%^%s%I$G$9!#(B
+% |\ffam@list|$B$r:n$k$h$&$K:FDj5A$r$7$^$9!#(B
+% \begin{macrocode}
+\def\DeclareFontFamily#1#2#3{%
+ \@ifundefined{T@#1}%
+ {\@latex@error{Encoding scheme `#1' unknown}\@eha}%
+ {\edef\tmp@item{{#2}}%
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\ffam@list}%
+ \ifin@ \else
+ \def\fam@elt{\noexpand\fam@elt}%
+ \xdef\ffam@list{\ffam@list\fam@elt<#2>}%
+ \fi
+ \def\reserved@a{#3}%
+ \global
+ \expandafter\let\csname #1+#2\expandafter\endcsname
+ \ifx \reserved@a\@empty
+ \@empty
+ \else \reserved@a
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DeclareKanjiFamily}
+% $BOBJ8%U%!%_%j$r@k8@$9$k$?$a$N%3%^%s%I$G$9!#(B
+% \begin{macrocode}
+\def\DeclareKanjiFamily#1#2#3{%
+ \@ifundefined{T@#1}%
+ {\@latex@error{KANJI Encoding scheme `#1' unknown}\@eha}%
+ {\edef\tmp@item{{#2}}%
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\kfam@list}%
+ \ifin@ \else
+ \def\fam@elt{\noexpand\fam@elt}%
+ \xdef\kfam@list{\kfam@list\fam@elt<#2>}%
+ \fi
+ \def\reserved@a{#3}%
+ \global
+ \expandafter\let\csname #1+#2\expandafter\endcsname
+ \ifx \reserved@a\@empty
+ \@empty
+ \else \reserved@a
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\DeclareKanjiSubstitution}
+% \begin{macro}{\DeclareErrorKanjiFont}
+% $BL\E*$NOBJ8%U%)%s%H$,8+$D$+$i$J$+$C$?$H$-$K;H$&%U%)%s%H$N@k8@$r$9$k(B
+% $B%3%^%s%I$G$9!#(B
+% $B$=$l$>$l!"(B|\DeclareFontSubstitution|$B$H(B|\DeclareErrorFont|$B$KBP1~$7$^$9!#(B
+% \begin{macrocode}
+\def\DeclareKanjiSubstitution#1#2#3#4{%
+ \expandafter\ifx\csname T@#1\endcsname\relax
+ \@latex@error{KANJI Encoding scheme `#1' unknown}\@eha
+ \else
+ \begingroup
+ \def\reserved@a{#1}%
+ \toks@{}%
+ \def\cdp@elt##1##2##3##4{%
+ \def\reserved@b{##1}%
+ \ifx\reserved@a\reserved@b
+ \addto@hook\toks@{\cdp@elt{#1}{#2}{#3}{#4}}%
+ \else
+ \addto@hook\toks@{\cdp@elt{##1}{##2}{##3}{##4}}%
+ \fi}%
+ \cdp@list
+ \xdef\cdp@list{\the\toks@}%
+ \endgroup
+ \global\@namedef{D@#1}{\def\default@family{#2}%
+ \def\default@series{#3}%
+ \def\default@shape{#4}}%
+ \fi}
+%
+\def\DeclareErrorKanjiFont#1#2#3#4#5{%
+ \xdef\error@kfontshape{%
+ \noexpand\expandafter\noexpand\split@name\noexpand\string
+ \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname
+ \noexpand\@nil}%
+ \gdef\default@k@family{#2}%
+ \gdef\default@k@series{#3}%
+ \gdef\default@k@shape{#4}%
+ \global\let\k@family\default@k@family
+ \global\let\k@series\default@k@series
+ \global\let\k@shape\default@k@shape
+ \gdef\f@size{#5}%
+ \gdef\f@baselineskip{#5pt}}
+%
+\@onlypreamble\DeclareKanjiSubstitution
+\@onlypreamble\DeclareErrorKanjiFont
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\DeclareFixedFont}
+% $B%U%)%s%HL>$r@k8@$9$k%3%^%s%I$G$9!#(B
+%
+% \changes{v1.2}{1995/11/09}{\break\cs{DeclareFixedFont}$B$NF|K\8l2=(B}
+% \changes{v1.3c}{1997/04/09}{$B=D2#%(%s%3!<%I!&%j%9%H$NJ,N%$K$h$k3HD%(B}
+% \changes{v1.3f}{1998/08/10}{$B%W%j%"%s%V%k!&%3%^%s%I$K$7$F$7$^$C$F$$$?$N$r2r=|(B}
+% \begin{macrocode}
+\def\DeclareFixedFont#1#2#3#4#5#6{%
+ \begingroup
+ \let\afont\font
+ \math@fontsfalse
+ \every@math@size{}%
+ \fontsize{#6}\z@
+ \edef\tmp@item{{#2}}%
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\kyenc@list}%
+ \ifin@
+ \usekanji{#2}{#3}{#4}{#5}%
+ \let\font\jfont
+ \else
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\ktenc@list}%
+ \ifin@
+ \usekanji{#2}{#3}{#4}{#5}%
+ \let\font\tfont
+ \else
+ \useroman{#2}{#3}{#4}{#5}%
+ \let\font\afont
+ \fi
+ \fi
+ \global\expandafter\let\expandafter#1\the\font
+ \let\font\afont
+ \endgroup
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\reDeclareMathAlphabet}
+% \changes{v1.0}{1997/01/30}{\break\cs{reDeclareMathAlphabet}$B$rDI2C!#(B
+% $B$"$j$,$H$&!"(Bymt$B$5$s!#(B}
+% \changes{v1.4}{2006/06/27}{\break\cs{reDeclareMathAlphabet}$B$r=$@5!#(B
+% $B$"$j$,$H$&!"(Bymt$B$5$s!#(B}
+% \changes{v1.5}{2006/11/10}{\break\cs{reDeclareMathAlphabet}$B$r=$@5!#(B
+% $B$"$j$,$H$&!"(Bymt$B$5$s!#(B}
+% $B?t<0%b!<%IFb$G!"?t<0J8;zMQ$NOB2$J8%U%)%s%H$rF1;~$K@Z$jBX$($k%3%^%s%I$G$9!#(B
+%
+% p\LaTeXe{}$B$K$O!"K\Mh$NF0:n%b!<%I$H(B2.09$B8_49%b!<%I$NFs$D$,$"$j!"(B
+% $BN>%b!<%I$G?t<0J8;z$rJQ99$9$k%3%^%s%I$dF0:n$,0[$J$j$^$9!#(B
+% $BK\Mh$NF0:n%b!<%I$G$O!"(B|\mathrm{...}|$B$N$h$&$K(B|\math??|$B$K0z?t$r;XDj$7$F(B
+% $B;H$$$^$9!#$3$N$H$-$O0z?t$K$@$11F6A$7$^$9!#(B2.09$B8_49%b!<%I$G$O!"(B|\rm|$B$N(B
+% $B$h$&$JFsJ8;z%3%^%s%I$r;H$$$^$9!#$3$N%3%^%s%I$K$O0z?t$r<h$i$:!"=qBN$O(B
+% $B%0%k!<%T%s%0$NHO0O$GH?1G$5$l$^$9!#FsJ8;z%3%^%s%I$O!"%M%$%F%#%V%b!<%I(B
+% $B$G$b;H$($k$h$&$K$J$C$F$$$F!"F0:n$b(B2.09$B8_49%b!<%I$N%3%^%s%I$HF1$8$G$9!#(B
+%
+% $B$7$+$7!"FbItE*$K$O(B|\math??|$B$H$$$&0l$D$N%3%^%s%I$,$9$Y$F$NF0:n$r<u$1;}$A!"(B
+% |\math??|$B%3%^%s%I$d(B|\??|$B%3%^%s%I$+$i8F$S=P$5$l$?>uBV$K1~$8$F!"F0:n$rJQ$((B
+% $B$F$$$^$9!#$7$?$,$C$F!"2$J8%U%)%s%H$HOBJ8%U%)%s%H$NN>J}$r0lEY$KJQ99$9$k!"(B
+% $B?t<0J8;zJQ99%3%^%s%I$r:n$k$H$-!"$=$l$>$l$N>uBV$K9g$C$?F0:n$GF0$/$h$&$K(B
+% $B%U%)%s%H@Z$jBX$(%3%^%s%I$r<B9T$5$;$kI,MW$,$"$j$^$9!#(B
+%
+% \textbf{$B;H$$J}(B}
+%\begin{verbatim}
+% usage: \reDeclareMathAlphabet{\mathAA}{\mathBB}{\mathCC}
+%\end{verbatim}
+% $B2$J8!&OBJ8N>MQ$N?t<0J8;zJQ99%3%^%s%I(B |\mathAA| $B$r(B($B:F(B)$BDj5A$7$^$9!#(B
+% $B2$J8MQ$N%3%^%s%I(B |\mathBB| $B$H!"OBJ8MQ$N(B |\mathCC| $B$r(B (p)\LaTeX{} $BI8=`$N(B
+% $BJ}K!$GDj5A$7$F$*$$$?8e!">e$N$h$&$K5-=R$7$^$9!#$J$*!"(B|{\mathBB}{\mathCC}|
+% $B$NItJ,$K$D$$$F$O(B |{\@mathBB}{\@mathCC}| $B$N$h$&$K(B @ $B$r$D$1$?5-=R(B
+% $B$r$7$F$b$+$^$$$^$;$s(B($B8_49@-$N$?$a(B)$B!#>e$N$h$&$JL?Na$rH/9T$9$k$H!"(B
+% |\mathAA| $B$,!"2$J8$KBP$7$F$O(B |\mathBB|$B!"(B $BOBJ8$KBP$7$F$O(B |\mathCC| $B$N0UL#$r(B
+% $B;}$D$h$&$K$J$j$^$9!#(B
+% $BDL>o$O!"(B|\reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}| $B$N$h$&$K(B
+% |AA=BB| $B$H$7$FMQ$$$^$9!#$^$?!"(B|\mathrm| $B$O(B \LaTeX{} kernel $B$K$*$$$F(B
+% $BI8=`$N%3%^%s%I$H$7$F4{$KDj5A$5$l$F$$$k$N$G!"$3$N>l9g$O(B |\mathrm| $B$N(B
+% $B:FDj5A$H$J$j$^$9!#(Bnative mode $B$G$N(B |\rm| $B$N$h$&$J(B two letter command
+% (old font command) $B$KBP$7$F$bF1MM$J$3$H$,0z$-$*$3$j$^$9!#$D$^$j!"(B
+% $B?t<0%b!<%I$K$*$$$F!"?7$?$J(B |\rm| $B$O!"(B\LaTeX{} original $B$N(B |\rm| $B$H(B |\mc|
+% ($B@53N$K8@$($P(B |\mathrm| $B$H(B |\mathmc| $B$G$"$k$,(B)$B$N0UL#$r9g$o$;;}$D$h$&$K(B
+% $B$J$j$^$9!#(B
+%
+% \textbf{$BJdB-(B}
+% \begin{itemize}
+% \item
+% |\mathAA| $B$r:FDj5A$9$kB>$NL?Na(B(|\DeclareSymbolFontAlphabet| $B$rMQ$$$k(B
+% $B%Q%C%1!<%8$N;HMQEy(B)$B$H$N>WFM$rHr$1$k$?$a$K$O!"(B|\AtBeginDocument| $B$rJ;MQ(B
+% $B$9$k$J$I$7$FE83+0LCV$N@)8f$r9T$C$F$/$@$5$$!#(B
+% \item
+% $B%F%-%9%H%b!<%I;~$N%(%i!<I=<(MQ$K(B |\mathBB| $B$N$_$rMQ$$$k$3$H$r=|$$$F!"(B
+% |\mathBB| $B$H(B |\mathCC| $B$N=g$O<B:]$K$O0UL#$r;}$A$^$;$s!#OBJ8!"2$J8$N=g$K(B
+% $BDj5A$7$F$bLdBj$O$"$j$^$;$s!#(B
+% \item
+% $BBh(B2,3$B0z$-?t$K$O(B |{\@mathBB}{\@mathCC}| $B$N$h$&$K(B |@| $B$r$D$1$?5-=R$b(B
+% $B9T$($^$9!#$?$@$7!"7A<0$OE}0l$7$F$/$@$5$$!#H=CG$OBh(B2$B0z$-?t$G9T$C$F(B
+% $B$$$k$?$a!"(B |{\@mathBB}{\mathCC}| $B$N$h$&$J5-=R$G$O$&$^$/F0:n$7$^$;$s!#(B
+% $B$^$?!"(B|\makeatletter| $B$J>uBV$G(B |{\@mathBB }{\@mathCC }| $B$N$h$&$J(B |@| $B$H(B
+% $BM>J,$J%9%Z!<%9$r$D$1$?>l9g$K$OL58B%k!<%W$r0z$-5/$3$9$3$H$,$"$j$^$9!#(B
+% $B$3$N$h$&$J5-=R$OHr$1$k$h$&$K$7$F2<$5$$!#(B
+% \item
+% |\reDeclareMathAlphabet| $B$r<B9T$9$k:]$K$O!"(B|\mathBB|, |\mathCC| $B$,Dj5A(B
+% $B$5$l$F$$$kI,MW$O$"$j$^$;$s!#<B:]$K(B |\mathAA| $B$rMQ$$$k:]$K$O$3$l$i$N(B
+% |\mathBB|, |\mathCC| $B$,(B (p)\LaTeX{}$BI8=`$NJ}K!$GDj5A$5$l$F$$$kI,MW$,$"$j$^$9!#(B
+% \item
+% $BB>$NItJ,$G(B |\mathAA| $B$rA4$/Dj5A$7$J$$>l9g$r=|$-!"(B|\mathAA| $B$O(B
+% |\reDeclareMathAlphabet| $B$r<B9T$9$k0JA0$G(B (p)\LaTeX{}$BI8=`$NJ}K!$GDj5A$5$l(B
+% $B$F$$$kI,MW$,$"$j$^$9(B(|\mathrm| $B$d(B |\mathbf| $B$NI8=`E*$J%3%^%s%I$O!"(B
+% \LaTeX{} kernel $B$G4{$KDj5A$5$l$F$$$^$9(B)$B!#(B
+% |\DeclareMathAlphabet| $B$N>l9g$K$O!"(B|\reDeclareMathAlphabet| $B$h$j$bA0$G(B1$BEY(B
+% |\mathAA| $B$rDj5A$7$F$"$l$P!"(B|\reDeclareMathAlphabet| $B$N8e$m$G:FEY(B
+% |\DeclareMathAlphabet| $B$rMQ$$$F(B |\mathAA| $B$NFbIt$NDj5AFbMF$rJQ99$9$k$3$H(B
+% $B$K$OLdBj$"$j$^$;$s!#(B
+% |\DeclareSymbolFontAlphabet| $B$N>l9g!":FDj5A$K$*$$$F$b(B |\mathAA| $B$,D>@\(B
+% $BDj5A$5$l$k$N$G!"(B|\mathAA| $B$KBP$9$k:G8e$N(B |\DeclareSymbolFontAlphabet| $B$N(B
+% $B$5$i$K8e$G(B |\reDeclareMathAlphabet| $B$r<B9T$7$J$1$l$PM-8z$H$O$J$j$^$;$s!#(B
+% \item
+% |\documentstyle| $B$N8_49%b!<%I$N>l9g!"(B|\rm| $BEy$N(B two letter command
+% (old font command) $B$O!"(B|\reDeclareMathAlphabet| $B$H$O4XO"$9$k$3$H$N$J$$(B
+% $BJL8D$N%3%^%s%I$H$7$FDj5A$5$l$^$9!#=>$C$F!"$3$N>l9g$K$O(B
+% |\reDeclareMathAlphabet| $B$rMQ$$$F$b(B |\rm| $BEy$O?t<0%b!<%I$K$*$$$F(B
+% $B2$J8!&OBJ8N>MQ$N$b$N$H$O$J$j$^$;$s!#(B
+% \end{itemize}
+% \begin{macrocode}
+\def\reDeclareMathAlphabet#1#2#3{%
+ \edef#1{\noexpand\protect\expandafter\noexpand\csname%
+ \expandafter\@gobble\string#1\space\space\endcsname}%
+ \edef\@tempa{\expandafter\@gobble\string#2}%
+ \edef\@tempb{\expandafter\@gobble\string#3}%
+ \edef\@tempc{\string @\expandafter\@gobbletwo\string#2}%
+ \ifx\@tempc\@tempa%
+ \edef\@tempa{\expandafter\@gobbletwo\string#2}%
+ \edef\@tempb{\expandafter\@gobbletwo\string#3}%
+ \fi
+ \expandafter\edef\csname\expandafter\@gobble\string#1\space\space\endcsname%
+ {\noexpand\DualLang@mathalph@bet%
+ {\expandafter\noexpand\csname\@tempa\space\endcsname}%
+ {\expandafter\noexpand\csname\@tempb\space\endcsname}%
+ }%
+}
+\@onlypreamble\reDeclareMathAlphabet
+\def\DualLang@mathalph@bet#1#2{%
+ \relax\ifmmode
+ \ifx\math@bgroup\bgroup% 2e normal style (\mathrm{...})
+ \bgroup\let\DualLang@Mfontsw\DLMfontsw@standard
+ \else
+ \ifx\math@bgroup\relax% 2e two letter style (\rm->\mathrm)
+ \let\DualLang@Mfontsw\DLMfontsw@oldstyle
+ \else
+ \ifx\math@bgroup\@empty% 2.09 oldlfont style ({\mathrm ...})
+ \let\DualLang@Mfontsw\DLMfontsw@oldlfont
+ \else% panic! assume 2e normal style
+ \bgroup\let\DualLang@Mfontsw\DLMfontsw@standard
+ \fi
+ \fi
+ \fi
+ \else
+ \let\DualLang@Mfontsw\@firstoftwo
+ \fi
+ \DualLang@Mfontsw{#1}{#2}%
+}
+\def\DLMfontsw@standard#1#2#3{#1{#2{#3}}\egroup}
+\def\DLMfontsw@oldstyle#1#2{#1\relax\@fontswitch\relax{#2}}
+\def\DLMfontsw@oldlfont#1#2{#1\relax#2\relax}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\DeclareRelationFont}
+% \begin{macro}{\SetRelationFont}
+% $BOBJ8=qBN$KBP$9$k=>B0=qBN$r@k8@$9$k%3%^%s%I$G$9!#(B\emph{$B=>B0=qBN(B}$B$H$O!"(B
+% $B$"$kOBJ8=qBN$H%Z%"$K$J$k2$J8=qBN$N$3$H$G$9!#(B
+% $B<g$KB?=qBN%Q%C%1!<%8(B|skfonts|$B$rMQ$$$k$?$a$N;EAH$_$G$9!#(B
+%
+% |\DeclareRelationFont|$B%3%^%s%I$N:G=i$N(B4$B$D$N0z?t$NAH$,OBJ8=qBN$NB0@-!"(B
+% $B$=$N8e$N(B4$B$D$N0z?t$NAH$,=>B0=qBN$NB0@-$G$9!#(B
+%\begin{verbatim}
+% \DeclareRelationFont{JY1}{mc}{m}{n}{OT1}{cmr}{m}{n}
+% \DeclareRelationFont{JY1}{gt}{m}{n}{OT1}{cmr}{bx}{n}
+%\end{verbatim}
+% $B>e5-$NNc$O!"L@D+BN$N=>B0=qBN$H$7$F%3%s%T%e!<%?%b%@%s%m!<%^%s!"(B
+% $B%4%7%C%/BN$N=>B0=qBN$H$7$F%3%s%T%e!<%?%b%@%s%\!<%k%I$r@k8@$7$F$$$^$9!#(B
+% $B%+%l%s%HOBJ8=qBN$,(B|\JY1/mc/m/n|$B$H$J$k$H!"(B
+% $B<+F0E*$K2$J8=qBN$,(B|\OT1/cmr/m/n|$B$K$J$j$^$9!#(B
+% $B$^$?!"OBJ8=qBN$,(B|\JY1/gt/m/n|$B$K$J$C$?$H$-$O!"(B
+% $B2$J8=qBN$,(B|\OT1/cmr/bx/n|$B$K$J$j$^$9!#(B
+%
+% $BOBJ8=qBN$N%7%'%$%W;XDj$r>JN,$9$k$H%(%s%3!<%I!?%U%!%_%j!?%7%j!<%:$NAH9g$;$G(B
+% $B=>B0=qBN$,;H$o$l$^$9!#$3$N$H$-$O!"(B|\selectfont|$B$,8F$S=P$5$l$?;~E@$G$N(B
+% $B%7%'%$%W!J(B|\f@shape|$B!K$NCM$,;H$o$l$^$9!#(B
+%
+% |\DeclareRelationFont|$B$N@_DjCM$O%0%m!<%P%k$KM-8z$G$9!#(B
+% |\SetRelationFont|$B$N@_DjCM$O%m!<%+%k$KM-8z$G$9!#(B
+% $B%U%)%s%HDj5A%U%!%$%k$G@k8@$r$9$k>l9g$O!"(B
+% |\DeclareRelationFont|$B$r;H$C$F$/$@$5$$!#(B
+% \begin{macrocode}
+\def\all@shape{all}%
+\def\DeclareRelationFont#1#2#3#4#5#6#7#8{%
+ \def\rel@shape{#4}%
+ \ifx\rel@shape\@empty
+ \global
+ \expandafter\def\csname rel@#1/#2/#3/all\endcsname{%
+ \romanencoding{#5}\romanfamily{#6}%
+ \romanseries{#7}}%
+ \else
+ \global
+ \expandafter\def\csname rel@#1/#2/#3/#4\endcsname{%
+ \romanencoding{#5}\romanfamily{#6}%
+ \romanseries{#7}\romanshape{#8}}%
+ \fi
+}
+\def\SetRelationFont#1#2#3#4#5#6#7#8{%
+ \def\rel@shape{#4}%
+ \ifx\rel@shape\@empty
+ \expandafter\def\csname rel@#1/#2/#3/all\endcsname{%
+ \romanencoding{#5}\romanfamily{#6}%
+ \romanseries{#7}}%
+ \else
+ \expandafter\def\csname rel@#1/#2/#3/#4\endcsname{%
+ \romanencoding{#5}\romanfamily{#6}%
+ \romanseries{#7}\romanshape{#8}}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\if@knjcmd}
+% \begin{macro}{\userelfont}
+% |\if@knjcmd|$B$O2$J8=qBN$r=>B0=qBN$K$9$k$+$I$&$+$N%U%i%0$G$9!#(B
+% $B$3$N%U%i%0$,??$K$J$k$H!"2$J8=qBN$K=>B0=qBN$,;H$o$l$^$9!#(B
+% $B$3$N%U%i%0$O(B|\userelfont|$B%3%^%s%I$K$h$C$F!"(B\emph{$B??(B}$B$H$J$j$^$9!#(B
+% $B$=$7$F(B|\selectfont|$B<B9T8e$K$O(B\emph{$B56(B}$B$K=i4|2=$5$l$^$9!#(B
+% \begin{macrocode}
+\newif\if@knjcmd
+\def\userelfont{\@knjcmdtrue}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\selectfont}
+% |\selectfont|$B$N%*%j%8%J%k$+$i$NJQ99ItJ,$O!"<!$N#3E@$G$9!#(B
+% \begin{itemize}
+% \item $BOBJ8=qBN$rJQ99$9$kItJ,(B
+% \item $B=>B0=qBN$KJQ99$9$kItJ,(B
+% \item $BOB2$J8$N%Y!<%9%i%$%s$rD4@0$9$kItJ,(B
+% \end{itemize}
+%
+% \changes{v1.0c}{1995/08/22}{$B=D2#N>J}$N%U%)%s%H$r@Z$jBX$($k$h$&$K$7$?(B}
+% \changes{v1.2}{1995/11/22}{$B%(%i!<%U%)%s%H$KBP1~$7$?(B}
+% \changes{v1.3n}{2004/08/10}{$BOBJ8%(%s%3!<%G%#%s%0$N@Z$jBX$($rM-8z2=(B}
+% |\selectfont|$B%3%^%s%I$O!"$^$:!"OBJ8%U%)%s%H$r@Z$jBX$($^$9!#(B
+% \begin{macrocode}
+%</plcore>
+%<*plcore|trace>
+\DeclareRobustCommand\selectfont{%
+ \let\tmp@error@fontshape\error@fontshape
+ \let\error@fontshape\error@kfontshape
+ \edef\tmp@item{{\k@encoding}}%
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\kyenc@list}%
+ \ifin@
+ \let\cy@encoding\k@encoding
+ \edef\ct@encoding{\csname t@enc@\k@encoding\endcsname}%
+ \else
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\ktenc@list}%
+ \ifin@
+ \let\ct@encoding\k@encoding
+ \edef\cy@encoding{\csname y@enc@\k@encoding\endcsname}%
+ \else
+ \@latex@error{KANJI Encoding scheme `\k@encoding' unknown}\@eha
+ \fi
+ \fi
+ \let\font\tfont
+ \let\k@encoding\ct@encoding
+ \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}%
+ \pickup@font
+ \font@name
+ \let\font\jfont
+ \let\k@encoding\cy@encoding
+ \xdef\font@name{\csname\curr@kfontshape/\f@size\endcsname}%
+ \pickup@font
+ \font@name
+ \expandafter\def\expandafter\k@encoding\tmp@item
+ \kenc@update
+ \let\error@fontshape\tmp@error@fontshape
+% \end{macrocode}
+% $B<!$K!"(B|\if@knjcmd|$B$,??$N>l9g!"(B
+% $B2$J8=qBN$r8=:_$NOBJ8=qBN$K4XO"IU$1$5$l$?%U%)%s%H$KJQ$($^$9!#(B
+% $B$3$N%U%i%0$O(B|\userelfont|$B%3%^%s%I$K$h$C$F(B\emph{$B??(B}$B$H$J$j$^$9!#(B
+% $B$3$N%U%i%0$O$3$3$G:F$S!"(B\emph{$B56(B}$B$K@_Dj$5$l$^$9!#(B
+% \begin{macrocode}
+ \if@knjcmd \@knjcmdfalse
+ \expandafter\ifx
+ \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname\relax
+ \expandafter\ifx
+ \csname rel@\k@encoding/\k@family/\k@series/all\endcsname\relax
+ \else
+ \csname rel@\k@encoding/\k@family/\k@series/all\endcsname
+ \fi
+ \else
+ \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname
+ \fi
+ \fi
+% \end{macrocode}
+% $B$=$7$F!"2$J8%U%)%s%H$r@Z$jBX$($^$9!#(B
+% \begin{macrocode}
+ \let\font\afont
+ \xdef\font@name{\csname\curr@fontshape/\f@size\endcsname}%
+ \pickup@font
+ \font@name
+%<trace> \ifnum \tracingfonts>\tw@
+%<trace> \@font@info{Roman:Switching to \font@name}\fi
+ \enc@update
+% \end{macrocode}
+% $B:G8e$K!"%5%$%:$,JQ99$5$l$F$$$l$P!"%Y!<%9%i%$%s$ND4@0$J$I$r9T$J$$$^$9!#(B
+% $B1Q8lHG$N(B|\selectfont|$B$G$O:G=i$K9T$J$C$F$$$^$9$,!"(B
+% p\LaTeXe{}$B$G$O%Y!<%9%i%$%s%7%U%H$ND4@0$r$9$k$?$a$K!"(B
+% $B=qBN$r3NDj$7$J$1$l$P$J$i$J$$$?$a!"0lHV:G8e$K9T$J$$$^$9(B
+%
+% \changes{v1.1b}{1995/04/26}{$B%Y!<%9%i%$%s$ND4@0$r%5%$%:JQ99;~$K(B
+% $B9T$J$&$h$&$K$7$?(B}
+% \begin{macrocode}
+ \ifx\f@linespread\baselinestretch \else
+ \set@fontsize\baselinestretch\f@size\f@baselineskip
+ \fi
+ \size@update}
+%</plcore|trace>
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\set@fontsize}
+% |\fontsize|$B%3%^%s%I$NFbIt7A<0$G$9!#(B
+% $B%Y!<%9%i%$%s$N@_Dj$H!";YCl$N@_Dj$r9T$J$$$^$9!#(B
+% \begin{macrocode}
+%</plcore>
+%<platexrelease|trace>\plIncludeInRelease{2017/04/08}{\set@fontsize}
+%<platexrelease|trace> {Construct \ystrutbox}%
+%<*plcore|platexrelease|trace>
+\def\set@fontsize#1#2#3{%
+ \@defaultunits\@tempdimb#2pt\relax\@nnil
+ \edef\f@size{\strip@pt\@tempdimb}%
+ \@defaultunits\@tempskipa#3pt\relax\@nnil
+ \edef\f@baselineskip{\the\@tempskipa}%
+ \edef\f@linespread{#1}%
+ \let\baselinestretch\f@linespread
+ \def\size@update{%
+ \baselineskip\f@baselineskip\relax
+ \baselineskip\f@linespread\baselineskip
+ \normalbaselineskip\baselineskip
+% \end{macrocode}
+% $B$3$3$G!"%Y!<%9%i%$%s%7%U%H$ND4@0$H;YCl$rAH$_N)$F$^$9!#(B
+% \changes{v1.6f}{2017/02/20}{\cs{ystrutbox}$B$rAH$_N)$F$k$h$&$K(B}
+% \begin{macrocode}
+ \adjustbaseline
+ \setbox\ystrutbox\hbox{\yoko
+ \vrule\@width\z@
+ \@height.7\baselineskip \@depth.3\baselineskip}%
+ \setbox\tstrutbox\hbox{\tate
+ \vrule\@width\z@
+ \@height.5\baselineskip \@depth.5\baselineskip}%
+ \setbox\zstrutbox\hbox{\tate
+ \vrule\@width\z@
+ \@height.7\baselineskip \@depth.3\baselineskip}%
+% \end{macrocode}
+% $B%U%)%s%H%5%$%:$H%Y!<%9%i%$%s$K4X$9$k?GCG>pJs$r=PNO$7$^$9!#(B
+% \begin{macrocode}
+%<*trace>
+ \ifnum \tracingfonts>\tw@
+ \ifx\f@linespread\@empty
+ \let\reserved@a\@empty
+ \else
+ \def\reserved@a{\f@linespread x}%
+ \fi
+ \@font@info{Changing size to\space
+ \f@size/\reserved@a \f@baselineskip}%
+ \aftergroup\type@restoreinfo
+ \fi
+%</trace>
+ \let\size@update\relax}}
+%</plcore|platexrelease|trace>
+%<platexrelease|trace>\plEndIncludeInRelease
+%<platexrelease|trace>\plIncludeInRelease{0000/00/00}{\set@fontsize}
+%<platexrelease|trace> {Construct \ystrutbox}%
+%<platexrelease|trace>\def\set@fontsize#1#2#3{%
+%<platexrelease|trace> \@defaultunits\@tempdimb#2pt\relax\@nnil
+%<platexrelease|trace> \edef\f@size{\strip@pt\@tempdimb}%
+%<platexrelease|trace> \@defaultunits\@tempskipa#3pt\relax\@nnil
+%<platexrelease|trace> \edef\f@baselineskip{\the\@tempskipa}%
+%<platexrelease|trace> \edef\f@linespread{#1}%
+%<platexrelease|trace> \let\baselinestretch\f@linespread
+%<platexrelease|trace> \def\size@update{%
+%<platexrelease|trace> \baselineskip\f@baselineskip\relax
+%<platexrelease|trace> \baselineskip\f@linespread\baselineskip
+%<platexrelease|trace> \normalbaselineskip\baselineskip
+%<platexrelease|trace> \adjustbaseline
+%<platexrelease|trace> \setbox\strutbox\hbox{\yoko
+%<platexrelease|trace> \vrule\@width\z@
+%<platexrelease|trace> \@height.7\baselineskip \@depth.3\baselineskip}%
+%<platexrelease|trace> \setbox\tstrutbox\hbox{\tate
+%<platexrelease|trace> \vrule\@width\z@
+%<platexrelease|trace> \@height.5\baselineskip \@depth.5\baselineskip}%
+%<platexrelease|trace> \setbox\zstrutbox\hbox{\tate
+%<platexrelease|trace> \vrule\@width\z@
+%<platexrelease|trace> \@height.7\baselineskip \@depth.3\baselineskip}%
+%<*trace>
+%<platexrelease|trace> \ifnum \tracingfonts>\tw@
+%<platexrelease|trace> \ifx\f@linespread\@empty
+%<platexrelease|trace> \let\reserved@a\@empty
+%<platexrelease|trace> \else
+%<platexrelease|trace> \def\reserved@a{\f@linespread x}%
+%<platexrelease|trace> \fi
+%<platexrelease|trace> \@font@info{Changing size to\space
+%<platexrelease|trace> \f@size/\reserved@a \f@baselineskip}%
+%<platexrelease|trace> \aftergroup\type@restoreinfo
+%<platexrelease|trace> \fi
+%</trace>
+%<platexrelease|trace> \let\size@update\relax}}
+%<platexrelease|trace>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\adjustbaseline}
+% $B8=:_$NOBJ8%U%)%s%H$N6uGr!J(BEUC$B%3!<%I(B\texttt{0xA1A1}$B!K$NCf1{$K(B
+% $B8=:_$N2$J8%U%)%s%H$N(B``/''$B$NCf1{$,$/$k$h$&$K%Y!<%9%i%$%s%7%U%H$r@_Dj$7$^$9!#(B
+% \changes{v1.0c}{1995/08/31}{$B2$J8=qBN$N4p=`$r(B`M'$B$+$i(B`/'$B$KJQ99(B}
+% \changes{v1.2}{1995/11/21}{$B=DAH;~$N$_D4@0$9$k$h$&$K$7$?(B}
+%
+% $BEv=i$O$^$:%Y!<%9%i%$%s%7%U%HNL$r%<%m$K$7$F$$$^$7$?$,!"(B
+% \cs{tbaselineshift}$B$rO"B3$7$FJQ99$7$?8e$K3C3g8LN`$r;H$&$HM>7W$J%"%-$,(B
+% $B$G$kLdBj$,5/$3$k$?$a!"(B\cs{tbaselineshift}$B$r%<%m%/%j%"$9$k=hM}$r:o=|$7(B
+% $B$^$7$?!#(B
+% \changes{v1.3j}{2000/10/24}{$BJ8F,$K3C3g8L$J$I$,$"$k$H$-$KM>7W$J%"%-$,$G(B
+% $B$kLdBj$KBP=h(B}
+%
+% $B$7$+$7!"$=$l$G$O%Y!<%9%i%$%s%7%U%H$rD4@0:Q$_$N2$J8%\%C%/%9$HHf3S$7$F(B
+% $B$7$^$&$?$a!"7W;;$7$?CM$,Bg$-$/$J$C$F$7$^$$$^$9!#$=$3$G!"$3$N%\%C%/%9(B
+% $B$NCf$G%<%m$K$9$k$h$&$K$7$^$7$?!#$^$?!"(B``/''$B$HHf3S$7$F$$$?$N$r(B``M''$B$K(B
+% $B$7$^$7$?!#(B
+% \changes{v1.3k}{2001/05/10}{$B2$J8=qBN$N4p=`$r:F$S(B`/`$B$+$i(B`M'$B$KJQ99(B}
+% \changes{v1.3l}{2002/04/05}{\cs{adjustbaseline}$B$G%U%)%s%H$N4p=`CM$,=D=q$-(B
+% $B0J30$G$O@_Dj$5$l$J$$$N$r=$@5(B}
+%
+% $BA43Q6uGr!J(BEUC$B%3!<%I(B\texttt{0xA1A1}$B!K$O(BJFM$B$GFC<l$J%?%$%W$KJ,N`$5$l$k2DG=@-(B
+% $B$,$"$k$?$a!"OBJ8=qBN$N4p=`$r!V4A!W!J(BJIS$B%3!<%I(B\texttt{0x3441}$B!K$XJQ99$7$^$7$?!#(B
+% \changes{v1.6h}{2017/08/05}{$BOBJ8=qBN$N4p=`$rA43Q6uGr$+$i!V4A!W$KJQ99(B}
+%
+% \begin{macrocode}
+\newbox\adjust@box
+\newdimen\adjust@dimen
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</plcore>
+%<platexrelease|trace>\plIncludeInRelease{2017/07/29}{\adjustbaseline}
+%<platexrelease|trace> {Change zenkaku reference}%
+%<*plcore|platexrelease|trace>
+\def\adjustbaseline{%
+% \end{macrocode}
+% $BOBJ8%U%)%s%H$N4p=`CM$r@_Dj$7$^$9!#(B
+% \begin{macrocode}
+ \setbox\adjust@box\hbox{\char\jis"3441}%"
+ \cht\ht\adjust@box
+ \cdp\dp\adjust@box
+ \cwd\wd\adjust@box
+ \cvs\normalbaselineskip
+ \chs\cwd
+ \cHT\cht \advance\cHT\cdp
+% \end{macrocode}
+% $B4p=`$H$J$k2$J8%U%)%s%H$NJ8;z$r4^$s$@%\%C%/%9$r:n@.$7!"(B
+% $B%Y!<%9%i%$%s%7%U%HNL$N7W;;$r9T$J$$$^$9!#(B
+% $B7W;;<0$O<!$N$H$*$j$G$9!#(B
+%
+% \begin{eqnarray*}
+% \textmc{$B%Y!<%9%i%$%s%7%U%HNL(B} &=&
+% \{ (\textmc{$B4A$N?<$5(B}) - (\textmc{M$B$N?<$5(B}) \} \\
+% &&- \frac{(\textmc{$B4A$N9b$5(B$+$$B?<$5(B})
+% - (\textmc{M$B$N9b$5(B$+$$B?<$5(B})}{2}
+% \end{eqnarray*}
+% \changes{v1.6h}{2017/08/05}{trace$B$N%3!<%I$N(B\texttt{\%}$BK:$l$r=$@5(B}
+%
+% \begin{macrocode}
+ \iftdir
+ \setbox\adjust@box\hbox{\tbaselineshift\z@ M}%
+ \adjust@dimen\ht\adjust@box
+ \advance\adjust@dimen\dp\adjust@box
+ \advance\adjust@dimen-\cHT
+ \divide\adjust@dimen\tw@
+ \advance\adjust@dimen\cdp
+ \advance\adjust@dimen-\dp\adjust@box
+ \tbaselineshift\adjust@dimen
+%<trace> \ifnum \tracingfonts>\tw@
+%<trace> \typeout{baselineshift:\the\tbaselineshift}%
+%<trace> \fi
+ \fi}
+%</plcore|platexrelease|trace>
+%<platexrelease|trace>\plEndIncludeInRelease
+%<platexrelease|trace>\plIncludeInRelease{0000/00/00}{\adjustbaseline}
+%<platexrelease|trace> {Change zenkaku reference}%
+%<platexrelease|trace>\def\adjustbaseline{%
+%<platexrelease|trace> \setbox\adjust@box\hbox{\char\euc"A1A1}%"
+%<platexrelease|trace> \cht\ht\adjust@box
+%<platexrelease|trace> \cdp\dp\adjust@box
+%<platexrelease|trace> \cwd\wd\adjust@box
+%<platexrelease|trace> \cvs\normalbaselineskip
+%<platexrelease|trace> \chs\cwd
+%<platexrelease|trace> \cHT\cht \advance\cHT\cdp
+%<platexrelease|trace> \iftdir
+%<platexrelease|trace> \setbox\adjust@box\hbox{\tbaselineshift\z@ M}%
+%<platexrelease|trace> \adjust@dimen\ht\adjust@box
+%<platexrelease|trace> \advance\adjust@dimen\dp\adjust@box
+%<platexrelease|trace> \advance\adjust@dimen-\cHT
+%<platexrelease|trace> \divide\adjust@dimen\tw@
+%<platexrelease|trace> \advance\adjust@dimen\cdp
+%<platexrelease|trace> \advance\adjust@dimen-\dp\adjust@box
+%<platexrelease|trace> \tbaselineshift\adjust@dimen
+%<*trace>
+%<platexrelease|trace> \ifnum \tracingfonts>\tw@
+%<platexrelease|trace> \typeout{baselineshift:\the\tbaselineshift}
+%<platexrelease|trace> \fi
+%</trace>
+%<platexrelease|trace> \fi}
+%<platexrelease|trace>\plEndIncludeInRelease
+%<*plcore>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\romanencoding}
+% \begin{macro}{\kanjiencoding}
+% \begin{macro}{\fontencoding}
+% $B=qBN$N%(%s%3!<%I$r;XDj$9$k%3%^%s%I$G$9!#(B
+% |\fontencoding|$B%3%^%s%I$OOB2$J8$N$I$A$i$+$K1F6A$7$^$9!#(B
+% |\DeclareKanjiEncoding|$B$G;XDj$5$l$?%(%s%3!<%I$OOBJ8%(%s%3!<%I$H$7$F!"(B
+% |\DeclareFontEncoding|$B$G;XDj$5$l$?%(%s%3!<%I$O2$J8%(%s%3!<%I$H$7$F(B
+% $BG'<1$5$l$^$9!#(B
+%
+% |\kanjiencoding|$B$H(B|\romanencoding|$B$OM?$($i$l$?0z?t$,!"(B
+% $B%(%s%3!<%I$H$7$FEPO?$5$l$F$$$k$+$I$&$+$@$1$r3NG'$7!"(B
+% $B$=$l$,OBJ8$+2$J8$+$N%A%'%C%/$O9T$J$C$F$$$^$;$s!#(B
+% $B$=$N$?$a!"9bB.$KF0:n$r$7$^$9$,!"(B|\kanjiencoding|$B$K2$J8%(%s%3!<%I$r;XDj$7$?$j!"(B
+% $B5U$K(B|\romanencoding|$B$KOBJ8%(%s%3!<%I$r;XDj$7$?>l9g$O%(%i!<$H$J$j$^$9!#(B
+% \begin{macrocode}
+\DeclareRobustCommand\romanencoding[1]{%
+ \expandafter\ifx\csname T@#1\endcsname\relax
+ \@latex@error{Encoding scheme `#1' unknown}\@eha
+ \else
+ \edef\f@encoding{#1}%
+ \ifx\cf@encoding\f@encoding
+ \let\enc@update\relax
+ \else
+ \let\enc@update\@@enc@update
+ \fi
+ \fi
+}
+\DeclareRobustCommand\kanjiencoding[1]{%
+ \expandafter\ifx\csname T@#1\endcsname\relax
+ \@latex@error{KANJI Encoding scheme `#1' unknown}\@eha
+ \else
+ \edef\k@encoding{#1}%
+ \ifx\ck@encoding\k@encoding
+ \let\kenc@update\relax
+ \else
+ \let\kenc@update\@@kenc@update
+ \fi
+ \fi
+}
+\DeclareRobustCommand\fontencoding[1]{%
+ \edef\tmp@item{{#1}}%
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\kenc@list}%
+ \ifin@ \kanjiencoding{#1}\else\romanencoding{#1}\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@kenc@update}
+% |\kanjiencoding|$B%3%^%s%I$N%3!<%I$+$i$b$o$+$k$h$&$K!"(B
+% |\ck@encoding|$B$H(B|\k@encoding|$B$,0[$J$k>l9g!"(B
+% |\kenc@update|$B%3%^%s%I$O(B|\@@kenc@update|$B%3%^%s%I$HEy$7$/$J$j$^$9!#(B
+%
+% |\@@kenc@update|$B%3%^%s%I$O!"$=$N%(%s%3!<%I$G$N%G%U%)%k%HCM$r@_Dj$9$k$?$a$N(B
+% $B%3%^%s%I$G$9!#2$J8MQ$N(B|\@@enc@update|$B%3%^%s%I$G$O!"(B
+% \mlineplus{2}$B9TL\$H(B\mlineplus{3}$B9TL\$N$h$&$JBeF~$b$7$F$$$^$9$,!"(B
+% $BOBJ8MQ$K$O%3%a%s%H$K$7$F$"$j$^$9!#(B
+% $B$3$l$i$O(B|\DeclareTextCommand|$B$d(B|\ProvideTextCommand|$B$J$I$G(B
+% $B%(%s%3!<%I$4$H$K@_Dj$5$l$k%3%^%s%I$r;H$&$?$a$N;EAH$_$G$9!#(B
+% $B$7$+$7!"OBJ8%(%s%3!<%I$K0MB8$9$k$h$&$J%3%^%s%I$d%^%/%m$r:n@.$9$k$3$H$O!"(B
+% $B8=;~E@$G$O!"$J$$$H;W$$$^$9!#(B
+%
+% \changes{v1.0c}{1995/08/22}{$B=D2#MQ%(%s%3!<%I$NJ]B8(B}
+% \begin{macrocode}
+\def\@@kenc@update{%
+% \expandafter\let\csname\ck@encoding -cmd\endcsname\@changed@kcmd
+% \expandafter\let\csname\k@encoding-cmd\endcsname\@current@cmd
+ \default@KT
+ \csname T@\k@encoding\endcsname
+ \csname D@\k@encoding\endcsname
+ \let\kenc@update\relax
+ \let\ck@encoding\k@encoding
+ \edef\tmp@item{{\k@encoding}}%
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\kyenc@list}%
+ \ifin@ \let\cy@encoding\k@encoding
+ \else
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\ktenc@list}%
+ \ifin@ \let\ct@encoding\k@encoding
+ \else
+ \@latex@error{KANJI Encoding scheme `\k@encoding' unknown}\@eha
+ \fi
+ \fi
+}
+\let\kenc@update\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@changed@kcmd}
+% |\@changed@cmd|$B$NOBJ8%(%s%3!<%G%#%s%0%P!<%8%g%s!#(B
+% \changes{v1.3n}{2004/08/10}{$BOBJ8%(%s%3!<%G%#%s%0$N@Z$jBX$($rM-8z2=(B}
+% \begin{macrocode}
+\def\@changed@kcmd#1#2{%
+ \ifx\protect\@typeset@protect
+ \@inmathwarn#1%
+ \expandafter\ifx\csname\ck@encoding\string#1\endcsname\relax
+ \expandafter\ifx\csname ?\string#1\endcsname\relax
+ \expandafter\def\csname ?\string#1\endcsname{%
+ \TextSymbolUnavailable#1%
+ }%
+ \fi
+ \global\expandafter\let
+ \csname\cf@encoding \string#1\expandafter\endcsname
+ \csname ?\string#1\endcsname
+ \fi
+ \csname\ck@encoding\string#1%
+ \expandafter\endcsname
+ \else
+ \noexpand#1%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@notkfam}
+% \begin{macro}{\@notffam}
+% |\fontfamily|$B%3%^%s%IFb$G;HMQ$9$k%U%i%0$G$9!#(B
+% |@notkfam|$B%U%i%0$OOBJ8%U%!%_%j$G$J$+$C$?$3$H$r!"(B
+% |@notffam|$B%U%i%0$O2$J8%U%!%_%j$G$J$+$C$?$3$H$r<($7$^$9!#(B
+%
+% \changes{v1.2}{1995/11/21}{\cs{fontfamily}$B%3%^%s%IMQ$N%U%i%0DI2C(B}
+% \begin{macrocode}
+\newif\if@notkfam
+\newif\if@notffam
+% \end{macrocode}
+% \changes{v1.3m}{2004/06/14}{\cs{fontfamily}$B%3%^%s%IFbIt%U%i%0JQ99(B}
+% \begin{macrocode}
+\newif\if@tempswz
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\romanfamily}
+% \begin{macro}{\kanjifamily}
+% \begin{macro}{\fontfamily}
+% $B=qBN$N%U%!%_%j$r;XDj$9$k%3%^%s%I$G$9!#(B
+%
+% |\kanjifamily|$B$H(B|\romanfamily|$B$OM?$($i$l$?0z?t$,!"(B
+% $BOBJ8$"$k$$$O2$J8$N%U%!%_%j$H$7$F@5$7$$$+$N%A%'%C%/$O9T$J$C$F$$$^$;$s!#(B
+% $B$=$N$?$a!"9bB.$KF0:n$r$7$^$9$,!"(B|\kanjifamily|$B$K2$J8%U%!%_%j$r;XDj$7$?$j!"(B
+% $B5U$K(B|\romanfamily|$B$KOBJ8%U%!%_%j$r;XDj$7$?>l9g$O!"%(%i!<$H$J$j!"(B
+% $BBeMQ%U%)%s%H$+%(%i!<%U%)%s%H$,;H$o$l$^$9!#(B
+% \begin{macrocode}
+\DeclareRobustCommand\romanfamily[1]{\edef\f@family{#1}}
+\DeclareRobustCommand\kanjifamily[1]{\edef\k@family{#1}}
+% \end{macrocode}
+%
+% |\fontfamily|$B$O!";XDj$5$l$?CM$K$h$C$F!"OBJ8%U%!%_%j$+2$J8%U%!%_%j!"(B
+% \emph{$B$"$k$$$ON>J}(B}$B$N%U%!%_%j$r@Z$jBX$($^$9!#(B
+% $BOB2$J8$H$b$KL58z$J%U%!%_%jL>$,;XDj$5$l$?>l9g$O!"OB2$J8$H$b$KBeBX=qBN$,(B
+% $B;HMQ$5$l$^$9!#(B
+%
+% $B0z?t$,(B|\rmfamily|$B$N$h$&$JL>A0$GM?$($i$l$k2DG=@-$,$"$k$?$a!"(B
+% $B$^$:!"$3$l$rE83+$7$?$b$N$r:n$j$^$9!#(B
+%
+% $B$^$?!"OBJ8%U%!%_%j$H2$J8%U%!%_%j$N$=$l$>$l$K$J$+$C$?$3$H$r<($9%U%i%0$r(B
+% $B56$K%;%C%H$7$^$9!#(B
+%
+% \changes{v1.2}{1995/11/21}{$BBeMQ%U%)%s%H$,;H$o$l$J$$%P%0$r=$@5(B}
+% \changes{v1.3m}{2004/06/14}{\cs{fontfamily}$B%3%^%s%IFbIt%U%i%0JQ99(B}
+% \changes{v1.3o}{2005/01/04}{\cs{fontfamily}$BCf$N%U%i%0=$@5(B}
+% \begin{macrocode}
+\DeclareRobustCommand\fontfamily[1]{%
+ \edef\tmp@item{{#1}}%
+ \@notkfamfalse
+ \@notffamfalse
+% \end{macrocode}
+% $B<!$K!"$3$N0z?t$,(B|\kfam@list|$B$KEPO?$5$l$F$$$k$+$I$&$+$rD4$Y$^$9!#(B
+% $BEPO?$5$l$F$$$l$P!"(B|\k@family|$B$K$=$NCM$rF~$l$^$9!#(B
+% \begin{macrocode}
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\kfam@list}%
+ \ifin@ \edef\k@family{#1}%
+% \end{macrocode}
+% $B$=$&$G$J$$$H$-$O!"(B|\notkfam@list|$B$KEPO?$5$l$F$$$k$+$I$&$+$rD4$Y$^$9!#(B
+% $BEPO?$5$l$F$$$l$P!"$3$N0z?t$OOBJ8%U%!%_%j$G$O$"$j$^$;$s$N$G!"(B
+% |\@notkfam|$B%U%i%0$r??$K$7$F!"2$J8%U%!%_%j$N%k!<%A%s$K0\$j$^$9!#(B
+%
+% $B$3$N$H$-!"(B|\efam@list|$B$rD4$Y$k$N$G$O$J$$$3$H$KCm0U$r$7$F$/$@$5$$!#(B
+% |\efam@list|$B$rD4$Y!"$3$l$K$J$$%U%!%_%j$rOBJ8%U%!%_%j$G$"$k$H$9$k$H!"(B
+% $B$?$H$($P!"2$J8%J!<%k%U%!%_%j$,Dj5A$5$l$F$$$k$1$l$I$b!"OBJ8%J!<%k%U%!%_%j(B
+% $B$,L$Dj5A$N>l9g!"(B|\fontfamily{nar}|$B$H$$$&;XDj$O!"(B|nar|$B$,(B|\efam@list|$B$K$@$1!"(B
+% $BEPO?$5$l$F$$$k$?$a!"OBJ8=qBN$r%J!<%k$K$9$k$3$H$,$G$-$^$;$s!#(B
+%
+% $B5U$K!"(B|\kfam@list|$B$KEPO?$5$l$F$$$J$$$+$i$H$$$C$F!"(B|\k@family|$B$K(B|nar|$B$r@_Dj(B
+% $B$9$k$H!"(B|cmr|$B$N$h$&$J%U%!%_%j$b(B|\k@family|$B$K@_Dj$5$l$k2DG=@-$,$"$j$^$9!#(B
+% $B$7$?$,$C$F!"!V2$J8$G$J$$!W$rL@<(E*$K<($9(B|\notkfam@list|$B$r8+$kI,MW$,$"$j$^$9!#(B
+% \begin{macrocode}
+ \else
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\notkfam@list}%
+ \ifin@ \@notkfamtrue
+% \end{macrocode}
+% |\notkfam@list|$B$KEPO?$5$l$F$$$J$$>l9g$O!"(B
+% $B%U%)%s%HDj5A%U%!%$%k$,B8:_$9$k$+$I$&$+$rD4$Y$^$9!#(B
+% $B%U%!%$%k$,B8:_$9$k>l9g$O!"(B|\k@family|$B$rJQ99$7$^$9!#(B
+% $B%U%!%$%k$,B8:_$7$J$$>l9g$O!"(B|\notkfam@list|$B$KEPO?$7$^$9!#(B
+%
+% |\kenc@list|$B$KEPO?$5$l$F$$$k%(%s%3!<%I$H!";XDj$5$l$?OBJ8%U%!%_%j$N(B
+% $BAH9g$;$N%U%)%s%HDj5A%U%!%$%k$,B8:_$9$k>l9g$O!"(B|\k@family|$B$K;XDj$5$l$?(B
+% $BCM$rF~$l$^$9!#(B
+% \changes{v1.3c}{1997/04/24}%
+% {$B%U%)%s%HDj5A%U%!%$%kL>$r>.J8;z$KJQ49$7$F$+$iC5$9$h$&$K$7$?!#(B}
+% \changes{v1.3e}{1997/07/10}{fd$B%U%!%$%kL>$N>.J8;z2=$,8z$$$F$$$J$+$C$?$N$r(B
+% $B=$@5!#$"$j$,$H$&!"Bg4d$5$s(B}
+% \begin{macrocode}
+ \else
+ \@tempswzfalse
+ \def\fam@elt{\noexpand\fam@elt}%
+ \message{(I search kanjifont definition file:}%
+ \def\enc@elt<##1>{\message{.}%
+ \edef\reserved@a{\lowercase{\noexpand\IfFileExists{##1#1.fd}}}%
+ \reserved@a{\@tempswztrue}{}\relax}%
+ \kenc@list
+ \message{)}%
+ \if@tempswz
+ \edef\k@family{#1}%
+% \end{macrocode}
+% $B$D$.$NItJ,$,<B9T$5$l$k$N$O!"OBJ8%U%!%_%j$H$7$FG'<1$G$-$J$+$C$?>l9g$G$9!#(B
+% $B$3$N>l9g$O!"(B|\@notkfam|$B%U%i%0$r??$K$7$F!"(B|\notkfam@list|$B$KEPO?$7$^$9!#(B
+% \changes{v1.1b}{1995/05/10}{\cs{notkfam@list}$B$K!"(B
+% $B%(%s%3!<%I$4$H$KEPO?$5$l$F$7$^$&$N$r=$@5$7$?!#2$J8$K$D$$$F$bF1MM!#(B}
+% \begin{macrocode}
+ \else
+ \@notkfamtrue
+ \xdef\notkfam@list{\notkfam@list\fam@elt<#1>}%
+ \fi
+% \end{macrocode}
+% |\kfam@list|$B$H(B|\notkfam@list|$B$KEPO?$5$l$F$$$k$+$I$&$+$r(B
+% $BD4$Y$?(B|\ifin@|$B$rJD$8$^$9!#(B
+% \begin{macrocode}
+ \fi\fi
+% \end{macrocode}
+% $B2$J8%U%!%_%j$N>l9g$b!"OBJ8%U%!%_%j$HF1MM$NJ}K!$G3NG'$r$7$^$9!#(B
+% \changes{v1.3e}{1997/07/10}{fd$B%U%!%$%kL>$N>.J8;z2=$,8z$$$F$$$J$+$C$?$N$r=$@5(B}
+% \begin{macrocode}
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\ffam@list}%
+ \ifin@ \edef\f@family{#1}\else
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\notffam@list}%
+ \ifin@ \@notffamtrue \else
+ \@tempswzfalse
+ \def\fam@elt{\noexpand\fam@elt}%
+ \message{(I search font definition file:}%
+ \def\enc@elt<##1>{\message{.}%
+ \edef\reserved@a{\lowercase{\noexpand\IfFileExists{##1#1.fd}}}%
+ \reserved@a{\@tempswztrue}{}\relax}%
+ \fenc@list
+ \message{)}%
+ \if@tempswz
+ \edef\f@family{#1}%
+ \else
+ \@notffamtrue
+ \xdef\notffam@list{\notffam@list\fam@elt<#1>}%
+ \fi
+ \fi\fi
+% \end{macrocode}
+% $B:G8e$K!";XDj$5$l$?J8;zNs$,!"OBJ8%U%!%_%j$H2$J8%U%!%_%j$N$$$:$l$+!"(B
+% $B$"$k$$$ON>J}$H$7$FG'<1$5$l$?$+$I$&$+$r3NG'$7$^$9!#(B
+%
+% $B$I$A$i$H$bG'<1$5$l$F$$$J$$>l9g$O!"%U%!%_%j$N;XDj%_%9$G$9$N$G!"(B
+% $BBeMQ%U%)%s%H$r;H$&$?$a$K!"8N0U$K;XDj$5$l$?J8;zNs$r%U%!%_%j$K(B
+% $BF~$l$^$9!#(B
+% \begin{macrocode}
+ \if@notkfam\if@notffam
+ \edef\k@family{#1}\edef\f@family{#1}%
+ \fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\romanseries}
+% \begin{macro}{\kanjiseries}
+% \begin{macro}{\fontseries}
+% $B=qBN$N%7%j!<%:$r;XDj$9$k%3%^%s%I$G$9!#(B
+% |\fontseries|$B%3%^%s%I$OOB2$J8$NN>J}$K1F6A$7$^$9!#(B
+% \begin{macrocode}
+\DeclareRobustCommand\romanseries[1]{\edef\f@series{#1}}
+\DeclareRobustCommand\kanjiseries[1]{\edef\k@series{#1}}
+\DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\romanshape}
+% \begin{macro}{\kanjishape}
+% \begin{macro}{\fontshape}
+% $B=qBN$N%7%'%$%W$r;XDj$9$k%3%^%s%I$G$9!#(B
+% |\fontshape|$B%3%^%s%I$OOB2$J8$NN>J}$K1F6A$7$^$9!#(B
+% \begin{macrocode}
+\DeclareRobustCommand\romanshape[1]{\edef\f@shape{#1}}
+\DeclareRobustCommand\kanjishape[1]{\edef\k@shape{#1}}
+\DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\usekanji}
+% \begin{macro}{\useroman}
+% \begin{macro}{\usefont}
+% $B=qBNB0@-$r0lEY$K;XDj$9$k%3%^%s%I$G$9!#(B
+% $BOBJ8=qBN$K$O(B|\usekanji|$B$r!"2$J8=qBN$K$O(B|\useroman|$B$r;XDj$7$F$/$@$5$$!#(B
+%
+% |\usefont|$B%3%^%s%I$O!"Bh0l0z?t$G;XDj$5$l$k%(%s%3!<%I$K$h$C$F!"(B
+% $BOBJ8$^$?$O2$J8%U%)%s%H$r@Z$jBX$($^$9!#(B
+% \begin{macrocode}
+\def\usekanji#1#2#3#4{%
+ \kanjiencoding{#1}\kanjifamily{#2}\kanjiseries{#3}\kanjishape{#4}%
+ \selectfont\ignorespaces}
+\def\useroman#1#2#3#4{%
+ \romanencoding{#1}\romanfamily{#2}\romanseries{#3}\romanshape{#4}%
+ \selectfont\ignorespaces}
+\def\usefont#1#2#3#4{%
+ \edef\tmp@item{{#1}}%
+ \expandafter\expandafter\expandafter
+ \inlist@\expandafter\tmp@item\expandafter{\kenc@list}%
+ \ifin@ \usekanji{#1}{#2}{#3}{#4}%
+ \else\useroman{#1}{#2}{#3}{#4}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\normalfont}
+% $B=qBN$r%G%U%)%k%HCM$K$9$k%3%^%s%I$G$9!#(B
+% $BOBJ8=qBN$b%G%U%)%k%HCM$K$J$k$h$&$K:FDj5A$7$F$$$^$9!#(B
+% $B$?$@$79bB.2=$N$?$a!"(B|\usekanji|$B$H(B|\useroman|$B$rE83+$7!"(B
+% |\selectfont|$B$r0lEY$7$+8F$S=P$5$J$$$h$&$K$7$F$$$^$9!#(B
+% \begin{macrocode}
+\DeclareRobustCommand\normalfont{%
+ \kanjiencoding{\kanjiencodingdefault}%
+ \kanjifamily{\kanjifamilydefault}%
+ \kanjiseries{\kanjiseriesdefault}%
+ \kanjishape{\kanjishapedefault}%
+ \romanencoding{\encodingdefault}%
+ \romanfamily{\familydefault}%
+ \romanseries{\seriesdefault}%
+ \romanshape{\shapedefault}%
+ \selectfont\ignorespaces}
+\adjustbaseline
+\let\reset@font\normalfont
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\mcfamily}
+% \begin{macro}{\gtfamily}
+% $BOBJ8=qBN$rL@D+BN$K$9$k(B|\mcfamily|$B$H%4%7%C%/BN$K$9$k(B|\gtfamily|$B$rDj5A$7$^$9!#(B
+% $B$3$l$i$O!"(B|\rmfamily|$B$J$I$KBP1~$7$^$9!#(B
+% |\mathmc|$B$H(B|\mathgt|$B$O?t<0Fb$GMQ$$$k$H$-$N%3%^%s%IL>$G$9!#(B
+% \begin{macrocode}
+\DeclareRobustCommand\mcfamily
+ {\not@math@alphabet\mcfamily\mathmc
+ \kanjifamily\mcdefault\selectfont}
+\DeclareRobustCommand\gtfamily
+ {\not@math@alphabet\gtfamily\mathgt
+ \kanjifamily\gtdefault\selectfont}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\romanprocess@table}
+% \begin{macro}{\kanjiprocess@table}
+% \begin{macro}{\process@table}
+% $BJ8=q$N@hF,$G!"OBJ8%G%U%)%k%H%U%)%s%H$NJQ99$,H?1G$5$l$J$$$N$r=$@5$7$^$9!#(B
+% \changes{v1.3g}{1999/04/05}{plpatch.ltx$B$NFbMF$rH?1G!#(B
+% $B$"$j$,$H$&!";3K\$5$s!#(B}
+% \begin{macrocode}
+\let\romanprocess@table\process@table
+\def\kanjiprocess@table{%
+ \kanjiencoding{\kanjiencodingdefault}%
+ \kanjifamily{\kanjifamilydefault}%
+ \kanjiseries{\kanjiseriesdefault}%
+ \kanjishape{\kanjishapedefault}%
+}
+\def\process@table{%
+ \romanprocess@table
+ \kanjiprocess@table
+}
+\@onlypreamble\romanprocess@table
+\@onlypreamble\kanjiprocess@table
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\textunderscore}
+% \changes{v1.1b}{1995/04/12}{$B2<@~%^%/%m$rDI2C(B}
+% $B$3$N%3%^%s%I$O%F%-%9%H%b!<%I$G;XDj$5$l$?(B|\_|$B$NFbIt%3%^%s%I$G$9!#(B
+% $B=DAH$G$N0LCV$rD4@0$9$k$h$&$K:FDj5A$r$7$^$9!#(B
+% $B$b$H$O(B\file{ltoutenc.dtx}$B$GDj5A$5$l$F$$$^$9!#(B
+%
+% $B$J$*!"(B|\_|$B$r?t<0%b!<%I$G;H$&$H(B|\mathunderscore|$B$,<B9T$5$l$^$9!#(B
+%
+% $B%3%_%e%K%F%#HG$G$O=D?t<0%G%#%l%/%7%g%s$G%Y!<%9%i%$%sJd@5NL$,(B
+% $BJQ$@$C$?$N$rD>$7$^$7$?!#$"$o$;$F2#%G%#%l%/%7%g%s$G$b%Y!<%9%i%$%s(B
+% $BJd@5$KDI?o$9$k$h$&$K$7$F$$$^$9!#(B
+% \changes{v1.6g}{2017/03/07}{$B%Y!<%9%i%$%sJd@5NL$r=$@5(B}
+% \begin{macrocode}
+%</plcore>
+%<platexrelease>\plIncludeInRelease{2017/04/08}{\textunderscore}
+%<platexrelease> {Baseline shift for \textunderscore}%
+%<*plcore|platexrelease>
+\DeclareTextCommandDefault{\textunderscore}{%
+ \leavevmode\kern.06em
+ \raise-\iftdir\ifmdir\ybaselineshift
+ \else\tbaselineshift\fi
+ \else\ybaselineshift\fi
+ \vbox{\hrule\@width.3em}}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\textunderscore}
+%<platexrelease> {Baseline shift for \textunderscore}%
+%<platexrelease>\DeclareTextCommandDefault{\textunderscore}{%
+%<platexrelease> \leavevmode\kern.06em
+%<platexrelease> \iftdir\raise-\tbaselineshift\fi
+%<platexrelease> \vbox{\hrule\@width.3em}}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B9g@.J8;z(B}
+% \LaTeXe{}$B$N%+!<%M%k$N%3!<%I$r$=$N$^$^;H$&$H!"(Bp\TeX{}$B$N%Y!<%9%i%$%s(B
+% $BJd@5NL$,%<%m$G$J$$$H$-$K9g@.J8;z$,$*$+$7$/$J$C$F$$$?$?$a!"BP:v$7$^$9!#(B
+%
+% \begin{macro}{\pltx@saved@oalign}
+% |\b{...}|, |\c{...}|, |\d{...}|, |\k{...}|$B$J$I$N9g@.J8;z$r=$@5$9$k$?$a!"(B
+% \file{ltplain.dtx}$B$N(B|\oalign|$B$r>e=q$-$7$^$9!#(B
+% \begin{macrocode}
+%<platexrelease>%\plIncludeInRelease{0000/00/00}{\pltx@saved@oalign}
+%<platexrelease>% {Special case! (This block is required for any emulation date)}%
+%<*plcore|platexrelease>
+% \end{macrocode}
+% $B$^$:!"85$N(B\LaTeX{}$B$N%3!<%I$r%3%T!<$7$?$b$N$G$9!#(B
+% $B@\F,<-(B|\pltx@saved...|$B$rIU$1$F$*$-$^$9!#(B
+% \changes{v1.6r}{2018/07/25}{$B%3!<%IDI2C(B}
+% \begin{macrocode}
+\def\pltx@saved@oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex%
+ \ialign{##\crcr#1\crcr}}}
+%</plcore|platexrelease>
+%<platexrelease>%\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pltx@oalign}
+% $B<!$K!"(B\pLaTeX{}$B$N?7$7$$%3!<%I$G$9!#(B
+% \changes{v1.6r}{2018/07/25}{$B%3!<%IDI2C(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2018/07/28}{\pltx@oalign}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<*plcore|platexrelease>
+\def\pltx@oalign#1{\ifmmode
+ \leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex%
+ \ialign{##\crcr#1\crcr}}%
+\else
+ \iftdir\ybaselineshift\tbaselineshift\fi
+ \m@th$\hbox{\vtop{\baselineskip\z@skip \lineskip.25ex%
+ \ialign{##\crcr#1\crcr}}}$%
+\fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\pltx@oalign}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\let\pltx@oalign\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pltx@saved@ltx@sh@ft}
+% |\b{...}|$B$H(B|\d{...}|$B$N9g@.J8;z$r=$@5$9$k$?$a!"(B
+% \file{ltplain.dtx}$B$N(B|\ltx@sh@ft|$B$r>e=q$-$7$^$9!#(B
+% \begin{macrocode}
+%<platexrelease>%\plIncludeInRelease{0000/00/00}{\pltx@saved@ltx@sh@ft}
+%<platexrelease>% {Special case! (This block is required for any emulation date)}%
+%<*plcore|platexrelease>
+% \end{macrocode}
+% $B$^$:!"85$N(B\LaTeX{}$B$N%3!<%I$r%3%T!<$7$?$b$N$G$9!#(B
+% $B@\F,<-(B|\pltx@saved...|$B$rIU$1$F$*$-$^$9!#(B
+% \changes{v1.6r}{2018/07/25}{$B%3!<%IDI2C(B}
+% \begin{macrocode}
+\def\pltx@saved@ltx@sh@ft #1{%
+ \dimen@ #1%
+ \kern \strip@pt
+ \fontdimen1\font \dimen@
+ } % kern by #1 times the current slant
+%</plcore|platexrelease>
+%<platexrelease>%\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pltx@ltx@sh@ft}
+% $B<!$K!"(B\pLaTeX{}$B$N?7$7$$%3!<%I$G$9!#(B
+% \changes{v1.6r}{2018/07/25}{$B%3!<%IDI2C(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2018/07/28}{\pltx@ltx@sh@ft}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<*plcore|platexrelease>
+\def\pltx@ltx@sh@ft #1{%
+ \ybaselineshift\z@
+ \dimen@ #1%
+ \kern \strip@pt
+ \fontdimen1\font \dimen@
+ } % kern by #1 times the current slant
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\pltx@ltx@sh@ft}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\let\pltx@ltx@sh@ft\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\g@tlastchart@}
+% \TeX\ Live 2015$B$GDI2C$5$l$?(B\cs{lastnodechar}$B$rMxMQ$7$F!"(B
+% $B!VD>A0$NJ8;z!W$NId9f0LCV$rF@$k%3!<%I$G$9!#(B
+% \cs{lastnodechar}$B$,L$Dj5A$N>l9g$O(B$-1$$B$,JV$j$^$9!#(B
+% \changes{v1.6c}{2016/06/06}{$B%^%/%mDI2C(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/06/10}{\g@tlastchart@}
+%<platexrelease> {Added \g@tlastchart@}%
+%<*plcore|platexrelease>
+\def\g@tlastchart@#1{#1\ifx\lastnodechar\@undefined\m@ne\else\lastnodechar\fi}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\g@tlastchart@}
+%<platexrelease> {Added \g@tlastchart@}%
+%<platexrelease>\let\g@tlastchart@\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pltx@isletter}
+% $BBh0l0z?t$N%^%/%m(B(|#1|)$B$NCV49%F%-%9%H$,!"%+%F%4%j%3!<%I(B11$B$+(B12$B$NJ8;z%H!<%/%s(B1$BJ8;z$G$"$C$?(B
+% $B>l9g$KBhFs0z?t$NFbMF$KE83+$5$l!"$=$&$G$J$$>l9g$OBh;00z?t$NFbMF$KE83+$5$l$^$9!#(B
+% \changes{v1.6c}{2016/06/06}{$B%^%/%mDI2C(B}
+% \changes{v1.6d}{2016/06/19}{$B%"%/%;%s%HIU$-J8;z$r$5$i$K=$@5(B(forum:1951)}
+% \changes{v1.6r}{2018/07/25}{PDF$B$N$7$*$j$K%"%/%;%s%HJ8;z$,4^$^$l$k>l9g$KBP1~(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2018/07/28}{\pltx@isletter}
+%<platexrelease> {Support PD1 encoding}%
+%<*plcore|platexrelease>
+\def\pltx@mark{\pltx@mark@}
+\let\pltx@scanstop\relax
+\long\def\pltx@cond#1\fi{%
+ #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+\def\pltx@pdfencA{PD1}
+\def\pltx@composite@chkenc{%
+ \ifx\pltx@pdfencA\f@encoding
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+\long\def\pltx@isletter#1{%
+ \expandafter\pltx@isletter@i#1\pltx@scanstop}
+\long\def\pltx@isletter@i#1\pltx@scanstop{%
+ \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi{\@firstoftwo}%
+ {\pltx@isletter@ii\pltx@scanstop#1\pltx@scanstop{}#1\pltx@mark}}
+\long\def\pltx@isletter@ii#1\pltx@scanstop#{%
+ \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi%
+ {\pltx@isletter@iii}{\pltx@isletter@iv}}
+\long\def\pltx@isletter@iii#1\pltx@mark{\@secondoftwo}
+\long\def\pltx@isletter@iv#1#2#3\pltx@mark{%
+ \pltx@cond\ifx\pltx@mark#3\pltx@mark\fi{%
+ \pltx@cond{\ifnum0\ifcat A\noexpand#21\fi\ifcat=\noexpand#21\fi>\z@}\fi
+ {\@firstoftwo}{\pltx@composite@chkenc}%
+ }{\pltx@composite@chkenc}}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/06/10}{\pltx@isletter}
+%<platexrelease> {Added \pltx@isletter}%
+%<platexrelease>\def\pltx@mark{\pltx@mark@}
+%<platexrelease>\let\pltx@scanstop\relax
+%<platexrelease>\long\def\pltx@cond#1\fi{%
+%<platexrelease> #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+%<platexrelease>\long\def\pltx@isletter#1{%
+%<platexrelease> \expandafter\pltx@isletter@i#1\pltx@scanstop}
+%<platexrelease>\long\def\pltx@isletter@i#1\pltx@scanstop{%
+%<platexrelease> \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi{\@firstoftwo}%
+%<platexrelease> {\pltx@isletter@ii\pltx@scanstop#1\pltx@scanstop{}#1\pltx@mark}}
+%<platexrelease>\long\def\pltx@isletter@ii#1\pltx@scanstop#{%
+%<platexrelease> \pltx@cond\ifx\pltx@mark#1\pltx@mark\fi%
+%<platexrelease> {\pltx@isletter@iii}{\pltx@isletter@iv}}
+%<platexrelease>\long\def\pltx@isletter@iii#1\pltx@mark{\@secondoftwo}
+%<platexrelease>\long\def\pltx@isletter@iv#1#2#3\pltx@mark{%
+%<platexrelease> \pltx@cond\ifx\pltx@mark#3\pltx@mark\fi{%
+%<platexrelease> \pltx@cond{\ifnum0\ifcat A\noexpand#21\fi\ifcat=\noexpand#21\fi>\z@}\fi
+%<platexrelease> {\@firstoftwo}{\@secondoftwo}%
+%<platexrelease> }{\@secondoftwo}}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\pltx@isletter}
+%<platexrelease> {Added \pltx@isletter}%
+%<platexrelease>\let\pltx@isletter\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@text@composite}
+% $B9g@.J8;z$NFbItL?Na$G$9!#(B
+% v1.6a$B$G8m$C$F(B\LaTeX{}$B$NDj5A$r>e=q$-$7$F$7$^$$$^$7$?$,!"(Bv1.6c$B$G30$7$^$7$?!#(B
+% \changes{v1.6a}{2016/04/01}{$B%Y!<%9%i%$%sJd@5NL$,(B0$B$G$J$$$H$-$K(B
+% \cs{AA}$B$J$I0lIt$N9g@.J8;z$,$*$+$7$/$J$k$3$H$KBP1~$9$k$?$a:FDj5A(B}
+% \changes{v1.6c}{2016/06/06}{v1.6a$B$G$N8m$C$?:FDj5A$r:o=|(B(forum:1941)}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2016/06/10}{\@text@composite}
+%<platexrelease> {Fix for non-zero baselineshift (wrong)}%
+%<platexrelease>\def\@text@composite#1#2#3\@text@composite{%
+%<platexrelease> \expandafter\@text@composite@x
+%<platexrelease> \csname\string#1-\string#2\endcsname}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\@text@composite}
+%<platexrelease> {Fix for non-zero baselineshift (wrong)}%
+%<platexrelease>\def\@text@composite#1#2#3#{%
+%<platexrelease> \begingroup
+%<platexrelease> \setbox\z@=\hbox\bgroup%
+%<platexrelease> \ybaselineshift\z@\tbaselineshift\z@
+%<platexrelease> \expandafter\@text@composite@x
+%<platexrelease> \csname\string#1-\string#2\endcsname}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\@text@composite}
+%<platexrelease> {Fix for non-zero baselineshift (wrong)}%
+%<platexrelease>\def\@text@composite#1#2#3\@text@composite{%
+%<platexrelease> \expandafter\@text@composite@x
+%<platexrelease> \csname\string#1-\string#2\endcsname}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pltx@saved@text@composite@x}
+% $B9g@.J8;z$NFbItL?Na(B|\@text@composite@x|$B$N$?$a$K!"(B2$BDL$j$NDj5A$r=`Hw$7$^$9!#(B
+% \begin{macrocode}
+%<platexrelease>%\plIncludeInRelease{0000/00/00}{\pltx@saved@text@composite@x}
+%<platexrelease>% {Special case! (This block is required for any emulation date)}%
+%<*plcore|platexrelease>
+% \end{macrocode}
+% $B$^$:!"85$N(B\LaTeX{}$B$N%3!<%I$r%3%T!<$7$?$b$N$G$9!#(B
+% $B@\F,<-(B|\pltx@saved...|$B$rIU$1$F$*$-$^$9!#(B
+% \changes{v1.6r}{2018/07/25}{$B%3!<%I@0M}(B}
+% \begin{macrocode}
+\def\pltx@saved@text@composite@x#1{%
+ \ifx#1\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ #1}
+%</plcore|platexrelease>
+%<platexrelease>%\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pltx@text@composite@x}
+% $B<!$K!"(B\pLaTeX{}$B$N?7$7$$%3!<%I$G$9!#(B|\g@tlastchart@|$B$H(B|\pltx@isletter|$B$r;H$$$^$9!#(B
+% \changes{v1.6r}{2018/07/25}{$B%3!<%I@0M}(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2018/07/28}{\pltx@text@composite@x}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<*plcore|platexrelease>
+\def\pltx@text@composite@x#1#2{%
+ \ifx#1\relax
+ #2%
+ \else\pltx@isletter{#1}{#1}{%
+ \begingroup
+% \end{macrocode}
+% |#1|$B$r<B:]$KAH$s$G$_$F!"Id9f0LCV$N<hF@$r;n$_$^$9!#(B
+% $B7k2L$O(B|\@tempcntb|$B$KJ]B8$5$l$^$9!#<hF@$K<:GT$7$?>l9g$O(B$-1$$B$G$9!#(B
+% \begin{macrocode}
+ \setbox\z@\hbox\bgroup
+ \ybaselineshift\z@\tbaselineshift\z@
+ #1%
+ \g@tlastchart@\@tempcntb
+ \xdef\pltx@composite@temp{\noexpand\@tempcntb=\the\@tempcntb\relax}%
+ \aftergroup\pltx@composite@temp
+ \egroup
+% \end{macrocode}
+% $B%"%/%;%s%H$,IU$/!VK\BN$NJ8;z!W$,2$J8J8;z$H?dB,$5$l$k>l9g$K$O!"(B
+% $B0lC6?t<0%b!<%I$KF~$k$3$H$K$h$C$F(B|\xkanjiskip|$B$,A08e$KF~$k$h$&$K$7$^$9!#(B
+% $B$3$3$G$O!"<hF@$K<:GT$7$?>l9g$b2$J8J8;z$G$"$k$H2>Dj$7$F$$$^$9!#(B
+% $B$^$?!"Id9f0LCV$N<hF@$K@.8y$7$F$$$?>l9g$O!"$=$N(B|\xspcode|$B$N>uBV$K1~$8$F!"(B
+% $B?t<0%b!<%I$NA08e$K(B|\null|$B$rJd$C$F(B|\xkanjiskip|$B$NA^F~$rM^@)$7$^$9!#(B
+% \begin{macrocode}
+ \ifnum\@tempcntb<\@cclvi
+ \ifnum\@tempcntb>\m@ne
+ \ifodd\xspcode\@tempcntb\else\leavevmode\null\fi
+ \fi
+ \begingroup\m@th$%
+ \ifx\textbaselineshiftfactor\@undefined\else
+ \textbaselineshiftfactor\z@\fi
+ \box\z@
+ $\endgroup
+ \ifnum\@tempcntb>\m@ne
+ \ifnum\xspcode\@tempcntb<2\null\fi
+ \fi
+% \end{macrocode}
+% $B%"%/%;%s%H$,IU$/!VK\BN$NJ8;z!W$,OBJ8J8;z$H?dB,$5$l$k>l9g$K$O!"(B
+% $B%Y!<%9%i%$%sJd@5$r9T$o$:$K=PNO$7$^$9!#(B
+% \begin{macrocode}
+ \else
+ {\ybaselineshift\z@\tbaselineshift\z@#1}%
+ \fi
+ \endgroup}%
+ \fi
+}
+%</plcore|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/06/10}{\pltx@text@composite@x}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\def\pltx@text@composite@x#1#2{%
+%<platexrelease> \ifx#1\relax
+%<platexrelease> #2%
+%<platexrelease> \else\pltx@isletter{#1}{#1}{%
+%<platexrelease> \begingroup
+%<platexrelease> \setbox\z@\hbox\bgroup%
+%<platexrelease> \ybaselineshift\z@\tbaselineshift\z@
+%<platexrelease> #1%
+%<platexrelease> \g@tlastchart@\@tempcntb
+%<platexrelease> \xdef\pltx@composite@temp{\noexpand\@tempcntb=\the\@tempcntb\relax}%
+%<platexrelease> \aftergroup\pltx@composite@temp
+%<platexrelease> \egroup
+%<platexrelease> \ifnum\@tempcntb<\z@
+%<platexrelease> \@tempdima=\iftdir
+%<platexrelease> \ifmdir
+%<platexrelease> \ifmmode\tbaselineshift\else\ybaselineshift\fi
+%<platexrelease> \else
+%<platexrelease> \tbaselineshift
+%<platexrelease> \fi
+%<platexrelease> \else
+%<platexrelease> \ybaselineshift
+%<platexrelease> \fi
+%<platexrelease> \@tempcntb=\@cclvi
+%<platexrelease> \else\@tempdima=\z@
+%<platexrelease> \fi
+%<platexrelease> \ifnum\@tempcntb<\@cclvi
+%<platexrelease> \ifnum\@tempcntb>\m@ne\ifnum\@tempcntb<\@cclvi
+%<platexrelease> \ifodd\xspcode\@tempcntb\else\leavevmode\hbox{}\fi
+%<platexrelease> \fi\fi
+%<platexrelease> \begingroup\mathsurround\z@$%
+%<platexrelease> \ifx\textbaselineshiftfactor\@undefined\else
+%<platexrelease> \textbaselineshiftfactor\z@\fi
+%<platexrelease> \box\z@
+%<platexrelease> $\endgroup%
+%<platexrelease> \ifnum\@tempcntb>\m@ne\ifnum\@tempcntb<\@cclvi
+%<platexrelease> \ifnum\xspcode\@tempcntb<2\hbox{}\fi
+%<platexrelease> \fi\fi
+%<platexrelease> \else
+%<platexrelease> \ifdim\@tempdima=\z@{\ybaselineshift\z@\tbaselineshift\z@#1}%
+%<platexrelease> \else\leavevmode\lower\@tempdima\box\z@\fi
+%<platexrelease> \fi
+%<platexrelease> \endgroup}%
+%<platexrelease> \fi
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\pltx@text@composite@x}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\def\pltx@text@composite@x#1#2{%
+%<platexrelease> \ifx#1\relax
+%<platexrelease> \expandafter\@secondoftwo
+%<platexrelease> \else
+%<platexrelease> \expandafter\@firstoftwo
+%<platexrelease> \fi
+%<platexrelease> #1{#2}\egroup
+%<platexrelease> \leavevmode
+%<platexrelease> \expandafter\lower
+%<platexrelease> \iftdir
+%<platexrelease> \ifmdir
+%<platexrelease> \ifmmode\tbaselineshift\else\ybaselineshift\fi
+%<platexrelease> \else
+%<platexrelease> \tbaselineshift
+%<platexrelease> \fi
+%<platexrelease> \else
+%<platexrelease> \ybaselineshift
+%<platexrelease> \fi
+%<platexrelease> \box\z@
+%<platexrelease> \endgroup}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\pltx@text@composite@x}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\let\pltx@text@composite@x\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fixcompositeaccent}
+% \begin{macro}{\nofixcompositeaccent}
+% \begin{macro}{\@text@composite@x}
+% $B>e5-(B2$BDL$j$NDj5A$N$&$A!"K\Ev$O(B\pLaTeX{}$B$NDj5A$rMQ$$$?$$$N$G$9$,!"(B
+% $BA[Dj30$N%(%i!<$,H/@8$9$k$N$rKI$0$?$a!"(B
+% $B%G%U%)%k%H$G$O(B\LaTeX{}$B$NDj5A$N$^$^$H$7$F$*$-$^$9!#(B
+% $B$=$7$F!"(B|\fixcompositeaccent|$B$,M-8z$J;~$@$1(B\pLaTeX{}$B$NDj5A$rMQ$$$^$9!#(B
+% |\nofixcompositeaccent|$B$O$3$NH]Dj$G$9!#(B
+% \changes{v1.6r}{2018/07/25}{\cs{[no]fixcompositeaccent}$B%^%/%mDI2C(B}
+% \begin{macrocode}
+%<platexrelease>%\plIncludeInRelease{0000/00/00}{\@text@composite@x}
+%<platexrelease>% {Special case! (This block is required for any emulation date)}%
+%<*plcore|platexrelease>
+\DeclareRobustCommand\fixcompositeaccent{%
+ \let\oalign\pltx@oalign
+ \let\ltx@sh@ft\pltx@ltx@sh@ft
+ \let\@text@composite@x\pltx@text@composite@x
+}
+\DeclareRobustCommand\nofixcompositeaccent{%
+ \let\oalign\pltx@saved@oalign
+ \let\ltx@sh@ft\pltx@saved@ltx@sh@ft
+ \let\@text@composite@x\pltx@saved@text@composite@x
+}
+\nofixcompositeaccent
+%</plcore|platexrelease>
+%<platexrelease>%\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@text@composite@x}
+% $B%(%_%e%l!<%7%g%s@lMQ$N%3!<%I$G$9!#(B
+% \changes{v1.6a}{2016/04/01}{$B%Y!<%9%i%$%sJd@5NL$,(B0$B$G$J$$$H$-$K(B
+% \cs{AA}$B$J$I0lIt$N9g@.J8;z$,$*$+$7$/$J$k$3$H$X$NBP1~!#(B}
+% \changes{v1.6c}{2016/06/06}{v1.6a$B$G$N=$@5$G(B\'e $B$J$IA4$F$N%"%/%;%s%HIU$-J8;z$G(B
+% $B<~0O$K(B\cs{xkanjiskip}$B$,F~$i$J$/$J$C$F$$$?$N$r=$@5!#(B}
+% \changes{v1.6e}{2016/06/26}{v1.6a$B0J9_$N=$@5$GA4$F$N%"%/%;%s%HIU$-J8;z$G(B
+% $B%H%i%V%k$,Aj<!$$$@$?$a!"$$$C$?$s%Q%C%A$r=|5n!#(B}
+% \changes{v1.6r}{2018/07/25}{$B%3!<%I@0M}(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2018/07/28}{\fixcompositeaccent}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\nofixcompositeaccent % force LaTeX original (conditional default)
+%<platexrelease>% other commands are actually defined for pLaTeX2e 2018-07-28
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/07/01}{\fixcompositeaccent}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\nofixcompositeaccent % force LaTeX original (always)
+%<platexrelease>\let\fixcompositeaccent\@undefined
+%<platexrelease>\let\nofixcompositeaccent\@undefined
+%<platexrelease>\let\pltx@saved@oalign\@undefined
+%<platexrelease>\let\pltx@oalign\@undefined
+%<platexrelease>\let\pltx@saved@ltx@sh@ft\@undefined
+%<platexrelease>\let\pltx@ltx@sh@ft\@undefined
+%<platexrelease>\let\pltx@saved@text@composite@x\@undefined
+%<platexrelease>\let\pltx@text@composite@x\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\fixcompositeaccent}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\fixcompositeaccent % force pLaTeX definition (always)
+%<platexrelease>\let\oalign\pltx@saved@oalign % no fix at that time
+%<platexrelease>\let\ltx@sh@ft\pltx@saved@ltx@sh@ft % no fix at that time
+%<platexrelease>\let\fixcompositeaccent\@undefined
+%<platexrelease>\let\nofixcompositeaccent\@undefined
+%<platexrelease>\let\pltx@saved@oalign\@undefined
+%<platexrelease>\let\pltx@oalign\@undefined
+%<platexrelease>\let\pltx@saved@ltx@sh@ft\@undefined
+%<platexrelease>\let\pltx@ltx@sh@ft\@undefined
+%<platexrelease>\let\pltx@saved@text@composite@x\@undefined
+%<platexrelease>\let\pltx@text@composite@x\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\fixcompositeaccent}
+%<platexrelease> {Fix for non-zero baselineshift}%
+%<platexrelease>\nofixcompositeaccent % force LaTeX original (always)
+%<platexrelease>\let\fixcompositeaccent\@undefined
+%<platexrelease>\let\nofixcompositeaccent\@undefined
+%<platexrelease>\let\pltx@saved@oalign\@undefined
+%<platexrelease>\let\pltx@oalign\@undefined
+%<platexrelease>\let\pltx@saved@ltx@sh@ft\@undefined
+%<platexrelease>\let\pltx@ltx@sh@ft\@undefined
+%<platexrelease>\let\pltx@saved@text@composite@x\@undefined
+%<platexrelease>\let\pltx@text@composite@x\@undefined
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B%$%?%j%C%/Jd@5$H(B\cs{xkanjiskip}}
+%
+% \begin{macro}{\check@nocorr@}
+% $B!V(B\verb|$B$"(B\texttt{abc}$B$$(B|$B!W$H$7$?$H$-!"=qBN$NJQ99$r;XDj$5$l$?2$J8$N:8B&$K(B
+% $BOB2$J84V%9%Z!<%9$,F~$i$J$$$N$r=$@5$7$^$9!#(B
+% \changes{v1.3i}{2000/07/13}{\cs{text..}$B%3%^%s%I$N:8B&$K(B\cs{xkanjiskip}$B$,(B
+% $BF~$i$J$$$N$r=$@5!J$"$j$,$H$&!"25It!wElBg$5$s!K(B}
+%
+% $B%3%_%e%K%F%#HG$N=$@5!'(Bp\TeX{}$B$N%P!<%8%g%s(Bp3.1.11$B0JA0$O!"%$%?%j%C%/Jd@5(B
+% $B!J0J2<(B|\/|$B$H5-$9!K$H(B|\xkanjiskip|$B$NA^F~$,>WFM(B\footnote{$BOBJ8$N%$%?%j%C%/(B
+% $BJd@5MQ(Bkern$B$,!"DL>o$N(Bexplicit$B$J!J(B\cs{kern}$B$K$h$k!K(Bkern$B$HF1$807$$$r<u$1$F(B
+% $B$$$?$?$a!#(B}$B$7(B
+% \begin{enumerate}
+% \item $B!V2$J8J8;z(B $B"*(B |\/|$B!W$N>l9g$K$O(B|\/|$B$rL5;k$9$k(B
+% $B!J$D$^$j8e$K(B|\xkanjiskip|$BA^F~2DG=!K(B
+% \item $B!VOBJ8J8;z(B $B"*(B |\/|$B!W$N>l9g$K$O$3$N8e$K(B|\xkanjiskip|$B$OA^F~$G$-$J$$(B
+% \end{enumerate}
+% $B$H$$$&5sF0$K$J$C$F$$$^$7$?!#(Bp3.2$B!J(B2010$BG/!K$N=$@5$G(B
+% \begin{itemize}
+% \item |\xkanjiskip|$BA^F~;~$K$O$$$+$J$k>l9g$b(B|\/|$B$rL5;k$9$k(B
+% \end{itemize}
+% $B$H$$$&5sF0$KJQ99$5$l$^$7$?!#(Bp\LaTeX{}$B%+!<%M%k$N(B|\check@nocorr@|$B$N=$@5$O!"(B
+% p3.1.11$B0JA0$N(B2.$B$X$NBP=h$G$7$?$,!"$3$l$O!V(B|\text...{}|$B$N:8$X$N(B|\/|$BA^F~!W$r(B
+% $BL58z2=$7$F$$$k$N$G!"(B|\textit{f\textup{a}}|$B$GK\MhF~$k$Y$-%$%?%j%C%/Jd@5$,(B
+% $BF~$j$^$;$s$G$7$?!#(Bp3.2$B0J9_$G$O(Bp\TeX{}$B$N(B|\xkanjiskip|$BBP:v$,ITMW$K$J$C$F(B
+% $B$$$^$9$N$G!"%3%_%e%K%F%#HG$G$O:o=|$7$^$7$?!#(B
+% \changes{v1.6i}{2017/09/24}{2010$BG/$N(Bp\TeX{}$BK\BN$N=$@5$K$h$j!"(Bv1.3i$B$GF~$l$?(B
+% $BBP=h$,ITMW$K$J$C$F$$$?$N$G:o=|(B}
+% \begin{macrocode}
+%<platexrelease>\plIncludeInRelease{2017/10/28}{\check@nocorr@}
+%<platexrelease> {Italic correction before \textt...}%
+%<platexrelease>\def \check@nocorr@ #1#2\nocorr#3\@nil {%
+%<platexrelease> \let \check@icl \maybe@ic
+%<platexrelease> \def \check@icr {\ifvmode \else \aftergroup \maybe@ic \fi}%
+%<platexrelease> \def \reserved@a {\nocorr}%
+%<platexrelease> \def \reserved@b {#1}%
+%<platexrelease> \def \reserved@c {#3}%
+%<platexrelease> \ifx \reserved@a \reserved@b
+%<platexrelease> \ifx \reserved@c \@empty
+%<platexrelease> \let \check@icl \@empty
+%<platexrelease> \else
+%<platexrelease> \let \check@icl \@empty
+%<platexrelease> \let \check@icr \@empty
+%<platexrelease> \fi
+%<platexrelease> \else
+%<platexrelease> \ifx \reserved@c \@empty
+%<platexrelease> \else
+%<platexrelease> \let \check@icr \@empty
+%<platexrelease> \fi
+%<platexrelease> \fi
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\check@nocorr@}
+%<platexrelease> {Italic correction before \textt...}%
+%<platexrelease>\def \check@nocorr@ #1#2\nocorr#3\@nil {%
+%<platexrelease> \let \check@icl \relax % changed from \maybe@ic
+%<platexrelease> \def \check@icr {\ifvmode \else \aftergroup \maybe@ic \fi}%
+%<platexrelease> \def \reserved@a {\nocorr}%
+%<platexrelease> \def \reserved@b {#1}%
+%<platexrelease> \def \reserved@c {#3}%
+%<platexrelease> \ifx \reserved@a \reserved@b
+%<platexrelease> \ifx \reserved@c \@empty
+%<platexrelease> \let \check@icl \@empty
+%<platexrelease> \else
+%<platexrelease> \let \check@icl \@empty
+%<platexrelease> \let \check@icr \@empty
+%<platexrelease> \fi
+%<platexrelease> \else
+%<platexrelease> \ifx \reserved@c \@empty
+%<platexrelease> \else
+%<platexrelease> \let \check@icr \@empty
+%<platexrelease> \fi
+%<platexrelease> \fi
+%<platexrelease>}
+%<platexrelease>\plEndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{$B%G%U%)%k%H@_Dj%U%!%$%k$NFI$_9~$_(B}
+% $B%G%U%)%k%H@_Dj%U%!%$%k(B\file{pldefs.ltx}$B$O!"$b$H$b$H(B\file{plcore.ltx}$B$NESCf$G(B
+% $BFI$_9~$s$G$$$^$7$?$,!"(B2018$BG/0J9_$N?7$7$$%3%_%e%K%F%#HG(B\pLaTeX{}$B$G$O(B
+% \file{platex.ltx}$B$+$iFI$_9~$`$3$H$K$7$^$7$?!#(B
+% $B<B:]$NCf?H$K$D$$$F$O!"Bh(B\ref{plfonts:pldefs}$B@a$r;2>H$7$F$/$@$5$$!#(B
+% \changes{v1.6k}{2017/12/05}{$B%G%U%)%k%H@_Dj%U%!%$%k$NFI$_9~$_$r(B
+% \file{plcore.ltx}$B$+$i(B\file{platex.ltx}$B$X0\F0(B}
+%
+%
+%
+%
+% \section{$B%G%U%)%k%H@_Dj%U%!%$%k(B}\label{plfonts:pldefs}
+% $B$3$3$G$O!"%U%)!<%^%C%H%U%!%$%k$KFI$_9~$^$l$k%G%U%)%k%HCM$r@_Dj$7$F$$$^$9!#(B
+% $B$3$N@a$G$NFbMF$O(B\file{pldefs.ltx}$B$K=PNO$5$l$^$9!#(B
+% $B$3$N%U%!%$%k$NFbMF$r(B\file{plcore.ltx}$B$K4^$a$F$b$h$$$N$G$9$,!"(B
+% $B%G%U%)%k%H$N@_Dj$r;2>H$7$d$9$$$h$&$K!"JL%U%!%$%k$K$7$F$"$j$^$9!#(B
+%
+% $B%W%j%m!<%I%5%$%:$O!"(B\dst{}$B%W%m%0%i%`$N%*%W%7%g%s$GJQ99$9$k$3$H$,$G$-$^$9!#(B
+% $B$3$l0J30$N@_Dj$rJQ99$7$?$$>l9g$O!"(B\file{pldefs.ltx}$B$r(B
+% $BD>@\!"=$@5$9$k$N$G$O$J$/!"$3$N%U%!%$%k$r(B\file{pldefs.cfg}$B$H$$$&L>A0$G(B
+% $B%3%T!<$r$7$F!"$=$N%U%!%$%k$KBP$7$F=$@5$r2C$($k$h$&$K$7$F$/$@$5$$!#(B
+% \begin{macrocode}
+%<*pldefs>
+\ProvidesFile{pldefs.ltx}
+ [2018/02/04 v1.6l pLaTeX Kernel (Default settings)]
+%</pldefs>
+% \end{macrocode}
+%
+% \subsection{$B%F%-%9%H%U%)%s%H(B}
+% $B%F%-%9%H%U%)%s%H$N$?$a$NB0@-$d%(%i!<=qBN$J$I$N@k8@$G$9!#(B
+% p\LaTeX{}$B$N%G%U%)%k%H$N2#AH%(%s%3!<%I$O(BJY1$B!"=DAH%(%s%3!<%I$O(BJT1$B$H$7$^$9!#(B
+% \noindent
+% $B=D2#%(%s%3!<%I6&DL!'(B
+% \begin{macrocode}
+%<*pldefs>
+\DeclareKanjiEncodingDefaults{}{}
+\DeclareErrorKanjiFont{JY1}{mc}{m}{n}{10}
+% \end{macrocode}
+% $B2#AH%(%s%3!<%I!'(B
+% \begin{macrocode}
+\DeclareYokoKanjiEncoding{JY1}{}{}
+\DeclareKanjiSubstitution{JY1}{mc}{m}{n}
+% \end{macrocode}
+% $B=DAH%(%s%3!<%I!'(B
+% \begin{macrocode}
+\DeclareTateKanjiEncoding{JT1}{}{}
+\DeclareKanjiSubstitution{JT1}{mc}{m}{n}
+% \end{macrocode}
+% $B=D2#$N%(%s%3!<%G%#%s%0$N%;%C%H2=!'(B
+% \changes{v1.6j}{2017/11/06}{$B=D2#$N%(%s%3!<%G%#%s%0$N%;%C%H2=$r(B
+% plcore$B$+$i(Bpldefs$B$X0\F0(B}
+% \begin{macrocode}
+\KanjiEncodingPair{JY1}{JT1}
+% \end{macrocode}
+% $B%U%)%s%HB0@-$N%G%U%)%k%HCM!'(B
+% \begin{macrocode}
+\newcommand\mcdefault{mc}
+\newcommand\gtdefault{gt}
+\newcommand\kanjiencodingdefault{JY1}
+\newcommand\kanjifamilydefault{\mcdefault}
+\newcommand\kanjiseriesdefault{\mddefault}
+\newcommand\kanjishapedefault{\updefault}
+% \end{macrocode}
+% $BOBJ8%(%s%3!<%I$N;XDj!'(B
+% \begin{macrocode}
+\kanjiencoding{JY1}
+% \end{macrocode}
+% $B%U%)%s%HDj5A!'(B
+% $B$3$l$i$N6qBNE*$JFbMF$OBh(B\ref{plfonts:fontdef}$B@a$r;2>H$7$F$/$@$5$$!#(B
+% \changes{v1.3}{1997/01/24}{Rename font definition filename.}
+% \begin{macrocode}
+\input{jy1mc.fd}
+\input{jy1gt.fd}
+\input{jt1mc.fd}
+\input{jt1gt.fd}
+% \end{macrocode}
+% $B%U%)%s%H$rM-8z$K$7$^$9!#(B
+% \begin{macrocode}
+\fontencoding{JT1}\selectfont
+\fontencoding{JY1}\selectfont
+% \end{macrocode}
+%
+% \begin{macro}{\textmc}
+% \begin{macro}{\textgt}
+% \changes{v1.3b}{1997/01/28}{\cs{textmc}, \cs{textgt}$B$NF0:n=$@5(B}
+% $B%F%-%9%H%U%!%_%j$r@Z$jBX$($k$?$a$N%3%^%s%I$G$9!#(B
+% \file{ltfntcmd.dtx}$B$GDj5A$5$l$F$$$k(B|\textrm|$B$J$I$KBP1~$7$^$9!#(B
+% \begin{macrocode}
+\DeclareTextFontCommand{\textmc}{\mcfamily}
+\DeclareTextFontCommand{\textgt}{\gtfamily}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\em}
+% \begin{macro}{\emph}
+% \begin{macro}{\eminnershape}
+% \changes{v1.3d}{1997/06/25}{\cs{em},\cs{emph}$B$GOBJ8$r6/D4=qBN$K(B}
+% \changes{v1.6}{2016/02/01}{\LaTeX\ \texttt{!<2015/01/01!>}$B$G$N(B\cs{em}$B$N(B
+% $BDj5AJQ99$KBP1~!#(B\cs{eminnershape}$B$rDI2C!#(B}
+% $B=>Mh$O(B|\em|, |\emph|$B$GOBJ8%U%)%s%H$N@Z$jBX$($O9T$C$F$$$^$;$s$G$7$?$,!"(B
+% $BOBJ8%U%)%s%H$b(B|\gtfamily|$B$K@Z$jBX$($k$h$&$K$7$^$7$?!#(B
+% \LaTeX\ \texttt{<2015/01/01>}$B$GDI2C$5$l$?(B|\eminnershape|$B$b<h$jF~$l!"(B
+% $B6/D4%3%^%s%I$rF~$l;R$K$9$k>l9g$N=qBN$r<+M3$K:FDj5A$G$-$k$h$&$K$J$j$^$7$?!#(B
+% \begin{macrocode}
+%</pldefs>
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\eminnershape}{\eminnershape}%
+%<*pldefs|platexrelease>
+\DeclareRobustCommand\em
+ {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+ \eminnershape \else \gtfamily \itshape \fi}%
+\def\eminnershape{\mcfamily \upshape}%
+%</pldefs|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2015/01/01}{\eminnershape}{\eminnershape}%
+%<platexrelease>\DeclareRobustCommand\em
+%<platexrelease> {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+%<platexrelease> \mcfamily \upshape \else \gtfamily \itshape \fi}
+%<platexrelease>\def\eminnershape{\upshape}% defined by LaTeX, but not used by pLaTeX
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\eminnershape}{\eminnershape}%
+%<platexrelease>\DeclareRobustCommand\em
+%<platexrelease> {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+%<platexrelease> \mcfamily \upshape \else \gtfamily \itshape \fi}
+%<platexrelease>\let\eminnershape\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*pldefs>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \changes{v1.3b}{1997/01/30}{$B?t<0MQ%U%)%s%H$N@k8@$r%/%i%9%U%!%$%k$K0\F0$7$?(B}
+%
+%
+% \subsection{$B%W%j%m!<%I%U%)%s%H(B}
+% $B$"$i$+$8$a%U%)!<%^%C%H%U%!%$%k$K%m!<%I$5$l$k%U%)%s%H$N@k8@$G$9!#(B
+% \dst{}$B%W%m%0%i%`$N%*%W%7%g%s$G%m!<%I$5$l$k%U%)%s%H$N%5%$%:$r(B
+% $BJQ99$9$k$3$H$,$G$-$^$9!#(B\file{plfmt.ins}$B$G$O(B|xpt|$B$r;XDj$7$F$$$^$9!#(B
+% \begin{macrocode}
+%<*xpt>
+\DeclarePreloadSizes{JY1}{mc}{m}{n}{5,7,10,12}
+\DeclarePreloadSizes{JY1}{gt}{m}{n}{5,7,10,12}
+\DeclarePreloadSizes{JT1}{mc}{m}{n}{5,7,10,12}
+\DeclarePreloadSizes{JT1}{gt}{m}{n}{5,7,10,12}
+%</xpt>
+%<*xipt>
+\DeclarePreloadSizes{JY1}{mc}{m}{n}{5,7,10.95,12}
+\DeclarePreloadSizes{JY1}{gt}{m}{n}{5,7,10.95,12}
+\DeclarePreloadSizes{JT1}{mc}{m}{n}{5,7,10.95,12}
+\DeclarePreloadSizes{JT1}{gt}{m}{n}{5,7,10.95,12}
+%</xipt>
+%<*xiipt>
+\DeclarePreloadSizes{JY1}{mc}{m}{n}{7,9,12,14.4}
+\DeclarePreloadSizes{JY1}{gt}{m}{n}{7,9,12,14.4}
+\DeclarePreloadSizes{JT1}{mc}{m}{n}{7,9,12,14.4}
+\DeclarePreloadSizes{JT1}{gt}{m}{n}{7,9,12,14.4}
+%</xiipt>
+%<*ori>
+\DeclarePreloadSizes{JY1}{mc}{m}{n}
+ {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88}
+\DeclarePreloadSizes{JY1}{gt}{m}{n}
+ {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88}
+\DeclarePreloadSizes{JT1}{mc}{m}{n}
+ {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88}
+\DeclarePreloadSizes{JT1}{gt}{m}{n}
+ {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88}
+%</ori>
+% \end{macrocode}
+%
+%
+% \subsection{$BAHHG%Q%i%a!<%?(B}
+% $B6XB'%Q%i%a!<%?$dJ8;z4V$XA^F~$9$k%9%Z!<%9$N@_Dj$J$I$G$9!#(B
+% $B<B:]$N3FJ8;z$X$N6XB'%Q%i%a!<%?$*$h$S%9%Z!<%9$NA^F~$N5v2D@_Dj$J$I$O!"(B
+% \file{kinsoku.tex}$B$G9T$J$C$F$$$^$9!#(B
+% $B6qBNE*$J@_Dj$K$D$$$F$O!"(B\file{kinsoku.dtx}$B$r;2>H$7$F$/$@$5$$!#(B
+% \begin{macrocode}
+\InputIfFileExists{kinsoku.tex}%
+ {\message{Loading kinsoku patterns for japanese.}}
+ {\errhelp{The configuration for kinsoku is incorrectly installed.^^J%
+ If you don't understand this error message you need
+ to seek^^Jexpert advice.}%
+ \errmessage{OOPS! I can't find any kinsoku patterns for japanese^^J%
+ \space Think of getting some or the
+ platex2e setup will never succeed}\@@end}
+% \end{macrocode}
+%
+% $BAHHG%Q%i%a!<%?$N@_Dj$r$7$^$9!#(B
+% |\kanjiskip|$B$O!"4A;z$H4A;z$N4V$KA^F~$5$l$k%0%k!<$G$9!#(B
+% |\noautospacing|$B$G!"A^F~$rCf;_$9$k$3$H$,$G$-$^$9!#(B
+% $B%G%U%)%k%H$O(B|\autospacing|$B$G$9!#(B
+% \begin{macrocode}
+\kanjiskip=0pt plus .4pt minus .5pt
+\autospacing
+% \end{macrocode}
+% |\xkanjiskip|$B$O!"OB2$J84V$K<+F0E*$KA^F~$5$l$k%0%k!<$G$9!#(B
+% |\noautoxspacing|$B$G!"A^F~$rCf;_$9$k$3$H$,$G$-$^$9!#(B
+% $B%G%U%)%k%H$O(B|\autoxspacing|$B$G$9!#(B
+% \changes{v1.1c}{1995/09/12}{\cs{xkanjiskip}$B$N%G%U%)%k%HCM(B}
+% \begin{macrocode}
+\xkanjiskip=.25zw plus1pt minus1pt
+\autoxspacing
+% \end{macrocode}
+% |\jcharwidowpenalty|$B$O!"%Q%i%0%i%U$KBP$9$k6XB'$G$9!#(B
+% $B%Q%i%0%i%U$N:G8e$N9T$,#1J8;z$@$1$K$J$i$J$$$h$&$KD4@0$9$k$?$a$K;H$o$l$^$9!#(B
+% \begin{macrocode}
+\jcharwidowpenalty=500
+% \end{macrocode}
+%
+% \begin{macro}{\<}
+% $B:G8e$K!"(B|\inhibitglue|$B$N4JN,7A$rDj5A$7$^$9!#(B
+% $B$3$N%3%^%s%I$O!"OBJ8%U%)%s%H$N%a%H%j%C%/>pJs$+$i!"<+F0E*$KA^F~$5$l$k(B
+% $B%0%k!<$NA^F~$r6X;_$7$^$9!#(B
+%
+% 2014$BG/$N(Bp\TeX{}$B$N(B|\inhibitglue|$B$N%P%0=$@5$KH<$$!"(B
+% |\inhibitglue|$B$,?bD>%b!<%I$G$O8z$+$J$/$J$j$^$7$?!#(B
+% \LaTeX{}$B$G$O?bD>%b!<%I$H?eJ?%b!<%I$N6hJL$,1#$5$l$F$$$^$9$N$G!"(B
+% p\LaTeX{}$B$NDI2CL?Na$G$"$k(B|\<|$B$OCJMnF,$G$b8z$/$h$&$K=$@5$7$^$9!#(B
+%
+% |\DeclareRobustCommand|$B$r;H$&$H(B|\protect|$B$N1F6A$GA0J}$NJ8;z$KBP$9$k(B
+% |\inhibitglue|$B$,8z$+$J$/$J$k$N$G!"(Be-\TeX{}$B$N(B|\protected|$B$,I,MW$G$9!#(B
+% \changes{v1.6i}{2017/09/24}{\cs{<}$B$,CJMnF,$G$b8z$/$h$&$K$7$?(B}
+% \begin{macrocode}
+%</pldefs>
+%<platexrelease>\plIncludeInRelease{2017/10/28}{\<}
+%<platexrelease> {\inhibitglue in vertical mode}%
+%<*pldefs|platexrelease>
+\ifx\protected\@undefined
+\def\<{\inhibitglue}
+\else
+\protected\def\<{\ifvmode\leavevmode\fi\inhibitglue}
+\fi
+%</pldefs|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\<}
+%<platexrelease> {\inhibitglue in vertical mode}%
+%<platexrelease>\def\<{\inhibitglue}
+%<platexrelease>\plEndIncludeInRelease
+%<*pldefs>
+% \end{macrocode}
+% \end{macro}
+%
+% $B$3$3$^$G$,!"(B\file{pldefs.ltx}$B$NFbMF$G$9!#(B
+% \begin{macrocode}
+%</pldefs>
+% \end{macrocode}
+%
+%
+%
+% \section{$B%U%)%s%HDj5A%U%!%$%k(B}\label{plfonts:fontdef}
+% \changes{v1.3}{1997/01/24}{Rename provided font definition filename.}
+% $B$3$3$G$O!"%U%)%s%HDj5A%U%!%$%k$N@_Dj$r$7$F$$$^$9!#%U%)%s%HDj5A%U%!%$%k$O!"(B
+% \LaTeX{}$B$N%U%)%s%HB0@-$r(B\TeX{}$B%U%)%s%H$KCV$-49$($k$?$a$N%U%!%$%k$G$9!#(B
+% $B5-=RJ}K!$K$D$$$F$N>\:Y$O!"(B|fntguide.tex|$B$r;2>H$7$F$/$@$5$$!#(B
+%
+% $B2$J8=qBN$N@_Dj$K$D$$$F$O!"(B
+% \file{cmfonts.fdd}$B$d(B\file{slides.fdd}$B$J$I$r;2>H$7$F$/$@$5$$!#(B
+% \file{skfonts.fdd}$B$K$O!"<L8&BeMQ=qBN$r;H$&$?$a$N%Q%C%1!<%8$H(B
+% $B%U%)%s%HDj5A$,5-=R$5$l$F$$$^$9!#(B
+% \begin{macrocode}
+%<JY1mc>\ProvidesFile{jy1mc.fd}
+%<JY1gt>\ProvidesFile{jy1gt.fd}
+%<JT1mc>\ProvidesFile{jt1mc.fd}
+%<JT1gt>\ProvidesFile{jt1gt.fd}
+%<JY1mc,JY1gt,JT1mc,JT1gt> [2018/07/03 v1.6q KANJI font defines]
+% \end{macrocode}
+% $B2#AHMQ!"=DAHMQ$H$b$K!"(B
+% $BL@D+BN$N%7%j!<%:(B|bx|$B$,%4%7%C%/BN$H$J$k$h$&$K@k8@$7$F$$$^$9!#(B
+% \changes{v1.2}{1995/11/24}{it, sl, sc$B$N@k8@$r30$7$?(B}
+% \changes{v1.3b}{1997/01/29}{$B%U%)%s%HDj5A%U%!%$%k$N%5%$%:;XDj$ND4@0(B}
+% \changes{v1.3b}{1997/03/11}{$B$9$Y$F$N%5%$%:$r%m!<%I2DG=$K$7$?(B}
+% $B$^$?!"%7%j!<%:(B|b|$B$OF1$8=qBN$N(B|bx|$B$HEy2A$K$J$k$h$&$K@k8@$7$^$9!#(B
+% \changes{v1.6q}{2018/07/03}{$B%7%j!<%:(Bb$B$,(Bbx$B$HEy2A$K$J$k$h$&$K@k8@(B}
+%
+% p\LaTeX{}$B$G$O=>B0=qBN$K(BOT1$B%(%s%3!<%G%#%s%0$r;XDj$7$F$$$^$9!#(B
+% $B$^$?!"MW5a%5%$%:!J;XDj$5$l$?%U%)%s%H%5%$%:!K$,(B10pt$B$N$H$-!"(B
+% $BA43QI}$N<B@#$,(B9.62216pt$B$H$J$k$h$&$K$7$^$9$N$G!"(B
+% $BOBJ8%9%1!<%kCM!J(B$1\,\mathrm{zw} \div \textmc{$BMW5a%5%$%:(B}$$B!K$O(B
+% $9.62216\,\mathrm{pt}/10\,\mathrm{pt}=0.962216$$B$G$9!#(B
+% min10$B7O$N%a%H%j%C%/$OA43QI}$,(B9.62216pt$B$G%G%6%$%s$5$l$F$$$k$N$G!"(B
+% $B$3$l$r(B1$BG\$GFI9~$_$^$9!#(B
+% \changes{v1.6l}{2018/02/04}{$BOBJ8%9%1!<%kCM$rL@J82=(B}
+% \begin{macrocode}
+%<*JY1mc>
+\DeclareKanjiFamily{JY1}{mc}{}
+\DeclareRelationFont{JY1}{mc}{m}{}{OT1}{cmr}{m}{}
+\DeclareRelationFont{JY1}{mc}{bx}{}{OT1}{cmr}{bx}{}
+\DeclareFontShape{JY1}{mc}{m}{n}{<5> <6> <7> <8> <9> <10> sgen*min
+ <10.95><12><14.4><17.28><20.74><24.88> min10
+ <-> min10
+ }{}
+\DeclareFontShape{JY1}{mc}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY1}{mc}{b}{n}{<->ssub*mc/bx/n}{}
+%</JY1mc>
+%<*JT1mc>
+\DeclareKanjiFamily{JT1}{mc}{}
+\DeclareRelationFont{JT1}{mc}{m}{}{OT1}{cmr}{m}{}
+\DeclareRelationFont{JT1}{mc}{bx}{}{OT1}{cmr}{bx}{}
+\DeclareFontShape{JT1}{mc}{m}{n}{<5> <6> <7> <8> <9> <10> sgen*tmin
+ <10.95><12><14.4><17.28><20.74><24.88> tmin10
+ <-> tmin10
+ }{}
+\DeclareFontShape{JT1}{mc}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JT1}{mc}{b}{n}{<->ssub*mc/bx/n}{}
+%</JT1mc>
+%<*JY1gt>
+\DeclareKanjiFamily{JY1}{gt}{}
+\DeclareRelationFont{JY1}{gt}{m}{}{OT1}{cmr}{bx}{}
+\DeclareFontShape{JY1}{gt}{m}{n}{<5> <6> <7> <8> <9> <10> sgen*goth
+ <10.95><12><14.4><17.28><20.74><24.88> goth10
+ <-> goth10
+ }{}
+\DeclareFontShape{JY1}{gt}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY1}{gt}{b}{n}{<->ssub*gt/bx/n}{}
+%</JY1gt>
+%<*JT1gt>
+\DeclareKanjiFamily{JT1}{gt}{}
+\DeclareRelationFont{JT1}{gt}{m}{}{OT1}{cmr}{bx}{}
+\DeclareFontShape{JT1}{gt}{m}{n}{<5> <6> <7> <8> <9> <10> sgen*tgoth
+ <10.95><12><14.4><17.28><20.74><24.88> tgoth10
+ <-> tgoth10
+ }{}
+\DeclareFontShape{JT1}{gt}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JT1}{gt}{b}{n}{<->ssub*gt/bx/n}{}
+%</JT1gt>
+% \end{macrocode}
+%
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/platex/plnews.cls b/language/japanese/platex/plnews.cls
new file mode 100644
index 0000000000..a39b6cbb99
--- /dev/null
+++ b/language/japanese/platex/plnews.cls
@@ -0,0 +1,100 @@
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesClass{plnews}[1997/02/01 v1.0a Standard pLaTeX class]
+
+\InputIfFileExists{polnews.cfg}%
+ {\ClassInfo{plnews}{Using local configuration file}}%
+ {\ClassInfo{plnews}{No local configuration file}}
+
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{plnews}}
+\ProcessOptions
+\LoadClass[a4j,twocolumn,oneside]{jarticle}
+\RequirePackage{shortvrb}
+\MakeShortVerb{\|}
+\setlength{\footskip}{15mm}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \maketitle parameters.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{p\LaTeX~$B%K%e!<%9(B}
+\newcommand{\@titlefont}{\normalfont\Huge}
+
+\newcommand{\publicationmonth}{\renewcommand{\@month}}
+\newcommand{\@month}{\ClassError{ltnews}
+ {No \protect\publicationmonth~given}\@eha}
+
+\newcommand{\publicationyear}{\renewcommand{\@year}}
+\newcommand{\@year}{\ClassError{ltnews}
+ {No \protect\publicationyear~given}\@eha}
+
+\newcommand{\publicationissue}{\renewcommand{\@issue}}
+\newcommand{\@issue}{\ClassError{ltnews}
+ {No \protect\publicationissue~given}\@eha}
+\newcommand{\issuename}{Issue}
+
+\renewcommand{\maketitle}{%
+ \twocolumn[{%
+ \parbox[t][7\baselineskip]{\textwidth}{%
+ \@titlefont\@title\hspace{3mm}%
+ \normalsize $BBh(B{\@issue}$B9f(B\\[\medskipamount]
+ \normalfont{\@year}$BG/(B{\@month}$B7n(B~$BH/9T(B\\
+ $B:n@.<T!'(B\begin{tabular}[t]{l}
+ \@author
+ \end{tabular}%
+ }%
+ }]%
+}
+
+\newcommand{\ps@titlepage}{%
+ \renewcommand{\@oddhead}{\hfill}%
+ \renewcommand{\@evenhead}{\hfill}%
+ \renewcommand{\@oddfoot}{\@title~$BBh(B{\@issue}$B9f(B\hfil\thepage}%
+ \renewcommand{\@evenfoot}{\@title~$BBh(B{\@issue}$B9f(B\hfil\thepage}%
+}
+\pagestyle{titlepage}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Sectioning
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand{\section}{%
+ \@startsection{section}{1}{\z@}
+ {1.5\Cvs \@plus.6\Cvs \@minus.2\Cvs}%
+ {.5\Cvs \@plus.3\Cvs}{\reset@font\Large\bfseries}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Page Layout
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setlength{\topmargin}{0pt}
+\setlength{\headheight}{0pt}
+\setlength{\headsep}{0pt}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% itemize
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewenvironment{itemize}
+ {\ifnum \@itemdepth >3\relax\@toodeep\else
+ \advance\@itemdepth\@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \expandafter
+ \list{\csname \@itemitem\endcsname}{%
+ \iftdir
+ \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
+ \else\topsep\z@\fi
+ \labelwidth1zw \labelsep.3zw
+ \ifnum \@itemdepth =\@ne \leftmargin1zw\relax
+ \else\leftmargin\leftskip\fi
+ \advance\leftmargin 1zw
+ \fi
+ \parskip\z@ \itemsep\z@ \parsep\z@ % KN 1998/08/10
+ \def\makelabel##1{\hss\llap{##1}}}%
+ \fi}{\endlist}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% misc.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\file#1{\textsf{#1}}
+\def\option#1{\texttt{#1}}
+\xspcode"5C=3 % \
+\xspcode"3C=3 % <
+\xspcode"3E=3 % >
+
+\endinput
diff --git a/language/japanese/platex/plnews01.tex b/language/japanese/platex/plnews01.tex
new file mode 100644
index 0000000000..76b77c02ec
--- /dev/null
+++ b/language/japanese/platex/plnews01.tex
@@ -0,0 +1,234 @@
+%% <1997/02/04>
+\documentclass{plnews}
+
+\publicationmonth{2}
+\publicationyear{1997}
+\publicationissue{1}
+\author{$BCfLn(B $B8-!J(B\texttt{ken-na at ascii.co.jp}$B!K(B}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O!"(Bp\LaTeXe{}$B$N0JA0$N%P!<%8%g%s$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+
+$B8=:_$N(Bp\LaTeXe{}$B$O!"(B\LaTeX{}\texttt{<1996/12/01>}$BHG$KBP1~$7$F$$$^$9!#(B
+\LaTeX{}$B%l%Y%k$G$N99?72U=j$O!"(B\LaTeX{}$B$KIUB0$N(Bltnews$B%U%!%$%k$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+
+\section{docstrip$B%P%C%A%U%!%$%k(B}
+p\LaTeXe{}$B$N(B.dtx$B%U%!%$%k$+$iFbMF$r<h$j=P$9$?$a$N(B
+\textsf{docstrip}$BMQ%P%C%A%U%!%$%k$r$$$/$D$+$N%U%!%$%k$KJ,3d$7$^$7$?!#(B
+
+.ins$B%U%!%$%k$H:n@.$5$l$k%U%!%$%k$N4X78$O!"$D$.$N$H$*$j$G$9!#(B
+
+\begin{quote}
+\begin{description}
+\item[plcore.ins]\mbox{}\\
+ $BA4BN$rE83+$9$k$H$-$KMQ$$$k!#(B
+ $B0J2<$N(B{.ins}$B%U%!%$%k$rE83+$9$k$N$HF1Ey!#(B
+\item[plfmt.ins]\mbox{}\\
+ $B%+!<%M%kItJ,$dIUB0%Q%C%1!<%8%U%!%$%k$r:n@.$9$k$N$KMQ$$$k!#(B
+\item[plcls.ins]\mbox{}\\
+ $BI8=`%/%i%9%U%!%$%k$r:n@.$9$k$N$KMQ$$$k!#(B
+\item[pldocs.ins]\mbox{}\\
+ $BIUB0$NJ8=q%U%!%$%k$r=hM}$9$k$?$a$N%U%!%$%k$r:n@.$9$k$N$KMQ$$$k!#(B
+\item[pl209.ins]\mbox{}\\
+ 2.09$B8_49%b!<%I$GMQ$$$k%U%!%$%k$r:n@.$9$k$N$KMQ$$$k!#(B
+\end{description}
+\end{quote}
+
+$B$?$H$($P!"%/%i%9%U%!%$%k$@$1$r:FEY!":n@.$7$?$$>l9g$O!"$D$.$N$h$&$K(B
+platex$B%3%^%s%I$G(Bplcls.ins$B%U%!%$%k$r=hM}$7$^$9!#(B
+
+\begin{verbatim}
+ platex plcls.ins
+\end{verbatim}
+
+$B$9$k$H!"(Bjarticle.cls$B$d(Btarticle.cls$B$J$I$NI8=`%/%i%9%U%!%$%k$H!"(B
+jsize10.clo$B$J$I$NJd=u%/%i%9%U%!%$%k$,%+%l%s%H%G%#%l%/%H%j$K:n@.$5$l$^$9!#(B
+
+
+\section{$B%/%i%9%U%!%$%k(B}
+$BI8=`%/%i%9%U%!%$%k(B\{j,t\}\{aritlce,book,report\}$B%/%i%9$KBP$7$F9T$J$o$l$?(B
+$BJQ99$O$D$.$N$H$*$j$G$9!#(B
+
+\subsection{$BK\J8NN0h$N9-$$%l%$%"%&%H(B}
+j\LaTeX~2.09$B$d(Bp\LaTeX~2.09$B$H$H$b$K;H$o$l$F$$$?!"(B
+|a4j|, |a5j|, |b4j|,|b5j|, |a4p|, |a5p|, |b4p|,|b5p|$B$N%9%?%$%k%U%!%$%k$H(B
+$BF1Ey$N%l%$%"%&%H$r$9$k$?$a$N%/%i%9%*%W%7%g%s$rDI2C$7$^$7$?!#(B
+$B$3$l$i$N%*%W%7%g%s$r;XDj$9$k$H!"%G%U%)%k%H$G@_Dj$5$l$F$$$kK\J8NN0h$h$j$b(B
+$B9-$$%l%$%"%&%H$GJ8>O$r:n@.$9$k$3$H$,$G$-$^$9!#(B
+
+$B%*%W%7%g%sL>$O!"0JA0$N%9%?%$%k%U%!%$%kL>$HF1$8$G$9!#(B
+$B:G8e$,(B``j''$B$G=*$o$k$b$N$O2#AH@lMQ!"(B``p''$B$G=*$o$k$b$N$O=D2#N>MQ$N%9%?%$%k(B
+$B$G$7$?$,!"(Bp\LaTeXe{}$B$G$O$H$/$K6hJL$r$7$F$$$^$;$s!#(B
+``j''$B$G=*$o$k%*%W%7%g%s$b(B``p''$B$G=*$o$k%*%W%7%g%s$b=D2#N>MQ$G$9!#(B
+
+$B>e5-$N(B8$B$D$N%/%i%9%*%W%7%g%s$O!"MQ;f%5%$%:$N@_Dj$b4^$s$G$$$^$9!#(B
+$B$D$^$j(B``b5j''$B$r;XDj$7$?$H$-$K$OMQ;f%5%$%:$,(BB5$B$K$J$j$^$9!#(B
+$B$3$l$i$N%/%i%9%*%W%7%g%s$r;XDj$9$k$H$-$O!"(Bp\LaTeXe{}$B$GI8=`$N(B|b5paper|$B$J$I(B
+$B$NMQ;f%5%$%:$r;XDj$9$k%/%i%9%*%W%7%g%s$r>JN,$9$k$3$H$,$G$-$^$9!#(B
+
+$B$J$*!">e5-$N%9%?%$%k%U%!%$%k$G%5%]!<%H$7$F$$$?!"%i%s%I%9%1!<%W;~$N;XDj$O(B
+$B$^$@%5%]!<%H$7$F$$$^$;$s!#(B
+
+\subsection{$B?t<0Fb$G$NF|K\8lJ8;z(B}
+$B%U%)%s%H%U%!%_%j$KF|K\8l%U%)%s%H$rMQ$$$J$$$h$&$K$9$k$?$a$N(B
+$B%/%i%9%*%W%7%g%s(B|disablejfam|$B$rF3F~$7$^$7$?!#(B
+$B$?$@$7!"(Bp\LaTeX~2.09$B8_49%b!<%I$G$O(B|disablejfam|$B%*%W%7%g%s$rG'<1$7$^$;$s!#(B
+$B;XDj$7$?>l9g$O%(%i!<$K$J$j$^$9!#(B
+
+$B$3$N%*%W%7%g%s$r;XDj$9$k$H!"?t<0Fb$KF|K\8l$rD>@\!"5-=R$G$-$J$/$J$j$^$9!#(B
+$B$^$?!"?t<0J8;z$r@Z$jBX$($k(B|\mathmc|$B$H(B|\mathgt|$B%3%^%s%I$,@k8@$5$l$^$;$s$N$G!"(B
+$B$3$l$i$N%3%^%s%I$r;H$&$H%(%i!<$K$J$j$^$9!#(B|disablejfam|$B$r;XDj$7$?>uBV$G!"(B
+$B?t<0Fb$KF|K\8l$r5-=R$9$k>l9g$O(B|\textmc|$B$d(B|\textgt|$B%3%^%s%I$rMQ$$$F$/$@$5$$!#(B
+|\textmc|$B$H(B|\textgt|$B$O(Bp\LaTeXe{}$B$N%U%)!<%^%C%H%U%!%$%kFb$G@k8@$5$l$F$$$^$9!#(B
+
+p\LaTeXe{}$B$G$O!"(Barticle, book, report$B%/%i%9$J$I!"(B\LaTeX{}$B$N%/%i%9$rMQ$$$F$b(B
+$BJ8=q$r:n@.$9$k$3$H$b$G$-$^$9$,!"$3$l$i$N%/%i%9$K$O?t<0Fb$KF|K\8l$rD>@\5-=R(B
+$B$9$k;EAH$_$,MQ0U$5$l$F$$$^$;$s!#(B
+$B$3$l$O(Bp\LaTeXe{}$B$N%/%i%9$G(B|disablejfam|$B$r;XDj$7$?$N$HF1$8>uBV$G$9!#(B
+$B$3$N>l9g$b!"(B|\textmc|$B$d(B|\textgt|$B%3%^%s%I$rMQ$$$l$P?t<0Fb$KF|K\8l$r5-=R$9$k(B
+$B$3$H$O$G$-$^$9!#$?$@$7!"F|K\8l$rMQ$$$?J8=q%U%!%$%k$O(Bp\LaTeXe{}$B0J30$G$O(B
+$B=hM}$G$-$^$;$s$N$G!"$=$NJ8=q%U%!%$%k$NG[I[$K$OCm0U$7$F$/$@$5$$!#(B
+
+|disablejfam|$B%*%W%7%g%s$r@_$1$?0UL#$N>\:Y$K$D$$$F$O!"(B
+$B!V%U%)%s%H%U%!%_%j!W$r;2>H$7$F$/$@$5$$!#(B
+
+\subsection{$B%H%s%\(B}
+p\LaTeXe{}\texttt{<1996/03/05>}$BHG$G$b!"(B|tombow|$B%*%W%7%g%s$K$h$C$F!"(B
+$B:[CGMQ$N%H%s%\$r=PNO$9$k$3$H$,$G$-$^$7$?!#(B
+p\LaTeXe{}\texttt{<1997/02/01>}$BHG$G$O!"%H%s%\$NOF$K(BDVI$B%U%!%$%k$N:n@.F|IU(B
+$B$r=PNO$9$k$h$&$K3HD%$7$F$$$^$9!#(B
+$B:n@.F|IU$r=PNO$7$?$/$J$$>l9g$O!"(B|tombow|$B%*%W%7%g%s$G$O$J$/!"(B
+$B!J:G8e$N(B``w''$B$N$J$$!K(B|tombo|$B%*%W%7%g%s$r;XDj$7$F$/$@$5$$!#(B
+
+$B$^$?!"(Bp\LaTeX~2.09$B8_49%b!<%I$G%H%s%\%*%W%7%g%s$r;XDj$7$?$H$-$K!"%H%s%\$,(B
+$B$*$+$7$J>l=j$K=PNO$5$l$k%P%0$r=$@5$7$F$"$j$^$9!#(B
+
+
+\section{$B=qBNJQ99%3%^%s%I(B}
+$B=qBNJQ99%3%^%s%I$K$b$$$/$D$+$N=$@5$,2C$($i$l$^$7$?!#(B
+
+\subsection{$B8_49%b!<%I$G$N%3%^%s%I(B}
+p\LaTeX~2.09$B8_49%b!<%I$GMQ$$$i$l$k(B|\rm|$B%3%^%s%I$d(B|\it|$B%3%^%s%I(B
+$B$J$I$N=qBNJQ99%3%^%s%I$r2$J8%U%)%s%H$@$1$r@Z$jBX$($k$h$&$K$7$^$7$?!#(B
+$B$?$@$7(B|\mc|$B%3%^%s%I$H(B|\gt|$B%3%^%s%I$OOBJ8%U%)%s%H$@$1$r@Z$jBX$($^$9!#(B
+$B$^$?(B|\bf|$B%3%^%s%I$OOBJ8$H2$J8%U%)%s%H$NN>J}$r@Z$jBX$($^$9!#(B
+$B$3$l$O!"(Bj\LaTeX~2.09$B$d(Bp\LaTeX~2.09$B$G$NF0:n$H40A4$KF1$8$G$9!#(B
+
+p\LaTeXe{}$B$NK\Mh$N%b!<%I$G!"=>Mh$NFsJ8;z%3%^%s%I$rMQ$$$?>l9g$OF0:n$,(B
+$B0[$J$j$^$9$N(B $BCm0U$7$F$/$@$5$$!#8_49%b!<%I0J30$N$H$-!"FsJ8;z%3%^%s%I$O!"(B
+$B0lEY!"(B|\normalfont|$B$K%j%;%C%H$7$F$+$i!"$=$N%3%^%s%I$KBP1~$9$kB0@-$r(B
+$B@Z$jBX$($^$9!#$7$?$,$C$F!"(B|\it\tt|$B$H$$$&;XDj$O(B|\tt|$B$@$1$,M-8z(B
+$B$G$"$j!"(B|\tt\it|$B$H$$$&;XDj$O(B|\it|$B$N;XDj$,M-8z$G$9!#(B
+
+$B$3$NF0:n$OOBJ8%U%)%s%H$KBP$7$F$b$"$F$O$^$j$^$9!#$9$J$o$A(B|\it\gt|$B$H(B
+$B$7$F$b!"OBJ8%U%)%s%H$,%4%7%C%/BN$K$J$k$@$1$G!"(B|\it|$B$N1F6A$O2?$b(B
+$B<u$1$^$;$s!#$?$@$7(B|gt|$B%3%^%s%IFb$G<B9T$5$l$k(B|\normalfont|$B$N1F6A$G(B
+$B2$J8%U%)%s%H$O2$J8$N%G%U%)%k%H%U%)%s%H$K$J$j$^$9!#(B
+$B5U$K(B|\gt\it|$B$N>l9g!"2$J8%U%)%s%H$O%$%?%j%C%/BN$K$J$j$^$9$,!"(B
+$BOBJ8%U%)%s%H$O2?$bJQ$o$j$^$;$s!#$3$N>l9g$b(B|\it|$B%3%^%s%IFb$N(B
+|\normalfont|$B$K$h$j!"OBJ8%U%)%s%H$OOBJ8%G%U%)%k%H%U%)%s%H$K$J$j$^$9!#(B
+
+p\LaTeXe{}$B$NK\Mh$N%b!<%I$G!"(B
+$BOBJ8%U%)%s%H$r%4%7%C%/BN!"2$J8%U%)%s%H$r%$%?%j%C%/BN$K$7$?$$>l9g$O!"(B
+|\gtfamily\itfamily|$B$+(B|\itfamily\gtfamily|$B$H$7$^$9!#(B
+
+\subsection{$B?t<0J8;z%U%)%s%H(B}
+|\rm|$B%3%^%s%I$G2$J8%U%)%s%H$,%m!<%^%sBN$N@5BN$K$J$i$J$$%P%0$r=$@5$7$^$7$?!#(B
+|\bf|$B%3%^%s%I$K$D$$$F$bF1MM$N=$@5$,$J$5$l$F$$$^$9!#(B
+
+|\section|$B$d(B|\caption|$B$G(B|\rm|$B$d(B|\bf|$B$rMQ$$$?$H$-!"(B
+$BL\<!%U%!%$%k$d?^I=L\<!%U%!%$%k$J$I$K!"%3%^%s%I$,E83+$5$l$?(B
+$B%3!<%I$G=PNO$5$l$F$7$^$&%P%0$r=$@5$7$^$7$?!#(B
+
+
+\subsection{$B%U%)%s%H%U%!%_%j(B}
+p\LaTeXe{}$B$NFCD'$N0l$D$K!"?t<0Fb$K$bD>@\!"F|K\8l$r5-=R$9$k$3$H$,$G$-$k(B
+$B$3$H$,5s$2$i$l$^$9!#$7$+$7(BAMS$B$N%Q%C%1!<%8$d(BPostScript$BMQ$N%Q%C%1!<%8$r(B
+$BMQ$$$?>l9g!"(B
+\begin{verbatim}
+ No room for a new \mathgroup .
+\end{verbatim}
+$B$d(B
+\begin{verbatim}
+ Too many math alphabets used in version
+ normal.
+\end{verbatim}
+$B$J$I$N%(%i!<$,I=<($5$l$k>l9g$,$"$j$^$9!#(B
+
+$B$3$l$i$N%(%i!<$O!"?t<0Fb$KD>@\!"5-=R$G$-$k%U%)%s%H%U%!%_%j$H$7$F(B\TeX{}$B$,(B
+$B07$($k$N$,:GBg(B16$B8D$H$$$&$3$H$+$i5/$3$C$F$$$^$9!#$3$N%(%i!<$r2sHr$9$k$K$O!"(B
+$BMQ$$$k%U%)%s%H%U%!%_%j$N?t$r(B16$B8D0JFb$K$9$k$7$+$"$j$^$;$s!#(B
+
+$B$=$3$G!"(Bp\LaTeXe{}$B$G$O!"F|K\8l$r?t<0Fb$KD>@\5-=R$O$G$-$J$/$J$k$1$l$I$b!"(B
+$BI,MW$J%Q%C%1!<%8$r%m!<%I$G$-$k!J$+$b$7$l$J$$!K$h$&$K$9$k$?$a$N%*%W%7%g%s(B
+|disablejfam|$B$r%/%i%9%U%!%$%k$KMQ0U$7$^$7$?!#(B
+|disablejfam|$B%*%W%7%g%s$r;XDj$9$l$P!"%U%)%s%H%U%!%_%j$r@aLs$9$k(B
+$B$3$H$,$G$-$^$9!#$?$@$7!"@k8@$7$F$$$k?t$O0l$D$@$1$G$9$N$G!"MQ$$$k%Q%C%1!<%8(B
+$B$K$h$C$F$O8z2L$,$J$$$+$b$7$l$J$$$3$H$KCm0U$r$7$F$/$@$5$$!#(B
+
+$B;29M$KI=(B\ref{famlist}$B$K(B\LaTeX{}$B$d(Bp\LaTeX{}$B$d%Q%C%1!<%8N`$GMQ$$$k(B
+$B%U%)%s%H%U%!%_%j$N0lMw$r<($7$^$9!#(B\LaTeX{}$B$N(B4$B$D$OI,?\$G$9!#(B
+
+$BF1$8L>A0$N%U%!%_%jL>$O=EJ#$7$F@k8@$5$l$^$;$s$N$G!"(B
+p\LaTeXe{}$B$N(B2.09$B8_49%b!<%I$G$b(B``mincho''$B$H(B``gothic''$B$NFs$D$@$1$,@k8@(B
+$B$5$l$k$3$H$K$J$j$^$9!#(B``mincho'', ``mincho'', ``gothic''$B$N;0$D$G$O$"$j$^$;$s!#(B
+
+p\LaTeX~2.09$B8_49%b!<%I;~$K$O!"(B\LaTeX~2.09$B8_49%b!<%I(B
+$B$N@_Dj$b%m!<%I$9$k$?$a!"9g7W$G(B$4+7+2=13$$B8D$r;H$&$3$H$K$J$j$^$9!#(B
+
+psnfss$B$N(BLucida$B%U%)%s%H4XO"%Q%C%1!<%8$O!"(Bnoexpert$B%*%W%7%g%s$G(B2,~3$B8D!"(B
+$BM^@)$9$k$3$H$,$G$-$^$9!#>\:Y$O(Bpsnfss$B$N%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(B
+
+\begin{table*}[htb]
+\caption{\label{famlist}$B%U%)%s%H%U%!%_%j$N@k8@2U=j(B}
+\begin{tabbing}
+MMM\=p\LaTeX~2.09$B8_49%b!<%I(B \=: $B%/%i%9%U%!%$%k(B :\=\+\kill
+\LaTeX $B%+!<%M%k(B
+ \>: \>: operators, letters, symbols, largesymbols\\
+\LaTeX~2.09$B8_49%b!<%I(B
+ \>: latex209.def \>: bold, sans, typewriter, italic, smallcaps, slanted\\
+ \>: latexsym.sty \>: lasy\\
+p\LaTeXe
+ \>: $B%/%i%9%U%!%$%k(B \>: mincho\\
+p\LaTeX~2.09$B8_49%b!<%I(B
+ \>: pl209.def \>: mincho, gothic\\
+AMS$B$N%Q%C%1!<%8(B
+ \>: amsmath.sty \>: (none)\\
+ \>: amstex.sty \>: AMSa, AMSb\\
+ \>: amsfonts.sty\>: AMSa, AMSb\\
+balel$B%Q%C%1!<%8(B
+ \>: cyrmath.sty \>: cyrletters\\
+psnfss$B%Q%C%1!<%8(B
+ \>: mathptm.sty \>: operators, letters, symbols, largesymbols, bold, italic\\
+ \>: lucbmath.sty\>: letters, mathupright, symbols, largesymbols, italics,\\
+ \>\>: arrows, boldarrows, operators\\
+ \>: lucbr.sty \>: letters, mathupright, symbols, largesymbols, italics,\\
+ \>\>: arrows, boldarrows, operators\\
+ \>: lucmath.sty \>: operators, letters, symbols, largesymbols, italics,\\
+ \>\>: letters, mathupright, arrows, boldarrows\\
+ \>: lucmtime.sty\>: letters, operators, mathupright, symbols, largesymbols,\\
+ \>\>: italics, arrows, boldarrows
+\end{tabbing}
+\end{table*}
+
+
+
+\section{$B$=$NB>$N>pJs(B}
+$B:G?7>pJs$O!"(Bp\TeX{}$B%[!<%`%Z!<%8(B
+\begin{verbatim}
+ http://www.ascii.co.jp/pb/ptex
+\end{verbatim}
+$B$h$j!"F~<j$9$k$3$H$,$G$-$^$9!#(B
+
+p\LaTeXe{}$B$K$D$$$F$N$*Ld$$9g$o$;$d%P%0%l%]!<%H$J$I$O!"EE;R%a!<%k$G(B
+\begin{verbatim}
+ www-ptex$B!w(Bascii.co.jp
+\end{verbatim}
+$B$^$G$*4j$$$7$^$9!#(B
+
+\end{document}
diff --git a/language/japanese/platex/plnews02.tex b/language/japanese/platex/plnews02.tex
new file mode 100644
index 0000000000..b0326548b8
--- /dev/null
+++ b/language/japanese/platex/plnews02.tex
@@ -0,0 +1,122 @@
+%% <1997/07/02>
+\documentclass{plnews}
+
+\publicationmonth{7}
+\publicationyear{1997}
+\publicationissue{2}
+\author{$BCfLn(B $B8-!J(B\texttt{<ken-na at ascii.co.jp>}$B!K(B
+ \& $BIY3_(B $B=(><!J(B\texttt{<hideak-t at ascii.co.jp>}$B!K(B
+}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O!"(Bp\LaTeXe{}\texttt{<1997/02/01>+2}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+
+$B$3$N(Bp\LaTeXe{}$B$O!"(B\LaTeX{}\texttt{<1997/06/01>}$BHG$KBP1~$7$F$$$^$9!#(B
+\LaTeX{}$B%l%Y%k$G$N99?72U=j$O!"(B\LaTeX{}$B$KIUB0$N(Bltnews$B%U%!%$%k$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+
+\section{$B%/%i%9%U%!%$%k(B}
+$BF|K\8l%/%i%9%U%!%$%k$K4X$7$F!"0J2<$NJQ99$r2C$($^$7$?!#(B
+
+\begin{itemize}
+\item $B=DAH%/%i%9$G(B|\maketitle|$B$K$h$k%?%$%H%k$r=DAH$G=PNO$9$k$h$&$K$7$?!#(B
+\item $B2#AH%/%i%9$G(B|a4j|$B$d(B|b5j|$B$J$I$N%*%W%7%g%s$r;XDj$7$?$H$-$N(B
+ $B%H%C%W%^!<%8%s$rBg$-$/$7$?!#(B
+\item treport, tbook$B%/%i%9$G(B|\thefigure|$B%3%^%s%I$,9=J8%(%i!<$K$J$k$N$r(B
+ $B=$@5$7$?!#(B
+\end{itemize}
+
+\section{$B%U%)%s%H!&%;%l%/%7%g%s(B}
+$BF|K\8l(BNFSS2$B$K$*$1$k!"(B
+\begin{itemize}
+\item $B=DAH;~$K(B|\bfseries|$B$r;H$&$H8eB3$N(B|\textgt|$B$d(B|\gtfamily|$B$J$I$N(B
+ $B%4%7%C%/@Z$jBX$(L?Na$,8z$+$J$$(B
+\end{itemize}
+$B$H$$$&%P%0$r=$@5$9$k$?$a$K!"0J2<$N$h$&$K$7$^$7$?!#(B
+\begin{itemize}
+\item $BOBJ8%(%s%3!<%I$N@k8@$r=DAHMQ$H2#AHMQ$H$GJL$N%3%^%s%I$G9T$&(B
+\end{itemize}
+$B6qBNE*$K$O!"$D$.$N%3%^%s%I$G@k8@$r$7$^$9!#(B
+
+\begin{tabbing}
+****\=12345678\=12345678901234567890\kill
+\>|\DeclareYokoKanjiEncoding|\\
+\> \> $B2#AHMQOBJ8%(%s%3!<%I$N@k8@(B\\
+\>|\DeclareTateKanjiEncoding|\\
+\> \> $B=DAHMQOBJ8%(%s%3!<%I$N@k8@(B\\
+\end{tabbing}
+
+$B0JA0$N%P!<%8%g%s$+$i$N(B|\DeclareKanjiEncoding|$B%3%^%s%I$O(B
+$B2#AHMQOBJ8%(%s%3!<%I@k8@%3%^%s%I$HF1$8F0:n$r$7$^$9!#(B
+|\DeclareKanjiEncoding|$B%3%^%s%I$G=DAHMQOBJ8%(%s%3!<%I$r@k8@$7$F$$$k2U=j$O(B
+|\DeclareTateKanjiEncoding|$B%3%^%s%I$rMQ$$$F@k8@$9$k$h$&$K=$@5$7$F$/$@$5$$!#(B
+
+
+\section{$B6/D4%3%^%s%I$G%4%7%C%/$K(B}
+$B=>Mh!"(B|\emph|$B$d(B|\em|$B$G$OOBJ8%U%)%s%H$r@Z$jBX$($k$3$H$O$7$F$$$^$;$s$G$7$?$,!"(B
+$B:#2s$NHG$+$i6/D4;~$K(B|\gtfamily|$B$K$9$k$h$&$K$7$^$7$?!#(B
+$BF~$l;R$H$J$C$?(B|\emph|$B$d(B|\em|$B$NCf$G$O(B|\mcfamily|$B$r;H$$$^$9!#(B
+
+\section{$B2~9T%^%/%m$NJQ99$KBP1~(B}
+$BF|K\8l(B\TeX{}$B$N9TF,6XB'=hM}$O!"6XB'BP>]J8;z$ND>A0$K!"(B
+|\prekinsokupenalty|$B$G;XDj$5$l$?%Z%J%k%F%#$NCM$rA^F~$9$k$3$H$G9T$J$C$F$$$^$9!#(B
+$B0lJ}!"2~9T%3%^%s%I$OIi$N%Z%J%k%F%#!J(B$-10,000$$B!K$NCM$rA^F~$9$k$3$H$G(B
+$B2~9T$r9T$J$C$F$$$^$9!#$3$N$?$a!"2~9T%3%^%s%I$ND>8e$K6XB'J8;z$,$"$j!"(B
+$B$=$N6XB'%Z%J%k%F%#$NCM$,(B$10,000$$B$NJ8;z$N$H$-!"2~9T$N$?$a$N%Z%J%k%F%#$H(B
+$B6XB'%Z%J%k%F%#$NCM$,Aj;&$5$l$F$7$^$$!"2~9T$5$l$^$;$s!#(B
+
+\begin{quote}
+\begin{verbatim}
+$B$"$$$&$($*(B\\
+$B!*$+$-$/$1$3(B
+\end{verbatim}
+\end{quote}
+
+$B$=$3$G(Bp\LaTeXe{}$B$G$O!"(B\LaTeXe{}$B$N2~9T%^%/%m$K(B|\mbox{}|$B$rF~$l$k$3$H$K$h$C$F!"(B
+$B2~9T%^%/%m$N%Z%J%k%F%#$H9TF,6XB'J8;z$N%Z%J%k%F%#$,2C;;$5$l$k$3$H$rKI$$$G(B
+$B$$$^$7$?!#(B
+
+$B$H$3$m$,!"(B\LaTeXe\ \texttt{<1996/12/01>}$B$G2~9T%3%^%s%I$,BgI}$KJQ99$5$l$F(B
+$B$$$?$?$a!"(Bp\LaTeXe{}$B$G2C$($?=hM}$,L58z$K$J$C$F$$$^$7$?!#(B
+$B:#2s$NHG$G(B\LaTeXe{}$B$N2~9T%^%/%mJQ99$KBP1~$7$^$7$?!#(B
+
+$B$^$?!"0JA0$N(B\LaTeXe{}$B$N2~9T%^%/%m$G$O!"2~9T%3%^%s%I$G(B|\mbox{}|$B$,CV$+$l$F(B
+$B$$$?$N$G!"(B
+\begin{quote}
+\begin{verbatim}
+\verb|*****|\\
+\verb| aiueo|
+\end{verbatim}
+\end{quote}
+$B$H=q$$$?>l9g$b@5$7$/=hM}$5$l$F$$$^$7$?$,!"(B
+\LaTeXe\ \texttt{<1996/12/01>}$B0J9_$N2~9T%3%^%s%I$G$O(B|\mbox{}|$B$,CV$+$l$J$$$?$a!"(B
+|\\|$B$N<!$N9T$N(B|\verb|$B$N9TF,$N6uGr$,L5;k$5$l$k$H$$$&8=>]$,$*$-$F$$$^$7$?!#(B
+
+\LaTeXe{}$B$G@5$7$/=hM}$5$l$k$N$O!"(B|\verb|$B%3%^%s%I$N:G=i$K(B|\hbox{}|$B$rF~$l$F$$$k(B
+$B$+$i$G$9!#$7$+$7!"$3$N%\%C%/%9$,$"$k$H(B|\xkanjiskip|$B$,F~$i$J$$$?$a!"(B
+p\LaTeXe{}$B$G$O(B|\verb|$B$ND>8e$K(B|\hbox{}|$B$rF~$l$J$$$h$&$K$7$F$$$^$9!#(B
+
+|\verb|$B$G(B|\hbox{}|$B$,F~$i$J$/$F$b!"2~9T%3%^%s%I$K$h$C$F9TF,$K(B|\mbox{}|$B$,F~$k(B
+$B>l9g$O!"@hF,$N6uGr$O6uGr$H$7$FG'<1$5$l$F$$$?$N$G$9$,!"(B
+\LaTeXe{}$B$N2~9T%^%/%mJQ99$K$h$C$F!"9TF,$N(B|\mbox{}|$B$,A^F~$5$l$J$/$J$C$?$?$a$K!"(B
+\TeX{}$B$,L5;k$9$Y$-9TF,$N6uGr$H2r<a$5$l$k7k2L$H$J$C$F$$$^$7$?!#(B
+$B:#2s$NBP1~$G!"$3$NLdBj$bF1;~$K2r7h$5$l$F$$$^$9!#(B
+
+\section{$B$=$NB>$N>pJs(B}
+$B:G?7>pJs$O!"(Bp\TeX{}$B%[!<%`%Z!<%8(B
+\begin{verbatim}
+ http://www.ascii.co.jp/pb/ptex
+\end{verbatim}
+$B$h$j!"F~<j$9$k$3$H$,$G$-$^$9!#(B
+
+p\LaTeXe{}$B$K$D$$$F$N%P%0Js9p$d$*Ld$$9g$o$;$J$I$O!"EE;R%a!<%k$G(B
+\begin{verbatim}
+ www-ptex$B!w(Bascii.co.jp
+\end{verbatim}
+$B$^$G$*4j$$$7$^$9!#(B
+
+\end{document}
diff --git a/language/japanese/platex/plnews03.tex b/language/japanese/platex/plnews03.tex
new file mode 100644
index 0000000000..59d5fed3c1
--- /dev/null
+++ b/language/japanese/platex/plnews03.tex
@@ -0,0 +1,80 @@
+%% <1998/02/17>
+\documentclass{plnews}
+
+\publicationyear{1998}
+\publicationmonth{2}
+\publicationissue{3}
+\author{$BCfLn(B $B8-!J(B\texttt{<ken-na at ascii.co.jp>}$B!K(B
+ \& $BIY3_(B $B=(><!J(B\texttt{<hideak-t at ascii.co.jp>}$B!K(B
+}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O!"(Bp\LaTeXe{}\texttt{<1998/02/01>}$BHG$K$D$$$F!"(B
+p\LaTeXe{}\texttt{<1997/07/02>}$BHG$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+
+$B$3$N(Bp\LaTeXe{}$B$O!"(B\LaTeX{}\texttt{<1997/12/01>}$BHG$KBP1~$7$F$$$^$9!#(B
+\LaTeX{}$B%l%Y%k$G$N99?72U=j$O!"(B\LaTeX{}$B$KIUB0$N(Bltnews$B%U%!%$%k$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+
+\section{$B%Q%C%A$N<h$j9~$_(B}
+plpatch.ltx$B$GDs6!$7$F$$$?!"$D$.$N=$@5$r<h$j9~$_$^$7$?!#(B
+
+\begin{itemize}
+\item $B>.J8;z$N%U%!%$%kL>$N%U%)%s%HDj5A%U%!%$%k!J(B.fd$B%U%!%$%k!K$r%m!<%I$9$k(B
+$B$?$a$N=$@5!#(B
+\item |\\|$B%3%^%s%I$ND>A0$N6uGr$rL5;k$9$k$?$a$N=$@5!#(B
+\end{itemize}
+
+\section{$B%/%i%9%U%!%$%k$N=$@5(B}
+$BF|K\8l%/%i%9%U%!%$%k!J(B1.1e$B!K$KBP$7$F!"0J2<$NJQ99$r2C$($^$7$?!#(B
+
+\begin{itemize}
+\item $B=DAH%/%i%9$G=qBN$NBg$-$5$rJQ99$7$?$H$-!"%Y!<%9%i%$%s$,$:$l$k!J(B1.1f$B!K!#(B
+\item oneside$B%*%W%7%g%s$r;XDj$7$?$H$-!"(Bsection $B%l%Y%k$NJ8;zNs$,Cl$K(B
+ $B=PNO$5$l$J$$!J(B1.1g$B!K!#(B
+\item landscape$B%*%W%7%g%s;XDj;~$N%l%$%"%&%H%Q%i%a!<%?$N=$@5!J(B1.1h$B!K!#(B
+\item jreport, jbook$B%/%i%9$G!"(Boneside$B%*%W%7%g%s$r;XDj$7!"%Z!<%8%9%?%$%k$r(B
+ bothstyle$B$K$9$k$H!"%3%s%Q%$%k%(%i!<$K$J$k!J(B1.1i$B!K!#(B
+\end{itemize}
+
+\section{$B%U%)!<%^%C%H%U%!%$%k:n@.;~$NCm0U(B}
+$B8=:_$N(Bp\TeX{}$B!J(Bp2.1.5$B!K$G$O!"(B8$B%S%C%H%3!<%I$NO"B3$r(B16$B%S%C%H%3!<%I$HG'<1$7$F(B
+$B$7$^$&>l9g$,$"$j$^$9!#$=$N$?$a!"%U%i%s%98l$d%-%j%kJ8;z$J$I$N(B
+8$B%S%C%H%3!<%I$,O"B3$9$k%O%$%U%s%Q%?!<%s$O$^$:;H$($;$s!#(B
+$BNc$($P(Bcmcyralt$B%Q%C%1!<%8$G$O!"ESCf$G$D$.$N$h$&$J%(%i!<$K$J$j$^$9!#(B
+
+\begin{verbatim}
+(/usr/local/share/texmf/tex/latex/contrib/
+other/cmcyralt/rhyphen.tex Russian hyphena
+tion
+! Bad \patterns.
+l.107 . $B$((B
+ 2
+?
+\end{verbatim}
+
+$B$3$N$H$-$O!"(B``|?|''$B$N%W%m%s%W%H$KBP$7$F(B``|x|''$B$G=*N;$7$F$/$@$5$$!#(B
+$B;DG0$J$,$i!"$3$N%O%$%U%s%Q%?!<%s$r(Bp\TeX{}$B$GMxMQ$9$k$3$H$O$G$-$^$;$s!#(B
+
+p\LaTeXe{}$B$G$O(B|$TEXMF/tex/platex/base/|$B%G%#%l%/%H%j$K(Bhyphen.cfg$B$r(B
+$BMQ0U$7$F!"ITMQ0U$KB>$N%O%$%U%s%Q%?!<%s$rFI$_9~$^$J$$$h$&$K$7$F$"$j$^$9!#(B
+
+
+\section{$B$=$NB>(B}
+p\TeX{}$B$d(Bp\LaTeXe{}$B$K4X$9$k:G?7>pJs$O!"(Bp\TeX{}$B%[!<%`%Z!<%8(B
+\begin{verbatim}
+ http://www.ascii.co.jp/pb/ptex
+\end{verbatim}
+$B$h$j!"F~<j$9$k$3$H$,$G$-$^$9!#(B
+
+$B%P%0Js9p$d$*Ld$$9g$o$;$J$I$O!"EE;R%a!<%k$G(B
+\begin{verbatim}
+ www-ptex$B!w(Bascii.co.jp
+\end{verbatim}
+$B$^$G$*4j$$$7$^$9!#(B
+
+\end{document}
diff --git a/language/japanese/platex/plnews04.tex b/language/japanese/platex/plnews04.tex
new file mode 100644
index 0000000000..0f7a1a283f
--- /dev/null
+++ b/language/japanese/platex/plnews04.tex
@@ -0,0 +1,85 @@
+%% <1998/09/01>
+\documentclass{plnews}
+
+\publicationyear{1998}% $BH/9TG/(B
+\publicationmonth{9}% $BH/9T7n(B
+\publicationissue{4}% $BHV9f(B
+\author{$BCfLn(B $B8-!J(B\texttt{<ken-na at ascii.co.jp>}$B!K(B
+ \& $BIY3_(B $B=(><!J(B\texttt{<hideak-t at ascii.co.jp>}$B!K(B
+}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O!"(Bp\LaTeXe{}\texttt{<1998/09/01>}$BHG$K$D$$$F!"(B
+p\LaTeXe{}\texttt{<1998/02/17>}$BHG$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+$B$3$l$^$G$NJQ99E@$K$D$$$F$O!"(B\textsf{plnews*.tex}$B$d(BChanges.txt$B$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+
+$B$3$N(Bp\LaTeXe{}$B$O!"(B\LaTeX{}\texttt{<1998/06/01>}$BHG$KBP1~$7$F$$$^$9!#(B
+\LaTeX{}$B%l%Y%k$G$N99?72U=j$O!"(B\LaTeX{}$B$KIUB0$N(Bltnews$B%U%!%$%k$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+
+\section{NFSS2$B4XO"(B}
+\begin{itemize}
+\item |DeclareFixedCommand|$B$r%W%j%"%s%V%kIt$G$7$+;H$($J$$$h$&$K$7$F$$$?$N$r(B
+$B=$@5$7$^$7$?!#(B
+\end{itemize}
+
+\section{$B%Q%C%A$N<h$j9~$_(B}
+\texttt{<1998/02/17>}$BHG$X$N%Q%C%A$H$7$FDs6!$7$F$$$?!"(B
+$B$D$.$N=$@5$r<h$j9~$_$^$7$?!#(B
+\begin{itemize}
+\item \textsf{jclasses.dtx}$B!'(B
+ \verb|\rightmark|$B%3%^%s%I$N0z?t$K(B\verb|today|$B%3%^%s%I$r=$@5$7$?(B
+ $B$H$-!"=PNO$5$l$kF|IU$,!VJ?@.85G/!W$K$J$C$F$7$^$&$N$r=$@5(B
+ $B!J(B\textsf{pl980409.patch}$B!K!#(B
+\item \textsf{jclasses.dtx}$B!'(B
+ report$B$H(Bbook$B%/%i%9$G!"HV9f$NIU$+$J$$8+=P$7%l%Y%k$N%Z%J%k%F%#$r(B
+ \verb|\@M|$B$K=$@5!J(B\textsf{pl980323.patch}$B!K!#(B
+\item \textsf{tascmac.sty}$B!'(B
+ calc$B%Q%C%1!<%8$H$H$b$KMQ$$$?$H$-!"(B
+ \verb|screen|$B4D6-!"(B\verb|itembox|$B4D6-!"(B\verb|boxnote|$B4D6-$,(B
+ $B%(%i!<$K$J$k$N$r=$@5!J(B\textsf{pl980227.patch}$B!K!#(B
+\end{itemize}
+
+
+
+\section{$B%U%)!<%^%C%H%U%!%$%k:n@.;~$NCm0U(B}
+$B8=:_$N(Bp\TeX{}$B$G$O!"(B8$B%S%C%H%3!<%I$NO"B3$r(B16$B%S%C%H%3!<%I$HG'<1$7$F(B
+$B$7$^$&>l9g$,$"$j$^$9!#$=$N$?$a!"%U%i%s%98l$d%-%j%kJ8;z$J$I$N(B
+8$B%S%C%H%3!<%I$,O"B3$9$k%O%$%U%s%Q%?!<%s$O$^$:;H$($;$s!#(B
+$BNc$($P(Bcmcyralt$B%Q%C%1!<%8$G$O!"ESCf$G$D$.$N$h$&$J%(%i!<$K$J$j$^$9!#(B
+
+\begin{verbatim}
+(/usr/local/share/texmf/tex/latex/contrib/
+other/cmcyralt/rhyphen.tex Russian hyphena
+tion
+! Bad \patterns.
+l.107 . $B$((B
+ 2
+?
+\end{verbatim}
+
+$B$3$N$H$-$O!"(B``|?|''$B$N%W%m%s%W%H$KBP$7$F(B``|x|''$B$G=*N;$7$F$/$@$5$$!#(B
+$B;DG0$J$,$i!"$3$N%O%$%U%s%Q%?!<%s$r(Bp\TeX{}$B$GMxMQ$9$k$3$H$O$G$-$^$;$s!#(B
+
+$B$=$3$G!"(Bhyphen.cfg$B$rMQ0U$7$F!"ITMQ0U$KB>$N%O%$%U%s%Q%?!<%s$r(B
+$BFI$_9~$^$J$$$h$&$K$7$F$"$j$^$9!#>\$7$/$O(BREADME2.txt$B$r$4Mw$/$@$5$$!#(B
+
+\section{$B$=$NB>(B}
+p\TeX{}$B$d(Bp\LaTeXe{}$B$K4X$9$k:G?7>pJs$O!"(Bp\TeX{}$B%[!<%`%Z!<%8(B
+\begin{verbatim}
+ http://www.ascii.co.jp/pb/ptex
+\end{verbatim}
+$B$h$j!"F~<j$9$k$3$H$,$G$-$^$9!#(B
+
+$B%P%0Js9p$d$*Ld$$9g$o$;$J$I$O!"EE;R%a!<%k$G(B
+\begin{verbatim}
+ www-ptex$B!w(Bascii.co.jp
+\end{verbatim}
+$B$^$G$*4j$$$7$^$9!#(B
+
+\end{document}
diff --git a/language/japanese/platex/plnews05.tex b/language/japanese/platex/plnews05.tex
new file mode 100644
index 0000000000..c0ecf5be8e
--- /dev/null
+++ b/language/japanese/platex/plnews05.tex
@@ -0,0 +1,67 @@
+%% <1999/04/05>
+\documentclass{plnews}
+
+\publicationyear{1999}% $BH/9TG/(B
+\publicationmonth{4}% $BH/9T7n(B
+\publicationissue{5}% $BHV9f(B
+\author{$BCfLn(B $B8-!J(B\texttt{<ken-na at ascii.co.jp>}$B!K(B
+ \& $BIY3_(B $B=(><!J(B\texttt{<hideak-t at ascii.co.jp>}$B!K(B
+}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O!"(Bp\LaTeXe{}\texttt{<1999/04/05>}$BHG$K$D$$$F!"(B
+$BA02s$NHG!J(B\texttt{<1998/09/01>}$B!K$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+$B$=$l0JA0$NJQ99E@$K$D$$$F$O!"(B\textsf{plnews*.tex}$B$d(BChanges.txt$B$r(B
+$B;2>H$7$F$/$@$5$$!#(B\LaTeX{}$B%l%Y%k$G$N99?72U=j$O!"(B\LaTeX{}$B$KIUB0$N(B
+ltnews$B%U%!%$%k$r;2>H$7$F$/$@$5$$!#(B
+
+\section{$BA0%P!<%8%g%s$+$i$N=$@58D=j(B}
+\begin{itemize}
+\item $BOBJ8%G%U%)%k%H%U%)%s%H$rJQ99$7$F$b!"J8=q$N@hF,$G$OH?1G$5$l$J$$(B
+ $B$N$r=$@5$7$?!J$"$j$,$H$&!";3K\!wM}2JBg$5$s!K!#(B
+\item \verb|\\|$B%3%^%s%I$K%*%W%7%g%s$rIU$1$?>l9g!"$=$N8e$m$KM>7W$J(B
+ $B6uGr$,F~$C$F$7$^$&$N$r=$@5$7$?!J$"$j$,$H$&!"NkLZ!w5~Bg$5$s!K!#(B
+\item \LaTeX \texttt{<1998/12/01>}$B$KBP1~$7$?!#(B
+\end{itemize}
+
+
+\section{$B%U%)!<%^%C%H%U%!%$%k:n@.;~$NCm0U(B}
+$B8=:_$N(Bp\TeX{}$B$G$O!"(B8$B%S%C%H%3!<%I$NO"B3$r(B16$B%S%C%H%3!<%I$HG'<1$7$F(B
+$B$7$^$&>l9g$,$"$j$^$9!#$=$N$?$a!"%U%i%s%98l$d%-%j%kJ8;z$J$I$N(B
+8$B%S%C%H%3!<%I$,O"B3$9$k%O%$%U%s%Q%?!<%s$O$^$:;H$($;$s!#(B
+$BNc$($P(Bcmcyralt$B%Q%C%1!<%8$G$O!"ESCf$G$D$.$N$h$&$J%(%i!<$K$J$j$^$9!#(B
+
+\begin{verbatim}
+(/usr/local/share/texmf/tex/latex/contrib/
+other/cmcyralt/rhyphen.tex Russian hyphena
+tion
+! Bad \patterns.
+l.107 . $B$((B
+ 2
+?
+\end{verbatim}
+
+$B$3$N$H$-$O!"(B``|?|''$B$N%W%m%s%W%H$KBP$7$F(B``|x|''$B$G=*N;$7$F$/$@$5$$!#(B
+$B;DG0$J$,$i!"$3$N%O%$%U%s%Q%?!<%s$r(Bp\TeX{}$B$GMxMQ$9$k$3$H$O$G$-$^$;$s!#(B
+
+$B$=$3$G!"(Bhyphen.cfg$B$rMQ0U$7$F!"ITMQ0U$KB>$N%O%$%U%s%Q%?!<%s$r(B
+$BFI$_9~$^$J$$$h$&$K$7$F$"$j$^$9!#>\$7$/$O(BREADME2.txt$B$r$4Mw$/$@$5$$!#(B
+
+\section{$B$=$NB>(B}
+p\TeX{}$B$d(Bp\LaTeXe{}$B$K4X$9$k:G?7>pJs$O!"(Bp\TeX{}$B%[!<%`%Z!<%8(B
+\begin{verbatim}
+ http://www.ascii.co.jp/pb/ptex
+\end{verbatim}
+$B$h$j!"F~<j$9$k$3$H$,$G$-$^$9!#(B
+
+$B%P%0Js9p$d$*Ld$$9g$o$;$J$I$O!"EE;R%a!<%k$G(B
+\begin{verbatim}
+ www-ptex$B!w(Bascii.co.jp
+\end{verbatim}
+$B$^$G$*4j$$$7$^$9!#(B
+
+\end{document}
diff --git a/language/japanese/platex/plnews06.tex b/language/japanese/platex/plnews06.tex
new file mode 100644
index 0000000000..03b400e166
--- /dev/null
+++ b/language/japanese/platex/plnews06.tex
@@ -0,0 +1,137 @@
+%% <2000/11/03>
+\documentclass{plnews}
+
+\publicationyear{2000}% $BH/9TG/(B
+\publicationmonth{11}% $BH/9T7n(B
+\publicationissue{6}% $BHV9f(B
+\author{$BCfLn(B $B8-!J(B\texttt{<ken-na at ascii.co.jp>}$B!K(B
+ \& $BIY3_(B $B=(><!J(B\texttt{<hideak-t at ascii.co.jp>}$B!K(B
+}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O!"(Bp\LaTeXe{}\texttt{<2000/11/03>}$BHG$K$D$$$F!"(B
+$BA02s$NHG!J(B\texttt{<1999/08/09>}$B!K$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+$B$=$l0JA0$NJQ99E@$K$D$$$F$O!"(B\textsf{plnews*.tex}$B$d(BChanges.txt$B$r(B
+$B;2>H$7$F$/$@$5$$!#(B\LaTeX{}$B%l%Y%k$G$N99?72U=j$O!"(B\LaTeX{}$B$KIUB0$N(B
+ltnews$B%U%!%$%k$r;2>H$7$F$/$@$5$$!#(B
+
+\section{$BA0%P!<%8%g%s$+$i$N<g$J=$@58D=j(B}
+\begin{itemize}
+\item $BG[I[7ABV$r(Bte\TeX{}$B%i%$%V%i%j$N7A<0$KJQ99$7$?!#(B
+\item |nidanfloat|$B%Q%C%1!<%8$rIU$12C$($?!#(B
+\item |\text..|$B%3%^%s%I$N:8B&$K(B|\xkanjiskip|$B$,F~$i$J$$$N$r=$@5!J$"$j$,$H(B
+$B$&!"25It!wElBg$5$s!K(B
+\item tarticle, tbook, treport$B$G!"J8F,$NA43Q3+$-3g8LN`$,2<$,$k8=>]$KBP=h!#(B
+|\adjustbaseline|$B$r=$@5$7$^$7$?!#(B
+\item \LaTeX \texttt{<2000/06/01>}$B$KBP1~$7$?!#(B
+\end{itemize}
+
+
+\section{te\TeX{}$B%i%$%V%i%j7A<0$G$NG[I[(B}
+\textit{\TeX{} Live}$B$H$$$&(BTUG$B$GG[I[$7$F$$$k(B\TeX{}$B%7%9%F%`$r=8$a$?(B
+CD--ROM$B$,$"$j!"(BTUGboat$B9XFI<T$K$O$3$l$,(BTUGboat$B$H0l=o$KDj4|E*$KG[I[$5$l$F(B
+$B$$$^$9!#(Bte\TeX{}$B!J(BThomas Esser$B$K$h$k!K$O(B\textit{\TeX{} Live}$BMQ$K=8$a$i$l(B
+$B$?(B\TeX{}$B$N$3$H$G$9!#(B
+
+te\TeX{}$B$N(BTDS$B!J(B\textit{\TeX{} Directory Structure}$B!K$K=>$C$?G[I[J*$K$O!"(B
+$B%]!<%i%s%I8l$N(B\LaTeX{}$BMQ$K(B|platex|$B$H$$$&%G%#%l%/%H%j$,4^$^$l$F$*$j!"(B
+p\TeX{}$B$N(Bplatex$B$H=E$J$j$^$9!#$3$NLdBj$rHr$1$k$?$a$K!"(Bp\TeX{}$BMQ$N%G%#%l%/(B
+$B%H%j$r(B|texmf|$BD>2<$K(B|texmf/ptex|$B$H:n$j!"(Bp\TeX{}$B$G$O$=$A$i$rM%@h$7$F;H$&$h(B
+$B$&$K$7!"(Bte\TeX{}$B%i%$%V%i%j$K9g$o$;$?7A$G(Bp\TeX{}$B4XO"$N%i%$%V%i%j$r$^$H$a(B
+$B$F(B|ptex-texmf-*.tar.gz|$B$H$7$FG[I[$7$F$$$^$9!#(B
+
+$B$3$N%G%#%l%/%H%j9=@.$O=>Mh$N%G%#%l%/%H%j9=@.$H0[$J$C$F$*$j!"(B\LaTeXe{}$B$N(B
+|*.ins|$B$K$O%G%#%l%/%H%jL>$r5-=R$9$k$N$G!"(Bte\TeX{}$BMQ$NG[I[J*$H$OJL$K!"$3(B
+$B$l$^$G$N$h$&$K(Bp\LaTeXe{}$B$N%Q%C%1!<%8$r:n$k$H!"%G%#%l%/%H%jL>$N5-=R$@$1$,(B
+$B0[$J$j!"B>$OA4$/F1$8(B2$B<oN`$NG[I[J*$,=PMh>e$,$k$3$H$K$J$j$^$9!#$3$N>uBV$O(B
+$BK>$^$7$/$J$$$N$G!"(B\TeX{}$B$N@$3&A4BN$,(Bte\TeX{}$B$K%7%U%H$7$F$-$F$$$k$3$H$b9M(B
+$BN8$7(B\footnote{$BNc$($P!"%*%j%8%J%k$N(Bdvips$B$N:G?7HG$O(Bte\TeX{}$B$K4^$^$l$k$b$N(B
+$B$@$1$H$J$C$F$$$^$9!#(B}$B!"(Bp\LaTeXe{}$B$NG[I[$b(Bte\TeX{}$B%i%$%V%i%j7A<0$G$NG[I[(B
+$B7ABV$K9J$k$3$H$K$7$^$7$?!#:#8e(Bp\LaTeXe{}$B$N%P!<%8%g%s%"%C%W$O!"(B
+|ptex-texmf*.tar.gz|$B%"!<%+%$%V$K4^$^$l$k7A$G9T$J$&$3$H$K$J$j$^$9!#(B
+
+
+\section{nidanfloat$B%Q%C%1!<%8$N;H$$J}(B}
+|nidanfloat|$B%Q%C%1!<%8$O!"FsCJAH;~$KCJH4$-$N%U%m!<%H$r%Z!<%82<It$K$bG[CV(B
+$B$G$-$k$h$&$K$9$k$?$a$N%Q%C%1!<%8$G$9!#DL>o$O!"0J2<$N$h$&$J;H$$J}$K$J$k$G(B
+$B$7$g$&!#%Z!<%82<It$K(B1$BCJ$NI}$K<}$^$i$J$$(B|filename.eps|$B$r=PNO$9$k>l9g$G$9!#(B
+\begin{verbatim}
+\documentclass[twocolumn]{jarticle}
+\usepackage{graphics}
+\usepackage{nidanfloat}
+\begin{document}
+ <$BK\J8(B>
+\begin{figure*}[b]
+\includegraphics{filename.eps}
+\caption{$B%-%c%W%7%g%s(B}
+\end{figure*}
+ <$BK\J8(B>
+\end{document}
+\end{verbatim}
+$B$3$N$h$&$K!"FsCJAH$G(B|\usepackage{nidanfloat}|$B$r%W%j%"%s%V%k$K;XDj$7$F!"(B
+|figure|$B4D6-$N%*%W%7%g%s$G(B|b|$B$r;XDj$7$^$9!#%*%W%7%g%s$N0UL#$O!"DL>o$N(B
+|figure|$B4D6-$HF1$8$G$9!#(B|figure|$B4D6-$N%*%W%7%g%s$r;XDj$7$J$$>l9g$O!"%G%U%)(B
+$B%k%H$G(B|tb|$B$,;XDj$5$l$?$b$N$H8+$J$5$l$^$9!#(B
+
+$B$=$NB>!"DI2C$5$l$?%Q%i%a!<%?$J$I$KIU$$$F$O!"(B|nidanfloat.dtx|$B$r$4Mw$/$@$5(B
+$B$$!#(B
+
+
+\section{tarticle, tbook, treport$B$G!"J8F,$NA43Q3+$-3g8LN`$,2<$,$kLdBj(B}
+tarticle, tbook, treport$B$G!"J8F,$NA43Q3+$-3g8LN`$,2<$,$k$H$$$&8=>]$N$4;X(B
+$BE&$rD:$-$^$7$?!#$3$N%"%-$O!"(B|\adustbaseline|$B$G=PNO$5$l$F$$$?$b$N$G$9!#6q(B
+$BBNE*$K$O!"(B|\tbaselineshift|$B$K(B2$BEYB3$1$FCM$r;XDj$9$k$H!"$=$N8e$K$"$kA43Q3+(B
+$B$-3g8LN`$NA0$KM>J,$J%"%-$,=PNO$5$l$k$h$&$G$9!#(B|\adustbaseline|$B$G$O!"=DAH(B
+$B$N%Y!<%9%i%$%s0LCV$rJd@5$9$k:]$K(B|\tbaselineshift|$B$r=i4|2=$7!"$=$N8e$K7W(B
+$B;;CM$r@_Dj$9$k$H$$$&$3$H$r$7$F$$$?$?$a$K!"$=$ND>8e$KA43Q3+$-3g8LN`$,$/$k(B
+$B$HM>J,$J%"%-$,=PNO$5$l$F$$$?$b$N$G$9!#(B|\tbaselineshift|$B$X$NO"B3$7$?CM$N(B
+$B@_Dj$r9T$J$o$J$1$l$P$3$NLdBj$O5/$-$J$$$N$G!"$3$N%P!<%8%g%s$G(B
+|\adustbaseline|$B$N:G=i$G9T$J$C$F$$$?(B|\tbaselineshift|$B$N=i4|2=$r9T$J$o$J(B
+$B$$$h$&$KJQ99$7$^$7$?!#(B
+
+
+\section{\LaTeX \texttt{<2000/06/01>}$B$KBP1~(B}
+\LaTeX{}$B$N%P!<%8%g%s%"%C%W$,:#2s$+$i(B1$BG/Kh$K$J$j$^$7$?$N$G!"(Bp\LaTeXe{}$B$N(B
+$B99?7$b4pK\E*$K:#8e$O(B\LaTeX{}$B$K9g$o$;$F(B1$BG/Kh$K$J$j$^$9!#(B
+
+
+\section{$B%U%)!<%^%C%H%U%!%$%k:n@.;~$NCm0U(B}
+$B8=:_$N(Bp\TeX{}$B$G$O!"(B8$B%S%C%H%3!<%I$NO"B3$r(B16$B%S%C%H%3!<%I$HG'<1$7$F(B
+$B$7$^$&>l9g$,$"$j$^$9!#$=$N$?$a!"%U%i%s%98l$d%-%j%kJ8;z$J$I$N(B
+8$B%S%C%H%3!<%I$,O"B3$9$k%O%$%U%s%Q%?!<%s$O$^$:;H$($;$s!#(B
+$BNc$($P(Bcmcyralt$B%Q%C%1!<%8$G$O!"ESCf$G$D$.$N$h$&$J%(%i!<$K$J$j$^$9!#(B
+
+\begin{verbatim}
+(/usr/local/share/texmf/tex/latex/contrib/
+other/cmcyralt/rhyphen.tex Russian hyphena
+tion
+! Bad \patterns.
+l.107 . $B$((B
+ 2
+?
+\end{verbatim}
+
+$B$3$N$H$-$O!"(B``|?|''$B$N%W%m%s%W%H$KBP$7$F(B``|x|''$B$G=*N;$7$F$/$@$5$$!#(B
+$B;DG0$J$,$i!"$3$N%O%$%U%s%Q%?!<%s$r(Bp\TeX{}$B$GMxMQ$9$k$3$H$O$G$-$^$;$s!#(B
+
+$B$=$3$G!"(Bhyphen.cfg$B$rMQ0U$7$F!"ITMQ0U$KB>$N%O%$%U%s%Q%?!<%s$r(B
+$BFI$_9~$^$J$$$h$&$K$7$F$"$j$^$9!#>\$7$/$O(BREADME2.txt$B$r$4Mw$/$@$5$$!#(B
+
+\section{$B$=$NB>(B}
+p\TeX{}$B$d(Bp\LaTeXe{}$B$K4X$9$k:G?7>pJs$O!"(Bp\TeX{}$B%[!<%`%Z!<%8(B
+\begin{verbatim}
+ http://www.ascii.co.jp/pb/ptex
+\end{verbatim}
+$B$h$j!"F~<j$9$k$3$H$,$G$-$^$9!#(B
+
+$B%P%0Js9p$d$*Ld$$9g$o$;$J$I$O!"EE;R%a!<%k$G(B
+\begin{verbatim}
+ www-ptex$B!w(Bascii.co.jp
+\end{verbatim}
+$B$^$G$*4j$$$7$^$9!#(B
+
+\end{document}
diff --git a/language/japanese/platex/plnews07.tex b/language/japanese/platex/plnews07.tex
new file mode 100644
index 0000000000..292a6a367d
--- /dev/null
+++ b/language/japanese/platex/plnews07.tex
@@ -0,0 +1,106 @@
+%% <2001/10/04>
+\documentclass{plnews}
+
+\publicationyear{2001}% $BH/9TG/(B
+\publicationmonth{09}% $BH/9T7n(B
+\publicationissue{7}% $BHV9f(B
+\author{$BCfLn(B $B8-!J(B\texttt{<ken-na at ascii.co.jp>}$B!K(B
+ \& $BIY3_(B $B=(><!J(B\texttt{<hideak-t at ascii.co.jp>}$B!K(B
+}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O!"(Bp\LaTeXe{}\texttt{<2001/09/04>}$BHG$K$D$$$F!"(B
+$BA02s$NHG!J(B\texttt{<2000/11/03>}$B!K$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+$B$=$l0JA0$NJQ99E@$K$D$$$F$O!"(B\file{plnews*.tex}$B$d(B\file{Changes.txt}$B$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+\LaTeX{}$B%l%Y%k$G$N99?72U=j$O!"(B\LaTeX{}$B$KIUB0$N(B\file{ltnews*.tex}$B$J$I$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+
+
+\section{$B;HMQ$*$h$SG[IU>r7o$NJQ99(B}
+p\LaTeXe{}$B$NG[IU$*$h$SMxMQ>r7o$r!V!JJQ99:Q$_!K(BBSD$B%i%$%;%s%9!W$K$7$^$7$?!#(B
+$BFbMF$K$D$$$F$O!"(B\file{COPYRIGHT}$B%U%!%$%k$r;2>H$7$F$/$@$5$$!#(B
+
+
+\section{nidanfloat$B%Q%C%1!<%8(B}
+nidanfloat$B%Q%C%1!<%8$O!":G=*%Z!<%8$N:81&%+%i%`$N9b$5$r6Q0l$K(B
+$B$7$F=PNO$9$k$h$&$K$J$C$F$$$^$7$?!#(B
+
+$B$3$N5!G=$O!":8%+%i%`MQ$KJ];}$7$F$$$kFbMF$H!"1&%+%i%`MQ$NFbMF$r(B
+$B0lEY$^$H$a!":F$S#2J,3d$9$k$@$1$N4JN,$7$?<BAu$G<B8=$5$l$F$$$^$9!#(B
+
+$B$=$N$?$a!":8%+%i%`$@$1$G<}$^$kNL$7$+$J$$>l9g!"%Z!<%82<It$X$N=PNO$r(B
+$B;XDj$7$?!J#2CJH4$-$G$J$$!K%U%m!<%H$O1&%+%i%`$N2<$KCV$+$l$^$9!#(B
+$B$^$?!"(B|\newpage|$B%3%^%s%I$G%+%i%`$rJQ99$7$F$b!"(B
+$B%Z!<%8=PNO;~$K:8%+%i%`MQ$NFbMF$H$^$H$a$i$l!"J,3d0LCV$,D4@0$5$l$k$N$G!"(B
+$B;XDj$7$?(B|\newpage|$B%3%^%s%I$N0LCV$G%+%i%`$,JQ$o$j$^$;$s!#(B
+
+$B$=$3$G!":G=*%Z!<%8$N9b$5D4@05!G=$r;H$&$+$I$&$+$r@)8f$9$k$?$a$N(B
+$B%Q%C%1!<%8%*%W%7%g%s$rF3F~$7$^$7$?!#(B
+
+$B<+F0D4@0$9$k$K$O!"%Q%C%1!<%8$r%m!<%I$9$k$H$-$K(B``balance''$B%*%W%7%g%s$r(B
+$B;XDj$7$F$/$@$5$$!#(B
+\begin{verbatim}
+\usepackage[balance]{nidanfloat}
+\end{verbatim}
+
+$B5U$K!"D4@0$7$J$$$h$&$K$9$k$K$O!"%*%W%7%g%s(B``nobalance''$B$r;XDj$7$^$9!#(B
+\begin{verbatim}
+\usepackage[nobalance]{nidanfloat}
+\end{verbatim}
+
+$B%G%U%)%k%H$O(B\textbf{nobalance}$B$K$7$F$"$j$^$9!#(B
+
+
+\section{$B$=$NB>$N<g$J=$@52U=j(B}
+$B<!$N$h$&$JIT6q9g$N=$@5$d;EMM$NJQ99$r$7$^$7$?!#(B
+
+\begin{itemize}
+\item |\enlargethispage|$B%3%^%s%I$rMQ$$$?>l9g!"5SCm$HK\J8$,=E$J$C$F$7$^$&!#(B
+\item |\chpater|$B%3%^%s%I$H(B|\chapter*|$B%3%^%s%I$G8+=P$7$N=PNO0LCV$,0[$J$k!#(B
+\item |\adjustbaseline|$B$GD4@0NL$,9g$C$F$$$J$$!#(B
+\item |\pbox|$B%3%^%s%I$G(Bz$B%*%W%7%g%s$r;XDj$9$k$H%(%i!<$K$J$k!#(B
+\item $BL\<!$N%Z!<%8HV9f$N=qBN$r(B|\rmfamily|$B$+$i(B|\normalfont|$B$KJQ99$7$^$7$?!#(B
+\end{itemize}
+
+
+\section{$B%U%)!<%^%C%H%U%!%$%k:n@.;~$NCm0U(B}
+$B8=:_$N(Bp\TeX{}$B$G$O!"(B8$B%S%C%H%3!<%I$NO"B3$r(B16$B%S%C%H%3!<%I$HG'<1$7$F(B
+$B$7$^$&>l9g$,$"$j$^$9!#$=$N$?$a!"%U%i%s%98l$d%-%j%kJ8;z$J$I$N(B
+8$B%S%C%H%3!<%I$,O"B3$9$k%O%$%U%s%Q%?!<%s$O$^$:;H$($;$s!#(B
+$BNc$($P(Bcmcyralt$B%Q%C%1!<%8$G$O!"ESCf$G$D$.$N$h$&$J%(%i!<$K$J$j$^$9!#(B
+
+\begin{verbatim}
+(/usr/local/share/texmf/tex/latex/contrib/
+other/cmcyralt/rhyphen.tex Russian hyphena
+tion
+! Bad \patterns.
+l.107 . $B$((B
+ 2
+?
+\end{verbatim}
+
+$B$3$N$H$-$O!"(B``|?|''$B$N%W%m%s%W%H$KBP$7$F(B``|x|''$B$G=*N;$7$F$/$@$5$$!#(B
+$B;DG0$J$,$i!"$3$N%O%$%U%s%Q%?!<%s$r(Bp\TeX{}$B$GMxMQ$9$k$3$H$O$G$-$^$;$s!#(B
+
+$B$=$3$G!"(Bhyphen.cfg$B$rMQ0U$7$F!"ITMQ0U$KB>$N%O%$%U%s%Q%?!<%s$r(B
+$BFI$_9~$^$J$$$h$&$K$7$F$"$j$^$9!#>\$7$/$O(BREADME2.txt$B$r$4Mw$/$@$5$$!#(B
+
+\section{$B$=$NB>(B}
+p\TeX{}$B$d(Bp\LaTeXe{}$B$K4X$9$k:G?7>pJs$O!"(Bp\TeX{}$B%[!<%`%Z!<%8(B
+\begin{verbatim}
+ http://www.ascii.co.jp/pb/ptex
+\end{verbatim}
+$B$h$j!"F~<j$9$k$3$H$,$G$-$^$9!#(B
+
+$B%P%0Js9p$d$*Ld$$9g$o$;$J$I$O!"EE;R%a!<%k$G(B
+\begin{verbatim}
+ www-ptex$B!w(Bascii.co.jp
+\end{verbatim}
+$B$^$G$*4j$$$7$^$9!#(B
+
+\end{document}
diff --git a/language/japanese/platex/plnews08.tex b/language/japanese/platex/plnews08.tex
new file mode 100644
index 0000000000..1473686523
--- /dev/null
+++ b/language/japanese/platex/plnews08.tex
@@ -0,0 +1,111 @@
+%% <2001/10/04>
+\documentclass{plnews}
+
+\publicationyear{2004}% $BH/9TG/(B
+\publicationmonth{08}% $BH/9T7n(B
+\publicationissue{8}% $BHV9f(B
+\author{$BEDCf(B $BDwG7!J(B\texttt{<sada-t at ascii.co.jp>}$B!K(B
+}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O!"(Bp\LaTeXe{}\texttt{<2004/08/10>}$BHG$K$D$$$F!"(B
+$BA02s$NHG!J(B\texttt{<2001/09/04>}$B!K$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+$B$=$l0JA0$NJQ99E@$K$D$$$F$O!"(B\file{plnews*.tex}$B$d(B\file{Changes.txt}$B$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+\LaTeX{}$B%l%Y%k$G$N99?72U=j$O!"(B\LaTeX{}$B$KIUB0$N(B\file{ltnews*.tex}$B$J$I$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+
+
+\section{$BOBJ8%(%s%3!<%G%#%s%0@Z$jBX$(BP1~(B}
+$B$3$l$^$G$OOBJ8%(%s%3!<%G%#%s%0$K$O(BJY1,JT1$B$N$_$7$+;HMQ$G$-$^$;$s$G$7$?$,!"(B
+$B?7$?$K%(%s%3!<%G%#%s%0$rDj5A$7$F;HMQ$G$-$k$h$&$K$7$^$7$?!#(B
+
+$BOBJ8%(%s%3!<%G%#%s%0$O0J2<$N%^%/%m$GDj5A$7$^$9!#(B
+
+\begin{itemize}
+\item |\DeclareYokoKanjiEncoding{<$B%(%s%3!<%G%#%s%0L>(B>}{<$B<B9T%3!<%I(B>}{<$B<B9T%3!<%I(B>}|\\
+ $B2#=q$-MQ$NOBJ8%(%s%3!<%G%#%s%0$r@k8@$9$k!#(B
+ $B0z?t$O(B|\DeclareFontEncoding|$B$HF1$8!#(B
+\item |\DeclareTateKanjiEncoding{<$B%(%s%3!<%G%#%s%0L>(B>}{<$B<B9T%3!<%I(B>}{<$B<B9T%3!<%I(B>}|\\
+ $B=D=q$-MQ$NOBJ8%(%s%3!<%G%#%s%0$r@k8@$9$k!#(B
+ $B0z?t$O(B|\DeclareFontEncoding|$B$HF1$8!#(B
+\item |\KanjiEncodingPair{<$B2#%(%s%3!<%G%#%s%0L>(B>}{<$B=D%(%s%3!<%G%#%s%0L>(B>}|\\
+ $B2#=q$-$H=D=q$-$NOBJ8%(%s%3!<%G%#%s%0$r4XO"IU$1$k!#(B
+\end{itemize}
+
+$B2#=q$-$H=D=q$-$N%(%s%3!<%G%#%s%0$O0J2<$N$h$&$KI,$:(B|\KanjiEncodingPair|$B$G(B
+$BBP1~$r4XO"IU$1$F$+$i;HMQ$7$^$9!#(B
+$B4XO"IU$1$i$l$?%(%s%3!<%G%#%s%0$O(B|\yoko|, |\tate|$B$N<B9T;~$K@Z$jBX$o$j$^$9!#(B
+
+\begin{verbatim}
+ :
+\DeclareYokoKanjiEncoding{NY1}{}{}
+\DeclareYokoKanjiEncoding{NT1}{}{}
+\KanjiEncodingPair{NY1}{NT1}
+ :
+\begin{document}
+ :
+\fontencoding{NY1}
+ :
+\selectfont
+ :
+\end{verbatim}
+
+$B8=;~E@$G$O(B|\DeclareTextCompositeCommand|$B$N$h$&$J%(%s%3!<%G%#%s%0$GF0:n$r(B
+$B@Z$jBX$($k$?$a$N%^%/%m$K$OBP1~$7$F$$$^$;$s!#$=$N$?$a!"%U%)%s%H$NAH$_9g$o$;$r(B
+$BJQ99$9$kDxEY$K$7$+MxMQ$G$-$^$;$s!#(B
+
+\section{$B$=$NB>$N<g$J=$@52U=j(B}
+$B<!$N$h$&$JIT6q9g$N=$@5$d;EMM$NJQ99$r$7$^$7$?!#(B
+
+\begin{itemize}
+\item |verbatim|$B4D6-$GM>7W$JA08e6u$-$,H/@8$7$J$$$h$&$K(B|\fontfamily|$B$r=$@5!#(B
+\item |\ascii|,|\Ascii|,|\ASCII|$B%^%/%m$N%(%i!<$r=$@5!#(B
+\item $BOBJ8%U%)%s%H%5%$%:$N4p=`CM$N@_Dj$r=$@5!#(B
+\item $B=DAH%9%?%$%k$G(B|\flushbottom|$B$7$J$$$h$&$K=$@5!#(B
+\item |\part|,|\chapter|$B$ND>8e$G%$%s%G%s%H$,H/@8$7$J$$%P%0$r=$@5!#(B
+\item $B8+=P$7$NA08e$N6u$-$rD4@0!#(B
+\item \LaTeX 2003/12/01$BHG$G$NF0:n$r3NG'!#(B
+\end{itemize}
+
+
+\section{$B%U%)!<%^%C%H%U%!%$%k:n@.;~$NCm0U(B}
+$B8=:_$N(Bp\TeX{}$B$G$O!"(B8$B%S%C%H%3!<%I$NO"B3$r(B16$B%S%C%H%3!<%I$HG'<1$7$F(B
+$B$7$^$&>l9g$,$"$j$^$9!#$=$N$?$a!"%U%i%s%98l$d%-%j%kJ8;z$J$I$N(B
+8$B%S%C%H%3!<%I$,O"B3$9$k%O%$%U%s%Q%?!<%s$O$^$:;H$($;$s!#(B
+$BNc$($P(Bcmcyralt$B%Q%C%1!<%8$G$O!"ESCf$G$D$.$N$h$&$J%(%i!<$K$J$j$^$9!#(B
+
+\begin{verbatim}
+(/usr/local/share/texmf/tex/latex/contrib/
+other/cmcyralt/rhyphen.tex Russian hyphena
+tion
+! Bad \patterns.
+l.107 . $B$((B
+ 2
+?
+\end{verbatim}
+
+$B$3$N$H$-$O!"(B``|?|''$B$N%W%m%s%W%H$KBP$7$F(B``|x|''$B$G=*N;$7$F$/$@$5$$!#(B
+$B;DG0$J$,$i!"$3$N%O%$%U%s%Q%?!<%s$r(Bp\TeX{}$B$GMxMQ$9$k$3$H$O$G$-$^$;$s!#(B
+
+$B$=$3$G!"(Bhyphen.cfg$B$rMQ0U$7$F!"ITMQ0U$KB>$N%O%$%U%s%Q%?!<%s$r(B
+$BFI$_9~$^$J$$$h$&$K$7$F$"$j$^$9!#>\$7$/$O(BREADME2.txt$B$r$4Mw$/$@$5$$!#(B
+
+\section{$B$=$NB>(B}
+p\TeX{}$B$d(Bp\LaTeXe{}$B$K4X$9$k:G?7>pJs$O!"(Bp\TeX{}$B%[!<%`%Z!<%8(B
+\begin{verbatim}
+ http://www.ascii.co.jp/pb/ptex
+\end{verbatim}
+$B$h$j!"F~<j$9$k$3$H$,$G$-$^$9!#(B
+
+$B%P%0Js9p$d$*Ld$$9g$o$;$J$I$O!"EE;R%a!<%k$G(B
+\begin{verbatim}
+ www-ptex$B!w(Bascii.co.jp
+\end{verbatim}
+$B$^$G$*4j$$$7$^$9!#(B
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc01.tex b/language/japanese/platex/plnewsc01.tex
new file mode 100644
index 0000000000..a84f5016ba
--- /dev/null
+++ b/language/japanese/platex/plnewsc01.tex
@@ -0,0 +1,150 @@
+%% <2016/05/07>
+\documentclass{plnews}
+
+\publicationyear{2016}% $BH/9TG/(B
+\publicationmonth{05}% $BH/9T7n(B
+\publicationissue{c1}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O(B\pLaTeXe\ \texttt{<2016/05/07>} community edition$B$K$D$$$F!"(B
+$B%"%9%-!<HG(B\texttt{<2006/11/10>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+$B0JA0$N%"%9%-!<HG$NJQ99E@$K$D$$$F$O!"(B
+\file{plnews*.tex}$B$d(B\file{Changes\_asciimw.txt}$B$r;2>H$7$F$/$@$5$$!#(B
+$B:#8e$N%3%_%e%K%F%#HG$NJQ99E@$K$D$$$F$O!"(B\file{plnewsc*.tex}$B$G@bL@$7$^$9!#(B
+\LaTeX{}$B%l%Y%k$G$N99?72U=j$O!"(B\LaTeX{}$B$KIUB0$N(B\file{ltnews*.tex}$B$J$I$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+
+
+\section{$B%3%_%e%K%F%#HG(Bp\LaTeX{}$B$N@bL@(B}
+$B85!9$N(B\pLaTeX{}$B$O!"3t<02q<R%"%9%-!<!J8=%"%9%-!<!&%a%G%#%"%o!<%/%9!K$,(B
+$BF|K\8l2=$7$?(B\pTeX{}$B%(%s%8%s$H$H$b$KG[I[$7$F$$$?!"F|K\8lHG(B\LaTeX{}$B$G$9!#(B
+$B$3$3$G$O!"$3$l$r!V%"%9%-!<HG(B\pLaTeX{}$B!W$H8F$S$^$9!#(B
+
+\pTeX{}$B$O2#AH$@$1$G$J$/=DAH$K$bBP1~$7$?9bIJ<A$NF|K\8lAHHG%=%U%H%&%'%"$H(B
+$B$7$F!"%G%U%!%/%H%9%?%s%@!<%I$NCO0L$K$"$k$H$$$($^$9!#(B
+$B$3$N(B\pTeX{}$B$d$=$N>e$GF0$/(B\pLaTeX{}$B$OD9$i$/F|K\9qFb$G$NMxMQ$K$H$I$^$C$F$$(B
+$B$^$7$?$,!"(B2010$BG/$K9q:]E*$J(B\TeX\ Live$B$H$$$&%G%#%9%H%j%S%e!<%7%g%s$K<h$j9~(B
+$B$^$l!"@$3&Cf$N%f!<%6$,4JC1$KF|K\8l$NAHHG$K(B\pTeX{}$B$H(B\pLaTeX{}$B$rMxMQ$G$-$k(B
+$B4D6-$,@0$$$^$7$?!#F1;~$K!"(B\pTeX{}$B$b%3%_%e%K%F%#%Y!<%9$G2~NI$d;EMMJQ99$,(B
+$B2C$($i$l$k$h$&$K$J$j$^$7$?!#(B
+$B:G6a$N(B\TeX\ Live$B$d(BW32\TeX{}$B$G$O!"(B\pLaTeX{}$B$b85!9$N(B\pTeX{}$B$G$O$J$/!"$=$N(B
+$B3HD%HG(B\epTeX{}$B$r%(%s%8%s$H$7$FMQ$$$k$h$&$K$J$C$F$$$^$9!#$^$?!"(B\pLaTeX{}$B$N(B
+$B%Y!<%9$H$J$C$F$$$k(B\LaTeX{}$B$b99?7$,?J$a$i$l!"FC$K(B2015$BG/$K$OAj<!$$$G%+!<%M%k(B
+$B$N%3!<%I$,JQ99$5$l$^$7$?!#(B
+
+$B%"%9%-!<HG(B\pLaTeX{}$B$O(B\texttt{<2006/11/10>}$B$NHG$r:G8e$K99?7$,Dd;_$7$F$$$k(B
+$B$h$&$G!"$3$&$7$?JQ99$N1F6A$G$$$/$D$+$NIT@09g$,@8$8$F$7$^$$$^$7$?!#(B
+$B$3$NIT@09g$d;D$C$F$$$?%P%0$r=$@5$9$k$N$,!"%3%_%e%K%F%#HG(B\pLaTeX{}$B$NL\E*(B
+$B$G$9!#%3%_%e%K%F%#HG(B\pLaTeX{}$B$O%"%9%-!<HG(B\pLaTeX{}$B$r%Y!<%9$K!"(B
+$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$K$h$C$F3+H/$5$l$^$9!#3+H/Cf$NHG$O(BGitHub$B$N(B
+$B%j%]%8%H%j(B\footnote{\texttt{https://github.com/texjporg/platex}}$B$G(B
+$B4IM}$7$F$$$^$9!#$3$l$K$"$o$;!"(B\pTeX{}$B$NFbIt%3!<%I$r(BUnicode$B2=$7$?3HD%HG$G(B
+$B$"$k(Bu\pTeX{}$B$N>e$GF0$/(Bu\pLaTeX{}$B$b!"%3%_%e%K%F%#HG(B\pLaTeX{}$B$HF14|$5$;$F(B
+$B$"$j$^$9!#(Bu\pLaTeX{}$B$N3+H/Cf$NHG$b(B\pLaTeX{}$B$HF1MM$K!"(BGitHub$B$N(B
+$B%j%]%8%H%j(B\footnote{\texttt{https://github.com/texjporg/uplatex}}$B$G(B
+$B4IM}$7$F$$$^$9!#(B
+
+
+\section{$B5SCmHV9fA08e$d(Btabular$BA08e$J$I$NIT<+A3$J%"%-$N:o=|(B}
+2013$BG/$N(B\pTeX{}$B$N;EMMJQ99$G!"5SCmHV9f$d(Btabular$B4D6-!"(B
+|\parbox[c]{...}|$B!J$^$?$O(Bminipage$B4D6-!K$NA08e(B\footnote{$B$3$l$i$NL?Na$O!"(B
+$BFbItE*$K$O(B\texttt{\char92hbox}$B$NCf$G$$$C$?$s?t<0%b!<%I$KF~$k$H$$$&=hM}(B
+$B$r4^$s$G$$$^$9!#(B}$B$K(B|\xkanjiskip|$BM3Mh$N%"%-$,F~$k$h$&$K$J$C$F$$$^$7$?$N(B
+$B$G!"BP:v$7$^$7$?!#(B
+$B!J;29M!'(B\TeX\ Forum~913$B!"(B\TeX\ Q\&A~57084$B!"(B\TeX\ Forum~1783$B!K(B
+
+$B$^$?!"(B|\underline{...}|$B$NA08e$,OBJ8J8;z$G$"$k>l9g$K$b(B
+$B0lN'$K(B|\xkanjiskip|$BM3Mh$N%"%-$,F~$C$F$$$^$7$?!#(B
+$B$3$l$bIT<+A3$@$H9M$(!"%"%-$r:o=|$7$^$7$?!#(B
+
+
+\section{$B=DAH$G(BOverfull$B7Y9p$,=P$k%P%0$N=$@5(B}
+$B=DAH;~$K(B|\@outputbox|$B$N?<$5J,$NJd@5$,L58z$K$J$C$F$$$k%P%0$N$;$$$G(B
+|Overfull \vbox|$B$N7Y9p$,=P$F$$$^$7$?$N$G!"=$@5$7$^$7$?!#(B
+$B!J;29M!'(B\TeX\ Forum 1442$B!K(B
+
+
+\section{$B=DAH$G!V(B\AA{}$B!W$,Mp$l$k%P%0$N=$@5(B}
+$B%Y!<%9%i%$%sJd@5NL(B|\{y,t}baselineshift|$B$,%<%m$G$J$$>l9g$K!"9g@.J8;z$,Mp$l(B
+$B$k$3$H$,$"$j$^$7$?!#FC$K!V(B\AA{}$B!W$N%"%/%;%s%H0LCV$,=DAH$GBg$-$/Mp$l$F$$$?(B
+$B$?$a!"BP:v$7$^$7$?!#(B
+
+
+\section{$B%H%s%\$,=L$`LdBj$X$NBP=h(B}
+\LaTeX\ tools$B%P%s%I%k$KIUB0$9$k(B\file{multicol}$B%Q%C%1!<%8!J(B2015/03/07 v1.8j
+-- 2016/02/08 v1.8o$B!K$r;H$&$H!"(B\pLaTeX{}$B$N%H%s%\$,=L$`$H$$$&LdBj$,H/@8$7$F(B
+$B$$$^$7$?!#$3$l$O(B\file{multicol}$BB&$N%P%0(B\footnote{$B$3$l$O(B2016/04/07 v1.8p$B$G(B
+$B=$@5$5$l$^$7$?!#(B}$B$K$h$k$b$N$G$9$,!"2?$i$+$NM}M3$GITMQ0U$K(B|\boxmaxdepth|$B$,(B
+$B>.$5$/@_Dj$5$l$F$b%H%s%\$,@5$7$/=P$k$h$&$K=$@5$7$^$7$?!#(B
+
+
+\section{\LaTeX\ \texttt{<2016/03/31>}$B$X$NBP1~(B}
+\LaTeX\ \texttt{<2015/01/01>}$B$GDI2C$5$l$?(B|\eminnershape|$B$r(B\pLaTeX{}$B$K$b(B
+$B:NMQ$7$^$7$?!#$3$l$O(B|{\em ...}|$B$H$$$&6/D4L?Na$rF~$l;R$K$7$?>l9g$N=qBN$r(B
+$B%f!<%6$,;XDj$G$-$k$b$N$G$9!#(B\LaTeX{}$B$K$h$k%G%U%)%k%H$NDj5A$O(B|\upshape|$B$G$9(B
+$B$,!"(B\pLaTeX{}$B$G$O=>MhHG$K9g$o$;$?(B|\mcfamily \upshape|$B$r:NMQ$7$^$7$?!#(B
+
+
+\section{\file{platexrelease}$B%Q%C%1!<%8$NDI2C(B}
+\LaTeX\ \texttt{<2015/01/01>}$B$GDI2C$5$l$?(B|latexrelease|$B%Q%C%1!<%8$H(B
+$BF1Ey$N(B\file{platexrelease}$B%Q%C%1!<%8$rF3F~$7$^$7$?!#$3$l$O!"2a5n(B
+$B!J(B\texttt{<2006/11/10>}$B0J9_!K$N(B\pLaTeX{}$B$r%(%_%e%l!<%H$9$k$?$a$KMQ$$$k(B
+$B$3$H$,$G$-$^$9!#(B\pLaTeX{}$B$N8_49@-$,I,MW$J>lLL$GLr$KN)$D$+$b$7$l$^$;$s!#(B
+$B>\:Y$O%Q%C%1!<%8$N%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(B
+
+
+\section{\file{ascmac}$B%Q%C%1!<%8$N99?7(B}
+\file{ascmac}$B!J(B\file{tascmac}$B!K%Q%C%1!<%8$N%P%0=$@5$H0lIt$N;EMMJQ99$G$9!#(B
+
+\begin{itemize}
+\item \file{pict2e}$B%Q%C%1!<%8$H$N6&B8$G=P$k%(%i!<$r2r>C(B
+\item itembox$B4D6-$d(Bscreen$B4D6-$N3Q$,M}A[CM$+$i$:$l$F$$$?$N$r=$@5(B
+\item |\maskbox|$B$d(B|\Maskbox|$B$,CJMn$N@hF,$G@5$7$/F/$+$J$$IT6q9g$r=$@5(B
+ $B!J0J>e(B3$BE@!"(B\file{bxascmac}$B%Q%C%1!<%8(B%
+ \footnote{\texttt{http://zrbabbler.sp.land.to/bxptool.html}}$B$h$j!#(B
+ $B$"$j$,$H$&$4$6$$$^$9!"(BZR$B$5$s!K(B
+\item $B4D6-D>A0$N2~CJMn!'(B\par
+ shadebox$B4D6-$ND>A0$G2~CJMn$7$J$$$HHGLL$r$O$_=P$9IT6q9g$r=$@5!#(B
+ $BJ;$;$F(Bboxnote$B4D6-$b(B|\par\vspace{.3\baselineskip}|$B$G;O$a$k$h$&JQ99!#(B
+\item $B%Y!<%9%i%$%sJd@5!'(B\par
+ |\tbaselineshift|$B$@$1$G$J$/(B|\ybaselineshift|$B$bB`Hr!&I|5"!#(B
+ |\keytop{...}|$B$r;H$&$H0J9_$9$Y$F$G%Y!<%9%i%$%sJd@5$,%<%m$K$J$k%P%0$N(B
+ $B=$@5!#(Bitembox$B4D6-$N%?%$%H%k$H(Bshadebox$B4D6-Fb$G$b%Y!<%9%i%$%sJd@5$r0];}!#(B
+\item $B$=$NB>!'(B
+ |\keytop|$B$N3Q$,M}A[CM$+$i$:$l$F$$$?$N$r=$@5!"(B
+ |\keytop[c]{...}|$BA08e$N(B|\xkanjiskip|$BM3Mh$N%"%-$r:o=|!#(B
+\end{itemize}
+
+
+\section{$B$=$NB>$NJQ99E@(B}
+\pLaTeX{}$B$N35MW$K$D$$$F$O(B\file{platex.pdf}$B$r!"<B:]$N%3!<%I$O(B\file{pldoc.pdf}$B$r(B
+$B;2>H$7$F$/$@$5$$!#%3!<%I$NJQ99MzNr$b(B\file{pldoc.pdf}$B$NKvHx$G3NG'$G$-$^$9!#(B
+
+$B0lHL$N%f!<%6$K$O$"$^$j4X78$J$$JQ99$H$7$F!"(B\pLaTeX{}$B5/F0;~$N%P%J!<$rDj5A(B
+$B$9$k%3!<%I$r2~NI$7$^$7$?!#=>Mh$O!"FI$_9~$s$@%O%$%U%M!<%7%g%s!&%Q%?!<%s(B
+$B$N>pJs$r5/F0;~$N%P%J!<$KI=<($9$k$?$a$@$1$K!"%3!<%I$rDI2C$7$?FH<+(B
+$B$N(B\file{hyphen.cfg}$B$r;HMQ$7$F$$$^$7$?(B\footnote{$B%H%N$5$s$K$h$k%3!<%I$G$9!#(B
+$B;29M!'(B\TeX\ Q\&A~31691}$B!#$3$NJ}K!$rGQ;_$7$F(B\pLaTeX{}$B%+!<%M%kFb$GBP=h$7$?(B
+$B$?$a!":#8e$OFH<+$N(B\file{hyphen.cfg}$B$,ITMW$K$J$j$^$7$?!#(B
+
+
+\section{$B3+H/HG$H%P%0%l%]!<%H@h(B}
+$B%3%_%e%K%F%#HG(B\pLaTeX{}$B$H(Bu\pLaTeX{}$B$O%"%9%-!<HG(B\pLaTeX{}$B$H$O0[$J$j$^$9(B
+$B$N$G!"%P%0%l%]!<%H$O%"%9%-!<08$F$G$O$J$/!"F|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#(B
+$B$KJs9p$7$F$/$@$5$$!#(B\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc02.tex b/language/japanese/platex/plnewsc02.tex
new file mode 100644
index 0000000000..aecba9423c
--- /dev/null
+++ b/language/japanese/platex/plnewsc02.tex
@@ -0,0 +1,79 @@
+%% <2016/06/10>
+\documentclass{plnews}
+
+\publicationyear{2016}% $BH/9TG/(B
+\publicationmonth{06}% $BH/9T7n(B
+\publicationissue{c2}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2016/06/10>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2016/05/07>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+$B0JA0$N%"%9%-!<HG$NJQ99E@$K$D$$$F$O!"(B
+\file{plnews*.tex}$B$d(B\file{Changes\_asciimw.txt}$B$r;2>H$7$F$/$@$5$$!#(B
+$B%3%_%e%K%F%#HG$NJQ99E@$K$D$$$F$O!"(B\file{plnewsc*.tex}$B$r;2>H$7$F$/$@$5$$!#(B
+\LaTeX{}$B%l%Y%k$G$N99?72U=j$O!"(B\LaTeX{}$B$KIUB0$N(B\file{ltnews*.tex}$B$J$I$r(B
+$B;2>H$7$F$/$@$5$$!#(B
+
+
+\section{$B%"%/%;%s%HJ8;z$N%P%0=$@5(B}
+\pLaTeX\ \texttt{<2016/05/07>}$B$G!V=DAH$G!V(B\AA{}$B!W$,Mp$l$k%P%0$N=$@5!W$r(B
+$BF3F~$7$^$7$?$,!"$3$NJQ99$G!V$9$Y$F$N9g@.J8;z$G%j%,%A%c$d%+!<%K%s%0$,$-$+(B
+$B$J$$!"<~0O$K(B|\xkanjiskip|$B$,F~$i$J$$!"(B\file{ucs}$B%Q%C%1!<%8$,;H$($J$$!W(B
+$B$J$I$H$$$&IT6q9g$,F~$C$F$7$^$$$^$7$?!#$3$NLdBj$r=$@5$7$^$7$?(B (Issue \#5) $B!#(B
+
+
+\section{8-bit$B%U%)%s%H%(%s%3!<%G%#%s%0$N2$J8J8;z<~0O$N%9%Z!<%9(B}
+$B%"%9%-!<HG(B\pLaTeX{}$B$,:n$i$l$?:"$KHf$Y$F!":G6a$O(BT1$B%(%s%3!<%G%#%s%0$J$I$N(B
+8-bit$B%U%)%s%H%(%s%3!<%G%#%s%0$,B?$/MQ$$$i$l$k$h$&$K$J$j$^$7$?!#(B128--255$B$N(B
+$BJ8;z$O2$J8J8;z$G$9$N$G!"?7$7$$%U%)!<%^%C%H$G$O<~0O$K(B|\xkanjiskip|$B$,F~$k(B
+$B$h$&$K(B\file{kinsoku.tex}$B$G(B|\xspcode=3|$B$K@_Dj$7$^$7$?!#$3$l$O!"1|B<$5$s(B
+$B$N(B\file{jsclasses}$B$dEDCf$5$s$N(Bu\pLaTeX{}$B$HF1Ey$NBP=h$G$9(B (Issue \#6) $B!#(B
+
+
+\section{\file{pfltrace}$B%Q%C%1!<%8$NDI2C(B}
+\LaTeX\ \texttt{<2014/05/01>}$B$G!"(B\file{fltrace}$B%Q%C%1!<%8$,DI2C$5$l$^$7(B
+$B$?!#$3$l$O(B\LaTeX{}$B%+!<%M%k$N%=!<%9$K1#$l$F$$$?%U%m!<%HG[CV%"%k%4%j%:%`$N(B
+$B%H%l!<%9$K;H$&%3!<%I$r%Q%C%1!<%8$N7A$KCj=P$7$?$b$N(B\footnote{$B;29M!'(B
+\LaTeX\ News Issue 21$B!"(B\file{ltnews21.tex}}$B$G!"<B$O(B\pLaTeX{}$B%+!<%M%k$N(B
+$B%=!<%9$K$bF1MM$K1#$l$F$$$?%3!<%I$,$"$j$^$7$?!#$3$l$r<h$j=P$7$?$b$N$,(B
+\file{pfltrace}$B%Q%C%1!<%8$G$9!#(B
+
+$B%U%m!<%H%"%k%4%j%:%`$NF0:n$r3NG'$7$?$$>l9g$O(B
+\begin{verbatim}
+ \usepackage{pfltrace} \tracefloats
+\end{verbatim}
+$B$N$h$&$K=q$-$^$9!#%H%l!<%9$rCfCG$9$k$K$O(B|\tracefloatsoff|$B$r;H$$!"(B
+$B8=:_$N$5$^$6$^$J%U%m!<%H%Q%i%a!<%?$NCM$r3NG'$9$k$K$O(B|\tracefloatvals|$B$r(B
+$B;H$$$^$9!#<B:]$N=hM}$O(B\file{fltrace}$B%Q%C%1!<%8$rFI$_9~$`$3$H$G9T$$!"(B
+\pLaTeX{}$BFCM-$NJQ99$N$_$,(B\file{pfltrace}$B%Q%C%1!<%8$K=q$+$l$F$$$^$9(B
+\footnote{$B%U%)%s%HA*Br%3%^%s%I$N%H%l!<%9$K;H$&(B\file{ptrace}$B%Q%C%1!<%8(B
+$B$H(B\file{tracefnt}$B%Q%C%1!<%8!"2a5n$N(B\pLaTeX{}$B$N%(%_%e%l!<%H$K;H$&(B
+\file{platex\-release}$B%Q%C%1!<%8$H(B\file{latex\-release}$B%Q%C%1!<%8$b!"(B
+$B$3$l$HF1MM$N4X78$K$J$C$F$$$^$9!#(B}$B!#(B
+
+
+\section{$B$=$NB>$NJQ99E@(B}
+\pLaTeX{}$B$N35MW$K$D$$$F$O(B\file{platex.pdf}$B$r!"<B:]$N%3!<%I$O(B\file{pldoc.pdf}$B$r(B
+$B;2>H$7$F$/$@$5$$!#%3!<%I$NJQ99MzNr$b(B\file{pldoc.pdf}$B$NKvHx$G3NG'$G$-$^$9!#(B
+
+
+\section{$B3+H/HG$H%P%0%l%]!<%H@h(B}
+$B%3%_%e%K%F%#HG(B\pLaTeX{}$B$H(Bu\pLaTeX{}$B$O%"%9%-!<HG(B\pLaTeX{}$B$H$O0[$J$j$^$9(B
+$B$N$G!"%P%0%l%]!<%H$O%"%9%-!<08$F$G$O$J$/!"F|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#(B
+$B$KJs9p$7$F$/$@$5$$!#(B\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc03.tex b/language/japanese/platex/plnewsc03.tex
new file mode 100644
index 0000000000..6ce23f8564
--- /dev/null
+++ b/language/japanese/platex/plnewsc03.tex
@@ -0,0 +1,78 @@
+%% <2016/07/01>
+\documentclass{plnews}
+
+\publicationyear{2016}% $BH/9TG/(B
+\publicationmonth{07}% $BH/9T7n(B
+\publicationissue{c3}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2016/07/01>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2016/06/10>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+
+
+\section{$B%"%/%;%s%HJ8;z$N=$@5%Q%C%A$r0lC6E15n(B}
+$B%3%_%e%K%F%#HG(B\pLaTeX{}$B$G!V=DAH$G!X(B\AA{}$B!YEy$N0lIt$N9g@.J8;z$,Mp$l$k%P%0$N(B
+$B=$@5!W$rF3F~$7$^$7$?$,!"$3$NJQ99$G!VA4$F$N%"%/%;%s%HJ8;z!W$K$D$$$F%H%i%V%k$,(B
+$BAj<!$$$G$7$^$$$^$7$?!#$3$N$?$a!"%3%_%e%K%F%#HG$K2C$($?%"%/%;%s%HJ8;z$N%Q%C%A$r(B
+$B0lC6E15n$7!"85$N(B\LaTeX{}$B$NDj5A$r$=$N$^$^;H$&$h$&$K$7$^$7$?!#7k2LE*$K!"=>Mh$N(B
+$B%"%9%-!<HG$HF1$8$/(B
+\begin{itemize}
+\item $B%Y!<%9%i%$%sJd@5NL$,%<%m$G$J$$>l9g!JFC$K=DAH!K$G!V(B\AA$B!W$J$I$N(B
+$B0lIt$N%"%/%;%s%H9g@.J8;z$,Mp$l$k(B
+\item $B%"%/%;%s%H9g@.J8;z$NA08e$K@5$7$/(B|\xkanjiskip|$B%"%-$,F~$i$J$$(B
+\end{itemize}
+$B$H$$$&LdBj$,;D$C$F$$$^$9!#$3$l$i$O!">-Mh$N(Bp\LaTeX{}$B$G$O2~A1$7$?$$$H9M$($F$$(B
+$B$^$9!#E15n$7$?%Q%C%A$O!"8e=R$N3+H/HG$N%F%9%H$K0\F0$7$^$7$?!#(B
+
+
+\section{\texttt{\string\@begindvibox}$B$r>o$K2#AH$K(B}
+$B%"%9%-!<HG(Bp\LaTeX{}$B$G$O!"=DAH$NJ8=q%/%i%9$r;HMQ;~$K(B
+|\AtBeginDocument{\AtBeginDvi{}}|$B$H$$$&%3!<%I$r=q$/$H(B
+\begin{verbatim}
+Incompatible direction list can't be unboxed.
+\end{verbatim}
+$B$H$$$&%(%i!<$,=P$F$7$^$$$^$9!#Nc$H$7$F!"(B2016$BG/(B6$B7n0J9_$N(Bgraphics/color$B%Q%C(B
+$B%1!<%8$N(Bdvips$B%*%W%7%g%s$,5s$2$i$l$^$9!#$3$l$KBP=h$9$k$?$a!"%3%_%e%K%F%#HG(B
+p\LaTeX{}$B$G$O(B|\@begindvibox|$B$r!J6u$G$J$$8B$j!K>o$K2#AH$K8GDj$9$k$3$H$H(B
+$B$7$^$7$?(B(forum:1956)$B!#(B
+
+
+\section{$B5/F0;~$K(B\file{platex.cfg}$B$rFI$_9~$`5!G=$rDI2C(B}
+$B:#2s$N(Bp\LaTeX{}$B$+$i!"5/F0;~$K(B\file{platex.cfg}$B$H$$$&%U%!%$%k$,8+$D$+$l$P(B
+$B$=$l$rFI$_9~$_$^$9!#$?$H$($P!"(B|~/texmf/tex/platex/config|$B%G%#%l%/%H%j$K(B
+\begin{verbatim}
+\RequirePackage{exppl2e}
+\end{verbatim}
+$B$H$$$&FbMF$N(B\file{platex.cfg}$B$rCV$$$F$*$1$P!"(Bp\LaTeX{}$B$N5/F0D>8e$K(B
+\file{exppl2e}$B%Q%C%1!<%8!J8e=R!K$,FI$_9~$^$l$^$9!#(Bup\LaTeX{}$B$N>l9g$O(B
+\file{uplatex.cfg}$B$r;HMQ$7$^$9!#(B
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B:#8e(Bp\LaTeX{}$B$KF3F~$9$k$+$b$7$l$J$$=$@5%Q%C%A$d;EMMJQ99$r<j7Z$K;n$7$F$$$?$@$/(B
+$B$?$a!"(B\file{exppl2e}$B%Q%C%1!<%8!J(BEXPerimental$B$J(BPLatex2E$B!K$rMQ0U$7$^$7$?!#(B
+$B>/$7$@$1;n$7$?$$>l9g$O!"(B\TeX{}$B%U%!%$%k$NKAF,!J(B|\documentclass|$B$h$jA0!K$G(B
+\begin{verbatim}
+\RequirePackage{exppl2e}
+\end{verbatim}
+$B$H=q$-$^$9!#@h=R$N!V5/F0;~$K(B\file{platex.cfg}$B$rFI$_9~$`5!G=!W$rMQ$$$k$H!"(B
+$B$3$N<jB3$-$r<+F02=$9$k$3$H$b$G$-$^$9!J$3$NJ}K!$r$*4+$a$7$^$9!K!#(B
+
+$B8=:_$O!":#2s$NHG$GE15n$7$?%"%/%;%s%HJ8;z$K4X$9$k%Q%C%A$,F~$C$F$$$^$9!#%P%0Js9p(B
+$B$d$40U8+$r4?7^$7$^$9!#(B\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc04.tex b/language/japanese/platex/plnewsc04.tex
new file mode 100644
index 0000000000..eae01e41ce
--- /dev/null
+++ b/language/japanese/platex/plnewsc04.tex
@@ -0,0 +1,113 @@
+%% <2016/09/08>
+\documentclass{plnews}
+\usepackage{plext} %%%% exppl2e $B$N@bL@MQ(B
+\usepackage{amsmath} %%%% exppl2e $B$N@bL@MQ(B
+
+\publicationyear{2016}% $BH/9TG/(B
+\publicationmonth{09}% $BH/9T7n(B
+\publicationissue{c4}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+\section{$B$3$NJ8=q$K$D$$$F(B}
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2016/09/08>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2016/07/01>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+
+
+\section{$B5SCmHV9f!J9g0u!KD>8e$N2~9T5v2D(B}
+\pLaTeX{}$B$G$O@N$+$i!"K\J8Cf$KG[CV$7$?5SCmHV9f!J9g0u$H$$$$$^$9!K$ND>8e$G2~9T$,(B
+$B5/$-$J$$$H$$$&LdBj$,$"$j$^$7$?!#$3$N$?$a!"9TKvIU6a$K9g0u$,Mh$?>l9g!"B3$/J8;z(B
+$B$,HGLL$r$O$_=P$7$F(B|Overfull|$B7Y9p$rH/$7$F$7$^$$$^$7$?(B\footnote{$B%3%_%e%K%F%#HG(B
+\pLaTeX{}$B$K0\9T$9$kD>A0$^$G!J(B2013--2015$BG/$K$+$1$F!K!"(B\pTeX{}$B$N;EMMJQ99$N$?$a(B
+$B9g0uA08e$K%"%-$,F~$C$F$*$j!J(B\file{plnewsc01.tex}$B;2>H!K!"$3$N4X78$G6vA3$K$b(B
+$B0l;~E*$K2~9T$,5/$-$F$$$^$7$?$,!"$3$l$,(B2016$BG/$K$O85$KLa$C$?$N$G$9!#(B}$B!#(B
+$B?7$7$$HG!J(B2016/09/03$B0J9_!K$G$O!"D>8e$,6gFIE@$J$I$G$J$$>l9g$K$O2~9T$,2DG=$J$h(B
+$B$&$K=$@5$7$^$7$?!J$3$N$H$-(B2016/09/03$B$K:.F~$7$?%P%0$O(B2016/09/08$B$G=$@5!K!#(B
+$B2~9T$K:]$7$F$O9g0uD>A0$N%Z%J%k%F%#CM$b9MN8$5$l$^$9(B(Issue 16)$B!#(B
+
+
+\section{$B5SCmHV9f!J9g0u!KD>A0$r%Y%?AH$K(B}
+$B=*$o$j3g8LN`$d6gE@N`$ND>8e$K5SCmHV9f!J9g0u!K$,B3$/>l9g!"$3$3$O%Y%?AH$K$9$k$N(B
+$B$,$h$$$H$5$l$F$$$^$9!#$=$3$G!"(B|\footnote|$B$H(B|\footnotemark|$B$K(B|\inhibitglue|$B$r(B
+$BDI2C$7$^$7$?!#$3$l$O!"1|B<$5$s$N(B\file{jsclasses}$B$HF1$8BP=h$G$9(B(Issue 16)$B!#(B
+
+
+\section{$B=DAH$G(B\file{longtable}$B;HMQ;~$NL58B%k!<%W2r>C(B}
+\file{longtable}$B%Q%C%1!<%8$O!"D9$$I=AH$NESCf$G2~%Z!<%8$9$k5!G=$rDs6!$9$k$b$N(B
+$B$G$9!#$3$l$r=DAH$G;H$&$H!"2~%Z!<%8$,5/$-$kI=AH$,$"$C$?>l9g$K!"(B
+$B!T=DAH%b!<%I!U$HI=<($7$?$^$^L58B%k!<%W$,5/$-$F%?%$%W%;%C%H$,=*N;$7$^$;$s$G$7(B
+$B$?(B(qa:12116, qa:12127, qa:20273, qa:20298)$B!#$3$N8=>]$r2r>C$7!"=DAH$G$b(B
+\file{longtable}$B%Q%C%1!<%8$,5!G=$9$k$h$&$K$7$^$7$?(B(Issue 21)$B!#(B
+
+
+\section{\file{ascmac}$B%Q%C%1!<%8$N(Bpdf\LaTeX{}$BEy$X$NBP1~(B}
+$B8E$$(Bp\LaTeX~2.09$B$G$O!"(B\file{ascmac.sty}$B$O2#AH@lMQ!&(B\file{tascmac.sty}$B$O(B
+$B=D2#N>BP1~$H$$$&$h$&$K%Q%C%1!<%8$,J,$+$l$F$$$^$7$?$,!"(Bp\LaTeXe{}$B$G$O$"$k;~E@(B
+$B$G(B\file{tascmac.sty}$B$K0lK\2=$7$F$$$^$7$?!#$7$+$7!"$3$N$?$a$K(Bpdf\LaTeX{}$B$J$I(B
+$B$G(B\file{ascmac}$B%Q%C%1!<%8$,;H$($J$/$J$C$F$7$^$$$^$7$?!J(B|\tbaselineshift|$BEy$r(B
+$B;HMQ$7$F$$$k$?$a!K!#:#2s!"(B\file{tascmac.sty}$B$K(Bpdf\LaTeX{}$B$J$I$KBP1~$7$?%3!<%I(B
+$B$rDI2C$7!":F$S%5%]!<%H$9$k$h$&$K3HD%$7$^$7$?!#(B
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B:#8e(Bp\LaTeX{}$B$KF3F~$9$k$+$b$7$l$J$$=$@5%Q%C%A$d;EMMJQ99$N%F%9%H$K$46(NO$/$@(B
+$B$5$$!#(B\TeX{}$B%U%!%$%k$NKAF,!J(B|\documentclass|$B$h$jA0!K$G(B
+\begin{verbatim}
+\RequirePackage{exppl2e}
+\end{verbatim}
+$B$H=q$/$3$H$G!"8=:_$N3+H/HG$r%F%9%H$9$k$3$H$,$G$-$^$9!#(B
+$B8=:_$O!";YCl%3%^%s%I$GMQ$$$i$l$k(B|\strutbox|$B$N5sF0$K4X$9$k%Q%C%A!J<!$N%Z!<%8(B
+$B;2>H!K$H!"A02s$+$i0z$-B3$-!V%"%/%;%s%HJ8;z%Q%C%A!W$bF~$C$F$$$^$9!#(B
+
+$B>\:Y$O(B\file{exppl2e.pdf}$B$r;2>H$7$F$/$@$5$$!#%P%0Js9p$d$40U8+$r4?7^$7$^$9!#(B
+\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+
+\clearpage
+\section{\texttt{\string\strutbox}$B%Q%C%A$K$D$$$F(B}
+$B8=:_$N(B\pLaTeX{}$B$G$O!"<g$K=DAH$G3$30@=$N(B\LaTeX{}$B%Q%C%1!<%8$r;HMQ$7$?>l9g$K(B
+$BIT2D2r$J5sF0$,H/@8$7$^$9!#$?$H$($P(B\file{amsmath}$B%Q%C%1!<%8$N(B|align|$B4D6-$r(B
+$B;H$&$H!"?t<0$N0LCV$d?t<0HV9f$,$:$l$F$7$^$$$^$9!#(B
+\begin{center}
+\setlength{\fboxsep}{10pt}
+\fbox{\begin{minipage}<t>{20zw}
+align$B4D6-!"(B\texttt{\&}$B$,(B1$B$D(B %% $B>/$7>e$X(B
+\begin{align}
+a_1 &= b_1+c_1\\
+a_2 &= b_2+c_2-d_2+e_2
+\end{align}
+align$B4D6-!"(B\texttt{\&}$B$J$7(B %% $BC<$KIU$/(B
+\begin{align}
+a_1=b_1+c_1
+\end{align}
+$BHf3SMQ$N(Bequation$B4D6-(B
+\begin{equation}
+a_1=b_1+c_1
+\end{equation}
+\end{minipage}}
+\end{center}
+$B$3$l$O!"(B\file{amsmath}$B$,;HMQ$7$F$$$k;YCl$NH"(B|\strutbox|$B$,!"(B\pLaTeX{}$B$G$O(B
+$B2#AH@lMQ$NH"$H$7$FAH$^$l$F$$$k$?$a$G$9!#8=:_$N(B\pLaTeX{}$B$G$O!"2#AH$N;YCl$O(B
+|\strutbox|$B!"=DAH$N;YCl$O(B|\tstrutbox|$B$H$$$&$h$&$K;H$$J,$1$J$1$l$P$J$j$^$;(B
+$B$s$,!"(B\pLaTeX{}$B@lMQ$H$$$&$o$1$G$O$J$$3$30@=(B\LaTeX{}$B%Q%C%1!<%8$,!"$9$Y$F(B
+$B$3$l$r9MN8$9$k$3$H$O:$Fq$G$7$g$&!#$[$+$K$b!"(B\file{array}$B%Q%C%1!<%8$d(B
+\file{longtable}$B%Q%C%1!<%8$G:n@.$9$kI=$N9T$N9b$5$J$I$G$b!";YCl$N@#K!$,$*$+(B
+$B$7$/$J$C$F$$$^$9!#(B
+
+$B$3$N$h$&$J>l9g$KBP=h$9$k$?$a!"$?$H$(%Q%C%1!<%8$,(B|\strutbox|$B$r8F$S=P$7$F$b!"(B
+$B=DAH$J$i$P=DAHMQ$N;YCl$G$"$k(B|\tstrutbox|$B$,JV$k$h$&$K$9$k!"$H$$$&$N$,!":#2s(B
+$B8!F$$7$F$$$k(B|\strutbox|$B%Q%C%A$G$9!#(B
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc05.tex b/language/japanese/platex/plnewsc05.tex
new file mode 100644
index 0000000000..7042b65fe3
--- /dev/null
+++ b/language/japanese/platex/plnewsc05.tex
@@ -0,0 +1,87 @@
+%% <2016/11/29>
+\documentclass{plnews}
+
+\publicationyear{2016}% $BH/9TG/(B
+\publicationmonth{11}% $BH/9T7n(B
+\publicationissue{c5}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\pTeX{p\kern-.15em\TeX}
+\def\eTeX{$\varepsilon$-\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2016/11/29>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2016/09/08>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+
+
+\section{\epTeX{}$B3HD%$N3hMQ(B}
+2015$BG/0J9_$N(B\LaTeX{}$B%+!<%M%k$O!"(B\eTeX{}$B$J$I$N%(%s%8%s3HD%$,MxMQ2DG=$J$i$PMxMQ(B
+$B$9$k$H$$$&J}?K$r$H$C$F$$$^$9!#(B\epTeX{}$B$N>l9g!"MxMQ2DG=$J?t<0%U%!%_%j$N>e8B$,(B
+16$B$+$i(B256$B$KA}$($F$$$^$9!JDL>N!V(BFAM256$B%Q%C%A!W!K$N$G!"(B\pLaTeX{}$B$G$O$3$l$r3hMQ(B
+$B$7$d$9$/$9$k@_Dj$r2C$($^$7$?!#(B
+$B?t<0MQ%"%k%U%!%Y%C%H$r;H$&$@$1$J$i!"(B|\DeclareMathAlphabet|$B$r$?$/$5$s;H$C$F$b(B
+\begin{verbatim}
+ ! LaTeX Error: Too many math alphabets
+ used in version normal.
+\end{verbatim}
+$B$H$$$&%(%i!<$,=P$K$/$/$J$k$O$:$G$9!#(B
+
+$B$J$*!"(B|\DeclareMathSymbol|$B$J$I$N5-9fN`$NDj5A$K;HMQ$9$kL?Na$O!"(B\LaTeX{}$B%+!<%M%k(B
+$B$G3HD%$,9T$o$l$F$$$^$;$s$N$G!"(B\pLaTeX{}$B$G$b3HD%$O9T$$$^$;$s!#%7%s%\%k%U%)%s%H(B
+$B$rB??t;HMQ$7$?$$>l9g$O!"JLES%3!<%I$r=q$/I,MW$,$"$j$^$9!J;29M!'(Beptexdoc.pdf$B!K!#(B
+
+
+\section{\file{jclasses}$B$N(B\file{classes}$B$X$NDI?o(B}
+\file{jclasses}$B!J(Bjarticle$B!"(Bjbook$B!"(Btarticle$B$J$I!K$N(B\pLaTeX{}$BI8=`%/%i%9$r!"85$H(B
+$B$J$C$?(B\file{classes}$B!J(Barticle$B!"(Bbook$B$J$I!K$K2C$($i$l$?%P%0=$@5$KDI?o$5$;$^$7$?!#(B
+
+$B<g$J=$@5$O0J2<$N$H$*$j$G$9!#(B
+\begin{itemize}
+\item |\listof{figures,tables}|$B!"(B|thebibliography|$B$G%X%C%@$K(B
+ $B!V?^L\<!!W$J$I$G$O$J$/D>A0$N%?%$%H%k$,F~$k$3$H$,$"$k%P%0$N=$@5(B
+\item $B:w0z$N0l$DA0$N%Z!<%8$G(B|\columnsep|$B$H(B|\columnseprule|$B$,K\Mh$h$jAa$/(B
+ $B%j%;%C%H$5$l$F$7$^$&%P%0$N=$@5(B
+\item |\part|$B$,A0$NJ8>O$+$i2~CJMn$5$l$J$+$C$?$j!"L\<!$N=g=x$,F~$lBX$o$C(B
+ $B$?$j$9$k%P%0$N=$@5(B
+\end{itemize}
+$B$J$*!"(B\file{classes}$B$G$O(B|\frontmatter|$B$H(B|\mainmatter|$B$N(B|openany|$B%*%W%7%g%s(B
+$B;XDj;~$N5sF0$,JQ99$5$l$F$$$^$9!J(B|openright|$B$H6&DL$K!"(B|\cleardoublepage|$B$9$k(B
+$B$h$&$K$J$j$^$7$?!K$,!"$3$NJQ99$X$NDI?o$O9T$$$^$;$s$G$7$?!#(B
+$B>\:Y$O(B\file{jclasses.dtx}$B$r;2>H$7$F$/$@$5$$!#(B
+
+
+\section{\file{plext}$B$N(B\LaTeX{}$B$X$NDI?o$H=$@5(B}
+\file{plext}$B%Q%C%1!<%8$,(B\LaTeX{}$B$+$i3HD%$7$?L?Na$KBP$7$F$b!"(B\LaTeX{}$BB&$N(B
+$B%P%0=$@5$X$NDI?o$r;\$7$^$7$?!#<g$J=$@5$O0J2<$N$H$*$j$G$9!#(B
+\begin{itemize}
+\item |\parbox|$B$N%*%W%7%g%s0z?tH=Dj$N2~A1(B
+\item |tabular*|$B$H(B|\parbox|$B$N@#K!<hF@%3!<%I$r2~A1(B
+\end{itemize}
+$B$^$?!"(B|\rensuji|$B$r2#AH$GCJMn$NF,$K;H$&$H@5$7$/F0:n$7$J$$%P%0$b=$@5$7$^$7$?!#(B
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B:#8e(Bp\LaTeX{}$B$KF3F~$9$k$+$b$7$l$J$$=$@5%Q%C%A$d;EMMJQ99$N%F%9%H$K$46(NO$/$@(B
+$B$5$$!#(B\TeX{}$B%U%!%$%k$NKAF,!J(B|\documentclass|$B$h$jA0!K$G(B
+\begin{verbatim}
+ \RequirePackage{exppl2e}
+\end{verbatim}
+$B$H=q$/$3$H$G!"8=:_$N3+H/HG$r%F%9%H$9$k$3$H$,$G$-$^$9!#(B
+$B8=:_$O!"!V%"%/%;%s%HJ8;z%Q%C%A!W$H!V(B|\strutbox|$B%Q%C%A!W(B
+% $B%Y!<%9%i%$%sJd@5$,%<%m$G$J$$$H$-$N%"%/%;%s%H9g@.J8;z$r=$@5$9$k(B
+% $B;YCl$GMQ$$$i$l$k(B|\strutbox|$B$N=DAH;~5sF0$r=$@5$9$k(B
+$B$,F~$C$F$$$^$9!#>\:Y$O(B\file{exppl2e.pdf}$B$r;2>H$7$F$/$@$5$$!#(B
+$B%P%0Js9p$d$40U8+$r4?7^$7$^$9!#(B
+\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc06.tex b/language/japanese/platex/plnewsc06.tex
new file mode 100644
index 0000000000..0c07f62550
--- /dev/null
+++ b/language/japanese/platex/plnewsc06.tex
@@ -0,0 +1,134 @@
+%% <2017/04/08> and <2017/05/05>
+\documentclass{plnews}
+
+\publicationyear{2017}% $BH/9TG/(B
+\publicationmonth{05}% $BH/9T7n(B
+\publicationissue{c6}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\pTeX{p\kern-.15em\TeX}
+\def\eTeX{$\varepsilon$-\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2017/05/05>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2016/11/29>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9(B
+\footnote{$BESCf$N%j%j!<%9(B\texttt{<2017/04/08>}$B$G$N99?72U=j$r4^$_$^$9!#(B}$B!#(B
+
+
+\section{$BI8=`%/%i%9%U%!%$%k$N=$@5(B}
+\file{jclasses}$B$,A4BNE*$K?7$7$/$J$j$^$7$?!#(B
+\begin{itemize}
+\item (j,t)book/report$B%/%i%9!'(B|openleft|$B%*%W%7%g%s$rDI2C$7$^$7$?!#$3$l$O>O$N(B
+ $B;O$^$j$r:85/$3$7!J2#AH$G$O8+3+$-5/$3$7!"=DAH$G$OJR5/$3$7!K$K$7$^$9!#(B
+ $B=>Mh$O(B|openright|$B!J2#AH$G$OJR5/$3$7!"=DAH$G$O8+3+$-5/$3$7!K$H(B
+ |openany|$B!J@.$j9T$-$K=>$&!K$7$+$"$j$^$;$s$G$7$?!#$J$*!"(B|openleft|$B$N>l9g$O(B
+ |\cleardoublepage|$BL?Na$b:85/$3$7MQ$K:F!9Dj5A$7$^$9!#(B
+\item (j,t)book/report$B%/%i%9!'(B|openany|$B;XDj;~$K(B|\part|$B$N$"$H$KGr%Z!<%8$r(B
+ $BF~$l$k$N$r$d$a$^$7$?!#(B\LaTeX{}$BI8=`%/%i%9$N8E$$%P%0=$@5$K$h$&$d$/DI?o$7$?(B
+ $B$3$H$K$J$j$^$9!#(B
+\item (j,t)book$B%/%i%9!'%?%$%H%k%Z!<%8$rI,$:4q?t%Z!<%8L\$KAw$k$h$&$KJQ99$7$^$7$?!#(B
+ $B:#2s$N=$@5$K$h$j!"=>Mh$N(Btbook$B%/%i%9$G%?%$%H%k$NA0$K=P$F$$$?6uGr%Z!<%8$O(B
+ $BL5$/$J$j$^$9!#$^$?!"(B|\frontmatter|$B$H(B|\mainmatter|$B$bI,$:4q?t%Z!<%8L\$KAw$k$h$&(B
+ $B$KJQ99$7$^$7$?!#(B
+\item $B%?%$%H%k$rFHN)%Z!<%8$H$9$k>l9g$K!"4q?t%l%$%"%&%H$N%Z!<%8$H6v?t%l%$%"%&%H(B
+ $B$N%Z!<%8$,8r8_$K$J$i$J$$!"$9$J$o$AN>LL0u:~$,$&$^$/$$$+$J$$$3$H$,$"$kLdBj$K(B
+ $BBP=h$7$^$7$?!#(B
+\item $B=DAH$N=jB0I=<(!J(B|\thanks|$B!K$NHV9f$,?2$k$N$O4qL/$J$N$GD>$7$^$7$?!#(B
+\item $B%H%s%\$KF|IU$rI=<($9$k(B|tombow|$B%*%W%7%g%s$NF|IUI=<($r(B\file{jsclasses}$B$K(B
+ $B$"$o$;$F7e?t8GDj$H$7$^$7$?!#(B
+\end{itemize}
+
+
+\section{\file{plext}$B$NB7$(0LCV(B}
+\file{plext}$B%Q%C%1!<%8$O(B|tabular|$B$d(B|\parbox|$B$J$I$r3HD%$7$^$9$,!"7S@~$d%Y!<%9(B
+$B%i%$%s$NB7$(J}$KE}0l@-$,$"$j$^$;$s$G$7$?!#$^$?!"%"%9%-!<Ev;~$N(B2001$BG/$+$i(B
+$B8=:_$K;j$k$^$G!"(B\pTeX{}$B$N?t!9$N;EMMJQ99$r<u$1$F2?EY$bB7$(0LCV$,!J>!<j$K!K(B
+$BJQ2=$7$F$-$?7P0^$,$"$j$^$9!#:#2s!"%3%_%e%K%F%#HG$G(B2017$BG/$N(B\pTeX{}$B$K9g$o$;$F(B
+$B;EMM$r:vDj$9$k$3$H$K$7$^$7$?!#>\:Y$O(B\file{pldoc.pdf}$B$b$7$/$O$=$N%=!<%9(B
+\file{plext.dtx}$B$r;2>H$7$F$/$@$5$$!#(B
+
+
+\section{$B;YCl$N9b$5(B}
+$B9b$5$d?<$5$@$1$r;}$D8+$($J$$H"!"$9$J$o$A;YCl$H$7$F!"(B\LaTeX{}$B$G$O(B
+|\strutbox|$B$H$$$&%\%C%/%9$,MQ0U$5$l$^$9!#=DAH$H2#AH$H$$$&35G0$,DI2C$5$l$?(B
+\pLaTeX{}$B$G$O!"(B|\strutbox|$B$r2#AH%\%C%/%9$H$7$FAH$_!"JLES$K=DAH%\%C%/%9(B
+|\tstrutbox|$B$rMQ0U$7$F$$$^$7$?!#$3$l$K=>$($P!";YCl$rMxMQ$7$?$$%Q%C%1!<%8B&$,(B
+$B!V2#AH$G$O(B|\strutbox|$B$r8F$S=P$7!"=DAH$G$O(B|\tstrutbox|$B$r8F$S=P$9!W$H;H$$J,$1(B
+$B$kI,MW$,$"$j$^$9!#(B
+
+\pLaTeX{}$B$H0l=o$KG[I[$7$F$$$k%Q%C%1!<%8$O<B:]$K$3$N;H$$J,$1$r9T$C$F$*$j!"(B
+$B$[$H$s$ILdBj$"$j$^$;$s$G$7$?!#$H$3$m$,!"(B\pLaTeX{}$B=DAH$r9MN8$7$F$$$J$$30It$N(B
+$B%Q%C%1!<%8$O$3$N$h$&$J1?MQ$K$J$C$F$$$J$$$?$a!"=DAH$G(B|\strutbox|$B$N@#K!$r<hF@(B
+$B$7$h$&$H$7$F!";YCl$N4|BT$KH?$9$kCM$,JV$C$F$7$^$$$^$9!#(B
+$B7k2LE*$K!"=DAH$G(B\file{amsmath}$B%Q%C%1!<%8$N(B|align|$B4D6-Fb$N@0Ns$,$&$^$/$$$+$J(B
+$B$+$C$?$j!"I=$N(B|\arraystretch|$BL?Na$,8z$+$J$+$C$?$j$H$$$&LdBj$,@8$8$F$$$^$7$?!#(B
+
+$B?7$7$$(B\pLaTeX{}$B$G$O!"2#AH%\%C%/%9(B|\ystrutbox|$B$H=DAH%\%C%/%9(B|\tstrutbox|$B$r(B
+$BMQ0U$7!"(B|\strutbox|$B$O!V8=:_$NAHJ}8~$rH=Dj$7!"2#AH$J$i(B|\ystrutbox|$B$r!"=DAH$J$i(B
+|\tstrutbox|$B$rJV$9%^%/%m!W$X$HJQ99$7$^$7$?!#$3$l$G!"2?$b9M$($J$/$F$b(B
+|\strutbox|$B$,>o$K;YCl$H$7$F5!G=$9$k$h$&$K$J$j$^$7$?!#(B
+
+
+\section{\LaTeXe\ \texttt{<2017-04-15>}$BBP1~(B}
+\LaTeXe\ \texttt{<2017-04-15>}$B$GF~$kM=Dj$N=$@5$N0lIt$,(B\pLaTeXe{}$B$H>WFM$9$k(B
+$BItJ,$K$D$$$F!";vA0$KBP:v$r;\$7$^$7$?!#8=;~E@$G$O!"(B|\verb|$B$NESCf$G(B
+$B%O%$%U%M!<%7%g%s9TJ,3d$rM^@)$9$k$?$a$N=$@5!"$*$h$S(B|verbatim|$B4D6-Cf$G$N(B
+$B%O%$%U%M!<%7%g%sM^@)$KMm$s$@=PNO%k!<%A%s$NL?Na$N=$@5$KBP1~$7$^$7$?!#(B
+$B$J$*!"%U%)!<%^%C%H$NF|IU$,(B\texttt{yyyy/mm/dd}$B$+$i(B\texttt{yyyy-mm-dd}$B$H$$$&(B
+ISO$B=q<0$KJQ99$5$l$^$7$?$,!"(B\pLaTeXe{}$B$N%U%)!<%^%C%HF|IU$O$^$@=>Mh$N=q<0$N(B
+$B$^$^$K$7$F$$$^$9!#(B
+
+
+\section{\file{nidanfloat}$B%Q%C%1!<%8$N=$@5(B}
+\LaTeX{}$B$GFsCJAH$K$*$1$kCJH4$-%U%m!<%H$r(Bbottom$B$K$bG[CV$G$-$k$h$&$K$9$k(B
+\file{nidanfloat}$B%Q%C%1!<%8$G$9$,!"1&%+%i%`$N=hM}Cf$KCJH4$-%U%m!<%H$,(B
+$B=P8=$7$?>l9g$K1&%+%i%`$N%F%-%9%H$N9b$5$r8m$j!"%F%-%9%H$H%U%m!<%H$,(B
+$B=E$J$C$F$7$^$&%P%0$,$"$j$^$7$?!#$3$l$O(B2006$BG/;~E@$+$i;XE&$5$l$F$$$?8E$$(B
+$BLdBj$G$7$?$,!":#2s$h$&$d$/%P%0=$@5$7$^$7$?!#(B
+
+
+\section{$B$=$NB>$N%P%0=$@5(B}
+$B$=$NB>$N(B\pLaTeXe{}$B%+!<%M%k$N=$@5E@$O0J2<$N$H$*$j$G$9!#(B
+\begin{itemize}
+\item $BAj8_;2>H$N(B|\ref{$B%i%Y%k(B}|$B$d(B|\pageref{$B%i%Y%k(B}|$B$r%;%/%7%g%s$J$I$N(B
+ $B!VF0$/0z?t!W$G;H$&$H!"L\<!$K=P$?$H$-$K8e$m$NH>3Q%9%Z!<%9$,>C$($k%P%0$r(B
+ $B=$@5$7$^$7$?!#(B
+\item $B=PNO%k!<%A%s$K4X$o$k%^%/%m$N?<$5Jd@5$N8m$j$K$h$j!"5SCm$r4^$`%Z!<%8(B
+ $B$NHGLLA4BN$,!JFC$K=DAH$G82Cx$K!K$:$l$F$$$?%P%0$rD>$7$^$7$?!#(B
+\item $B9TF,6XB'J8;z$ND>A0$G(B|\linebreak|$B$K$h$k6/@)2~9T$,8z$+$J$+$C$?(B
+ $BLdBj$KBP=h$7$^$7$?!#(B
+\item $B=D?t<0%G%#%l%/%7%g%s$G%"%s%@!<%9%3%"(B(|\_|)$B$N%Y!<%9%i%$%sJd@5NL$,(B
+ $B4V0c$C$F$$$?$N$r=$@5$7$^$7$?!#(B
+\end{itemize}
+$B$^$?!"(B\file{plext}$B%Q%C%1!<%8$N=$@5E@$O0J2<$N$H$*$j$G$9!#(B
+\begin{itemize}
+\item \LaTeXe\ 2015/01/01$B$KDI?o$7$F(B|\parbox|$B$r(Brobust$B$K$7$^$7$?!#(B
+ $B$^$?!"FH<+L?Na$G$"$k(B|\pbox|$B$bF1MM$K(Brobust$B$K$7$^$7$?!#(B
+\item |\pbox|$BL?Na$N%*%W%7%g%s0z?t!JI}$N;XDj!K$G!"(B\file{calc}$B%Q%C%1!<%8(B
+ $B$r;H$C$?>l9g$O<0$b;H$($k$h$&$K$7$^$7$?!#(B
+\item |\Kanji|$BL?Na$N0z?t$N$"$H$K?t;z$,B3$/>l9g!"$=$N?t;z$^$G4A?t;z$K(B
+ $B$J$C$F$7$^$&%P%0$r=$@5$7$^$7$?!#(B
+\end{itemize}
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B:#8e(Bp\LaTeX{}$B$KF3F~$9$k$+$b$7$l$J$$=$@5%Q%C%A$d;EMMJQ99$N%F%9%H$K$46(NO$/$@(B
+$B$5$$!#(B\TeX{}$B%U%!%$%k$NKAF,!J(B|\documentclass|$B$h$jA0!K$G(B
+\begin{verbatim}
+ \RequirePackage{exppl2e}
+\end{verbatim}
+$B$H=q$/$3$H$G!"8=:_$N3+H/HG$r%F%9%H$9$k$3$H$,$G$-$^$9!#(B
+$B%P%0Js9p$d$40U8+$r4?7^$7$^$9!#(B
+\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc07.tex b/language/japanese/platex/plnewsc07.tex
new file mode 100644
index 0000000000..20bcefa13d
--- /dev/null
+++ b/language/japanese/platex/plnewsc07.tex
@@ -0,0 +1,274 @@
+%% <2017/07/29>
+\documentclass{plnews}
+
+\publicationyear{2017}% $BH/9TG/(B
+\publicationmonth{07}% $BH/9T7n(B
+\publicationissue{c7}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\cs#1{\texttt{\char92 #1}}
+\def\pTeX{p\kern-.15em\TeX}
+\def\eTeX{$\varepsilon$-\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+% ==== specific to 2017/07/29 ====
+\usepackage{booktabs}
+\let\origfootnoterule\footnoterule
+\usepackage{pxftnright}
+\let\footnoterule\origfootnoterule
+\makeatletter
+\renewcommand{\section}{%
+ \@startsection{section}{1}{\z@}
+ {1.5\Cvs \@plus.6\Cvs \@minus.2\Cvs}%
+ {.5\Cvs \@plus.3\Cvs}{\reset@font\large\bfseries}% \Large -> \large
+}
+\renewcommand{\maketitle}{%
+ \twocolumn[{%
+ \parbox[t][6\baselineskip]{\textwidth}{%
+ \@titlefont\@title\hspace{3mm}%
+ \normalsize $BBh(B{\@issue}$B9f(B\\[\medskipamount]
+ \normalfont{\@year}$BG/(B{\@month}$B7n(B~$BH/9T(B\\
+ $B:n@.<T!'(B\begin{tabular}[t]{l}
+ \@author
+ \end{tabular}%
+ }
+ \parbox[t][3\baselineskip]{\textwidth}{%
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2017/07/29>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2017/05/05>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9(B\footnotemark$B!#(B
+ }%
+ }]%
+}
+\makeatother
+% ==== end ====
+
+\begin{document}
+
+\maketitle
+\footnotetext{$B=$@5%j%j!<%9(B\texttt{<2017/07/29>+1}$B$G$N99?72U=j$r4^$_$^$9!#(B}
+
+\section{$BI=$N%;%kMWAG<~0O$N(BJFM$B%0%k!<$rM^@)(B}
+$BI=$r:n$k(B|tabular|$B4D6-$G!"%;%k$NMWAG$,3g8LN`$J$I$G;O$^$k!"$^$?$O3g8LN`(B
+$B$J$I$G=*$o$k>l9g!"M>J,$J%9%Z!<%9$,F~$k$3$H$,$"$j$^$7$?!#(B
+$B$^$?!"%9%Z!<%9$,F~$k$+$I$&$+$O!"!V%=!<%9Cf$G%"%i%$%s%a%s%HJ8;z(B |&| $B$N(B
+$BA08e$KH>3Q6uGr$r=q$$$?$+$I$&$+!W$GJQ2=$7$F$$$^$7$?!#$3$NM>J,$J%9%Z!<%9(B
+$B$O!"(B\pTeX{}$B$N%a%H%j%C%/$+$iA^F~$5$l$k(BJFM$B%0%k!<$KM3Mh$7$^$9!#(B
+
+\begin{verbatim}
+ \begin{tabular}{|l|c|r|}
+ $B!J:8B7$(!K(B&$B!JCf1{B7$(!K(B&$B!J1&B7$(!K(B\\
+ $B!J:8!K(B & $B!JCf!K(B & $B!J1&!K(B\\
+ \end{tabular}
+\end{verbatim}
+
+\makeatletter
+\def\@tabclassz{%
+ \ifcase\@lastchclass
+ \@acolampacol
+ \or
+ \@ampacol
+ \or
+ \or
+ \or
+ \@addamp
+ \or
+ \@acolampacol
+ \or
+ \@firstampfalse\@acol
+ \fi
+ \edef\@preamble{%
+ \@preamble{%
+ \ifcase\@chnum
+ \hfil\ignorespaces\@sharp\unskip\hfil
+ \or
+ \hskip1sp\ignorespaces\@sharp\unskip\hfil
+ \or
+ \hfil\hskip1sp\ignorespaces\@sharp\unskip
+ \fi}}}
+\makeatother
+\DeleteShortVerb{\|}
+ \begin{tabular}{|l|c|r|}
+ $B!J:8B7$(!K(B&$B!JCf1{B7$(!K(B&$B!J1&B7$(!K(B\\
+ $B!J:8!K(B & $B!JCf!K(B & $B!J1&!K(B\\
+ \end{tabular}
+\MakeShortVerb{\|}
+\medskip
+
+$B%=!<%9$r8+$d$9$/$9$k$?$a$KH>3Q6uGr$rF~$l$k$3$H$O$h$/$"$j$^$9$N$G!"(B
+$BH>3Q6uGr$NM-L5$K$h$C$F7k2L$,JQ$o$k$N$O:$$j$^$9!#$=$N$?$a$+!"K\2H$N(B
+\LaTeX{}$B$G$O!"%"%i%$%s%a%s%HJ8;z(B |&| $B$NA08e$KH>3Q6uGr$r=q$$$?$+$I$&$+(B
+$B$K$+$+$o$i$:!"F1$8=PNO$,F@$i$l$k$h$&$JBP=h$,=>Mh$+$iF~$C$F$$$^$7$?!#(B
+
+\pLaTeX{}$B$N>l9g!"$3$NBP=h$,(B\pTeX{}$B$N(BJFM$B%0%k!<$K$O8z$$$F$$$^$;$s$G$7$?!#(B
+$B$3$NLdBj$r=$@5$7!"Cf1{B7$((B(|c|)$B$d:8B7$((B(|l|)$B!"1&B7$((B(|r|)$B$,$:$l$F(B
+$B8+$($J$$$h$&$K$J$j$^$7$?!#(B
+
+\medskip
+\makeatletter
+\def\@tabclassz{%
+ \ifcase\@lastchclass
+ \@acolampacol
+ \or
+ \@ampacol
+ \or
+ \or
+ \or
+ \@addamp
+ \or
+ \@acolampacol
+ \or
+ \@firstampfalse\@acol
+ \fi
+ \edef\@preamble{%
+ \@preamble{%
+ \ifcase\@chnum
+ \hfil\inhibitglue\ignorespaces\@sharp\unskip\unskip\hfil % c
+ \or
+ \hskip1sp\inhibitglue\ignorespaces\@sharp\unskip\unskip\hfil % l
+ \or
+ \hfil\hskip1sp\inhibitglue\ignorespaces\@sharp\unskip\unskip % r
+ \fi}}}
+\makeatother
+\DeleteShortVerb{\|}
+ \begin{tabular}{|l|c|r|}
+ $B!J:8B7$(!K(B&$B!JCf1{B7$(!K(B&$B!J1&B7$(!K(B\\
+ $B!J:8!K(B & $B!JCf!K(B & $B!J1&!K(B\\
+ \end{tabular}
+\MakeShortVerb{\|}
+\medskip
+
+$B$J$*!"$3$N=$@5$O(B\file{array}$B%Q%C%1!<%8!J(B\LaTeX3 Team$B$K$h$k(B
+\file{latex-tools}$B%P%s%I%k$K<}O?!K$rFI$_9~$`$HL58z$K$J$C$F$7$^$$$^$9!#(B
+\pLaTeX{}/u\pLaTeX{}$B$G(B\file{array}$B%Q%C%1!<%8$r;H$$$?$$>l9g$O!"(B
+\file{plarray}$B%Q%C%1!<%8!J(B2017/07/29$B0J9_$N(B\file{platex-tools}$B%P%s%I%k$K(B
+$B<}O?!K$rDI2C$b$7$/$OBe$o$j$KFI$_9~$s$G$/$@$5$$!#(B
+
+
+\section{\file{plext}$B$NB7$(0LCV(B}
+\file{plext}$B%Q%C%1!<%8$,3HD%$9$kI=AH!J(B|tabular|$B4D6-$H(B|array|$B4D6-!K!"(B
+$B$*$h$S(B|\parbox|$BL?Na$H(B|minipage|$B4D6-$N!VAHJ}8~%*%W%7%g%s!W(B
+(|<t>|, |<y>|, |<z>|)$B$r;HMQ$7$?>l9g$N!"7S@~$d%Y!<%9%i%$%s$NB7$(J}$N(B
+$B;EMM$r?7$?$K:vDj$7$^$7$?!#(B
+
+\medskip
+ \begin{tabular}{lcccc}
+ \toprule
+ $B"-Cf?H!@<~0O"*(B & $B2#(B & $B=D(B & $B=D?t<0(B \\
+ \midrule
+ $B2#(B & A & B & B \\
+ $B=D(B & B & A & D \\
+ $B=D?t<0(B & B & D & A \\
+ \bottomrule
+ \end{tabular}
+\bigskip
+
+A, B, D$B$O$=$l$>$l0J2<$N$H$*$j$G$9!J$J$*!"$3$NI=5-$O(B
+Lua\TeX-ja$B%Q%C%1!<%8$N%I%-%e%a%s%H$G$NI=5-$H0lCW$5$;$F$"$j$^$9!K!#(B
+
+\begin{itemize}
+ \item[A] $B<~0O$NAHJ}8~$HCf?H$NAHJ}8~$,F1$8>l9g(B
+ $B!J!a2#AH$G$N(B|<y>|, |<z>|$B!"=DAH$G$N(B|<t>|$B!K(B
+ \begin{itemize}\itemindent-18pt
+ \item \texttt{[t]}$B;XDj$N$H$-!'(B
+ $BCf?H$N@hF,9T$N%Y!<%9%i%$%s$,<~0O$N%Y!<%9%i%$%s$H0lCW$9$k!#(B
+ $BI=AH$G@hF,9T$N>e$K7S@~$,$"$C$?>l9g$O!"$=$l$,OBJ8%Y!<%9%i%$%s$N0LCV$H$J$k!#(B
+ \item \texttt{[c]}$B;XDj$N$H$-!'(B
+ $BCf?H$N>e2<$NCf?4$,<~0O$N?t<0$N<4$rDL$k!#(B
+ \item \texttt{[b]}$B;XDj$N$H$-!'(B
+ $BCf?H$N:G=*9T$N%Y!<%9%i%$%s$,<~0O$N%Y!<%9%i%$%s$H0lCW$9$k!#(B
+ $BI=AH$G:G=*9T$N2<$K7S@~$,$"$C$?>l9g$O!"$=$l$,OBJ8%Y!<%9%i%$%s$N0LCV$H$J$k!#(B
+ \end{itemize}
+ \item[B] $B<~0O$NAHJ}8~$HCf?H$NAHJ}8~$,(B90$BEY$:$l$F$$$k>l9g(B
+ $B!J!a2#AH$G$N(B|<t>|$B!"=DAH$G$N(B|<y>|$B!K(B
+ \begin{itemize}\itemindent-18pt
+ \item \texttt{[t]}$B;XDj$N$H$-!'(B
+ $BI=AH$K$*$$$F$O!">eC<$,<~0O$NOBJ8%Y!<%9%i%$%s$H0lCW$9$k!#(B
+ |\parbox|$B$d(B|minipage|$B4D6-$K$*$$$F$O!">eC<$,<~0O$NOBJ8J8;z$N>eC<$H0lCW$9$k!#(B
+ \item \texttt{[c]}$B;XDj$N$H$-!'(B
+ $BCf?H$N>e2<$NCf?4$,<~0O$N?t<0$N<4$rDL$k!#(B
+ \item \texttt{[b]}$B;XDj$N$H$-!'(B
+ $BI=AH$K$*$$$F$O!"2<C<$,<~0O$NOBJ8%Y!<%9%i%$%s$H0lCW$9$k!#(B
+ |\parbox|$B$d(B|minipage|$B4D6-$K$*$$$F$O!"2<C<$,<~0O$NOBJ8J8;z$N2<C<$H0lCW$9$k!#(B
+ \end{itemize}
+ \item[D] $BDL>o$N=DAH$H=D?t<0%G%#%l%/%7%g%s$,Mm$s$@>l9g(B
+ $B!J!a=DAH$G$N(B|<z>|$B!K(B \\
+ |\parbox|$B$d(B|minipage|$B4D6-$K$*$$$F$O!">e$N(BB$B$N>l9g$HF1$8!#(B
+ $BI=AH$K$*$$$F$O!"(B
+ \begin{itemize}\itemindent-18pt
+ \item \texttt{[t]}$B;XDj$N$H$-!'(B
+ $BCf?H$N@hF,9T$N2$J8%Y!<%9%i%$%s$,<~0O$N2$J8%Y!<%9%i%$%s$H0lCW$9$k!#(B
+ \item \texttt{[c]}$B;XDj$N$H$-!'(B
+ $BCf?H$N>e2<$NCf?4$,<~0O$N?t<0$N<4$rDL$k!#(B
+ \item \texttt{[b]}$B;XDj$N$H$-!'(B
+ $BCf?H$N:G=*9T$N2$J8%Y!<%9%i%$%s$,<~0O$N2$J8%Y!<%9%i%$%s$H0lCW$9$k!#(B
+ \end{itemize}
+\end{itemize}
+
+
+\section{\file{ascmac}$B$N%j%?!<%s5-9fL?Na$N>WFMBP:v(B}
+\file{ascmac}$B%Q%C%1!<%8$,Ds6!$9$k(B|\Return|$B$H$$$&L?Na$,!"$[$+$N(B
+$B%Q%C%1!<%8$H>WFM$9$k$3$H$,$"$j$^$7$?!JNc!'(B\file{algorithm2e}$B%Q%C%1!<%8!K!#(B
+$B=>Mh$N(B\file{ascmac}$B%Q%C%1!<%8$G$O!"4{$K(B|\Return|$B$H$$$&L?Na$,Dj5A$5$l$F(B
+$B$$$F$b4X78$J$/>e=q$-$7$F$$$^$7$?$,!"?7$7$$HG$G$O(B|\Return|$B$,Dj5A:Q$_$+(B
+$B$I$&$+%A%'%C%/$9$k$h$&$K$7$^$7$?!#$=$7$F!"(B
+$B!VDj5A:Q$_$G$+$D(B\file{ascmac}$B%Q%C%1!<%8$NDj5A$HHs8_49$J>l9g!W(B
+$B$K%(%i!<$r=P$7$^$9!#(B
+
+
+\section{$B6XB'%Z%J%k%F%#$N=$@5(B}
+$B@N$N%"%9%-!<F|K\8l(B\TeX{}$B$N:"$+$i%Z%J%k%F%#@_Dj$,8m$C$F$$$?J8;z!J(B|%&$B!s!u(B|$B!K$r(B
+$B=$@5$7$^$7$?!#(B
+u\pLaTeX{}$B$G$O$5$i$K!"Cf9q8l$d4Z9q8l$G!R!&!S$N;z7A$H$7$F(B\texttt{U+30FB}$B$G$J$/(B
+\texttt{U+00B7}$B$,;H$o$l$k$3$H$+$i!"?7$?$K(B|\prebreakpenalty|$B$r@_Dj$7$^$7$?(B
+\footnote{u\pLaTeX{}$B$N>l9g$O=>Mh$+$i!"(B\texttt{U+00A0}--\texttt{U+00FF}$B$NHO0O(B
+$B$K$"$kJ8;z$K$D$$$F!V$3$l$,LsJ*$G$"$C$F!"$+$D(BJIS X 0213$B$KDj5A$5$l$F$$$k>l9g!W$O(B
+$B6XB'%Z%J%k%F%#$r@_Dj$7$F$$$^$7$?!#(B\texttt{U+00B7}$B$b$3$l$K3:Ev$9$k$N$G!"(B
+$BC1$KO3$l$F$$$?2DG=@-$,$"$j$^$9!#0lJ}$G!"$3$NHO0O$NJ8;z$O(B8-bit Latin$B$H$b=EJ#(B
+$B$9$k$N$G(B\textbf{$B!VOBJ8J8;z$NA08e$K!JH>3Q6uGr$r64$^$:!KO"B3$9$k(BT1$B%(%s%3!<%I$N(B
+$BJ8;z!W$J$I$,M=4|$;$:6XB'BP>]$K$J$k2DG=@-$,$"$k$3$H$KCm0U$,I,MW(B}$B$G$9!#(B}$B!#(B
+
+
+\section{$B$=$NB>$N%P%0=$@5(B}
+$B5lHG$G:.F~$7$?%P%0$N=$@5!'(B
+\begin{itemize}
+\item $B9TF,6XB'J8;z$ND>A0$G(B|\linebreak|$B$K$h$k6/@)2~9T$,8z$+$J$$LdBj$K(B
+ $BBP=h$7$?(B2017/05/05$BHG$G!":#EY$O5U$K(B|\nolinebreak|$B$rA^F~$7$?$=$N2U=j$G(B
+ |\(x)kanjiskip|$B$,F~$i$J$/$J$C$?LdBj$KBP=h!#(B
+\end{itemize}
+$B$=$NB>$N(B\pLaTeXe{}$B%+!<%M%k$N=$@5E@!'(B
+\begin{itemize}
+\item |\adjustbaseline|$B$NA43QJ8;z4p=`$r!"A43Q6uGrJ8;z$+$i!V4A!W$H$$$&(B
+ $BJ8;z$KJQ99!#(B
+\end{itemize}
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B:#8e(B\pLaTeX{}$B$KF3F~$9$k$+$b$7$l$J$$=$@5%Q%C%A$d;EMMJQ99$N%F%9%H$K$46(NO$/$@(B
+$B$5$$!#(B\TeX{}$B%U%!%$%k$NKAF,!J(B|\documentclass|$B$h$jA0!K$G(B
+\begin{verbatim}
+ \RequirePackage{exppl2e}
+\end{verbatim}
+$B$H=q$/$3$H$G!"3+H/HG$r%F%9%H$9$k$3$H$,$G$-$^$9!#(B
+$B8=:_$O0J2<$N=$@5$,4^$^$l!"FC$K:G8e$N(B3$B$D$O2$J8$N(B\LaTeX{}$B$H$N(B
+$BAHHG7k2L$N8_49@-8~>e$rL\;X$7$F$$$^$9!#(B
+\begin{itemize}
+\item $B%"%/%;%s%H9g@.J8;z$NA08e$K(B|\xkanjiskip|$B$,F~$i$J$$LdBj$N=$@5(B
+\item |\<|$B$H$$$&L?Na$rCJMnF,$G$b8z$/$h$&$K$9$k=$@5(B
+ \footnote{2010$BG/$N(B\pTeX{}$B$N=$@5$K$h$j(B\cs{inhibitglue}$B$,?bD>%b!<%I(B
+ $B$G8z$+$J$/$J$C$?$3$H$X$NBP1~!#(B}
+\item tabbing$B4D6-$N9T$N:G=i$N9`L\$@$13g8LN`$N(BJFM$B%0%k!<$,F~$k8=>]$X$NBP=h(B
+\item |\verb|$B$NCf?H$,H>3Q6uGr$G;O$^$k>l9g$K$=$l$,>CLG$9$kLdBj$N=$@5(B
+\item |\ref|$B$N7k2L$,(B``A''$B$N$h$&$J1QBgJ8;z$N>l9g$N%9%Z!<%9%U%!%/%?!<(B
+ \footnote{$BJ8Kv6uGr$+C18l4V6uGr$+$r7h$a$k0x;R!#(B}$B$NJd@5(B
+\item |\emph{f\textrm{a}}|$B$N$h$&$J>l9g$N(B|\text..|$BL?Na$N:8B&$G%$%?%j%C%/Jd@5(B
+ $B$,8z$+$J$$LdBj$N=$@5(B
+\end{itemize}
+$B%P%0Js9p$d$40U8+$r4?7^$7$^$9!#(B
+\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc08.tex b/language/japanese/platex/plnewsc08.tex
new file mode 100644
index 0000000000..30f4a98aad
--- /dev/null
+++ b/language/japanese/platex/plnewsc08.tex
@@ -0,0 +1,96 @@
+%% <2017/09/26> and <2017/10/28>
+\documentclass{plnews}
+
+\publicationyear{2017}% $BH/9TG/(B
+\publicationmonth{10}% $BH/9T7n(B
+\publicationissue{c8}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\cs#1{\texttt{\char92 #1}}
+\def\pTeX{p\kern-.15em\TeX}
+\def\eTeX{$\varepsilon$-\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2017/10/28>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2017/07/29>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9(B
+\footnote{$BESCf$N%j%j!<%9(B\texttt{<2017/09/26>}$B$G$N99?72U=j$r4^$_$^$9!#(B}$B!#(B
+
+
+\section{$B5lHG$N(Btabular$B4D6-$N%P%0=$@5(B}
+\pLaTeXe\ \texttt{<2017/07/29>}$B$N%j%j!<%9$G=$@5$7$?(B|tabular|$B4D6-$K!"(B
+$B1&B7$((B(|r|)$B$N%;%k$,$:$l$k%P%0$,:.F~$7$F$$$?$N$r=$@5$7$^$7$?!#(B
+
+
+\section{tabbing$B4D6-$N(BJFM$B%0%k!<BP:v(B}
+|tabular|$B4D6-$HF1MM$K(B|tabbing|$B4D6-$G$b!"9T$N:G=i$N9`L\$@$1!"3g8LN`$J$I$G(B
+$B;O$^$k>l9g$K(BJFM$B%0%k!<$,F~$C$F$$$^$7$?!#(B
+$B?7$7$$%P!<%8%g%s(B\pLaTeXe\ \texttt{<2017/10/28>}$B$G$O!"0lN'$KKAF,$N(B
+JFM$B%0%k!<$,F~$i$J$$$h$&$K$7$^$7$?!#(B
+
+
+\section{\LaTeXe{}$B$H$N8_49@-8~>e(B}
+\pLaTeXe{}$B$G2C$($i$l$?=$@5$K$h$C$F(B\LaTeXe{}$B$N5sF0$,2u$l$F$$$?2U=j$r!"(B
+$B0J2<$N$h$&$K2~NI$7$^$7$?!#(B
+
+\subsection{\cs{ref}$BD>8e$N%9%Z!<%9%U%!%/%?!<(B}
+\<$B!V(B|\ref|$BL?NaD>8e$NOBJ8J8;z$H$N4V$K(B|\xkanjiskip|$B$,A^F~$5$l$k$h$&$K!W(B
+$B$H$$$&%"%9%-!<(B\pLaTeXe{}$B$NJQ99$K$O!"K\2H(B\LaTeXe{}$B$HHf$Y$F(B
+\begin{itemize}
+\item $BL\<!$K8=$l$k9`L\$G(B|\ref|$B$,;H$o$l$?>l9g$K!"8eB3$NH>3Q6uGr$,>C$($k(B
+\item |\ref|$B$N7k2L$,(B``A''$B$N$h$&$J1QBgJ8;z$N>l9g$K!"%9%Z!<%9%U%!%/%?!<(B
+\footnote{$BJ8Kv6uGr$+C18l4V6uGr$+$r7h$a$k0x;R!#(B}$B$,@5$7$/07$o$l$J$$(B
+\end{itemize}
+$B$H$$$&LdBj$,$"$j$^$7$?!#A0<T$NLdBj$O%3%_%e%K%F%#HG(B
+\pLaTeXe\ \texttt{<2017/04/08>}$B$GBP=h:Q$_$G$7$?$,!"8e<T$NLdBj$O(B
+$B;D$C$F$$$?$N$G=$@5$7$^$7$?(B
+$B!J;29M!'(B\LaTeXe{}$B%^%/%m(B\&$B%/%i%9(B $B%W%m%0%i%_%s%0<BA)2r@b!K!#(B
+
+\subsection{\cs{verb}$B$NKAF,$N6uGr(B}
+\<$B!V(B|\verb|$BL?NaD>A0$G(B|\xkanjiskip|$B$,E,@Z$KA^F~$5$l$k$h$&$K!W(B
+$B$H$$$&%"%9%-!<(B\pLaTeXe{}$B$NJQ99$K$O!"!V(B|\verb|$B$NKAF,$KH>3Q6uGr$,$"$k>l9g(B
+$B!JNc$($P(B|\verb+ abc+|$B$J$I!K$K$=$l$,>C$($F$7$^$&!W$H$$$&LdBj$,$"$j$^$7$?(B
+$B$N$G!"$3$l$r=$@5$7$^$7$?!#(B
+
+\subsection{\cs{text..}$BL?Na$N%$%?%j%C%/Jd@5(B}
+$B%"%9%-!<(B\pLaTeXe{}$B$O!"!V(B{\gtfamily $B$"(B\null\verb|\texttt{abc}|$B$$(B} $B$N$h$&$J(B
+$B=qBNJQ99;~$K(B|\xkanjiskip|$B$,F~$i$J$$!W$H$$$&8=>]$KBP=h$9$k$?$a!"(B
+$B!V%$%?%j%C%/Jd@5$r5>@7$K$7$F(B|\xkanjiskip|$B$rF~$l$k!W$H$$$&2sHr:v$r$H$C$F(B
+$B$$$^$7$?!#$3$N2sHr:v$O(B2010$BG/$N(B\pTeX{}$BB&$N=$@5$GITMW$H$J$C$?$?$a!"(B
+\pLaTeXe{}$B$NEv3:%3!<%I$r:o=|$7$FK\2H(B\LaTeXe{}$B$NDj5A$KLa$7$^$7$?!#(B
+$B$3$l$GNc$($P(B|\emph{f\textrm{a}}|$B$N$h$&$J>l9g$K(B|\text..|$BL?Na$N:8B&$K(B
+$B%$%?%j%C%/Jd@5$,8z$/$h$&$K$J$j$^$7$?!#(B
+
+
+\section{\cs{inhibitglue}$B$N>JN,7A$N2~NI(B}
+\pLaTeXe{}$B$O!"(B|\inhibitglue|$B$N>JN,7A$H$7$F;H$($k(B|\<|$B$H$$$&L?Na$rDs6!$7$F(B
+$B$$$^$7$?!#$7$+$7!"(B2014$BG/$N(B\pTeX{}$B$N=$@5$KH<$$!"(B|\<|$B$,CJMnF,$G8z$+$J$/(B
+$B$J$C$F$$$^$7$?(B\footnote{\cs{inhibitglue}$B$,(B\pTeX{}$B$N5sF0JQ99$K$h$j(B
+$B?bD>%b!<%I$G8z$+$J$/$J$C$?$?$a!#(B}$B$N$G!"Dj5A$r2~NI$7$^$7$?!#(B
+
+
+\section{$BI8=`%/%i%9$N=$@5(B}
+\pLaTeXe{}$BI8=`%/%i%9$N(B|\Cht|$B$J$I$NA43QJ8;z4p=`$r!"A43Q6uGrJ8;z$+$i!V4A!W$K(B
+$BJQ99$7$^$7$?!#(B
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B:#8e(B\pLaTeX{}$B$KF3F~$9$k$+$b$7$l$J$$=$@5%Q%C%A$d;EMMJQ99$N%F%9%H$K$46(NO$/$@(B
+$B$5$$!#(B\TeX{}$B%U%!%$%k$NKAF,!J(B|\documentclass|$B$h$jA0!K$G(B
+\begin{verbatim}
+ \RequirePackage{exppl2e}
+\end{verbatim}
+$B$H=q$/$3$H$G!"3+H/HG$r%F%9%H$9$k$3$H$,$G$-$^$9!#(B
+$B%P%0Js9p$d$40U8+$r4?7^$7$^$9!#(B
+\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc09.tex b/language/japanese/platex/plnewsc09.tex
new file mode 100644
index 0000000000..3944f5ec7e
--- /dev/null
+++ b/language/japanese/platex/plnewsc09.tex
@@ -0,0 +1,81 @@
+%% <2018/03/09>
+\documentclass{plnews}
+
+\publicationyear{2018}% $BH/9TG/(B
+\publicationmonth{03}% $BH/9T7n(B
+\publicationissue{c9}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\cs#1{\texttt{\char92 #1}}
+\def\pTeX{p\kern-.15em\TeX}
+\def\eTeX{$\varepsilon$-\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2018/03/09>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2017/10/28>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+
+
+\section{tabular$B4D6-$N2~NI(B}
+\pLaTeXe\ \texttt{<2017/07/29>}$B$GF3F~$7$?(B|tabular|$B4D6-$N=$@5J}?K$r(B
+$BE>49$7!"$h$j(B\LaTeXe{}$B$H$N8_49@-$r9b$a$^$7$?!#6qBNE*$K$O(B
+\begin{verbatim}
+ \begin{tabular}{p{5cm}}
+ A\\
+ \relax\par
+ A
+ \end{tabular}
+\end{verbatim}
+$B$N$h$&$J%=!<%9$GM>J,$J6u9T$,F~$i$J$$$h$&$K$7$^$7$?!#(B
+$B$3$l$r<B8=$9$k$?$a$K8e=R$9$k(B|\removejfmglue|$BL?Na$r;HMQ$7$F$$$^$9!#(B
+
+
+\section{\cs{removejfmglue}$BL?Na$NDI2C(B}
+\<$B!V:G8e$N%N!<%I$,(BJFM $B%0%k!<$G$"$C$?>l9g$K$=$l$r:o=|$9$k!W$H$$$&5!G=$r(B
+$B;}$D(B|\removejfmglue|$BL?Na$rDI2C$7$^$7$?!#$?$@$7!"$3$l$O(B\epTeX\ 180226$B0J9_$K(B
+$B<BAu$5$l$?(B|\lastnodesubtype|$B$H$$$&%W%j%_%F%#%V$,MxMQ2DG=$J>l9g$N$_;H$($^$9!#(B
+
+
+\section{$BOBJ8%9%1!<%kCM$N?75,Ls(B}
+$BF|K\8lMQ%/%i%9%U%!%$%k$N?7$?$J6&DL5,Ls$H$7$F!"?7$?$K(B
+$B!V%/%i%9%U%!%$%k$,0U?^$9$kOBJ8%9%1!<%kCM(B
+$B!J(B$1\,\mathrm{zw} \div \textmc{$BMW5a%5%$%:(B}$$B!K!W(B
+$B$r?tCM%^%/%m(B|\Cjascale|$B$GDj5A$9$k$3$H$K$7$^$7$?!#:#8e$O(B
+\begin{itemize}
+\item $BF|K\8l%/%i%9%U%!%$%k$N:n@.<T$O!"(B
+ $B86B'$H$7$F(B|\Cjascale|$B$rOBJ8%9%1!<%kCM$K@_Dj$9$k!#(B
+\item $BF|K\8l%U%)%s%H$rJQ99$9$k%Q%C%1!<%8$J$I$N:n<T$O!"(B
+ $B86B'$H$7$F%/%i%9%U%!%$%k$,Dj$a$k(B|\Cjascale|$B$r;2>H$9$k!#(B
+\end{itemize}
+$B$H$$$&1?MQ$r?d>)$7$^$9!#(B
+
+
+\section{\pLaTeX{}$B$H(Bu\pLaTeX{}$B$N6&DL2=(B}
+2016$BG/0J9_!"(B\pLaTeX{}$B$H(Bu\pLaTeX{}$B$r$H$b$KF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#$,(B
+$B4IM}$9$k$h$&$K$J$C$?$3$H$+$i!"(B\TeX\ Live 2018$B0J9_$G$O(B\pLaTeX{}$B$H(B
+u\pLaTeX{}$B$N%U%)!<%^%C%H:n@.;~$K;H$o$l$k(B|.ltx|$B%U%!%$%k72$r(B
+$BBgI}$K6&DL2=$7$^$7$?!#$3$l$K$h$j!"=>Mh$O(Bu\pLaTeX{}$B$r(B\pLaTeX{}$B$HFHN)$K(B
+$B%$%s%9%H!<%k$9$k$3$H$,$G$-$^$7$?$,!":#8e$O(Bu\pLaTeX{}$B$,(B\pLaTeX{}$B$K(B
+$B0MB8$9$k$3$H$K$J$j$^$9!#(B
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B:#8e(B\pLaTeX{}$B$KF3F~$9$k$+$b$7$l$J$$=$@5%Q%C%A$d;EMMJQ99$N%F%9%H$K$46(NO$/$@(B
+$B$5$$!#(B\TeX{}$B%U%!%$%k$NKAF,!J(B|\documentclass|$B$h$jA0!K$G(B
+\begin{verbatim}
+ \RequirePackage{exppl2e}
+\end{verbatim}
+$B$H=q$/$3$H$G!"3+H/HG$r%F%9%H$9$k$3$H$,$G$-$^$9!#(B
+$B%P%0Js9p$d$40U8+$r4?7^$7$^$9!#(B
+\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc10.tex b/language/japanese/platex/plnewsc10.tex
new file mode 100644
index 0000000000..7abf9d8c7a
--- /dev/null
+++ b/language/japanese/platex/plnewsc10.tex
@@ -0,0 +1,77 @@
+%% <2018-04-01> and <2018-05-20>
+\documentclass{plnews}
+
+\publicationyear{2018}% $BH/9TG/(B
+\publicationmonth{05}% $BH/9T7n(B
+\publicationissue{c10}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\cs#1{\texttt{\char92 #1}}
+\def\pTeX{p\kern-.15em\TeX}
+\def\eTeX{$\varepsilon$-\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2018-04-01>}$B$*$h$S(B
+\texttt{<2018-05-20>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2018/03/09>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+$B:#2s$+$i!"%U%)!<%^%C%H$NF|IU$NI=5-$r(Byyyy/mm/dd$B$+$i(BISO 8601$B=`5r$N(B
+yyyy-mm-dd$B$KJQ99$7$^$7$?!#(B
+
+
+\section{\LaTeXe\ \texttt{<2018-04-01>}$BBP1~(B}
+\LaTeXe\ \texttt{<2018-04-01>}$B$G!"2$J8$N(Binputenc$B$N4{Dj$,(B|utf8|$B$K(B
+$B$J$j$^$7$?!#$3$l$K9g$o$;!"(B\pLaTeXe $B$GOBJ8MQ$K3HD%$7$F$$$?(B
+|\DeclareFontEncoding|$BL?Na$G$b(B|.dfu|$B%U%!%$%k$NFI9~=hM}$rDI2C$7$^$7$?!#(B
+
+
+\section{$B%H%s%\4XO"$N=$@5$H5!G=DI2C(B}
+$B=>Mh!"(Bcolor$B%Q%C%1!<%8$J$I$G%F%-%9%H$K?'$r$D$1$?>l9g!"(B
+$B$=$N?'$D$-%F%-%9%H$NESCf$K2~%Z!<%8$9$k$H$=$3$@$1%H%s%\$K$b(B
+$B?'$,$D$/$H$$$&LdBj$,$"$j$^$7$?!#(B\pLaTeXe\ \texttt{<2018-05-20>}$B$G$O(B
+$B$3$NLdBj$KBP=h$7$^$7$?!#(B
+
+$B$5$i$K!"%H%s%\$r%+%9%?%^%$%:$7$d$9$/$9$k$?$a!"0J2<$N;EMM$rDj$a$^$9!#(B
+$B%Q%C%1!<%8$r:n$k>l9g$J$I$K!"0J2<$N%^%/%m$d%Q%i%a!<%?$r(B
+$BJQ99$9$k$3$H$,$G$-$^$9!#(B
+
+$B$^$:$O%^%/%m$G$9!#(B
+\begin{itemize}
+\item |\maketombowbox|$B$O%H%s%\$K$J$k7A>u$rMQ0U$9$kL?Na$G$9!#(B
+\item |\@outputtombow|$B$OMQ0U$5$l$?%H%s%\$rDj0LCV$K=PNO$9$kL?Na$G$9!#(B
+\end{itemize}
+$B<!$K%Q%i%a!<%?$G$9!#(B
+\begin{itemize}
+\item $B%H%s%\$K=PNO$9$k%P%J!<$O(B|\@bannertoken|$B$GI=$9!#(B
+ $B$3$l$O%H!<%/%s%l%8%9%?$G$"$k!#!Z%"%9%-!<HG$HF1MM![(B
+\item $B%H%s%\$N@~$NI}$O(B|\@tombowwidth|$B$GI=$9!#(B
+ $B$3$l$O(B|\dimen|$B%l%8%9%?$G$"$j!"%G%U%)%k%H$O(B
+ |.1pt|$B$G$"$k!#!Z%"%9%-!<HG$HF1MM![(B
+\item $B%H%s%\$NEI$jB-$7!J%I%V!K$NI}$O(B|\@tombowbleed|$B$GI=$9!#(B
+ $B$3$l$O@#K!%^%/%m$G$"$j!"%G%U%)%k%H$O(B
+ |\def\@tombowbleed{3mm}|$B$G$"$k!#!Z?7@_![(B
+\item $B%H%s%\$N?'$O(B|\@tombowcolor|$B%^%/%m$GI=$9!#(B
+ $B%G%U%)%k%H$O(B|\def\@tombowcolor{\normalcolor}|$B$G$"$k!#!Z?7@_![(B
+\end{itemize}
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B:#8e(B\pLaTeX{}$B$KF3F~$9$k$+$b$7$l$J$$=$@5%Q%C%A$d;EMMJQ99$N%F%9%H$K$46(NO$/$@(B
+$B$5$$!#(B\TeX{}$B%U%!%$%k$NKAF,!J(B|\documentclass|$B$h$jA0!K$G(B
+\begin{verbatim}
+ \RequirePackage{exppl2e}
+\end{verbatim}
+$B$H=q$/$3$H$G!"3+H/HG$r%F%9%H$9$k$3$H$,$G$-$^$9!#(B
+$B%P%0Js9p$d$40U8+$r4?7^$7$^$9!#(B
+\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B%7%9%F%`$,MxMQ$G$-$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc11.tex b/language/japanese/platex/plnewsc11.tex
new file mode 100644
index 0000000000..2a5ff36713
--- /dev/null
+++ b/language/japanese/platex/plnewsc11.tex
@@ -0,0 +1,94 @@
+%% <2018-07-28>
+\documentclass{plnews}
+
+\publicationyear{2018}% $BH/9TG/(B
+\publicationmonth{07}% $BH/9T7n(B
+\publicationissue{c11}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\cs#1{\texttt{\char92 #1}}
+\def\pTeX{p\kern-.15em\TeX}
+\def\eTeX{$\varepsilon$-\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2018-07-28>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2018-05-20>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+
+
+\section{$BI8=`%/%i%9$N(B\cs{today}$B$r@>Nq$K(B}
+\pLaTeX{}$BIUB0$NI8=`%/%i%9(B
+(jarticle, jbook, jreport, tarticle, tbook, treport)$B$G$O!"(B
+$B$3$l$^$G(B|\today|$BL?Na$GI=<($5$l$kF|IU$N%G%U%)%k%H$r(B
+\begin{quote}
+\$BOBNq(B\today
+\end{quote}
+$B$N$h$&$K859f$H$7$F$$$^$7$?!#(B
+$B$7$+$7!"J?@.(B31$BG/!J(B2019$BG/!K$K2~85$,M=Dj$5$l$F$$$k$3$H$r5!$K!"(B
+$B:#2s$N%j%j!<%9$+$i%G%U%)%k%H$r(B
+\begin{quote}
+\$B@>Nq(B\today
+\end{quote}
+$B$N$h$&$J@>Nq$KJQ99$7$^$7$?!#(B
+u\pLaTeX{}$BIUB0$N%/%i%9$bF1MM$KJQ99$7$F$$$^$9!#(B
+
+
+\section{$B%7%j!<%:(B\texttt{b}$B$bB@;z$K(B}
+\LaTeX{}$BI8=`$G$O!"B@;z(B(|\bfseries|, |\textbf|)$B$r;XDj$9$k$H(B
+{\fontseries{bx}\selectfont bold extended} (|bx|)$B$K@Z$jBX$o$j$^$9!#(B
+
+$B0lJ}!"(B\file{tgtermes}, \file{iwona}$B$J$I$N2$J8%U%)%s%H%Q%C%1!<%8$r(B
+$B;H$&$H!"B@;z$,(B{\fontseries{b}\selectfont bold} (|b|)$B$KJQ$o$j$^$9!#(B
+
+$B=>Mh$N(B(u)\pLaTeX{}$B$G$O!"OBJ8$NB@;z$r%7%j!<%:(B|bx|$B$@$1$K3d$jEv$F!"(B
+|b|$B$K$O2?$b@_Dj$7$F$$$^$;$s$G$7$?!#$=$N$?$a!"8e<T$N>l9g$K(B
+\begin{quote}\scriptsize
+\begin{verbatim}
+LaTeX Font Warning: Font shape `JY1/mc/b/n' undefined
+(Font) using `JY1/mc/m/n' instead on ...
+\end{verbatim}
+\end{quote}
+$B$N$h$&$J7Y9p$,=P$F!VOBJ8$,B@;z$K$J$i$J$$!W$H$$$&5sF0$G$7$?!#(B
+$B:#2s$+$i%7%j!<%:(B|b|$B$K$bOBJ8$NB@;z$r3d$jEv$F!"(B
+$BB@;z$K$J$k$h$&$K$7$^$7$?!#(B
+
+
+\section{$B%"%/%;%s%HJ8;z$N:F=$@5(B}
+\pLaTeXe\ 2016/04/17$B$+$i(B2016/07/01$B$K$+$1$F!"(B
+$B!V%Y!<%9%i%$%sJd@5NL$,%<%m$G$J$$>l9g$K%"%/%;%s%H9g@.J8;z$,Mp$l$k!W(B
+$B$H$$$&%P%0$r=$@5$7$h$&$H;n$_$F$$$^$7$?!#(B
+$B$3$N;~$O%H%i%V%k$,Aj<!$$$@$?$a!"0lC6A4$F$N%Q%C%A$rE15n$7$?$N(B
+$B$G$9$,!J;29M!'(B\file{plnewsc03.tex}$B!K!":#2sJL$NJ}K!$G(B
+$B:FEY%Q%C%A$rF3F~$7$^$7$?!#(B
+\begin{itemize}
+\item \textbf{$B%G%U%)%k%H$G$O=$@5%Q%C%A$OL58z(B}$B$G$9!#(B
+\item |\fixcompositeaccent|$BL?Na!Z?7@_![(B\\
+ $B$3$NL?Na$rH/9T$9$k$H!"$=$l0J9_$G(B\pLaTeX{}$BMQ=$@5%Q%C%A$,(B
+ $BM-8z2=$5$l$^$9!#%0%k!<%WFb$GH/9T$5$l$?>l9g$O!"(B
+ $B$=$N%0%k!<%WFb$G$N$_=$@5%Q%C%A$,M-8z$G$9!#(B
+\item |\nofixcompositeaccent|$BL?Na!Z?7@_![(B\\
+ |\fixcompositeaccent|$B$N8z2L$rBG$A>C$7!"(B
+ $B85$N(B\LaTeX{}$B$NDj5A$KLa$7$^$9!#(B
+\end{itemize}
+|\fixcompositeaccent|$BL?Na$rH/9T$9$k$H!"(B
+$B!V%Y!<%9%i%$%sJd@5NL$,%<%m$G$J$$>l9g$N%"%/%;%s%H$N9b$5!W(B
+$B!V<~0O$NOBJ8J8;z$H$N4V$K<+F0A^F~$5$l$k(B|\xkanjiskip|$B!W$J$I$N(B
+$B5sF0$,$[$\4|BTDL$j$K$J$j$^$9$,!"(B
+$B0lIt(B\LaTeX{}$B$H$O0[$J$k5sF0!J7Y9p!&%(%i!<!K$K$J$k>l9g$,$"$j$^$9!#(B
+$BI,MW$K1~$8$F(B|\fixcompositeaccent|$B$rM-8z2=!&L58z2=$9$k$3$H$G(B
+$BBP=h$7$F$/$@$5$$!#(B
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B%P%0Js9p$d$40U8+!"3+H/HG$NF~<j$O(BGitHub$B$X!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plnewsc12.tex b/language/japanese/platex/plnewsc12.tex
new file mode 100644
index 0000000000..b732bc0b54
--- /dev/null
+++ b/language/japanese/platex/plnewsc12.tex
@@ -0,0 +1,69 @@
+%% <2018-12-01>
+\documentclass{plnews}
+
+\publicationyear{2018}% $BH/9TG/(B
+\publicationmonth{12}% $BH/9T7n(B
+\publicationissue{c12}% $BHV9f(B
+\author{$BF|K\8l(B\TeX{}$B3+H/%3%_%e%K%F%#!J(B\texttt{https://texjp.org/}$B!K(B}
+
+\def\cs#1{\texttt{\char92 #1}}
+\def\pTeX{p\kern-.15em\TeX}
+\def\eTeX{$\varepsilon$-\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+
+\begin{document}
+
+\maketitle
+
+$B$3$NJ8=q$O%3%_%e%K%F%#HG(B\pLaTeXe\ \texttt{<2018-12-01>}$B$K$D$$$F!"(B
+\pLaTeXe\ \texttt{<2018-07-28>}$B$+$i$N99?72U=j$r$^$H$a$?$b$N$G$9!#(B
+
+
+\section{\file{plext}$B$N%P%0=$@5(B}
+\file{plext}$B%Q%C%1!<%8$,3HD%$9$k(B|\pcaption|$BL?Na$K$D$$$F!"(B
+$B2<5-$N;EMMJQ99$H%P%0=$@5$r9T$$$^$7$?!#(B
+\begin{description}
+\item[$B;EMMJQ99(B]
+ $BK\J8$,=DAH$N;~!"%-%c%W%7%g%s$b=DAH$K$9$k!#(B
+ $B!J=>Mh$O!"K\J8$NAHJ}8~$K$h$i$:>o$K%-%c%W%7%g%s$O2#AH(B
+ $B$K$J$C$F$$$^$7$?!#!K(B
+\item[$B%P%0=$@5(B]
+ $BK\J8$,=DAH$G!"%-%c%W%7%g%s$r2#AH$K$9$k>l9g$K(B
+ $B!V$I$s$J$KC;$$%-%c%W%7%g%s$G$b!"I}$rA}$d$7$F(B
+ $B0l9T$K<}$a$k$3$H$,$G$-$J$+$C$?!W$H$$$&%P%0$N=$@5!#(B
+\end{description}
+$B>\:Y$O(BGitHub issue 76$B5Z$S(B\TeX\ forum 2506$B$r;2>H$7$F$/$@$5$$!#(B
+
+
+\section{\LaTeXe\ \texttt{<2018-12-01>}$BBP1~(B}
+\LaTeXe\ \texttt{<2018-12-01>}$B$G$O!"(B
+$B!V30It%U%!%$%k$X$N=q$-=P$7$HFI$_9~$_!W$,Mm$`=hM}!JL\<!$J$I!K$G(B
+\begin{quote}
+$B=q$-=P$5$l$?%U%!%$%k$N9TKv$K6uGrJ8;z$,$"$j!"(B
+$B$=$l$KM3Mh$9$kIT<+A3$J6uGr$,=PNO$5$l$k>l9g$,$"$C$?(B
+\end{quote}
+$B$H$$$&=>Mh$N5sF0$,=$@5$5$l!"IT<+A3$J6uGr$,@8$8$J$/$J$j$^$9!#(B
+$B$3$N$?$a!"(B(u)\pLaTeX{}$B$NI8=`%/%i%9$b$3$N=$@5$KDI?o$7$^$7$?!#(B
+$B>\:Y$O(BGitHub issue 79$B$r;2>H$7$F$/$@$5$$!#(B
+
+
+\section{$B3+H/HG$N%F%9%H$N$*4j$$(B}
+$B:#8e(Bp\LaTeX{}$B$KF3F~$9$k$+$b$7$l$J$$=$@5%Q%C%A$d;EMMJQ99$N%F%9%H$K(B
+$B$46(NO$/$@$5$$!#(B\TeX{}$B%U%!%$%k$NKAF,!J(B|\documentclass|$B$h$jA0!K$G(B
+\begin{verbatim}
+\RequirePackage{exppl2e}
+\end{verbatim}
+$B$H=q$/$3$H$G!"8=:_$N3+H/HG$r%F%9%H$9$k$3$H$,$G$-$^$9!#(B
+$B8=:_$O!";YCl%3%^%s%I$GMQ$$$i$l$k(B|\strut|$B$N5sF0$K4X$9$k%Q%C%A$,(B
+$BF~$C$F$$$^$9!#(B
+
+$B>\:Y$O(B\file{exppl2e.pdf}$B$r;2>H$7$F$/$@$5$$!#(B
+\TeX\ Forum$B$d(BGitHub$B$N(BIssue$B$G$N%P%0Js9p$d$40U8+$r4?7^$7$^$9!#(B
+\begin{itemize}
+\item \texttt{https://github.com/texjporg/platex}
+\item \texttt{https://github.com/texjporg/uplatex}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/platex/plvers.dtx b/language/japanese/platex/plvers.dtx
new file mode 100644
index 0000000000..9944cbfc1c
--- /dev/null
+++ b/language/japanese/platex/plvers.dtx
@@ -0,0 +1,462 @@
+% \iffalse meta-comment
+%% File: plvers.dtx
+%
+% Copyright 1995-2006 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016-2019 Japanese TeX Development Community
+%
+% This file is part of the pLaTeX2e system (community edition).
+% -------------------------------------------------------------
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ifx\JAPANESEtrue\undefined
+ \expandafter\newif\csname ifJAPANESE\endcsname
+ \JAPANESEtrue
+\fi
+\def\eTeX{$\varepsilon$-\TeX}
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+%</driver>
+% \fi
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.0}{1995/05/16}{p\LaTeXe\ $BMQ$K(B\file{ltvers.dtx}$B$r=$@5(B}
+% \changes{v1.0a}{1995/08/30}{\LaTeX\ \texttt{!<1995/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0b}{1996/01/31}{\LaTeX\ \texttt{!<1995/12/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0c}{1997/01/11}{\LaTeX\ \texttt{!<1996/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0d}{1997/01/23}{\LaTeX\ \texttt{!<1996/12/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0e}{1997/07/02}{\LaTeX\ \texttt{!<1997/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0f}{1998/02/17}{\LaTeX\ \texttt{!<1997/12/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0g}{1998/09/01}{\LaTeX\ \texttt{!<1998/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0h}{1999/04/05}{\LaTeX\ \texttt{!<1998/12/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0i}{1999/08/09}{\LaTeX\ \texttt{!<1999/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0j}{2000/02/29}{\LaTeX\ \texttt{!<1999/12/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0k}{2000/11/03}{\LaTeX\ \texttt{!<2000/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0l}{2001/09/04}{\LaTeX\ \texttt{!<2001/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0m}{2004/08/10}{\LaTeX\ \texttt{!<2003/12/01!>}$BHGBP1~3NG'(B}
+% \changes{v1.0n}{2005/01/04}{plfonts.dtx$B%P%0=$@5(B}
+% \changes{v1.0o}{2006/01/04}{plfonts.dtx$B%P%0=$@5(B}
+% \changes{v1.0p}{2006/06/27}{plfonts.dtx \LaTeX\ \texttt{!<2005/12/01!>}$BBP1~(B}
+% \changes{v1.0q}{2006/11/10}{plfonts.dtx$B%P%0=$@5(B}
+% \changes{v1.0r}{2016/01/26}{plcore.dtx p\TeX\ (r28720)$BBP1~(B}
+% \changes{v1.0s}{2016/02/01}{\LaTeX\ \texttt{!<2015/01/01!>}$B$N(Blatexrelease$B$K(B
+% $BBP1~$9$k$?$a$N%3!<%I$rF3F~(B}
+% \changes{v1.0t}{2016/02/03}{\cs{plIncludeInRelease}$B$H(B
+% \cs{plEndIncludeInRelease}$B$r?7@_!#(B}
+% \changes{v1.0u}{2016/04/17}{\LaTeX\ \texttt{!<2016/03/31!>}$BHGBP1~3NG'(B}
+% \changes{v1.0v}{2016/05/07}{$B%Q%C%A%U%!%$%k$r%m!<%I$9$k$N$r$d$a$?!#(B}
+% \changes{v1.0v}{2016/05/07}{$B5/F0;~$NJ8;zNs$r:G?7$N(B\LaTeX{}$B$K9g$o$;$?!#(B}
+% \changes{v1.0w}{2016/05/12}{$B5/F0;~$NJ8;zNs$KF~$l$k(B\LaTeX{}$B$N%P!<%8%g%s$r(B
+% $B85$N(B\LaTeX{}$B$N%P%J!<$+$i0z$-7Q$0$h$&$K2~NI(B}
+% \changes{v1.0w}{2016/05/12}{$B5/F0;~$NJ8;zNs$KF~$l$k(BBabel$B$N%P!<%8%g%s$r(B
+% $B85$N(B\LaTeX{}$B$N%P%J!<$+$i<hF@$9$k%3!<%I$r(B\file{platex.ini}$B$+$i<h$jF~$l$?(B}
+% \changes{v1.0x}{2016/06/19}{$B%Q%C%A%l%Y%k$r(B\file{plvers.dtx}$B$G@_Dj(B}
+% \changes{v1.0y}{2016/06/27}{\file{platex.cfg}$B$NFI$_9~$_$rDI2C(B}
+% \changes{v1.0z}{2016/08/26}{\file{platex.cfg}$B$NFI$_9~$_$r(B
+% \file{plcore.ltx}$B$+$i(B\file{platex.ltx}$B$X0\F0(B}
+% \changes{v1.1}{2016/09/14}{$B5/F0;~$N%P%J!<$r<hF@$9$k%3!<%I$r2~NI(B}
+% \changes{v1.1a}{2017/02/20}{\LaTeX\ \texttt{!<2017/01/01!>}$BHGBP1~3NG'(B}
+% \changes{v1.1b}{2017/03/19}{\cs{l@nohyphenation}$B$NDj5A$rJ]>Z(B
+% (sync with ltfinal 2017/03/09 v2.0t)}
+% \changes{v1.1b}{2017/03/19}{\cs{document@default@language}$B$NDj5A$rJ]>Z(B
+% (sync with ltfinal 2017/03/09 v2.0t)}
+% \changes{v1.1c}{2017/04/23}{\LaTeX\ \texttt{!<2017-04-15!>}$BHGBP1~3NG'(B}
+% \changes{v1.1d}{2017/09/24}{$B%Q%C%A%l%Y%k$,Ii$N?t$N>l9g$r(Bpre-release$B07$$$X(B}
+% \changes{v1.1e}{2017/11/09}{\file{latexrelease}$B$H(B
+% \cs{platexrelease}$B$N%(%_%e%l!<%HFbIt=hM}$rJ,N%(B}
+% \changes{v1.1f}{2017/11/11}{\LaTeX{}$B$N%P%J!<$rJ]B8$9$k%3!<%I$r(B
+% \file{platex.ltx}$B$+$i(B\file{plcore.ltx}$B$X0\F0(B}
+% \changes{v1.1g}{2017/12/04}{\pLaTeX{}$B$N%P%J!<$NDj5A;~$K(B
+% \cs{pfmtname}, \cs{pfmtversion}, \cs{ppatch@level}$B$rE83+$7$J$$$h$&$K(B}
+% \changes{v1.1h}{2018/01/10}{Modify \cs{plIncludeInRelease} code
+% to check matching \cs{plEndIncluderelease}
+% (sync with ltvers 2018/01/08 v1.1a)}
+% \changes{v1.1i}{2018/03/31}{\LaTeXe\ 2017-04-15$B0J9_I,?\(B}
+% \changes{v1.1j}{2018/04/07}{\LaTeX\ \texttt{!<2018-04-01!>}$BHGBP1~3NG'(B}
+% \changes{v1.1k}{2018/04/08}{$B%P%J!<D4@a$N%3!<%I$r:G8e(B(plfinal)$B$G$O$J$/(B
+% $B:G=i(B(plcore)$B$KAa$a$?(B}
+% \changes{v1.1l}{2018/04/09}{$B%P%J!<$NJ]B8$7$+$?$r2~NI(B}
+% \changes{v1.1l}{2018/04/09}{$B%P%J!<$N:F9=C[$N$7$+$?$r2~NI(B}
+% \changes{v1.1m}{2018/09/24}{$B%P%J!<$N:F9=C[$r4JN,2=(B}
+% \changes{v1.1n}{2018/10/31}{\LaTeXe{}$B$H(Bp\LaTeXe{}$B$N99?7%?%$%_%s%0$:$lBP:v$r(B
+% \file{plvers.dtx} (plfinal) $B$+$i(B\file{plcore.dtx}$B$X0\F0(B}
+% \changes{v1.1o}{2018/12/01}{\LaTeX\ \texttt{!<2018-12-01!>}$BHGBP1~3NG'(B}
+% \fi
+%
+% \iffalse
+%<*driver>
+% \fi
+\ProvidesFile{plvers.dtx}[2018/12/01 v1.1o pLaTeX Kernel (Version Info)]
+% \iffalse
+\documentclass{jltxdoc}
+\GetFileInfo{plvers.dtx}
+\author{Ken Nakano \& Hideaki Togashi}
+\title{\filename}
+\date{$B:n@.F|!'(B\filedate}
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{p\LaTeXe{}$B$N%P!<%8%g%s$N@_Dj(B}
+% $B$^$:!"$3$N%G%#%9%H%j%S%e!<%7%g%s$G$N(Bp\LaTeXe{}$B$NF|IU$H%P!<%8%g%sHV9f(B
+% $B$rDj5A$7$^$9!#(B
+%
+% \changes{v1.0}{1995/05/16}{p\LaTeXe\ $BMQ$K(B\file{ltvers.dtx}$B$r=$@5(B}
+% \changes{v1.0a}{1995/08/30}{\LaTeX\ \texttt{!<1995/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0b}{1996/01/31}{\LaTeX\ \texttt{!<1995/12/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0c}{1997/01/11}{\LaTeX\ \texttt{!<1996/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0d}{1997/01/23}{\LaTeX\ \texttt{!<1996/12/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0e}{1997/07/02}{\LaTeX\ \texttt{!<1997/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0f}{1998/02/17}{\LaTeX\ \texttt{!<1997/12/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0g}{1998/09/01}{\LaTeX\ \texttt{!<1998/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0h}{1999/04/05}{\LaTeX\ \texttt{!<1998/12/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0i}{1999/08/09}{\LaTeX\ \texttt{!<1999/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0j}{2000/02/29}{\LaTeX\ \texttt{!<1999/12/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0k}{2000/11/03}{\LaTeX\ \texttt{!<2000/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0l}{2001/09/04}{\LaTeX\ \texttt{!<2001/06/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0m}{2004/08/10}{\LaTeX\ \texttt{!<2003/12/01!>}$BHGBP1~3NG'(B}
+% \changes{v1.0s}{2016/02/01}{\LaTeX\ \texttt{!<2015/01/01!>}$BHGMQ$K=$@5(B}
+% \changes{v1.0u}{2016/04/17}{\LaTeX\ \texttt{!<2016/03/31!>}$BHGBP1~3NG'(B}
+% \changes{v1.1a}{2017/02/20}{\LaTeX\ \texttt{!<2017/01/01!>}$BHGBP1~3NG'(B}
+% \changes{v1.1c}{2017/04/23}{\LaTeX\ \texttt{!<2017-04-15!>}$BHGBP1~3NG'(B}
+% \changes{v1.1j}{2018/04/07}{\LaTeX\ \texttt{!<2018-04-01!>}$BHGBP1~3NG'(B}
+% \changes{v1.1o}{2018/12/01}{\LaTeX\ \texttt{!<2018-12-01!>}$BHGBP1~3NG'(B}
+%
+% $B$3$N%P!<%8%g%s$N(Bp\LaTeXe{}$B$O!"<!$N%P!<%8%g%s$N(B\LaTeX{}\footnote{%
+% \LaTeX\ authors: Johannes Braams, David Carlisle, Alan Jeffrey,
+% Leslie Lamport, Frank Mittelbach, Chris Rowley, Rainer Sch\"opf}$B$r(B
+% $B$b$H$K$7$F$$$^$9!#(B
+% \begin{macrocode}
+%<*2ekernel>
+%\def\fmtname{LaTeX2e}
+%\edef\fmtversion
+%</2ekernel>
+%<latexrelease>\edef\latexreleaseversion
+%<platexrelease>\edef\p@known@latexreleaseversion
+%<*2ekernel|latexrelease|platexrelease>
+ {2018-12-01}
+%</2ekernel|latexrelease|platexrelease>
+% \end{macrocode}
+%
+% $B$^$:!"<!$N%P!<%8%g%s$N(B\LaTeX{}$B$,MxMQ2DG=$J$3$H$r3NG'$7$^$9!#(B
+% \LaTeXe\ 2017-04-15$B$G!"%P!<%8%g%sHV9f!JF|IU!K$N%U%)!<%^%C%H$,(B
+% YYYY/MM/DD$B7A<0$+$i(BYYYY-MM-DD$B$KJQ99$5$l$F$$$^$9!#(B
+% ^^A \LaTeXe\ 2017/01/01$B0J9_$O(Be-\TeX{}$BI,?\$K$J$C$F$$$^$9!#(B
+% \changes{v1.1i}{2018/03/31}{\LaTeXe\ 2017-04-15$B0J9_I,?\(B}
+% \begin{macrocode}
+%<*plcore>
+\ifx\fmtversion\@undefined
+ \errhelp{Please reinstall LaTeX.}%
+ \errmessage{This cannot happen!^^JYour file `latex.ltx'
+ might be broken}\@@end
+\else
+ \ifnum\expandafter\@parse@version\fmtversion//00\@nil<20170415
+ \errhelp{Please update your TeX installation; if not available,
+ obtain it^^Jmanually from CTAN
+ (https://ctan.org/pkg/latex-base) or from^^JGitHub
+ (https://github.com/latex3/latex2e).}%
+ \errmessage{This version of pLaTeX2e requires LaTeX2e 2017-04-15
+ or newer!^^JObtain a newer version of `latex',
+ otherwise pLaTeX2e setup will^^Jnever succeed}\@@end
+ \fi
+\fi
+%</plcore>
+% \end{macrocode}
+%
+% \begin{macro}{\pfmtname}
+% \begin{macro}{\pfmtversion}
+% \begin{macro}{\ppatch@level}
+% p\LaTeXe{}$B$N%U%)!<%^%C%H%U%!%$%kL>$H%P!<%8%g%s$G$9!#(B
+% \changes{v1.0x}{2016/06/19}{$B%Q%C%A%l%Y%k$r(B\file{plvers.dtx}$B$G@_Dj(B}
+% \begin{macrocode}
+%<*plcore>
+\def\pfmtname{pLaTeX2e}
+\def\pfmtversion
+%</plcore>
+%<platexrelease>\edef\platexreleaseversion
+%<*plcore|platexrelease>
+ {2019-04-06}
+%</plcore|platexrelease>
+%<*plcore>
+\def\ppatch@level{0}
+%</plcore>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{\LaTeXe{}$B$N%P!<%8%g%s$N<hF@(B}
+% $B$3$N%U%!%$%k$ND>A0$G(B\LaTeXe{}$B$N(B\file{latex.ltx}$B$,FI$_9~$^$l$F$$$k$O$:(B
+% $B$J$N$G!"$=$N5/F0;~$N%P%J!<$rJ]B8$7$^$9!#(B
+%
+% \LaTeXe\ 2018-04-01 patch level 1$B$^$G$O!"(B|\everyjob|$B$,(B
+%\begin{verbatim}
+% \typeout{LaTeX2e version}\typeout{Babel version}
+%\end{verbatim}
+% $B$@$1$G$7$?$,!"(B\LaTeXe\ 2018-04-01 patch level 2$B$G?7$?$J%H!<%/%sNs$,(B
+% $BDI2C$5$l$^$7$?!#:#8e$b(B\LaTeXe{}$BB&$G(B|\everyjob|$B$K<B9T$rCY$i$;$k(B
+% $B%3!<%I$,DI2C$5$l$k2DG=@-$,$"$j$^$9$N$G!"$=$N%3!<%I$rCj=P$7$J$1$l$P(B
+% $B$J$j$^$;$s!#$=$3$G!":G=i$H:G8e$K6h@Z$j%H!<%/%s!J$=$l$>$l(B|\platexNILa|$B$H(B
+% |\platexNILb|$B!K$rIU$1$F$*$-$^$9!#(B
+% \changes{v1.1f}{2017/11/11}{\LaTeX{}$B$N%P%J!<$rJ]B8$9$k%3!<%I$r(B
+% \file{platex.ltx}$B$+$i(B\file{plcore.ltx}$B$X0\F0(B}
+% \changes{v1.1l}{2018/04/09}{$B%P%J!<$NJ]B8$7$+$?$r2~NI(B}
+% \begin{macrocode}
+%<*plcore>
+\edef\platexBANNER{\noexpand\platexNILa
+ \the\everyjob % LaTeX banner and delayed codes
+ \noexpand\platexNILb}
+%</plcore>
+% \end{macrocode}
+%
+% \subsection{$B%Q%C%A%U%!%$%k$N%m!<%I(B}
+%
+% $B%3%_%e%K%F%#HG(B\pLaTeXe{}$B$G$O%Q%C%A%U%!%$%k$r;HMQ$7$J$$$N$G!"(B
+% $B%3%a%s%H%"%&%H$7$^$7$?!#(B
+% \changes{v1.0v}{2016/05/07}{$B%Q%C%A%U%!%$%k$r%m!<%I$9$k$N$r$d$a$?!#(B}
+%
+% \iffalse
+% $B<!$NItJ,$O!"(Bp\LaTeXe{}$B$N%Q%C%A%U%!%$%k$r%m!<%I$9$k$?$a$N%3!<%I$G$9!#(B
+% $B%P%0$r=$@5$9$k$?$a$N%Q%C%A$rG[I[$9$k$+$b$7$l$^$;$s!#(B
+% \begin{macrocode}
+%<*plfinal>
+%\IfFileExists{plpatch.ltx}
+% {\typeout{***********************************^^J%
+% * Applying patch file plpatch.ltx *^^J%
+% ***********************************}
+% \def\pfmtversion@topatch{unknown}
+% \input{plpatch.ltx}
+% \ifx\pfmtversion\pfmtversion@topatch
+% \ifx\ppatch@level\@undefined
+% \typeout{^^J^^J^^J%
+% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
+% !! Patch file `plpatch.ltx' (for version <\pfmtversion@topatch>)^^J%
+% !! is not suitable for version <\pfmtversion> of pLaTeX.^^J^^J%
+% !! Please check if iniptex found an old patch file:^^J%
+% !! --- if so, rename it or delete it, and redo the^^J%
+% !! iniptex run.^^J%
+% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J}%
+% \batchmode \@@end
+% \fi
+% \else
+% \typeout{^^J^^J^^J%
+% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
+% !! Patch file `plpatch.ltx' (for version <\pfmtversion@topatch>)^^J%
+% !! is not suitable for version <\pfmtversion> of pLaTeX.^^J%
+% !!^^J%
+% !! Please check if iniptex found an old patch file:^^J%
+% !! --- if so, rename it or delete it, and redo the^^J%
+% !! iniptex run.^^J%
+% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J}%
+% \batchmode \@@end
+% \fi
+% \let\pfmtversion@topatch\relax
+% }{}
+%</plfinal>
+% \end{macrocode}
+% \fi
+%
+% \subsection{$B5/F0;~$K<B9T$9$k%3!<%I(B}
+%
+% \begin{macro}{\everyjob}
+% p\LaTeXe{}$B$,5/F0$5$l$?$H$-$K<B9T$5$l$k%3!<%I$G$9!#(B
+% \LaTeXe{}$B$N<B9T%3!<%I$r85$K!"(B\pLaTeXe{}$BMQ$ND4@0$r2C$($^$9!#(B
+% \changes{v1.1}{2016/09/14}{$B5/F0;~$N%P%J!<$r<hF@$9$k%3!<%I$r2~NI(B}
+% \changes{v1.1k}{2018/04/08}{$B%P%J!<D4@a$N%3!<%I$r:G8e(B(plfinal)$B$G$O$J$/(B
+% $B:G=i(B(plcore)$B$KAa$a$?(B}
+% \changes{v1.1l}{2018/04/09}{$B%P%J!<$N:F9=C[$N$7$+$?$r2~NI(B}
+% \changes{v1.1m}{2018/09/24}{$B%P%J!<$N:F9=C[$r4JN,2=(B}
+%
+% $B$^$:!"(B\LaTeXe{}$B$N%P!<%8%g%sI=<(!J(B|\typeout{LaTeX2e version}|$B!K$h$j(B
+% $BA0$K<B9T$5$l$k%3!<%I$,$"$l$P!"$=$l$rCj=P$7$F(B|\everyjob|$B$KF~$l$^$9!#(B
+% \LaTeXe\ 2018-04-01 patch level 2$B$N;~E@$G$O6u$G$9!#(B
+% \begin{macrocode}
+%<*plcore>
+\begingroup
+ \def\platexNILa#1\typeout#2#3\platexNILb{#1}
+ \toks0=\expandafter\expandafter\expandafter{\platexBANNER}
+ \global\everyjob\expandafter{\the\toks0}%
+\endgroup
+% \end{macrocode}
+%
+% $B<!$K!"(B\LaTeXe{}$B$N%P!<%8%g%s$rI=<($9$k%3!<%I$rCj=P$7!"(B
+% \pLaTeXe{}$B$N%P!<%8%g%s$H$^$H$a$FI=<($9$k$h$&$K@07A$7$^$9!#(B
+% \changes{v1.0v}{2016/05/07}{$B5/F0;~$NJ8;zNs$r:G?7$N(B\LaTeX{}$B$K9g$o$;$?!#(B}
+% \changes{v1.0w}{2016/05/12}{$B5/F0;~$NJ8;zNs$KF~$l$k(B\LaTeX{}$B$N%P!<%8%g%s$r(B
+% $B85$N(B\LaTeX{}$B$N%P%J!<$+$i0z$-7Q$0$h$&$K2~NI(B}
+% \changes{v1.1d}{2017/09/24}{$B%Q%C%A%l%Y%k$,Ii$N?t$N>l9g$r(Bpre-release$B07$$$X(B}
+% \changes{v1.1g}{2017/12/04}{\pLaTeX{}$B$N%P%J!<$NDj5A;~$K(B
+% \cs{pfmtname}, \cs{pfmtversion}, \cs{ppatch@level}$B$rE83+$7$J$$$h$&$K(B}
+% \begin{macrocode}
+%\ifx\ppatch@level\@undefined % fallback if undefined in pLaTeX
+% \def\ppatch@level{0}\fi
+\begingroup
+ \def\platexNILa#1\typeout#2#3\platexNILb{#2}
+ \toks0=\expandafter\expandafter\expandafter{\platexBANNER}
+ \ifnum\ppatch@level=0
+ \toks2={\pfmtname\space<\pfmtversion>\space}%
+ \else\ifnum\ppatch@level>0
+ \toks2={\pfmtname\space<\pfmtversion>+\ppatch@level\space}%
+ \else
+ \toks2={\pfmtname\space<\pfmtversion>-pre\ppatch@level\space}%
+ \fi\fi
+ \edef\platexBANNER{\the\everyjob
+ \noexpand\typeout{\the\toks2 (based on \the\toks0)}}
+ \global\everyjob\expandafter{\platexBANNER}%
+\endgroup
+% \end{macrocode}
+%
+% \LaTeXe{}$B$N%P!<%8%g%sI=<($N8e$K;D$C$F$$$k%3!<%I$r!"(B
+% $B$=$N$^$^(B|\everyjob|$B$KDI2C$7$^$9!#(B
+% ^^A Babel v3.20$B$^$G$O$3$NCf$K(B|\typeout{Babel version}|$B$b4^$^$l$F(B
+% ^^A $B$$$^$7$?$,!"(BBabel v3.21$B$+$i$O$3$N%P%J!<I=<($OL5$/$J$C$?$h$&$G$9!#(B
+% \changes{v1.0w}{2016/05/12}{$B5/F0;~$NJ8;zNs$KF~$l$k(BBabel$B$N%P!<%8%g%s$r(B
+% $B85$N(B\LaTeX{}$B$N%P%J!<$+$i<hF@$9$k%3!<%I$r(B\file{platex.ini}$B$+$i<h$jF~$l$?(B}
+% \begin{macrocode}
+\begingroup
+ \def\platexNILa#1\typeout#2#3\platexNILb{#3}
+ \toks0=\expandafter\expandafter\expandafter{\platexBANNER}
+ \edef\platexBANNER{\the\everyjob \the\toks0}
+ \global\everyjob\expandafter{\platexBANNER}%
+\endgroup
+\let\platexBANNER=\@undefined
+%</plcore>
+% \end{macrocode}
+% \end{macro}
+%
+% ^^A $B5/F0;~$K(B\file{platex.cfg}$B$,$"$k>l9g!"$=$l$rFI$_9~$`$h$&$K$9$k(B
+% ^^A $B%3!<%I$O!"(B\file{plcore.ltx}$B$+$i(B\file{platex.ltx}$B$X0\F0$7$^$7$?!#(B
+% \changes{v1.0y}{2016/06/27}{\file{platex.cfg}$B$NFI$_9~$_$rDI2C(B}
+% \changes{v1.0z}{2016/08/26}{\file{platex.cfg}$B$NFI$_9~$_$r(B
+% \file{plcore.ltx}$B$+$i(B\file{platex.ltx}$B$X0\F0(B}
+%
+% ^^A \LaTeXe{}$B$H(Bp\LaTeXe{}$B$N99?7%?%$%_%s%0$:$lBP:v(B
+% ^^A $B!J%O%$%U%M!<%7%g%s4XO"%Q%i%a!<%?$NDj5A!K$O!"(B
+% ^^A \file{plvers.dtx}$B$+$i(B\file{plcore.dtx}$B$X0\F0$7$^$7$?!#(B
+% \changes{v1.1b}{2017/03/19}{\cs{l@nohyphenation}$B$NDj5A$rJ]>Z(B
+% (sync with ltfinal 2017/03/09 v2.0t)}
+% \changes{v1.1b}{2017/03/19}{\cs{document@default@language}$B$NDj5A$rJ]>Z(B
+% (sync with ltfinal 2017/03/09 v2.0t)}
+% \changes{v1.1n}{2018/10/31}{\LaTeXe{}$B$H(Bp\LaTeXe{}$B$N99?7%?%$%_%s%0$:$lBP:v$r(B
+% \file{plvers.dtx} (plfinal) $B$+$i(B\file{plcore.dtx}$B$X0\F0(B}
+%
+%
+% \section{latexrelease$B%Q%C%1!<%8$X$NBP1~(B}
+%
+% $B:G8e$K!"(Blatexrelease$B%Q%C%1!<%8$X$NBP1~$G$9!#(B
+% \begin{macro}{\plIncludeInRelease}
+% \changes{v1.0t}{2016/02/03}{\cs{plIncludeInRelease}$B$H(B
+% \cs{plEndIncludeInRelease}$B$r?7@_!#(B}
+% \changes{v1.1e}{2017/11/09}{\file{latexrelease}$B$H(B
+% \cs{platexrelease}$B$N%(%_%e%l!<%HFbIt=hM}$rJ,N%(B}
+% \changes{v1.1h}{2018/01/10}{Modify \cs{plIncludeInRelease} code
+% to check matching \cs{plEndIncluderelease}
+% (sync with ltvers 2018/01/08 v1.1a)}
+%
+% \iffalse
+% $BHwK:O?!'(B\LaTeX{}$B$G$O(B\cs{if@includeinrelease}$B$NDj5A$r(B
+% \file{ltvers.dtx}$B$G$O$J$/(B\file{ltdefns.dtx}$B$KCY$i$;$F$"$k!#(B
+% $B$7$+$7!"$3$l$O(B\cs{newif}$B$,$=$N;~E@$GDj5A$5$l$F$$$J$$$+$i$K$9$.$:!"(B
+% \pLaTeX{}$B$G$OCY$i$;$kI,MW$,$J$$!#(B
+% \fi
+%
+% \begin{macrocode}
+%<*plcore|platexrelease>
+\newif\if@plincludeinrelease
+\@plincludeinreleasefalse
+\def\plIncludeInRelease#1{%
+ \if@plincludeinrelease
+ \PackageError{platexrelease}
+ {mis-matched \string\plIncludeInRelease}{}%
+ \@plincludeinreleasefalse
+ \fi
+ \kernel@ifnextchar[%
+ {\@plIncludeInRelease{#1}}
+ {\@plIncludeInRelease{#1}[#1]}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@plIncludeInRelease#1[#2]{\@plIncludeInRele@se{#2}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@plIncludeInRele@se#1#2#3{%
+ \toks@{[#1] #3}%
+ \expandafter\ifx\csname\string#2+\@currname+plIIR\endcsname\relax
+ \ifnum\expandafter\@parse@version#1//00\@nil
+ >\expandafter\@parse@version\pfmtversion//00\@nil
+ \GenericInfo{}{Skipping: \the\toks@}%
+ \expandafter\expandafter\expandafter\@gobble@plIncludeInRelease
+ \else
+ \GenericInfo{}{Applying: \the\toks@}%
+ \@plincludeinreleasetrue
+ \expandafter\let\csname\string#2+\@currname+plIIR\endcsname\@empty
+ \fi
+ \else
+ \GenericInfo{}{Already applied: \the\toks@}%
+ \expandafter\@gobble@plIncludeInRelease
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\plEndIncludeInRelease{%
+ \if@plincludeinrelease
+ \@plincludeinreleasefalse
+ \else
+ \PackageError{platexrelease}
+ {mis-matched \string\plEndIncludeInRelease}{}%
+ \fi}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\long\def\@gobble@plIncludeInRelease#1\plEndIncludeInRelease{%
+ \@plincludeinreleasefalse
+ \@check@plIncludeInRelease#1\plIncludeInRelease
+ \@check@plIncludeInRelease\@end@check@plIncludeInRelease}
+% \end{macrocode}
+% \begin{macrocode}
+\long\def\@check@plIncludeInRelease#1\plIncludeInRelease
+ #2#3\@end@check@plIncludeInRelease{%
+ \ifx\@check@plIncludeInRelease#2\else
+ \PackageError{platexrelease}
+ {skipped \string\plIncludeInRelease}{}%
+ \fi}
+%</plcore|platexrelease>
+% \end{macrocode}
+% \end{macro}
+%
+% \LaTeXe{}$B$,Ds6!$9$k(Blatexrelease$B%Q%C%1!<%8$,FI$_9~$^$l$F$$$F!"(B
+% $B$+$D(Bp\LaTeXe{}$B$,Ds6!$9$k(Bplatexrelease$B%Q%C%1!<%8$,FI$_9~$^$l$F$$$J$$(B
+% $B>l9g$O!"7Y9p$r=P$7$^$9!#(B
+% \changes{v1.0s}{2016/02/01}{latexrelease$BMxMQ;~$K7Y9p$r=P$9$h$&$K$7$?(B}
+% \begin{macrocode}
+%<*plfinal>
+\AtBeginDocument{%
+ \@ifpackageloaded{latexrelease}{%
+ \@ifpackageloaded{platexrelease}{}{%
+ \@latex@warning@no@line{%
+ Package latexrelease is loaded.\MessageBreak
+ Some patches in pLaTeX2e core may be overwritten.\MessageBreak
+ Consider using platexrelease.\MessageBreak
+ See platex.pdf for detail}%
+ }%
+ }{}%
+}
+%</plfinal>
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/plautopatch/LICENSE b/language/japanese/plautopatch/LICENSE
new file mode 100644
index 0000000000..16f906567a
--- /dev/null
+++ b/language/japanese/plautopatch/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2018-2019 Hironobu Yamashita
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/plautopatch/Makefile b/language/japanese/plautopatch/Makefile
new file mode 100644
index 0000000000..5f2ef4e5d6
--- /dev/null
+++ b/language/japanese/plautopatch/Makefile
@@ -0,0 +1,26 @@
+KANJI = -kanji=utf8
+FONTMAP = -f ipaex.map -f ptex-ipaex.map
+TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
+
+all: plautopatch.pdf plautopatch-ja.pdf
+
+.SUFFIXES: .tex .dvi .pdf
+.tex.dvi:
+ platex $(KANJI) $<
+ platex $(KANJI) $<
+ rm *.aux *.log
+.dvi.pdf:
+ dvipdfmx $(FONTMAP) $<
+
+.PHONY: install clean
+install:
+ mkdir -p ${TEXMF}/doc/platex/plautopatch
+ cp ./Makefile ${TEXMF}/doc/platex/plautopatch/
+ cp ./LICENSE ${TEXMF}/doc/platex/plautopatch/
+ cp ./README.md ${TEXMF}/doc/platex/plautopatch/
+ cp ./*.pdf ${TEXMF}/doc/platex/plautopatch/
+ cp ./*.tex ${TEXMF}/doc/platex/plautopatch/
+ mkdir -p ${TEXMF}/tex/platex/plautopatch
+ cp ./*.sty ${TEXMF}/tex/platex/plautopatch/
+clean:
+ rm -f *.dvi *.pdf
diff --git a/language/japanese/plautopatch/README.md b/language/japanese/plautopatch/README.md
new file mode 100644
index 0000000000..bfec3d0daf
--- /dev/null
+++ b/language/japanese/plautopatch/README.md
@@ -0,0 +1,95 @@
+# plautopatch
+
+Japanese pLaTeX/upLaTeX formats and packages often conflict
+with other LaTeX packages which are unaware of pLaTeX/upLaTeX.
+In the worst case, such packages throw a fatal error or
+end up with a wrong output.
+
+The goal of this package "plautopatch" is that
+there should be no need to worry about such incompatibilities,
+because specific patches are loaded automatically
+whenever necessary.
+This helps not only to simplify source files, but also
+to make the appearance of working pLaTeX/upLaTeX sources
+similar to those of ordinary LaTeX ones.
+
+The following patches are currently registered:
+
+- doc (latex) -> pldocverb (maintained here!)
+- tracefnt (latex) -> ptrace/uptrace (platex/uplatex)
+- fltrace (latex) -> pfltrace (platex)
+- array (latex-tools) -> plarray (platex-tools)
+- array (latex-tools) + plext (platex) -> plextarray (platex-tools)
+- delarray (latex-tools) + plext (platex) -> plextdelarray (platex-tools)
+- colortbl + plext (platex) -> plextcolortbl (maintained here!)
+- arydshln -> plarydshln (maintained here!)
+- arydshln + plext (platex) -> plextarydshln (maintained here!)
+- siunitx -> plsiunitx (maintained here!)
+- everysel (ms) -> pxeverysel (platex-tools)
+- everyshi (ms) -> pxeveryshi (platex-tools)
+- atbegshi (oberdiek) -> pxatbegshi (platex-tools)
+- ftnright (latex-tools) -> pxftnright (platex-tools)
+- multicol (latex-tools) -> pxmulticol (platex-tools)
+- pdfpages -> pxpdfpages (maintained here!)
+- pgfrcs (pgf) -> pxpgfrcs (maintained here!)
+- pgfcore (pgf) -> pxpgfmark (by Takayuki YATO)
+
+## Requirements
+
+This package depends on "filehook" package,
+written by Martin Scharrer.
+
+## Miscellaneous
+
+This bundle may distribute some tiny patches
+together with the main package. Short information:
+
+- pldocverb.sty:
+ Patch for doc.sty (latex) to improve
+ compatibility with `\verb` redefinition in pLaTeX.
+ Can be used on pLaTeX/upLaTeX.
+- plextcolortbl.sty:
+ Patch for colortbl.sty (by David Carlisle) to improve
+ compatibility with plext.sty in pLaTeX.
+ Can be used on pLaTeX/upLaTeX.
+- plarydshln.sty:
+ Patch for arydshln.sty (by Hiroshi Nakashima) to improve
+ compatibility with pLaTeX/upLaTeX kernels.
+ Can be used on pLaTeX/upLaTeX.
+- plextarydshln.sty:
+ Patch for arydshln.sty (by Hiroshi Nakashima) to improve
+ compatibility with plext.sty in pLaTeX.
+ Can be used on pLaTeX/upLaTeX.
+- plsiunitx.sty:
+ Patch for siunitx.sty (by Joseph Wright) to fix
+ conflict with plarray.sty (platex-tools).
+ Can be used on pLaTeX/upLaTeX.
+- pxpdfpages.sty:
+ Patch for pdfpages.sty (by Andreas Matthias) to support
+ Japanese-style crop marks (called 'tombow' in Japanese).
+ Can be used on pLaTeX/upLaTeX.
+- pxpgfrcs.sty:
+ Patch for pgfrcs.sty (part of PGF) to support
+ Japanese classes for vertical writing.
+ Can be used on pLaTeX/upLaTeX.
+
+## Installation
+
+- *.sty -> $TEXMF/tex/platex/plautopatch
+- *.tex, *.pdf -> $TEXMF/doc/platex/plautopatch
+
+## Repository
+
+The bundle is maintained on GitHub:
+ https://github.com/aminophen/plautopatch
+
+## License
+
+The bundle may be distributed and/or modified under the terms of
+the 3-clause BSD license (see [LICENSE](./LICENSE)).
+
+## Release Date
+
+2019-06-06
+
+Hironobu Yamashita
diff --git a/language/japanese/plautopatch/plarydshln.sty b/language/japanese/plautopatch/plarydshln.sty
new file mode 100644
index 0000000000..b7e2c3a144
--- /dev/null
+++ b/language/japanese/plautopatch/plarydshln.sty
@@ -0,0 +1,35 @@
+%
+% plarydshln.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the plautopatch bundle.
+% https://github.com/aminophen/plautopatch
+%
+% This package is expected to be compatible with
+% * arydshln.sty
+% (2004/08/31 v1.71 -- 2019/02/21 v1.76)
+% * plcore.ltx in platex
+% (2001/09/26 v1.2a -- 2018/09/02 v1.3)
+%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{plarydshln}
+ [2018/10/20 v0.4 arydshln package for pLaTeX/upLaTeX]
+\RequirePackage{arydshln}
+
+%% handle package compatibility issues beforehand
+\@ifpackageloaded{array}{\RequirePackage{plarray}}{}
+
+%% patching internal code for arydshln.sty
+%
+%% remove extra \xkanjiskip (pLaTeX2e 2016/04/17)
+\@ifl@t@r{\pfmtversion}{2016/04/17}{\@firstofone}{\@gobble}
+{% = for pLaTeX2e 2016/04/17 or newer
+\def\endtabular{\endarray $\egroup\null}
+\expandafter\let\csname endtabular*\endcsname\endtabular
+}% =
+%
+%% done
+
+\endinput
diff --git a/language/japanese/plautopatch/plautopatch-ja.pdf b/language/japanese/plautopatch/plautopatch-ja.pdf
new file mode 100644
index 0000000000..a1dfcfdac7
--- /dev/null
+++ b/language/japanese/plautopatch/plautopatch-ja.pdf
Binary files differ
diff --git a/language/japanese/plautopatch/plautopatch-ja.tex b/language/japanese/plautopatch/plautopatch-ja.tex
new file mode 100644
index 0000000000..f199a1b349
--- /dev/null
+++ b/language/japanese/plautopatch/plautopatch-ja.tex
@@ -0,0 +1,154 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}
+\usepackage{doc}
+\usepackage{plautopatch}% load this here to make \GetFileInfo work
+\GetFileInfo{plautopatch.sty}
+\title{Package \textsf{plautopatch} \fileversion}
+\author{Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+日本のp\LaTeX/up\LaTeX{}フォーマットや専用パッケージが、
+これらを知らない\LaTeX{}パッケージ(しばしば海外で作られた
+汎用のもの)と衝突することがあります。
+最悪の場合にはエラーが出たり、誤った出力が得られたり
+することがあります。
+
+この\textsf{plautopatch}の目的は、こうした非互換を意識せずに
+済むようにすることです。具体的には、p\LaTeX/up\LaTeX{}と
+衝突するパッケージが使われた場合に、その衝突を解消するパッチを
+提供するパッケージを必要に応じて自動的に読み込みます。
+こうすることで、ソースコードを簡潔にできるだけでなく、
+p\LaTeX/up\LaTeX{}で動作するソースと通常の\LaTeX{}ソースの
+見た目を近づけることができます。
+
+このパッケージはGitHubで開発しています。
+\begin{verbatim}
+ https://github.com/aminophen/plautopatch
+\end{verbatim}
+
+\section*{動作条件}
+
+このパッケージは
+\textsf{filehook}パッケージ(Martin Scharrer氏の作)に依存します。
+
+\section*{使い方}
+
+このパッケージを\LaTeX{}ソースの冒頭で読み込みます。
+このために、\verb+\RequirePackage{plautopatch}+を
+\verb+\documentclass+や他のコマンドよりも\emph{前}に
+読み込むことをお勧めします
+(クラスファイルなどが問題のあるパッケージを読み込む可能性もあるため)。
+
+例を示します。
+\begin{verbatim}
+ %\RequirePackage{plautopatch}
+ \documentclass{tarticle}% 縦組クラス(plext使用)
+ \usepackage{array}% plextと非互換
+ \begin{document}
+ ...
+ \end{document}
+\end{verbatim}
+上記の例では、
+\textsf{tarticle}クラスが内部で読み込む\textsf{plext}パッケージと、
+ソース中で\verb+\usepackage+している\textsf{array}パッケージが
+衝突してエラーになる場合があります。しかし、冒頭で
+\verb+\RequirePackage{plautopatch}+とだけ書いておけば、
+\textsf{array}パッケージの時点で\textsf{plextarray}パッケージが
+追加で読み込まれるため、問題が解消します。
+このように自動追加されたパッケージは、\verb+\end{document}+の
+時点で次のように一覧として表示されます(複数の場合は
+コンマと空白で区切ったリストになります)。
+\begin{verbatim}
+***** List of packages loaded by `plautopatch': *****
+ plextarray.
+*****************************************************
+\end{verbatim}
+
+\section*{現在対応しているパッケージの一覧}
+
+\def\ITEMoTo#1 (#2) -> #3 (#4){%
+ \item \textsf{#1} (\textsf{#2})\\
+ $\rightarrow$ \textsf{#3} (\textsf{#4})}
+\def\ITEMoTx#1 (#2) -> #3 {%
+ \item \textsf{#1} (\textsf{#2})\\
+ $\rightarrow$ \textsf{#3} }
+\def\ITEMxTx#1 -> #2 {%
+ \item \textsf{#1}\\
+ $\rightarrow$ \textsf{#2} }
+\def\ITEMooTo#1 (#2) + #3 (#4) -> #5 (#6){%
+ \item \textsf{#1} (\textsf{#2}) + \textsf{#3} (\textsf{#4})\\
+ $\rightarrow$ \textsf{#5} (\textsf{#6})}
+\def\ITEMxoTo#1 + #2 (#3) -> #4 (#5){%
+ \item \textsf{#1} + \textsf{#2} (\textsf{#3})\\
+ $\rightarrow$ \textsf{#4} (\textsf{#5})}
+\def\ITEMxoTx#1 + #2 (#3) -> #4 {%
+ \item \textsf{#1} + \textsf{#2} (\textsf{#3})\\
+ $\rightarrow$ \textsf{#4} }
+
+凡例:
+\begin{itemize}
+\item \texttt{<元のパッケージ>} (\texttt{<元が含まれるバンドル名>})\\
+ \texttt{<パッチのパッケージ>} (\texttt{<パッチが含まれるバンドル名>})
+\end{itemize}
+
+現在のバージョン (\filedate\space\fileversion) がサポートしているのは
+下記のパッケージです。
+\begin{itemize}
+\ITEMoTo doc (latex) -> pldocverb (maintained here!)
+\ITEMoTo tracefnt (latex) -> ptrace/uptrace (platex/uplatex)
+\ITEMoTo fltrace (latex) -> pfltrace (platex)
+\ITEMoTo array (latex-tools) -> plarray (platex-tools)
+\ITEMooTo array (latex-tools) + plext (platex) -> plextarray (platex-tools)
+\ITEMooTo delarray (latex-tools) + plext (platex) -> plextdelarray (platex-tools)
+\ITEMxoTx colortbl + plext (platex) -> plextcolortbl (maintained here!)
+\ITEMxTx arydshln -> plarydshln (maintained here!)
+\ITEMxoTx arydshln + plext (platex) -> plextarydshln (maintained here!)
+\ITEMxTx siunitx -> plsiunitx (maintained here!)
+\ITEMoTo everysel (ms) -> pxeverysel (platex-tools)
+\ITEMoTo everyshi (ms) -> pxeveryshi (platex-tools)
+\ITEMoTo atbegshi (oberdiek) -> pxatbegshi (platex-tools)
+\ITEMoTo ftnright (latex-tools) -> pxftnright (platex-tools)
+\ITEMoTo multicol (latex-tools) -> pxmulticol (platex-tools)
+\ITEMxTx pdfpages -> pxpdfpages (maintained here!)
+\ITEMoTx pgfrcs (pgf) -> pxpgfrcs (maintained here!)
+\ITEMoTx pgfcore (pgf) -> pxpgfmark (by Takayuki YATO)
+\end{itemize}
+もちろん、このリストは随時、追加・削除・置き換えていく予定です。
+互換性の問題や追加したいパッケージがある場合はご一報ください。
+
+\section*{特定のパッケージを除外したい場合}
+
+デフォルトでは、上記のリストに登録されている\texttt{<元のパッケージ>}が
+使われたことを検出すると、全て自動的にパッチを読み込みます。
+しかし、時にはこれが逆効果となり、問題が起きる可能性は否定できません。
+そのような場合は
+\begin{verbatim}
+ \plautopatchdisable{<元のパッケージ>}
+\end{verbatim}
+と書くことで、そのパッケージを検出対象から除外します。複数ある場合は
+\begin{verbatim}
+ \plautopatchdisable{<元のパッケージ1>,<元のパッケージ2>}
+\end{verbatim}
+のようにコンマで区切っていくつでも除外できます。
+
+\section*{変更履歴}
+
+\begin{itemize}
+ \item 2018/08/21 v0.2 最初のCTANリリース版
+ \item 2018/08/22 v0.3 元パッケージ検出の改良
+ \item 2018/09/21 v0.5 \textsf{colortbl}と\textsf{pgf}もサポート
+ \item 2018/10/02 v0.6 \textsf{arydshln}のサポート
+ \item 2018/10/27 v0.8 \textsf{everysel}サポートの改良
+ \item 2018/11/03 v0.9 \textsf{siunitx}のサポート
+ \item 2018/11/25 v0.9b \textsf{multicol}と\textsf{doc}のサポート
+ \item 2019/06/06 v0.9c \textsf{siunitx}のパッチ改良
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/plautopatch/plautopatch.pdf b/language/japanese/plautopatch/plautopatch.pdf
new file mode 100644
index 0000000000..2d9b0ad42b
--- /dev/null
+++ b/language/japanese/plautopatch/plautopatch.pdf
Binary files differ
diff --git a/language/japanese/plautopatch/plautopatch.sty b/language/japanese/plautopatch/plautopatch.sty
new file mode 100644
index 0000000000..378c2b3208
--- /dev/null
+++ b/language/japanese/plautopatch/plautopatch.sty
@@ -0,0 +1,208 @@
+%
+% plautopatch.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the plautopatch bundle.
+% https://github.com/aminophen/plautopatch
+%
+
+\NeedsTeXFormat{LaTeX2e}% not pLaTeX2e on purpose!
+\ProvidesPackage{plautopatch}
+ [2019/06/06 v0.9c Automated patches for pLaTeX/upLaTeX]
+
+\ifx\pfmtname\@undefined
+ \PackageWarningNoLine{plautopatch}{%
+ This package is meant for pLaTeX/upLaTeX,\MessageBreak
+ you will not need it.}
+ \expandafter\endinput
+\fi
+
+\NeedsTeXFormat{pLaTeX2e}% just in case ...
+\def\platpc@pkgname{plautopatch}
+\def\platpc@err{\PackageError\platpc@pkgname}
+\def\platpc@warn{\PackageWarningNoLine\platpc@pkgname}
+\def\platpc@info{\PackageInfo\platpc@pkgname}
+
+\RequirePackage{filehook}
+
+% low-level helpers
+
+%% \platpc@ifreq@add{<package>}
+% = if not loaded yet, \RequirePackage{<package>}
+% and add to list.
+\def\platpc@ifreq@add#1{%
+ \@ifpackageloaded{#1}{}{%
+ \RequirePackage{#1}\platpc@addtolist{#1}%
+ }%
+}
+
+%% \platpc@addtolist{<package>}
+% = add <package> to list named \platpc@list.
+\def\platpc@addtolist#1{\xdef\platpc@list{\platpc@list, #1}}
+\def\platpc@list{}% initialize
+
+%% \platpc@ifnotdisabled{<package>}{<code>}
+% = execute <code> if <package> is not disabled.
+\def\platpc@ifnotdisabled#1{%
+ \expandafter\ifx\csname platpc@disable@#1\endcsname\relax
+ \expandafter\@firstofone
+ \fi
+}
+
+%% \platpc@err@toolate{<package>}
+% = content of the "too-late" error.
+\def\platpc@err@toolate#1{%
+ \platpc@err{Package `#1' already loaded!\MessageBreak
+ Use \string\RequirePackage{\platpc@pkgname} earlier}\@ehc
+}
+
+% high-level helpers
+
+%% \platpc@patch@after{<orig>}{<patch>}
+% = Load <patch> after <orig>.
+\def\platpc@patch@after#1#2{%
+ \expandafter\def\csname platpc@end@#1\endcsname{%
+ \platpc@ifnotdisabled{#1}{\platpc@ifreq@add{#2}}%
+ }%
+ \@ifpackageloaded{#1}{%
+ \csname platpc@end@#1\endcsname
+ }{%
+ \AtEndOfPackageFile{#1}{\csname platpc@end@#1\endcsname}%
+ }%
+}
+\@onlypreamble\platpc@patch@after
+
+%% \platpc@patch@after@both{<orig 1>}{<orig 2>}{<patch>}
+% = Load <patch> after both <orig 1> & <orig 2>.
+\def\platpc@patch@after@both#1#2#3{%
+ \expandafter\def\csname platpc@end@#1+#2\endcsname{%
+ \platpc@ifnotdisabled{#1}{\platpc@ifnotdisabled{#2}{%
+ \platpc@ifreq@add{#3}%
+ }}%
+ }%
+ \@ifpackageloaded{#1}{%
+ \@ifpackageloaded{#2}{%
+ \csname platpc@end@#1+#2\endcsname
+ }{%
+ \AtEndOfPackageFile{#2}{\csname platpc@end@#1+#2\endcsname}%
+ }%
+ }{%
+ \@ifpackageloaded{#2}{%
+ \AtEndOfPackageFile{#1}{\csname platpc@end@#1+#2\endcsname}%
+ }{%
+ \AtEndOfPackageFile{#1}{%
+ \@ifpackageloaded{#2}{\csname platpc@end@#1+#2\endcsname}{}%
+ }%
+ \AtEndOfPackageFile{#2}{%
+ \@ifpackageloaded{#1}{\csname platpc@end@#1+#2\endcsname}{}%
+ }%
+ }%
+ }%
+}
+\@onlypreamble\platpc@patch@after@both
+
+%% \platpc@patch@before{<orig>}{<patch>}
+% = Load <patch> before <orig>.
+% used when both conditions are met:
+% - <patch> must be loaded *before* <orig>
+% - <patch> contains \RequirePackage{<orig>}
+\def\platpc@patch@before#1#2{%
+ \expandafter\def\csname platpc@begin@#1\endcsname{%
+ \platpc@ifnotdisabled{#1}{%
+ % if <patch> is already loaded, nothing to do
+ \@ifpackageloaded{#2}{}{% else
+ % the code (*!) should be used only once,
+ % remove it immediately when this macro is executed
+ \expandafter\let\csname platpc@begin@#1\endcsname\relax
+ % pretend as if <orig> not loaded
+ \expandafter\let\csname ver@#1.sty\endcsname\relax
+ % load the <patch> package
+ \RequirePackage{#2}\platpc@addtolist{#2}%
+ % avoid loading <orig> twice by discarding "\@@input <orig>" (*!)
+ \let\platpc@filehook@@atbegin\filehook@@atbegin
+ \def\filehook@@atbegin\@@input####1\filehook@atend{%
+ \let\filehook@@atbegin\platpc@filehook@@atbegin
+ % avoid infinite loop even when \AtEndOfPackageFile used
+ \expandafter\let\csname filehook@atend@#1.sty\endcsname\relax
+ \filehook@@atbegin
+ \filehook@atend}%
+ % all done
+ }%
+ }%
+ }%
+ % if <orig> is already loaded at this point, too late!
+ \@ifpackageloaded{#1}{%
+ \platpc@err@toolate{#1}%
+ }{% else
+ \AtBeginOfPackageFile{#1}{\csname platpc@begin@#1\endcsname}%
+ }%
+}
+\@onlypreamble\platpc@patch@before
+
+% interface for users who want don't patches
+
+%% \plautopatchdisable{<orig 1>,<orig 2>,...}
+% = Disable patches triggered by <orig 1>, <orig 2>, ...
+\newcommand{\plautopatchdisable}[1]{%
+ \edef\@tempa{\zap@space#1 \@empty}%
+ \@for\@tempa:=\@tempa\do{%
+ \expandafter\let\csname platpc@disable@\@tempa\endcsname\@empty
+ }%
+}
+\@onlypreamble\plautopatchdisable
+
+% show list of loaded patches
+
+\AtEndDocument{\platpc@showlist}
+\def\platpc@showlist{%
+ \ifx\platpc@list\@empty
+ \platpc@info{No additional packages loaded}
+ \else
+ % the first token of \platpc@list should be ','
+ \typeout{%
+ ***** List of packages loaded by `\platpc@pkgname': *****^^J%
+ \expandafter\@gobble\platpc@list.^^J%
+ *****************************************************}%
+ \fi
+}
+
+% register patches
+
+\platpc@patch@after{doc}{pldocverb}% (maintained here!)
+\ifx\enablecjktoken\@undefined
+ \platpc@patch@after{tracefnt}{ptrace}% platex
+\else
+ \platpc@patch@after{tracefnt}{uptrace}% uplatex
+\fi
+\platpc@patch@after{fltrace}{pfltrace}% platex
+\platpc@patch@after{array}{plarray}% platex-tools
+\platpc@patch@after@both{array}{plext}{plextarray}% platex-tools
+\platpc@patch@after@both{delarray}{plext}{plextdelarray}% platex-tools
+\platpc@patch@after@both{colortbl}{plext}{plextcolortbl}% (maintained here!)
+\platpc@patch@after{arydshln}{plarydshln}% (maintained here!)
+\platpc@patch@after@both{arydshln}{plext}{plextarydshln}% (maintained here!)
+\platpc@patch@after{siunitx}{plsiunitx}% (maintained here!)
+% --- in most cases, pxeverysel can be safely loaded even after everysel
+% --- but it can fail when \AtBeginDocument{everysel} is involved
+\platpc@patch@before{everysel}{pxeverysel}% platex-tools
+\platpc@patch@after{everyshi}{pxeveryshi}% platex-tools
+\platpc@patch@after{atbegshi}{pxatbegshi}% platex-tools
+\platpc@patch@before{ftnright}{pxftnright}% platex-tools
+\platpc@patch@after{multicol}{pxmulticol}% platex-tools
+\platpc@patch@after{pdfpages}{pxpdfpages}% (maintained here!)
+
+% for TikZ/PGF
+\platpc@patch@after{pgfrcs}{pxpgfrcs}% (maintained here!)
+% --- pxpgfmark is useful on e-(u)pTeX + dvipdfmx
+% --- but does no harm for other conditions
+% --- [Update] pgf 2019-01-05 v3.1 (with \gdef\pgfversion{3.1})
+% ---- already supports inter-picture connections
+% ---- so pxpgfmark is no longer required
+\platpc@patch@after{pgfcore}{pxpgfmark}% by Takayuki YATO (ZR)
+
+% special case, mainly for problematic packages
+% --- mdwtab forbids loading array
+% --- so plarray should also be forbidden
+\AtEndOfPackageFile{mdwtab}{\@namedef{ver@plarray.sty}{}}
+
+\endinput
diff --git a/language/japanese/plautopatch/plautopatch.tex b/language/japanese/plautopatch/plautopatch.tex
new file mode 100644
index 0000000000..06f2db6946
--- /dev/null
+++ b/language/japanese/plautopatch/plautopatch.tex
@@ -0,0 +1,156 @@
+%# -*- coding: utf-8 -*-
+\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
+ \epTeXinputencoding utf8 % ensure utf-8 encoding for platex
+\fi
+
+\documentclass[a4paper]{jsarticle}
+\usepackage{doc}
+\usepackage{plautopatch}% load this here to make \GetFileInfo work
+\GetFileInfo{plautopatch.sty}
+\title{Package \textsf{plautopatch} \fileversion}
+\author{Hironobu Yamashita}
+\date{\filedate}
+\begin{document}
+
+\maketitle
+
+Japanese \pLaTeX/up\LaTeX\ formats and packages often conflict
+with other \LaTeX\ packages which are unaware of p\LaTeX/up\LaTeX.
+In the worst case, such packages throw a fatal error or
+end up with a wrong output.
+
+The goal of this package \textsf{plautopatch} is that
+there should be no need to worry about such incompatibilities,
+because specific patches are loaded automatically
+whenever necessary.
+This helps not only to simplify source files, but also
+to make the appearance of working p\LaTeX/up\LaTeX\ sources
+similar to those of ordinary \LaTeX\ ones.
+
+The package is maintained on GitHub:
+\begin{verbatim}
+ https://github.com/aminophen/plautopatch
+\end{verbatim}
+
+\section*{Requirements}
+
+This package depends on \textsf{filehook} package,
+written by Martin Scharrer.
+
+\section*{Usage}
+
+Load this package at the very beginning of the \LaTeX\ source.
+It is strongly recommended to use
+\verb+\RequirePackage{plautopatch}+
+before \verb+\documentclass+ or any other commands,
+as such other classes and packages may load
+some problematic packages internally.
+
+Here is an example:
+\begin{verbatim}
+ %\RequirePackage{plautopatch}
+ \documentclass{tarticle}% vertical writing (requires plext)
+ \usepackage{array}% incompatible with plext
+ \begin{document}
+ ...
+ \end{document}
+\end{verbatim}
+In the above example, the class \textsf{tarticle} internally
+requires the package \textsf{plext}.
+However, \textsf{array} explicitly required by \verb+\usepackage+
+conflicts with \textsf{plext}.
+By using \verb+\RequirePackage{plautopatch}+,
+\textsf{plextarray} is automatically loaded and the problem goes.
+The list of automatically-loaded packages is shown at
+\verb+\end{document}+:
+\begin{verbatim}
+***** List of packages loaded by `plautopatch': *****
+ plextarray.
+*****************************************************
+\end{verbatim}
+When multiple packages are loaded, they are all printed
+as a list separated by commas and spaces.
+
+\section*{List of currently available patches}
+
+\def\ITEMoTo#1 (#2) -> #3 (#4){%
+ \item \textsf{#1} (\textsf{#2})\\
+ $\rightarrow$ \textsf{#3} (\textsf{#4})}
+\def\ITEMoTx#1 (#2) -> #3 {%
+ \item \textsf{#1} (\textsf{#2})\\
+ $\rightarrow$ \textsf{#3} }
+\def\ITEMxTx#1 -> #2 {%
+ \item \textsf{#1}\\
+ $\rightarrow$ \textsf{#2} }
+\def\ITEMooTo#1 (#2) + #3 (#4) -> #5 (#6){%
+ \item \textsf{#1} (\textsf{#2}) + \textsf{#3} (\textsf{#4})\\
+ $\rightarrow$ \textsf{#5} (\textsf{#6})}
+\def\ITEMxoTo#1 + #2 (#3) -> #4 (#5){%
+ \item \textsf{#1} + \textsf{#2} (\textsf{#3})\\
+ $\rightarrow$ \textsf{#4} (\textsf{#5})}
+\def\ITEMxoTx#1 + #2 (#3) -> #4 {%
+ \item \textsf{#1} + \textsf{#2} (\textsf{#3})\\
+ $\rightarrow$ \textsf{#4} }
+
+The legend:
+\begin{itemize}
+\item \texttt{<original package>} (\texttt{<bundle name of original package>})\\
+ \texttt{<patch package>} (\texttt{<bundle name of patch package>})
+\end{itemize}
+
+Current version (\filedate\space\fileversion) supports the followings:
+\begin{itemize}
+\ITEMoTo doc (latex) -> pldocverb (maintained here!)
+\ITEMoTo tracefnt (latex) -> ptrace/uptrace (platex/uplatex)
+\ITEMoTo fltrace (latex) -> pfltrace (platex)
+\ITEMoTo array (latex-tools) -> plarray (platex-tools)
+\ITEMooTo array (latex-tools) + plext (platex) -> plextarray (platex-tools)
+\ITEMooTo delarray (latex-tools) + plext (platex) -> plextdelarray (platex-tools)
+\ITEMxoTx colortbl + plext (platex) -> plextcolortbl (maintained here!)
+\ITEMxTx arydshln -> plarydshln (maintained here!)
+\ITEMxoTx arydshln + plext (platex) -> plextarydshln (maintained here!)
+\ITEMxTx siunitx -> plsiunitx (maintained here!)
+\ITEMoTo everysel (ms) -> pxeverysel (platex-tools)
+\ITEMoTo everyshi (ms) -> pxeveryshi (platex-tools)
+\ITEMoTo atbegshi (oberdiek) -> pxatbegshi (platex-tools)
+\ITEMoTo ftnright (latex-tools) -> pxftnright (platex-tools)
+\ITEMoTo multicol (latex-tools) -> pxmulticol (platex-tools)
+\ITEMxTx pdfpages -> pxpdfpages (maintained here!)
+\ITEMoTx pgfrcs (pgf) -> pxpgfrcs (maintained here!)
+\ITEMoTx pgfcore (pgf) -> pxpgfmark (by Takayuki YATO)
+\end{itemize}
+Note that, of course, the list may be adjusted
+(addition, deletion or replacement)
+in the future to get the expected result.
+Feel free to report some compatibility issue or request changes!
+
+\section*{Disabling a specific patch}
+
+By default, \texttt{<patch package>} is automatically loaded when
+\texttt{<original package>} is detected, following the whole list.
+However, there is still a possibility of another regression issue.
+In that case, you can disable the detection of
+\texttt{<original package>} by using the command:
+\begin{verbatim}
+ \plautopatchdisable{<original package>}
+\end{verbatim}
+If you want to disable multiple packages, you can give
+a comma-separated list of them:
+\begin{verbatim}
+ \plautopatchdisable{<original package 1>,<original package 2>}
+\end{verbatim}
+
+\section*{Change History}
+
+\begin{itemize}
+ \item 2018/08/21 v0.2 First CTAN release
+ \item 2018/08/22 v0.3 Improve detection of problematic packages
+ \item 2018/09/21 v0.5 Add support for \textsf{colortbl} and \textsf{pgf}
+ \item 2018/10/02 v0.6 Add support for \textsf{arydshln}
+ \item 2018/10/27 v0.8 Better support for \textsf{everysel}
+ \item 2018/11/03 v0.9 Add support for \textsf{siunitx}
+ \item 2018/11/25 v0.9b Add support for \textsf{multicol} and \textsf{doc}
+ \item 2019/06/06 v0.9c Update patch for \textsf{siunitx}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/plautopatch/pldocverb.sty b/language/japanese/plautopatch/pldocverb.sty
new file mode 100644
index 0000000000..cf54a62353
--- /dev/null
+++ b/language/japanese/plautopatch/pldocverb.sty
@@ -0,0 +1,41 @@
+%
+% pldocverb.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the plautopatch bundle.
+% https://github.com/aminophen/plautopatch
+%
+% This package is expected to be compatible with
+% * doc.sty
+% (2004/02/09 v2.1b -- 2018/09/25 v2.1i)
+% * plcore.ltx in platex
+% (2001/09/26 v1.2a -- 2018/09/02 v1.3)
+%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pldocverb}
+ [2018/11/25 v0.2 doc package for pLaTeX/upLaTeX]
+\RequirePackage{doc}
+% doc.sty conditionally requires multicol.sty without passing options
+\IfFileExists{pxmulticol.sty}{\RequirePackage{pxmulticol}}{}
+
+%% enable \xkanjiskip insertion,
+%% while preserving beginning space characters (pLaTeX2e 2017/10/28)
+\@ifl@t@r{\pfmtversion}{2017/10/28}{\@firstoftwo}{\@secondoftwo}
+{% = for pLaTeX2e 2017/10/28 or newer
+\def\verb{\relax\ifmmode\hbox\else\leavevmode\vadjust{}\fi
+ \bgroup \let\do\do@noligs \verbatim@nolig@list
+ \ttfamily \verb@eol@error \let\do\@makeother \dospecials
+ \@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
+}% =
+{% = for pLaTeX2e 2017/09/26 or older
+\def\verb{\relax\ifmmode\hbox\else\leavevmode\fi
+ \bgroup \let\do\do@noligs \verbatim@nolig@list
+ \ttfamily \verb@eol@error \let\do\@makeother \dospecials
+ \@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
+}% =
+%
+%% done
+
+\endinput
diff --git a/language/japanese/plautopatch/plextarydshln.sty b/language/japanese/plautopatch/plextarydshln.sty
new file mode 100644
index 0000000000..ac0059c5e4
--- /dev/null
+++ b/language/japanese/plautopatch/plextarydshln.sty
@@ -0,0 +1,60 @@
+%
+% plextarydshln.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the plautopatch bundle.
+% https://github.com/aminophen/plautopatch
+%
+% This package is expected to be compatible with
+% * arydshln.sty
+% (2004/08/31 v1.71 -- 2019/02/21 v1.76)
+% * plext.sty in platex
+% (2001/09/26 v1.2 -- 2018/10/07 v1.2k)
+%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{plextarydshln}
+ [2018/10/20 v0.4 Merge plext and arydshln]
+\RequirePackage{plext}
+\RequirePackage{plarydshln}
+
+%% handle package compatibility issues beforehand
+% Note: The "arydshln" manual requests users to load
+% the following packages *before* arydshln,
+% to ensure compatibility:
+% array, longtable, colortab, colortbl.
+% So, hoping that users are clever enough to load
+% them before plextarydshln, load known patches
+% at this point when they are detected.
+\@ifpackageloaded{array}{\RequirePackage{plextarray}}{}
+\@ifpackageloaded{colortbl}{\RequirePackage{plextcolortbl}}{}
+% Note: The following package is not necessarily loaded
+% before arydshln; but handle the incompatibility
+% if loaded before plextarydshln.
+\@ifpackageloaded{delarray}{\RequirePackage{plextdelarray}}{}
+
+%% patching internal code for arydshln.sty and plext.sty
+%
+\let\adl@p@array\p@array
+\def\p@array{\adl@everyvbox\everyvbox
+ \everyvbox{\adl@arrayinit \the\adl@everyvbox \everyvbox\adl@everyvbox}%
+ \ifadl@inactive \adl@inactivate \else \adl@activate \fi
+ \let\adl@noalign\noalign
+ \adl@p@array}
+\def\endarray{\adl@endarray \egroup \adl@arrayrestore \egroup
+ \@end@alignbox \csname @arrayright\endcsname}
+%
+%% done
+
+%% compatibility with colortbl.sty
+%
+\@ifpackageloaded{colortbl}{\@firstofone}{\@gobble}
+{% = colortbl.sty loaded
+\def\endarray{\adl@endarray \egroup \adl@arrayrestore \CT@end \egroup
+ \@end@alignbox \csname @arrayright\endcsname}%
+}% =
+%
+%% done
+
+\endinput
diff --git a/language/japanese/plautopatch/plextcolortbl.sty b/language/japanese/plautopatch/plextcolortbl.sty
new file mode 100644
index 0000000000..08ae5bd82d
--- /dev/null
+++ b/language/japanese/plautopatch/plextcolortbl.sty
@@ -0,0 +1,39 @@
+%
+% plextcolortbl.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the plautopatch bundle.
+% https://github.com/aminophen/plautopatch
+%
+% This package is expected to be compatible with
+% * colortbl.sty
+% (2012/06/21 v1.0b -- 2018/12/12 v1.0d)
+% * plext.sty in platex
+% (2001/09/26 v1.2 -- 2018/10/07 v1.2k)
+%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{plextcolortbl}
+ [2018/09/19 v0.1a Merge plext and colortbl]
+\RequirePackage{plextarray}% colortbl requires array
+\RequirePackageWithOptions{colortbl}
+
+%% patching internal code for colortbl.sty
+%
+\AtBeginDocument{%
+ % recover \@tabarray from plextarray.sty
+ \def\@tabarray{\@ifnextchar<\p@tabarray{\p@tabarray<Z>}}
+ % change \p@tabarray instead
+ \expandafter\def\expandafter\p@tabarray
+ \expandafter<\expandafter#\expandafter1\expandafter>\expandafter{%
+ \expandafter\CT@start\p@tabarray<#1>}%
+}
+%
+\def\endarray{\crcr \egroup \egroup
+ \@end@alignbox %% added from plext.sty
+ \@arrayright \gdef\@preamble{}\CT@end}%
+%
+%% done
+
+\endinput
diff --git a/language/japanese/plautopatch/plsiunitx.sty b/language/japanese/plautopatch/plsiunitx.sty
new file mode 100644
index 0000000000..f4041287d5
--- /dev/null
+++ b/language/japanese/plautopatch/plsiunitx.sty
@@ -0,0 +1,71 @@
+%
+% plsiunitx.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the plautopatch bundle.
+% https://github.com/aminophen/plautopatch
+% (mostly based on lltjp-siunitx.sty 2019-06-06)
+%
+% This package is expected to be compatible with
+% * siunitx.sty
+% (????/??/?? v?.?? -- 2018/05/17 v2.7s)
+% * plarray.sty in platex-tools
+% (2018/03/01 v0.1d -- 2018/10/27 v0.1h)
+%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{plsiunitx}
+ [2019/06/06 v0.3 siunitx package for pLaTeX/upLaTeX]
+\RequirePackageWithOptions{siunitx}
+\RequirePackage{plarray}% siunitx requires array
+
+\ExplSyntaxOn
+
+%% patching internal code for siunitx.sty
+%
+%% inhibit JFM glue around tabular cell components (pLaTeX2e 2018/03/09)
+\@ifl@t@r{\pfmtversion}{2017/07/29}{\@firstofone}{\@gobble}
+{% = for pLaTeX2e 2017/07/29 or newer
+%
+%% new table column: S and s
+\bool_new:N \l__platpc_siunitx_table_collect_relax_bool
+\cs_set_protected:Npn \__siunitx_table_collect_begin_s: {
+ \bool_set_false:N \l__platpc_siunitx_table_collect_relax_bool
+ \cs_set_eq:NN \__siunitx_table_collect_token:N
+ \__siunitx_table_collect_token_s:N
+ \cs_set_eq:NN \__siunitx_table_print: \__siunitx_table_print_s:
+ \__siunitx_table_collect_init_s:
+ \__siunitx_table_collect_get:
+}
+%
+\@ifpackageloaded{mdwtab}{}{%
+ \cs_set_protected:Npn \__siunitx_table_collect_not_braced:N #1
+ {
+ \token_if_eq_meaning:NNTF #1 \tex_relax:D {
+ \bool_if:NTF \l__platpc_siunitx_table_collect_relax_bool {
+ \__siunitx_table_collect_not_braced_aux_i:N #1
+ } {
+ \bool_set_true:N \l__platpc_siunitx_table_collect_relax_bool
+ }
+ } {
+ \token_if_eq_meaning:NNF #1 \pltx@next@inhibitglue {
+ \token_if_eq_meaning:NNF #1 \removejfmglue {
+ \token_if_eq_meaning:NNF #1 \tex_ignorespaces:D
+ {
+ \token_if_eq_meaning:NNF #1 \tex_unskip:D
+ { \__siunitx_table_collect_not_braced_aux_i:N #1 }
+ }
+ }}
+ }
+ \__siunitx_table_collect_next:
+ }
+ }
+%
+}% =
+%
+%% done
+
+\ExplSyntaxOff
+
+\endinput
diff --git a/language/japanese/plautopatch/pxpdfpages.sty b/language/japanese/plautopatch/pxpdfpages.sty
new file mode 100644
index 0000000000..43c8b274e8
--- /dev/null
+++ b/language/japanese/plautopatch/pxpdfpages.sty
@@ -0,0 +1,51 @@
+%
+% pxpdfpages.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the plautopatch bundle.
+% https://github.com/aminophen/plautopatch
+%
+% This package is expected to be compatible with
+% * pdfpages.sty
+% (2015/07/19 v0.5a -- 2017/10/31 v0.5l)
+% * plcore.ltx in platex
+% (2001/09/26 v1.2a -- 2018/09/02 v1.3)
+%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxpdfpages}
+ [2018/08/20 v0.1 Patch to pdfpages for (u)pLaTeX]
+
+%% preparations
+\def\pxpdpg@pkgname{pxpdfpages}
+\def\pxpdpg@warn{\PackageWarningNoLine\pxpdpg@pkgname}
+\def\pxpdpg@info{\PackageInfo\pxpdpg@pkgname}
+
+%% load it
+\RequirePackageWithOptions{pdfpages}
+\RequirePackage{pxatbegshi}% pdfpages requires atbegshi
+
+%% patch internal for pdfpages to work with tombow
+%% Note: this code should be copied to gentombow.sty!
+\def\pxpdpg@patch@pdfpages{%
+ \RequirePackage{etoolbox}
+ \patchcmd{\AM@output}{%
+ \setlength{\@tempdima}{\AM@xmargin}%
+ \edef\AM@xmargin{\the\@tempdima}%
+ \setlength{\@tempdima}{\AM@ymargin}%
+ \edef\AM@ymargin{\the\@tempdima}%
+ }{%
+ \setlength{\@tempdima}{\AM@xmargin\iftombow+1in\fi}%
+ \edef\AM@xmargin{\the\@tempdima}%
+ \setlength{\@tempdima}{\AM@ymargin\iftombow-1in\fi}%
+ \edef\AM@ymargin{\the\@tempdima}%
+ }
+ {\pxpdpg@info{Patch for pdfpages applied}}
+ {\pxpdpg@warn{Patch for pdfpages failed}}%
+ }
+\AtBeginDocument{\@ifpackageloaded{pdfpages}{\pxpdpg@patch@pdfpages}{}}
+
+%% all done
+
+\endinput
diff --git a/language/japanese/plautopatch/pxpgfrcs.sty b/language/japanese/plautopatch/pxpgfrcs.sty
new file mode 100644
index 0000000000..578e26de0b
--- /dev/null
+++ b/language/japanese/plautopatch/pxpgfrcs.sty
@@ -0,0 +1,34 @@
+%
+% pxpgfrcs.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the plautopatch bundle.
+% https://github.com/aminophen/plautopatch
+%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxpgfrcs}
+ [2018/09/21 v0.1]
+\RequirePackage{pgfrcs}
+
+% Note: I chose the name "pxpgfrcs.sty"
+% (instead of "pgfutil-platex.def") because
+% * "pgfrcs.sty" is the only package
+% which contains \input pgfutil-latex.def.
+% * It is not common for LaTeX users to use
+% such an interface like \input pgfutil-platex.def.
+
+% patch pgfutil-latex.def
+\RequirePackage{pxeveryshi}% pgfutil-latex.def requires everyshi
+\def\pgfutil@insertatbegincurrentpagefrombox#1{%
+ \edef\pgf@temp{\the\wd\pgfutil@abb}%
+ \global\setbox\pgfutil@abb\hbox{%
+ \yoko %%% add \yoko
+ \unhbox\pgfutil@abb%
+ \hskip-\pgf@temp\relax%
+ #1%
+ }%
+}%
+
+\endinput
diff --git a/language/japanese/ptex-base/LICENSE b/language/japanese/ptex-base/LICENSE
new file mode 100644
index 0000000000..7392f6e845
--- /dev/null
+++ b/language/japanese/ptex-base/LICENSE
@@ -0,0 +1,28 @@
+Copyright (C) 2010 ASCII MEDIA WORKS.
+Copyright (C) 2016-2019 Japanese TeX Development Community
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/ptex-base/Makefile b/language/japanese/ptex-base/Makefile
new file mode 100644
index 0000000000..7c1b25a82b
--- /dev/null
+++ b/language/japanese/ptex-base/Makefile
@@ -0,0 +1,21 @@
+KANJI = -kanji=jis
+FONTMAP = -f ipaex.map -f ptex-ipaex.map
+TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
+
+all:
+ echo Nothing to be built.
+
+.PHONY: install
+install:
+ mkdir -p ${TEXMF}/doc/ptex/ptex-base
+ cp ./LICENSE ${TEXMF}/doc/ptex/ptex-base/
+ cp ./README* ${TEXMF}/doc/ptex/ptex-base/
+ cp ./Makefile ${TEXMF}/doc/ptex/ptex-base/
+ #cp ./Change* ${TEXMF}/doc/ptex/ptex-base/
+ mkdir -p ${TEXMF}/tex/ptex/ptex-base
+ cp ./ptex.tex ${TEXMF}/tex/ptex/ptex-base/
+ cp ./ascii-jplain.tex ${TEXMF}/tex/ptex/ptex-base/
+ cp ./kinsoku.tex ${TEXMF}/tex/ptex/ptex-base/
+ cp ./*.ini ${TEXMF}/tex/ptex/ptex-base/
+ cp ./eptex.src ${TEXMF}/tex/ptex/ptex-base/
+ cp ./eptexdefs.lib ${TEXMF}/tex/ptex/ptex-base/
diff --git a/language/japanese/ptex-base/README.md b/language/japanese/ptex-base/README.md
new file mode 100644
index 0000000000..211b67d7e3
--- /dev/null
+++ b/language/japanese/ptex-base/README.md
@@ -0,0 +1,30 @@
+# ptex-base
+
+The bundle contains plain TeX format for pTeX and e-pTeX.
+Documentation for pTeX and e-pTeX are included in ptex-manual bundle
+([CTAN](https://ctan.org/pkg/ptex-manual),
+[GitHub](https://github.com/texjporg/ptex-manual)).
+
+## Character encoding
+
+All the text files containing Japanese characters in this repository
+are encoded in ISO-2022-JP. This is because ISO-2022-JP encoded
+texts are most suitable for the traditional pTeX engine.
+
+## Repository
+
+The bundle is maintained on GitHub:
+https://github.com/texjporg/ptex-base
+
+If you have issues, please let us know from the above page.
+
+## License
+
+The bundle may be distributed and/or modified under the terms of
+the 3-clause BSD license (see [LICENSE](./LICENSE)).
+
+## Release Date
+
+2019-04-03
+
+Japanese TeX Development Community
diff --git a/language/japanese/ptex-base/ascii-jplain.tex b/language/japanese/ptex-base/ascii-jplain.tex
new file mode 100644
index 0000000000..c209718e0a
--- /dev/null
+++ b/language/japanese/ptex-base/ascii-jplain.tex
@@ -0,0 +1,48 @@
+% This is the jplain TeX format (community edition)
+% last update: texjporg 2017/03/12
+%
+% (C)copyright ASCII corporation,1987,1995,1997
+%
+\input plain
+\catcode`@=11 % at signs act like letters
+\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
+ \nobreak#1\@sf\vfootnote{#1}}
+\catcode`@=12 % at signs are no longer letters
+%
+\font\tenmin=min10 % mincho(KANJI)
+\font\preloaded=min9
+\font\preloaded=min8
+\font\sevenmin=min7
+\font\preloaded=min6
+\font\fivemin=min5
+%
+\font\tengt=goth10 % gothic(KANJI)
+\font\preloaded=goth9
+\font\preloaded=goth8
+\font\sevengt=goth7
+\font\preloaded=goth6
+\font\fivegt=goth5
+%
+\newfam\minfam % \min is family 8
+\newfam\gtfam % \gt is family 9
+%
+\def\mc{\fam\minfam\tenmin}%
+\textfont\minfam=\tenmin\scriptfont\minfam=\sevenmin%
+\scriptscriptfont\minfam=\fivemin
+%
+\def\gt{\fam\gtfam\tengt}%
+\textfont\gtfam=\tengt\scriptfont\gtfam=\sevengt%
+\scriptscriptfont\gtfam=\fivegt
+%
+\input kinsoku
+\mc % select mincho font
+\kanjiskip=0pt plus .4pt minus .4pt
+%\xkanjiskip=2.5pt plus 1pt minus 1pt
+\xkanjiskip=.25zw plus 1pt minus 1pt
+\autospacing\autoxspacing
+\jcharwidowpenalty=500
+%
+% identifies the current format based on plain
+\def\fmtname{jplain}
+\edef\fmtversion{\fmtversion\space j1.0b}
diff --git a/language/japanese/ptex-base/eptex.ini b/language/japanese/ptex-base/eptex.ini
new file mode 100644
index 0000000000..5eb992ed45
--- /dev/null
+++ b/language/japanese/ptex-base/eptex.ini
@@ -0,0 +1,4 @@
+%% for e-pTeX (ASCII Nihongo e-TeX)
+\input eptex.src
+\dump
+\endinput
diff --git a/language/japanese/ptex-base/eptex.src b/language/japanese/ptex-base/eptex.src
new file mode 100644
index 0000000000..df20deb15e
--- /dev/null
+++ b/language/japanese/ptex-base/eptex.src
@@ -0,0 +1,778 @@
+%% e-pTeX macro (2016/12/06)
+%% derived from $TEXMF/tex/plain/etex/etex.src (V2.1;0 01-FEB-1999)
+%% e-pTeX: eptex *eptex.src
+
+% Assume a purely IniTeX environment and set up a minimal \catcode r\'egime
+
+\catcode `\{=1
+\catcode `\}=2
+\catcode `\#=6
+\catcode `\^=7
+\catcode `\@=\catcode `\A
+
+% Define the basic error-reporting and abort mechanisms:
+
+\def \et@xmsg #1#2%
+ {\begingroup
+ \def \n {^^J}%
+ \def \ { }%
+ \newlinechar=\expandafter `\n
+ \if E#1%
+ \errorcontextlines=0
+ \errmessage {e-TeX error: #2}%
+ \else
+ \message {\n ! e-TeX \if I#1 message%
+ \else \if W#1 warning%
+ \else \if F#1 fatal error%
+ \else
+ \ unknown (#1)%
+ \fi
+ \fi
+ \fi: #2%
+ }%
+ \fi
+ \endgroup
+ }
+
+% Note: a future version may report errors in the %<fac>-<s>-<code>[, <text>]
+% format, allowing the more verbose <text>s to be read from file rather than
+% stored in the format.
+
+\def \et@xabort #1%
+ {\et@xmsg {F}{#1}%
+ \batchmode
+ \end
+ }
+
+% Make sure this file is being read by e-TeX in extended mode;
+% If it is, prepare to check version/revision compatibility, otherwise abort.
+
+\ifx \undefined \eTeXversion
+ \et@xabort {this file can be processed only in extended mode;\n
+ \ \ did you perhaps forget the asterisk?%
+ }%
+\else
+ \begingroup
+ \catcode `\%=12
+ \catcode `\?=14
+ \xdef \et@xfilehdr
+ {\detokenize {%% e-TeX V}\the \eTeXversion \eTeXrevision}?
+ \xdef \et@xlibhdr
+ {\detokenize {%% e-TeXlib V}\the \eTeXversion \eTeXrevision}?
+ \endgroup
+\fi
+
+% Assume extended mode, but no additional \catcodes/\defs yet;
+% set up a simple e-TeX condition-reporting system:
+
+\def \et@xinf #1{\et@xmsg {I}{#1}} %%% not currently used
+\def \et@xwarn #1{\et@xmsg {W}{#1}}
+\def \et@xerr #1#2{{\errhelp={#2}\et@xmsg {E}{#1}}}
+
+% deactivate the processing of patterns and exceptions; these will be
+% reinstated later, after the \uselanguage mechanism has been defined.
+
+\let \et@xpatterns=\patterns
+\def \patterns
+ {\begingroup
+ \everyeof={\fi \endgroup}%
+ \message {[skipping from \noexpand \patterns to end-of-file...]}%
+ \iffalse
+ }
+
+% Read "ptex.tex" (\patterns & \hyphenation will be skipped)
+
+\input ptex.tex
+
+% restore the catcode of commercial-at (@), which will just have been clobbered
+
+\catcode `\@=\catcode `\A
+
+% Assume an extended Plain environment (i.e. there are no longer any
+% restrictions on the coding techniques we can use). First prepare to
+% carry out consistency checks on the file headers and the current e-TeX
+% version/revision levels:
+
+\newread \et@xinput
+
+\def \etexhdrchk #1#2%
+ {\openin \et@xinput=#2
+ \ifeof \et@xinput
+ \chardef \etexstatus=0 % V1.0-1
+ \else
+ \begingroup
+ \endlinechar=-1
+ \readline \et@xinput to \et@xbuf
+ \closein \et@xinput
+ \def \p@rtition ##1.##2\endp@rtition {##1}% V2.1%0
+ \xdef \et@xbuf
+ {\expandafter \p@rtition \et@xbuf .\endp@rtition}% V2.1;0
+ \xdef \et@xtmp {\csname et@x#1hdr\endcsname}%
+ \xdef \et@xtmp
+ {\expandafter \p@rtition \et@xtmp .\endp@rtition}% V2.1;0
+ \endgroup
+ \ifx \et@xtmp \et@xbuf
+ \chardef \etexstatus=2 % V1.1;4
+ \else
+ \chardef \etexstatus=1 % V1.1;4
+ \fi
+ \fi
+ }
+
+% Check the version number of etex.src:
+
+\def \et@xfmtsrc {etex.src}
+\etexhdrchk {file} {\et@xfmtsrc}
+\ifcase \etexstatus
+ \et@xerr {unable to open format source file "\et@xfmtsrc";}
+ {This should not happen; please ensure that your system
+ allows a file to be opened for reading more than once
+ concurrently.%
+ }%
+\or
+ \et@xwarn {format source file "\et@xfmtsrc" has wrong header;\n
+ \ \ expected: "\et@xfilehdr"; found: "\et@xbuf";%
+ }%
+ {You are using a version of e-TeX which may be incompatible
+ with the source for the format file you are trying to
+ compile; please ensure that you have the most recent
+ version of each. I will proceed, but you should treat
+ the results with caution...%
+ }%
+\fi
+
+% Module handling now implemented (V1.0-2)
+
+\def \module #1{\iftrue}
+\let \endmodule=\fi
+
+\newtoks \et@xtoks
+
+\def \et@xl@@d #1 #2\endl@ad %%% the "#1 #2" code avoids trailing spaces
+ {\ifcsname module:#1\endcsname
+ \et@xwarn {duplicate module name "#1"}%
+ \else
+ \csname module:#1\endcsname %%% we exploit the side-effect explicitly
+ \et@xtoks=\expandafter
+ {\the \et@xtoks
+ \expandafter \let \csname module:#1\endcsname=\undefined
+ }%
+ \fi
+ }
+
+\def \et@xl@ad #1#2,#3\endl@ad %%% the #1#2 code avoids spurious leading spaces
+ {\et@xl@@d #1#2 \endl@ad
+ \if *#3*
+ \let \n@xt=\relax
+ \else
+ \def \n@xt {\et@xl@ad #3\endl@ad}%
+ \fi
+ \n@xt
+ }
+
+\def \et@xload #1 %%% needed because of the embedded \ifs...
+ {\def \module ##1%
+ {\unless
+ \ifcsname module:##1\endcsname
+ \message {Skipping module "##1";}%
+ \else
+ \message {Loading module "##1";}%
+ }%
+ \input #1
+ \def \module ##1{\iftrue}%
+ }
+
+\def \load #1 from #2 %%% selective module loading from an e-TeX library file
+ {%\etexhdrchk {lib} {#2}%
+ \ifcase \etexstatus
+ \et@xerr {unable to open library file "#2"; load aborted.}
+ {I got an <eof> on trying to open your library file;
+ please make sure it exists, is readable and is not locked.%
+ }%
+ \or
+ \et@xerr {library file "#2" has wrong header;\n
+ \ \ expected: "\et@xlibhdr"; found: "\et@xbuf";\n
+ \ \ load aborted.%
+ }%
+ {The first line of your library does not start with
+ the correct e-TeX header; you may need to update the
+ file to be compatible with the current version of
+ e-TeX, or you may simply have specified the wrong file.%
+ }%
+ \else
+ \et@xtoks={\et@xtoks={}}%
+ \et@xl@ad #1,\endl@ad
+ \et@xload {#2}
+ \the \et@xtoks
+ \fi
+ }
+
+\load interactionmodes from eptexdefs.lib %%% \load <foo>[, <bar>...] from <baz>
+
+\def \@sk #1#2#3%
+ {\ifnum \interactionmode=\interactionmodes {errorstop} %%% V2.0;15
+ \def \pr@mpt {\csname #1 \endcsname}%
+ \edef \pr@mptloop {{\escapechar=-1 \global \readline 16 to \pr@mpt}}%
+ \loop \pr@mptloop
+ \ch@ckforyn \pr@mpt {#2}%
+ \ifb@dresponse
+ \message {Please answer Y[es] or N[o]}%
+ \repeat
+ \else
+ \def \pr@mpt {#3}%
+ \ch@ckforyn \pr@mpt {#2}%
+ \fi
+ }
+
+\def \ch@ckforyn #1#2% Bernd Raichle's improved version, V1.0-1
+ {\edef \@nswer {#1}%
+ \def \p@rse ##1##2\endp@rse
+ {\lowercase {\if y##1}\b@dresponsefalse \csname #2true\endcsname
+ \else \lowercase {\if n##1}\b@dresponsefalse \csname #2false\endcsname
+ \else
+ \b@dresponsetrue
+ \fi
+ \fi
+ }%
+ \expandafter \p@rse \@nswer \endp@rse
+ }
+
+\def \usef@llback %%% V1.0-3
+ {\message {Using fallback mode (USenglish)}%
+ \addlanguage {USenglish}{hyphen}{}{2}{3}%
+ }
+
+% OK, that's all the utilities defined; on with the real work:
+% First, re-instate \patterns:
+
+\let \patterns=\et@xpatterns
+
+% Define the language-handling commands
+
+\def \et@xlang {\csname newlanguage\endcsname}
+
+\def \uselanguage #1%
+ {\ifcsname lang@#1\endcsname
+ \language=\csname lang@#1\endcsname
+ \lefthyphenmin=\csname lhm@#1\endcsname
+ \righthyphenmin=\csname rhm@#1\endcsname
+ \ifdefined \uselanguage@hook % V1.0-1
+ \uselanguage@hook {#1}% % V1.0-1
+ \fi
+ \else
+ \et@xerr {language #1 undefined.}%
+ {You are trying to use a language which has not previously
+ been defined; remember that any language you want to use
+ will need to have been specified at the time the format
+ was created.%
+ }%
+ \fi
+ }
+
+\def \addlanguage #1#2#3#4#5% language patterns exceptions lhm rhm
+ {\expandafter \et@xlang \csname lang@#1\endcsname
+ \expandafter \chardef \csname lhm@#1\endcsname=#4 % V1.0-1
+ \expandafter \chardef \csname rhm@#1\endcsname=#5 % V1.0-1
+ \uselanguage {#1}%
+ \input #2
+ \if *#3*\else \input #3 \fi
+ \ifdefined \addlanguage@hook % V1.0-4
+ \addlanguage@hook {#1}% % V1.0-4
+ \fi
+ \edef \fmtversion {\fmtversion/#1}%
+ }
+
+% Decrement \count 19, because \newlanguage will increment it again
+
+\advance \count 19 by -1
+
+% We are about to try to process a user/site-specific file "language.def",
+% which establishes a Babel-like language selection environment. Since
+% there is always a risk of a spurious file of that name being found,
+% we look for an e-TeX header in the first line. If the file can be opened,
+% but doesn't have the right header, we interrogate the user as to whether
+% to use fallback mode; in this mode, we simply establish USenglish as the
+% sole language, with the et@x patterns, exceptions and left- and right-
+% hyphen minima for TeX. If we can't interrogate the user (e.g. not in
+% \errorstopmode), or if the user elects not to use fallback, we abort;
+% if the file can't be found/opened, we use fallback unconditionally.
+
+\newif \ifb@dresponse
+\newif \ifusef@llback
+
+\def \l@ngdefnfile {language.def}
+
+\etexhdrchk {file} {\l@ngdefnfile}
+\ifcase \etexstatus
+ \et@xwarn {unable to open file "\l@ngdefnfile";}%
+ \usef@llback % unable to open "language.def"
+\or
+ \et@xwarn {file "\l@ngdefnfile" has wrong header;\n
+ \ \ expected: "\et@xfilehdr"; found: "\et@xbuf";%
+ }%
+ \@sk {Use fallback?} {usef@llback} {y}%
+ \ifusef@llback
+ \usef@llback
+ \else
+ \input \l@ngdefnfile % use "language.def" after warning
+ \fi
+\else
+ \bgroup
+ \count@=128
+ \loop\ifnum\count@<256\relax
+ \lccode\count@=\count@\advance\count@\@ne
+ \repeat
+ \count@=0
+ \loop\ifnum\count@<32\relax
+ \lccode\count@=\count@\advance\count@\@ne
+ \repeat
+ \input \l@ngdefnfile % "language.def" open & valid
+
+ \egroup % the above empty line is needed to end the argument of \input
+\fi
+
+% All that was just to set up natural language handling...
+% The "real" work of "etex.src", however, is to augment the non-primitives
+% of Plain.TeX to incorporate e-TeX specific features, and to add new
+% non-primitives to simplify access to new e-TeX specific primitives.
+
+\message {Augmenting the Plain TeX definitions:}
+\message {\string \tracingall;}
+
+\def \tracingall
+ {\tracingonline=\@ne
+ \tracingcommands=\thr@@ % plain.tex has \tw@
+ \tracingstats=\tw@
+ \tracingpages=\@ne
+ \tracingoutput=\@ne
+ \tracinglostchars=\tw@ % plain.tex has \@ne
+ \tracingmacros=\tw@
+ \tracingparagraphs=\@ne
+ \tracingrestores=\@ne
+ \showboxbreadth=\maxdimen
+ \showboxdepth=\maxdimen
+ \errorstopmode
+ \tracinggroups=\@ne
+ \tracingifs=\@ne
+ \tracingscantokens=\@ne
+ \tracingnesting=\@ne
+ \tracingassigns=\tw@
+ }
+
+\message {Adding new e-TeX definitions:}
+
+\message {\string \eTeX, \string \epTeX, }
+\def \eTeX {$\varepsilon$-\TeX} %%% the simple version, not suitable for maths;
+ %%% a more sophisticated one may find its way
+ %%% into "eptexdefs.lib" in due course.
+\def \epTeX {$\varepsilon$-p\TeX}
+
+\message {\string \loggingall,}
+\def \loggingall {\tracingall \tracingonline=\z@}
+
+\message {\string \tracingnone,}
+\def \tracingnone
+ {\tracingassigns=\z@
+ \tracingnesting=\z@
+ \tracingscantokens=\z@
+ \tracingifs=\z@
+ \tracinggroups=\z@
+ \showboxdepth=\thr@@
+ \showboxbreadth=5
+ \tracingrestores=\z@
+ \tracingparagraphs=\z@
+ \tracingmacros=\z@
+ \tracinglostchars=\@ne
+ \tracingoutput=\z@
+ \tracingpages=\z@
+ \tracingstats=\z@
+ \tracingcommands=\z@
+ \tracingonline=\z@
+ }
+
+\message {register allocation;}
+
+\newcount \et@xins % our insertion counter (\insc@unt is used differently)
+
+% We have to adjust the Plain TeX register allocation counts for our
+% slightly modified book-keeping:
+
+\advance \count 10 by 1 % \count 10=23 % allocates \count registers 23, 24, ...
+\advance \count 11 by 1 % \count 11=10 % allocates \dimen registers 10, 11, ...
+\advance \count 12 by 1 % \count 12=10 % allocates \skip registers 10, 11, ...
+\advance \count 13 by 1 % \count 13=10 % allocates \muskip registers 10, 11, ...
+\advance \count 14 by 1 % \count 14=10 % allocates \box registers 10, 11, ...
+\advance \count 15 by 1 % \count 15=10 % allocates \toks registers 10, 11, ...
+\advance \count 16 by 1 % \count 16=0 % allocates input streams 0, 1, ...
+\advance \count 17 by 1 % \count 17=0 % allocates output streams 0, 1, ...
+\advance \count 18 by 1 % \count 18=4 % allocates math families 4, 5, ...
+\advance \count 19 by 1 % \count 19=0 % allocates \language codes 0, 1, ...
+
+\et@xins=\insc@unt % \et@xins=255 % allocates insertions 254, 253, ...
+
+% We don't change the Plain TeX definitions of \newcount, etc., but the
+% \alloc@ macro doing the actual work is redefined.
+
+% When the normal register pool for \count, \dimen, \skip, \muskip,
+% \box, or \toks registers is exhausted, we switch to the extended pool.
+
+\def \alloc@ #1#2#3#4#5%
+ {\ifnum \count 1#1 < #4% make sure there's still room
+ \allocationnumber=\count 1#1
+ \global \advance \count 1#1 by \@ne
+ \global #3#5=\allocationnumber
+ \wlog {\string #5=\string #2\the \allocationnumber}%
+ \else \ifnum #1 < 6
+ \begingroup \escapechar=\m@ne
+ \expandafter \alloc@@ \expandafter {\string #2}#5%
+ \else
+ \errmessage {No room for a new #2}%
+ \fi
+ \fi
+ }
+
+% The \expandafter construction used here allows the generation of
+% \newcount and \globcount from #1=count. Moreover (and more important)
+% this construction avoids the appearance of \outer macros inside
+% macro definitions or conditionals.
+
+\def \alloc@@ #1#2%
+ {\endgroup % restore \escapechar
+ \message {Normal \csname#1\endcsname register pool exhausted,
+ switching to extended pool.}%
+ \global \expandafter
+ \let \csname new#1\expandafter \endcsname \csname glob#1\endcsname
+ \csname new#1\endcsname#2%
+ }
+
+% We do change the Plain TeX definition of \newinsert
+
+\outer \def \newinsert #1%make sure there's still room for ...
+ {\ch@ck 0 \et@xins \count % ... a \count, ...
+ {\ch@ck 1 \et@xins \dimen % ... \dimen, ...
+ {\ch@ck 2 \et@xins \skip % ... \skip, ...
+ {\ch@ck 4 \et@xins \box % ... and \box register
+ {\global \advance \et@xins by \m@ne
+ \unless
+ \ifnum \insc@unt < \et@xins
+ \global \insc@unt=\et@xins
+ \fi
+ \allocationnumber=\et@xins
+ \global \chardef #1=\allocationnumber
+ \wlog {\string #1=\string \insert \the \allocationnumber}%
+ }%
+ }%
+ }%
+ }%
+ }
+
+\def \ch@ck #1#2#3#4%
+ {\ifnum \count 1#1 < #2#4\else \errmessage {No room for a new #3}\fi}
+
+% And we define \reserveinserts, so that you can say \reserveinserts{17}
+% in order to reserve room for up to 17 additional insertion classes that will
+% not be taken away by \newcount, \newdimen, \newskip, or \newbox.
+
+\outer \def \reserveinserts#1%
+ {\global \insc@unt=\numexpr \et@xins \ifnum #1 > \z@ -#1\fi \relax}
+
+\message {extended register allocation;}
+
+% Now, we define \globcount, \globbox, etc., so that you can say
+% \globcount\foo and \foo will be defined (with \countdef) to be the
+% next count register from the vastly larger but somewhat less efficient
+% extended register pool. We also define \loccount, etc., but these
+% register definitions are local to the current group.
+
+\count 260=277 % globally allocates \count registers 277, 278, ...
+\count 261=\@cclvi % globally allocates \dimen registers 256, 257, ...
+\count 262=\@cclvi % globally allocates \skip registers 256, 257, ...
+\count 263=\@cclvi % globally allocates \muskip registers 256, 257, ...
+\count 264=\@cclvi % globally allocates \box registers 256, 257, ...
+\count 265=\@cclvi % globally allocates \toks registers 256, 257, ...
+\count 266=\@ne % globally allocates \marks classes 1, 2, ...
+
+% There may be (u)pTeX + e-pTeX which does not have
+% FAM256 patch (e.g. ptex-ng) (2016/12/06)
+\ifx \undefined \omathchar
+ \def \et@xmaxregs {32768}
+\else
+ \def \et@xmaxregs {65536} % FAM256 patched (2016/05/16)
+\fi
+
+\count 270=\et@xmaxregs % locally allocates \count registers 65535, 65534, ...
+\count 271=\et@xmaxregs % ditto for \dimen registers
+\count 272=\et@xmaxregs % ditto for \skip registers
+\count 273=\et@xmaxregs % ditto for \muskip registers
+\count 274=\et@xmaxregs % ditto for \box registers
+\count 275=\et@xmaxregs % ditto for \toks registers
+\count 276=\et@xmaxregs % ditto for \marks classes
+
+% \count registers 256-259 and 267-269 are not (yet) used
+
+\outer \def \globcount {\et@xglob 0 \count \countdef}
+ \def \loccount {\et@xloc 0 \count \countdef}
+\outer \def \globdimen {\et@xglob 1 \dimen \dimendef}
+ \def \locdimen {\et@xloc 1 \dimen \dimendef}
+\outer \def \globskip {\et@xglob 2 \skip \skipdef}
+ \def \locskip {\et@xloc 2 \skip \skipdef}
+\outer \def \globmuskip {\et@xglob 3 \muskip \muskipdef}
+ \def \locmuskip {\et@xloc 3 \muskip \muskipdef}
+\outer \def \globbox {\et@xglob 4 \box \mathchardef}
+ \def \locbox {\et@xloc 4 \box \mathchardef}
+\outer \def \globtoks {\et@xglob 5 \toks \toksdef}
+ \def \loctoks {\et@xloc 5 \toks \toksdef}
+\outer \def \globmarks {\et@xglob 6 \marks \mathchardef}
+ \def \locmarks {\et@xloc 6 \marks \mathchardef}
+
+\let\newmark=\globmarks %%% 2.0;14
+\let\newmarks=\globmarks
+
+\def \et@xglob #1#2#3#4%
+ {\et@xchk #1#2% make sure there's still room
+ {\allocationnumber=\count 26#1
+ \global \advance \count 26#1 by \@ne
+ \global #3#4=\allocationnumber
+ \wlog {\string #4=\string #2\the \allocationnumber}%
+ }%
+ }
+
+\def \et@xloc#1#2#3#4%
+ {\et@xchk #1#2% make sure there's still room
+ {\advance \count 27#1 by \m@ne
+ \allocationnumber=\count 27#1
+ #3#4=\allocationnumber
+ \wlog {\string #4=\string #2\the \allocationnumber \space (local)}%
+ }%
+ }
+
+\def \et@xchk #1#2#3%
+ {\ifnum \count 26#1 < \count 27#1
+ #3%
+ \else
+ \errmessage {No room for a new #2}%
+ \fi
+ }
+
+% Next we define \globcountblk, \loccountblk, etc., so that one can
+% write \globcountblk\foo{17} and \foo will be defined (with \mathchardef)
+% as the first (the zeroth?) of a block of 17 consecutive registers.
+% Thus the user is intended to reference elements <\foo+0> to <\foo+n-1>,
+% where n is the length of the block allocated.
+
+\outer \def \globcountblk {\et@xgblk 0 \count}
+ \def \loccountblk {\et@xlblk 0 \count}
+\outer \def \globdimenblk {\et@xgblk 1 \dimen}
+ \def \locdimenblk {\et@xlblk 1 \dimen}
+\outer \def \globskipblk {\et@xgblk 2 \skip}
+ \def \locskipblk {\et@xlblk 2 \skip}
+\outer \def \globmuskipblk {\et@xgblk 3 \muskip}
+ \def \locmuskipblk {\et@xlblk 3 \muskip}
+\outer \def \globboxblk {\et@xgblk 4 \box}
+ \def \locboxblk {\et@xlblk 4 \box}
+\outer \def \globtoksblk {\et@xgblk 5 \toks}
+ \def \loctoksblk {\et@xlblk 5 \toks}
+\outer \def \globmarksblk {\et@xgblk 6 \marks}
+ \def \locmarksblk {\et@xlblk 6 \marks}
+
+% And, both to provide a higher-level interface to the block allocation
+% scheme, and to demonstrate possible applications of the new \...expr
+% primitives, we also define \globcountvector and \loccountvector (etc)
+% which allow the user to access elements with embedded arithmetic, as in
+
+% \globcountvector \foo {12}
+% \foo {\count 0 + 3} = \foo {\count 1 * 2}
+
+\outer \def \globcountvector {\et@xgvec 0 \count}
+ \def \loccountvector {\et@xlvec 0 \count}
+\outer \def \globdimenvector {\et@xgvec 1 \dimen}
+ \def \locdimenvector {\et@xlvec 1 \dimen}
+\outer \def \globskipvector {\et@xgvec 2 \skip}
+ \def \locskipvector {\et@xlvec 2 \skip}
+\outer \def \globmuskipvector {\et@xgvec 3 \muskip}
+ \def \locmuskipvector {\et@xlvec 3 \muskip}
+\outer \def \globboxvector {\et@xgvec 4 \box}
+ \def \locboxvector {\et@xlvec 4 \box}
+\outer \def \globtoksvector {\et@xgvec 5 \toks}
+ \def \loctoksvector {\et@xlvec 5 \toks}
+\outer \def \globmarksvector {\et@xgvec 6 \marks}
+ \def \locmarksvector {\et@xlvec 6 \marks}
+
+\def \et@xgblk #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\allocationnumber=\count 26#1
+ \global \advance \count 26#1 by #4%
+ \global \mathchardef #3=\allocationnumber
+ \wlog {\string #3=\string #2blk{\number #4} at \the \allocationnumber}%
+ }%
+ }
+
+\def \et@xlblk #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\advance \count 27#1 by -#4%
+ \allocationnumber=\count 27#1
+ \mathchardef #3=\allocationnumber
+ \wlog {\string #3=\string #2blk{\number #4}
+ at \the \allocationnumber \space (local)%
+ }%
+ }%
+ }
+
+\begingroup
+\catcode `\# = 12
+\gdef \et@xhash {#}
+\endgroup
+
+\def \et@xgvec #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\allocationnumber=\count 26#1
+ \global \advance \count 26#1 by #4%
+ \ifx #2\box
+ \def \2{}%
+ \else \ifx #2\marks
+ \def \2{}%
+ \else
+ \def \2{\string #2}%
+ \fi
+ \fi
+ \xdef #3##1{\2 \noexpand \numexpr \the \allocationnumber+##1\relax}%
+ \wlog {\string #3 {\et@xhash 1} =
+ \2 {\the \allocationnumber+\et@xhash 1} (global #2 vector)%
+ }%
+ }%
+ }
+
+\def \et@xlvec #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\advance \count 27#1 by -#4%
+ \allocationnumber=\count27#1
+ \mathchardef #3=\allocationnumber
+ \ifx #2\box
+ \def \2{}%
+ \else \ifx #2\marks
+ \def \2{}%
+ \else
+ \def \2{\string #2}%
+ \fi
+ \fi
+ \edef #3##1{\2 \noexpand \numexpr \the \allocationnumber+##1\relax}%
+ \wlog {\string #3 {\et@xhash 1} =
+ \2 {\the \allocationnumber+\et@xhash 1} (local #2 vector)%
+ }%
+ }%
+ }
+
+\def \et@xchkblk #1#2#3#4%
+ {\ifnum #3 < \z@
+ \errmessage {Negative register block size \number #3}%
+ \else \ifnum \numexpr \count 26#1+#3 > \count 27#1
+ \errmessage {No room for new #2block of size \number#3}%
+ \else
+ #4%
+ \fi
+ \fi
+ }
+
+% In an attempt to reduce the overheads of e-TeX, we recycle all possible
+% resources, including (as a penultimate step) the recycler itself...
+% The user can circumvent (or force) this during format creation,
+% by \letting \ifrecycle=\iffalse (or \iftrue, to force it).
+
+% As this file has grown by accretion, it is possible that we are no
+% longer recycling all the resources we could; this will be investigated.
+
+\def \mayber@cycle {\expandafter \ifrecycle}
+\def \forcer@cycle {\expandafter \iftrue}
+
+\ifdefined \ifrecycle
+ \mayber@cycle
+\else
+ \forcer@cycle
+\fi
+
+% There's a concealed \if... lurking here, which explains the
+% strange indentation of the code that follows (V1.0-1)
+
+ \def \r@cycle #1%
+ {\ifdefined #1
+ \message {\string #1,}\let #1=\und@fined
+ \else
+ \message {\string #1 (not defined),}
+ \fi
+ }
+ {\newlinechar=`\! \message {!Recycling:}}
+
+ \r@cycle \addlanguage
+ \r@cycle \@nswer
+ \r@cycle \@sk
+ \r@cycle \b@dresponsetrue
+ \r@cycle \b@dresponsefalse
+ \r@cycle \ch@ckforyn
+ \r@cycle \mayber@cycle
+ \r@cycle \et@xabort
+ \r@cycle \et@xbuf
+ \r@cycle \et@xfmtsrc
+ \r@cycle \et@xfilehdr
+ \r@cycle \et@xinf
+ \r@cycle \et@xpatterns
+% \r@cycle \ifb@dresponse
+% \r@cycle \ifusef@llback
+ \r@cycle \l@ngdefnfile
+ \r@cycle \n@xt
+ \r@cycle \p@rse
+ \r@cycle \pr@mpt
+ \r@cycle \pr@mptloop
+ \r@cycle \forcer@cycle
+ \r@cycle \usef@llback
+ \r@cycle \usef@llbacktrue
+ \r@cycle \usef@llbackfalse
+
+% The following are retained, since they may be needed by user code; with a few
+% (regrettable) exceptions, all of these are given the \etex or \et@x prefix,
+% to reduce as far as possible the risk of them clashing with other used-defined
+% names.
+
+% The e-TeX team are willing to change the names of the remaining, at-risk,
+% control sequences if it is demonstrated that the current names cause problems
+% or difficulties.
+
+ \def \r@tain #1%
+ {\ifdefined #1
+ \message {\string #1,}
+ \else
+ \message {\string #1 (not defined),}
+ \fi
+ }
+ {\newlinechar=`\! \message {!Retaining:}}
+
+ \r@tain \et@xerr
+ \r@tain \et@xinput
+ \r@tain \et@xlibhdr
+ \r@tain \et@xmsg
+ \r@tain \et@xtoks
+ \r@tain \et@xwarn
+ \r@tain \et@xl@@d
+ \r@tain \et@xl@ad
+ \r@tain \et@xload
+ \r@tain \et@xlang
+ \r@tain \et@xhash
+ \r@tain \eTeX
+ \r@tain \epTeX
+ \r@tain \etexhdrchk
+% \r@tain \endmodule
+ \r@tain \etexstatus
+ \r@tain \module
+ \r@tain \uselanguage
+
+ \r@cycle \r@tain
+ \r@cycle \r@cycle
+
+\fi
+
+% And finally re-catcode commercial-at
+
+\catcode `\@=12
+
+\dump
+\endinput
+
diff --git a/language/japanese/ptex-base/eptexdefs.lib b/language/japanese/ptex-base/eptexdefs.lib
new file mode 100644
index 0000000000..6a4df97e7e
--- /dev/null
+++ b/language/japanese/ptex-base/eptexdefs.lib
@@ -0,0 +1,92 @@
+%% e-pTeXlib (2018/03/12)
+%% derived from $TEXMF/tex/plain/etex/etexdefs.lib (V2.0;8 24-MAR-1998)
+
+\module {grouptypes}
+\def \grouptypes #1{\csname gr@up: #1\endcsname}
+\def \etexgroupdef #1
+ {\expandafter \expandafter \expandafter \chardef \grouptypes {#1}}
+\etexgroupdef bottomlevel = 0 %%% {code for the outside world}
+\etexgroupdef simple = 1 %%% {code for local structure only}
+\etexgroupdef hbox = 2 %%% {code for `\.{\\hbox}\grp'}
+\etexgroupdef adjustedhbox = 3 %%% {code for `\.{\\hbox}\grp' in vertical mode}
+\etexgroupdef vbox = 4 %%% {code for `\.{\\vbox}\grp'}
+\etexgroupdef vtop = 5 %%% {code for `\.{\\vtop}\grp'}
+\etexgroupdef align = 6 %%% {code for `\.{\\halign}\grp', `\.{\\valign}\grp'}
+\etexgroupdef noalign = 7 %%% {code for `\.{\\noalign}\grp'}
+\etexgroupdef output = 8 %%% {code for output routine}
+\etexgroupdef math = 9 %%% {code for, e.g, `\.{\char'136}\grp'}
+\etexgroupdef disc = 10 %%% {code for `\.{\\discretionary}\grp\grp\grp'}
+\etexgroupdef insert = 11 %%% {code for `\.{\\insert}\grp', `\.{\\vadjust}\grp'}
+\etexgroupdef vcenter = 12 %%% {code for `\.{\\vcenter}\grp'}
+\etexgroupdef mathchoice = 13 %%% {code for `\.{\\mathchoice}\grp\grp\grp\grp'}
+\etexgroupdef semisimple = 14 %%% {code for `\.{\\begingroup...\\endgroup}'}
+\etexgroupdef mathshift = 15 %%% {code for `\.{\$...\$}'}
+\etexgroupdef mathleft = 16 %%% {code for `\.{\\left...\\right}'}
+\endmodule
+
+\module {interactionmodes}
+\def \interactionmodes #1{\csname m@de: #1\endcsname}
+\def \etexmodedef #1
+ {\expandafter \expandafter \expandafter \chardef \interactionmodes {#1}}
+\etexmodedef batch = 0 %%% {omits all stops and omits terminal output}
+\etexmodedef nonstop = 1 %%% {omits all stops}
+\etexmodedef scroll = 2 %%% {omits error stops}
+\etexmodedef errorstop = 3 %%% {stops at every opportunity to interact}
+\endmodule
+
+\module {nodetypes}
+\def \nodetypes #1{\csname n@de: #1\endcsname}
+\def \etexnodedef #1
+ {\expandafter \expandafter \expandafter \chardef \nodetypes {#1}}
+\etexnodedef char = 0 %%% {|type| of character nodes}
+\etexnodedef hlist = 1 %%% {|type| of hlist nodes}
+\etexnodedef vlist = 2 %%% {|type| of vlist nodes}
+\etexnodedef rule = 3 %%% {|type| of rule nodes}
+\etexnodedef ins = 4 %%% {|type| of insertion nodes}
+\etexnodedef mark = 5 %%% {|type| of a mark node}
+\etexnodedef adjust = 6 %%% {|type| of an adjust node}
+\etexnodedef ligature = 7 %%% {|type| of a ligature node}
+\etexnodedef disc = 8 %%% {|type| of a discretionary node}
+\etexnodedef whatsit = 9 %%% {|type| of special extension nodes}
+\etexnodedef math = 10 %%% {|type| of a math node}
+\etexnodedef glue = 11 %%% {|type| of that points to a glue specification}
+\etexnodedef kern = 12 %%% {|type| of a kern node}
+\etexnodedef penalty = 13 %%% {|type| of a penalty node}
+\etexnodedef unset = 14 %%% {|type| for an unset node}
+\etexnodedef maths = 15 %%% {|type| of nodes that occur only in maths mode}
+\endmodule
+
+\module {iftypes}
+\def \conditionaltypes #1{\csname @f: #1\endcsname}
+\def \etexifdef #1
+ {\expandafter \expandafter \expandafter \chardef \conditionaltypes {#1}}
+\etexifdef charif = 1
+\etexifdef catif = 2
+\etexifdef numif = 3
+\etexifdef dimif = 4
+\etexifdef oddif = 5
+\etexifdef vmodeif = 6
+\etexifdef hmodeif = 7
+\etexifdef mmodeif = 8
+\etexifdef innerif = 9
+\etexifdef voidif = 10
+\etexifdef hboxif = 11
+\etexifdef vboxif = 12
+\etexifdef xif = 13
+\etexifdef eofif = 14
+\etexifdef trueif = 15
+\etexifdef falseif = 16
+\etexifdef caseif = 17
+\etexifdef definedif = 18
+\etexifdef csnameif = 19
+\etexifdef fontcharif = 20
+\etexifdef tdirif = 21
+\etexifdef ydirif = 22
+\etexifdef ddirif = 23
+\etexifdef mdirif = 24
+\etexifdef tboxif = 25
+\etexifdef yboxif = 26
+\etexifdef dboxif = 27
+\etexifdef mboxif = 28
+\etexifdef pdfprimitiveif = 29
+\endmodule
diff --git a/language/japanese/ptex-base/kinsoku.tex b/language/japanese/ptex-base/kinsoku.tex
new file mode 100644
index 0000000000..2a8bbf3a3f
--- /dev/null
+++ b/language/japanese/ptex-base/kinsoku.tex
@@ -0,0 +1,274 @@
+% (Last update: 2017/08/05 texjporg)
+%
+% $B9TF,!"9TKv6XB'%Q%i%a!<%?(B
+%
+% 1byte characters
+\prebreakpenalty`!=10000
+\prebreakpenalty`"=10000
+\postbreakpenalty`\#=500
+\postbreakpenalty`\$=500
+\prebreakpenalty`\%=500
+\prebreakpenalty`\&=500
+\postbreakpenalty`\`=10000
+\prebreakpenalty`'=10000
+\prebreakpenalty`)=10000
+\postbreakpenalty`(=10000
+\prebreakpenalty`*=500
+\prebreakpenalty`+=500
+\prebreakpenalty`-=10000
+\prebreakpenalty`.=10000
+\prebreakpenalty`,=10000
+\prebreakpenalty`/=500
+\prebreakpenalty`;=10000
+\prebreakpenalty`?=10000
+\prebreakpenalty`:=10000
+\prebreakpenalty`]=10000
+\postbreakpenalty`[=10000
+%$BA43QJ8;z(B
+\prebreakpenalty`$B!"(B=10000
+\prebreakpenalty`$B!#(B=10000
+\prebreakpenalty`$B!$(B=10000
+\prebreakpenalty`$B!%(B=10000
+\prebreakpenalty`$B!&(B=10000
+\prebreakpenalty`$B!'(B=10000
+\prebreakpenalty`$B!((B=10000
+\prebreakpenalty`$B!)(B=10000
+\prebreakpenalty`$B!*(B=10000
+\prebreakpenalty\jis"212B=10000
+\prebreakpenalty\jis"212C=10000
+\prebreakpenalty\jis"212D=10000
+\postbreakpenalty\jis"212E=10000
+\prebreakpenalty\jis"2139=10000
+\prebreakpenalty\jis"2144=250
+\prebreakpenalty\jis"2145=250
+\postbreakpenalty\jis"2146=10000
+\prebreakpenalty\jis"2147=5000
+\postbreakpenalty\jis"2148=5000
+\prebreakpenalty\jis"2149=5000
+\prebreakpenalty`$B!K(B=10000
+\postbreakpenalty`$B!J(B=10000
+\prebreakpenalty`$B!Q(B=10000
+\postbreakpenalty`$B!P(B=10000
+\prebreakpenalty`$B!O(B=10000
+\postbreakpenalty`$B!N(B=10000
+\postbreakpenalty`$B!F(B=10000
+\prebreakpenalty`$B!G(B=10000
+\postbreakpenalty\jis"214C=10000
+\prebreakpenalty\jis"214D=10000
+\postbreakpenalty\jis"2152=10000
+\prebreakpenalty\jis"2153=10000
+\postbreakpenalty\jis"2154=10000
+\prebreakpenalty\jis"2155=10000
+\postbreakpenalty\jis"2156=10000
+\prebreakpenalty\jis"2157=10000
+\postbreakpenalty\jis"2158=10000
+\prebreakpenalty\jis"2159=10000
+\postbreakpenalty\jis"215A=10000
+\prebreakpenalty\jis"215B=10000
+\prebreakpenalty`$B!<(B=10000
+\prebreakpenalty`$B!\(B=200
+\prebreakpenalty`$B!](B=200
+\prebreakpenalty`$B!a(B=200
+\postbreakpenalty`$B!t(B=200
+\postbreakpenalty`$B!p(B=200
+\prebreakpenalty`$B!s(B=200
+\prebreakpenalty`$B!u(B=200
+\prebreakpenalty`$B$!(B=150
+\prebreakpenalty`$B$#(B=150
+\prebreakpenalty`$B$%(B=150
+\prebreakpenalty`$B$'(B=150
+\prebreakpenalty`$B$)(B=150
+\prebreakpenalty`$B$C(B=150
+\prebreakpenalty`$B$c(B=150
+\prebreakpenalty`$B$e(B=150
+\prebreakpenalty`$B$g(B=150
+\prebreakpenalty\jis"246E=150
+\prebreakpenalty`$B%!(B=150
+\prebreakpenalty`$B%#(B=150
+\prebreakpenalty`$B%%(B=150
+\prebreakpenalty`$B%'(B=150
+\prebreakpenalty`$B%)(B=150
+\prebreakpenalty`$B%C(B=150
+\prebreakpenalty`$B%c(B=150
+\prebreakpenalty`$B%e(B=150
+\prebreakpenalty`$B%g(B=150
+\prebreakpenalty\jis"256E=150
+\prebreakpenalty\jis"2575=150
+\prebreakpenalty\jis"2576=150
+%
+% xspcode
+\xspcode`(=1
+\xspcode`)=2
+\xspcode`[=1
+\xspcode`]=2
+\xspcode``=1
+\xspcode`'=2
+\xspcode`;=2
+\xspcode`,=2
+\xspcode`.=2
+% xspcode for 8-bit Latin (Added 2016/06/10)
+\xspcode"80=3
+\xspcode"81=3
+\xspcode"82=3
+\xspcode"83=3
+\xspcode"84=3
+\xspcode"85=3
+\xspcode"86=3
+\xspcode"87=3
+\xspcode"88=3
+\xspcode"89=3
+\xspcode"8A=3
+\xspcode"8B=3
+\xspcode"8C=3
+\xspcode"8D=3
+\xspcode"8E=3
+\xspcode"8F=3
+\xspcode"90=3
+\xspcode"91=3
+\xspcode"92=3
+\xspcode"93=3
+\xspcode"94=3
+\xspcode"95=3
+\xspcode"96=3
+\xspcode"97=3
+\xspcode"98=3
+\xspcode"99=3
+\xspcode"9A=3
+\xspcode"9B=3
+\xspcode"9C=3
+\xspcode"9D=3
+\xspcode"9E=3
+\xspcode"9F=3
+\xspcode"A0=3
+\xspcode"A1=3
+\xspcode"A2=3
+\xspcode"A3=3
+\xspcode"A4=3
+\xspcode"A5=3
+\xspcode"A6=3
+\xspcode"A7=3
+\xspcode"A8=3
+\xspcode"A9=3
+\xspcode"AA=3
+\xspcode"AB=3
+\xspcode"AC=3
+\xspcode"AD=3
+\xspcode"AE=3
+\xspcode"AF=3
+\xspcode"B0=3
+\xspcode"B1=3
+\xspcode"B2=3
+\xspcode"B3=3
+\xspcode"B4=3
+\xspcode"B5=3
+\xspcode"B6=3
+\xspcode"B7=3
+\xspcode"B8=3
+\xspcode"B9=3
+\xspcode"BA=3
+\xspcode"BB=3
+\xspcode"BC=3
+\xspcode"BD=3
+\xspcode"BE=3
+\xspcode"BF=3
+\xspcode"C0=3
+\xspcode"C1=3
+\xspcode"C2=3
+\xspcode"C3=3
+\xspcode"C4=3
+\xspcode"C5=3
+\xspcode"C6=3
+\xspcode"C7=3
+\xspcode"C8=3
+\xspcode"C9=3
+\xspcode"CA=3
+\xspcode"CB=3
+\xspcode"CC=3
+\xspcode"CD=3
+\xspcode"CE=3
+\xspcode"CF=3
+\xspcode"D0=3
+\xspcode"D1=3
+\xspcode"D2=3
+\xspcode"D3=3
+\xspcode"D4=3
+\xspcode"D5=3
+\xspcode"D6=3
+\xspcode"D7=3
+\xspcode"D8=3
+\xspcode"D9=3
+\xspcode"DA=3
+\xspcode"DB=3
+\xspcode"DC=3
+\xspcode"DD=3
+\xspcode"DE=3
+\xspcode"DF=3
+\xspcode"E0=3
+\xspcode"E1=3
+\xspcode"E2=3
+\xspcode"E3=3
+\xspcode"E4=3
+\xspcode"E5=3
+\xspcode"E6=3
+\xspcode"E7=3
+\xspcode"E8=3
+\xspcode"E9=3
+\xspcode"EA=3
+\xspcode"EB=3
+\xspcode"EC=3
+\xspcode"ED=3
+\xspcode"EE=3
+\xspcode"EF=3
+\xspcode"F0=3
+\xspcode"F1=3
+\xspcode"F2=3
+\xspcode"F3=3
+\xspcode"F4=3
+\xspcode"F5=3
+\xspcode"F6=3
+\xspcode"F7=3
+\xspcode"F8=3
+\xspcode"F9=3
+\xspcode"FA=3
+\xspcode"FB=3
+\xspcode"FC=3
+\xspcode"FD=3
+\xspcode"FE=3
+\xspcode"FF=3
+%
+% inhibitxspcode
+\inhibitxspcode`$B!"(B=1
+\inhibitxspcode`$B!#(B=1
+\inhibitxspcode`$B!$(B=1
+\inhibitxspcode`$B!%(B=1
+\inhibitxspcode`$B!((B=1
+\inhibitxspcode`$B!)(B=1
+\inhibitxspcode`$B!K(B=1
+\inhibitxspcode`$B!J(B=2
+\inhibitxspcode`$B!O(B=1
+\inhibitxspcode`$B!N(B=2
+\inhibitxspcode`$B!Q(B=1
+\inhibitxspcode`$B!P(B=2
+\inhibitxspcode`$B!F(B=2
+\inhibitxspcode`$B!G(B=1
+\inhibitxspcode`$B!H(B=2
+\inhibitxspcode`$B!I(B=1
+\inhibitxspcode`$B!L(B=2
+\inhibitxspcode`$B!M(B=1
+\inhibitxspcode`$B!R(B=2
+\inhibitxspcode`$B!S(B=1
+\inhibitxspcode`$B!T(B=2
+\inhibitxspcode`$B!U(B=1
+\inhibitxspcode`$B!V(B=2
+\inhibitxspcode`$B!W(B=1
+\inhibitxspcode`$B!X(B=2
+\inhibitxspcode`$B!Y(B=1
+\inhibitxspcode`$B!Z(B=2
+\inhibitxspcode`$B![(B=1
+\inhibitxspcode`$B!=(B=0
+\inhibitxspcode`$B!A(B=0
+\inhibitxspcode`$B!D(B=0
+\inhibitxspcode`$B!o(B=0
+\inhibitxspcode`$B!k(B=1
+\inhibitxspcode`$B!l(B=1
+\inhibitxspcode`$B!m(B=1
diff --git a/language/japanese/ptex-base/ptex.ini b/language/japanese/ptex-base/ptex.ini
new file mode 100644
index 0000000000..7f064ce964
--- /dev/null
+++ b/language/japanese/ptex-base/ptex.ini
@@ -0,0 +1,4 @@
+%% for pTeX (ASCII Nihongo TeX)
+\input ptex.tex
+\dump
+\endinput
diff --git a/language/japanese/ptex-base/ptex.tex b/language/japanese/ptex-base/ptex.tex
new file mode 100644
index 0000000000..b77d13f6ba
--- /dev/null
+++ b/language/japanese/ptex-base/ptex.tex
@@ -0,0 +1,68 @@
+% This is the pTeX format (community edition)
+% last update: texjporg 2017/10/18
+%
+% (C)copyright ASCII corporation,1987,1995,1997
+%
+\input plain
+\catcode`@=11 % at signs act like letters
+\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
+ \nobreak#1\@sf\vfootnote{#1}}
+\catcode`@=12 % at signs are no longer letters
+%
+\font\tenmin=min10 % mincho(KANJI)
+\font\preloaded=min9
+\font\preloaded=min8
+\font\sevenmin=min7
+\font\preloaded=min6
+\font\fivemin=min5
+%
+\font\tengt=goth10 % gothic(KANJI)
+\font\preloaded=goth9
+\font\preloaded=goth8
+\font\sevengt=goth7
+\font\preloaded=goth6
+\font\fivegt=goth5
+%
+\font\tentmin=tmin10 % mincho(KANJI,tate)
+\font\preloaded=tmin9
+\font\preloaded=tmin8
+\font\seventmin=tmin7
+\font\preloaded=tmin6
+\font\fivetmin=tmin5
+%
+\font\tentgt=tgoth10 % gothic(KANJI,tate)
+\font\preloaded=tgoth9
+\font\preloaded=tgoth8
+\font\seventgt=tgoth7
+\font\preloaded=tgoth6
+\font\fivetgt=tgoth5
+%
+\newfam\minfam % \min is family 8
+\newfam\gtfam % \gt is family 9
+\newfam\tminfam % \tmin is family 10
+\newfam\tgtfam % \tgt is family 11
+%
+\def\mc{\iftdir\fam\tminfam\else\fam\minfam\fi\tentmin\tenmin}%
+\textfont\minfam=\tenmin\scriptfont\minfam=\sevenmin%
+\scriptscriptfont\minfam=\fivemin
+\textfont\tminfam=\tentmin\scriptfont\tminfam=\seventmin%
+\scriptscriptfont\tminfam=\fivetmin
+%
+\def\gt{\iftdir\fam\tgtfam\else\fam\gtfam\fi\tentgt\tengt}%
+\textfont\gtfam=\tengt\scriptfont\gtfam=\sevengt%
+\scriptscriptfont\gtfam=\fivegt
+\textfont\tgtfam=\tentgt\scriptfont\tgtfam=\seventgt%
+\scriptscriptfont\tgtfam=\fivetgt
+%
+\input kinsoku
+\mc % select mincho font
+\kanjiskip=0pt plus .4pt minus .4pt
+%\xkanjiskip=2.5pt plus 1pt minus 1pt
+\xkanjiskip=.25zw plus 1pt minus 1pt
+\autospacing\autoxspacing
+\jcharwidowpenalty=500
+%
+% identifies the current format based on plain
+\def\fmtname{ptex}
+\edef\fmtversion{\fmtversion\space p1.0c}
diff --git a/language/japanese/ptex/COPYRIGHT b/language/japanese/ptex/COPYRIGHT
new file mode 100644
index 0000000000..336e241dce
--- /dev/null
+++ b/language/japanese/ptex/COPYRIGHT
@@ -0,0 +1,25 @@
+Copyright (C) 1987, 1995 ASCII Corporation.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. Neither the name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/ptex/COPYRIGHT.jis b/language/japanese/ptex/COPYRIGHT.jis
new file mode 100644
index 0000000000..303299130f
--- /dev/null
+++ b/language/japanese/ptex/COPYRIGHT.jis
@@ -0,0 +1,32 @@
+($BCm(B) $B0J2<$O!"1QJ8$N7@Ls>r9`$rF|K\8l$KK]Lu$7$?$b$N$G$"$k!#F|K\8lLu$H1Q(B
+$B8lI=5-$N4V$Ksrsw$,$"$C$?>l9g$K$O!"7@Ls>r7o$O1Q8lI=5-$K$h$k7@Ls>r9`$K=>(B
+$B$&!#(B
+
+$B!ZCx:n8"I=<(![(B
+Copyright (C) 1987, 1995 ASCII Corporation.
+All rights reserved.
+
+$B!Z7@Ls>r7o![(B
+$B2~JQ$NM-L5$K$+$+$o$i$:!"K\%=%U%H%&%'%"$N%=!<%9%3!<%I5Z$S%P%$%J%j!<%3!<(B
+$B%I7A<0$K$h$k:FHRI[5Z$S;HMQ$O!"<!$N7@Ls>r7o$N2<$K5vBz$5$l$k!#(B
+1. $B%=!<%9%3!<%I$N:FHRI[$K:]$7$F$O!">e5-$N!ZCx:n8"I=<(![!"$3$N!Z7@Ls>r(B
+ $B7o![5Z$S<!$N!ZLH@U>r9`![$NI=5-$r!"0z$-B3$-0];}$7$FL@5-$7$J$1$l$P$J(B
+ $B$i$J$$!#(B
+2. $B%P%$%J%j!<7A<0$K$h$k:FHRI[$K:]$7$F$O!">e5-$N!ZCx:n8"I=<(![!"$3$N(B
+ $B!Z7@Ls>r7o![5Z$S<!$N!ZLH@U>r9`![$r!":FHRI[$K:]$7Ds6!$9$k@bL@=q5Z$S(B
+ $B$=$NB>$N4XO";qNA$K2~$a$FL@5-$7$J$1$l$P$J$i$J$$!#(B
+3. $BFCJL$J;vA0$N=qLL$K$h$k5vBz$,$J$$8B$j!"K\%=%U%H%&%'%"$+$iGI@8$7$?@=(B
+ $BIJ$r?d>)Kt$O@kEA$9$k$?$a$K!"Cx:n8"<TL>$O;HMQ$7$F$O$J$i$J$$!#(B
+
+$B!ZLH@U>r9`![(B
+$BK\%=%U%H%&%'%"$O!"Cx:n8"<T$K$h$j!"!V8=>uM-;Q$N$^$^!J$=$N$^$^$N7A$G!K!W(B
+$BDs6!$5$l$k$b$N$G$"$j!">&IJ@-Kt$OFCDjL\E*$X$NE,9g@-$K4X$9$kL[<(E*J]>Z$J(B
+$B$I!"L@<(Kt$OL[<($NJ]>Z$rLd$o$:!"$$$+$J$kJ]>Z$r$b9T$&$b$N$G$O$J$$!#(B
+$B$$$+$J$kM}M3$K$h$C$F$b!"$^$?!"7@Ls@UG$!"873J@UG$Kt$O!J2a<:$K$h$k$b$N$r(B
+$B4^$`!KITK!9T0Y@UG$$rLd$o$:$I$N$h$&$J@UG$$NM}O@$K$h$C$F$b!"Cx:n8"<T$O!"(B
+$B$$$+$J$k>l9g$b!"K\%=%U%H%&%'%"$r;HMQ$9$k$3$H$K$h$jH/@8$9$k!"$"$i$f$kD>(B
+$B@\B;32!"4V@\B;32!"6vH/B;32!"FCJLB;32!"D(H3E*B;32$"$k$$$OGI@8E*B;32!JBe(B
+$BBX@=IJ!&BeBX%5!<%S%9$ND4C#!";HMQMx1W!"%G!<%?Kt$O<}1W$K4X$9$kB;<:!"1D6H(B
+$BCfCG$K$h$kB;<:$J$I!K$K$D$$$F2?$i$N@UG$$bIi$o$J$$!#$3$l$O!"K\%=%U%H%&%'(B
+$B%"$r;HMQ$9$k$3$H$K$h$j!"$3$l$i$NB;32$,H/@8$9$k2DG=@-$K$D$$$F!"$"$i$+$8(B
+$B$a<(:6$5$l$F$$$?>l9g$G$"$C$F$bF1MM$G$"$k!#(B
diff --git a/language/japanese/ptex/Changes.txt b/language/japanese/ptex/Changes.txt
new file mode 100644
index 0000000000..d13f95a08a
--- /dev/null
+++ b/language/japanese/ptex/Changes.txt
@@ -0,0 +1,302 @@
+2005/10/17: (p3.1.9)
+ mkconf: platex θѥ tex/platex ʤ褦˽
+ ptex: ñƬ LIG/ Ԥ褦TFMѤȥ١饤󥷥ե
+ 0Ǥʤ˰۾ェλХ
+
+2005/03/07: (p3.1.8)
+ Makefile.in: make install κǸ mktexlsr μ¹Ԥɲ
+ Makefile.in, INSTALL.txt: teTeX-3.0TEXMFǥ쥯ȥѹȼ
+ (꤬Ȥޤƣ)
+
+2004/12/14: (p3.1.8)
+ ptex: ȥ륷̾ν
+ (㡧\Te^^5e^58 \Te^^58 Ȥʤꡢ\TeX Ȥɾʤ)
+ ptex: ȥ륷ľ ^^Ȥǧ
+ ޤ礬Τ (㡧\TeX^^83A \TeX)
+ (ʾ塢꤬Ȥޤ夵)
+ ptex: üեǤβ԰֤Υߥ󥰤ν
+ (꤬Ȥޤƣ)
+
+2004/12/09: (p3.1.7)
+ ptex: ^^ޤॳȥ륷̾ν
+ ptex: ɽԲǽʸϰϤ3.1.4Ʊˤ
+ (Missing character Ǥ ^^ ǽ)
+ mkconf: sjis,jis,eucγƥ󥳡̾TEXINPUTS褦ˤ
+ ޤTEXINPUTS.xetex μ˺褦ˤ
+
+2004/12/02: (p3.1.6)
+ ptex: tetex-2.99.4.20041128-beta б(꤬Ȥޤƣ)
+ INSTALL.txt: ե̾TDS˴ؤ륳Ȥɲ
+ (꤬Ȥޤƣ)
+
+2004/11/29: (p3.1.5)
+ ptex: ȥ륷̾Ρ^^ʸȼʸ
+ Ƥߤʤ礬Τ(꤬Ȥޤ夵)
+ ptex: Missing character ʤɤΥåǤɽԲǽʸ
+ ^^ ǽϤ褦˽
+
+2004/11/08: (p3.1.5)
+ ptex: JIS󥳡ǥ󥰥եɤ߹塢`' ξ֤
+ եνۤͭˤʤäƤޤ礬Τ
+ (꤬Ȥޤ夵)
+
+2004/10/12:
+ pltotf: SJISɤPLե뤫顢TFMեʤ
+ Τ(꤬Ȥޤƣڤ)
+
+2004/09/02: (p3.1.4)
+ ptex: 1ХȤʸˤ硢Ԥμʸ
+ ȶ˴ˤ褦ȤƤޤΤ
+ ptex: 1ХʸΤ1ХȤʸΥƥ꡼
+ ɤ̵ʸȤʤäƤޤΤ
+ ptex: ^^Ϥ줿ʸɤ1ХȤ硢
+ ʸȶ˴ˤ褦ȤƤޤΤ
+ ptex: \string ǰʸδȽ̩
+ jbibtex: ԥCRб
+ (ʾ塢꤬Ȥޤ夵)
+ ptex: \char Ѥ1Хʸȸǧ
+ Х
+ (꤬Ȥޤƣ)
+ ʸ
+
+2003/10/07: (p3.1.3)
+ ptex: -kanji=sjis ΤȤ\kansujichar ǡԤʸꤵ
+ ʤΤ(꤬Ȥƣ)
+
+2003/09/30:
+ ptex: ü/ؤΥåǡǤʤʸϤ뤳Ȥ
+ Τн衣
+
+2003/08/05:
+ pconvert: usage åѹpltotf, tftopl, pdvitype ΤȤ
+ fixwrites ˥ץ($target)ꤹ褦ˤ
+
+2003/06/23: (p3.1.2)
+ configure: mktempȤʤ褦˽
+
+2003/06/17: (p3.1.2)
+ Makefile.in: BSD make texmf.cnf κ˼ԤƤΤ
+
+2003/02/18: (p3.1.2)
+ ptex: \kansuji ץߥƥ֤褵
+ ptex: \kansujichar ץߥƥ֤ˤꡢ\kansuji ǽϤʸ
+ ǽˤ
+
+2003/02/14: (p3.1.1)
+ ptex: ^^ ǥ󥽡ɽΤ
+ ptex: \uppercase, \lowercase core Ф礬Τ
+
+2003/02/13: (p3.1)
+ ptex: main_memoryhash_extra 礭ʥޥ򤹤ȡ
+ !Missing control sequence inserted.פΥ顼ˤʤΤ
+
+2003/02/03: (p3.0.6)
+ ptex: tetex-2.0 ؤб
+ ptex: sjis ưʳΤȤ\char\sjis ưʤΤ
+ ptex: ¸ŪƤäץߥƥ֡\kansuji\tozenˤ
+ ptexextra.h: BANNER ʸι
+ ptexextra.c: tetex-2.0 ؤб
+
+2002/11/22:
+ Makefile.in: euc(jis), sjis ѥեޥåȤ褦
+ platex ѤΥ󥯤褦ˤ
+ mkconf: iniptex εҤ
+
+2002/11/15: (p3.0.5)
+ ptexextra.c: web2c-7.3.11 (teTeX-beta-20021114) ؤб
+
+2002/10/29: (p3.0.4)
+ --version ΣܤΥեޥåȤѹ
+ jbibtex: ǧǤʤץ core ФΤ
+
+2002/10/28: (p3.0.3)
+ ptex: ХʡΥեޥåȤѹ
+ tftopl.ch: pTeXѤHELPȤäƤʤΤ
+ pltotf.ch: pTeXѤHELPȤäƤʤΤ
+
+2002/10/24: (p3.0.2)
+ web2c-7.3.9 б
+
+2002/01/18: (p3.0.1)
+ ʲΥѤȤǤ⥳ѥǤ褦ˤ
+ * tetex-supp.tar.gz
+ * web2c-7.3.3.tar.gz
+ * teTeX-src-beta-20011202.tar.gz
+
+2002/01/15: (p3.0)
+ ptex-base.ch: fix hyphenation.
+
+2001/10/03:
+ README.txt: rewrite
+ INSTALL.txt: rewrite
+ ptex-base.ch: version 3.0
+ ptexextra-plain.c: removed local_maintainer and this_bug_address
+ ptexextra-src-special.c: removed local_maintainer and this_bug_address
+ jbibextra.c: removed local_maintainer and this_bug_address
+ maintain.h: removed local_maintainer and this_bug_address
+ version.c: modified message
+
+2001/07/26:
+ Change Licence to modified BSD license
+ COPYRIGHT: new file
+ COPYRIGHT.jis: new file
+ INSTALL.txt: new file
+ README.txt: cut short and move to INSTALL.txt
+ version.c: change licence filename (l.87,91, COPYING -> COPYRIGHT)
+
+2001/02/13:
+ version.c: typo (l.89, build -> build)
+ ptexhelp.h: typo (l.56, versobe -> verbose)
+ Changes.txt: typo (20001/02/09 -> 2001/02/09)
+
+2001/02/09:
+ REAMDE.txt: rewrite for 2.1.10
+ version.c: rewrite the copyright message. enable usage() function.
+ ptexhelp.h: newfile
+ help.h: removed
+ kanji.h.in: include "ptexhelp.h"
+ ptexextra-plain.c: rename TEXHELP to PTEXHELP.
+ ptexextra-src-special.c rename TEXHELP to PTEXHELP.
+ Makefile.in: depend on ptexhelp.h
+
+2000/11/13: (p2.1.10)
+2000/11/10:
+ ptex.ch: can't load JFM which the number of char_type less than
+ the glue types.
+ pltotf.ch: can't convert property list which has fullwidth space
+ '0x2121(JIS)' in charsintype.
+
+2000/08/17
+ mkconf: modify path separator to semicolon(;)
+
+2000/03/18
+ README.txt: fixed web2c-7.2 -> teTeX-1.0 (l.77)
+
+2000/03/01 (p2.1.9)
+ ptexextra-plain.c, ptexextra-src-special.c: version number 2.1.8 -> 2.1.9
+
+2000/02/29 (p2.1.9)
+ README.txt: rewrite.
+
+2000/02/28 (p2.1.9)
+ correspond to TeX 3.14159 with Web2c 7.3.1 and tex-src-special.
+ Makefile.in: distclean cleans tftopl.ch and pltotf.ch
+ ptexextra-plain.c, ptexextra-src-special.c: newfile
+ COPYING: newfile
+
+1998/04/09 (p2.1.8)
+1998/03/26 (p2.1.8.beta1)
+ correspond to TeX 3.14159 with Web2c 7.2.
+
+1998/03/19 (p2.1.7)
+ fix bug: \leaders
+
+1998/02/26 (p2.1.6)
+ fix bug: \inhibitxspcode
+
+1997/08/27 (p2.1.5)
+ official release.
+
+1997/08/27 (TFtoPL v1.3)
+ fix bug: occers core dump when loading a JFM.
+
+1997/08/14 (p2.1.5, beta12)
+ fix bug: kinsoku process doesn't work for ligatured character.
+
+1997/08/07 (p2.1.5, beta11)
+ changed specification: How to insert \xkanjiskip at surrounding a \hbox
+ (back to the p2.1.4 specification).
+
+1997/08/01 (p2.1.5, beta10)
+ fix bug: caused line breaking after a kinsoku penalty by
+ the \jcharwidowpenalty.
+
+1997/07/29 (p2.1.5, beta9)
+ fix bug: A penalty of kinsoku doesn't work well.
+ fix bug: italic correction is not inserted.
+
+1997/07/11 (p2.1.5, beta8)
+ fix bug: A penalty of kinsoku doesn't work well.
+ fix bug: Inserted \kanjiskip before widow KANJI character when the line
+ holds only it (embeded 2.1.5.beta6).
+ fix bug: Inserted \kanjiskip between kern of head of the line and
+ the next widow KANJI character (since from jTeX 1.7 p1.0.9G).
+ changed specification: How to insert \xkanjiskip at surrounding text-math.
+
+1997/06/29 (p2.1.5, beta7)
+ fix bug: pTeX occers coredump, when \{y,t}baselineskip is not equal zero,
+ and where explicit kern after ligature like `diff\/'.
+ changed specification: How to insert \xkanjiskip at surrounding text-math.
+
+1997/06/16 (p2.1.5, beta6)
+ fix bug: The \{y,t}baselineskip isn't work except the first place in
+ a paragraph.
+ fix bug: Doesn't hyphenation when the value of \{y,t}baselineskip is
+ not equals zero.
+ fix buf: Printed `(EUC)' in banner instead of making as JIS-version.
+ fix bug: `make install' increase the TEXINPUTS.{ptex,platex,platex209} at
+ texmf.cnf.
+
+1997/05/13 (p2.1.5, beta5)
+ fix bug: Fail to read euex10.tfm.
+
+1997/05/01 (p2.1.5, beta4)
+ fix bug: \char{\jis,\euc,\sjis,\kuten} after a 1byte character that have
+ a possibility of ligature like the "`" causes coredump or worng result.
+
+1997/03/17 (p2.1.5, beta3)
+ change banner strings.
+
+1997/03/14 (p2.1.5, beta3)
+ fix bug: can't run as iniptex/virptex.
+
+1997/03/12 (p2.1.5, beta2)
+ fix bug: \calcpos return wrong number.
+
+1997/02/27 (p2.1.5, beta1)
+ correspond to TeX 3.14159 with Web2c 7.0.
+
+1995/11/21 (p2.1.4)
+ new feature: accept kanji filename.
+
+1995/11/17 (p2.1.3)
+ fix bug : try_break routine doesn't corect action when the list
+ has disp_node or dir_node (Error `disc4').
+
+1995/11/07 (p2.1.2)
+ fix bug : \kanjiskip doesn't inserted after JFM glue/kern.
+
+1995/10/11
+ include jbibtex (Shouichi Matsui<matsui@denken.or.jp>) and
+ pdvitype (Thanks, Kazunori Asayama)
+
+1995/09/20 (p2.1.1)
+ fix bug : \xkanjiskip doesn't inserted after italic correction.
+ fix bug : italic correction doesn't inserted when \{y,t}baselineshift
+ is used.
+
+1995/09/08 (p2.1)
+ fix bug : \xkanjiskip doesn't inserted after math mode which correct
+ italic kern spacing.
+
+1995/08/29
+ rename `find_first' to `find_first_char' for djgpp 1.12.
+ (Thanks, Kazunori Asayama)
+
+1995/03/25
+ fix bug : Three minuses sequence (---) doesn't become em-hyphen.
+
+1995/03/11
+ imprement \kanji primitive.
+
+1995/01/17
+ translate/modify pTeX 2.0 change file for TeX 3.1415.
+
+1994/12/17
+ translate/modify pTeX 2.0 change file for TeX 3.141.
+
+1994/10/17
+ translate/modify pTeX 1.0.9F change file which based on TeX 2.99 to
+ pTeX 2.0 which based on TeX 3.14.
+
+== EOF ===
diff --git a/language/japanese/ptex/Files b/language/japanese/ptex/Files
new file mode 100644
index 0000000000..ac7a1dff91
--- /dev/null
+++ b/language/japanese/ptex/Files
@@ -0,0 +1,27 @@
+COPYRIGHT
+COPYRIGHT.jis
+Changes.txt
+Files
+INSTALL.txt
+Makefile.in
+README.txt
+configure
+jbibd.sed
+jbibextra.c
+jbibextra.h
+jbibtex.ch
+jbibtex.defines
+kanji.c
+kanji.defines
+kanji.h.in
+mkconf
+pconvert
+pdvitype.ch
+pltotf.ch
+ptex-base.ch
+ptexextra.c
+ptexextra.h
+ptexhelp.h
+tftopl.ch
+usage.c
+version.c
diff --git a/language/japanese/ptex/INSTALL b/language/japanese/ptex/INSTALL
new file mode 100644
index 0000000000..77116b109d
--- /dev/null
+++ b/language/japanese/ptex/INSTALL
@@ -0,0 +1,85 @@
+===========================================================================
+ Japanese TeX version 3.141592, p3.1.9
+ (for tetex-src-3.0 and later)
+===========================================================================
+ If necessary, backup the TeX system of the old version before starting
+ installation.
+
+$B"((BpTeX supports file names with spaces. However, it doesn't support more
+ than two subsequent spaces in the file name.
+ platex "a b c d e.tex" will be accepted, however
+ platex "a b.tex" will not.
+
+---------------------------------------------------------------------------
+ Source files
+---------------------------------------------------------------------------
+ To install pTeX, the following files are required:
+
+ - ptex-src-3.1.9.tar.gz (pTeX source file)
+ - ptex-texmf-2.3.tar.gz (pTeX library file)
+ - teTeX-src-3.0.tar.gz (teTeX source file)
+ - teTeX-texmf-3.0.tar.gz (teTeX library file)
+
+ These can be obrained from the following sites:
+
+ - pTeX
+ ftp://ftp.ascii.co.jp/pub/TeX/ascii-ptex/
+ ftp://ftp.ring.gr.jp/pub/text/TeX/ascii-ptex/
+ ftp://ftp.media.kyoto-u.ac.jp/TeX/ASCII-pTeX/
+ ftp://bash.cc.keio.ac.jp/pub/TeX/ascii-ptex/
+ ftp://ftp.cs.titech.ac.jp/pub/text/TeX/ASCII-pTeX/
+ ftp://ftp.tut.ac.jp/TeX/ASCII-pTeX/
+ ftp://ftp.u-aizu.ac.jp/pub/tex/ASCII-pTeX/
+ ftp://ftp.foretune.co.jp/pub/TeX/ascii-ptex/
+
+ - teTeX
+ ftp://ftp.ring.gr.jp/pub/text/CTAN/systems/unix/teTeX/current/distrib/ (JPN)
+ ftp://cam.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/ (UK)
+ ftp://dante.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/ (GER)
+ ftp://tug.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/ (US)
+
+---------------------------------------------------------------------------
+ Installation
+---------------------------------------------------------------------------
+1. Expand the teTeX library file.
+
+ mkdir -p /usr/local/teTeX3/share/texmf-dist
+ tar zxf tetex-texmf-3.0.tar.gz \
+ -C /usr/local/teTeX3/share/texmf-dist
+
+2. Expand the ptex library file.
+
+ mkdir -p /usr/local/teTeX3/share/texmf
+ tar zxf ptex-texmf-2.3.tar.gz -C /usr/local/teTeX3/share/texmf
+
+3. Expand the teTeX source file.
+
+ tar zxf tetex-src-3.0.tar.gz -C /usr/local/src
+
+4. Expand the ptex source file.
+
+ tar zxvf ptex-src-3.1.9.tar.gz \
+ -C /usr/local/src/tetex-src-3.0/texk/web2c
+
+5. After moving to the directory where the teTeX source file is expanded,
+ execute the configure command. In the prefix option, specify the
+ directory where teTeX libraries are installed as a prefix option:
+
+ cd /usr/local/src/tetex-src-3.0
+ ./configure --prefix=/usr/local/teTeX3
+ make
+ make install
+
+6. After moving to the ptex source directory, execute the configure command.
+ In doing so, specify the default Kanji code:
+
+ cd /usr/local/src/tetex-src-3.0/texk/web2c/ptex-src-3.1.9
+ ./configure euc (EUC code case)
+ ./configure jis (JIS code case)
+ ./configure sjis (Shift JIS code case)
+ make
+ make install
+
+=============================================================== EOT =====
+
+ (Translated from INSTALL.txt in Japanese)
diff --git a/language/japanese/ptex/INSTALL.txt b/language/japanese/ptex/INSTALL.txt
new file mode 100644
index 0000000000..c0c621c1a1
--- /dev/null
+++ b/language/japanese/ptex/INSTALL.txt
@@ -0,0 +1,83 @@
+===========================================================================
+$BF|K\8l(B TeX $B%P!<%8%g%s(B 3.141592, p3.1.9
+(tetex-src-3.0 $B0J9_MQ(B)
+===========================================================================
+$B"((B $BI,MW$J$i$P!"%$%s%9%H!<%k:n6H$r$9$kA0$K!"(B
+ $B5l%P!<%8%g%s$N(B TeX $B%7%9%F%`$N%P%C%/%"%C%W$r$7$F$/$@$5$$!#(B
+
+$B"((B space code $B$r4^$s$@%U%!%$%kL>$,%5%]!<%H$5$l$F$$$^$9!#(B
+ $B$?$@$7!"O"B3$9$kFs$D0J>e$N(B space codes $B$O;HMQ$7$J$$$G$/$@$5$$(B:
+ platex "a b c d e.tex" $B$O(B ok $B$G$9$,(B
+ platex "a b.tex" $B$O(B ng $B$G$9!#(B
+
+---------------------------------------------------------------------------
+$B!|(B $B%=!<%9%U%!%$%k(B
+---------------------------------------------------------------------------
+pTeX $B$r%$%s%9%H!<%k$9$k$K$O!"$D$.$N%U%!%$%k$,I,MW$G$9!#(B
+
+ $B!&(Bptex-src-3.1.9.tar.gz (pTeX $B%=!<%9%U%!%$%k(B)
+ $B!&(Bptex-texmf-2.3.tar.gz (pTeX $B%i%$%V%i%j%U%!%$%k(B)
+ $B!&(BteTeX-src-3.0.tar.gz (teTeX $B%=!<%9%U%!%$%k(B)
+ $B!&(BteTeX-texmf-3.0.tar.gz (teTeX $B%i%$%V%i%j%U%!%$%k(B)
+
+$B$3$l$i$O!"0J2<$N%5%$%H$J$I$+$iF~<j2DG=$G$9!#(B
+
+$B!&(BpTeX $B4XO"(B
+ ftp://ftp.ascii.co.jp/pub/TeX/ascii-ptex/
+ ftp://ftp.ring.gr.jp/pub/text/TeX/ascii-ptex/
+ ftp://ftp.media.kyoto-u.ac.jp/TeX/ASCII-pTeX/
+ ftp://bash.cc.keio.ac.jp/pub/TeX/ascii-ptex/
+ ftp://ftp.cs.titech.ac.jp/pub/text/TeX/ASCII-pTeX/
+ ftp://ftp.tut.ac.jp/TeX/ASCII-pTeX/
+ ftp://ftp.u-aizu.ac.jp/pub/tex/ASCII-pTeX/
+ ftp://ftp.foretune.co.jp/pub/TeX/ascii-ptex/
+
+$B!&(BteTeX $B4XO"(B
+ ftp://ftp.ring.gr.jp/pub/text/CTAN/systems/unix/teTeX/current/distrib/ (JPN)
+ ftp://cam.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/ (UK)
+ ftp://dante.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/ (GER)
+ ftp://tug.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/ (US)
+
+---------------------------------------------------------------------------
+$B!|(B $B%$%s%9%H!<%k(B
+---------------------------------------------------------------------------
+1. teTeX $B$N%i%$%V%i%j%U%!%$%k$rE83+$7$^$9!#(B
+
+ mkdir -p /usr/local/teTeX3/share/texmf-dist
+ tar zxf tetex-texmf-3.0.tar.gz \
+ -C /usr/local/teTeX3/share/texmf-dist
+
+2. ptex $B$N%i%$%V%i%j%U%!%$%k$rE83+$7$^$9!#(B
+
+ mkdir -p /usr/local/teTeX3/share/texmf
+ tar zxf ptex-texmf-2.3.tar.gz -C /usr/local/teTeX3/share/texmf
+
+3. teTeX $B$N%=!<%9%U%!%$%k$rE83+$7$^$9!#(B
+
+ tar zxf tetex-src-3.0.tar.gz -C /usr/local/src
+
+4. ptex $B$N%=!<%9%U%!%$%k$rE83+$7$^$9!#(B
+
+ tar zxvf ptex-src-3.1.9.tar.gz \
+ -C /usr/local/src/tetex-src-3.0/texk/web2c
+
+5. teTeX $B%=!<%9%U%!%$%k$rE83+$7$?%G%#%l%/%H%j$K0\F0$7!"(Bconfigure $B%3%^%s%I(B
+ $B$r<B9T$7$^$9!#(Bprefix $B%*%W%7%g%s$K$O!"(BteTeX $B%i%$%V%i%j$r%$%s%9%H!<%k(B
+ $B$7$?%G%#%l%/%H%j$r;XDj$7$^$9!#(B
+
+ cd /usr/local/src/tetex-src-3.0
+ ./configure --prefix=/usr/local/teTeX3
+ make
+ make install
+
+6. ptex $B$N%=!<%9%G%#%l%/%H%j$K0\F0$7!"(Bconfigure $B%3%^%s%I$r<B9T$7$^$9!#(B
+ $B$3$N$H$-!"%G%U%)%k%H$N4A;z%3!<%I$r;XDj$7$F$/$@$5$$!#(B
+
+ cd /usr/local/src/tetex-src-3.0/texk/web2c/ptex-src-3.1.9
+ ./configure euc (EUC$B%3!<%I$N>l9g(B)
+ ./configure jis (JIS$B%3!<%I$N>l9g(B)
+ ./configure sjis ($B%7%U%H(BJIS$B%3!<%I$N>l9g(B)
+ make
+ make install
+
+=============================================================== EOT =====
diff --git a/language/japanese/ptex/Makefile.in b/language/japanese/ptex/Makefile.in
new file mode 100644
index 0000000000..b2e79ce54c
--- /dev/null
+++ b/language/japanese/ptex/Makefile.in
@@ -0,0 +1,344 @@
+# Makefile for ptex
+version = @WEB2CVERSION@
+configopt = @configopt@
+configkcode = @configkcode@
+
+default: programs formats
+
+programs=ptex tftopl pltotf pdvitype jbibtex
+euc-formats=ptex-euc.fmt platex-euc.fmt
+sjis-formats=ptex-sjis.fmt platex-sjis.fmt
+
+ac_include ../../make/paths.mk
+
+# Used for triptrap.
+DIFF = diff
+DIFFFLAGS =
+
+.SUFFIXES: # get rid of .p.o
+ac_include ../../make/common.mk
+ac_include ../../make/programs.mk
+
+@MAINT@ifeq ($(CC), gcc)
+@MAINT@XDEFS = -Wimplicit -Wreturn-type -Wcomment -Wformat
+@MAINT@endif
+
+# With --enable-ipc, TeX may need to link with -lsocket.
+socketlibs = @socketlibs@
+
+common_makeargs = $(MFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' $(XMAKEARGS)
+install_makeargs = INSTALL='$(INSTALL)' INSTALL_DATA='$(INSTALL_DATA)' \
+ INSTALL_PROGRAM='$(INSTALL_PROGRAM)' \
+ $(makevars) $(common_makeargs)
+
+proglib = ../lib/lib.a
+
+# The sh script that does the conversion:
+web2c = srcdir=$(thisdir) $(SHELL) $(thisdir)/pconvert
+# Additional dependencies:
+web2c_aux = $(thisdir)/pconvert $(cwebdir)/common.defines \
+ $(thisdir)/kanji.defines
+web2c_programs = $(cwebdir)/fixwrites $(cwebdir)/splitup $(cwebdir)/web2c
+
+# Unfortunately, suffix rules can't have dependencies, or multiple
+# targets, and we can't assume all makes supports pattern rules.
+.SUFFIXES: .p .c .ch .p
+.p.c: # really depends on $(web2c_programs), and generates .h.
+ $(web2c) $*
+.ch.p: # really depends on $(srcdir)/tangle; for ptex, also generates .pool
+ $(srcdir)/tangle $(thisdir)/$*.web $<
+
+# These definitions have to come before the rules that expand them.
+# The tex{ini,0,1,2}.c files are created by splitup, run as part of convert.
+ptex_c = texini.c tex0.c tex1.c tex2.c
+ptex_o = texini.o tex0.o tex1.o tex2.o ptexextra.o
+plib_o = kanji.o version.o usage.o
+
+# Prevent Make from deleting the intermediate forms.
+.PRECIOUS: %.p %.c
+
+#
+# Rules for pTeX, TFtoPL, PLtoTF.
+# fix dir
+thisdir = .
+srcdir = ..
+top_srcdir= $(srcdir)/..
+cwebdir = $(srcdir)/web2c
+
+kpathsea_parent = $(top_srcdir)
+kpathsea_srcdir_parent = $(kpathsea_parent)
+
+programs: $(programs)
+
+### pTeX
+ptex: $(ptex_o) $(plib_o) $(kpathsea) $(proglib)
+ $(kpathsea_link) $(ptex_o) $(plib_o) $(socketlibs) $(LOADLIBES)
+
+$(ptex_o): $(ptex_c) texcoerce.h texd.h kanji.h
+
+texini.o: texini.c texcoerce.h texd.h kanji.h ptexhelp.h
+tex0.o: tex0.c texcoerce.h texd.h kanji.h ptexhelp.h
+tex1.o: tex1.c texcoerce.h texd.h kanji.h ptexhelp.h
+tex2.o: tex2.c texcoerce.h texd.h kanji.h ptexhelp.h
+ptexextra.o: ptexextra.c ptexextra.h texcoerce.h texd.h kanji.h ptexhelp.h
+
+$(ptex_c) texcoerce.h texd.h: ptex.p $(web2c_aux) $(web2c_programs)
+ $(web2c) ptex
+
+ptex.p: ptex.web ptex.ch $(srcdir)/tangle
+
+ptex.web: $(srcdir)/tex.web $(srcdir)/tex.ch $(srcdir)/tie
+ $(srcdir)/tie -m ptex.web $(srcdir)/tex.web $(srcdir)/tex.ch
+
+ptex.ch: $(srcdir)/tie ptex.web ptex-base.ch
+ $(srcdir)/tie -c ptex.ch ptex.web ptex-base.ch
+
+### TFtoPL
+tftopl: tftopl.o $(plib_o) $(kpathsea) $(proglib)
+ $(kpathsea_link) tftopl.o $(plib_o) $(LOADLIBES)
+tftopl.o: tftopl.c kanji.h ptexhelp.h
+tftopl.c: tftopl.p $(web2c_aux)
+tftopl.p: tftopl.web tftopl.ch
+tftopl.web: $(srcdir)/tftopl.web $(srcdir)/tftopl.ch
+ rm -f tftopl.web && \
+ $(srcdir)/tie -m tftopl.web $(srcdir)/tftopl.web $(srcdir)/tftopl.ch
+
+
+### PLtoTF
+pltotf: pltotf.o $(plib_o) $(kpathsea) $(proglib)
+ $(kpathsea_link) pltotf.o $(plib_o) $(LOADLIBES)
+pltotf.o: pltotf.c kanji.h ptexhelp.h
+ $(compile) -DKANJI_C=1 -c pltotf.c
+pltotf.c: pltotf.p $(web2c_aux)
+pltotf.p: pltotf.web pltotf.ch
+pltotf.web: $(srcdir)/pltotf.web $(srcdir)/pltotf.ch
+ rm -f pltotf.web && \
+ $(srcdir)/tie -m pltotf.web $(srcdir)/pltotf.web $(srcdir)/pltotf.ch
+
+### pDVItype
+pdvitype: pdvitype.o $(plib_o) $(kpathsea) $(proglib)
+ $(kpathsea_link) pdvitype.o $(plib_o) $(LOADLIBES)
+pdvitype.o: pdvitype.c kanji.h ptexhelp.h
+ $(compile) -DDVITYPE -DHEX_CHAR_CODE -c pdvitype.c
+pdvitype.c: pdvitype.p $(web2c_aux)
+pdvitype.p: pdvitype.web pdvitype.ch
+pdvitype.web:
+ $(LN) $(srcdir)/dvitype.web pdvitype.web
+
+### jBibTeX
+jbibtex: jbibtex.o jbibextra.o $(plib_o) $(kpathsea) $(proglib)
+ $(kpathsea_link) jbibtex.o jbibextra.o $(plib_o) $(LOADLIBES)
+jbibextra.o: jbibextra.c jbibd.h kanji.h ptexhelp.h
+jbibtex.o: jbibtex.c jbibextra.h kanji.h ptexhelp.h
+ $(compile) -DBIBTEX -c jbibtex.c
+jbibtex.c jbibd.h: jbibtex.p $(web2c_aux) jbibd.sed
+jbibtex.p: jbibtex.web jbibtex.ch
+jbibtex.web:
+ $(LN) $(srcdir)/bibtex.web jbibtex.web
+
+# Additional dependencies for recompiling the C code are generated
+# automatically, included at the end.
+kanji.o: kanji.c kanji.h ptexhelp.h
+version.o: version.c kanji.h ptexhelp.h
+usage.o: usage.c
+
+# Additional dependencies for relinking.
+$(srcdir)/tangleboot:
+ cd $(srcdir) && $(MAKE) tangleboot
+$(srcdir)/tangle:
+ cd $(srcdir) && $(MAKE) tangle
+$(srcdir)/tie:
+ cd $(srcdir) && $(MAKE) tie
+$(cwebdir)/fixwrites:
+ cd $(cwebdir) && $(MAKE) fixwrites
+$(cwebdir)/splitup:
+ cd $(cwebdir) && $(MAKE) splitup
+$(cwebdir)/web2c:
+ cd $(cwebdir) && $(MAKE) web2c
+$(proglib):
+ cd $(srcdir)/lib && $(MAKE) lib.a
+$(kpathsea):
+ cd $(kpathsea_dir) && $(MAKE) libkpathsea.a
+
+#
+# Making formats and bases.
+formats=$(euc-formats) $(sjis-formats)
+formats: $(formats)
+
+texmf.cnf: $(kpathsea_dir)/texmf.cnf
+ $(SHELL) $(thisdir)/mkconf $(kpathsea_dir)/texmf.cnf > texmf.cnf
+
+dumpenv = TEXMFCNF=$(thisdir)
+
+ptex-euc.fmt: ptex texmf.cnf
+ $(dumpenv) $(MAKE) progname=ptex files="ptex.tex min10.tfm" prereq-check
+ $(dumpenv) ./ptex --ini --kanji=euc --progname=ptex --jobname=ptex-euc \\input ptex.tex \\dump </dev/null
+
+ptex-sjis.fmt: ptex texmf.cnf
+ $(dumpenv) $(MAKE) progname=ptex files="ptex.tex min10.tfm" prereq-check
+ $(dumpenv) ./ptex --ini --kanji=sjis --progname=ptex --jobname=ptex-sjis \\input ptex.tex \\dump </dev/null
+
+platex-euc.fmt: ptex texmf.cnf
+ $(dumpenv) $(MAKE) progname=platex files="platex.ltx" prereq-check
+ $(dumpenv) ./ptex --ini --kanji=euc --progname=platex --jobname=platex-euc \\input platex.ltx </dev/null
+
+platex-sjis.fmt: ptex texmf.cnf
+ $(dumpenv) $(MAKE) progname=platex files="platex.ltx" prereq-check
+ $(dumpenv) ./ptex --ini --kanji=sjis --progname=platex --jobname=platex-sjis \\input platex.ltx </dev/null
+
+# This is meant to be called recursively, with $(files) set.
+prereq-check: $(kpathsea_dir)/kpsewhich
+ $(dumpenv) $(kpathsea_dir)/kpsewhich --progname=$(progname) $(files) >/dev/null || $(MAKE) prereq-lose >/dev/null
+
+prereq-lose:
+ @echo "You seem to be missing input files necessary to make the" >&2
+ @echo "basic formats (some or all of: $(files))." >&2
+ @echo "Perhaps you've defined the default paths incorrectly, or" >&2
+ @echo "perhaps you have environment variables set pointing" >&2
+ @echo "to an incorrect location. See $(srcdir)/kpathsea/BUGS." >&2
+ @echo >&2
+ @echo "If you simply do not have the files, you can" >&2
+ @echo "retrieve a minimal set of input files from" >&2
+ @echo "ftp://ftp.tug.org/tex/lib.tar.gz, mirrored on" >&2
+ @echo "CTAN hosts in systems/web2c." >&2
+ false
+
+$(kpathsea_dir)/kpsewhich: $(kpathsea)
+
+#
+install: install-exec install-data
+ $(top_srcdir)/kpathsea/mktexlsr
+install-exec:: install-links
+install-data:: install-formats
+
+# Installation directories.
+$(bindir)::
+ $(SHELL) $(top_srcdir)/mkinstalldirs $(bindir)
+$(web2cdir)::
+ $(SHELL) $(top_srcdir)/mkinstalldirs $(web2cdir)
+
+# The actual binary executables and pool files.
+install-programs: $(programs) $(bindir)
+ for p in $(programs); do $(INSTALL_LIBTOOL_PROG) $$p $(bindir); done
+
+# The links to ptex for each format.
+install-links: install-programs $(bindir)
+ cd $(bindir) && (rm -f iniptex virptex platex; $(LN) ptex platex)
+
+# Always do plain.*, so examples from the TeXbook (etc.) will work.
+install-formats: $(formats) $(web2cdir)
+ for f in $(formats); do $(INSTALL_DATA) $$f $(web2cdir)/$$f; done
+ cd $(web2cdir) && (rm -f ptex-jis.fmt platex-jis.fmt ;\
+ $(LN) ptex-euc.fmt ptex-jis.fmt ;\
+ $(LN) platex-euc.fmt platex-jis.fmt)
+ cd $(web2cdir) && (rm -f ptex.fmt platex.fmt ;\
+ $(LN) ptex-$(configkcode).fmt ptex.fmt ;\
+ $(LN) platex-$(configkcode).fmt platex.fmt )
+
+# Auxiliary files.
+install-data::
+ $(SHELL) $(top_srcdir)/mkinstalldirs $(web2cdir)
+ $(INSTALL_DATA) ptex.pool $(web2cdir)/ptex.pool
+ if [ -f $(web2cdir)/texmf.cnf ]; then \
+ mv -f $(web2cdir)/texmf.cnf $(web2cdir)/texmf.cnf.orig ;\
+ else true; fi
+ $(INSTALL_DATA) texmf.cnf $(web2cdir)/texmf.cnf
+#
+# Testing, including triptrap. The `x' filenames are for output.
+check: pltotf-check tftopl-check pooltype-check ptex-check
+
+triptrap: trip
+tripdir = $(srcdir)/triptrap
+ptripdir = ./triptrap
+testdir = $(srcdir)/tests
+testenv = TEXMFCNF=$(ptripdir)
+dvitype_args = -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*'
+trip: ptex pltotf tftopl $(srcdir)/dvitype
+ @echo ">>> See $(tripdir)/trip.diffs for example of acceptable diffs." >&2
+ ./pltotf $(tripdir)/trip.pl trip.tfm
+ ./tftopl ./trip.tfm trip.pl
+ -diff $(tripdir)/trip.pl trip.pl
+ rm -f trip.tex; $(LN) $(tripdir)/trip.tex . # get same filename in log
+ -$(SHELL) -c '$(testenv) ./ptex -ini <$(tripdir)/trip1.in >tripin.fot'
+ mv trip.log tripin.log
+ -diff $(tripdir)/tripin.log tripin.log
+# May as well test non-ini second time through.
+ -$(SHELL) -c '$(testenv) ./ptex <$(tripdir)/trip2.in >trip.fot'
+ -diff $(tripdir)/trip.fot trip.fot
+# We use $(DIFF) instead of `diff' only for those files where there
+# might actually be legitimate numerical differences.
+ -$(DIFF) $(DIFFFLAGS) $(tripdir)/trip.log trip.log
+ $(SHELL) -c '$(testenv) $(srcdir)/dvitype $(dvitype_args) trip.dvi >trip.typ'
+ -$(DIFF) $(DIFFFLAGS) $(tripdir)/trip.typ trip.typ
+
+# Ad hoc tests.
+pltotf-check: pltotf
+ ./pltotf -verbose $(testdir)/cmr10 $(testdir)/xcmr10
+ ./pltotf -verbose $(testdir)/min10 $(testdir)/xmin10
+
+tftopl-check: tftopl
+ ./tftopl -verbose $(testdir)/cmr10 $(testdir)/xcmr10
+ ./tftopl -verbose $(testdir)/min10 $(testdir)/xmin10
+
+pooltype-check: $(srcdir)/pooltype
+ $(srcdir)/pooltype ptex.pool > $(testdir)/xtexpool.typ
+
+ptex-check: trip ptex-euc.fmt
+# Test truncation (but don't bother showing the warning msg).
+ ./ptex -output-comment="`cat PROJECTS`" $(testdir)/hello 2>/dev/null \
+ && $(srcdir)/dvitype hello.dvi | grep kb@mail.tug.org >/dev/null
+# \openout should show up in \write's.
+ ./ptex $(testdir)/openout && grep xfoo openout.log
+# one.two.tex -> one.two.log
+ ./ptex $(testdir)/one.two && ls -l one.two.log
+# uno.dos -> uno.dos.log
+ ./ptex $(testdir)/uno.dos && ls -l uno.dos.log
+ ./ptex $(testdir)/just.texi && ls -l just.log
+ -./ptex $(testdir)/batch.tex
+ ./ptex -shell $(testdir)/write18 | grep echo
+# tcx files are a bad idea.
+# ./ptex -translate-file=$(srcdir)/share/isol1-t1.tcx $(testdir)/eight \
+# && ./pdvitype eight.dvi >eigh.typ
+ ./ptex -mltex -ini $(testdir)/mltextst
+ -./ptex </dev/null
+ -PATH=$(kpathsea_dir):$$PATH ./ptex '\nonstopmode\font\foo=nonesuch\end'
+
+installcheck:
+ cd $(testdir) && ptex '\nonstopmode \tracingstats=1 \input story \bye'
+
+#
+# Cleaning.
+mostryclean::
+ rm -f *.o
+
+clean:: mostryclean
+ rm -f texcoerce.h texd.h jbibd.h jbibtex.h
+ rm -f $(ptex_c) $(ptex_o) $(plib_o) $(programs)
+ rm -f tftopl.h tftopl.c tftopl.o
+ rm -f pltotf.h pltotf.c pltotf.o
+ rm -f pdvitype.h pdvitype.c pdvitype.o
+ rm -f jbibtex.c jbibtex.o jbibextra.o
+distclean:: clean
+ rm -fr failure
+ rm -f ptex.web ptex.ch ptex.p ptex.pool ptex.log ptex-euc.fmt ptex-sjis.fmt
+ rm -f platex.log platex-euc.fmt platex-sjis.fmt texsys.aux platex
+ rm -f tftopl.web tftopl.p
+ rm -f pltotf.web pltotf.p
+ rm -f pdvitype.web pdvitype.p
+ rm -f jbibtex.web jbibtex.p
+ rm -f Makefile kanji.h texmf.cnf config.sed
+extraclean:: distclean
+ rm -f *.aux *.bak *.bbl *.blg *.dvi *.log *.pl *.tfm *.vf *.vpl
+ rm -f *.*pk *.*gf *.mpx *.i *.s *~ *.orig *.rej *\#*
+ rm -f CONTENTS.tex a.out core mfput.* texput.* mpout.*
+ rm -f trip.tex trap.mf mtrap.mp trap.mp trap.mpx
+ rm -f trip.* tripin.* tripos.tex 8terminal.tex
+ rm -f trap.* mftrap.* mftrapin.* mptrap.* mptrapin.*
+ rm -f trapf.* mtrap.* writeo* missfont.log
+
+# Makefile.
+Makefile: configure $(srcdir)/config.status $(thisdir)/Makefile.in
+ $(SHELL) configure $(configopt)
+
+kanji.h: kanji.h.in
+ $(SHELL) configure $(configopt)
diff --git a/language/japanese/ptex/README b/language/japanese/ptex/README
new file mode 100644
index 0000000000..e716dfd737
--- /dev/null
+++ b/language/japanese/ptex/README
@@ -0,0 +1,36 @@
+*NOTE* Please download the texmf tree necessary for pTeX as well from
+ install/language/japanese/ptex.tds.zip
+
+---------------------------------------------------------------------------
+ About Japanese TeX (pTeX: publishing TeX)
+---------------------------------------------------------------------------
+
+ * Japanese TeX (pTeX) has been developed in the aim of providing a TeX
+ which can be used for commercial publishing.
+
+ * pTeX adds features related to vertical writing on "Japanese TeX"
+ which can handle only horizontal writing. Any bug fixes on Japanization
+ will be done on pTeX, not on Japanese TeX.
+
+ * pTeX employs change files of WEB.
+
+ * For installation, please refer to the enclosed INSTALL file.
+
+ * For the usage and distribution of pTeX, please refer to the enclosed
+ COPYRIGHT file.
+
+---------------------------------------------------------------------------
+ Inquiry etc.
+---------------------------------------------------------------------------
+ Any inquiry on pTeX should be directed to the email address
+ www-ptex@ascii.co.jp.
+
+ The web page of pTeX (http://www.ascii.co.jp/pb/ptex/) contains
+ bug information, hint on installation and the list of new primitives
+ added in pTeX. Please check the web page as well.
+
+-------------------------------------
+ ASCII Co. Ltd., Puglishing Technology Group
+=============================================================== EOT =====
+
+ (Translated from README.txt in Japanese)
diff --git a/language/japanese/ptex/README.txt b/language/japanese/ptex/README.txt
new file mode 100644
index 0000000000..45fdc0fb3a
--- /dev/null
+++ b/language/japanese/ptex/README.txt
@@ -0,0 +1,32 @@
+---------------------------------------------------------------------------
+ ܸ TeXpTeX: publishing TeXˤˤĤ
+---------------------------------------------------------------------------
+
+ * ܸ TeXpTeXˤϡܳŪʾȽǤѤ TeX ȯ
+ ȤɸˤƤޤ
+
+ * pTeX ϡȤѤΡܸ TeXפ˽Ȥߵǽɲä
+ Ǥܸ첽ΥХեåϤ٤ pTeX ФƤΤ߹Ԥʤ
+ ȤΤߤܸ TeX ФƤϹԤʤޤΤǡλ
+
+ * pTeX ϡWEB Υ󥸥եȤäƼ¸Ƥޤ
+
+ * 󥹥ȡμˤĤƤϡ° INSTALL.txt ե򻲾
+ Ƥ
+
+ * pTeX λѤդ˴ؤƤϡ° COPYRIGHT ե
+ ȤƤ
+
+---------------------------------------------------------------------------
+ 䤤碌ʤ
+---------------------------------------------------------------------------
+pTeX ˤĤƤΤ䤤碌ϡŻҥ᡼ www-ptex@ascii.co.jp
+ˤꤤޤ
+
+pTeX WEB ڡhttp://www.ascii.co.jp/pb/ptex/ˤǤϡХ
+󥹥ȡΥҥȡpTeX ɲä줿ץߥƥְʤɤǺܤ
+ޤ⤴
+
+-------------------------------------
+ҥ ǵѥ롼
+=============================================================== EOT =====
diff --git a/language/japanese/ptex/configure b/language/japanese/ptex/configure
new file mode 100644
index 0000000000..fb1b680d30
--- /dev/null
+++ b/language/japanese/ptex/configure
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+progname=`basename $0`
+termcode=
+configopt=
+
+printUsage () {
+ echo "Usage: $progname {EUC|JIS|SJIS}"
+ exit 1
+}
+
+if [ ! -f ../config.status ]; then
+ echo "../config.status not found."
+ echo "please make orignal Web2c programs before make pTeX."
+ exit 1
+fi
+
+# å
+test -z "$*" && printUsage
+case $1 in
+ [Ss][Jj][Ii][Ss]) termcode="SJIS" ;;
+ [Jj][Ii][Ss]) termcode="JIS" ;;
+ [Ee][Uu][Cc]) termcode="EUC" ;;
+ *) echo "unknown option $1"; printUsage ;;
+esac
+
+CONFIGSED=config.sed
+echo "s%@configopt@%$*%g" > $CONFIGSED
+echo "s%@TERMCODE@%$termcode%g" >> $CONFIGSED
+case $termcode in
+ "SJIS") echo "s%@configkcode@%sjis%g" >> $CONFIGSED ;;
+ "JIS") echo "s%@configkcode@%jis%g" >> $CONFIGSED ;;
+ *) echo "s%@configkcode@%euc%g" >> $CONFIGSED ;;
+esac
+echo "creating kanji.h"
+sed -f $CONFIGSED kanji.h.in > kanji.h
+
+# Makefile κ
+CONFIG_FILES=Makefile
+CONFIG_HEADERS=..
+export CONFIG_FILES CONFIG_HEADERS
+../config.status
+TMPFILE=makefile.tmp
+sed -f $CONFIGSED Makefile > $TMPFILE
+mv -f $TMPFILE Makefile
+
+exit 0
diff --git a/language/japanese/ptex/jbibd.sed b/language/japanese/ptex/jbibd.sed
new file mode 100644
index 0000000000..cb30424cfe
--- /dev/null
+++ b/language/japanese/ptex/jbibd.sed
@@ -0,0 +1,17 @@
+/jbibtex\.h/,$d
+/^jmp_buf/d
+/^typedef/b
+/^#define/b
+/^[a-zA-Z_].*;/{
+ s/^/extern /
+ b
+}
+/^[a-zA-Z].*/ {
+ /^[^;][^;]*$/ {
+ s/^/extern /
+ b
+ }
+}
+/^ */b
+t
+d
diff --git a/language/japanese/ptex/jbibextra.c b/language/japanese/ptex/jbibextra.c
new file mode 100644
index 0000000000..72ccd175ee
--- /dev/null
+++ b/language/japanese/ptex/jbibextra.c
@@ -0,0 +1,485 @@
+/*
+ * Auxilliary routines for BibTeX in C.
+ *
+ * Tim Morgan 2/15/88
+ * Eduardo Krell 4/21/88
+ */
+
+/*
+ * JBibTeX Version by Shouichi Matsui
+ * matsui@denken.or.jp (matsui%denken.or.jp@uunet.uu.net)
+ * 1989-05-02
+ * Last updated: 1990-12-29
+ * many codes are from ../cjtex/extra.c by T. Sakurai
+ */
+/*
+ * Modified for pTeX 2.1 by Kazunori Aasayama
+ * asayama@kuis.kyoto-u.ac.jp Sep. 4, 1995
+ * Modified for pTeX 2.1.5 by Kazunori Aasayama
+ * asayama@vsp.cpg.sony.co.jp March. 14, 1997
+ */
+
+/*
+ Change DEFAULT_FILE_CODE, DEFAULT_TERM_CODE definition for your site code
+ 1 JIS; Kanji-in ESC$@, Kanji-out ESC(J
+ 2 JIS; Kanji-in ESC$@, Kanji-out ESC(H
+ 3 JIS; Kanji-in ESC$@, Kanji-out ESC(B
+ 4 JIS; Kanji-in ESC$B, Kanji-out ESC(J
+ 5 JIS; Kanji-in ESC$B, Kanji-out ESC(H
+ 6 JIS; Kanji-in ESC$B, Kanji-out ESC(B
+ 10 Shift JIS
+ 20 EUC
+ */
+
+/* #define KANJI */
+#define KANJI_C
+#include "kanji.h"
+#include "jbibd.h"
+#include <kpathsea/variable.h>
+
+/*
+ const_string based_prog_name="BibTeX";
+ const_string based_prog_version="0.99c";
+ */
+
+#ifdef OUTJIS
+# define DEFAULT_FILE_CODE 6 /* JIS */
+# define DEFAULT_TERM_CODE 6 /* JIS */
+#else
+# ifdef OUTSJIS
+# define DEFAULT_FILE_CODE 10 /* SJIS */
+# define DEFAULT_TERM_CODE 10 /* SJIS */
+# else /* EUC */
+# ifdef OUTEUC
+# define DEFAULT_FILE_CODE 20 /* EUC */
+# define DEFAULT_TERM_CODE 20 /* EUC */
+# else
+# error /* unexpected. */
+# endif
+# endif
+#endif
+
+/* END OF SITE DEPENDENT DEFINITIONS */
+
+typedef ASCIIcode textchar;
+typedef struct kaninfo_s kaninfo;
+struct kaninfo_s{
+ char ktype, kstat;
+ textchar kpend;
+ int (*in_ln)();
+ int (*out_ch)();
+ kaninfo *next;
+};
+
+static kaninfo kanjiinfo_table[NOFILE];
+
+static int kanji_file_code, kanji_term_code; /* kanji code same as NTT-JTeX */
+static get_kanji_code();
+static set_kanji_type();
+
+boolean jbibtex_open_input (f, path_index, fopen_mode)
+ FILE **f;
+ int path_index;
+ const_string fopen_mode;
+{
+ boolean result;
+ result = open_input(f,path_index,fopen_mode);
+ if (result == false) return false;
+ set_kanji_type(*f, kanji_file_code);
+ return result;
+}
+
+boolean jbibtex_open_output (f, fopen_mode)
+ FILE **f;
+ const_string fopen_mode;
+{
+ boolean result;
+ result = open_output(f,fopen_mode);
+ if (result == false) return false;
+ set_kanji_type(*f, kanji_file_code);
+ return result;
+}
+
+boolean inputline(f)
+ FILE *f;
+{
+ int in;
+ register kaninfo *ki;
+
+ last = 0;
+ ki = &kanjiinfo_table[fileno(f)];
+ in = (*(ki->in_ln))(f,ki);
+ if (in == EOF && last == 0)
+ return false;
+ if (in != EOF && in != '\n' && in != '\r')
+ return false;
+
+ /* Don't bother using xord if we don't need to. */
+#ifdef NONASCII
+ /*
+ for (in = 0; in <= last; in++)
+ buffer[in] = xord[buffer[in]];
+ */
+#endif
+
+ return true;
+}
+
+jbibtex_printstr(s, c)
+ char *s, c;
+{
+ static unsigned char temp_buff[4096]; /* maybe too long */
+ sprintf(temp_buff, "%s%c", s, c);
+ jbibtex_Fputs(logfile, temp_buff);
+ jbibtex_Fputs(stdout, temp_buff);
+}
+
+jbibtex_putc(c, f)
+ textchar c;
+ FILE *f;
+{
+ register kaninfo *ki;
+
+ ki = &kanjiinfo_table[fileno(f)];
+ (*(ki->out_ch))(c, f, ki);
+}
+
+jbibtex_Fputs(f, s)
+ register FILE *f;
+ register textchar *s;
+{
+ register kaninfo *ki;
+
+ ki = &kanjiinfo_table[fileno(f)];
+ for (; *s; s++)
+ (*(ki->out_ch))(*s, f, ki);
+}
+
+initkanji()
+{
+ get_kanji_code();
+}
+
+/*** internal routines ***/
+
+/* kanji state */
+#define KAN_ASCII 0
+#define KAN_JIS_FIRST 1
+#define KAN_JIS_SECOND 2
+#define KAN_ASCII_KAN 3
+
+#define ESC '\033'
+#define KANJIBIT 0x80
+#define isTeXkanji(c) ((c)&KANJIBIT)
+#define deTeXkanji(c) ((c)&~KANJIBIT)
+
+static int in_ln_gen();
+static int in_ln_ascii();
+static int in_ln_jis();
+static int in_ln_sjis();
+
+static int out_ch_ascii();
+static int out_ch_jis();
+static int out_ch_sjis();
+static int out_ch_euc();
+
+static integer check_euc_kanji();
+static integer check_sj_kanji();
+static integer fix_kanji_range();
+
+static int (*in_ln_tab[])() = {
+ in_ln_ascii,
+ in_ln_jis,
+ in_ln_jis,
+ in_ln_jis,
+ in_ln_jis,
+ in_ln_jis,
+ in_ln_jis,
+ 0,
+ 0,
+ 0,
+ in_ln_sjis,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ in_ln_jis
+};
+static int (*out_ch_tab[])() = {
+ out_ch_ascii,
+ out_ch_jis,
+ out_ch_jis,
+ out_ch_jis,
+ out_ch_jis,
+ out_ch_jis,
+ out_ch_jis,
+ 0,
+ 0,
+ 0,
+ out_ch_sjis,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ out_ch_euc
+};
+struct {
+ char esc_in, esc_out;
+} jis_esc_tab[] = {
+ {'\0', '\0'}, /* dummy */
+ {'@', 'J'},
+ {'@', 'H'},
+ {'@', 'B'},
+ {'B', 'J'},
+ {'B', 'H'},
+ {'B', 'B'}
+};
+
+static
+get_kanji_code()
+{
+ extern int atoi();
+ register char *p;
+
+ if (prockanjicode == JIS) kanji_file_code = 6;
+ else if (prockanjicode == EUC) kanji_file_code = 20;
+ else if (prockanjicode == SJIS) kanji_file_code = 10;
+ else kanji_file_code = DEFAULT_FILE_CODE;
+ kanji_term_code = DEFAULT_TERM_CODE;
+
+ if( p=kpse_var_value("BIBFILECODE") )
+ kanji_file_code = atoi(p);
+ if( (kanji_file_code<1)||(kanji_file_code>20)||
+ (in_ln_tab[kanji_file_code] == 0) ) {
+ fprintf(stderr,"Kanji File Code:%d is illegal. I'll use system default\n",
+ kanji_file_code);
+ kanji_file_code = DEFAULT_FILE_CODE;
+ }
+ if( p=kpse_var_value("BIBTERMCODE") )
+ kanji_term_code = atoi(p);
+ if( (kanji_term_code<1)||(kanji_term_code>20)||
+ (in_ln_tab[kanji_term_code] == 0 ) ) {
+ fprintf(stderr,"Kanji Term Code:%d is illegal. I'll use system default\n",
+ kanji_term_code);
+ kanji_term_code = DEFAULT_TERM_CODE;
+ }
+ set_kanji_type(stdout,kanji_term_code);
+ set_kanji_type(stderr,kanji_term_code);
+}
+
+static
+set_kanji_type(f, ktype)
+ FILE *f;
+ int ktype;
+{
+ kaninfo *ki;
+ ki = &kanjiinfo_table[fileno(f)];
+ ki->ktype = ktype;
+ ki->kstat = KAN_ASCII;
+ ki->in_ln = in_ln_tab[ktype];
+ ki->out_ch = out_ch_tab[ktype];
+}
+
+static
+int in_ln_ascii(f, ki)
+ register FILE *f;
+ kaninfo *ki;
+{
+ register int i;
+
+ while ( last < bufsize && ((i = getc(f)) != EOF) && i != '\n' && i != '\r') {
+#ifdef NONASCII
+ buffer[last++] = i;
+#else
+ buffer[last++] = (i > 127 || i < 0)?' ':i;
+#endif
+ }
+ return (i);
+}
+
+static
+int in_ln_jis(f, ki)
+ FILE *f;
+ kaninfo *ki;
+{
+ return (in_ln_gen(f, ki, check_euc_kanji, fix_kanji_range));
+}
+
+static
+int in_ln_sjis(f, ki)
+ FILE *f;
+ kaninfo *ki;
+{
+ return (in_ln_gen(f, ki, check_sj_kanji, SJIStoEUC));
+}
+
+static integer
+check_euc_kanji(c, ki)
+ textchar c;
+ kaninfo *ki;
+{
+ /* An illegal kanji should be detected, but ... */
+ if (isTeXkanji(c)) {
+ ki->kpend = c;
+ ki->kstat = KAN_ASCII_KAN;
+ } else
+ buffer[last++] = c;
+}
+
+static integer
+check_sj_kanji(c, ki)
+ textchar c;
+ kaninfo *ki;
+{
+ if (c >= 0xe0 || c >= 0x80 && c < 0xa0) {
+ ki->kpend = c;
+ ki->kstat = KAN_ASCII_KAN;
+ } else if (c < 0x80)
+ buffer[last++] = c;
+ else {
+ /* Web procedure should be called for a better error handling. */
+ fprintf(stderr, "\n1-byte kana (shift-jis) ignored.\n");
+ buffer[last++] = '?';
+ }
+}
+
+static
+int in_ln_gen(f, ki, checkkanji, makekanji)
+ register FILE *f;
+ register kaninfo *ki;
+ int (*checkkanji)(), (*makekanji)();
+{
+ register int i;
+
+ while ( last < bufsize && ((i = getc(f)) != EOF) && i != '\n' && i !='\r') {
+ if (ki->kstat == KAN_ASCII) {
+ if (i == ESC) {
+ if ((i = getc(f)) == '$') {
+ getc(f);
+ ki->kstat = KAN_JIS_SECOND;
+ } else if (i == '(') {
+ getc(f);
+ /* ki->kstat = KAN_ASCII; */
+ } else {
+ /* Web procedure should be called for a better error handling. */
+ fprintf(stderr,"\nText line contains an invalid escape sequence\n");
+ exit(1);
+ }
+ } else
+ (*checkkanji)(i, ki);
+ } else if (ki->kstat == KAN_JIS_FIRST) {
+ integer c;
+ if (last >= bufsize-1)
+ return(i);
+ c = fix_kanji_range(JIStoEUC(((integer)ki->kpend << 8) | i));
+ buffer[last++] = c >> 8;
+ buffer[last++] = c & 0xff;
+ ki->kstat = KAN_JIS_SECOND;
+ } else if (ki->kstat == KAN_JIS_SECOND) {
+ if (i == ESC) {
+ if ((i = getc(f)) == '$') {
+ getc(f);
+ /* ki->kstat = KAN_JIS_SECOND; */
+ } else if (i == '(') {
+ getc(f);
+ ki->kstat = KAN_ASCII;
+ } else {
+ /* Web procedure should be called for a better error handling. */
+ fprintf(stderr,"\nText line contains an invalid escape sequence\n");
+ exit(1);
+ }
+ } else if (i < ' ') {
+ buffer[last++] = i;
+ } else {
+ ki->kpend = i;
+ ki->kstat = KAN_JIS_FIRST;
+ }
+ } else /*if (ki->kstat == KAN_ASCII_KAN)*/ {
+ integer c;
+ if (last >= bufsize-1)
+ return(i);
+ c = fix_kanji_range((*makekanji)(((integer)ki->kpend << 8) | i));
+ buffer[last++] = c >> 8;
+ buffer[last++] = c & 0xff;
+ ki->kstat = KAN_ASCII;
+ }
+ }
+ return (i);
+}
+
+static
+out_ch_ascii(c, f, ki)
+ textchar c;
+ FILE *f;
+ kaninfo *ki;
+{
+ putc(deTeXkanji(c), f);
+}
+
+static
+out_ch_jis(c, f, ki)
+ textchar c;
+ FILE *f;
+ register kaninfo *ki;
+{
+ int cj;
+
+ if (ki->kstat == KAN_JIS_FIRST) {
+ cj = EUCtoJIS(((integer)ki->kpend << 8) | c);
+ putc(cj >> 8, f);
+ putc(cj & 0xff, f);
+ ki->kstat = KAN_JIS_SECOND;
+ } else if (isTeXkanji(c)) {
+ if (ki->kstat == KAN_ASCII) {
+ putc(ESC, f);
+ putc('$', f);
+ putc(jis_esc_tab[ki->ktype].esc_in, f);
+ }
+ ki->kpend = c;
+ ki->kstat = KAN_JIS_FIRST;
+ } else {
+ if (ki->kstat == KAN_JIS_SECOND) {
+ putc(ESC, f);
+ putc('(', f);
+ putc(jis_esc_tab[ki->ktype].esc_out, f);
+ }
+ putc(c, f);
+ ki->kstat = KAN_ASCII;
+ }
+}
+
+static
+out_ch_sjis(c, f, ki)
+ textchar c;
+ FILE *f;
+ register kaninfo *ki;
+{
+ textchar c1, c2;
+
+ if (ki->kstat == KAN_ASCII_KAN) {
+ integer csj;
+ csj = EUCtoSJIS(((integer)ki->kpend << 8) | c);
+ putc(csj >> 8, f);
+ putc(csj & 0xff, f);
+ ki->kstat = KAN_ASCII;
+ } else if (isTeXkanji(c)) {
+ ki->kpend = c;
+ ki->kstat = KAN_ASCII_KAN;
+ } else
+ putc(c, f);
+}
+
+static
+out_ch_euc(c, f, ki)
+ textchar c;
+ FILE *f;
+ kaninfo *ki;
+{
+ putc(c, f);
+}
+
+/*
+ * Kanji conversion functions
+ */
+
+static integer
+fix_kanji_range(c)
+ integer c;
+{
+ return (c < 0xa100 || (c >= 0xa900 && c <= 0xafff) || c >= 0xf500) ?
+ 0xa2a3 : c;
+}
diff --git a/language/japanese/ptex/jbibextra.h b/language/japanese/ptex/jbibextra.h
new file mode 100644
index 0000000000..c030aae06e
--- /dev/null
+++ b/language/japanese/ptex/jbibextra.h
@@ -0,0 +1,27 @@
+#include "cpascal.h"
+#include "kanji.h"
+
+/* re-define aopenin, aopenout */
+#undef aopenin
+#undef aopenout
+#define aopenin(f, p) jbibtex_open_input (&(f), p, FOPEN_R_MODE)
+#define aopenout(f) jbibtex_open_output (&(f), FOPEN_W_MODE)
+
+/* override open_input,open_output */
+#define open_input(f,p,m) jbibtex_open_input(f,p,m)
+#define open_output(f,p,m) jbibtex_open_output(f,p,m)
+
+#undef Fputs
+#define Fputs(f,s) jbibtex_Fputs(f,s)
+#undef putc
+#define putc(c,f) jbibtex_putc(c,f)
+
+#define printstr(s,c) jbibtex_printstr(s,c)
+
+extern boolean jbibtex_open_input();
+extern boolean jbibtex_open_output();
+extern jbibtex_printstr();
+extern jbibtex_Fputs();
+extern jbibtex_putc();
+extern boolean inputline();
+extern initkanji();
diff --git a/language/japanese/ptex/jbibtex.ch b/language/japanese/ptex/jbibtex.ch
new file mode 100644
index 0000000000..43bd83ea1b
--- /dev/null
+++ b/language/japanese/ptex/jbibtex.ch
@@ -0,0 +1,1649 @@
+% Change file for BibTeX in C, originally by Howard Trickey.
+%
+% 05/28/84 Initial implementation, version 0.41 of BibTeX
+% 07/01/84 Version 0.41a of BibTeX.
+% 12/17/84 Version 0.97c of BibTeX.
+% 02/12/85 Version 0.98c of BibTeX.
+% 02/25/85 Newer version 0.98c of BibTeX.
+% 03/25/85 Version 0.98f of BibTeX
+% 05/23/85 Version 0.98i of BibTeX
+% 02/11/88 Version 0.99b of BibTeX
+% 04/04/88 Version 0.99c; converted for use with web2c (ETM).
+% 11/30/89 Use FILENAMESIZE instead of 1024 (KB).
+% 03/09/90 `int' is a bad variable name for C.
+% (more recent changes in the ChangeLog)
+%
+% 5/ 2/89 Version 0.20 of JBiBTeX by Shouichi Matsui
+% 12/25/90 Version 0.30 of JBibTeX by Shouichi Matsui
+% 1/ 1/91 last update for JBibTeX 0.30 by Shouichi Matsui
+% 10/30/92 last update for JBibTeX 0.31 for bug fix by Shouichi Matsui
+% 11/02/94 Version 0.32 for use with web2c 6.1, by Takafumi Sakurai
+%
+%
+
+% [0] Let bibtex.tex work with latest webmac (which defines \ET, hence
+% making E active loses).
+@x
+\catcode`E=13 \uppercase{\def E{e}}
+\def\\#1{\hbox{\let E=\drop\it#1\/\kern.05em}} % italic type for identifiers
+@y
+\let\maybe = \iffalse % process only changed sections
+@z
+
+@x only print chnages
+\def\title{\BibTeX\ }
+@y
+\let\maybe=\iffalse
+\def\title{J\BibTeX\ 0.32 Changes for C Version \BibTeX\ }
+@z
+
+@x
+ \def\titlepage{F}
+ \centerline{\:\titlefont The {\:\ttitlefont \BibTeX} preprocessor}
+ \vskip 15pt \centerline{(Version 0.99c---\today)} \vfill}
+@y
+ \def\titlepage{F}
+ \centerline{\:\titlefont The {\:\ttitlefont J\BibTeX} preprocessor}
+ \vskip 15pt \centerline{(Version 0.32 base on C Version \BibTeX 0.99c---\today)} \vfill}
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% [1] banner
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+@d banner=='This is BibTeX, Version 0.99c' {printed when the program starts}
+@y
+@d banner=='This is JBibTeX, Version 0.99c-j0.33'
+ {printed when the program starts}
+@z
+
+% [2] `term_in' and `term_out' are standard input and output. But
+% there is a complication: BibTeX passes `term_out' to some routines as
+% a var parameter. web2c turns a var parameter f into &f at the calling
+% side -- and stdout is sometimes implemented as `&_iob[1]' or some
+% such. An address of an address is invalid. Therefore, we define
+% variables `standardinput' and `standardoutput' in openinout.c.
+@x
+@d term_out == tty
+@d term_in == tty
+@y
+@d term_out == standard_output
+@d term_in == standard_input
+
+@<Globals in the outer block@>=
+standard_input, standard_output: text;
+@z
+
+@x [4] Turn debug..gubed et al. into #ifdef's.
+@d debug == @{ { remove the `|@{|' when debugging }
+@d gubed == @t@>@} { remove the `|@}|' when debugging }
+@f debug == begin
+@f gubed == end
+@#
+@d stat == @{ { remove the `|@{|' when keeping statistics }
+@d tats == @t@>@} { remove the `|@}|' when keeping statistics }
+@f stat == begin
+@f tats == end
+@#
+@d trace == @{ { remove the `|@{|' when in |trace| mode }
+@d ecart == @t@>@} { remove the `|@}|' when in |trace| mode }
+@f trace == begin
+@f ecart == end
+@y
+@d debug == ifdef('TEXMF_DEBUG')
+@d gubed == endif('TEXMF_DEBUG')
+@f debug == begin
+@f gubed == end
+@#
+@d stat == ifndef('NO_BIBTEX_STAT')
+@d tats == endifn('NO_BIBTEX_STAT')
+@f stat==begin
+@f tats==end
+@#
+@d trace == ifdef@&('TRACE')
+@d ecart == endif@&('TRACE')
+@f trace == begin
+@f ecart == end
+@z
+
+@x [10] Don't print the banner unless verbose, and initialize dynamic arrays.
+begin
+initialize;
+print_ln(banner);@/
+@y
+@<Define |parse_arguments|@>
+begin
+standard_input := stdin;
+standard_output := stdout;
+@#
+max_ent_ints := MAX_ENT_INTS;
+max_ent_strs := MAX_ENT_STRS;
+pool_size := POOL_SIZE;
+max_bib_files := MAX_BIB_FILES;
+max_fields := MAX_FIELDS;
+@#
+{Add one to the sizes because the Pascal arrays start at 1, not 0.}
+bib_file := XTALLOC (max_bib_files + 1, alpha_file);
+bib_list := XTALLOC (max_bib_files + 1, str_number);
+entry_ints := XTALLOC (max_ent_ints + 1, integer);
+entry_strs := XTALLOC ((max_ent_strs + 1) * (ent_str_size + 1), ASCII_code);
+wiz_functions := XTALLOC (wiz_fn_space + 1, hash_ptr2);
+field_info := XTALLOC (max_fields + 1, str_number);
+s_preamble := XTALLOC (max_bib_files + 1, str_number);
+str_pool := XTALLOC (pool_size + 1, ASCII_code);
+@#
+initialize;
+if verbose then begin
+ print (banner);
+ print_ln (version_string);
+end;
+@z
+
+% [10] Possibly exit with bad status. It doesn't seem worth it to move
+% the definitions of the |history| values to above this module; hence the 1.
+@x
+exit_program:
+end.
+@y
+exit_program:
+if (history > 1) then uexit (history);
+end.
+@z
+
+@x [13] Remove nonlocal goto.
+ goto exit_program;
+@y
+ uexit (1);
+@z
+
+@x [14] Increase some constants, and uppercase others for dynamic arrays.
+@<Constants in the outer block@>=
+@y
+@<Constants in the outer block@>=
+@!hash_prime = 30011; {a prime number about 85\% of |hash_size| and |>= 128|}
+@!hash_size = 35307; {must be |>= max_strings| and |>= hash_prime|}
+@!hash_base = empty + 1; {lowest numbered hash-table location}
+@!hash_max = hash_base + hash_size - 1; {highest numbered hash-table location}
+@!hash_maxp1 = hash_max + 1; {because we need a scalar constant later}
+@!max_hash_value = hash_prime + hash_prime - 2 + 127; {|h|'s maximum value}
+@!quote_next_fn = hash_base - 1; {special marker used in defining functions}
+@!end_of_def = hash_max + 1; {another such special marker}
+@!undefined = hash_max + 1; {a special marker used for |type_list|}
+@z
+
+@x [still 14]
+@!buf_size=1000; {maximum number of characters in an input line (or string)}
+@y
+@!buf_size=9000; {maximum number of characters in an input line (or string)}
+@z
+
+@x [still 14]
+@!max_bib_files=20; {maximum number of \.{.bib} files allowed}
+@!pool_size=65000; {maximum number of characters in strings}
+@!max_strings=4000; {maximum number of strings, including pre-defined;
+ must be |<=hash_size|}
+@!max_cites=750; {maximum number of distinct cite keys; must be
+ |<=max_strings|}
+@!min_crossrefs=2; {minimum number of cross-refs required for automatic
+ |cite_list| inclusion}
+@!wiz_fn_space=3000; {maximum amount of |wiz_defined|-function space}
+@y [still 14]
+@!MAX_BIB_FILES=20; {initial number of \.{.bib} files allowed}
+@!POOL_SIZE=65000; {initial number of characters in strings}
+@!max_strings=35000; {maximum number of strings, including pre-defined;
+ must be |<=hash_size|}
+@!max_cites=5000; {maximum number of distinct cite keys; must be
+ |<=max_strings|}
+@!WIZ_FN_SPACE=3400; {initial amount of |wiz_defined|-function space}
+{|min_crossrefs| can be set at runtime now.}
+@z
+
+@x [still 14] handle long citation strings
+@!max_ent_ints=3000; {maximum number of |int_entry_var|s
+ (entries $\times$ |int_entry_var|s)}
+@!max_ent_strs=3000; {maximum number of |str_entry_var|s
+ (entries $\times$ |str_entry_var|s)}
+@!ent_str_size=100; {maximum size of a |str_entry_var|; must be |<=buf_size|}
+@!glob_str_size=1000; {maximum size of a |str_global_var|;
+ must be |<=buf_size|}
+@!max_fields=17250; {maximum number of fields (entries $\times$ fields,
+@y
+@!MAX_ENT_INTS=3000; {initial number of |int_entry_var|s
+ (entries $\times$ |int_entry_var|s)}
+@!MAX_ENT_STRS=3000; {initial number of |str_entry_var|s
+ (entries $\times$ |str_entry_var|s)}
+@!ent_str_size=250; {maximum size of a |str_entry_var|; must be |<=buf_size|}
+@!glob_str_size=3000; {maximum size of a |str_global_var|;
+ must be |<=buf_size|}
+@!MAX_FIELDS=5000; {initial number of fields (entries $\times$ fields,
+@z
+
+@x [15] Increase more constants in the web defines.
+@d hash_size=5000 {must be |>= max_strings| and |>= hash_prime|}
+@d hash_prime=4253 {a prime number about 85\% of |hash_size| and |>= 128|
+ and |< @t$2^{14}-2^6$@>|}
+@d file_name_size=40 {file names shouldn't be longer than this}
+@d max_glob_strs=10 {maximum number of |str_global_var| names}
+@y
+{|hash_size| and |hash_prime| are |const| constants now.}
+@d max_glob_strs=20 {maximum number of |str_global_var| names
+ \.{James.Ashton@keating.anu.edu.au} says his
+ indxcite package needs at least 15 here.}
+@#
+@d file_name_size==maxint {file names have no arbitrary maximum length}
+@#
+{For dynamic allocation.}
+@d x_entry_strs_tail(#) == (#)]
+@d x_entry_strs(#) == entry_strs[(#) * (ent_str_size+1) + x_entry_strs_tail
+@z
+
+@x [16] Add new variables-that-used-to-be-constants for dynamic arrays.
+@<Globals in the outer block@>=
+@y
+@<Globals in the outer block@>=
+@!max_ent_ints: integer;
+@!max_ent_strs: integer;
+@!pool_size: integer;
+@!max_bib_files: integer;
+@!wiz_fn_space: integer;
+@!max_fields: integer;
+@z
+
+@x [17] Remove painfully small upper bound on hash_prime
+if (hash_prime >= (16384-64)) then bad:=10*bad+6;
+@y
+@z
+
+@x [22, 23, 27, 28] Allow any character as input. [22]
+@!ASCII_code=0..127; {seven-bit numbers}
+@y
+@!ASCII_code=0..255; {eight-bit numbers}
+@z
+
+@x [23]
+@d text_char == char {the data type of characters in text files}
+@d first_text_char=0 {ordinal number of the smallest element of |text_char|}
+@d last_text_char=127 {ordinal number of the largest element of |text_char|}
+
+@<Local variables for initialization@>=
+i:0..last_text_char; {this is the first one declared}
+@y
+@d text_char == ASCII_code {the data type of characters in text files}
+@d first_text_char=0 {ordinal number of the smallest element of |text_char|}
+@d last_text_char=255 {ordinal number of the largest element of |text_char|}
+
+@<Local variables for initialization@>=
+i:integer;
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [27]
+for i:=1 to @'37 do xchr[i]:=' ';
+xchr[tab]:=chr(tab);
+@y
+for i:=1 to @'37 do xchr[i]:=' ';
+xchr[tab]:=chr(tab);
+for i:=@'200 to @'237 do xchr[i]:=chr(i-@'200);
+for i:=@'240 to 255 do xchr[i]:=chr(i);
+xchr[@'33]:=chr(@'33); {escape char}
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [28]
+@<Set initial values of key variables@>=
+for i:=first_text_char to last_text_char do xord[chr(i)]:=invalid_code;
+for i:=1 to @'176 do xord[xchr[i]]:=i;
+@y
+@<Set initial values of key variables@>=
+for i:=first_text_char to last_text_char do xord[i]:=invalid_code;
+for i:=1 to @'176 do xord[i]:= i;
+for i:=@'200 to @'237 do xord[i]:= i-@'200;
+for i:=@'240 to 255 do xord[i]:=i;
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui for ver. 0.30
+@d period = "." {these are three}
+@d question_mark = "?" {string-ending characters}
+@d exclamation_mark = "!" {of interest in \.{add.period\$}}
+@y
+@d period = "." {these are three}
+@d question_mark = "?" {string-ending characters}
+@d exclamation_mark = "!" {of interest in \.{add.period\$}}
+@d zen_pun_first = 161 {Zenkaku punctuation first byte; in EUC}
+@d zen_space = 161 {Zenkaku space first, second byte; in EUC}
+@d zen_kuten = 162 {Zenkaku kuten second byte; in EUC}
+@d zen_ten = 163 {Zenkaku ten second byte; in EUC}
+@d zen_comma = 164 {Zenkaku comman second byte; in EUC}
+@d zen_period = 165 {Zenkaku period second byte; in EUC}
+@d zen_question = 169 {Zenkaku question mark second byte; in EUC}
+@d zen_exclamation = 170 {Zenkaku exclamation mark second byte; in EUC}
+@z
+@x Changes for JBibTeX by Shouichi Matsui [32]
+@<Set initial values of key variables@>=
+for i:=0 to @'177 do lex_class[i] := other_lex;
+for i:=0 to @'37 do lex_class[i] := illegal;
+lex_class[invalid_code] := illegal;
+lex_class[tab] := white_space;
+lex_class[space] := white_space;
+lex_class[tie] := sep_char;
+lex_class[hyphen] := sep_char;
+for i:=@'60 to @'71 do lex_class[i] := numeric;
+for i:=@'101 to @'132 do lex_class[i] := alpha;
+for i:=@'141 to @'172 do lex_class[i] := alpha;
+@y
+@<Set initial values of key variables@>=
+for i:=0 to @'377 do lex_class[i] := other_lex;
+for i:=0 to @'37 do lex_class[i] := illegal;
+lex_class[invalid_code] := illegal;
+lex_class[tab] := white_space;
+lex_class[13] := white_space;
+lex_class[space] := white_space;
+lex_class[tie] := sep_char;
+lex_class[hyphen] := sep_char;
+for i:=@'60 to @'71 do lex_class[i] := numeric;
+for i:=@'101 to @'132 do lex_class[i] := alpha;
+for i:=@'141 to @'172 do lex_class[i] := alpha;
+for i:=@'200 to @'237 do lex_class[i] := illegal;
+for i:=@'240 to 255 do lex_class[i] := alpha;
+lex_class[@'33]:=alpha;
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [33]
+@<Set initial values of key variables@>=
+for i:=0 to @'177 do id_class[i] := legal_id_char;
+for i:=0 to @'37 do id_class[i] := illegal_id_char;
+id_class[space] := illegal_id_char;
+id_class[tab] := illegal_id_char;
+id_class[double_quote] := illegal_id_char;
+id_class[number_sign] := illegal_id_char;
+id_class[comment] := illegal_id_char;
+id_class[single_quote] := illegal_id_char;
+id_class[left_paren] := illegal_id_char;
+id_class[right_paren] := illegal_id_char;
+id_class[comma] := illegal_id_char;
+id_class[equals_sign] := illegal_id_char;
+id_class[left_brace] := illegal_id_char;
+id_class[right_brace] := illegal_id_char;
+@y
+@<Set initial values of key variables@>=
+for i:=0 to @'377 do id_class[i] := legal_id_char;
+for i:=0 to @'37 do id_class[i] := illegal_id_char;
+for i:=@'200 to @'237 do id_class[i] := illegal_id_char;
+id_class[@'33] := legal_id_char;
+id_class[space] := illegal_id_char;
+id_class[tab] := illegal_id_char;
+id_class[double_quote] := illegal_id_char;
+id_class[number_sign] := illegal_id_char;
+id_class[comment] := illegal_id_char;
+id_class[single_quote] := illegal_id_char;
+id_class[left_paren] := illegal_id_char;
+id_class[right_paren] := illegal_id_char;
+id_class[comma] := illegal_id_char;
+id_class[equals_sign] := illegal_id_char;
+id_class[left_brace] := illegal_id_char;
+id_class[right_brace] := illegal_id_char;
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [35]
+char_width[@'167] := 722;
+char_width[@'170] := 528;
+char_width[@'171] := 528;
+char_width[@'172] := 444;
+char_width[@'173] := 500;
+char_width[@'174] :=1000;
+char_width[@'175] := 500;
+char_width[@'176] := 500;
+@y
+char_width[@'167] := 722;
+char_width[@'170] := 528;
+char_width[@'171] := 528;
+char_width[@'172] := 444;
+char_width[@'173] := 500;
+char_width[@'174] :=1000;
+char_width[@'175] := 500;
+char_width[@'176] := 500;
+for i:=@'240 to 254 do char_width[i]:=514;
+@z
+
+% [37] file_name_size no longer exists. See comments in tex.ch for why
+% we change the element type to text_char.
+@x
+@!name_of_file:packed array[1..file_name_size] of char;
+ {on some systems this is a \&{record} variable}
+@!name_length:0..file_name_size;
+ {this many characters are relevant in |name_of_file| (the rest are blank)}
+@!name_ptr:0..file_name_size+1; {index variable into |name_of_file|}
+@y
+@!name_of_file:^text_char;
+@!name_length:integer;
+ {this many characters are relevant in |name_of_file| }
+@!name_ptr:integer; {index variable into |name_of_file|}
+@z
+
+@x [38] File opening.
+The \ph\ compiler with which the present version of \TeX\ was prepared has
+extended the rules of \PASCAL\ in a very convenient way. To open file~|f|,
+we can write
+$$\vbox{\halign{#\hfil\qquad&#\hfil\cr
+|reset(f,@t\\{name}@>,'/O')|&for input;\cr
+|rewrite(f,@t\\{name}@>,'/O')|&for output.\cr}}$$
+The `\\{name}' parameter, which is of type `\ignorespaces|packed
+array[@t\<\\{any}>@>] of text_char|', stands for the name of
+the external file that is being opened for input or output.
+Blank spaces that might appear in \\{name} are ignored.
+
+The `\.{/O}' parameter tells the operating system not to issue its own
+error messages if something goes wrong. If a file of the specified name
+cannot be found, or if such a file cannot be opened for some other reason
+(e.g., someone may already be trying to write the same file), we will have
+|@!erstat(f)<>0| after an unsuccessful |reset| or |rewrite|. This allows
+\TeX\ to undertake appropriate corrective action.
+
+\TeX's file-opening procedures return |false| if no file identified by
+|name_of_file| could be opened.
+
+@d reset_OK(#)==erstat(#)=0
+@d rewrite_OK(#)==erstat(#)=0
+
+@<Procedures and functions for file-system interacting@>=
+function erstat(var f:file):integer; extern; {in the runtime library}
+@#@t\2@>
+function a_open_in(var f:alpha_file):boolean; {open a text file for input}
+begin reset(f,name_of_file,'/O'); a_open_in:=reset_OK(f);
+end;
+@#
+function a_open_out(var f:alpha_file):boolean; {open a text file for output}
+begin rewrite(f,name_of_file,'/O'); a_open_out:=rewrite_OK(f);
+end;
+@y
+@ File opening will be done in C.
+@d no_file_path = -1
+@z
+
+@x [39] Do file closing in C.
+@<Procedures and functions for file-system interacting@>=
+procedure a_close(var f:alpha_file); {close a text file}
+begin close(f);
+end;
+@y
+File closing will be done in C, too.
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% [47] input for JBibTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+ while (not eoln(f)) do
+ begin
+ if (last >= buf_size) then
+ buffer_overflow;
+ buffer[last]:=xord[f^];
+ get(f); incr(last);
+ end;
+ get(f);
+@y
+ if (not input_line(f)) then
+ buffer_overflow;
+@z
+
+@x [48] Dynamically allocate str_pool.
+@!str_pool : packed array[pool_pointer] of ASCII_code; {the characters}
+@y
+@!str_pool : ^ASCII_code; {the characters}
+@z
+
+@x [49] pool_size is a variable now, so can't be used as a constant.
+@!pool_pointer = 0..pool_size; {for variables that point into |str_pool|}
+@y
+@!pool_pointer = integer; {for variables that point into |str_pool|}
+@z
+
+@x [53] Reallocate str_pool.
+overflow('pool size ',pool_size);
+@y
+BIB_XRETALLOC ('str_pool', str_pool, ASCII_code, pool_size,
+ pool_size + POOL_SIZE);
+@z
+
+% [58] (start_name) reallocate name_of_file for the new name and
+% terminate with null.
+@x
+name_ptr := 1;
+@y
+name_ptr := 1;
+free (name_of_file);
+name_of_file := xmalloc (length (file_name) + 2);
+@z
+
+@x
+name_length := length(file_name);
+@y
+name_length := length(file_name);
+name_of_file[name_length + 1] := 0;
+@z
+
+% [60] (add_extension) Don't pad name_of_file with blanks, terminate
+% with null. And junk the overflow check, since Web2c can't translate
+% the print statement properly and it can never happen, anyway.
+@x
+if (name_length + length(ext) > file_name_size) then
+ begin
+ print ('File=',name_of_file,', extension=');
+ print_pool_str (ext); print_ln (',');
+ file_nm_size_overflow;
+ end;
+@y
+@z
+@x
+name_ptr := name_length+1;
+while (name_ptr <= file_name_size) do {pad with blanks}
+ begin
+ name_of_file[name_ptr] := ' ';
+ incr(name_ptr);
+ end;
+@y
+name_of_file[name_length + 1] := 0;
+@z
+
+@x [61] (add_area) Delete this print of name_of_file as well.
+if (name_length + length(area) > file_name_size) then
+ begin
+ print ('File=');
+ print_pool_str (area); print (name_of_file,',');
+ file_nm_size_overflow;
+ end;
+@y
+@z
+
+@x [65] hash_base and hash_max are now Pascal consts, instead of web macros.
+@d hash_base = empty + 1 {lowest numbered hash-table location}
+@d hash_max = hash_base + hash_size - 1 {highest numbered hash-table location}
+@y
+@z
+@x
+@!hash_used : hash_base..hash_max+1; {allocation pointer for hash table}
+@y
+@!hash_used : hash_base..hash_maxp1; {allocation pointer for hash table}
+@z
+
+@x [68] This is const now.
+@d max_hash_value = hash_prime+hash_prime-2+127 {|h|'s maximum value}
+@y
+@z
+
+@x [77] The predefined string array starts at zero instead of one.
+for i:=1 to len do
+ buffer[i] := xord[pds[i]];
+@y
+for i:=1 to len do
+ buffer[i] := xord[pds[i-1]];
+@z
+
+@x [97] Can't do this tangle-time arithmetic with file_name_size.
+@!aux_name_length : 0..file_name_size+1; {\.{.aux} name sans extension}
+@y
+@!aux_name_length : integer;
+@z
+
+@x [100] Reading the aux file name and command-line processing.
+This procedure consists of a loop that reads and processes a (nonnull)
+\.{.aux} file name. It's this module and the next two that must be
+changed on those systems using command-line arguments. Note: The
+|term_out| and |term_in| files are system dependent.
+
+@<Procedures and functions for the reading and processing of input files@>=
+procedure get_the_top_level_aux_file_name;
+label aux_found,@!aux_not_found;
+var @<Variables for possible command-line processing@>@/
+begin
+check_cmnd_line := false; {many systems will change this}
+loop
+ begin
+ if (check_cmnd_line) then
+ @<Process a possible command line@>
+ else
+ begin
+ write (term_out,'Please type input file name (no extension)--');
+ if (eoln(term_in)) then {so the first |read| works}
+ read_ln (term_in);
+ aux_name_length := 0;
+ while (not eoln(term_in)) do
+ begin
+ if (aux_name_length = file_name_size) then
+ begin
+ while (not eoln(term_in)) do {discard the rest of the line}
+ get(term_in);
+ sam_you_made_the_file_name_too_long;
+ end;
+ incr(aux_name_length);
+ name_of_file[aux_name_length] := term_in^;
+ get(term_in);
+ end;
+ end;
+ @<Handle this \.{.aux} name@>;
+aux_not_found:
+ check_cmnd_line := false;
+ end;
+aux_found: {now we're ready to read the \.{.aux} file}
+end;
+@y
+@<Procedures and functions for the reading and processing of input files@>=
+procedure get_the_top_level_aux_file_name;
+label aux_found,@!aux_not_found;
+begin
+ @<Process a possible command line@>
+ {Leave room for the \.., the extension, the junk byte at the
+ beginning, and the null byte at the end.}
+ init_kanji;
+ name_of_file := xmalloc (strlen (cmdline (optind)) + 4 + 2);
+ strcpy (name_of_file + 1, cmdline (optind));
+ aux_name_length := strlen (name_of_file + 1);
+ @<Handle this \.{.aux} name@>;
+aux_not_found: uexit (1);
+aux_found: {now we're ready to read the \.{.aux} file}
+end;
+@z
+
+% [101] Don't need this variable; we use argc to check if we have a
+% command line.
+@x
+@<Variables for possible command-line processing@>=
+@!check_cmnd_line : boolean; {|true| if we're to check the command line}
+@y
+@z
+
+@x [102] Get the aux file name from the command line.
+@<Process a possible command line@>=
+begin
+do_nothing; {the ``default system'' doesn't use the command line}
+end
+@y
+@<Process a possible command line@>=
+kpse_set_progname (argv[0]);
+parse_arguments;
+@z
+
+% [106] Don't use a path to find the aux file, and don't add the
+% extension if it's already there.
+@x
+add_extension (s_aux_extension); {this also sets |name_length|}
+aux_ptr := 0; {initialize the \.{.aux} file stack}
+if (not a_open_in(cur_aux_file)) then
+ sam_you_made_the_file_name_wrong;
+@y
+if strcmp (name_of_file + 1 + name_length - 3, 'aux') <> 0 then
+ add_extension (s_aux_extension); {this also sets |name_length|}
+aux_ptr := 0; {initialize the \.{.aux} file stack}
+if (not a_open_in(cur_aux_file,no_file_path)) then
+ sam_you_made_the_file_name_wrong;
+@z
+
+@x [110] Be silent unless verbose.
+print ('The top-level auxiliary file: ');
+print_aux_name;
+@y
+if verbose then begin
+ print ('The top-level auxiliary file: ');
+ print_aux_name;
+end;
+@z
+
+@x [117] bib_list is dynamically allocated.
+@!bib_list : array[bib_number] of str_number; {the \.{.bib} file list}
+@y
+@!bib_list : ^str_number; {the \.{.bib} file list}
+@z
+@x [still 117] bib_file also.
+@!bib_file : array[bib_number] of alpha_file; {corresponding |file| variables}
+@y
+@!bib_file : ^alpha_file; {corresponding |file| variables}
+@z
+
+@x [118] max_bib_files is a variable now, so can't be used as a const.
+@!bib_number = 0..max_bib_files; {gives the |bib_list| range}
+@y
+@!bib_number = integer; {gives the |bib_list| range}
+@z
+
+@x [123] Reallocate when we run out of bib files.
+ overflow('number of database files ',max_bib_files);
+@y
+begin
+ BIB_XRETALLOC ('bib_list', bib_list, str_number, max_bib_files,
+ max_bib_files + MAX_BIB_FILES);
+ {Already increased |max_bib_files|, so don't need to do it again.}
+ BIB_XRETALLOC ('bib_file', bib_file, alpha_file, max_bib_files,
+ max_bib_files);
+ BIB_XRETALLOC ('s_preamble', s_preamble, str_number, max_bib_files,
+ max_bib_files);
+end;
+@z
+
+@x [still 123] Use BIBINPUTS to search for the .bib file.
+add_extension (s_bib_extension);
+if (not a_open_in(cur_bib_file)) then
+ begin
+ add_area (s_bib_area);
+ if (not a_open_in(cur_bib_file)) then
+ open_bibdata_aux_err ('I couldn''t open database file ');
+ end;
+@y
+if (not a_open_in(cur_bib_file, kpse_bib_format)) then
+ open_bibdata_aux_err ('I couldn''t open database file ');
+@z
+
+@x [127] Use BSTINPUTS/TEXINPUTS to search for .bst files.
+add_extension (s_bst_extension);
+if (not a_open_in(bst_file)) then
+ begin
+ add_area (s_bst_area);
+ if (not a_open_in(bst_file)) then
+ begin
+ print ('I couldn''t open style file ');
+ print_bst_name;@/
+ bst_str := 0; {mark as unused again}
+ aux_err_return;
+ end;
+ end;
+@y
+if (not a_open_in(bst_file, kpse_bst_format)) then
+ begin
+ print ('I couldn''t open style file ');
+ print_bst_name;@/
+ bst_str := 0; {mark as unused again}
+ aux_err_return;
+ end;
+@z
+
+@x [127] Be silent unless verbose.
+print ('The style file: ');
+print_bst_name;
+@y
+if verbose then begin
+ print ('The style file: ');
+ print_bst_name;
+end;
+@z
+
+% [141] Don't pad with blanks.
+% Don't use a path to search for subsidiary aux files, either.
+@x
+while (name_ptr <= file_name_size) do {pad with blanks}
+ begin
+ name_of_file[name_ptr] := ' ';
+ incr(name_ptr);
+ end;
+if (not a_open_in(cur_aux_file)) then
+@y
+name_of_file[name_ptr] := 0;
+if (not a_open_in(cur_aux_file, no_file_path)) then
+@z
+
+% [151] This goto gets turned into a setjmp/longjmp by ./convert --
+% unfortunately, it is a nonlocal goto. ekrell@ulysses.att.com
+% implemented the conversion.
+@x
+buf_ptr2 := last; {to get the first input line}
+loop
+ begin
+ if (not eat_bst_white_space) then {the end of the \.{.bst} file}
+ goto bst_done;
+ get_bst_command_and_process;
+ end;
+bst_done: a_close (bst_file);
+@y
+buf_ptr2 := last; {to get the first input line}
+hack1;
+ begin
+ if (not eat_bst_white_space) then {the end of the \.{.bst} file}
+ hack2;
+ get_bst_command_and_process;
+ end;
+bst_done: a_close (bst_file);
+@z
+
+% max_ent_ints, max_ent_strs, max_fields are no longer const.
+@x [160] quote_next_fn and end_of_def are Pascal consts, instead of web macros.
+@d quote_next_fn = hash_base - 1 {special marker used in defining functions}
+@d end_of_def = hash_max + 1 {another such special marker}
+
+@<Types in the outer block@>=
+@!fn_class = 0..last_fn_class; {the \.{.bst} function classes}
+@!wiz_fn_loc = 0..wiz_fn_space; {|wiz_defined|-function storage locations}
+@!int_ent_loc = 0..max_ent_ints; {|int_entry_var| storage locations}
+@!str_ent_loc = 0..max_ent_strs; {|str_entry_var| storage locations}
+@!str_glob_loc = 0..max_glb_str_minus_1; {|str_global_var| storage locations}
+@!field_loc = 0..max_fields; {individual field storage locations}
+@y
+@<Types in the outer block@>=
+@!fn_class = 0..last_fn_class; {the \.{.bst} function classes}
+@!wiz_fn_loc = integer; {|wiz_defined|-function storage locations}
+@!int_ent_loc = integer; {|int_entry_var| storage locations}
+@!str_ent_loc = integer; {|str_entry_var| storage locations}
+@!str_glob_loc = 0..max_glb_str_minus_1; {|str_global_var| storage locations}
+@!field_loc = integer; {individual field storage locations}
+@z
+
+@x Dynamically allocate wiz_functions.
+@!wiz_functions : packed array[wiz_fn_loc] of hash_ptr2;
+@y
+@!wiz_functions : ^hash_ptr2;
+@z
+
+% [still 161] Convert entry_ints and entry_strs to dynamically-allocated
+% one-dimensional arrays; too bad C and Pascal lag Fortran in supporting
+% run-time dimensioning of multidimensional arrays. Other changes that
+% follow this one will convert every reference to entry_strs[p][q] to
+% x_entry_strs(p)(q), the equivalent of entry_strs[p*(ent_str_size+1) +
+% q], but hidden inside a macro to mask the addressing computation.
+% Although WEB does not have multi-argument macros, webman.tex shows how
+% to get the equivalent effect.
+@x
+@!entry_ints : array[int_ent_loc] of integer;
+@!num_ent_ints : int_ent_loc; {the number of distinct |int_entry_var| names}
+@!str_ent_ptr : str_ent_loc; {general |str_entry_var| location}
+@!entry_strs : array[str_ent_loc] of
+ packed array[0..ent_str_size] of ASCII_code;
+@y
+@!entry_ints : ^integer; {dynamically-allocated array}
+@!num_ent_ints : int_ent_loc; {the number of distinct |int_entry_var| names}
+@!str_ent_ptr : str_ent_loc; {general |str_entry_var| location}
+@!entry_strs : ^ASCII_code; {dynamically-allocated array}
+@z
+
+@x [still 161] Dynamically allocate field_info.
+@!field_info : packed array[field_loc] of str_number;
+@y
+@!field_info : ^str_number;
+@z
+
+@x [198] A variable named `int' is no good in C.
+@<Procedures and functions for handling numbers, characters, and strings@>=
+@y
+@d int == the_int
+@<Procedures and functions for handling numbers, characters, and strings@>=
+@z
+
+@x [200] Reallocate if out of wizard space.
+if (single_ptr + wiz_def_ptr > wiz_fn_space) then
+ begin
+ print (single_ptr + wiz_def_ptr : 0,': ');
+ overflow('wizard-defined function space ',wiz_fn_space);
+ end;
+@y
+if (single_ptr + wiz_def_ptr > wiz_fn_space) then
+ begin
+ BIB_XRETALLOC ('wiz_functions', wiz_functions, hash_ptr2,
+ wiz_fn_space, wiz_fn_space + WIZ_FN_SPACE);
+ end;
+@z
+
+@x [220] undefined is now a Pascal const, instead of a web macro
+@d undefined = hash_max + 1 {a special marker used for |type_list|}
+@y
+@z
+
+@x [223] Be silent unless verbose.
+ print ('Database file #',bib_ptr+1:0,': ');
+ print_bib_name;@/
+@y
+ if verbose then begin
+ print ('Database file #',bib_ptr+1:0,': ');
+ print_bib_name;
+ end;
+@z
+
+@x [226] Reallocate if out of fields.
+procedure check_field_overflow (@!total_fields : integer);
+begin
+if (total_fields > max_fields) then
+ begin
+ print_ln (total_fields:0,' fields:');
+ overflow('total number of fields ',max_fields);
+@y
+procedure check_field_overflow (@!total_fields : integer);
+var @!f_ptr: field_loc;
+ @!start_fields: field_loc;
+begin
+if (total_fields > max_fields) then
+ begin
+ start_fields := max_fields;
+ BIB_XRETALLOC ('field_info', field_info, str_number, max_fields,
+ total_fields + MAX_FIELDS);
+ {Initialize to |missing|.}
+ for f_ptr := start_fields to max_fields do begin
+ field_info[f_ptr] := missing;
+ end;
+@z
+
+@x [242] Reallocate when we run out of s_preamble's.
+ bib_err ('You''ve exceeded ',max_bib_files:0,' preamble commands');
+@y
+begin
+ BIB_XRETALLOC ('bib_list', bib_list, str_number, max_bib_files,
+ max_bib_files + MAX_BIB_FILES);
+ {Already increased |max_bib_files|, so don't need to do it again.}
+ BIB_XRETALLOC ('bib_file', bib_file, alpha_file, max_bib_files,
+ max_bib_files);
+ BIB_XRETALLOC ('s_preamble', s_preamble, str_number, max_bib_files,
+ max_bib_files);
+end;
+@z
+
+@x [264] Add check for fieldinfo[] overflow.
+field_ptr := entry_cite_ptr * num_fields + fn_info[field_name_loc];
+@y
+field_ptr := entry_cite_ptr * num_fields + fn_info[field_name_loc];
+check_field_overflow(field_ptr);
+@z
+
+@x [278] Add check for fieldinfo[] overflow.
+@<Add cross-reference information@>=
+begin
+@y
+@<Add cross-reference information@>=
+begin
+check_field_overflow((num_cites - 1) * num_fields + crossref_num);
+@z
+
+@x [280] Add check for fieldinfo[] overflow.
+@<Subtract cross-reference information@>=
+begin
+@y
+@<Subtract cross-reference information@>=
+begin
+check_field_overflow((num_cites - 1) * num_fields + crossref_num);
+@z
+
+@x [286] Add check for fieldinfo[] overflow.
+@<Slide this cite key down to its permanent spot@>=
+begin
+@y
+@<Slide this cite key down to its permanent spot@>=
+begin
+check_field_overflow((cite_xptr + 1) * num_fields);
+@z
+
+@x [287] Reallocate on overflow.
+if (num_ent_ints*num_cites > max_ent_ints) then
+ begin
+ print (num_ent_ints*num_cites,': ');
+ overflow('total number of integer entry-variables ',max_ent_ints);
+ end;
+@y
+if (num_ent_ints*num_cites > max_ent_ints) then
+ BIB_XRETALLOC ('entry_ints', entry_ints, integer, max_ent_ints,
+ (num_ent_ints + 1) * (num_cites + 1));
+@z
+
+@x [288] Reallocate entry_strs.
+if (num_ent_strs*num_cites > max_ent_strs) then
+ begin
+ print (num_ent_strs*num_cites,': ');
+ overflow('total number of string entry-variables ',max_ent_strs);
+ end;
+@y
+{Have to include the maximum size of each string in the reallocation,
+ unfortunately, since we're faking a two-dimensional array. And then
+ decrease |max_ent_strs| again, because it's the number of strings, not
+ the number of characters (which is what we're allocating.)}
+if (num_ent_strs * num_cites > max_ent_strs) then begin
+ BIB_XRETALLOC ('entry_strs', entry_strs, ASCII_code, max_ent_strs,
+ (num_ent_strs + 1) * (num_cites + 1) * (ent_str_size + 1));
+ max_ent_strs := num_ent_strs * num_cites;
+ {The new values are initialized in the next few statements from
+ \.{bibtex.web}.}
+end;
+@z
+
+@x [289] Macroize entry_strs[][].
+ entry_strs[str_ent_ptr][0] := end_of_string;
+@y
+ x_entry_strs(str_ent_ptr)(0) := end_of_string;
+@z
+
+@x [302] Macroize entry_strs[][].
+ char1 := entry_strs[ptr1][char_ptr];
+ char2 := entry_strs[ptr2][char_ptr];
+@y
+ char1 := x_entry_strs(ptr1)(char_ptr);
+ char2 := x_entry_strs(ptr2)(char_ptr);
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [322]
+procedure add_out_pool (@!p_str : str_number);
+var break_ptr : buf_pointer; {the first character following the line break}
+@!end_ptr : buf_pointer; {temporary end-of-buffer pointer}
+@y
+procedure add_out_pool (@!p_str : str_number);
+var break_ptr : buf_pointer; {the first character following the line break}
+@!end_ptr : buf_pointer; {temporary end-of-buffer pointer}
+@!in_mid_kanji:boolean; {flag if |max_print_line|-1 is in mid kanji}
+@!last_char_ptr : buf_pointer;
+@!t : buf_pointer;
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [324]
+@<Break that unbreakable line@>=
+begin
+out_buf[end_ptr] := out_buf[max_print_line-1]; {save this character}
+out_buf[max_print_line-1] := comment; {so \TeX\ does the thing right}
+out_buf_length := max_print_line;
+break_ptr := out_buf_length - 1; {the `|-1|' allows for the restoration}
+output_bbl_line; {output what we can,}
+out_buf[max_print_line-1] := out_buf[end_ptr]; {restore this character}
+out_buf_ptr := 0;
+tmp_ptr := break_ptr;
+while (tmp_ptr < end_ptr) do {and slide the rest down}
+ begin
+ out_buf[out_buf_ptr] := out_buf[tmp_ptr];
+ incr(out_buf_ptr);
+ incr(tmp_ptr);
+ end;
+out_buf_length := end_ptr - break_ptr;
+end
+@y
+@<Break that unbreakable line@>=
+begin
+@<Check if |max_print_line|-1 is in mid kanji@>;
+if in_mid_kanji then last_char_ptr:=max_print_line-1
+ else last_char_ptr:=max_print_line;
+out_buf[end_ptr] := out_buf[last_char_ptr-1]; {save this character}
+out_buf[last_char_ptr-1] := comment; {so \TeX\ does the thing right}
+out_buf_length := last_char_ptr;
+break_ptr := out_buf_length - 1; {the `|-1|' allows for the restoration}
+output_bbl_line; {output what we can,}
+out_buf[last_char_ptr-1] := out_buf[end_ptr]; {restore this character}
+out_buf_ptr := 0;
+tmp_ptr := break_ptr;
+while (tmp_ptr < end_ptr) do {and slide the rest down}
+ begin
+ out_buf[out_buf_ptr] := out_buf[tmp_ptr];
+ incr(out_buf_ptr);
+ incr(tmp_ptr);
+ end;
+out_buf_length := end_ptr - break_ptr;
+end
+@z
+
+@x [328] Add check for fieldinfo[] overflow.
+ field_ptr := cite_ptr*num_fields + fn_info[ex_fn_loc];
+@y
+ field_ptr := cite_ptr*num_fields + fn_info[ex_fn_loc];
+ check_field_overflow(field_ptr);
+@z
+
+@x [330] Macroize entry_strs[][]
+ while (entry_strs[str_ent_ptr][ex_buf_ptr] <> end_of_string) do
+ {copy characters into the buffer}
+ append_ex_buf_char (entry_strs[str_ent_ptr][ex_buf_ptr]);
+@y
+ while (x_entry_strs(str_ent_ptr)(ex_buf_ptr) <> end_of_string) do
+ {copy characters into the buffer}
+ append_ex_buf_char (x_entry_strs(str_ent_ptr)(ex_buf_ptr));
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [332]
+@!b_while : hash_loc; {\.{while\$}}
+@!b_width : hash_loc; {\.{width\$}}
+@!b_write : hash_loc; {\.{write\$}}
+@!b_default : hash_loc; {either \.{skip\$} or \.{default.type}}
+@y
+@!b_while : hash_loc; {\.{while\$}}
+@!b_width : hash_loc; {\.{width\$}}
+@!b_write : hash_loc; {\.{write\$}}
+@!b_default : hash_loc; {either \.{skip\$} or \.{default.type}}
+@!b_is_kanji_str : hash_loc; {\.{is.kanji.str\$}}
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [334]
+@d n_while = 34 {\.{while\$}}
+@d n_width = 35 {\.{width\$}}
+@d n_write = 36 {\.{write\$}}
+
+@<Constants in the outer block@>=
+@!num_blt_in_fns = 37; {one more than the previous number}
+@y
+@d n_while = 34 {\.{while\$}}
+@d n_width = 35 {\.{width\$}}
+@d n_write = 36 {\.{write\$}}
+@d n_is_kanji_str = 37 {\.{is.kanji.str\$}}
+
+@<Constants in the outer block@>=
+@!num_blt_in_fns = 38; {one more than the previous number}
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [335]
+build_in('width$ ',6,b_width,n_width);
+build_in('while$ ',6,b_while,n_while);
+build_in('width$ ',6,b_width,n_width);
+build_in('write$ ',6,b_write,n_write);
+@y
+build_in('while$ ',6,b_while,n_while);
+build_in('width$ ',6,b_width,n_width);
+build_in('write$ ',6,b_write,n_write);
+build_in('is.kanji.str$',13,b_is_kanji_str,n_is_kanji_str);
+@z
+
+@x [337] s_preamble is dynamically allocated.
+@!s_preamble : array[bib_number] of str_number;
+@y
+@!s_preamble : ^str_number;
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [342]
+ n_width : x_width;
+ n_write : x_write;
+ othercases confusion ('Unknown built-in function')
+endcases;
+end
+@y
+ n_width : x_width;
+ n_write : x_write;
+ n_is_kanji_str: x_is_kanji_str;
+ othercases confusion ('Unknown built-in function')
+endcases;
+end
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [343]
+@<|execute_fn|({\.{width\$}})@>@;
+@<|execute_fn|({\.{write\$}})@>@;
+@<|execute_fn| itself@>
+@y
+@<|execute_fn|({\.{width\$}})@>@;
+@<|execute_fn|({\.{write\$}})@>@;
+@<|execute_fn|({\.{is.kanji.str\$}})@>@;
+@<|execute_fn| itself@>
+@z
+
+@x [358] Macroize entry_strs[][].
+ while (sp_ptr < sp_xptr1) do
+ begin {copy characters into |entry_strs|}
+ entry_strs[str_ent_ptr][ent_chr_ptr] := str_pool[sp_ptr];
+ incr(ent_chr_ptr);
+ incr(sp_ptr);
+ end;
+ entry_strs[str_ent_ptr][ent_chr_ptr] := end_of_string;
+@y
+ while (sp_ptr < sp_xptr1) do
+ begin {copy characters into |entry_strs|}
+ x_entry_strs(str_ent_ptr)(ent_chr_ptr) := str_pool[sp_ptr];
+ incr(ent_chr_ptr);
+ incr(sp_ptr);
+ end;
+ x_entry_strs(str_ent_ptr)(ent_chr_ptr) := end_of_string;
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui --- add.period$ for ver. 0.30
+case (str_pool[sp_ptr]) of
+ period,
+ question_mark,
+ exclamation_mark :
+ repush_string;
+ othercases
+ @<Add the |period| (it's necessary) and push@>
+@y
+case (str_pool[sp_ptr]) of
+ period,
+ question_mark,
+ exclamation_mark :
+ repush_string;
+ zen_ten,
+ zen_period,
+ zen_question,
+ zen_exclamation:
+ if( str_pool[sp_ptr-1] = zen_pun_first ) then
+ repush_string
+ else
+ @<Add the |period| (it's necessary) and push@>;
+ othercases
+ @<Add the |period| (it's necessary) and push@>
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [377]
+else if (length(pop_lit1) <> 1) then
+ begin
+ print ('"');
+ print_pool_str (pop_lit1);
+ bst_ex_warn ('" isn''t a single character');
+ push_lit_stk (0, stk_int);
+ end
+@y
+else if (length(pop_lit1) <> 1) then
+ if(str_pool[str_start[pop_lit1]]>127) then { a KANJI char is 2byte long }
+ push_lit_stk(str_pool[str_start[pop_lit1]],stk_int)
+ else begin
+ print ('"');
+ print_pool_str (pop_lit1);
+ bst_ex_warn ('" isn''t a single character');
+ push_lit_stk (0, stk_int);
+ end
+@z
+
+
+@x by Shouichi Matsui for Zenkaku comma
+if (ex_buf_ptr < ex_buf_length) then {remove the ``and''}
+ ex_buf_ptr := ex_buf_ptr - 4;
+@y
+if (ex_buf_ptr < ex_buf_length) then {remove the ``and'', or Zenkau comma}
+ begin
+ if( (ex_buf[ex_buf_ptr-1]=zen_comma) or (ex_buf[ex_buf_ptr-1]=zen_kuten) )
+ then ex_buf_ptr := ex_buf_ptr - 2
+ else ex_buf_ptr := ex_buf_ptr - 4;
+ end;
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui for Zenkaku comma
+ "a", "A" :
+ begin
+ incr(ex_buf_ptr);
+ if (preceding_white) then
+ @<See if we have an ``and''@>; {if so, |and_found := true|}
+ preceding_white := false;
+ end;
+@y
+ "a", "A" :
+ begin
+ incr(ex_buf_ptr);
+ if (preceding_white) then
+ @<See if we have an ``and''@>; {if so, |and_found := true|}
+ preceding_white := false;
+ end;
+ zen_pun_first:
+ begin
+ if((ex_buf[ex_buf_ptr+1]=zen_comma) or
+ (ex_buf[ex_buf_ptr+1]=zen_kuten) ) then
+ begin
+ preceding_white := false;
+ and_found := true
+ end
+ else if(ex_buf[ex_buf_ptr+1]=zen_space) then
+ begin
+ ex_buf[ex_buf_ptr] := space;
+ ex_buf[ex_buf_ptr+1] := space;
+ preceding_white := true;
+ end;
+ ex_buf_ptr := ex_buf_ptr + 2;
+ end;
+@z
+@x Changes for JBibTeX by Shouichi Matsui for Zenkaku comma[385]
+ othercases
+ if (lex_class[ex_buf[ex_buf_ptr]] = white_space) then
+ begin
+ incr(ex_buf_ptr);
+ preceding_white := true;
+ end
+ else
+ begin
+ incr(ex_buf_ptr);
+ preceding_white := false;
+ end
+ endcases;
+check_brace_level (pop_lit_var);
+end;
+@y
+ othercases
+ if (lex_class[ex_buf[ex_buf_ptr]] = white_space) then
+ begin
+ incr(ex_buf_ptr);
+ preceding_white := true;
+ end
+ else
+ begin
+ if( ex_buf[ex_buf_ptr] > 127 ) then
+ ex_buf_ptr := ex_buf_ptr +2
+ else
+ incr(ex_buf_ptr);
+ preceding_white := false;
+ end
+ endcases;
+check_brace_level (pop_lit_var);
+end;
+@z
+
+% [388] bibtex.web has mutually exclusive tests here; Oren said he
+% doesn't want to fix it until 1.0, since it's obviously of no practical
+% import (or someone would have found it before GCC 2 did). Changing
+% the second `and' to an `or' makes all but the last of multiple authors
+% be omitted in the bbl file, so I simply removed the statement.
+@x
+while ((ex_buf_xptr < ex_buf_ptr) and
+ (lex_class[ex_buf[ex_buf_ptr]] = white_space) and
+ (lex_class[ex_buf[ex_buf_ptr]] = sep_char)) do
+ incr(ex_buf_xptr); {this removes leading stuff}
+@y
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [415]
+ if (lex_class[name_buf[name_bf_ptr]] = alpha) then
+ begin
+ append_ex_buf_char_and_check (name_buf[name_bf_ptr]);
+ goto loop_exit;
+ end
+ else if ((name_buf[name_bf_ptr] = left_brace) and
+@y
+ if (lex_class[name_buf[name_bf_ptr]] = alpha) then
+ begin
+ if name_buf[name_bf_ptr]>127 then begin
+ append_ex_buf_char_and_check (name_buf[name_bf_ptr]);
+ incr(name_bf_ptr);
+ append_ex_buf_char_and_check (name_buf[name_bf_ptr]);
+ end
+ else
+ append_ex_buf_char_and_check (name_buf[name_bf_ptr]);
+ goto loop_exit;
+ end
+ else if ((name_buf[name_bf_ptr] = left_brace) and
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [437]
+@<|execute_fn|({\.{substring\$}})@>=
+procedure x_substring;
+label exit;
+begin
+@y
+@<|execute_fn|({\.{substring\$}})@>=
+procedure x_substring;
+label exit;
+var tps,tpe:pool_pointer; {temporary pointer}
+begin
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [438]
+while (sp_ptr < sp_end) do {shift the substring}
+ begin
+ append_char (str_pool[sp_ptr]);
+ incr(sp_ptr);
+ end;
+@y
+{ 2 bytes Kanji code break check }
+tps:=str_start[pop_lit3];
+while (tps < sp_ptr ) do
+ if str_pool[tps] > 127
+ then tps := tps + 2
+ else incr(tps);
+tpe:=tps;
+while (tpe < sp_end ) do begin
+ if str_pool[tpe] > 127
+ then tpe := tpe+2
+ else incr(tpe);
+end;
+if tps<>sp_ptr then begin
+ if tps>str_start[pop_lit3]
+ then decr(sp_ptr)
+ else incr(sp_ptr);
+end;
+if tpe<>sp_end then begin
+ if tpe<str_start[pop_lit3+1]
+ then incr(sp_end)
+ else decr(sp_end);
+end;
+
+while (sp_ptr < sp_end) do {shift the substring}
+ begin
+ if str_pool[sp_ptr] >127 then begin
+ append_char (str_pool[sp_ptr]); incr(sp_ptr);
+ append_char (str_pool[sp_ptr]); incr(sp_ptr);
+ end
+ else begin
+ append_char (str_pool[sp_ptr]); incr(sp_ptr); end;
+ end;
+@z
+
+@x Changes for JBibTeX by Shouichi Matsui [445]
+ else if (str_pool[sp_xptr1-1] = right_brace) then
+ begin
+ if (sp_brace_level > 0) then
+ decr(sp_brace_level);
+ end
+ else
+ incr(num_text_chars);
+ end;
+@y
+ else if (str_pool[sp_xptr1-1] = right_brace) then
+ begin
+ if (sp_brace_level > 0) then
+ decr(sp_brace_level);
+ end
+ else if (str_pool[sp_xptr1-1]>127) then begin {kanji char}
+ incr(sp_xptr1); num_text_chars:=num_text_chars+2;
+ end
+ else
+ incr(num_text_chars);
+ end;
+@z
+
+% [460] Eliminate unreferenced statement label, because `undefined' is
+% now a constant expression that is not evaluated at the Web level. If
+% this label were ever required, it could be replaced by the constant
+% 9997, which is not used as a statement label in BibTeX.
+@x
+ undefined : trace_pr ('unknown')
+@y
+ trace_pr ('unknown')
+@z
+
+@x [461] Macroize entry_strs[][].
+ while (entry_strs[str_ent_ptr][ent_chr_ptr] <> end_of_string) do
+ begin
+ trace_pr (xchr[entry_strs[str_ent_ptr][ent_chr_ptr]]);
+ incr(ent_chr_ptr);
+ end;
+@y
+ while (x_entry_strs(str_ent_ptr)(ent_chr_ptr) <> end_of_string) do
+ begin
+ trace_pr (xchr[x_entry_strs(str_ent_ptr)(ent_chr_ptr)]);
+ incr(ent_chr_ptr);
+ end;
+@z
+
+@x [463] Add check for fieldinfo[] overflow.
+@<Print fields@>=
+begin
+if (not read_performed) then
+ trace_pr_ln (' uninitialized')
+ else
+ begin
+ field_ptr := cite_ptr * num_fields;
+ field_end_ptr := field_ptr + num_fields;
+@y
+@<Print fields@>=
+begin
+if (not read_performed) then
+ trace_pr_ln (' uninitialized')
+ else
+ begin
+ field_ptr := cite_ptr * num_fields;
+ field_end_ptr := field_ptr + num_fields;
+ check_field_overflow(field_end_ptr);
+@z
+
+@x [467] System-dependent changes.
+This section should be replaced, if necessary, by changes to the program
+that are necessary to make \BibTeX\ work at a particular installation.
+It is usually best to design your change file so that all changes to
+previous sections preserve the section numbering; then everybody's version
+will be consistent with the printed program. More extensive changes,
+which introduce new sections, can be inserted here; then only the index
+itself will get a new section number.
+@y
+@d argument_is (#) == (strcmp (long_options[option_index].name, #) = 0)
+
+@<Define |parse_arguments|@> =
+procedure parse_arguments;
+const n_options = 5; {Pascal won't count array lengths for us.}
+var @!long_options: array[0..n_options] of getopt_struct;
+ @!getopt_return_val: integer;
+ @!option_index: c_int_type;
+ @!current_option: 0..n_options;
+begin
+ @<Initialize the option variables@>;
+ @<Define the option table@>;
+ repeat
+ getopt_return_val := getopt_long_only (argc, argv, '', long_options,
+ address_of (option_index));
+ if getopt_return_val = -1 then begin
+ {End of arguments; we exit the loop below.} ;
+
+ end else if getopt_return_val = "?" then begin
+ usage ('jbibtex');
+
+ end else if argument_is ('min-crossrefs') then begin
+ min_crossrefs := atoi (optarg);
+
+ end else if argument_is ('help') then begin
+ usage_help (JBIBTEX_HELP, nil);
+
+ end else if argument_is ('version') then begin
+ print_version_and_exit (banner, 'Oren Patashnik', nil);
+
+ end else if argument_is ('kanji') then begin
+ @<Set process kanji code@>;
+
+ end; {Else it was a flag; |getopt| has already done the assignment.}
+ until getopt_return_val = -1;
+
+ {Now |optind| is the index of first non-option on the command line.
+ We must have one remaining argument.}
+ if (optind + 1 <> argc) then begin
+ write_ln (stderr, 'jbibtex: Need exactly one file argument.');
+ usage ('jbibtex');
+ end;
+end;
+
+@ Here is the first of the options we allow.
+@.-terse@>
+
+@<Define the option...@> =
+current_option := 0;
+long_options[0].name := 'terse';
+long_options[0].has_arg := 0;
+long_options[0].flag := address_of (verbose);
+long_options[0].val := 0;
+incr (current_option);
+
+@ The global variable |verbose| determines whether or not we print
+progress information.
+
+@<Glob...@> =
+@!verbose: c_int_type;
+
+@ Start off |true|, to match the default behavior.
+
+@<Initialize the option...@> =
+verbose := true;
+
+@ Here is an option to change the minimum number of cross-refs required
+for automatic |cite_list| inclusion.
+@.-min-crossrefs@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'min-crossrefs';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+
+@
+@<Glob...@> =
+@!min_crossrefs: integer;
+
+@ Set |min_crossrefs| to two by default, so we match the
+documentation (\.{btxdoc.tex}).
+
+@<Initialize the option...@> =
+min_crossrefs := 2;
+
+@ One of the standard options.
+@.-help@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'help';
+long_options[current_option].has_arg := 0;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+
+@ Another of the standard options.
+@.-version@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'version';
+long_options[current_option].has_arg := 0;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+
+@ Kanji option.
+@.-kanji@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'kanji';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr(current_option);
+
+@ An element with all zeros always ends the list.
+
+@<Define the option...@> =
+long_options[current_option].name := 0;
+long_options[current_option].has_arg := 0;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+
+
+@
+@<Check if |max_print_line|-1 is in mid kanji@>=
+t:=0;
+while(t<max_print_line-1) do
+ if out_buf[t]>127 then t:=t+2 else t:=t+1;
+in_mid_kanji:= t>=max_print_line;
+
+@
+@<|execute_fn|({\.{is.kanji.str\$}})@>=
+procedure x_is_kanji_str;
+label exit;
+begin
+ pop_lit_stk(pop_lit1, pop_typ1);
+ if pop_typ1<> stk_str then
+ begin print_wrong_stk_lit(pop_lit1,pop_typ1,stk_str);
+ push_lit_stk(0,stk_int);
+ end else begin
+ sp_ptr := str_start[pop_lit1];
+ sp_end := str_start[pop_lit1+1];
+ while sp_ptr<sp_end do begin
+ if str_pool[sp_ptr]>127 then begin
+ push_lit_stk(1,stk_int);
+ return;
+ end else begin
+ incr(sp_ptr);
+ end;
+ end;
+ push_lit_stk(0,stk_int);
+ end;
+exit:end;
+
+@ kanji code.
+
+@d jis_enc==0
+@d euc_enc==1
+@d sjis_enc==2
+
+@ @<Glob...@>=
+@!proc_kanji_code:jis_enc..sjis_enc;
+
+@ @<Initialize the option...@> =
+ifdef('OUTJIS') proc_kanji_code:=jis_enc; endif('OUTJIS')@/
+ifdef('OUTEUC') proc_kanji_code:=euc_enc; endif('OUTEUC')@/
+ifdef('OUTSJIS') proc_kanji_code:=sjis_enc; endif('OUTSJIS')@/
+
+@ @<Set process kanji code@>=
+ if strcmp(optarg, 'jis') = 0 then
+ proc_kanji_code:=jis_enc
+ else if strcmp(optarg, 'euc') = 0 then
+ proc_kanji_code:=euc_enc
+ else if strcmp(optarg, 'sjis') = 0 then
+ proc_kanji_code:=sjis_enc
+ else
+ print_ln('Bad kanjicode encoding', optarg, '.');
+@z
diff --git a/language/japanese/ptex/jbibtex.defines b/language/japanese/ptex/jbibtex.defines
new file mode 100644
index 0000000000..c99c1c74d7
--- /dev/null
+++ b/language/japanese/ptex/jbibtex.defines
@@ -0,0 +1,3 @@
+@define function inputline();
+@define procedure initkanji;
+@define const JBIBTEXHELP;
diff --git a/language/japanese/ptex/kanji.c b/language/japanese/ptex/kanji.c
new file mode 100644
index 0000000000..c14562fb44
--- /dev/null
+++ b/language/japanese/ptex/kanji.c
@@ -0,0 +1,233 @@
+/*
+ * KANJI Code conversion routines.
+ */
+
+#define KANJI_C
+#include "kanji.h"
+
+boolean iskanji1(c)
+ unsigned char c;
+{
+ c &= 0xff;
+ if (prockanjicode == SJIS)
+ return((c>=0x81 && c<=0x9f) || (c>=0xe0 && c<=0xfc));
+ else
+ return(c>=0xa1 && c<=0xfe);
+}
+
+boolean iskanji2(c)
+ unsigned char c;
+{
+ c &= 0xff;
+ if (prockanjicode == SJIS)
+ return(c>=0x40 && c<=0xfc && c!=0x7f);
+ else
+ return(c>=0xa1 && c<=0xfe);
+}
+
+boolean checkkanji(c)
+ integer c;
+{
+ if(c<0 || c>256)
+ return(iskanji1(c>>8) && iskanji2(c & 0xff));
+ return(-1);
+}
+
+#ifdef OLDSTYLE
+integer calcpos(c)
+{
+ register int c1, c2;
+
+ if(c<256) return(c<<1);
+ c1 = c>>8;
+ c2 = c & 0xff;
+ if(c1) {
+ if (prockanjicode == SJIS)
+ return((c2+(c2<<(c1-0x81)) & 0xff)<<1);
+ else
+ return((c2+(c2<<(c1-0xa1)) & 0xff)<<1);
+ } else
+ return(((c2+c2+1) & 0xff)<<1);
+}
+#else /* OLDSTYLE */
+integer calcpos(c)
+ integer c;
+{
+ register unsigned char c1, c2;
+ integer ret;
+
+ if(c>=0 && c<=255) return(c);
+ c1 = (c >> 8) & 0xff;
+ c2 = c & 0xff;
+ if(iskanji1(c1)) {
+ if (prockanjicode == SJIS) {
+ c1 = ((c1 - 0x81) % 4) * 64; /* c1 = 0, 64, 128, 192 */
+ c2 = c2 % 64; /* c2 = 0..63 */
+ } else {
+ c1 = ((c1 - 0xa1) % 4) * 64; /* c1 = 0, 64, 128, 192 */
+ c2 = c2 % 64; /* c2 = 0..63 */
+ }
+ return(c1 + c2); /* ret = 0..255 */
+ } else
+ return(c2);
+}
+#endif /* OLDSTYLE */
+
+/*
+ * EUC to JIS X0208 code conversion
+ */
+integer EUCtoJIS(kcode)
+ integer kcode;
+{
+ return(kcode & 0x7f7f);
+}
+
+/*
+ * JIS X0208 to EUC code conversion
+ */
+integer JIStoEUC(kcode)
+ integer kcode;
+{
+ return(kcode | 0x8080);
+}
+
+/*
+ * SJIStoJIS : Shift JIS to JIS Kanji code conversion
+ */
+integer SJIStoJIS(kcode)
+ integer kcode;
+{
+ register short byte1, byte2;
+
+ byte1 = (kcode>>8) & 0xff;
+ byte2 = kcode & 0xff;
+ byte1 -= ( byte1>=0xa0 ) ? 0xc1 : 0x81;
+ kcode = ((byte1<<1) + 0x21)<<8;
+ if( byte2>=0x9f ) {
+ kcode += 0x0100;
+ kcode |= (byte2 - 0x7e) & 0xff;
+ } else {
+ kcode |= (byte2 - ((byte2<=0x7e) ? 0x1f : 0x20 )) & 0xff;
+ }
+ return(kcode);
+}
+
+/*
+ * JIS X0208 to Shift JIS code conversion
+ */
+integer JIStoSJIS(kcode)
+ integer kcode;
+{
+ register integer high, low;
+ register integer nh, nl;
+
+ high = (kcode>>8) & 0xff;
+ low = kcode & 0xff;
+ nh = ((high-0x21)>>1) + 0x81;
+ if (nh>0x9f) nh += 0x40;
+ if (high & 1) {
+ nl = low + 0x1f;
+ if (low>0x5f) nl++;
+ } else
+ nl = low + 0x7e;
+ if(iskanji1(nh) && iskanji2(nl))
+ return((nh<<8) | nl);
+ else
+ return(0x813f);
+}
+
+/*
+ * Shift JIS to EUC Kanji code conversion
+ */
+integer SJIStoEUC(kcode)
+ integer kcode;
+{
+ return(SJIStoJIS(kcode) | 0x8080 );
+}
+
+/*
+ * EUC to SJIS Kanji code conversion
+ */
+integer EUCtoSJIS(kcode)
+ integer kcode;
+{
+ return(JIStoSJIS(kcode & 0x7f7f));
+}
+
+/*
+ * KUTEN to JIS kanji code conversion
+ */
+integer kuten2jis(kcode)
+ integer kcode;
+{
+ register short byte1, byte2;
+
+ byte1 = (kcode>>8) & 0xff;
+ byte2 = kcode & 0xff;
+
+ /* in case of undefined in kuten code table */
+ if (byte1 == 0 || byte1 > 95 || byte2 == 0 || byte2 > 95)
+ return(-1);
+
+ byte1 += 0x20;
+ byte2 += 0x20;
+
+ return (byte1<<8 | byte2);
+}
+
+/*
+ * KUTEN to EUC Kanji code conversion
+ */
+integer KUTENtoEUC(kcode)
+ integer kcode;
+{
+ return(JIStoEUC(kuten2jis(kcode)));
+}
+
+/*
+ * KUTENtoSJIS Kanji code conversion
+ */
+integer KUTENtoSJIS(kcode)
+ integer kcode;
+{
+ return(JIStoSJIS(kuten2jis(kcode)));
+}
+
+void putc2(c, fp)
+ unsigned char c;
+ FILE *fp;
+{
+ static integer kanji[NOFILE];
+ static unsigned char c1[NOFILE];
+ integer jc;
+ register fd;
+
+ fd = fileno(fp);
+ if (kanji[fd] == 1) {
+ jc = (c1[fd] << 8) | c;
+ if (prockanjicode == JIS) jc = EUCtoJIS(jc);
+ (void) putc(jc >> 8, fp);
+ (void) putc(jc & 0xff, fp);
+ kanji[fd] = 2;
+ } else if (iskanji1(c)) {
+ if (kanji[fd] == 0) {
+ if (prockanjicode == JIS) {
+ (void) putc('\033', fp);
+ (void) putc('$', fp);
+ (void) putc('B', fp);
+ }
+ }
+ c1[fd] = c;
+ kanji[fd] = 1;
+ } else {
+ if (kanji[fd] == 2) {
+ if (prockanjicode == JIS) {
+ (void) putc('\033', fp);
+ (void) putc('(', fp);
+ (void) putc('B', fp);
+ }
+ kanji[fd] = 0;
+ }
+ (void) putc(c, fp);
+ }
+}
diff --git a/language/japanese/ptex/kanji.defines b/language/japanese/ptex/kanji.defines
new file mode 100644
index 0000000000..eb9e273be2
--- /dev/null
+++ b/language/japanese/ptex/kanji.defines
@@ -0,0 +1,23 @@
+{ defined at kanji.c, kanji.h }
+@define function Hi ();
+@define function Lo ();
+@define procedure PutHi ();
+@define procedure PutLo ();
+
+@define function iskanji1 ();
+@define function iskanji2 ();
+@define function checkkanji ();
+@define function calcpos ();
+@define function EUCtoJIS ();
+@define function JIStoEUC ();
+@define function SJIStoEUC ();
+@define function KUTENtoEUC ();
+@define function SJIStoJIS ();
+@define function JIStoSJIS ();
+@define function EUCtoSJIS ();
+@define function KUTENtoSJIS ();
+@define function putc2 ();
+
+@define const PTEXTFTOPLHELP;
+@define const PTEXPLTOTFHELP;
+@define const PDVITYPEHELP;
diff --git a/language/japanese/ptex/kanji.h.in b/language/japanese/ptex/kanji.h.in
new file mode 100644
index 0000000000..922761c048
--- /dev/null
+++ b/language/japanese/ptex/kanji.h.in
@@ -0,0 +1,76 @@
+/*
+ kanji.h: Handling 2byte char, and so on.
+*/
+#ifndef KANJI_H
+#define KANJI_H
+#include "cpascal.h"
+#include "ptexhelp.h"
+
+#define KANJI
+#define JIS 0
+#define EUC 1
+#define SJIS 2
+
+/* ü˽Ϥɤ EUC, JIS, SJIS Τ줫ǻꤹ롣*/
+#define TERM_CODE @TERMCODE@
+
+/* OUTJIS, OUTSJIS, OUTEUC üȥեؤνϥɤ򼨤*/
+#if TERM_CODE == JIS
+#define OUTJIS
+#elif TERM_CODE == SJIS
+#define OUTSJIS
+#else
+#define OUTEUC
+#endif
+
+/* functions */
+#define Hi(X) ((X >> 8) & 0xff)
+#define Lo(X) (X & 0xff)
+#define PutHi(X,Y) X &= 0xff; (X |= (Y << 8))
+#define PutLo(X,Y) X &= 0xff00; (X |= (Y & 0xff))
+
+extern char prockanjicode;
+extern boolean iskanji1(unsigned char);
+extern boolean iskanji2(unsigned char);
+extern boolean checkkanji(integer);
+extern integer calcpos(integer);
+
+extern integer EUCtoJIS(integer);
+extern integer JIStoEUC(integer);
+extern integer SJIStoJIS(integer);
+extern integer JIStoSJIS(integer);
+extern integer SJIStoEUC(integer);
+extern integer EUCtoSJIS(integer);
+extern integer KUTENtoEUC(integer);
+extern integer KUTENtoSJIS(integer);
+
+/* kanji.c *ʳ* 򥳥ѥ뤹Ȥputc Ѥ */
+#if !defined(KANJI_C)
+#undef putc
+#define putc(c,fp) putc2(c,fp)
+#endif /* *not* KANJI_C */
+
+#ifdef TeX
+#undef TEXMFPOOLNAME
+#undef TEXMFENGINENAME
+#define TEXMFPOOLNAME "ptex.pool"
+#define TEXMFENGINENAME "ptex"
+#endif /* TeX */
+
+#ifdef MP
+#undef TEXMFPOOLNAME
+#undef TEXMFENGINENAME
+#define TEXMFPOOLNAME "jmp.pool"
+#define TEXMFENGINENAME "jmpost"
+#endif /* MP */
+
+#ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#else
+# include <limits.h>
+#endif
+#ifndef NOFILE
+# define NOFILE OPEN_MAX
+#endif
+
+#endif /* not KANJI_H */
diff --git a/language/japanese/ptex/mkconf b/language/japanese/ptex/mkconf
new file mode 100644
index 0000000000..86cb37adfa
--- /dev/null
+++ b/language/japanese/ptex/mkconf
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+if [ -z "$1" ]; then
+ echo "Usage: mkconf texmf.cnf"
+ exit 2
+fi
+
+cnffile="$1"
+if [ ! -f "$cnffile" ]; then
+ echo "Error: $cnffile is not found"
+ exit 2
+fi
+
+sed -e '/^% ptex, platex, platex209 macros paths./d
+/^% pTeX./d
+/^platex209_inputs *=/d
+/^platex2e_inputs *=/d
+/^ptex_inputs *=/d
+/^TEXINPUTS.platex209 *=/d
+/^TEXINPUTS.platex2e *=/d
+/^TEXINPUTS.platex-sjis *=/d
+/^TEXINPUTS.platex-euc *=/d
+/^TEXINPUTS.platex-jis *=/d
+/^TEXINPUTS.platex *=/d
+/^TEXINPUTS.ptex-sjis *=/d
+/^TEXINPUTS.ptex-euc *=/d
+/^TEXINPUTS.ptex-jis *=/d
+/^TEXINPUTS.ptex *=/d
+/^TEXINPUTS.iniptex *=/d
+/^BIBINPUTS.jbibtex *=/d
+/^BSTINPUTS.jbibtex *=/d' ${cnffile} | \
+sed -e '/^TEXINPUTS.xetex *=/ a\
+\
+% pTeX.\
+ptex_inputs = .;$TEXMF/{ptex/{plain,generic},tex/{plain,generic,}}//\
+platex209_inputs = .;$TEXMF/{ptex/{platex209,plain,platex,},tex/{plain,latex,}}//\
+platex2e_inputs = .;$TEXMF/{ptex/{platex,generic,},tex/{latex,generic,}}//\
+TEXINPUTS.platex209 = $platex209_inputs\
+TEXINPUTS.platex-sjis = $platex2e_inputs\
+TEXINPUTS.platex-euc = $platex2e_inputs\
+TEXINPUTS.platex-jis = $platex2e_inputs\
+TEXINPUTS.platex = $platex2e_inputs\
+TEXINPUTS.ptex-sjis = $ptex_inputs\
+TEXINPUTS.ptex-euc = $ptex_inputs\
+TEXINPUTS.ptex-jis = $ptex_inputs\
+TEXINPUTS.ptex = $ptex_inputs\
+
+/^% BibTeX bibliographies and style files./ a\
+BIBINPUTS.jbibtex = .;$TEXMF/{jbibtex,bibtex}/bib//\
+BSTINPUTS.jbibtex = .;$TEXMF/{jbibtex,bibtex}/bst//\
+' | uniq
+
+### EOT ###
diff --git a/language/japanese/ptex/pconvert b/language/japanese/ptex/pconvert
new file mode 100644
index 0000000000..94c6d9c95d
--- /dev/null
+++ b/language/japanese/ptex/pconvert
@@ -0,0 +1,73 @@
+#!/bin/sh
+# Convert WEB programs not needing special treatment to C.
+# $1 is the Pascal file to be converted.
+#
+web2cdir=../web2c
+target=$1
+
+usage () {
+ echo ""
+ echo "Usage: $0 <basefile>"
+ echo " <basefile> = ptex|pltotf|tftopl|pdvitype|jbibtex"
+ echo ""
+}
+
+convert_ptex () {
+ cat $web2cdir/common.defines $web2cdir/texmf.defines \
+ ./kanji.defines ./$target.p \
+ | $web2cdir/web2c -t -h../texmfmp.h -ctexcoerce \
+ | $web2cdir/fixwrites tex \
+ | $web2cdir/splitup -i -l 10000 tex
+ sleep 2
+ cat texcoerce.h $web2cdir/coerce.h > xtexcoerce.h
+ echo '#include "kanji.h"' >> xtexcoerce.h
+ mv xtexcoerce.h texcoerce.h
+ touch texd.h
+}
+
+convert_tool () {
+ cat $web2cdir/common.defines ./kanji.defines ./$target.p \
+ | $web2cdir/web2c -hkanji.h -c$target \
+ | $web2cdir/fixwrites $target > $target.c
+}
+
+convert_jbibtex() {
+ cat $web2cdir/common.defines ./jbibtex.defines ./$target.p \
+ | $web2cdir/web2c -hjbibextra.h -c$target \
+ | sed -f $web2cdir/cvtbib.sed \
+ | $web2cdir/fixwrites $target > $target.c
+ sed -e 's/(buftype)//g' -e 's/(pdstype)//g' < $target.h >x$target.h
+ mv x$target.h $target.h
+ sed -f jbibd.sed $target.c > jbibd.h
+}
+
+
+case $target in
+ ptex) convert_ptex
+ cfile=tex2.c # last output file, or thereabouts
+ output_files="tex[0-9]*.c texini.c texd.h texcoerce.h"
+ ;;
+ pltotf|tftopl|pdvitype) convert_tool
+ cfile=$target.c
+ output_files="$target.c $target.h"
+ ;;
+ jbibtex) convert_jbibtex
+ cfile=$target.c
+ output_files="$target.c $target.h jbibd.h"
+ ;;
+ *) usage;
+esac
+
+if test ! -s $cfile || grep @error@ $output_files >/dev/null; then
+ : ${TMPDIR=./failure}
+ # Don't just delete it, since it may be useful for debugging.
+ echo "$0: conversion of $pascalfile failed, moving dregs:" >&2
+ cmd="mv $output_files $TMPDIR"
+ test -d $TMPDIR || mkdir $TMPDIR
+ (cd $TMPDIR && rm -f $output_files)
+ echo "$0: $cmd" >&2
+ $cmd
+ exit 1
+fi
+
+exit 0
diff --git a/language/japanese/ptex/pdvitype.ch b/language/japanese/ptex/pdvitype.ch
new file mode 100644
index 0000000000..2f43fb6c08
--- /dev/null
+++ b/language/japanese/ptex/pdvitype.ch
@@ -0,0 +1,1181 @@
+% dvitype.ch for C compilation with web2c.
+%
+% 04/04/83 (PC) Merged with Pavel's change file and made to work with the
+% version 1.0 of DVItype released with version 0.95 of TeX in
+% February, 1983.
+% 04/18/83 (PC) Added changes to module 47 so that it would work the same
+% when input was a file (or pipe) as with a terminal.
+% 06/29/83 (HWT) Brought up to version 1.1 as released with version 0.99 of
+% TeX, with new change file format
+% 07/28/83 (HWT) Brought up to version 2 as released with version 0.999.
+% Only the banner changes.
+% 11/21/83 (HWT) Brought up to version 2.2 as released with version 1.0.
+% 02/19/84 (HWT) Made it use the TEXFONTS environment variable.
+% 03/23/84 (HWT) Brought up to version 2.3.
+% 07/11/84 (HWT) Brought up to version 2.6 as released with version 1.1.
+% 11/07/84 (ETM) Brought up to version 2.7 as released with version 1.2.
+% 03/09/88 (ETM) Brought up to version 2.9
+% 03/16/88 (ETM) Converted for use with WEB to C.
+% 11/30/89 (KB) To version 3.
+% 01/16/90 (SR) To version 3.2.
+% 09/27/95 (KA) Supporting ASCII pTeX
+% (more recent changes in the ChangeLog)
+
+@x [0] WEAVE: print changes only.
+\pageno=\contentspagenumber \advance\pageno by 1
+@y
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iffalse
+\def\title{DVI$\,$\lowercase{type} changes for C}
+@z
+
+@x
+@d banner=='This is DVItype, Version 3.6' {printed when the program starts}
+@y
+@d banner=='This is PDVItype, Version 3.6-p0.4'
+ {printed when the program starts}
+@z
+
+% [3] Specify the output file to simplify web2c, and don't print the
+% banner until later.
+@x
+@d print(#)==write(#)
+@d print_ln(#)==write_ln(#)
+@y
+@d print(#)==write(stdout, #)
+@d print_ln(#)==write_ln(stdout, #)
+@z
+
+@x
+procedure initialize; {this procedure gets things started properly}
+ var i:integer; {loop index for initializations}
+ begin print_ln(banner);@/
+@y
+@<Define |parse_arguments|@>
+procedure initialize; {this procedure gets things started properly}
+ var i:integer; {loop index for initializations}
+ begin
+ kpse_set_progname (argv[0]);
+ parse_arguments;
+ print (banner);
+ print_ln (version_string);
+@z
+
+@x [5] Allow more fonts, more widths, no arbitrary filename length.
+@!max_fonts=100; {maximum number of distinct fonts per \.{DVI} file}
+@!max_widths=10000; {maximum number of different characters among all fonts}
+@y
+@!max_fonts=500; {maximum number of distinct fonts per \.{DVI} file}
+@!max_widths=25000; {maximum number of different characters among all fonts}
+@z
+@x
+@!name_size=1000; {total length of all font file names}
+@!name_length=50; {a file name shouldn't be longer than this}
+@y
+@!name_size=10000; {total length of all font file names}
+@z
+
+@x [7] Remove non-local goto.
+@d abort(#)==begin print(' ',#); jump_out;
+ end
+@d bad_dvi(#)==abort('Bad DVI file: ',#,'!')
+@.Bad DVI file@>
+
+@p procedure jump_out;
+begin goto final_end;
+end;
+@y
+@d jump_out==uexit(1)
+@d abort(#)==begin write_ln(stderr,#); jump_out; end
+@d bad_dvi(#)==abort('Bad DVI file: ',#,'!')
+@.Bad DVI file@>
+@z
+
+@x [8] Permissive input.
+@!ASCII_code=" ".."~"; {a subrange of the integers}
+@y
+@!ASCII_code=0..255; {a subrange of the integers}
+@z
+
+% [9] The text_char type is used as an array index into `xord'. The
+% default type `char' produces signed integers, which are bad array
+% indices in C.
+@x
+@d text_char == char {the data type of characters in text files}
+@d first_text_char=0 {ordinal number of the smallest element of |text_char|}
+@d last_text_char=127 {ordinal number of the largest element of |text_char|}
+@y
+@d text_char == ASCII_code {the data type of characters in text files}
+@d first_text_char=0 {ordinal number of the smallest element of |text_char|}
+@d last_text_char=255 {ordinal number of the largest element of |text_char|}
+@z
+
+@x
+for i:=@'177 to 255 do xchr[i]:='?';
+@y
+for i:=@'177 to 255 do xchr[i]:=i;
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+@d undefined_commands==250,251,252,253,254,255
+@y
+@d dir=255 {pTeX direction}
+@d undefined_commands==250,251,252,253,254
+@z
+
+@x
+@d id_byte=2 {identifies the kind of \.{DVI} files described here}
+@y
+@d id_byte=2 {identifies the kind of \.{DVI} files described here}
+@d ptex_id_byte=3 {identifies the kind of pTeX \.{DVI} files described here}
+@z
+
+@x [23] Fix up opening the files.
+@p procedure open_dvi_file; {prepares to read packed bytes in |dvi_file|}
+begin reset(dvi_file);
+cur_loc:=0;
+end;
+@#
+procedure open_tfm_file; {prepares to read packed bytes in |tfm_file|}
+begin reset(tfm_file,cur_name);
+end;
+@y
+@p procedure open_dvi_file; {prepares to read packed bytes in |dvi_file|}
+begin
+ cur_name := extend_filename (cmdline (optind), 'dvi');
+ resetbin (dvi_file, cur_name);
+ cur_loc := 0;
+end;
+@#
+procedure open_tfm_file; {prepares to read packed bytes in |tfm_file|}
+var full_name: ^char;
+begin
+ full_name := kpse_find_tfm (cur_name);
+ if full_name then begin
+ tfm_file := fopen (full_name, FOPEN_RBIN_MODE);
+ end else begin
+ tfm_file := nil;
+ end;
+end;
+@z
+
+@x [24] No arbitrary limit on filename length.
+@!cur_name:packed array[1..name_length] of char; {external name,
+ with no lower case letters}
+@y
+@!cur_name:^char; {external name}
+@z
+
+@x [27] Make get_n_bytes routines work with 16-bit math.
+get_two_bytes:=a*256+b;
+@y
+get_two_bytes:=a*intcast(256)+b;
+@z
+@x
+get_three_bytes:=(a*256+b)*256+c;
+@y
+get_three_bytes:=(a*intcast(256)+b)*256+c;
+@z
+@x
+if a<128 then signed_trio:=(a*256+b)*256+c
+else signed_trio:=((a-256)*256+b)*256+c;
+@y
+if a<128 then signed_trio:=(a*intcast(256)+b)*256+c
+else signed_trio:=((a-intcast(256))*256+b)*256+c;
+@z
+@x
+if a<128 then signed_quad:=((a*256+b)*256+c)*256+d
+else signed_quad:=(((a-256)*256+b)*256+c)*256+d;
+@y
+if a<128 then signed_quad:=((a*intcast(256)+b)*256+c)*256+d
+else signed_quad:=(((a-256)*intcast(256)+b)*256+c)*256+d;
+@z
+
+@x [28] dvi_length and move_to_byte.
+@p function dvi_length:integer;
+begin set_pos(dvi_file,-1); dvi_length:=cur_pos(dvi_file);
+end;
+@#
+procedure move_to_byte(n:integer);
+begin set_pos(dvi_file,n); cur_loc:=n;
+end;
+@y
+@p function dvi_length:integer;
+begin
+ xfseek (dvi_file, 0, 2, 'dvitype');
+ cur_loc := xftell(dvi_file, 'dvitype');
+ dvi_length := cur_loc;
+end;
+@#
+procedure move_to_byte(n:integer);
+begin
+ xfseek (dvi_file, n, 0, 'dvitype');
+ cur_loc:=n;
+end;
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% JFM and pTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+@!width_ptr:0..max_widths; {the number of known character widths}
+@y
+@!width_ptr:0..max_widths; {the number of known character widths}
+@!fnt_jfm_p:array [0..max_fonts] of boolean;
+@!jfm_char_code:array [0..max_widths] of integer;
+@!jfm_char_type:array [0..max_widths] of integer;
+@!jfm_char_font:array [0..max_widths] of integer;
+@!jfm_char_type_count:integer;
+@!cur_jfm_char_type:integer;
+
+@ @d jfm_hash_size=347
+
+@ @<Types...@>=
+@!jfm_char_type_hash_value=0..jfm_hash_size-1;
+
+@ @<Glob...@>=
+@!jfm_char_type_hash_table:array[jfm_char_type_hash_value] of integer;
+ { first pointer to character information. 0 means null pointer. }
+@!jfm_char_type_hash_link:array[0..max_widths] of integer;
+ { next pointer to character information. 0 means null pointer. }
+
+@ @<Set init...@>=
+for i:=0 to jfm_hash_size-1 do
+ jfm_char_type_hash_table[i] := 0;
+jfm_char_type[0]:=0;
+jfm_char_type_count:=1;
+
+@ Refer char_type table.
+
+@p function get_jfm_char_type(@!fntn:integer;@!jfmc:integer):integer;
+ var p:integer; ct:integer;
+begin
+ p:=jfm_char_type_hash_table[(jfmc+fntn) mod jfm_hash_size];
+ ct:=0; { default char_type is 0 }
+ while p <> 0 do
+ if (jfm_char_code[p] = jfmc) and (jfm_char_font[p] = fntn) then
+ begin ct:=jfm_char_type[p]; p:=0; end
+ else
+ p:=jfm_char_type_hash_link[p];
+ get_jfm_char_type:=ct;
+end;
+
+@ @<Glob...@>=
+@!ptex_p:boolean;
+@!dd:eight_bits;
+@!ddstack:array [0..stack_size] of eight_bits;
+@z
+
+@x
+@!lh:integer; {length of the header data, in four-byte words}
+@y
+@!lh:integer; {length of the header data, in four-byte words}
+@!nt:integer;
+@!jfm_h:integer;
+@z
+
+@x [35] Make 16-bit TFM calculations work. and JFM by K.A.
+read_tfm_word; lh:=b2*256+b3;
+read_tfm_word; font_bc[nf]:=b0*256+b1; font_ec[nf]:=b2*256+b3;
+@y
+read_tfm_word; lh:=b0*intcast(256)+b1;
+if (lh = 11) or (lh = 9) then
+ begin
+ print(' (JFM');
+ fnt_jfm_p[nf] := true;
+ if lh = 9 then print(' tate');
+ print(')');
+ nt:=b2*intcast(256)+b3;
+ read_tfm_word;
+ end
+else
+ begin
+ nt:=0;
+ fnt_jfm_p[nf] := false;
+ end;
+lh:=b2*intcast(256)+b3;
+read_tfm_word; font_bc[nf]:=b0*intcast(256)+b1; font_ec[nf]:=b2*intcast(256)+b3;
+@z
+@x
+ if b0<128 then tfm_check_sum:=((b0*256+b1)*256+b2)*256+b3
+ else tfm_check_sum:=(((b0-256)*256+b1)*256+b2)*256+b3
+@y
+ if b0<128 then tfm_check_sum:=((b0*intcast(256)+b1)*256+b2)*256+b3
+ else tfm_check_sum:=(((b0-256)*intcast(256)+b1)*256+b2)*256+b3
+@z
+@x JFM
+ tfm_design_size:=round(tfm_conv*(((b0*256+b1)*256+b2)*256+b3))
+ else goto 9997;
+ end;
+@y
+ tfm_design_size:=round(tfm_conv*(((b0*256+b1)*256+b2)*256+b3))
+ else goto 9997;
+ end;
+for k:=1 to nt do
+ begin
+ read_tfm_word;
+ jfm_char_code[jfm_char_type_count]:=b0*intcast(256)+b1;
+ jfm_char_type[jfm_char_type_count]:=b2*intcast(256)+b3;
+ jfm_char_font[jfm_char_type_count]:=nf;
+ jfm_h:= { hash value }
+ (jfm_char_code[jfm_char_type_count]+nf) mod jfm_hash_size;
+ jfm_char_type_hash_link[jfm_char_type_count]:=
+ jfm_char_type_hash_table[jfm_h];
+ jfm_char_type_hash_table[jfm_h]:=jfm_char_type_count;
+ jfm_char_type_count := jfm_char_type_count + 1
+ end;
+@z
+
+@x [43] Initialize optional variables sooner.
+@ @<Set init...@>=
+out_mode:=the_works; max_pages:=1000000; start_vals:=0; start_there[0]:=false;
+@y
+@ Initializations are done sooner now.
+@z
+
+@x [45] No dialog.
+@ The |input_ln| routine waits for the user to type a line at his or her
+terminal; then it puts ASCII-code equivalents for the characters on that line
+into the |buffer| array. The |term_in| file is used for terminal input,
+and |term_out| for terminal output.
+@^system dependencies@>
+
+@<Glob...@>=
+@!buffer:array[0..terminal_line_length] of ASCII_code;
+@!term_in:text_file; {the terminal, considered as an input file}
+@!term_out:text_file; {the terminal, considered as an output file}
+@y
+@ No dialog.
+@z
+
+@x [47] No input_ln.
+@p procedure input_ln; {inputs a line from the terminal}
+var k:0..terminal_line_length;
+begin update_terminal; reset(term_in);
+if eoln(term_in) then read_ln(term_in);
+k:=0;
+while (k<terminal_line_length)and not eoln(term_in) do
+ begin buffer[k]:=xord[term_in^]; incr(k); get(term_in);
+ end;
+buffer[k]:=" ";
+end;
+@y
+@z
+
+@x [48] No dialog.
+@ The global variable |buf_ptr| is used while scanning each line of input;
+it points to the first unread character in |buffer|.
+
+@<Glob...@>=
+@!buf_ptr:0..terminal_line_length; {the number of characters read}
+@y
+@ No dialog.
+@z
+
+@x [49] No dialog.
+@ Here is a routine that scans a (possibly signed) integer and computes
+the decimal value. If no decimal integer starts at |buf_ptr|, the
+value 0 is returned. The integer should be less than $2^{31}$ in
+absolute value.
+
+@p function get_integer:integer;
+var x:integer; {accumulates the value}
+@!negative:boolean; {should the value be negated?}
+begin if buffer[buf_ptr]="-" then
+ begin negative:=true; incr(buf_ptr);
+ end
+else negative:=false;
+x:=0;
+while (buffer[buf_ptr]>="0")and(buffer[buf_ptr]<="9") do
+ begin x:=10*x+buffer[buf_ptr]-"0"; incr(buf_ptr);
+ end;
+if negative then get_integer:=-x @+ else get_integer:=x;
+end;
+
+@y
+@ No dialog.
+@z
+
+@x [50-55] No dialog.
+@ The selected options are put into global variables by the |dialog|
+procedure, which is called just as \.{DVItype} begins.
+@^system dependencies@>
+
+@p procedure dialog;
+label 1,2,3,4,5;
+var k:integer; {loop variable}
+begin rewrite(term_out); {prepare the terminal for output}
+write_ln(term_out,banner);
+@<Determine the desired |out_mode|@>;
+@<Determine the desired |start_count| values@>;
+@<Determine the desired |max_pages|@>;
+@<Determine the desired |resolution|@>;
+@<Determine the desired |new_mag|@>;
+@<Print all the selected options@>;
+end;
+
+@ @<Determine the desired |out_mode|@>=
+1: write(term_out,'Output level (default=4, ? for help): ');
+out_mode:=the_works; input_ln;
+if buffer[0]<>" " then
+ if (buffer[0]>="0")and(buffer[0]<="4") then out_mode:=buffer[0]-"0"
+ else begin write(term_out,'Type 4 for complete listing,');
+ write(term_out,' 0 for errors and fonts only,');
+ write_ln(term_out,' 1 or 2 or 3 for something in between.');
+ goto 1;
+ end
+
+@ @<Determine the desired |start...@>=
+2: write(term_out,'Starting page (default=*): ');
+start_vals:=0; start_there[0]:=false;
+input_ln; buf_ptr:=0; k:=0;
+if buffer[0]<>" " then
+ repeat if buffer[buf_ptr]="*" then
+ begin start_there[k]:=false; incr(buf_ptr);
+ end
+ else begin start_there[k]:=true; start_count[k]:=get_integer;
+ end;
+ if (k<9)and(buffer[buf_ptr]=".") then
+ begin incr(k); incr(buf_ptr);
+ end
+ else if buffer[buf_ptr]=" " then start_vals:=k
+ else begin write(term_out,'Type, e.g., 1.*.-5 to specify the ');
+ write_ln(term_out,'first page with \count0=1, \count2=-5.');
+ goto 2;
+ end;
+ until start_vals=k
+
+@ @<Determine the desired |max_pages|@>=
+3: write(term_out,'Maximum number of pages (default=1000000): ');
+max_pages:=1000000; input_ln; buf_ptr:=0;
+if buffer[0]<>" " then
+ begin max_pages:=get_integer;
+ if max_pages<=0 then
+ begin write_ln(term_out,'Please type a positive number.');
+ goto 3;
+ end;
+ end
+
+@ @<Determine the desired |resolution|@>=
+4: write(term_out,'Assumed device resolution');
+write(term_out,' in pixels per inch (default=300/1): ');
+resolution:=300.0; input_ln; buf_ptr:=0;
+if buffer[0]<>" " then
+ begin k:=get_integer;
+ if (k>0)and(buffer[buf_ptr]="/")and
+ (buffer[buf_ptr+1]>"0")and(buffer[buf_ptr+1]<="9") then
+ begin incr(buf_ptr); resolution:=k/get_integer;
+ end
+ else begin write(term_out,'Type a ratio of positive integers;');
+ write_ln(term_out,' (1 pixel per mm would be 254/10).');
+ goto 4;
+ end;
+ end
+
+@ @<Determine the desired |new_mag|@>=
+5: write(term_out,'New magnification (default=0 to keep the old one): ');
+new_mag:=0; input_ln; buf_ptr:=0;
+if buffer[0]<>" " then
+ if (buffer[0]>="0")and(buffer[0]<="9") then new_mag:=get_integer
+ else begin write(term_out,'Type a positive integer to override ');
+ write_ln(term_out,'the magnification in the DVI file.');
+ goto 5;
+ end
+@y
+@ No dialog (50).
+@ No dialog (51).
+@ No dialog (52).
+@ No dialog (53).
+@ No dialog (54).
+@ No dialog (55).
+@z
+
+@x [56] Fix printing of floating point number.
+print_ln(' Resolution = ',resolution:12:8,' pixels per inch');
+if new_mag>0 then print_ln(' New magnification factor = ',new_mag/1000:8:3)
+@y
+print (' Resolution = ');
+print_real (resolution, 12, 8);
+print_ln (' pixels per inch');
+if new_mag > 0
+then begin
+ print (' New magnification factor = ');
+ print_real (new_mag / 1000.0, 8, 3);
+ print_ln('')
+end
+@z
+
+@x [59] We use r for something else.
+@!r:0..name_length; {index into |cur_name|}
+@y
+@!r:0..name_size; {current filename length}
+@z
+
+@x [62] <Load the new font...> close the file when we're done
+if out_mode=errors_only then print_ln(' ');
+@y
+if out_mode=errors_only then print_ln(' ');
+if tfm_file then
+ xfclose (tfm_file, cur_name); {should be the |kpse_find_tfm| result}
+free (cur_name); {We |xmalloc|'d this before we got called.}
+@z
+
+@x [64] Don't set default_directory_name.
+@d default_directory_name=='TeXfonts:' {change this to the correct name}
+@d default_directory_name_length=9 {change this to the correct length}
+
+@<Glob...@>=
+@!default_directory:packed array[1..default_directory_name_length] of char;
+@y
+Under Unix, users have a path searched for fonts, there's no single
+default directory.
+@z
+
+@x [65] Remove initialization of default_directory.
+@ @<Set init...@>=
+default_directory:=default_directory_name;
+@y
+@ (No initialization needs to be done. Keep this module to preserve
+numbering.)
+@z
+
+@x [66] Don't append `.tfm' here, and keep lowercase.
+@ The string |cur_name| is supposed to be set to the external name of the
+\.{TFM} file for the current font. This usually means that we need to
+prepend the name of the default directory, and
+to append the suffix `\.{.TFM}'. Furthermore, we change lower case letters
+to upper case, since |cur_name| is a \PASCAL\ string.
+@^system dependencies@>
+
+@<Move font name into the |cur_name| string@>=
+for k:=1 to name_length do cur_name[k]:=' ';
+if p=0 then
+ begin for k:=1 to default_directory_name_length do
+ cur_name[k]:=default_directory[k];
+ r:=default_directory_name_length;
+ end
+else r:=0;
+for k:=font_name[nf] to font_name[nf+1]-1 do
+ begin incr(r);
+ if r+4>name_length then
+ abort('DVItype capacity exceeded (max font name length=',
+ name_length:1,')!');
+@.DVItype capacity exceeded...@>
+ if (names[k]>="a")and(names[k]<="z") then
+ cur_name[r]:=xchr[names[k]-@'40]
+ else cur_name[r]:=xchr[names[k]];
+ end;
+cur_name[r+1]:='.'; cur_name[r+2]:='T'; cur_name[r+3]:='F'; cur_name[r+4]:='M'
+@y
+@ The string |cur_name| is supposed to be set to the external name of the
+\.{TFM} file for the current font. We do not impose a maximum limit
+here. It's too bad there is a limit on the total length of all
+filenames, but it doesn't seem worth reprogramming all that.
+@^system dependencies@>
+
+@d name_start == font_name[nf]
+@d name_end == font_name[nf+1]
+
+@<Move font name into the |cur_name| string@>=
+r := name_end - name_start;
+cur_name := xmalloc_array (char, r);
+{|strncpy| might be faster, but it's probably a good idea to keep the
+ |xchr| translation.}
+for k := name_start to name_end do begin
+ cur_name[k - name_start] := xchr[names[k]];
+end;
+cur_name[r] := 0; {Append null byte for C.}
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% JFM
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x Not use fprintf() for JIS
+ for k:=1 to text_ptr do print(xchr[text_buf[k]]);
+ print_ln(']');
+@y
+ for k:=1 to text_ptr do print(xchr[text_buf[k]]);
+ print(']'); print_ln('');
+@z
+
+@x
+@p procedure out_text(c:ASCII_code);
+begin if text_ptr=line_length-2 then flush_text;
+incr(text_ptr); text_buf[text_ptr]:=c;
+end;
+@y
+@p procedure out_text(c:ASCII_code);
+begin if text_ptr=line_length-2 then flush_text;
+incr(text_ptr);
+if c>=177 then text_buf[text_ptr]:=@'77 else text_buf[text_ptr]:=c;
+end;
+
+@ declare kanji conversion function
+
+@d jis_enc==0
+@d euc_enc==1
+@d sjis_enc==2
+
+@ @<Global...@> =
+@!proc_kanji_code:jis_enc..sjis_enc;
+
+@ @<Set init...@> =
+ifdef('OUTJIS') proc_kanji_code:=jis_enc; endif('OUTJIS');
+ifdef('OUTEUC') proc_kanji_code:=euc_enc; endif('OUTEUC');
+ifdef('OUTSJIS') proc_kanji_code:=sjis_enc; endif('OUTSJIS');
+
+@ @p procedure out_kanji(c:integer);
+begin
+ if text_ptr>=line_length-3 then flush_text;
+ if (proc_kanji_code=sjis_enc) then begin
+ c := JIStoSJIS(c);
+ incr(text_ptr); text_buf[text_ptr]:= c div 256;
+ incr(text_ptr); text_buf[text_ptr]:= c mod 256;
+ end else begin
+ incr(text_ptr); text_buf[text_ptr]:= c div 256 + 128;
+ incr(text_ptr); text_buf[text_ptr]:= c mod 256 + 128;
+ end;
+end;
+
+@ output hexdecimal / octal character code.
+
+@d print_hex_digit(#)==if # <= 9 then print((#):1)
+ else case # of
+ 10: print(xchr['A']);
+ 11: print(xchr['B']);
+ 12: print(xchr['C']);
+ 13: print(xchr['D']);
+ 14: print(xchr['E']);
+ 15: print(xchr['F']); { no more cases }
+ end
+
+@p
+ifdef('HEX_CHAR_CODE')
+procedure print_hex_number(c:integer);
+var n:integer;
+ b:array[1..8] of integer;
+begin
+ n:=1;
+ while (n<8) and (c<>0) do
+ begin b[n]:=c mod 16; c:=c div 16; n:=n+1 end;
+ print('"');
+ if n=1 then print(xchr['0'])
+ else
+ begin
+ n:=n-1;
+ while n>0 do
+ begin print_hex_digit(b[n]); n:=n-1 end
+ end
+end;
+endif('HEX_CHAR_CODE')
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+z0: first_par:=z;
+@y
+z0: first_par:=z;
+dir: first_par:=get_byte;
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+s:=0; h:=0; v:=0; w:=0; x:=0; y:=0; z:=0; hh:=0; vv:=0;
+@y
+s:=0; h:=0; v:=0; w:=0; x:=0; y:=0; z:=0; hh:=0; vv:=0; dd:=0;
+@z
+%%%%%%%%%%%%%%%%%%%%%%%%% End of pTeX%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+@x [80] (major,minor) optionally show opcode
+@d show(#)==begin flush_text; showing:=true; print(a:1,': ',#);
+ end
+@d major(#)==if out_mode>errors_only then show(#)
+@d minor(#)==if out_mode>terse then
+ begin showing:=true; print(a:1,': ',#);
+@y
+@d show(#)==begin flush_text; showing:=true; print(a:1,': ',#);
+ if show_opcodes and (o >= 128) then print (' {', o:1, '}');
+ end
+@d major(#)==if out_mode>errors_only then show(#)
+@d minor(#)==if out_mode>terse then
+ begin showing:=true; print(a:1,': ',#);
+ if show_opcodes and (o >= 128) then print (' {', o:1, '}');
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+ four_cases(set1): begin major('set',o-set1+1:1,' ',p:1); goto fin_set;
+@y
+ four_cases(set1):
+ begin
+ if fnt_jfm_p[cur_font]=true then
+ begin
+ cur_jfm_char_type:=get_jfm_char_type(cur_font,p);
+ out_kanji(p);
+ minor('set',o-set1+1:1,' ',p:1);
+ifdef('HEX_CHAR_CODE')
+ print('(');
+ print_hex_number(p);
+ print(')');
+endif('HEX_CHAR_CODE')
+ print(' type=',cur_jfm_char_type);
+ p:=cur_jfm_char_type
+ end
+ else begin
+ major('set',o-set1+1:1,' ',p:1);
+ifdef('HEX_CHAR_CODE')
+ print('(');
+ print_hex_number(p);
+ print(')');
+endif('HEX_CHAR_CODE')
+ end;
+ goto fin_set;
+@z
+
+@x
+ put_rule: begin major('putrule'); goto fin_rule;
+ end;
+@y
+ put_rule: begin major('putrule'); goto fin_rule;
+ end;
+ dir: begin major('dir ',p:1); dd:=p; goto done;
+ end;
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+ hstack[s]:=h; vstack[s]:=v; wstack[s]:=w;
+@y
+ ddstack[s]:=dd;
+ hstack[s]:=h; vstack[s]:=v; wstack[s]:=w;
+@z
+
+@x
+ h:=hstack[s]; v:=vstack[s]; w:=wstack[s];
+@y
+ dd:=ddstack[s];
+ h:=hstack[s]; v:=vstack[s]; w:=wstack[s];
+@z
+
+@x
+@d out_space(#)==if (p>=font_space[cur_font])or(p<=-4*font_space[cur_font]) then
+ begin out_text(" "); hh:=pixel_round(h+p);
+ end
+ else hh:=hh+pixel_round(p);
+@y
+@d out_space(#)==if (p>=font_space[cur_font])or(p<=-4*font_space[cur_font]) then
+ begin out_text(" ");
+ if dd=0 then hh:=pixel_round(h+p) else vv:=pixel_round(v+p);
+ end
+ else if dd=0 then hh:=hh+pixel_round(p) else vv:=vv+pixel_round(p);
+@z
+
+@x
+@d out_vmove(#)==if abs(p)>=5*font_space[cur_font] then vv:=pixel_round(v+p)
+ else vv:=vv+pixel_round(p);
+@y
+@d out_vmove(#)==if abs(p)>=5*font_space[cur_font] then
+ begin if dd=0 then vv:=pixel_round(v+p) else hh:=pixel_round(h-p) end
+ else if dd=0 then vv:=vv+pixel_round(p) else hh:=hh-pixel_round(p);
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Hexadecimal code
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+@ @<Translate a |set_char|...@>=
+begin if (o>" ")and(o<="~") then
+ begin out_text(p); minor('setchar',p:1);
+ end
+else major('setchar',p:1);
+@y
+@ @<Translate a |set_char|...@>=
+begin if (o>" ")and(o<="~") then
+ begin out_text(p); minor('setchar',p:1);
+ end
+else major('setchar',p:1);
+ifdef('HEX_CHAR_CODE')
+ print(' (');
+ print_hex_number(p);
+ print(')');
+endif('HEX_CHAR_CODE')
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+else hh:=hh+char_pixel_width(cur_font)(p);
+@y
+else if dd=0 then hh:=hh+char_pixel_width(cur_font)(p)
+ else vv:=vv+char_pixel_width(cur_font)(p);
+@z
+
+@x
+hh:=hh+rule_pixels(q); goto move_right
+@y
+if dd=0 then hh:=hh+rule_pixels(q) else vv:=vv+rule_pixels(q);
+goto move_right
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+@<Finish a command that sets |h:=h+q|, then |goto done|@>=
+@y
+@<Finish a command that sets |h:=h+q|, then |goto done|@>=
+if dd=0 then begin
+@z
+
+@x
+goto done
+@y
+goto done end
+else begin
+if (v>0)and(q>0) then if v>infinity-q then
+ begin error('arithmetic overflow! parameter changed from ',
+@.arithmetic overflow...@>
+ q:1,' to ',infinity-q:1);
+ q:=infinity-v;
+ end;
+if (v<0)and(q<0) then if -v>q+infinity then
+ begin error('arithmetic overflow! parameter changed from ',
+ q:1, ' to ',(-v)-infinity:1);
+ q:=(-v)-infinity;
+ end;
+hhh:=pixel_round(v+q);
+if abs(hhh-vv)>max_drift then
+ if hhh>vv then vv:=hhh-max_drift
+ else vv:=hhh+max_drift;
+if showing then if out_mode>mnemonics_only then
+ begin print(' v:=',v:1);
+ if q>=0 then print('+');
+ print(q:1,'=',v+q:1,', vv:=',vv:1);
+ end;
+v:=v+q;
+if abs(v)>max_v_so_far then
+ begin if abs(v)>max_v+99 then
+ begin error('warning: |v|>',max_v:1,'!');
+@.warning: |v|...@>
+ max_v:=abs(v);
+ end;
+ max_v_so_far:=abs(v);
+ end;
+goto done
+end
+@z
+
+@x
+@ @<Finish a command that sets |v:=v+p|, then |goto done|@>=
+@y
+@ @<Finish a command that sets |v:=v+p|, then |goto done|@>=
+if dd=0 then begin
+@z
+
+@x
+goto done
+@y
+goto done end
+else begin
+p:=-p;
+if (h>0)and(p>0) then if h>infinity-p then
+ begin error('arithmetic overflow! parameter changed from ',
+@.arithmetic overflow...@>
+ p:1,' to ',infinity-h:1);
+ p:=infinity-h;
+ end;
+if (h<0)and(p<0) then if -h>p+infinity then
+ begin error('arithmetic overflow! parameter changed from ',
+ p:1, ' to ',(-h)-infinity:1);
+ p:=(-h)-infinity;
+ end;
+vvv:=pixel_round(h+p);
+if abs(vvv-hh)>max_drift then
+ if vvv>hh then hh:=vvv-max_drift
+ else hh:=vvv+max_drift;
+if showing then if out_mode>mnemonics_only then
+ begin print(' h:=',h:1);
+ if p>=0 then print('+');
+ print(p:1,'=',h+p:1,', hh:=',hh:1);
+ end;
+h:=h+p;
+if abs(h)>max_h_so_far then
+ begin if abs(h)>max_h+99 then
+ begin error('warning: |h|>',max_h:1,'!');
+@.warning: |h|...@>
+ max_h:=abs(h);
+ end;
+ max_h_so_far:=abs(h);
+ end;
+goto done
+end
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x
+ print('level ',ss:1,':(h=',h:1,',v=',v:1,
+ ',w=',w:1,',x=',x:1,',y=',y:1,',z=',z:1,
+ ',hh=',hh:1,',vv=',vv:1,')');
+@y
+ begin
+ print('level ',ss:1,':(h=',h:1,',v=',v:1,
+ ',w=',w:1,',x=',x:1,',y=',y:1,',z=',z:1);
+ if ptex_p then print(',d=',dd:1);
+ print(',hh=',hh:1,',vv=',vv:1,')');
+ end;
+@z
+
+@x
+if k<>id_byte then bad_dvi('ID byte is ',k:1);
+@y
+ptex_p:=(k=ptex_id_byte);
+if (k<>id_byte) and (not ptex_p) then bad_dvi('ID byte is ',k:1);
+@z
+
+@x
+print_ln(', maxstackdepth=',max_s:1,', totalpages=',total_pages:1);
+@y
+print_ln(', maxstackdepth=',max_s:1,', totalpages=',total_pages:1);
+if ptex_p then print_ln('pTeX DVI (id=',ptex_id_byte:1,')');
+@z
+
+@x
+if m<>id_byte then print_ln('identification in byte ',cur_loc-1:1,
+@.identification...should be n@>
+ ' should be ',id_byte:1,'!');
+@y
+if (m<>id_byte) and (m<>ptex_id_byte) then
+ print_ln('identification in byte ',cur_loc-1:1,
+@.identification...should be n@>
+ ' should be ',id_byte:1,' or ',ptex_id_byte:1,'!');
+@z
+
+@x [106] (main) No dialog; remove unused label.
+dialog; {set up all the options}
+@y
+@<Print all the selected options@>;
+@z
+
+@x
+final_end:end.
+@y
+end.
+@z
+
+@x [109] Fix another floating point print.
+print_ln('magnification=',mag:1,'; ',conv:16:8,' pixels per DVI unit')
+@y
+print ('magnification=', mag:1, '; ');
+print_real (conv, 16, 8);
+print_ln (' pixels per DVI unit')
+@z
+
+@x [111] System-dependent changes.
+This section should be replaced, if necessary, by changes to the program
+that are necessary to make \.{DVItype} work at a particular installation.
+It is usually best to design your change file so that all changes to
+previous sections preserve the section numbering; then everybody's version
+will be consistent with the printed program. More extensive changes,
+which introduce new sections, can be inserted here; then only the index
+itself will get a new section number.
+@^system dependencies@>
+@y
+Parse a Unix-style command line.
+
+@d argument_is (#) == (strcmp (long_options[option_index].name, #) = 0)
+
+@<Define |parse_arguments|@> =
+procedure parse_arguments;
+const n_options = 9; {Pascal won't count array lengths for us.}
+var @!long_options: array[0..n_options] of getopt_struct;
+ @!getopt_return_val: integer;
+ @!option_index: c_int_type;
+ @!current_option: 0..n_options;
+ @!end_num:^char; {for \.{page-start}}
+begin
+ @<Define the option table@>;
+ repeat
+ getopt_return_val := getopt_long_only (argc, argv, '', long_options,
+ address_of (option_index));
+ if getopt_return_val = -1 then begin
+ {End of arguments; we exit the loop below.} ;
+
+ end else if getopt_return_val = "?" then begin
+ usage ('pdvitype');
+
+ end else if argument_is ('help') then begin
+ usage_help (PDVITYPE_HELP, nil);
+
+ end else if argument_is ('version') then begin
+ print_version_and_exit (banner, nil, 'D.E. Knuth');
+
+ end else if argument_is ('output-level') then begin
+ out_mode := atou (optarg);
+ if (out_mode = 0) or (out_mode > 4) then begin
+ write_ln (stderr, 'Value for --output-level must be >= 1 and <= 4.');
+ uexit (1);
+ end;
+
+ end else if argument_is ('page-start') then begin
+ @<Determine the desired |start_count| values from |optarg|@>;
+
+ end else if argument_is ('max-pages') then begin
+ max_pages := atou (optarg);
+
+ end else if argument_is ('dpi') then begin
+ resolution := atof (optarg);
+
+ end else if argument_is ('magnification') then begin
+ new_mag := atou (optarg);
+
+ end; {Else it was a flag; |getopt| has already done the assignment.}
+ until getopt_return_val = -1;
+
+ {Now |optind| is the index of first non-option on the command line.}
+ if (optind + 1 <> argc) then begin
+ write_ln (stderr, 'pdvitype: Need exactly one file argument.');
+ usage ('pdvitype');
+ end;
+end;
+
+@ Here are the options we allow. The first is one of the standard GNU options.
+@.-help@>
+
+@<Define the option...@> =
+current_option := 0;
+long_options[current_option].name := 'help';
+long_options[current_option].has_arg := 0;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+
+@ Another of the standard options.
+@.-version@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'version';
+long_options[current_option].has_arg := 0;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+
+@ How verbose to be.
+@.-output-level@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'output-level';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+out_mode := the_works; {default}
+
+@ What page to start at.
+@.-page-start@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'page-start';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+
+@ Parsing the starting page specification is a bit complicated.
+
+@<Determine the desired |start_count|...@> =
+k := 0; {which \.{\\count} register we're on}
+m := 0; {position in |optarg|}
+while optarg[m] do begin
+ if optarg[m] = "*" then begin
+ start_there[k] := false;
+ incr (m);
+
+ end else if optarg[m] = "." then begin
+ incr (k);
+ if k >= 10 then begin
+ write_ln (stderr, 'dvitype: More than ten count registers specified.');
+ uexit (1);
+ end;
+ incr (m);
+
+ end else begin
+ start_count[k] := strtol (optarg + m, address_of (end_num), 10);
+ if end_num = optarg + m then begin
+ write_ln (stderr, 'dvitype: -page-start values must be numeric or *.');
+ uexit (1);
+ end;
+ start_there[k] := true;
+ m := m + end_num - (optarg + m);
+ end;
+end;
+start_vals := k;
+
+@ How many pages to do.
+@.-max-pages@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'max-pages';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+max_pages := 1000000; {default}
+
+@ Resolution, in pixels per inch.
+@.-dpi@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'dpi';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+resolution := 300.0; {default}
+
+@ Magnification to apply.
+@.-magnification@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'magnification';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr (current_option);
+new_mag := 0; {default is to keep the old one}
+
+@ Whether to show numeric opcodes.
+@.-show-opcodes@>
+
+@<Define the option...@> =
+long_options[current_option].name := 'show-opcodes';
+long_options[current_option].has_arg := 0;
+long_options[current_option].flag := address_of (show_opcodes);
+long_options[current_option].val := 1;
+incr (current_option);
+new_mag := 0; {default is to keep the old one}
+
+@ @<Glob...@> =
+@!show_opcodes: c_int_type;
+
+@ An element with all zeros always ends the list.
+
+@<Define the option...@> =
+long_options[current_option].name := 0;
+long_options[current_option].has_arg := 0;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+@z
diff --git a/language/japanese/ptex/pltotf.ch b/language/japanese/ptex/pltotf.ch
new file mode 100644
index 0000000000..c066e57361
--- /dev/null
+++ b/language/japanese/ptex/pltotf.ch
@@ -0,0 +1,780 @@
+% This is a change file for TFtoPL
+%
+% (11/13/2000) KN PLtoTF p1.4 (3.5, Web2c 7.2)
+% (03/27/1998) KN PLtoTF p1.3 (3.5, Web2c 7.2)
+%
+@x [0] l.52 - pTeX:
+\def\title{PL$\,$\lowercase{to}$\,$TF changes for C}
+@y
+\def\title{PL$\,$\lowercase{to}$\,$TF changes for C, and for KANJI}
+@z
+
+@x [2] l.69 - pTeX:
+@d banner=='This is PLtoTF, Version 3.5' {printed when the program starts}
+@y
+@d banner=='This is Nihongo PLtoTF, Version 3.5-p1.6'
+ {printed when the program starts}
+@d jis_enc==0
+@d euc_enc==1
+@d sjis_enc==2
+@z
+
+@x [6] l.140 - pTeX:
+ print_ln (version_string);
+@y
+ print_ln (version_string);
+ print ('process kanji code is ');
+ case proc_kanji_code of
+ jis_enc: print('jis');
+ euc_enc: print('euc');
+ sjis_enc: print('sjis');
+ end;
+ print_ln ('.');
+@z
+
+@x [18] l.495 - pTeX:
+@!xord:array[char] of ASCII_code; {conversion table}
+@y
+@!xord:array[char] of ASCII_code; {conversion table}
+@!xchr:array[char] of byte; {specifiles conversion of output character}
+@z
+
+@x [19] l.506 - pTeX:
+for k:=first_ord to last_ord do xord[chr(k)]:=invalid_code;
+@y
+for k:=0 to @'37 do xchr[k]:='?';
+for k:=@'40 to 255 do xchr[k]:=k;
+for k:=first_ord to last_ord do xord[chr(k)]:=invalid_code;
+@z
+
+@x [27] l.587 - pTeX: to convert putc of web2c
+for k:=1 to loc do print(buffer[k]); {print the characters already scanned}
+@y
+for k:=1 to loc do print(xchr[buffer[k]]);
+ {print the characters already scanned}
+@z
+
+@x [27] l.591 - pTeX: to convert putc of web2c
+for k:=loc+1 to limit do print(buffer[k]); {print the characters yet unseen}
+@y
+for k:=loc+1 to limit do print(xchr[buffer[k]]);
+ {print the characters yet unseen}
+@z
+
+@x [28] l.610 - pTeX: Read JIS kanji code.
+@p procedure fill_buffer;
+begin left_ln:=right_ln; limit:=0; loc:=0;
+@y
+@p procedure fill_buffer;
+var @!c_a,@!c_b:byte;
+@!cx:integer;
+@!kmode:0..1; {|1| denotes in JIS kanji strings}
+begin left_ln:=right_ln; limit:=0; loc:=0; kmode:=0;
+@z
+
+@x [28] l.619 - pTeX:
+else begin while (limit<buf_size-1)and(not eoln(pl_file)) do
+ begin incr(limit); read(pl_file,buffer[limit]);
+ end;
+@y
+else begin kmode:=0;
+ while (limit<buf_size-3)and(not eoln(pl_file)) do
+ begin read(pl_file,c_a);
+ if c_a=@'33 then @<Store JIS code characters to buffer@>
+ else
+ begin if kmode=0 then
+ begin incr(limit); buffer[limit]:=c_a;
+ end
+ else begin read(pl_file,c_b);
+ if (proc_kanji_code=sjis_enc) then cx:=JIStoSJIS(c_a*@'400+c_b)
+ else cx:=JIStoEUC(c_a*@'400+c_b);
+ incr(limit); buffer[limit]:=cx div @'400;
+ incr(limit); buffer[limit]:=cx mod @'400;
+ end;
+ end;
+ end;
+@z
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% [28] This fixes a bug in the original. If get_byte is reading a
+% number at the end of a line and the next line has a number
+% at the beginning (possibly preceded by some spaces!!) these
+% two numbers are run together.
+% This bug may be found in other routines so...
+% Fix: add some (more?) space at the end of each line, in fill_buffer.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@x [28] l.622 - pTeX:
+ buffer[limit+1]:=' '; right_ln:=eoln(pl_file);
+ if left_ln then @<Set |loc| to the number of leading blanks in
+ the buffer, and check the indentation@>;
+ end;
+end;
+@y
+ buffer[limit+1]:=' '; right_ln:=eoln(pl_file);
+ if right_ln then begin incr(limit); buffer[limit+1]:=' ';
+ end;
+ if left_ln then @<Set |loc| to the number of leading blanks in
+ the buffer, and check the indentation@>;
+ end;
+end;
+
+@ @<Store JIS code characters...@>=
+begin read(pl_file,c_a);
+if c_a='$' then begin read(pl_file,c_a);
+ if (c_a='@@')or(c_a='B') then kmode:=1 { Kanji in }
+ else begin incr(limit); buffer[limit]:=@'33;
+ incr(limit); buffer[limit]:='$';
+ incr(limit); buffer[limit]:=c_a;
+ end;
+ end
+else if c_a='(' then begin read(pl_file,c_a);
+ if (c_a='J')or(c_a='B')or(c_a='H') then kmode:=0 { Kanji out }
+ else begin incr(limit); buffer[limit]:=@'33;
+ incr(limit); buffer[limit]:='(';
+ incr(limit); buffer[limit]:=c_a;
+ end;
+ end
+else begin
+ incr(limit); buffer[limit]:=@'33;
+ incr(limit); buffer[limit]:=c_a;
+ end;
+end
+@z
+
+@x [36] l.754 - pTeX: May have to increase some numbers to fit new commands
+@d max_name_index=88 {upper bound on the number of keywords}
+@d max_letters=600 {upper bound on the total length of all keywords}
+@y
+@d max_name_index=97 {upper bound on the number of keywords}
+@d max_letters=700 {upper bound on the total length of all keywords}
+@z
+
+@x [44] l.839 - pTeX: Add kanji related codes
+@d character_code=12
+@y
+@d character_code=12
+@d type_code=13 {|TYPE| property}
+@d glue_kern_code=14 {|GLUEKRN| property}
+@d chars_in_type_code=15 {|CHARSINTYPE| property}
+@d dir_code=16 {|DIRECTION| property}
+@z
+
+@x [44] l.856 - pTeX:
+@d lig_code=74
+@y
+@d lig_code=74
+@d glue_code=75 {|GLUE| property}
+@#
+@d undefined=0 {not decided file format yet}
+@d tfm_format=1 {\.{TFM} file format}
+@d jfm_or_vfm=2 {Yoko or Tate \.{JFM} file format}
+@d jfm_format=3 {Yoko-kumi \.{JFM} file format}
+@d vfm_format=4 {Tate-kumi \.{JFM} file format}
+@z
+
+@x [84] l.1542 - pTeX: Change valid property code.
+if cur_code=comment_code then skip_to_end_of_item
+else if cur_code>character_code then
+ flush_error('This property name doesn''t belong on the outer level')
+@.This property name doesn't belong...@>
+@y
+if cur_code=comment_code then skip_to_end_of_item
+else if (cur_code>dir_code)or
+ ((file_format=tfm_format)and(cur_code>character_code)) then
+ flush_error('This property name doesn''t belong on the outer level')
+@.This property name doesn't belong...@>
+@z
+
+@x [85] l.1565 - pTeX: Added some property codes.
+character_code: read_char_info;
+@y
+character_code: read_char_info;
+type_code: read_kanji_info;
+glue_kern_code: read_glue_kern;
+chars_in_type_code: read_chars_in_type;
+dir_code: read_direction;
+@z
+
+@x [110] l.1915 - pTeX: there are no charlists in kanji format files.
+for c:=0 to 255 do
+ @<Make sure that |c| is not the largest element of a charlist cycle@>;
+@y
+if file_format=tfm_format then
+ for c:=0 to 255 do
+ @<Make sure that |c| is not the largest element of a charlist cycle@>;
+@z
+
+@x [120] l.2037 - pTeX: when checking glue_kern prog check glues as well
+ begin if lig_exam<>bchar then
+ check_existence(lig_exam)('LIG character examined by');
+@.LIG character examined...@>
+ check_existence(lig_gen)('LIG character generated by');
+@.LIG character generated...@>
+ if lig_gen>=128 then if(c<128)or(c=256) then
+ if(lig_exam<128)or(lig_exam=bchar) then seven_unsafe:=true;
+ end
+@y
+ begin if file_format=tfm_format then
+ begin if lig_exam<>bchar then
+ check_existence(lig_exam)('LIG character examined by');
+@.LIG character examined...@>
+ check_existence(lig_gen)('LIG character generated by');
+@.LIG character generated...@>
+ if lig_gen>=128 then if(c<128)or(c=256) then
+ if(lig_exam<128)or(lig_exam=bchar) then seven_unsafe:=true;
+ end
+ else check_existence(lig_exam)('GLUE character generated by');
+ end
+@z
+
+@x [126] l.2178 - pTeX: Fix up output of bytes.
+@<Doublecheck...@>=
+if nl>0 then for lig_ptr:=0 to nl-1 do
+ if lig_kern[lig_ptr].b2<kern_flag then
+ begin if lig_kern[lig_ptr].b0<255 then
+ begin double_check_lig(b1)('LIG step'); double_check_lig(b3)('LIG step');
+ end;
+ end
+ else double_check_lig(b1)('KRN step');
+@y
+@<Doublecheck...@>=
+@z
+
+@x [128] l.2207 - pTeX: Decide the |file_format|.
+@<Do the output@>=
+@y
+@<Do the output@>=
+case file_format of
+tfm_format: do_nothing;
+undefined,jfm_or_vfm: begin file_format:=jfm_format;
+ print_ln('Input file is in kanji YOKO-kumi format.');
+ end;
+jfm_format: print_ln('Input file is in kanji YOKO-kumi format.');
+vfm_format: print_ln('Input file is in kanji TATE-kumi format.');
+end;
+@z
+
+@x [128] l.2211 - pTeX: Output kanji character
+@<Output the character info@>;
+@y
+if file_format<>tfm_format then @<Output the kanji character type info@>;
+@<Output the character info@>;
+@z
+
+@x [128] l.2213 - pTeX: Output glue/kern programs
+@<Output the ligature/kern program@>;
+@y
+@<Output the ligature/kern program@>;
+if (file_format<>tfm_format)and(ng>0) then
+ for krn_ptr:=0 to ng-1 do
+ begin out_scaled(glue[3*krn_ptr+0]);
+ out_scaled(glue[3*krn_ptr+1]);
+ out_scaled(glue[3*krn_ptr+2]);
+ end;
+@z
+
+@x [130] l.2238 - pTeX:
+not_found:=true; bc:=0;
+while not_found do
+ if (char_wd[bc]>0)or(bc=255) then not_found:=false
+ else incr(bc);
+not_found:=true; ec:=255;
+while not_found do
+ if (char_wd[ec]>0)or(ec=0) then not_found:=false
+ else decr(ec);
+if bc>ec then bc:=1;
+@y
+if file_format<>tfm_format then
+ begin bc:=0; ec:=0; nt:=1;
+ for kanji_type_index:=0 to max_kanji do
+ begin if kanji_type[kanji_type_index]>0 then incr(nt);
+ if kanji_type[kanji_type_index]>ec then ec:=kanji_type[kanji_type_index];
+ end;
+ end
+else begin not_found:=true; bc:=0;
+ while not_found do
+ if (char_wd[bc]>0)or(bc=255) then not_found:=false
+ else incr(bc);
+ not_found:=true; ec:=255;
+ while not_found do
+ if (char_wd[ec]>0)or(ec=0) then not_found:=false
+ else decr(ec);
+ if bc>ec then bc:=1;
+ end;
+@z
+
+@x [130] l.2250 - pTeX:
+lf:=6+lh+(ec-bc+1)+memory[width]+memory[height]+memory[depth]+
+memory[italic]+nl+lk_offset+nk+ne+np;
+@y
+if file_format<>tfm_format then
+ lf:=7+nt+lh+(ec-bc+1)+memory[width]+memory[height]+memory[depth]+
+ memory[italic]+nl+lk_offset+nk+3*ng+np
+else
+ lf:=6+lh+(ec-bc+1)+memory[width]+memory[height]+memory[depth]+
+ memory[italic]+nl+lk_offset+nk+ne+np;
+@z
+
+@x [131] l.2256 - pTeX:
+out_size(lf); out_size(lh); out_size(bc); out_size(ec);
+out_size(memory[width]); out_size(memory[height]);
+out_size(memory[depth]); out_size(memory[italic]);
+out_size(nl+lk_offset); out_size(nk); out_size(ne); out_size(np);
+@y
+if file_format=jfm_format then
+ begin out_size(yoko_id_number); out_size(nt);
+ end
+else if file_format=vfm_format then
+ begin out_size(tate_id_number); out_size(nt);
+ end;
+out_size(lf); out_size(lh); out_size(bc); out_size(ec);
+out_size(memory[width]); out_size(memory[height]);
+out_size(memory[depth]); out_size(memory[italic]);
+out_size(nl+lk_offset); out_size(nk);
+if file_format<>tfm_format then begin out_size(ng*3)
+ end
+else begin out_size(ne);
+ end;
+out_size(np);
+@z
+
+@x [146] l.2476 - pTeX:
+@p procedure param_enter;
+@y
+@p
+@<Declare kanji scanning routines@>@/
+procedure param_enter;
+@z
+
+@x [146] l.2488 - pTeX: LIGTABLE command can not be used in JPL.
+begin @<Read ligature/kern list@>;
+end;
+@y
+begin @<If is jfm or vfm then print error@>;
+@<Read ligature/kern list@>;
+end;
+@z
+
+@x [146] l.2493 - pTeX: CHARACTER command can not be used in JPL.
+begin @<Read character info list@>;
+end;
+@y
+begin @<If is jfm or vfm then print error@>;
+@<Read character info list@>;
+end;
+@z
+
+@x [146] l.2506 - pTeX:
+begin @<Correct and check the information@>
+end;
+@y
+begin @<Correct and check the information@>
+end;
+@#
+procedure read_kanji_info; {TYPE command}
+var @!c:byte; {the char}
+begin @<If is tfm then print error@>;
+@<Read Kanji character type list@>;
+end;
+@#
+procedure read_glue_kern; {GLUEKERN command}
+var krn_ptr:0..max_kerns; {an index into |kern|}
+@!c:byte; {runs through all character codes}
+begin @<If is tfm then print error@>;
+@<Read glue/kern list@>;
+end;
+@#
+procedure read_chars_in_type; {CHARSINTYPE command}
+var @!type_num:byte; {kanji character type number}
+@!jis_code:integer; {sixteen bits Kanji character code}
+begin @<If is tfm then print error@>;
+@<Read Kanji characters list in this type@>;
+end;
+@#
+procedure read_direction; {DIRECTION command}
+begin @<If is tfm then print error@>;
+@<Read direction@>;
+end;
+@z
+
+@x
+const n_options = 3; {Pascal won't count array lengths for us.}
+@y
+const n_options = 4; {Pascal won't count array lengths for us.}
+@z
+@x
+ usage_help (PLTOTF_HELP, nil);
+@y
+ usage_help (PTEX_PLTOTF_HELP, nil);
+@z
+@x
+ end else if argument_is ('version') then begin
+ print_version_and_exit (banner, nil, 'D.E. Knuth');
+@y
+ end else if argument_is ('version') then begin
+ print_version_and_exit (banner, nil, 'D.E. Knuth');
+
+ end else if argument_is ('kanji') then begin
+ @<Set process kanji code@>;
+@z
+
+@x
+@ An element with all zeros always ends the list.
+@y
+@ kanji option.
+
+@<Define the option...@> =
+long_options[current_option].name := 'kanji';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr(current_option);
+
+@ An element with all zeros always ends the list.
+@z
+
+@x [148] l.2620 - pTeX:
+@* Index.
+@y
+@* For Japanese Font Metric routines.
+We need to include some routines for handling kanji characters.
+
+@<Constants...@>=
+max_kanji=7237; { maximam number of 2byte characters }
+yoko_id_number=11; { is identifier for YOKO-kumi font}
+tate_id_number=9; { is identifier for TATE-kumi font}
+
+@ @<Glob...@>=
+file_format:undefined..vfm_format; {the format of the input file}
+kanji_type:array[0..max_kanji] of -1..256; {the type of every kanji char }
+kanji_type_index:0..max_kanji; { index into above }
+nt:integer; {number of entries in character type table}
+glue:array[0..768] of fix_word; {the distinct glue amounts}
+ng:integer; {number of 3-word entries in glue table}
+
+@ @<Set init...@>=
+file_format:=undefined;
+for kanji_type_index:=0 to max_kanji do kanji_type[kanji_type_index]:=-1;
+ng:=0;
+
+@ @<If is jfm or vfm then print error@>=
+if (file_format>tfm_format) then
+ err_print('This is an illegal command for kanji format files.')
+else if (file_format=undefined) then file_format:=tfm_format
+
+@ @<If is tfm then print error@>=
+if (file_format=tfm_format) then
+ err_print('You can use this command only for kanji format files.')
+else if (file_format=undefined) then file_format:=jfm_or_vfm
+
+@ These are extended propaties for \.{JFM}.
+
+@<Enter all of the names and ...@>=
+load4("T")("Y")("P")("E")(type_code);@/
+load8("G")("L")("U")("E")("K")("E")("R")("N")(glue_kern_code);@/
+load11("C")("H")("A")("R")("S")("I")("N")("T")("Y")("P")("E")
+ (chars_in_type_code);@/
+load9("D")("I")("R")("E")("C")("T")("I")("O")("N")(dir_code);@/
+load4("G")("L")("U")("E")(glue_code);@/
+
+@ @<Enter the parameter names@>=
+load10("E")("X")("T")("R")("A")("S")("P")("A")("C")("E")(parameter_code+7);@/
+load12("E")("X")("T")("R")("A")("S")("T")("R")("E")("T")("C")("H")
+ (parameter_code+8);@/
+load11("E")("X")("T")("R")("A")("S")("H")("R")("I")("N")("K")
+ (parameter_code+9);@/
+
+
+@ Here, we declare kanji related routines and package gluekern stuff.
+There routines a bit similar reading ligature/kern programs.
+
+@<Read glue/kern list@>=
+begin while level=1 do
+ begin while cur_char=" " do get_next;
+ if cur_char="(" then @<Read a glue/kern command@>
+ else if cur_char=")" then skip_to_end_of_item
+ else junk_error;
+ end;
+finish_inner_property_list;
+end;
+
+@ @<Read a glue/kern command@>=
+begin get_name;
+if cur_code=comment_code then skip_to_end_of_item
+else begin case cur_code of
+ label_code:@<Read a glue label step@>;
+ stop_code:@<Read a stop step@>;
+ krn_code:@<Read a (glue) kerning step@>;
+ glue_code:@<Read a glue step@>;
+ others:
+ flush_error('This property name doesn''t belong in a GLUEKERN list');
+@.This property name doesn't belong...@>
+ end;
+ finish_the_property;
+ end;
+end
+
+@ When a character is about to be tagged, we use the following
+so that an error message is given in case of multiple tags.
+
+@<Read a glue label step@>=
+begin c:=get_byte;
+case char_tag[c] of
+ no_tag: do_nothing;
+ lig_tag: err_print('This character already appeared in a GLUEKERN LABEL');
+ @.This character already...@>
+ list_tag: err_print('Impossible: a list tag in a kanji format file?');
+ ext_tag: err_print('Impossible: an extensible tag in a kanji format file?');
+end;
+if nl>255 then
+ err_print('GLUEKERN with more than 255 commands cannot have further labels')
+@.GLUEKERN with more than 255...@>
+else begin char_tag[c]:=lig_tag; char_remainder[c]:=nl;
+ lk_step_ended:=false;
+ end;
+end
+
+@ @<Read a (glue) kerning step@>=
+begin lig_kern[nl].b0:=0; lig_kern[nl].b1:=get_byte;@/
+lig_kern[nl].b2:=kern_flag; kern[nk]:=get_fix; krn_ptr:=0;
+while kern[krn_ptr]<>kern[nk] do incr(krn_ptr);
+if krn_ptr=nk then
+ begin if nk<256 then incr(nk)
+ else begin err_print('At most 256 different kerns are allowed');
+@.At most 256 different kerns...@>
+ krn_ptr:=255;
+ end;
+ end;
+lig_kern[nl].b3:=krn_ptr;
+if nl=511 then
+ err_print('GLUEKERN table should never exceed 511 LIG/KRN commands')
+@.GLUEKERN table should never...@>
+else incr(nl);
+lk_step_ended:=true;
+end
+
+@ @<Read a glue step@>=
+begin lig_kern[nl].b0:=0; lig_kern[nl].b1:=get_byte; lig_kern[nl].b2:=0;@/
+glue[3*ng+0]:=get_fix; glue[3*ng+1]:=get_fix; glue[3*ng+2]:=get_fix;
+krn_ptr:=0;
+while (glue[3*krn_ptr+0]<>glue[3*ng+0])or
+ (glue[3*krn_ptr+1]<>glue[3*ng+1])or
+ (glue[3*krn_ptr+2]<>glue[3*ng+2]) do incr(krn_ptr);
+if krn_ptr=ng then
+ begin if ng<256 then incr(ng)
+ else begin err_print('At most 256 different glues are allowed');
+ krn_ptr:=255;
+ end;
+ end;
+lig_kern[nl].b3:=krn_ptr;
+if nl=511 then
+ err_print('GLUEKERN table should never exceed 511 GLUE/KRN commands')
+@.GLUEKERN table should never...@>
+else incr(nl);
+lk_step_ended:=true;
+end
+
+@ The |TYPE| command like |CHARACTER| command, but |TYPE| only use
+|CHARWD|, |CHARHT|, |CHARDP| and |CHARIT|
+
+@<Read Kanji character type list@>=
+begin c:=get_byte; {read the character type that is begin specified}
+if verbose then @<Print |c| in octal notation@>;
+while level=1 do
+ begin while cur_char=" " do get_next;
+ if cur_char="(" then @<Read a kanji property@>
+ else if cur_char=")" then skip_to_end_of_item
+ else junk_error;
+ end;
+if char_wd[c]=0 then char_wd[c]:=sort_in(width,0); {legitimatize c}
+finish_inner_property_list;
+end;
+
+@ @<Read a kanji property@>=
+begin get_name;
+if cur_code=comment_code then skip_to_end_of_item
+else if (cur_code<char_wd_code)and(cur_code>char_ic_code) then
+ flush_error('This property name doesn''t belong in a TYPE list')
+else begin case cur_code of
+ char_wd_code: char_wd[c]:=sort_in(width,get_fix);
+ char_ht_code: char_ht[c]:=sort_in(height,get_fix);
+ char_dp_code: char_dp[c]:=sort_in(depth,get_fix);
+ char_ic_code: char_ic[c]:=sort_in(italic,get_fix);
+ end;@/
+ finish_the_property;
+ end;
+end
+
+@ Next codes used to get KANJI codes from \.{JPL} file.
+
+@<Read Kanji characters list in this type@>=
+begin type_num:=get_byte;
+if type_num=0 then
+ skip_error('You cannot list the chars in type 0. It is the default type')
+else begin repeat jis_code:=get_kanji;
+ if jis_code<0 then
+ err_print('Illegal characters. I was expecting a jis code or character')
+ else if jis_code=0 then { 0 signals |end_of_list| }
+ do_nothing
+ else if kanji_type[jis_to_index(jis_code)]>=0 then
+ err_print('jis code ', jis_code:1, ' is already in type ',
+ kanji_type[jis_to_index(jis_code)])
+ else
+ kanji_type[jis_to_index(jis_code)]:=type_num;
+ until jis_code=0;
+ skip_to_paren;
+ end
+end
+
+@ Next codes read and check direction. We can not decide |file_format| of
+metric file whether for yoko-kumi or tate-kumi, until have scan |DIRECTION|
+property (|dir_code| command).
+
+@<Read direction@>=
+begin while cur_char=" " do get_next;
+if cur_char="T" then
+ begin if verbose then err_print('This is tatekumi format');
+ file_format:=vfm_format;
+ end
+else if cur_char="Y" then
+ begin if verbose then err_print('This is yokokumi format');
+ file_format:=jfm_format;
+ end
+else err_print('The dir value should be "TATE" or "YOKO"');
+skip_to_paren;
+end
+
+@ Next codes used to write |kanji_type| to \.{JFM}.
+
+@<Output the kanji character type info@>=
+begin out_size(0); out_size(0); { the default }
+for kanji_type_index:=0 to max_kanji do
+ begin if kanji_type[kanji_type_index]>0 then
+ begin out_size(index_to_jis(kanji_type_index));
+ out_size(kanji_type[kanji_type_index]);
+ if verbose then begin
+ print('char index = ', kanji_type_index);
+ print(' (jis ');
+ print_jis_hex(index_to_jis(kanji_type_index));
+ print(') is type ');
+ print_octal(kanji_type[kanji_type_index]);
+ write_ln('');
+ end;
+ end;
+ end;
+end;
+
+@ We also need to define some routines which handling 2bytes characters.
+These routine is called from only |read_chars_in_type| command.
+
+The kanji jis code is taken from the |char_ext| and |char_code| values
+set by the user. The index into the |kanji_type| array is based on the
+kuten codes, with all unused codes removed and beginning at 0, not 0101.
+The |jis_to_index| is called from |chars_in_type| command.
+
+@<Declare kanji scanning routines@>=
+function get_next_raw:byte; {get next rawdata in buffer}
+begin while loc=limit do fill_buffer;
+incr(loc); get_next_raw:=buffer[loc];
+if iskanji1(buffer[loc]) then cur_char:=" "
+else cur_char:=xord[buffer[loc]];
+end;
+@#
+function todig(@!ch:char):byte; {convert character to number}
+begin if (ch>="A")and(ch<="F") then todig:=ch-"A"+10
+else if (ch>="0")and(ch<="9") then todig:=ch-"0"
+else skip_error('This expression is out of JIS-code encoding.');
+end;
+@#
+procedure print_jis_hex(jis_code:integer); {prints jiscode as four digits}
+var dig:array[0..4] of byte; {holds jis hex codes}
+i:byte; {index of array}
+begin dig[0]:=Hi(jis_code) div 16; dig[1]:=Hi(jis_code) mod 16;
+dig[2]:=Lo(jis_code) div 16; dig[3]:=Lo(jis_code) mod 16;
+for i:=0 to 3 do
+ if dig[i]<10 then print(dig[i]) else
+ case dig[i] of
+ 10: print('A'); 11: print('B'); 12: print('C');
+ 13: print('D'); 14: print('E'); 15: print('F');
+ end;
+end;
+@#
+function valid_jis_code(jis:integer):boolean;
+var @!first_byte,@!second_byte:integer; { jis code bytes }
+begin valid_jis_code:=true;
+first_byte:=jis div @'400; second_byte:=jis mod @'400;
+if (first_byte<@"21)
+ or((first_byte>@"28)and(first_byte<@"30))
+ or(first_byte>@"74) then valid_jis_code:=false;
+if (second_byte<@"21)or(second_byte>@"7E) then valid_jis_code:=false;
+end;
+@#
+function jis_to_index(jis:integer):integer;
+var @!first_byte,@!second_byte:integer; { jis code bytes }
+begin
+first_byte:=jis div @'400 -@"21;
+second_byte:=jis mod @'400 -@"21;
+if first_byte<=8 then
+ jis_to_index:=first_byte*94+second_byte
+else { next |first_byte| start 16 }
+ jis_to_index:=(first_byte-7)*94+second_byte;
+end;
+@#
+function index_to_jis(ix:integer):integer;
+begin if ix<=8*94+94-1 then
+ index_to_jis:=(ix div 94 +@"21)*@'400+(ix mod 94 +@"21)
+else
+ index_to_jis:=((ix+7*94) div 94 +@"21)*@'400+((ix+7*94) mod 94 +@"21)
+end;
+@#
+function get_kanji:integer; {get kanji character code}
+var @!ch:byte;
+@!cx,@!jis_code:integer; {sixteen bits kanji character code}
+begin repeat ch:=get_next_raw; {|ch| is rawdata in buffer}
+until ch<>' '; {skip the blanks before the kanji code}
+if ch=')' then
+ begin decr(loc); jis_code:=0;
+ end
+else if (ch='J')or(ch='j') then
+ begin repeat ch:=get_next_raw; until ch<>' ';
+ cx:=todig(xord[ch])*@"1000;
+ incr(loc); ch:=xord[buffer[loc]]; cx:=cx+todig(ch)*@"100;
+ incr(loc); ch:=xord[buffer[loc]]; cx:=cx+todig(ch)*@"10;
+ incr(loc); ch:=xord[buffer[loc]]; cx:=cx+todig(ch);
+ jis_code:=cx; cur_char:=ch;
+ if not valid_jis_code(jis_code) then
+ err_print('jis code ', jis_code:1, ' is invalid');
+ end
+else if iskanji1(ch) then
+ begin incr(loc); cx:=Lo(ch)*@'400+Lo(buffer[loc]); cur_char:=" ";
+ if (proc_kanji_code=sjis_enc) then jis_code:=SJIStoJIS(cx)
+ else jis_code:=EUCtoJIS(cx);
+ if not valid_jis_code(jis_code) then
+ err_print('jis code ', jis_code:1, ' is invalid');
+ end
+else jis_code:=-1;
+get_kanji:=jis_code;
+end;
+
+@ input kanji code.
+
+@<Global...@> =
+@!proc_kanji_code:jis_enc..sjis_enc;
+
+@ @<Initialize the option...@> =
+ifdef('OUTJIS') proc_kanji_code:=jis_enc; endif('OUTJIS');
+ifdef('OUTEUC') proc_kanji_code:=euc_enc; endif('OUTEUC');
+ifdef('OUTSJIS') proc_kanji_code:=sjis_enc; endif('OUTSJIS');
+
+@ @<Set process kanji code@>=
+ if strcmp(optarg, 'jis') = 0 then
+ proc_kanji_code:=jis_enc
+ else if strcmp(optarg, 'euc') = 0 then
+ proc_kanji_code:=euc_enc
+ else if strcmp(optarg, 'sjis') = 0 then
+ proc_kanji_code:=sjis_enc
+ else
+ print_ln('Bad kanjicode encoding', optarg, '.');
+
+@* Index.
+@z
diff --git a/language/japanese/ptex/ptex-base.ch b/language/japanese/ptex/ptex-base.ch
new file mode 100644
index 0000000000..9ce788dacd
--- /dev/null
+++ b/language/japanese/ptex/ptex-base.ch
@@ -0,0 +1,7679 @@
+% This is a change file for pTeX 3.1.9
+% By Sadayuki Tanaka (sada-t@ascii.co.jp), Ken Nakano (ken-na@ascii.co.jp)
+% and ASCII Corporation.
+%
+% Thanks for :
+% Ryoichi Kurasawa (us009185@interramp.com),
+% Hisato Hamano,
+% Hiroto Kagotani (kagotani@in.it.okayama-u.ac.jp),
+% Takashi Kakiuchi (kakiuchi@sy6.isl.mei.co.jp),
+% Yoichi Kawabata (kawabata@canon.co.jp),
+% Makoto Kobayashi (makoto@lloem.fujidenki.co.jp),
+% Yoshihiro Aoki (aoki@tokyo-shoseki-ptg.co.jp),
+% Akira Kakuto (kakuto@fsci.fuk.kindai.ac.jp).
+% Koich Inoue (inoue@ma.ns.musashi-tech.ac.jp).
+%
+% (??/??/87) RKS jTeX 2.9 -- j1.0
+% (??/??/89) RKS jTeX 2.93 -- j1.3
+% (12/ 9/89) H_2 pTeX 2.93 j1.3 p1.0.1
+% (12/??/89) RKS jTeX 2.95 -- j1.5
+% (12/??/89) RKS jTeX 2.99 -- j1.5
+% (02/02/90) RKS jTeX 2.99 -- j1.6
+% (04/16/90) H_2 pTeX 2.99 j1.6 p1.0.3
+% (09/14/90) H_2 pTeX 2.99 j1.6 p1.0.9 -- pre-release
+% (10/29/90) H_2 Bug fix (p1.0.9a)
+% (01/21/92) H_2 jTeX 2.99 - j1.7
+% (01/21/92) H_2 pTeX 2.99 j1.7 p1.0.9F
+% (03/09/92) H_2 pTeX 2.99 j1.7 p1.0.9G jflag BUG
+% (03/20/95) KN pTeX p2.0 (based on 3.1415)
+% (09/08/95) KN pTeX p2.1
+% (09/20/95) KN pTeX p2.1.1
+% (11/21/95) KN pTeX p2.1.4
+% (08/27/97) KN pTeX p2.1.5 (based on 3.14159)
+% (02/26/98) KN pTeX p2.1.6
+% (03/19/98) KN pTeX p2.1.7
+% (03/26/98) KN pTeX p2.1.8 (Web2c 7.2)
+% (02/21/2000) KN pTeX p2.1.9 (Web2c 7.3.1)
+% (11/13/2000) KN pTeX p2.1.10
+% (05/22/2001) KN pTeX p2.1.11
+% (03/10/2001) KN pTeX p3.0 (modified BSD licence)
+% (09/02/2004) ST pTeX p3.1.4
+% (11/29/2004) KN pTeX p3.1.5
+% (12/13/2004) KN pTeX p3.1.8
+% (10/17/2005) ST pTeX p3.1.9
+%
+@x [1.2] l.195 - pTeX:
+@d TeX_banner_k=='This is TeXk, Version 3.141592' {printed when \TeX\ starts}
+@d TeX_banner=='This is TeX, Version 3.141592' {printed when \TeX\ starts}
+@y
+@d TeX_banner_k=='This is pTeXk, Version 3.141592-p3.1.9' {printed when p\TeX\ starts}
+@d TeX_banner=='This is pTeX, Version 3.141592-p3.1.9' {printed when p\TeX\ starts}
+@z
+
+@x [2.??] l.586 - pTeX:
+@!ASCII_code=0..255; {eight-bit numbers}
+@y
+@!ASCII_code=0..255; {eight-bit numbers}
+@!KANJI_code=0..65535; {sixteen-bit numbers}
+@z
+
+@x l.632 - pTeX
+mubyte_read: array [ASCII_code] of pointer;
+ { non zero iff character begins the multi byte code }
+mubyte_write: array [ASCII_code] of str_number;
+ { non zero iff character expands to multi bytes in log and write files }
+mubyte_cswrite: array [0..127] of pointer;
+ { non null iff cs mod 128 expands to multi bytes in log and write files }
+mubyte_skip: integer; { the number of bytes to skip in |buffer| }
+mubyte_keep: integer; { the number of chars we need to keep unchanged }
+mubyte_skeep: integer; { saved |mubyte_keep| }
+mubyte_prefix: integer; { the type of mubyte prefix }
+mubyte_tablein: boolean; { the input side of table will be updated }
+mubyte_tableout: boolean; { the output side of table will be updated }
+mubyte_relax: boolean; { the relax prefix is used }
+mubyte_start: boolean; { we are making the token at the start of the line }
+mubyte_sstart: boolean; { saved |mubyte_start| }
+mubyte_token: pointer; { the token returned by |read_buffer| }
+mubyte_stoken: pointer; { saved first token in mubyte primitive }
+mubyte_sout: integer; { saved value of |mubyte_out| }
+mubyte_slog: integer; { saved value of |mubyte_log| }
+spec_sout: integer; { saved value of |spec_out| }
+no_convert: boolean; { conversion supressed by noconvert primitive }
+active_noconvert: boolean; { true if noconvert primitive is active }
+write_noexpanding: boolean; { true only if we need not write expansion }
+cs_converting: boolean; { true only if we need csname converting }
+special_printing: boolean; { true only if we need converting in special }
+message_printing: boolean; { true if message or errmessage prints to string }
+@y
+@z
+
+@x l.803 - pTeX
+{Initialize enc\TeX\ data.}
+for i:=0 to 255 do mubyte_read[i]:=null;
+for i:=0 to 255 do mubyte_write[i]:=0;
+for i:=0 to 128 do mubyte_cswrite[i]:=null;
+mubyte_keep := 0; mubyte_start := false;
+write_noexpanding := false; cs_converting := false;
+special_printing := false; message_printing := false;
+no_convert := false; active_noconvert := false;
+@y
+@z
+
+
+@x [4.??] l.870 - pTeX:
+@!eight_bits=0..255; {unsigned one-byte quantity}
+@y
+@!eight_bits=0..255; {unsigned one-byte quantity}
+@!sixteen_bits=0..65535; {unsigned two-bytes quantity}
+@z
+
+@x [3.??] l.891 - pTeX:
+@ All of the file opening functions are defined in C.
+@y
+@ All of the file opening functions are defined in C.
+
+@ Kanji code handling.
+
+@d jis_enc=0 {denotes JIS X 2022 kanji encoding}
+@d euc_enc=1 {denotes EUC kanji encoding}
+@d sjis_enc=2 {denotes Shift JIS kanji encoding}
+
+@<Glob...@>=
+@!proc_kanji_code:jis_enc..sjis_enc;
+@z
+
+@x [4.47] l.1325 - pTeX:
+@!init function get_strings_started:boolean; {initializes the string pool,
+ but returns |false| if something goes wrong}
+label done,exit;
+var k,@!l:0..255; {small indices or counters}
+@y
+@!init function get_strings_started:boolean; {initializes the string pool,
+ but returns |false| if something goes wrong}
+label done,exit;
+var k,@!l:KANJI_code; {small indices or counters}
+@z
+
+@x [4.49] l.1384 - pTeX:
+@<Character |k| cannot be printed@>=
+ (k<" ")or(k>"~")
+@y
+@<Character |k| cannot be printed@>=
+ not (iskanji1(k) or iskanji2(k) or xprn[k])
+@z
+
+@x [5.54] l.1514 - pTeX: Global variables
+@!trick_buf:array[0..ssup_error_line] of ASCII_code; {circular buffer for
+ pseudoprinting}
+@y
+@!trick_buf:array[0..ssup_error_line] of ASCII_code; {circular buffer for
+ pseudoprinting}
+@!trick_buf2:array[0..ssup_error_line] of 0..2; {pTeX: buffer for KANJI}
+@!kcode_pos: 0..2; {pTeX: denotes whether first byte or second byte of KANJI}
+@z
+
+@x [5.55] l.1519 - pTeX: Initialize the kcode_pos
+@ @<Initialize the output routines@>=
+selector:=term_only; tally:=0; term_offset:=0; file_offset:=0;
+@y
+@ @<Initialize the output routines@>=
+selector:=term_only; tally:=0; term_offset:=0; file_offset:=0;
+kcode_pos:=0;
+@z
+
+@x [5.57] l.1538 - pTeX: kcode_pos
+procedure print_ln; {prints an end-of-line}
+begin case selector of
+term_and_log: begin wterm_cr; wlog_cr;
+ term_offset:=0; file_offset:=0;
+ end;
+log_only: begin wlog_cr; file_offset:=0;
+ end;
+term_only: begin wterm_cr; term_offset:=0;
+ end;
+no_print,pseudo,new_string: do_nothing;
+othercases write_ln(write_file[selector])
+endcases;@/
+@y
+procedure print_ln; {prints an end-of-line}
+begin case selector of
+term_and_log: begin
+ if kcode_pos=1 then begin wterm(' '); wlog(' '); end;
+ wterm_cr; wlog_cr; term_offset:=0; file_offset:=0;
+ end;
+log_only: begin if kcode_pos=1 then wlog(' ');
+ wlog_cr; file_offset:=0;
+ end;
+term_only: begin if kcode_pos=1 then wterm(' ');
+ wterm_cr; term_offset:=0;
+ end;
+no_print,pseudo,new_string: do_nothing;
+othercases write_ln(write_file[selector])
+endcases;@/
+kcode_pos:=0;
+@z
+
+@x [5.58] l.1557 - pTeX: kcode_pos, trick_buf2
+procedure print_char(@!s:ASCII_code); {prints a single character}
+label exit;
+begin if @<Character |s| is the current new-line character@> then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+case selector of
+term_and_log: begin wterm(xchr[s]); wlog(xchr[s]);
+ incr(term_offset); incr(file_offset);
+ if term_offset=max_print_line then
+ begin wterm_cr; term_offset:=0;
+ end;
+ if file_offset=max_print_line then
+ begin wlog_cr; file_offset:=0;
+ end;
+ end;
+log_only: begin wlog(xchr[s]); incr(file_offset);
+ if file_offset=max_print_line then print_ln;
+ end;
+term_only: begin wterm(xchr[s]); incr(term_offset);
+ if term_offset=max_print_line then print_ln;
+ end;
+no_print: do_nothing;
+pseudo: if tally<trick_count then trick_buf[tally mod error_line]:=s;
+@y
+procedure print_char(@!s:ASCII_code); {prints a single character}
+label exit; {label is not used but nonetheless kept (for other changes?)}
+begin if @<Character |s| is the current new-line character@> then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+if kcode_pos=1 then kcode_pos:=2
+else if iskanji1(xchr[s]) then
+ begin kcode_pos:=1;
+ if (selector=term_and_log)or(selector=log_only) then
+ if file_offset>=max_print_line-1 then
+ begin wlog_cr; file_offset:=0;
+ end;
+ if (selector=term_and_log)or(selector=term_only) then
+ if term_offset>=max_print_line-1 then
+ begin wterm_cr; term_offset:=0;
+ end;
+ end
+else kcode_pos:=0;
+case selector of
+term_and_log: begin wterm(xchr[s]); incr(term_offset);
+ if term_offset=max_print_line then
+ begin wterm_cr; term_offset:=0;
+ end;
+ wlog(xchr[s]); incr(file_offset);
+ if file_offset=max_print_line then
+ begin wlog_cr; file_offset:=0;
+ end;
+ end;
+log_only: begin wlog(xchr[s]); incr(file_offset);
+ if file_offset=max_print_line then print_ln;
+ end;
+term_only: begin wterm(xchr[s]); incr(term_offset);
+ if term_offset=max_print_line then print_ln;
+ end;
+no_print: do_nothing;
+pseudo: if tally<trick_count then
+ begin trick_buf[tally mod error_line]:=s;
+ trick_buf2[tally mod error_line]:=kcode_pos;
+ end;
+@z
+
+@x l.1603 - pTeX
+procedure print(@!s:integer); {prints string |s|}
+label exit;
+var j:pool_pointer; {current character code position}
+@!nl:integer; {new-line character to restore}
+begin if s>=str_ptr then s:="???" {this can't happen}
+@.???@>
+else if s<256 then
+ if s<0 then s:="???" {can't happen}
+ else begin if (selector>pseudo) and (not special_printing)
+ and (not message_printing) then
+ begin print_char(s); return; {internal strings are not expanded}
+ end;
+ if (@<Character |s| is the current new-line character@>) then
+ if selector<pseudo then
+ begin print_ln; no_convert := false; return;
+ end
+ else if message_printing then
+ begin print_char(s); no_convert := false; return;
+ end;
+ if (mubyte_log>0) and (not no_convert) and (mubyte_write[s]>0) then
+ s := mubyte_write[s]
+ else if xprn[s] or special_printing then
+ begin print_char(s); no_convert := false; return; end;
+ no_convert := false;
+ nl:=new_line_char; new_line_char:=-1;
+ {temporarily disable new-line character}
+ j:=str_start[s];
+ while j<str_start[s+1] do
+ begin print_char(so(str_pool[j])); incr(j);
+ end;
+ new_line_char:=nl; return;
+ end;
+j:=str_start[s];
+while j<str_start[s+1] do
+ begin print_char(so(str_pool[j])); incr(j);
+ end;
+exit:end;
+@y
+procedure print(@!s:integer); {prints string |s|}
+label exit;
+var j:pool_pointer; {current character code position}
+@!nl:integer; {new-line character to restore}
+begin if s>=str_ptr then s:="???" {this can't happen}
+@.???@>
+else if s<256 then
+ if s<0 then s:="???" {can't happen}
+ else begin if selector>pseudo then
+ begin print_char(s); return; {internal strings are not expanded}
+ end;
+ if (@<Character |s| is the current new-line character@>) then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+ nl:=new_line_char; new_line_char:=-1;
+ {temporarily disable new-line character}
+ j:=str_start[s];
+ while j<str_start[s+1] do
+ begin print_char(so(str_pool[j])); incr(j);
+ end;
+ new_line_char:=nl; return;
+ end;
+j:=str_start[s];
+while j<str_start[s+1] do
+ begin print_char(so(str_pool[j])); incr(j);
+ end;
+exit:end;
+@z
+
+@x [5.61] l.1656 - pTeX:
+@<Initialize the output...@>=
+if src_specials_p or file_line_error_style_p or parse_first_line_p then
+ wterm(banner_k)
+else
+ wterm(banner);
+@y
+@<Initialize the output...@>=
+if src_specials_p or file_line_error_style_p or parse_first_line_p then
+ wterm(banner_k)
+else
+ wterm(banner);
+wterm(' (');
+case proc_kanji_code of
+ jis_enc: wterm('jis');
+ euc_enc: wterm('euc');
+ sjis_enc: wterm('sjis');
+ othercases wterm('?');
+endcases;
+wterm(')');
+@z
+
+@x l.1820 - pTeX
+k:=first; while k < last do begin print_buffer(k) end;
+@y
+if last<>first then for k:=first to last-1 do print(buffer[k]);
+@z
+
+@x [8.112] l.2588 - pTeX:
+@d ho(#)==# {to take a sixteen-bit item from a halfword}
+@y
+@d ho(#)==# {to take a sixteen-bit item from a halfword}
+@d KANJI(#)==# {pTeX: to output an KANJI code into a halfword}
+@d tokanji(#)==# {pTeX: to take an KANJI code into a halfword}
+@d tonum(#)==# {pTeX: to put an KANJI code into a halfword}
+@z
+
+@x [10.135] l.3008 - pTeX: box_dir, space_ptr, xspace_ptr
+@d hlist_node=0 {|type| of hlist nodes}
+@d box_node_size=7 {number of words to allocate for a box node}
+@d width_offset=1 {position of |width| field in a box node}
+@d depth_offset=2 {position of |depth| field in a box node}
+@d height_offset=3 {position of |height| field in a box node}
+@d width(#) == mem[#+width_offset].sc {width of the box, in sp}
+@d depth(#) == mem[#+depth_offset].sc {depth of the box, in sp}
+@d height(#) == mem[#+height_offset].sc {height of the box, in sp}
+@d shift_amount(#) == mem[#+4].sc {repositioning distance, in sp}
+@d list_offset=5 {position of |list_ptr| field in a box node}
+@d list_ptr(#) == link(#+list_offset) {beginning of the list inside the box}
+@d glue_order(#) == subtype(#+list_offset) {applicable order of infinity}
+@d glue_sign(#) == type(#+list_offset) {stretching or shrinking}
+@d normal=0 {the most common case when several cases are named}
+@d stretching = 1 {glue setting applies to the stretch components}
+@d shrinking = 2 {glue setting applies to the shrink components}
+@d glue_offset = 6 {position of |glue_set| in a box node}
+@d glue_set(#) == mem[#+glue_offset].gr
+ {a word of type |glue_ratio| for glue setting}
+@y
+@d hlist_node=0 {|type| of hlist nodes}
+@d box_node_size=8 {number of words to allocate for a box node}
+@#
+@d box_dir(#) == subtype(#) {direction mode of a box}
+@d dir_default == qi(0) {direction of the box, default Left to Right}
+@d dir_dtou == qi(1) {direction of the box, Bottom to Top}
+@d dir_tate == qi(3) {direction of the box, Top to Bottom}
+@d dir_yoko == qi(4) {direction of the box, equal default}
+@d any_dir == dir_yoko,dir_tate,dir_dtou
+@#
+@d width_offset=1 {position of |width| field in a box node}
+@d depth_offset=2 {position of |depth| field in a box node}
+@d height_offset=3 {position of |height| field in a box node}
+@d width(#) == mem[#+width_offset].sc {width of the box, in sp}
+@d depth(#) == mem[#+depth_offset].sc {depth of the box, in sp}
+@d height(#) == mem[#+height_offset].sc {height of the box, in sp}
+@d shift_amount(#) == mem[#+4].sc {repositioning distance, in sp}
+@d list_offset=5 {position of |list_ptr| field in a box node}
+@d list_ptr(#) == link(#+list_offset) {beginning of the list inside the box}
+@d glue_order(#) == subtype(#+list_offset) {applicable order of infinity}
+@d glue_sign(#) == type(#+list_offset) {stretching or shrinking}
+@d normal=0 {the most common case when several cases are named}
+@d stretching = 1 {glue setting applies to the stretch components}
+@d shrinking = 2 {glue setting applies to the shrink components}
+@d glue_offset = 6 {position of |glue_set| in a box node}
+@d glue_set(#) == mem[#+glue_offset].gr
+ {a word of type |glue_ratio| for glue setting}
+@d space_offset = 7 {position of |glue_set| in a box node}
+@d space_ptr(#) == link(#+space_offset)
+@d xspace_ptr(#) == info(#+space_offset)
+@z
+
+@x [10.136] l.3037 - pTeX: space_ptr, xspace_ptr
+width(p):=0; depth(p):=0; height(p):=0; shift_amount(p):=0; list_ptr(p):=null;
+glue_sign(p):=normal; glue_order(p):=normal; set_glue_ratio_zero(glue_set(p));
+@y
+width(p):=0; depth(p):=0; height(p):=0; shift_amount(p):=0; list_ptr(p):=null;
+glue_sign(p):=normal; glue_order(p):=normal; set_glue_ratio_zero(glue_set(p));
+space_ptr(p):=zero_glue; xspace_ptr(p):=zero_glue;
+add_glue_ref(zero_glue); add_glue_ref(zero_glue);
+@z
+
+@x [10.137] l.3045 - pTeX: direction change node
+@d vlist_node=1 {|type| of vlist nodes}
+@y
+@d vlist_node=1 {|type| of vlist nodes}
+
+@ A |dir_node| stands for direction change.
+
+@d dir_node=2 {|type| of dir nodes}
+
+@p function new_dir_node(b:pointer; dir:eight_bits):pointer;
+var p:pointer; {the new node}
+begin if type(b)>vlist_node then confusion("new_dir_node:not box");
+p:=new_null_box; type(p):=dir_node; box_dir(p):=dir;
+case box_dir(b) of
+ dir_yoko: @<Yoko to other direction@>;
+ dir_tate: @<Tate to other direction@>;
+ dir_dtou: @<DtoU to other direction@>;
+ othercases confusion("new_dir_node:illegal dir");
+endcases;
+link(b):=null; list_ptr(p):=b;
+new_dir_node:=p;
+end;
+
+@ @<Yoko to other direction@>=
+ case dir of
+ dir_tate: begin width(p):=height(b)+depth(b);
+ depth(p):=width(b)/2; height(p):=width(b)-depth(p);
+ end;
+ dir_dtou: begin width(p):=height(b)+depth(b);
+ depth(p):=0; height(p):=width(b);
+ end;
+ othercases confusion("new_dir_node:y->?");
+ endcases
+
+@ @<Tate to other direction@>=
+ case dir of
+ dir_yoko: begin width(p):=height(b)+depth(b);
+ depth(p):=0; height(p):=width(b);
+ end;
+ dir_dtou: begin width(p):=width(b);
+ depth(p):=height(b); height(p):=depth(b);
+ end;
+ othercases confusion("new_dir_node:t->?");
+ endcases
+
+@ @<DtoU to other direction@>=
+ case dir of
+ dir_yoko: begin width(p):=height(b)+depth(b);
+ depth(p):=0; height(p):=width(b);
+ end;
+ dir_tate: begin width(p):=width(b);
+ depth(p):=height(b); height(p):=depth(b);
+ end;
+ othercases confusion("new_dir_node:d->?");
+ endcases
+@z
+
+@x [10.138] l.3054 - pTeX: renumber rule_node
+@d rule_node=2 {|type| of rule nodes}
+@y
+@d rule_node=3 {|type| of rule nodes}
+@z
+
+@x [10.140] l.3083 - pTeX: renumber ins_node, add ins_dir field
+@d ins_node=3 {|type| of insertion nodes}
+@d ins_node_size=5 {number of words to allocate for an insertion}
+@d float_cost(#)==mem[#+1].int {the |floating_penalty| to be used}
+@d ins_ptr(#)==info(#+4) {the vertical list to be inserted}
+@d split_top_ptr(#)==link(#+4) {the |split_top_skip| to be used}
+@y
+@d ins_node=4 {|type| of insertion nodes}
+@d ins_node_size=6 {number of words to allocate for an insertion}
+@d float_cost(#)==mem[#+1].int {the |floating_penalty| to be used}
+@d ins_ptr(#)==info(#+4) {the vertical list to be inserted}
+@d split_top_ptr(#)==link(#+4) {the |split_top_skip| to be used}
+@d ins_dir(#)==subtype(#+5) {direction of |ins_node|}
+@z
+
+@x [10.141] l.3089 - pTeX: disp_node
+@ A |mark_node| has a |mark_ptr| field that points to the reference count
+@y
+@ A |disp_node| has a |disp_dimen| field that points to the displacement
+distance of the baselineshift between Latin characters and Kanji chatacters.
+
+@d disp_node=5 {|type| of a displace node}
+@d disp_dimen(#)==mem[#+1].sc
+
+@ A |mark_node| has a |mark_ptr| field that points to the reference count
+@z
+
+@x [10.140] l.3095 - pTeX: renumber nodes
+@d mark_node=4 {|type| of a mark node}
+@y
+@d mark_node=6 {|type| of a mark node}
+@z
+
+@x [10.141] l.3105 - pTeX: renumber nodes
+@d adjust_node=5 {|type| of an adjust node}
+@y
+@d adjust_node=7 {|type| of an adjust node}
+@z
+
+@x [10.142] l.3122 - pTeX: renumber nodes
+@d ligature_node=6 {|type| of a ligature node}
+@y
+@d ligature_node=8 {|type| of a ligature node}
+@z
+
+@x [10.145] l.3163 - pTeX: renumber nodes
+@d disc_node=7 {|type| of a discretionary node}
+@y
+@d disc_node=9 {|type| of a discretionary node}
+@z
+
+@x [10.146] l.3191 - pTeX: renumber nodes
+@d whatsit_node=8 {|type| of special extension nodes}
+@y
+@d whatsit_node=10 {|type| of special extension nodes}
+@z
+
+@x [10.147] l.3198 - pTeX: renumber nodes
+@d math_node=9 {|type| of a math node}
+@y
+@d math_node=11 {|type| of a math node}
+@z
+
+@x [10.150] l.3244 - pTeX: renumber nodes
+@d glue_node=10 {|type| of node that points to a glue specification}
+@y
+@d glue_node=12 {|type| of node that points to a glue specification}
+@z
+
+@x [10.155] l.3342 - pTeX: renumber nodes
+@d kern_node=11 {|type| of a kern node}
+@d explicit=1 {|subtype| of kern nodes from \.{\\kern} and \.{\\/}}
+@d acc_kern=2 {|subtype| of kern nodes from accents}
+@y
+@d kern_node=13 {|type| of a kern node}
+@d explicit=1 {|subtype| of kern nodes from \.{\\kern}}
+@d acc_kern=2 {|subtype| of kern nodes from accents}
+@d ita_kern=3 {|subtype| of kern nodes from \.{\\/}}
+@z
+
+@x [10.157] l.3363 - pTeX: renumber nodes
+@d penalty_node=12 {|type| of a penalty node}
+@y
+@d penalty_node=14 {|type| of a penalty node}
+@d widow_pena=1 {|subtype| of penalty nodes from \.{\\jchrwidowpenalty}}
+@d kinsoku_pena=2 {|subtype| of penalty nodes from kinsoku}
+@z
+
+@x [10.159] l.3392 - pTeX: renumber nodes
+@d unset_node=13 {|type| for an unset node}
+@y
+@d unset_node=15 {|type| for an unset node}
+@z
+
+@x [10.160] l.3397 - pTeX: renumber nodes
+@ In fact, there are still more types coming. When we get to math formula
+processing we will see that a |style_node| has |type=14|; and a number
+of larger type codes will also be defined, for use in math mode only.
+@y
+@ In fact, there are still more types coming. When we get to math formula
+processing we will see that a |style_node| has |type=16|; and a number
+of larger type codes will also be defined, for use in math mode only.
+@z
+
+@x [12.174] l.3662 - pTeX: print KANJI
+ print_ASCII(qo(character(p)));
+@y
+ if font_dir[font(p)]<>dir_default then
+ begin p:=link(p); print_kanji(info(p));
+ end
+ else print_ASCII(qo(character(p)));
+@z
+
+@x [12.175] l.3672 - pTeX: Print a short indication of dir_nodes.
+hlist_node,vlist_node,ins_node,whatsit_node,mark_node,adjust_node,
+ unset_node: print("[]");
+@y
+hlist_node,vlist_node,dir_node,ins_node,whatsit_node,
+ mark_node,adjust_node,unset_node: print("[]");
+@z
+
+@x [12.176] l.3698 - pTeX: print KANJI.
+ print_char(" "); print_ASCII(qo(character(p)));
+@y
+ print_char(" ");
+ if font_dir[font(p)]<>dir_default then
+ begin p:=link(p); print_kanji(info(p));
+ end
+ else print_ASCII(qo(character(p)));
+@z
+
+@x [12.183] l.3815 - pTeX: display char_node and disp_node.
+if is_char_node(p) then print_font_and_char(p)
+else case type(p) of
+ hlist_node,vlist_node,unset_node: @<Display box |p|@>;
+ rule_node: @<Display rule |p|@>;
+ ins_node: @<Display insertion |p|@>;
+ whatsit_node: @<Display the whatsit node |p|@>;
+@y
+if is_char_node(p) then
+ begin print_font_and_char(p);
+ if font_dir[font(p)]<>dir_default then p:=link(p)
+ end
+else case type(p) of
+ hlist_node,vlist_node,dir_node,unset_node: @<Display box |p|@>;
+ rule_node: @<Display rule |p|@>;
+ ins_node: @<Display insertion |p|@>;
+ whatsit_node: @<Display the whatsit node |p|@>;
+ disp_node: begin print_esc("displace "); print_scaled(disp_dimen(p));
+ end;
+@z
+
+@x [12.184] l.3833 - pTeX: display dir_node.
+@ @<Display box |p|@>=
+begin if type(p)=hlist_node then print_esc("h")
+else if type(p)=vlist_node then print_esc("v")
+else print_esc("unset");
+@y
+@ @<Display box |p|@>=
+begin case type(p) of
+ hlist_node: print_esc("h");
+ vlist_node: print_esc("v");
+ dir_node: print_esc("dir");
+ othercases print_esc("unset")
+ endcases@/;
+@z
+@x [12.184] l.3842 - pTeX: display dir_node.
+ if shift_amount(p)<>0 then
+ begin print(", shifted "); print_scaled(shift_amount(p));
+ end;
+@y
+ if shift_amount(p)<>0 then
+ begin print(", shifted "); print_scaled(shift_amount(p));
+ end;
+ if box_dir(p)<>dir_default then
+ begin print(", "); print_direction(box_dir(p));
+ end;
+@z
+
+@x [12.188] l.3896 - pTeX: Display insertion and ins_dir.
+@ @<Display insertion |p|@>=
+begin print_esc("insert"); print_int(qo(subtype(p)));
+print(", natural size "); print_scaled(height(p));
+@y
+@ @<Display insertion |p|@>=
+begin print_esc("insert"); print_int(qo(subtype(p)));
+print_dir(ins_dir(p));
+print(", natural size "); print_scaled(height(p));
+@z
+
+@x [12.194] l.3961 - pTeX: Display penalty usage
+@ @<Display penalty |p|@>=
+begin print_esc("penalty "); print_int(penalty(p));
+end
+@y
+@ @<Display penalty |p|@>=
+begin print_esc("penalty "); print_int(penalty(p));
+if subtype(p)=widow_pena then print("(for \jchrwidowpenalty)")
+else if subtype(p)=kinsoku_pena then print("(for kinsoku)");
+end
+@z
+
+@x [13.202] l.4043 - pTeX: dir_node, disp_node
+ hlist_node,vlist_node,unset_node: begin flush_node_list(list_ptr(p));
+ free_node(p,box_node_size); goto done;
+ end;
+@y
+ hlist_node,vlist_node,dir_node,unset_node:
+ begin flush_node_list(list_ptr(p));
+ fast_delete_glue_ref(space_ptr(p));
+ fast_delete_glue_ref(xspace_ptr(p));
+ free_node(p,box_node_size); goto done;
+ end;
+@z
+
+@x [13.202] l.4056 - pTeX:
+ kern_node,math_node,penalty_node: do_nothing;
+@y
+ kern_node,disp_node,math_node,penalty_node: do_nothing;
+@z
+
+@x [14.206] l.4121 - pTeX: space_ptr, xspace_ptr, dir_node, disp_node
+@ @<Case statement to copy...@>=
+case type(p) of
+hlist_node,vlist_node,unset_node: begin r:=get_node(box_node_size);
+ mem[r+6]:=mem[p+6]; mem[r+5]:=mem[p+5]; {copy the last two words}
+ list_ptr(r):=copy_node_list(list_ptr(p)); {this affects |mem[r+5]|}
+ words:=5;
+ end;
+rule_node: begin r:=get_node(rule_node_size); words:=rule_node_size;
+ end;
+ins_node: begin r:=get_node(ins_node_size); mem[r+4]:=mem[p+4];
+ add_glue_ref(split_top_ptr(p));
+ ins_ptr(r):=copy_node_list(ins_ptr(p)); {this affects |mem[r+4]|}
+ words:=ins_node_size-1;
+ end;
+@y
+@ @<Case statement to copy...@>=
+case type(p) of
+hlist_node,vlist_node,dir_node,unset_node:
+ begin r:=get_node(box_node_size);
+ mem[r+7]:=mem[p+7];
+ mem[r+6]:=mem[p+6]; mem[r+5]:=mem[p+5]; {copy the last three words}
+ add_glue_ref(space_ptr(r)); add_glue_ref(xspace_ptr(r));
+ list_ptr(r):=copy_node_list(list_ptr(p)); {this affects |mem[r+5]|}
+ words:=5;
+ end;
+rule_node: begin r:=get_node(rule_node_size); words:=rule_node_size;
+ end;
+ins_node: begin r:=get_node(ins_node_size);
+ mem[r+5]:=mem[p+5]; mem[r+4]:=mem[p+4];
+ add_glue_ref(split_top_ptr(p));
+ ins_ptr(r):=copy_node_list(ins_ptr(p)); {this affects |mem[r+4]|}
+ words:=ins_node_size-2;
+ end;
+@z
+
+@x [14.206] l.4140 - pTeX: disp_node
+kern_node,math_node,penalty_node: begin r:=get_node(small_node_size);
+ words:=small_node_size;
+ end;
+@y
+kern_node,disp_node,math_node,penalty_node:
+ begin r:=get_node(small_node_size); words:=small_node_size;
+ end;
+@z
+
+@x [15.207] l.4201 - pTeX: Add kanji, kana, other_kchar category codes.
+@d max_char_code=15 {largest catcode for individual characters}
+@y
+@d kanji=16 {kanji}
+@d kana=17 {hiragana, katakana, alphabet}
+@d other_kchar=18 {kanji codes}
+@d max_char_code=18 {largest catcode for individual characters}
+@z
+
+@x [15.208] l.4207 - pTeX: Add inhibit_glue, chg_dir.
+@d char_num=16 {character specified numerically ( \.{\\char} )}
+@d math_char_num=17 {explicit math code ( \.{\\mathchar} )}
+@d mark=18 {mark definition ( \.{\\mark} )}
+@d xray=19 {peek inside of \TeX\ ( \.{\\show}, \.{\\showbox}, etc.~)}
+@d make_box=20 {make a box ( \.{\\box}, \.{\\copy}, \.{\\hbox}, etc.~)}
+@d hmove=21 {horizontal motion ( \.{\\moveleft}, \.{\\moveright} )}
+@d vmove=22 {vertical motion ( \.{\\raise}, \.{\\lower} )}
+@d un_hbox=23 {unglue a box ( \.{\\unhbox}, \.{\\unhcopy} )}
+@d un_vbox=24 {unglue a box ( \.{\\unvbox}, \.{\\unvcopy} )}
+@d remove_item=25 {nullify last item ( \.{\\unpenalty},
+ \.{\\unkern}, \.{\\unskip} )}
+@d hskip=26 {horizontal glue ( \.{\\hskip}, \.{\\hfil}, etc.~)}
+@d vskip=27 {vertical glue ( \.{\\vskip}, \.{\\vfil}, etc.~)}
+@d mskip=28 {math glue ( \.{\\mskip} )}
+@d kern=29 {fixed space ( \.{\\kern})}
+@d mkern=30 {math kern ( \.{\\mkern} )}
+@d leader_ship=31 {use a box ( \.{\\shipout}, \.{\\leaders}, etc.~)}
+@d halign=32 {horizontal table alignment ( \.{\\halign} )}
+@d valign=33 {vertical table alignment ( \.{\\valign} )}
+@d no_align=34 {temporary escape from alignment ( \.{\\noalign} )}
+@d vrule=35 {vertical rule ( \.{\\vrule} )}
+@d hrule=36 {horizontal rule ( \.{\\hrule} )}
+@d insert=37 {vlist inserted in box ( \.{\\insert} )}
+@d vadjust=38 {vlist inserted in enclosing paragraph ( \.{\\vadjust} )}
+@d ignore_spaces=39 {gobble |spacer| tokens ( \.{\\ignorespaces} )}
+@d after_assignment=40 {save till assignment is done ( \.{\\afterassignment} )}
+@d after_group=41 {save till group is done ( \.{\\aftergroup} )}
+@d break_penalty=42 {additional badness ( \.{\\penalty} )}
+@d start_par=43 {begin paragraph ( \.{\\indent}, \.{\\noindent} )}
+@d ital_corr=44 {italic correction ( \.{\\/} )}
+@d accent=45 {attach accent in text ( \.{\\accent} )}
+@d math_accent=46 {attach accent in math ( \.{\\mathaccent} )}
+@d discretionary=47 {discretionary texts ( \.{\\-}, \.{\\discretionary} )}
+@d eq_no=48 {equation number ( \.{\\eqno}, \.{\\leqno} )}
+@d left_right=49 {variable delimiter ( \.{\\left}, \.{\\right} )}
+@d math_comp=50 {component of formula ( \.{\\mathbin}, etc.~)}
+@d limit_switch=51 {diddle limit conventions ( \.{\\displaylimits}, etc.~)}
+@d above=52 {generalized fraction ( \.{\\above}, \.{\\atop}, etc.~)}
+@d math_style=53 {style specification ( \.{\\displaystyle}, etc.~)}
+@d math_choice=54 {choice specification ( \.{\\mathchoice} )}
+@d non_script=55 {conditional math glue ( \.{\\nonscript} )}
+@d vcenter=56 {vertically center a vbox ( \.{\\vcenter} )}
+@d case_shift=57 {force specific case ( \.{\\lowercase}, \.{\\uppercase}~)}
+@d message=58 {send to user ( \.{\\message}, \.{\\errmessage} )}
+@d extension=59 {extensions to \TeX\ ( \.{\\write}, \.{\\special}, etc.~)}
+@d in_stream=60 {files for reading ( \.{\\openin}, \.{\\closein} )}
+@d begin_group=61 {begin local grouping ( \.{\\begingroup} )}
+@d end_group=62 {end local grouping ( \.{\\endgroup} )}
+@d omit=63 {omit alignment template ( \.{\\omit} )}
+@d ex_space=64 {explicit space ( \.{\\\ } )}
+@d no_boundary=65 {suppress boundary ligatures ( \.{\\noboundary} )}
+@d radical=66 {square root and similar signs ( \.{\\radical} )}
+@d end_cs_name=67 {end control sequence ( \.{\\endcsname} )}
+@d min_internal=68 {the smallest code that can follow \.{\\the}}
+@d char_given=68 {character code defined by \.{\\chardef}}
+@d math_given=69 {math code defined by \.{\\mathchardef}}
+@d last_item=70 {most recent item ( \.{\\lastpenalty},
+ \.{\\lastkern}, \.{\\lastskip} )}
+@d max_non_prefixed_command=70 {largest command code that can't be \.{\\global}}
+@y
+@d char_num=max_char_code+1 {character specified numerically ( \.{\\char} )}
+@d math_char_num=char_num+1 {explicit math code ( \.{\\mathchar} )}
+@d mark=math_char_num+1 {mark definition ( \.{\\mark} )}
+@d xray=mark+1 {peek inside of \TeX\ ( \.{\\show}, \.{\\showbox}, etc.~)}
+@d make_box=xray+1 {make a box ( \.{\\box}, \.{\\copy}, \.{\\hbox}, etc.~)}
+@d hmove=make_box+1 {horizontal motion ( \.{\\moveleft}, \.{\\moveright} )}
+@d vmove=hmove+1 {vertical motion ( \.{\\raise}, \.{\\lower} )}
+@d un_hbox=vmove+1 {unglue a box ( \.{\\unhbox}, \.{\\unhcopy} )}
+@d un_vbox=un_hbox+1 {unglue a box ( \.{\\unvbox}, \.{\\unvcopy} )}
+@d remove_item=un_vbox+1 {nullify last item ( \.{\\unpenalty},
+ \.{\\unkern}, \.{\\unskip} )}
+@d hskip=remove_item+1 {horizontal glue ( \.{\\hskip}, \.{\\hfil}, etc.~)}
+@d vskip=hskip+1 {vertical glue ( \.{\\vskip}, \.{\\vfil}, etc.~)}
+@d mskip=vskip+1 {math glue ( \.{\\mskip} )}
+@d kern=mskip+1 {fixed space ( \.{\\kern})}
+@d mkern=kern+1 {math kern ( \.{\\mkern} )}
+@d leader_ship=mkern+1 {use a box ( \.{\\shipout}, \.{\\leaders}, etc.~)}
+@d halign=leader_ship+1 {horizontal table alignment ( \.{\\halign} )}
+@d valign=halign+1 {vertical table alignment ( \.{\\valign} )}
+@d no_align=valign+1 {temporary escape from alignment ( \.{\\noalign} )}
+@d vrule=no_align+1 {vertical rule ( \.{\\vrule} )}
+@d hrule=vrule+1 {horizontal rule ( \.{\\hrule} )}
+@d insert=hrule+1 {vlist inserted in box ( \.{\\insert} )}
+@d vadjust=insert+1 {vlist inserted in enclosing paragraph ( \.{\\vadjust} )}
+@d ignore_spaces=vadjust+1 {gobble |spacer| tokens ( \.{\\ignorespaces} )}
+@d after_assignment=ignore_spaces+1 {save till assignment is done ( \.{\\afterassignment} )}
+@d after_group=after_assignment+1 {save till group is done ( \.{\\aftergroup} )}
+@d break_penalty=after_group+1 {additional badness ( \.{\\penalty} )}
+@d start_par=break_penalty+1 {begin paragraph ( \.{\\indent}, \.{\\noindent} )}
+@d ital_corr=start_par+1 {italic correction ( \.{\\/} )}
+@d accent=ital_corr+1 {attach accent in text ( \.{\\accent} )}
+@d math_accent=accent+1 {attach accent in math ( \.{\\mathaccent} )}
+@d discretionary=math_accent+1 {discretionary texts ( \.{\\-}, \.{\\discretionary} )}
+@d eq_no=discretionary+1 {equation number ( \.{\\eqno}, \.{\\leqno} )}
+@d left_right=eq_no+1 {variable delimiter ( \.{\\left}, \.{\\right} )}
+@d math_comp=left_right+1 {component of formula ( \.{\\mathbin}, etc.~)}
+@d limit_switch=math_comp+1 {diddle limit conventions ( \.{\\displaylimits}, etc.~)}
+@d above=limit_switch+1 {generalized fraction ( \.{\\above}, \.{\\atop}, etc.~)}
+@d math_style=above+1 {style specification ( \.{\\displaystyle}, etc.~)}
+@d math_choice=math_style+1 {choice specification ( \.{\\mathchoice} )}
+@d non_script=math_choice+1 {conditional math glue ( \.{\\nonscript} )}
+@d vcenter=non_script+1 {vertically center a vbox ( \.{\\vcenter} )}
+@d case_shift=vcenter+1 {force specific case ( \.{\\lowercase}, \.{\\uppercase}~)}
+@d message=case_shift+1 {send to user ( \.{\\message}, \.{\\errmessage} )}
+@d extension=message+1 {extensions to \TeX\ ( \.{\\write}, \.{\\special}, etc.~)}
+@d in_stream=extension+1 {files for reading ( \.{\\openin}, \.{\\closein} )}
+@d begin_group=in_stream+1 {begin local grouping ( \.{\\begingroup} )}
+@d end_group=begin_group+1 {end local grouping ( \.{\\endgroup} )}
+@d omit=end_group+1 {omit alignment template ( \.{\\omit} )}
+@d ex_space=omit+1 {explicit space ( \.{\\\ } )}
+@d no_boundary=ex_space+1 {suppress boundary ligatures ( \.{\\noboundary} )}
+@d radical=no_boundary+1 {square root and similar signs ( \.{\\radical} )}
+@d end_cs_name=radical+1 {end control sequence ( \.{\\endcsname} )}
+@d min_internal=end_cs_name+1 {the smallest code that can follow \.{\\the}}
+@d char_given=min_internal {character code defined by \.{\\chardef}}
+@d math_given=char_given+1 {math code defined by \.{\\mathchardef}}
+@d last_item=math_given+1 {most recent item ( \.{\\lastpenalty},
+ \.{\\lastkern}, \.{\\lastskip} )}
+@d inhibit_glue=last_item+1 {inhibit adjust glue ( \.{\\inhibitglue} )}
+@d chg_dir=inhibit_glue+1 {change dir mode by \.{\\tate}, \.{\\yoko}}
+@d max_non_prefixed_command=chg_dir {largest command code that can't be \.{\\global}}
+@z
+
+@x [15.209] l.4272 - pTeX: def_jfont, def_tfont, set_auto_spacing
+@d toks_register=71 {token list register ( \.{\\toks} )}
+@d assign_toks=72 {special token list ( \.{\\output}, \.{\\everypar}, etc.~)}
+@d assign_int=73 {user-defined integer ( \.{\\tolerance}, \.{\\day}, etc.~)}
+@d assign_dimen=74 {user-defined length ( \.{\\hsize}, etc.~)}
+@d assign_glue=75 {user-defined glue ( \.{\\baselineskip}, etc.~)}
+@d assign_mu_glue=76 {user-defined muglue ( \.{\\thinmuskip}, etc.~)}
+@d assign_font_dimen=77 {user-defined font dimension ( \.{\\fontdimen} )}
+@d assign_font_int=78 {user-defined font integer ( \.{\\hyphenchar},
+ \.{\\skewchar} )}
+@d set_aux=79 {specify state info ( \.{\\spacefactor}, \.{\\prevdepth} )}
+@d set_prev_graf=80 {specify state info ( \.{\\prevgraf} )}
+@d set_page_dimen=81 {specify state info ( \.{\\pagegoal}, etc.~)}
+@d set_page_int=82 {specify state info ( \.{\\deadcycles},
+ \.{\\insertpenalties} )}
+@d set_box_dimen=83 {change dimension of box ( \.{\\wd}, \.{\\ht}, \.{\\dp} )}
+@d set_shape=84 {specify fancy paragraph shape ( \.{\\parshape} )}
+@d def_code=85 {define a character code ( \.{\\catcode}, etc.~)}
+@d def_family=86 {declare math fonts ( \.{\\textfont}, etc.~)}
+@d set_font=87 {set current font ( font identifiers )}
+@d def_font=88 {define a font file ( \.{\\font} )}
+@d register=89 {internal register ( \.{\\count}, \.{\\dimen}, etc.~)}
+@d max_internal=89 {the largest code that can follow \.{\\the}}
+@d advance=90 {advance a register or parameter ( \.{\\advance} )}
+@d multiply=91 {multiply a register or parameter ( \.{\\multiply} )}
+@d divide=92 {divide a register or parameter ( \.{\\divide} )}
+@d prefix=93 {qualify a definition ( \.{\\global}, \.{\\long}, \.{\\outer} )}
+@d let=94 {assign a command code ( \.{\\let}, \.{\\futurelet} )}
+@d shorthand_def=95 {code definition ( \.{\\chardef}, \.{\\countdef}, etc.~)}
+ {or \.{\\charsubdef}}
+@d read_to_cs=96 {read into a control sequence ( \.{\\read} )}
+@d def=97 {macro definition ( \.{\\def}, \.{\\gdef}, \.{\\xdef}, \.{\\edef} )}
+@d set_box=98 {set a box ( \.{\\setbox} )}
+@d hyph_data=99 {hyphenation data ( \.{\\hyphenation}, \.{\\patterns} )}
+@d set_interaction=100 {define level of interaction ( \.{\\batchmode}, etc.~)}
+@d max_command=100 {the largest command code seen at |big_switch|}
+@y
+@d toks_register=max_non_prefixed_command+1 {token list register ( \.{\\toks} )}
+@d assign_toks=toks_register+1
+ {special token list ( \.{\\output}, \.{\\everypar}, etc.~)}
+@d assign_int=assign_toks+1
+ {user-defined integer ( \.{\\tolerance}, \.{\\day}, etc.~)}
+@d assign_dimen=assign_int+1 {user-defined length ( \.{\\hsize}, etc.~)}
+@d assign_glue=assign_dimen+1 {user-defined glue ( \.{\\baselineskip}, etc.~)}
+@d assign_mu_glue=assign_glue+1 {user-defined muglue ( \.{\\thinmuskip}, etc.~)}
+@d assign_font_dimen=assign_mu_glue+1
+ {user-defined font dimension ( \.{\\fontdimen} )}
+@d assign_font_int=assign_font_dimen+1
+ {user-defined font integer ( \.{\\hyphenchar}, \.{\\skewchar} )}
+@d assign_kinsoku=assign_font_int+1
+ {user-defined kinsoku character ( \.{\\prebreakpenalty},
+ \.{\\postbreakpenalty} )}
+@d assign_inhibit_xsp_code=assign_kinsoku+1
+ {user-defined inhibit xsp character ( \.{\\inhibitxspcode} )}
+@d set_kansuji_char=assign_inhibit_xsp_code+1
+ {user-defined kansuji character ( \.{\\kansujichar} )}
+@d set_aux=set_kansuji_char+1
+ {specify state info ( \.{\\spacefactor}, \.{\\prevdepth} )}
+@d set_prev_graf=set_aux+1 {specify state info ( \.{\\prevgraf} )}
+@d set_page_dimen=set_prev_graf+1 {specify state info ( \.{\\pagegoal}, etc.~)}
+@d set_page_int=set_page_dimen+1 {specify state info ( \.{\\deadcycles},
+ \.{\\insertpenalties} )}
+@d set_box_dimen=set_page_int+1 {change dimension of box ( \.{\\wd}, \.{\\ht}, \.{\\dp} )}
+@d set_shape=set_box_dimen+1 {specify fancy paragraph shape ( \.{\\parshape} )}
+@d def_code=set_shape+1 {define a character code ( \.{\\catcode}, etc.~)}
+@d def_family=def_code+1 {declare math fonts ( \.{\\textfont}, etc.~)}
+@d set_font=def_family+1 {set current font ( font identifiers )}
+@d def_font=set_font+1 {define a font file ( \.{\\font} )}
+@d def_jfont=def_font+1 {define a font file ( \.{\\jfont} )}
+@d def_tfont=def_jfont+1 {define a font file ( \.{\\tfont} )}
+@d register=def_tfont+1 {internal register ( \.{\\count}, \.{\\dimen}, etc.~)}
+@d max_internal=register {the largest code that can follow \.{\\the}}
+@d advance=max_internal+1 {advance a register or parameter ( \.{\\advance} )}
+@d multiply=advance+1 {multiply a register or parameter ( \.{\\multiply} )}
+@d divide=multiply+1 {divide a register or parameter ( \.{\\divide} )}
+@d prefix=divide+1 {qualify a definition ( \.{\\global}, \.{\\long}, \.{\\outer} )}
+@d let=prefix+1 {assign a command code ( \.{\\let}, \.{\\futurelet} )}
+@d shorthand_def=let+1 {code definition ( \.{\\chardef}, \.{\\countdef}, etc.~)}
+@d read_to_cs=shorthand_def+1 {read into a control sequence ( \.{\\read} )}
+@d def=read_to_cs+1 {macro definition ( \.{\\def}, \.{\\gdef}, \.{\\xdef}, \.{\\edef} )}
+@d set_box=def+1 {set a box ( \.{\\setbox} )}
+@d hyph_data=set_box+1 {hyphenation data ( \.{\\hyphenation}, \.{\\patterns} )}
+@d set_interaction=hyph_data+1 {define level of interaction ( \.{\\batchmode}, etc.~)}
+@d set_auto_spacing=set_interaction+1 {set auto spaceing mode
+ ( \.{\\autospacing}, \.{\\noautospacing}, ( \.{\\autospacing}, \.{\\noautospacing} )}
+@d max_command=set_auto_spacing {the largest command code seen at |big_switch|}
+@z
+
+@x [16.212] l.4437 - pTeX: last_jchr, direction, adjust direction
+@<Types...@>=
+@!list_state_record=record@!mode_field:-mmode..mmode;@+
+ @!head_field,@!tail_field: pointer;
+@y
+@<Types...@>=
+@!list_state_record=record@!mode_field:-mmode..mmode;@+
+ @!dir_field,@!adj_dir_field: -dir_dtou..dir_dtou;
+ @!pdisp_field: scaled;
+ @!head_field,@!tail_field,@!pnode_field,@!last_jchr_field: pointer;
+@z
+
+@x [16.213] l.4445 - pTeX: last_jchr, direction, adjust_dir, prev_{node,disp}
+@d head==cur_list.head_field {header node of current list}
+@d tail==cur_list.tail_field {final node on current list}
+@y
+@d direction==cur_list.dir_field {current direction}
+@d adjust_dir==cur_list.adj_dir_field {current adjust direction}
+@d head==cur_list.head_field {header node of current list}
+@d tail==cur_list.tail_field {final node on current list}
+@d prev_node==cur_list.pnode_field {previous to last |disp_node|}
+@d prev_disp==cur_list.pdisp_field {displacemant at |prev_node|}
+@d last_jchr==cur_list.last_jchr_field {final jchar node on current list}
+@z
+
+@x [16.214] l.4464 - pTeX: prev_append: disp_node
+@d tail_append(#)==begin link(tail):=#; tail:=link(tail);
+ end
+@y
+@d tail_append(#)==begin link(tail):=#; tail:=link(tail);
+ end
+@d prev_append(#)==begin link(prev_node):=#;
+ link(link(prev_node)):=tail; prev_node:=link(prev_node);
+ end
+@z
+
+@x [16.215] l.4477 - pTeX: last_jchar, direction, adjust_dir, prev_node
+mode:=vmode; head:=contrib_head; tail:=contrib_head;
+@y
+mode:=vmode; head:=contrib_head; tail:=contrib_head; prev_node:=tail;
+direction:=dir_yoko; adjust_dir:=direction; prev_disp:=0; last_jchr:=null;
+@z
+
+@x [16.216] l.4496 - pTeX: last_jchr, displacement.
+incr(nest_ptr); head:=get_avail; tail:=head; prev_graf:=0; mode_line:=line;
+@y
+incr(nest_ptr); head:=new_null_box; tail:=head; prev_node:=tail;
+prev_graf:=0; prev_disp:=0; last_jchr:=null; mode_line:=line;
+@z
+
+@x [16.217] l.4504 - pTeX: pop_nest last_jchr
+@p procedure pop_nest; {leave a semantic level, re-enter the old}
+begin free_avail(head); decr(nest_ptr); cur_list:=nest[nest_ptr];
+end;
+@y
+@p procedure pop_nest; {leave a semantic level, re-enter the old}
+begin
+fast_delete_glue_ref(space_ptr(head)); fast_delete_glue_ref(xspace_ptr(head));
+free_node(head,box_node_size); decr(nest_ptr); cur_list:=nest[nest_ptr];
+end;
+@z
+
+@x [16.218] l.4521 - pTeX: show_activities : direction
+ print_nl("### "); print_mode(m);
+@y
+ print_nl("### "); print_direction(nest[p].dir_field);
+ print(", "); print_mode(m);
+@z
+
+@x [17.224] l.4711 - pTeX: kanji_skip_code xkanji_skip_code, jfm_skip
+@d thin_mu_skip_code=15 {thin space in math formula}
+@d med_mu_skip_code=16 {medium space in math formula}
+@d thick_mu_skip_code=17 {thick space in math formula}
+@d glue_pars=18 {total number of glue parameters}
+@y
+@d kanji_skip_code=15 {between kanji-kanji space}
+@d xkanji_skip_code=16 {between latin-kanji or kanji-latin space}
+@d thin_mu_skip_code=17 {thin space in math formula}
+@d med_mu_skip_code=18 {medium space in math formula}
+@d thick_mu_skip_code=19 {thick space in math formula}
+@d jfm_skip=20 {space refer from JFM}
+@d glue_pars=21 {total number of glue parameters}
+@z
+
+@x [17.224] l.4739 - kanji_skip, xkanji_skip
+@d thick_mu_skip==glue_par(thick_mu_skip_code)
+@y
+@d thick_mu_skip==glue_par(thick_mu_skip_code)
+@d kanji_skip==glue_par(kanji_skip_code)
+@d xkanji_skip==glue_par(xkanji_skip_code)
+@z
+
+@x [17.225] l.4767 - pTeX: kanji_skip_code xkanji_skip_code
+thick_mu_skip_code: print_esc("thickmuskip");
+othercases print("[unknown glue parameter!]")
+@y
+thick_mu_skip_code: print_esc("thickmuskip");
+kanji_skip_code: print_esc("kanjiskip");
+xkanji_skip_code: print_esc("xkanjiskip");
+jfm_skip: print("refer from jfm");
+othercases print("[unknown glue parameter!]")
+@z
+
+@x [17.226] l.4813 - pTeX: kanji_skip_code xkanji_skip_code
+primitive("thickmuskip",assign_mu_glue,glue_base+thick_mu_skip_code);@/
+@!@:thick_mu_skip_}{\.{\\thickmuskip} primitive@>
+@y
+primitive("thickmuskip",assign_mu_glue,glue_base+thick_mu_skip_code);@/
+@!@:thick_mu_skip_}{\.{\\thickmuskip} primitive@>
+primitive("kanjiskip",assign_glue,glue_base+kanji_skip_code);@/
+@!@:kanji_skip_}{\.{\\kanjiskip} primitive@>
+primitive("xkanjiskip",assign_glue,glue_base+xkanji_skip_code);@/
+@!@:xkanji_skip_}{\.{\\xkanjiskip} primitive@>
+@z
+
+@x [17.230] l.4867 - pTeX: cat_code_size, cur_jfont_loc, auto_spacing, auto_xspacing, inhibit_xsp_code, cur_tfont_loc
+@d xord_code_base=cur_font_loc+1
+@d xchr_code_base=xord_code_base+1
+@d xprn_code_base=xchr_code_base+1
+@d math_font_base=xprn_code_base+1
+@d cat_code_base=math_font_base+48
+ {table of 256 command codes (the ``catcodes'')}
+@d lc_code_base=cat_code_base+256 {table of 256 lowercase mappings}
+@y
+@d math_font_base=cur_font_loc+1 {table of 48 math font numbers}
+@d cur_jfont_loc=math_font_base+48
+@d cur_tfont_loc=cur_jfont_loc+1
+@d auto_spacing_code=cur_tfont_loc+1
+@d auto_xspacing_code=auto_spacing_code+1
+@d cat_code_base=auto_xspacing_code+1
+ {table of 256 command codes (the ``catcodes'')}
+@d kcat_code_base=cat_code_base+256
+ {table of 256 command codes for the wchar's catcodes }
+@d auto_xsp_code_base=kcat_code_base+256 {table of 256 auto spacer flag}
+@d inhibit_xsp_code_base=auto_xsp_code_base+256
+@d kinsoku_base=inhibit_xsp_code_base+256 {table of 256 kinsoku mappings}
+@d kansuji_base=kinsoku_base+256 {table of 10 kansuji mappings}
+@d lc_code_base=kansuji_base+10 {table of 256 lowercase mappings}
+@z
+
+@x [17.230] l.4900 - pTeX:
+@d char_sub_code(#)==equiv(char_sub_code_base+#)
+ {Note: |char_sub_code(c)| is the true substitution info plus |min_halfword|}
+@y
+@d char_sub_code(#)==equiv(char_sub_code_base+#)
+ {Note: |char_sub_code(c)| is the true substitution info plus |min_halfword|}
+@#
+@d cur_jfont==equiv(cur_jfont_loc) {pTeX: }
+@d cur_tfont==equiv(cur_tfont_loc)
+@d auto_spacing==equiv(auto_spacing_code)
+@d auto_xspacing==equiv(auto_xspacing_code)
+@d kcat_code(#)==equiv(kcat_code_base+#)
+@d auto_xsp_code(#)==equiv(auto_xsp_code_base+#)
+@d inhibit_xsp_type(#)==eq_type(inhibit_xsp_code_base+#)
+@d inhibit_xsp_code(#)==equiv(inhibit_xsp_code_base+#)
+@d kinsoku_type(#)==eq_type(kinsoku_base+#)
+@d kinsoku_code(#)==equiv(kinsoku_base+#)
+@d kansuji_char(#)==equiv(kansuji_base+#)
+@z
+
+@x [17.232] l.4959 - pTeX: initialize cat_code, cur_jfont, cur_tfont
+cur_font:=null_font; eq_type(cur_font_loc):=data;
+eq_level(cur_font_loc):=level_one;@/
+@y
+cur_font:=null_font; eq_type(cur_font_loc):=data;
+eq_level(cur_font_loc):=level_one;@/
+cur_jfont:=null_font; eq_type(cur_jfont_loc):=data;
+eq_level(cur_jfont_loc):=level_one;@/
+cur_tfont:=null_font; eq_type(cur_tfont_loc):=data;
+eq_level(cur_tfont_loc):=level_one;@/
+@z
+
+@x [17.232] l.4965 - pTeX: initialize cat_code, cur_jfont, cur_tfont
+for k:=0 to 255 do
+ begin cat_code(k):=other_char; math_code(k):=hi(k); sf_code(k):=1000;
+ end;
+@y
+eqtb[auto_spacing_code]:=eqtb[cat_code_base];
+eqtb[auto_xspacing_code]:=eqtb[cat_code_base];
+for k:=0 to 255 do
+ begin cat_code(k):=other_char; kcat_code(k):=other_kchar;
+ math_code(k):=hi(k); sf_code(k):=1000;
+ auto_xsp_code(k):=0; inhibit_xsp_code(k):=0; inhibit_xsp_type(k):=0;
+ kinsoku_code(k):=0; kinsoku_type(k):=0;
+ end;
+@z
+@x [17.232] l.4971 - pTeX: initialize cat_code, cur_jfont, cur_tfont
+for k:="0" to "9" do math_code(k):=hi(k+var_code);
+for k:="A" to "Z" do
+ begin cat_code(k):=letter; cat_code(k+"a"-"A"):=letter;@/
+ math_code(k):=hi(k+var_code+@"100);
+ math_code(k+"a"-"A"):=hi(k+"a"-"A"+var_code+@"100);@/
+ lc_code(k):=k+"a"-"A"; lc_code(k+"a"-"A"):=k+"a"-"A";@/
+ uc_code(k):=k; uc_code(k+"a"-"A"):=k;@/
+ sf_code(k):=999;
+ end;
+@y
+for k:="0" to "9" do
+ begin math_code(k):=hi(k+var_code);
+ auto_xsp_code(k):=3;
+ end;
+kansuji_char(0):=@"213B;
+kansuji_char(1):=@"306C;
+kansuji_char(2):=@"4673;
+kansuji_char(3):=@"3B30;
+kansuji_char(4):=@"3B4D;
+kansuji_char(5):=@"385E;
+kansuji_char(6):=@"4F3B;
+kansuji_char(7):=@"3C37;
+kansuji_char(8):=@"482C;
+kansuji_char(9):=@"3665;
+for k:="A" to "Z" do
+ begin cat_code(k):=letter; cat_code(k+"a"-"A"):=letter;@/
+ math_code(k):=hi(k+var_code+@"100);
+ math_code(k+"a"-"A"):=hi(k+"a"-"A"+var_code+@"100);@/
+ lc_code(k):=k+"a"-"A"; lc_code(k+"a"-"A"):=k+"a"-"A";@/
+ uc_code(k):=k; uc_code(k+"a"-"A"):=k;@/
+ auto_xsp_code(k):=3; auto_xsp_code(k+"a"-"A"):=3;@/
+ sf_code(k):=999;
+ end;
+if (proc_kanji_code=sjis_enc) then begin
+ @t\hskip10pt@>kcat_code(129):=other_kchar;
+ @t\hskip10pt@>kcat_code(130):=kana;
+ @t\hskip10pt@>kcat_code(131):=kana;
+ @t\hskip10pt@>kcat_code(132):=other_kchar;
+ @+@t\1@>for k:=136 to 159 do kcat_code(k):=kanji;
+ @+@t\1@>for k:=224 to 234 do kcat_code(k):=kanji;
+end else begin
+ @t\hskip10pt@>kcat_code(161):=other_kchar; {1 ku}
+ @t\hskip10pt@>kcat_code(162):=other_kchar; {2 ku}
+ @t\hskip10pt@>kcat_code(163):=kana; {3 ku}
+ @t\hskip10pt@>kcat_code(164):=kana; {4 ku}
+ @t\hskip10pt@>kcat_code(165):=kana; {5 ku}
+ @t\hskip10pt@>kcat_code(166):=kana; {6 ku}
+ @t\hskip10pt@>kcat_code(167):=other_kchar; {7 ku}
+ @t\hskip10pt@>kcat_code(168):=other_kchar; {8 ku}
+ @+@t\1@>for k:=176 to 244 do kcat_code(k):=kanji; {16 ku ... 84 ku}
+end;
+@z
+
+@x [17.236] l.5092 - pTeX: cur_jfam_code, jchr_widow_penalty
+@d cur_fam_code=44 {current family}
+@d escape_char_code=45 {escape character for token output}
+@d default_hyphen_char_code=46 {value of \.{\\hyphenchar} when a font is loaded}
+@d default_skew_char_code=47 {value of \.{\\skewchar} when a font is loaded}
+@d end_line_char_code=48 {character placed at the right end of the buffer}
+@d new_line_char_code=49 {character that prints as |print_ln|}
+@d language_code=50 {current hyphenation table}
+@d left_hyphen_min_code=51 {minimum left hyphenation fragment size}
+@d right_hyphen_min_code=52 {minimum right hyphenation fragment size}
+@d holding_inserts_code=53 {do not remove insertion nodes from \.{\\box255}}
+@d error_context_lines_code=54 {maximum intermediate line pairs shown}
+@d tex_int_pars=55 {total number of \TeX's integer parameters}
+@#
+@d web2c_int_base=tex_int_pars {base for web2c's integer parameters}
+@d char_sub_def_min_code=web2c_int_base {smallest value in the charsubdef list}
+@d char_sub_def_max_code=web2c_int_base+1 {largest value in the charsubdef list}
+@d tracing_char_sub_def_code=web2c_int_base+2 {traces changes to a charsubdef def}
+@d mubyte_in_code=web2c_int_base+3 {if positive then reading mubytes is active}
+@d mubyte_out_code=web2c_int_base+4 {if positive then printing mubytes is active}
+@d mubyte_log_code=web2c_int_base+5 {if positive then print mubytes to log and terminal}
+@d spec_out_code=web2c_int_base+6 {if positive then print specials by mubytes}
+@d web2c_int_pars=web2c_int_base+7 {total number of web2c's integer parameters}
+@#
+@d int_pars=web2c_int_pars {total number of integer parameters}
+@d count_base=int_base+int_pars {256 user \.{\\count} registers}
+@y
+@d cur_fam_code=44 {current family}
+@d cur_jfam_code=45 {current kanji family}
+@d escape_char_code=46 {escape character for token output}
+@d default_hyphen_char_code=47 {value of \.{\\hyphenchar} when a font is loaded}
+@d default_skew_char_code=48 {value of \.{\\skewchar} when a font is loaded}
+@d end_line_char_code=49 {character placed at the right end of the buffer}
+@d new_line_char_code=50 {character that prints as |print_ln|}
+@d language_code=51 {current hyphenation table}
+@d left_hyphen_min_code=52 {minimum left hyphenation fragment size}
+@d right_hyphen_min_code=53 {minimum right hyphenation fragment size}
+@d holding_inserts_code=54 {do not remove insertion nodes from \.{\\box255}}
+@d error_context_lines_code=55 {maximum intermediate line pairs shown}
+@d jchr_widow_penalty_code=56
+ {penalty for creating a widow KANJI character line}
+@d char_sub_def_min_code=57 {smallest value in the charsubdef list}
+@d char_sub_def_max_code=58 {largest value in the charsubdef list}
+@d tracing_char_sub_def_code=59 {traces changes to a charsubdef def}
+@d int_pars=60 {total number of integer parameters}
+@d count_base=int_base+int_pars {256 user \.{\\count} registers}
+@z
+
+@x [17.236] l.5167 - pTeX: cur_jfam, |jchr_widow_penalty|
+@d cur_fam==int_par(cur_fam_code)
+@d escape_char==int_par(escape_char_code)
+@y
+@d cur_fam==int_par(cur_fam_code)
+@d cur_jfam==int_par(cur_jfam_code)
+@d escape_char==int_par(escape_char_code)
+@d jchr_widow_penalty==int_par(jchr_widow_penalty_code)
+@z
+
+@x l.5181 - pTeX
+@d tracing_char_sub_def==int_par(tracing_char_sub_def_code)
+@d mubyte_in==int_par(mubyte_in_code)
+@d mubyte_out==int_par(mubyte_out_code)
+@d mubyte_log==int_par(mubyte_log_code)
+@d spec_out==int_par(spec_out_code)
+@y
+@d tracing_char_sub_def==int_par(tracing_char_sub_def_code)
+@z
+
+@x [17.237] l.5244 - pTeX: cur_jfam_code, jchr_window_penalty_code
+new_line_char_code:print_esc("newlinechar");
+@y
+new_line_char_code:print_esc("newlinechar");
+cur_jfam_code:print_esc("jfam");
+jchr_widow_penalty_code:print_esc("jcharwidowpenalty");
+@z
+
+@x l.5252 - pTeX
+tracing_char_sub_def_code:print_esc("tracingcharsubdef");
+mubyte_in_code:print_esc("mubytein");
+mubyte_out_code:print_esc("mubyteout");
+mubyte_log_code:print_esc("mubytelog");
+spec_out_code:print_esc("specialout");
+@y
+tracing_char_sub_def_code:print_esc("tracingcharsubdef");
+@z
+
+@x [17.238] l.5365 - pTeX: cur_jfam_code, jchr_window_penalty_code
+primitive("newlinechar",assign_int,int_base+new_line_char_code);@/
+@!@:new_line_char_}{\.{\\newlinechar} primitive@>
+@y
+primitive("newlinechar",assign_int,int_base+new_line_char_code);@/
+@!@:new_line_char_}{\.{\\newlinechar} primitive@>
+primitive("jfam",assign_int,int_base+cur_jfam_code);@/
+@!@:cur_jfam_}{\.{\\jfam} primitive@>
+primitive("jcharwidowpenalty",assign_int,int_base+jchr_widow_penalty_code);@/
+@!@:jchr_widow_penalty}{\.{\\jcharwidowpenalty} primitive@>
+@z
+
+@x l.5387 - pTeX
+if enctex_p then
+ begin enctex_enabled_p:=true;
+ primitive("mubytein",assign_int,int_base+mubyte_in_code);@/
+@!@:mubyte_in_}{\.{\\mubytein} primitive@>
+ primitive("mubyteout",assign_int,int_base+mubyte_out_code);@/
+@!@:mubyte_out_}{\.{\\mubyteout} primitive@>
+ primitive("mubytelog",assign_int,int_base+mubyte_log_code);@/
+@!@:mubyte_log_}{\.{\\mubytelog} primitive@>
+ primitive("specialout",assign_int,int_base+spec_out_code);@/
+@!@:spec_out_}{\.{\\specialout} primitive@>
+end;
+@y
+@z
+
+@x [17.247] l.5490 - pTeX: kinsoku, t_baseline_shift, y_baseline_shift
+@d h_offset_code=18 {amount of horizontal offset when shipping pages out}
+@d v_offset_code=19 {amount of vertical offset when shipping pages out}
+@d emergency_stretch_code=20 {reduces badnesses on final pass of line-breaking}
+@d dimen_pars=21 {total number of dimension parameters}
+@d scaled_base=dimen_base+dimen_pars
+ {table of 256 user-defined \.{\\dimen} registers}
+@d eqtb_size=scaled_base+255 {largest subscript of |eqtb|}
+@y
+@d h_offset_code=18 {amount of horizontal offset when shipping pages out}
+@d v_offset_code=19 {amount of vertical offset when shipping pages out}
+@d emergency_stretch_code=20 {reduces badnesses on final pass of line-breaking}
+@d t_baseline_shift_code=21 {shift amount when mixing TATE-kumi and Alphabet}
+@d y_baseline_shift_code=22 {shift amount when mixing YOKO-kumi and Alphabet}
+@d dimen_pars=23 {total number of dimension parameters}
+@d scaled_base=dimen_base+dimen_pars
+ {table of 256 user-defined \.{\\dimen} registers}
+@d kinsoku_penalty_base=scaled_base+256 {table of 256 kinsoku registers}
+@d eqtb_size=kinsoku_penalty_base+255 {largest subscript of |eqtb|}
+@z
+
+@x l.5498 - pTeX: kinsoku, t_baseline_shift, y_baseline_shift
+@d dimen(#)==eqtb[scaled_base+#].sc
+@d dimen_par(#)==eqtb[dimen_base+#].sc {a scaled quantity}
+@y
+@d dimen(#)==eqtb[scaled_base+#].sc
+@d dimen_par(#)==eqtb[dimen_base+#].sc {a scaled quantity}
+@d kinsoku_penalty(#)==eqtb[kinsoku_penalty_base+#].int
+@z
+
+@x l.5518 - pTeX:
+@d h_offset==dimen_par(h_offset_code)
+@d v_offset==dimen_par(v_offset_code)
+@y
+@d h_offset==dimen_par(h_offset_code)
+@d v_offset==dimen_par(v_offset_code)
+@d t_baseline_shift==dimen_par(t_baseline_shift_code)
+@d y_baseline_shift==dimen_par(y_baseline_shift_code)
+@z
+
+@x l.5542 - pTeX:
+h_offset_code:print_esc("hoffset");
+v_offset_code:print_esc("voffset");
+emergency_stretch_code:print_esc("emergencystretch");
+othercases print("[unknown dimen parameter!]")
+@y
+h_offset_code:print_esc("hoffset");
+v_offset_code:print_esc("voffset");
+t_baseline_shift_code:print_esc("tbaselineshift");
+y_baseline_shift_code:print_esc("ybaselineshift");
+emergency_stretch_code:print_esc("emergencystretch");
+othercases print("[unknown dimen parameter!]")
+@z
+
+@x [17.248] l.5588 - pTeX: rotate offset
+primitive("hoffset",assign_dimen,dimen_base+h_offset_code);@/
+@!@:h_offset_}{\.{\\hoffset} primitive@>
+primitive("voffset",assign_dimen,dimen_base+v_offset_code);@/
+@!@:v_offset_}{\.{\\voffset} primitive@>
+@y
+primitive("hoffset",assign_dimen,dimen_base+h_offset_code);@/
+@!@:h_offset_}{\.{\\hoffset} primitive@>
+primitive("voffset",assign_dimen,dimen_base+v_offset_code);@/
+@!@:v_offset_}{\.{\\voffset} primitive@>
+primitive("tbaselineshift",assign_dimen,dimen_base+t_baseline_shift_code);@/
+@!@:t_baseline_shift_}{\.{\\tbaselineshift} primitive@>
+primitive("ybaselineshift",assign_dimen,dimen_base+y_baseline_shift_code);@/
+@!@:y_baseline_shift_}{\.{\\ybaselineshift} primitive@>
+@z
+
+@x [17.252] l.5622 - pTeX: show eqtb
+else if n<=eqtb_size then @<Show equivalent |n|, in region 6@>
+else print_char("?"); {this can't happen either}
+end;
+tats
+@y
+else if n<kinsoku_penalty_base then @<Show equivalent |n|, in region 6@>
+else if n<=eqtb_size then print("kinsoku")
+else print_char("?"); {this can't happen either}
+end;
+tats
+@z
+
+@x l.5777 - pTeX
+The conversion from control sequence to byte sequence for enc\TeX is
+implemented here. Of course, the simplest way is to implement an array
+of string pointers with |hash_size| length, but we assume that only a
+few control sequences will need to be converted. So |mubyte_cswrite|,
+an array with only 128 items, is used. The items point to the token
+lists. First token includes a csname number and the second points the
+string to be output. The third token includes the number of another
+csname and fourth token its pointer to the string etc. We need to do
+the sequential searching in one of the 128 token lists.
+
+@y
+@z
+
+@x l.5788 - pTeX
+procedure print_cs(@!p:integer); {prints a purported control sequence}
+var q: pointer;
+ s: str_number;
+begin
+ if active_noconvert and (not no_convert) and
+ (eq_type(p) = let) and (equiv(p) = normal+11) then { noconvert }
+ begin
+ no_convert := true;
+ return;
+ end;
+ s := 0;
+ if cs_converting and (not no_convert) then
+ begin
+ q := mubyte_cswrite [p mod 128] ;
+ while q <> null do
+ if info (q) = p then
+ begin
+ s := info (link(q)); q := null;
+ end else q := link (link (q));
+ end;
+ no_convert := false;
+ if s > 0 then print (s)
+ else if p<hash_base then {single character}
+@y
+procedure print_cs(@!p:integer); {prints a purported control sequence}
+begin if p<hash_base then {single character}
+@z
+
+@x l.5828 - pTeX
+exit: end;
+@y
+end;
+@z
+
+@x l.5893 - pTeX
+if enctex_p then
+begin
+ primitive("endmubyte",end_cs_name,10);@/
+@!@:end_mubyte_}{\.{\\endmubyte} primitive@>
+end;
+@y
+@z
+
+@x [18.265] l.5903 - pTeX: \jfont \tfont
+primitive("font",def_font,0);@/
+@!@:font_}{\.{\\font} primitive@>
+@y
+primitive("font",def_font,0);@/
+@!@:font_}{\.{\\font} primitive@>
+primitive("jfont",def_jfont,0);@/
+@!@:jfont_}{\.{\\jfont} primitive@>
+primitive("tfont",def_tfont,0);@/
+@!@:tfont_}{\.{\\tfont} primitive@>
+@z
+
+@x [18.266] l.5979 - pTeX: \jfont, \tfont
+def_font: print_esc("font");
+@y
+def_font: print_esc("font");
+def_jfont: print_esc("jfont");
+def_tfont: print_esc("tfont");
+@z
+
+@x l.5982 - pTeX
+end_cs_name: if chr_code = 10 then print_esc("endmubyte")
+ else print_esc("endcsname");
+@y
+end_cs_name: print_esc("endcsname");
+@z
+
+@x [20.289] l.6387 - pTeX: cs_token_flag
+@d cs_token_flag==@'7777 {amount added to the |eqtb| location in a
+ token that stands for a control sequence; is a multiple of~256, less~1}
+@y
+@d cs_token_flag==@"FFFF {amount added to the |eqtb| location in a
+token that stands for a control sequence; is a multiple of~256, less~1}
+@z
+
+@x [20.293] l.6496 - pTeX: show_token_list
+@ @<Display token |p|...@>=
+if (p<hi_mem_min) or (p>mem_end) then
+ begin print_esc("CLOBBERED."); return;
+@.CLOBBERED@>
+ end;
+if info(p)>=cs_token_flag then print_cs(info(p)-cs_token_flag)
+else begin m:=info(p) div @'400; c:=info(p) mod @'400;
+ if info(p)<0 then print_esc("BAD.")
+@.BAD@>
+ else @<Display the token $(|m|,|c|)$@>;
+ end
+@y
+@ @<Display token |p|...@>=
+if (p<hi_mem_min) or (p>mem_end) then
+ begin print_esc("CLOBBERED."); return;
+@.CLOBBERED@>
+ end;
+if info(p)>=cs_token_flag then print_cs(info(p)-cs_token_flag) {wchar_token}
+else begin
+ if check_kanji(info(p)) then {wchar_token}
+ begin m:=kcat_code(Hi(info(p))); c:=info(p);
+ end
+ else begin m:=info(p) div @'400; c:=info(p) mod @'400;
+ end;
+ if (m<kanji)and(c>256) then print_esc("BAD.")
+@.BAD@>
+ else @<Display the token $(|m|,|c|)$@>;
+end
+@z
+
+@x [20.294] l.6512 - pTeX: show_token_list
+@<Display the token ...@>=
+case m of
+left_brace,right_brace,math_shift,tab_mark,sup_mark,sub_mark,spacer,
+ letter,other_char: print(c);
+@y
+@<Display the token ...@>=
+case m of
+kanji,kana,other_kchar: print_kanji(KANJI(c));
+left_brace,right_brace,math_shift,tab_mark,sup_mark,sub_mark,spacer,
+ letter,other_char: print(c);
+@z
+
+@x [21.298] l.6632 - pTeX: print KANJI
+other_char: chr_cmd("the character ");
+@y
+other_char: chr_cmd("the character ");
+kanji,kana,other_kchar: begin print("kanji character ");
+ print_kanji(KANJI(chr_code)); end;
+@z
+
+@x [22.303] l.6726 - pTeX: state mid_kanji
+1) |state=mid_line| is the normal state.\cr
+2) |state=skip_blanks| is like |mid_line|, but blanks are ignored.\cr
+3) |state=new_line| is the state at the beginning of a line.\cr}}$$
+@y
+1) |state=mid_line| is the normal state.\cr
+2) |state=mid_kanji| is like |mid_line|, and internal KANJI string.\cr
+3) |state=skip_blanks| is like |mid_line|, but blanks are ignored.\cr
+4) |state=new_line| is the state at the beginning of a line.\cr}}$$
+@z
+
+@x [22.303] l.6736 - pTeX: state mid_kanji
+@d mid_line=1 {|state| code when scanning a line of characters}
+@d skip_blanks=2+max_char_code {|state| code when ignoring blanks}
+@d new_line=3+max_char_code+max_char_code {|state| code at start of line}
+@y
+@d mid_line=1 {|state| code when scanning a line of characters}
+@d mid_kanji=2+max_char_code {|state| code when scanning a line of characters}
+@d skip_blanks=3+max_char_code+max_char_code {|state| code when ignoring blanks}
+@d new_line=4+max_char_code+max_char_code+max_char_code
+ {|state| code at start of line}
+@z
+
+@x [22.311] l.6986 - pTeX: label
+@p procedure show_context; {prints where the scanner is}
+label done;
+var old_setting:0..max_selector; {saved |selector| setting}
+@y
+@p procedure show_context; {prints where the scanner is}
+label done, done1;
+var old_setting:0..max_selector; {saved |selector| setting}
+@!s: pointer; {temporary pointer}
+@z
+
+@x [22.316] l.7110 - pTeX: init kcode_pos
+@d begin_pseudoprint==
+ begin l:=tally; tally:=0; selector:=pseudo;
+ trick_count:=1000000;
+ end
+@y
+@d begin_pseudoprint==
+ begin l:=tally; tally:=0; selector:=pseudo; kcode_pos:=0;
+ trick_count:=1000000;
+ end
+@z
+@x [22.316] l.7114 - pTeX: kcode_pos
+@d set_trick_count==
+ begin first_count:=tally;
+ trick_count:=tally+1+error_line-half_error_line;
+ if trick_count<error_line then trick_count:=error_line;
+ end
+@y
+@d set_trick_count==
+ begin first_count:=tally;
+ if (first_count>0)and(trick_buf2[(first_count-1)mod error_line]=1) then
+ incr(first_count);
+ trick_count:=first_count+1+error_line-half_error_line;
+ if trick_count<error_line then trick_count:=error_line;
+ end
+@z
+
+@x [22.317] l.7133 - pTeX: adjust kanji code pos
+for q:=p to first_count-1 do print_char(trick_buf[q mod error_line]);
+print_ln;
+for q:=1 to n do print_char(" "); {print |n| spaces to begin line~2}
+if m+n<=error_line then p:=first_count+m else p:=first_count+(error_line-n-3);
+@y
+if trick_buf2[p mod error_line]=2 then
+ begin p:=p+1; n:=n-1;
+ end;
+for q:=p to first_count-1 do print_char(trick_buf[q mod error_line]);
+print_ln;
+for q:=1 to n do print_char(" "); {print |n| spaces to begin line~2}
+if m+n<=error_line then p:=first_count+m else p:=first_count+(error_line-n-3);
+if trick_buf2[(p-1) mod error_line]=1 then p:=p-1;
+@z
+
+@x l.7148 - pTeX
+@<Pseudoprint the line@>=
+begin_pseudoprint;
+if buffer[limit]=end_line_char then j:=limit
+else j:=limit+1; {determine the effective end of the line}
+i := start; mubyte_skeep := mubyte_keep;
+mubyte_sstart := mubyte_start; mubyte_start := false;
+if j>0 then while i < j do
+begin
+ if i=loc then set_trick_count;
+ print_buffer(i);
+end;
+mubyte_keep := mubyte_skeep; mubyte_start := mubyte_sstart
+@y
+@<Pseudoprint the line@>=
+begin_pseudoprint;
+if buffer[limit]=end_line_char then j:=limit
+else j:=limit+1; {determine the effective end of the line}
+if j>0 then for i:=start to j-1 do
+ begin if i=loc then set_trick_count;
+ print(buffer[i]);
+ end
+@z
+
+@x [22.319] l.7157 - pTeX: adjust kanji code token
+@ @<Pseudoprint the token list@>=
+begin_pseudoprint;
+if token_type<macro then show_token_list(start,loc,100000)
+else show_token_list(link(start),loc,100000) {avoid reference count}
+@y
+@ @<Pseudoprint the token list@>=
+begin_pseudoprint;
+if token_type<macro then
+ begin if (token_type=backed_up)and(loc<>null) then
+ begin if (link(start)=null)and(check_kanji(info(start))) then {wchar_token}
+ begin cur_input:=input_stack[base_ptr-1];
+ s:=get_avail; info(s):=(buffer[loc] mod @'400);
+ cur_input:=input_stack[base_ptr];
+ link(start):=s;
+ show_token_list(start,loc,100000);
+ free_avail(s);link(start):=null;
+ goto done1;
+ end;
+ end;
+ show_token_list(start,loc,100000);
+ end
+else show_token_list(link(start),loc,100000); {avoid reference count}
+done1:
+@z
+
+@x l.7354 - pTeX
+Some additional routines used by the enc\TeX extension have to be
+declared at this point.
+
+@p @t\4@>@<Declare additional routines for enc\TeX@>@/
+
+@y
+@z
+
+@x l.7476 - pTeX
+@!i,@!j: 0..buf_size; {more indexes for encTeX}
+@!mubyte_incs: boolean; {control sequence is converted by mubyte}
+@!p:pointer; {for encTeX test if noexpanding}
+@y
+@z
+
+@x [24.341] l.7479 - pTeX: set last_chr
+@!cat:0..15; {|cat_code(cur_chr)|, usually}
+@y
+@!cat:escape..max_char_code; {|cat_code(cur_chr)|, usually}
+@!l:0..buf_size; {temporary index into |buffer|}
+@z
+
+@x [24.343] l.7500 - pTeX: input external file
+@ @<Input from external file, |goto restart| if no input found@>=
+@^inner loop@>
+begin switch: if loc<=limit then {current line not yet finished}
+ begin
+ { Use |k| instead of |loc| for type correctness. }
+ k := loc;
+ cur_chr := read_buffer (k);
+ loc := k; incr (loc);
+ if (mubyte_token > 0) then
+ begin
+ state := mid_line;
+ cur_cs := mubyte_token - cs_token_flag;
+ goto found;
+ end;
+ reswitch: cur_cmd:=cat_code(cur_chr);
+@y
+@ @<Input from external file, |goto restart| if no input found@>=
+@^inner loop@>
+begin switch: if loc<=limit then {current line not yet finished}
+ begin cur_chr:=buffer[loc]; incr(loc);
+ if (iskanji1(cur_chr))and(loc<=limit)and(iskanji2(buffer[loc])) then
+ begin cur_cmd:=kcat_code(cur_chr); cur_chr:=cur_chr*@'400+buffer[loc];
+ incr(loc);
+ end
+ else reswitch: cur_cmd:=cat_code(cur_chr);
+@z
+
+@x [24.344] l.7535 - pTeX: ASCII-KANJI space handling
+@d any_state_plus(#) == mid_line+#,skip_blanks+#,new_line+#
+@y
+@d any_state_plus(#) == mid_line+#,mid_kanji+#,skip_blanks+#,new_line+#
+@z
+
+@x [24.347] l.7569 - pTeX: scaner
+@ @d add_delims_to(#)==#+math_shift,#+tab_mark,#+mac_param,
+ #+sub_mark,#+letter,#+other_char
+@y
+@ @d add_delims_to(#)==#+math_shift,#+tab_mark,#+mac_param,
+ #+sub_mark,#+letter,#+other_char
+@d all_jcode(#)==#+kanji,#+kana,#+other_kchar
+@z
+
+@x [24.347] l.7573 - pTeX: scaner
+mid_line+spacer:@<Enter |skip_blanks| state, emit a space@>;
+mid_line+car_ret:@<Finish line, emit a space@>;
+skip_blanks+car_ret,any_state_plus(comment):
+ @<Finish line, |goto switch|@>;
+new_line+car_ret:@<Finish line, emit a \.{\\par}@>;
+mid_line+left_brace: incr(align_state);
+skip_blanks+left_brace,new_line+left_brace: begin
+ state:=mid_line; incr(align_state);
+ end;
+mid_line+right_brace: decr(align_state);
+skip_blanks+right_brace,new_line+right_brace: begin
+ state:=mid_line; decr(align_state);
+ end;
+add_delims_to(skip_blanks),add_delims_to(new_line): state:=mid_line;
+@y
+mid_kanji+spacer,mid_line+spacer:@<Enter |skip_blanks| state, emit a space@>;
+mid_line+car_ret:@<Finish line, emit a space@>;
+mid_kanji+car_ret: if skip_mode then @<Finish line, |goto switch|@>
+ else @<Finish line, emit a space@>;
+skip_blanks+car_ret,any_state_plus(comment):
+ @<Finish line, |goto switch|@>;
+new_line+car_ret:@<Finish line, emit a \.{\\par}@>;
+mid_line+left_brace,mid_kanji+left_brace: incr(align_state);
+skip_blanks+left_brace,new_line+left_brace: begin
+ state:=mid_line; incr(align_state);
+ end;
+mid_line+right_brace,mid_kanji+right_brace: decr(align_state);
+skip_blanks+right_brace,new_line+right_brace: begin
+ state:=mid_line; decr(align_state);
+ end;
+add_delims_to(skip_blanks),add_delims_to(new_line),add_delims_to(mid_kanji):
+ state:=mid_line;
+all_jcode(skip_blanks),all_jcode(new_line),all_jcode(mid_line):
+ state:=mid_kanji;
+
+@ @<Global...@>=
+skip_mode:boolean;
+
+@ @<Set init...@>=
+skip_mode:=true;
+@z
+
+@x [24.354] l.7659 - pTeX: scan control sequence
+@<Scan a control...@>=
+begin if loc>limit then cur_cs:=null_cs {|state| is irrelevant in this case}
+else begin start_cs:
+ mubyte_incs := false; k := loc; mubyte_skeep := mubyte_keep;
+ cur_chr := read_buffer (k); cat := cat_code (cur_chr);
+ if (mubyte_in>0) and (not mubyte_incs) and
+ ((mubyte_skip>0) or (cur_chr<>buffer[k])) then mubyte_incs := true;
+ incr (k);
+ if mubyte_token > 0 then
+ begin
+ state := mid_line;
+ cur_cs := mubyte_token - cs_token_flag;
+ goto found;
+ end;
+ if cat=letter then state:=skip_blanks
+ else if cat=spacer then state:=skip_blanks
+ else state:=mid_line;
+ if (cat=letter)and(k<=limit) then
+ @<Scan ahead in the buffer until finding a nonletter;
+ if an expanded code is encountered, reduce it
+ and |goto start_cs|; otherwise if a multiletter control
+ sequence is found, adjust |cur_cs| and |loc|, and
+ |goto found|@>
+ else @<If an expanded code is present, reduce it and |goto start_cs|@>;
+ mubyte_keep := mubyte_skeep;
+ cur_cs:=single_base + read_buffer(loc); incr(loc);
+ end;
+found: cur_cmd:=eq_type(cur_cs); cur_chr:=equiv(cur_cs);
+if cur_cmd>=outer_call then check_outer_validity;
+if write_noexpanding then
+begin
+ p := mubyte_cswrite [cur_cs mod 128];
+ while p <> null do
+ if info (p) = cur_cs then
+ begin
+ cur_cmd := relax; cur_chr := 256; p := null;
+ end else p := link (link (p));
+end;
+end
+@y
+@<Scan a control...@>=
+begin if loc>limit then cur_cs:=null_cs {|state| is irrelevant in this case}
+else begin k:=loc; cur_chr:=buffer[k]; incr(k);
+ if (iskanji1(cur_chr))and(k<=limit)and(iskanji2(buffer[k])) then
+ begin cat:=kcat_code(cur_chr); incr(k);
+ end
+ else cat:=cat_code(cur_chr);
+start_cs:
+ if (cat=letter)or(cat=kanji)or(cat=kana) then state:=skip_blanks
+ else if cat=spacer then state:=skip_blanks
+ else state:=mid_line;
+ if cat=other_kchar then
+ begin cur_cs:=id_lookup(loc,k-loc); loc:=k; goto found;
+ end
+ else if ((cat=letter)or(cat=kanji)or(cat=kana))and(k<=limit) then
+ @<Scan ahead in the buffer until finding a nonletter;
+ if an expanded code is encountered, reduce it
+ and |goto start_cs|; otherwise if a multiletter control
+ sequence is found, adjust |cur_cs| and |loc|, and
+ |goto found|@>
+ else @<If an expanded code is present, reduce it and |goto start_cs|@>;
+ cur_cs:=single_base+buffer[loc]; incr(loc);
+ end;
+found: cur_cmd:=eq_type(cur_cs); cur_chr:=equiv(cur_cs);
+if cur_cmd>=outer_call then check_outer_validity;
+end
+@z
+
+@x
+@<If an expanded...@>=
+begin if buffer[k]=cur_chr then @+if cat=sup_mark then @+if k<limit then
+ begin c:=buffer[k+1]; @+if c<@'200 then {yes, one is indeed present}
+ begin d:=2;
+ if is_hex(c) then @+if k+2<=limit then
+ begin cc:=buffer[k+2]; @+if is_hex(cc) then incr(d);
+ end;
+ if d>2 then
+ begin hex_to_cur_chr; buffer[k-1]:=cur_chr;
+ end
+ else if c<@'100 then buffer[k-1]:=c+@'100
+ else buffer[k-1]:=c-@'100;
+ limit:=limit-d; first:=first-d;
+ while k<=limit do
+ begin buffer[k]:=buffer[k+d]; incr(k);
+ end;
+ goto start_cs;
+ end;
+ end;
+end
+@y
+@<If an expanded...@>=
+begin if buffer[k]=cur_chr then @+if cat=sup_mark then @+if k<limit then
+ begin c:=buffer[k+1]; @+if c<@'200 then {yes, one is indeed present}
+ begin d:=2;
+ if is_hex(c) then @+if k+2<=limit then
+ begin cc:=buffer[k+2]; @+if is_hex(cc) then incr(d);
+ end;
+ if d>2 then
+ begin hex_to_cur_chr; buffer[k-1]:=cur_chr;
+ end
+ else if c<@'100 then buffer[k-1]:=c+@'100
+ else buffer[k-1]:=c-@'100;
+ limit:=limit-d; first:=first-d;
+ l:=k; cur_chr:=buffer[k-1]; cat:=cat_code(cur_chr);
+ while l<=limit do
+ begin buffer[l]:=buffer[l+d]; incr(l);
+ end;
+ goto start_cs;
+ end;
+ end;
+end
+@z
+
+@x [24.356] l.7727 - pTeX: scan control sequence (cont)
+@ @<Scan ahead in the buffer...@>=
+begin
+ repeat cur_chr := read_buffer (k); cat := cat_code (cur_chr);
+ if mubyte_token>0 then cat := escape;
+ if (mubyte_in>0) and (not mubyte_incs) and (cat=letter) and
+ ((mubyte_skip>0) or (cur_chr<>buffer[k])) then mubyte_incs := true;
+ incr (k);
+ until (cat <> letter) or (k > limit);
+ @<If an expanded...@>;
+ if cat <> letter then
+ begin
+ decr (k); k := k - mubyte_skip;
+ end;
+ if k > loc + 1 then { multiletter control sequence has been scanned }
+ begin
+ if mubyte_incs then { multibyte in csname occurrs }
+ begin
+ i := loc; j := first; mubyte_keep := mubyte_skeep;
+ if j - loc + k > max_buf_stack then
+ begin
+ max_buf_stack := j - loc + k;
+ if max_buf_stack >= buf_size then
+ begin
+ max_buf_stack := buf_size;
+ overflow ("buffer size", buf_size);
+ end;
+ end;
+ while i < k do
+ begin
+ buffer [j] := read_buffer (i);
+ incr (i); incr (j);
+ end;
+ if j = first+1 then
+ cur_cs := single_base + buffer [first]
+ else
+ cur_cs := id_lookup (first, j-first);
+ end else cur_cs := id_lookup (loc, k-loc) ;
+ loc := k;
+ goto found;
+ end;
+end
+@y
+@ @<Scan ahead in the buffer...@>=
+begin repeat cur_chr:=buffer[k]; incr(k);
+ if (iskanji1(cur_chr))and(k<=limit)and(iskanji2(buffer[k])) then
+ begin cat:=kcat_code(cur_chr); incr(k);
+ end
+ else cat:=cat_code(cur_chr);
+ while (buffer[k]=cur_chr)and(cat=sup_mark)and(k<limit) do
+ begin c:=buffer[k+1]; @+if c<@'200 then {yes, one is indeed present}
+ begin d:=2;
+ if is_hex(c) then @+if k+2<=limit then
+ begin cc:=buffer[k+2]; @+if is_hex(cc) then incr(d);
+ end;
+ if d>2 then
+ begin hex_to_cur_chr;
+ end
+ else if c<@'100 then cur_chr:=c+@'100
+ else cur_chr:=c-@'100;
+ cat:=cat_code(cur_chr);
+ if (cat=letter)or(cat=sup_mark) then
+ begin buffer[k-1]:=cur_chr;
+ limit:=limit-d; first:=first-d;
+ l:=k;
+ while l<=limit do
+ begin buffer[l]:=buffer[l+d]; incr(l);
+ end;
+ end;
+ end;
+ end;
+until not((cat=letter)or(cat=kanji)or(cat=kana))or(k>limit);
+{@@<If an expanded...@@>;}
+if not((cat=letter)or(cat=kanji)or(cat=kana)) then decr(k);
+if cat=other_kchar then decr(k); {now |k| points to first nonletter}
+if k>loc+1 then {multiletter control sequence has been scanned}
+ begin cur_cs:=id_lookup(loc,k-loc); loc:=k; goto found;
+ end;
+end
+@z
+
+@x [24.357] l.7771 - pTeX: input from token list
+@<Input from token list, |goto restart| if end of list or
+ if a parameter needs to be expanded@>=
+if loc<>null then {list not exhausted}
+@^inner loop@>
+ begin t:=info(loc); loc:=link(loc); {move to next}
+ if t>=cs_token_flag then {a control sequence token}
+ begin cur_cs:=t-cs_token_flag;
+ cur_cmd:=eq_type(cur_cs); cur_chr:=equiv(cur_cs);
+ if cur_cmd>=outer_call then
+ if cur_cmd=dont_expand then
+ @<Get the next token, suppressing expansion@>
+ else check_outer_validity;
+ if write_noexpanding then
+ begin
+ p := mubyte_cswrite [cur_cs mod 128];
+ while p <> null do
+ if info (p) = cur_cs then
+ begin
+ cur_cmd := relax; cur_chr := 256; p := null;
+ end else p := link (link (p));
+ end;
+ end
+ else begin cur_cmd:=t div @'400; cur_chr:=t mod @'400;
+ case cur_cmd of
+ left_brace: incr(align_state);
+ right_brace: decr(align_state);
+ out_param: @<Insert macro parameter and |goto restart|@>;
+ othercases do_nothing
+ endcases;
+ end;
+ end
+else begin {we are done with this token list}
+ end_token_list; goto restart; {resume previous level}
+ end
+@y
+@<Input from token list, |goto restart| if end of list or
+ if a parameter needs to be expanded@>=
+if loc<>null then {list not exhausted}
+@^inner loop@>
+ begin t:=info(loc); loc:=link(loc); {move to next}
+ if t>=cs_token_flag then {a control sequence token}
+ begin cur_cs:=t-cs_token_flag;
+ cur_cmd:=eq_type(cur_cs); cur_chr:=equiv(cur_cs);
+ if cur_cmd>=outer_call then
+ if cur_cmd=dont_expand then
+ @<Get the next token, suppressing expansion@>
+ else check_outer_validity;
+ end
+ else if check_kanji(t) then {wchar_token}
+ begin cur_chr:=t; cur_cmd:=kcat_code(Hi(t));
+ end
+ else
+ begin cur_cmd:=t div @'400; cur_chr:=t mod @'400;
+ case cur_cmd of
+ left_brace: incr(align_state);
+ right_brace: decr(align_state);
+ out_param: @<Insert macro parameter and |goto restart|@>;
+ othercases do_nothing
+ endcases;
+ end;
+ end
+else begin {we are done with this token list}
+ end_token_list; goto restart; {resume previous level}
+ end
+@z
+
+@x l.7898 - pTeX
+ k := start;
+ while k < limit do begin print_buffer(k) end;
+@y
+ if start<limit then for k:=start to limit-1 do print(buffer[k]);
+@z
+
+@x [24.365] l.7935 - pTeX: get_token
+@p procedure get_token; {sets |cur_cmd|, |cur_chr|, |cur_tok|}
+begin no_new_control_sequence:=false; get_next; no_new_control_sequence:=true;
+@^inner loop@>
+if cur_cs=0 then cur_tok:=(cur_cmd*@'400)+cur_chr
+else cur_tok:=cs_token_flag+cur_cs;
+end;
+@y
+@p procedure get_token; {sets |cur_cmd|, |cur_chr|, |cur_tok|}
+begin no_new_control_sequence:=false; get_next; no_new_control_sequence:=true;
+@^inner loop@>
+if cur_cs=0 then
+ if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then {wchar_token}
+ cur_tok:=cur_chr
+ else cur_tok:=(cur_cmd*@'400)+cur_chr
+else cur_tok:=cs_token_flag+cur_cs;
+end;
+@z
+
+%@x [25.367] l.8019 - pTeX: expand
+%@<Suppress expansion...@>=
+%begin save_scanner_status:=scanner_status; scanner_status:=normal;
+%get_token; scanner_status:=save_scanner_status; t:=cur_tok;
+%back_input; {now |start| and |loc| point to the backed-up token |t|}
+%if t>=cs_token_flag then
+% begin p:=get_avail; info(p):=cs_token_flag+frozen_dont_expand;
+% link(p):=loc; start:=p; loc:=p;
+% end;
+%end
+%@y
+%@<Suppress expansion...@>=
+%begin save_scanner_status:=scanner_status; scanner_status:=normal;
+%get_token; scanner_status:=save_scanner_status; t:=cur_tok;
+%back_input; {now |start| and |loc| point to the backed-up token |t|}
+%if t>=cs_token_flag then
+% begin p:=get_avail; info(p):=cs_token_flag+frozen_dont_expand;
+% link(p):=loc; start:=p; loc:=p;
+% end;
+%end
+%@z
+
+@x [25.374] l.8073 - pTeX: get_chr
+@ @<Look up the characters of list |r| in the hash table...@>=
+j:=first; p:=link(r);
+while p<>null do
+ begin if j>=max_buf_stack then
+ begin max_buf_stack:=j+1;
+ if max_buf_stack=buf_size then
+ overflow("buffer size",buf_size);
+@:TeX capacity exceeded buffer size}{\quad buffer size@>
+ end;
+ buffer[j]:=info(p) mod @'400; incr(j); p:=link(p);
+ end;
+@y
+@ @<Look up the characters of list |r| in the hash table...@>=
+j:=first; p:=link(r);
+while p<>null do
+ begin if j>=max_buf_stack then
+ begin max_buf_stack:=j+1;
+ if max_buf_stack=buf_size then
+ overflow("buffer size",buf_size);
+@:TeX capacity exceeded buffer size}{\quad buffer size@>
+ end;
+ if check_kanji(info(p)) then {wchar_token}
+ begin buffer[j]:=Hi(info(p)); incr(j);
+ buffer[j]:=Lo(info(p)); incr(j); p:=link(p);
+ end
+ else
+ begin buffer[j]:=info(p) mod @'400; incr(j); p:=link(p);
+ end;
+ end;
+@z
+
+@x [25.380] l.8221 - pTeX: get_x_token
+@p procedure get_x_token; {sets |cur_cmd|, |cur_chr|, |cur_tok|,
+ and expands macros}
+label restart,done;
+begin restart: get_next;
+@^inner loop@>
+if cur_cmd<=max_command then goto done;
+if cur_cmd>=call then
+ if cur_cmd<end_template then macro_call
+ else begin cur_cs:=frozen_endv; cur_cmd:=endv;
+ goto done; {|cur_chr=null_list|}
+ end
+else expand;
+goto restart;
+done: if cur_cs=0 then cur_tok:=(cur_cmd*@'400)+cur_chr
+else cur_tok:=cs_token_flag+cur_cs;
+end;
+@y
+@p procedure get_x_token; {sets |cur_cmd|, |cur_chr|, |cur_tok|,
+ and expands macros}
+label restart,done;
+begin restart: get_next;
+@^inner loop@>
+if cur_cmd<=max_command then goto done;
+if cur_cmd>=call then
+ if cur_cmd<end_template then macro_call
+ else begin cur_cs:=frozen_endv; cur_cmd:=endv;
+ goto done; {|cur_chr=null_list|}
+ end
+else expand;
+goto restart;
+done: if cur_cs=0 then
+ if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then
+ cur_tok:=cur_chr
+ else cur_tok:=(cur_cmd*@'400)+cur_chr
+else cur_tok:=cs_token_flag+cur_cs;
+end;
+@z
+
+@x [25.381] l.8151 - pTeX: x_token
+@p procedure x_token; {|get_x_token| without the initial |get_next|}
+begin while cur_cmd>max_command do
+ begin expand;
+ get_next;
+ end;
+if cur_cs=0 then cur_tok:=(cur_cmd*@'400)+cur_chr
+else cur_tok:=cs_token_flag+cur_cs;
+@y
+@p procedure x_token; {|get_x_token| without the initial |get_next|}
+begin while cur_cmd>max_command do
+ begin expand;
+ get_next;
+ end;
+if cur_cs=0 then
+ if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then
+ cur_tok:=cur_chr
+ else cur_tok:=(cur_cmd*@'400)+cur_chr
+else cur_tok:=cs_token_flag+cur_cs;
+@z
+
+@x [26.413] l.8659 - pTeX: scan_somthing_internal
+@p procedure scan_something_internal(@!level:small_number;@!negative:boolean);
+ {fetch an internal parameter}
+var m:halfword; {|chr_code| part of the operand token}
+@!p:0..nest_size; {index into |nest|}
+begin m:=cur_chr;
+case cur_cmd of
+def_code: @<Fetch a character code from some table@>;
+toks_register,assign_toks,def_family,set_font,def_font: @<Fetch a token list or
+ font identifier, provided that |level=tok_val|@>;
+@y
+@p @t\4@>@<Declare procedures needed in |scan_something|@>@t@>@/
+procedure scan_something_internal(@!level:small_number;@!negative:boolean);
+ {fetch an internal parameter}
+var m:halfword; {|chr_code| part of the operand token}
+@!p:0..nest_size; {index into |nest|}
+@!q:pointer;
+begin m:=cur_chr;
+case cur_cmd of
+assign_kinsoku: @<Fetch breaking penalty from some table@>;
+assign_inhibit_xsp_code: @<Fetch inhibit type from some table@>;
+def_code: @<Fetch a character code from some table@>;
+toks_register,assign_toks,def_family,set_font,def_font,def_jfont,def_tfont:
+ @<Fetch a token list or font identifier, provided that |level=tok_val|@>;
+@z
+
+@x [26.414] l.8693 - pTeX:
+if m=xord_code_base then scanned_result(xord[cur_val])(int_val)
+else if m=xchr_code_base then scanned_result(xchr[cur_val])(int_val)
+else if m=xprn_code_base then scanned_result(xprn[cur_val])(int_val)
+else if m=math_code_base then scanned_result(ho(math_code(cur_val)))(int_val)
+else if m<math_code_base then scanned_result(equiv(m+cur_val))(int_val)
+else scanned_result(eqtb[m+cur_val].int)(int_val);
+@y
+if m=math_code_base then scanned_result(ho(math_code(cur_val)))(int_val)
+else if m=kcat_code_base then scanned_result(equiv(m+Hi(cur_val)))(int_val)
+else if m<math_code_base then
+ begin if check_kanji(cur_val)>0 then
+ scanned_result(equiv(m+Hi(cur_val)))(int_val)
+ else scanned_result(equiv(m+cur_val))(int_val)
+ end
+else scanned_result(eqtb[m+cur_val].int)(int_val);
+@z
+
+@x [26.420] l.8799 - pTeX: Fetch a box dimension: dir_node
+if box(cur_val)=null then cur_val:=0 @+else cur_val:=mem[box(cur_val)+m].sc;
+@y
+if box(cur_val)=null then cur_val:=0
+else
+ begin q:=box(cur_val);
+ while (q<>null)and(box_dir(q)<>abs(direction)) do q:=link(q);
+ if q=null then
+ begin q:=new_dir_node(box(cur_val),abs(direction));
+ cur_val:=mem[q+m].sc;
+ delete_glue_ref(space_ptr(q)); delete_glue_ref(xspace_ptr(q));
+ free_node(q,box_node_size);
+ end
+ else cur_val:=mem[q+m].sc;
+ end;
+@z
+
+@x [26.435] l.8940 - pTeX: scan_char_num
+procedure scan_char_num;
+begin scan_int;
+if (cur_val<0)or(cur_val>255) then
+ begin print_err("Bad character code");
+@.Bad character code@>
+ help2("A character number must be between 0 and 255.")@/
+ ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
+ end;
+end;
+@y
+procedure scan_char_num;
+begin scan_int;
+if ((cur_val<0)or(cur_val>255))and(not check_kanji(cur_val)) then {wchar_token}
+ begin print_err("Bad character code");
+@.Bad character code@>
+ help2("A character number must be between 0 and 255, or KANJI code.")@/
+ ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
+ end;
+end;
+@z
+
+@x [26.442] l.9045 - pTeX: KANJI character scanning
+@<Scan an alphabetic character code into |cur_val|@>=
+begin get_token; {suppress macro expansion}
+if cur_tok<cs_token_flag then
+ begin cur_val:=cur_chr;
+ if cur_cmd<=right_brace then
+ if cur_cmd=right_brace then incr(align_state)
+ else decr(align_state);
+ end
+else if cur_tok<cs_token_flag+single_base then
+ cur_val:=cur_tok-cs_token_flag-active_base
+else cur_val:=cur_tok-cs_token_flag-single_base;
+if cur_val>255 then
+ begin print_err("Improper alphabetic constant");
+@.Improper alphabetic constant@>
+ help2("A one-character control sequence belongs after a ` mark.")@/
+ ("So I'm essentially inserting \0 here.");
+ cur_val:="0"; back_error;
+ end
+else @<Scan an optional space@>;
+end
+@y
+@<Scan an alphabetic character code into |cur_val|@>=
+begin get_token; {suppress macro expansion}
+if cur_tok<cs_token_flag then
+ if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then {wchar_token}
+ begin skip_mode:=false; cur_val:=tonum(cur_chr);
+ end
+ else begin cur_val:=cur_chr;
+ if cur_cmd<=right_brace then
+ if cur_cmd=right_brace then incr(align_state)
+ else decr(align_state);
+ end
+else if cur_tok<cs_token_flag+single_base then
+ cur_val:=cur_tok-cs_token_flag-active_base
+else cur_val:=cur_tok-cs_token_flag-single_base;
+if (cur_val>255)and(cur_cmd<kanji) then
+ begin print_err("Improper alphabetic or KANJI constant");
+@.Improper alphabetic constant@>
+ help2("A one-character control sequence belongs after a ` mark.")@/
+ ("So I'm essentially inserting \0 here.");
+ cur_val:="0"; back_error;
+ end
+else @<Scan an optional space@>;
+skip_mode:=true;
+end
+@z
+
+@x [26.455] l.9288 - pTeX: zw, zh: zenkaku width & height
+if scan_keyword("em") then v:=(@<The em width for |cur_font|@>)
+@.em@>
+else if scan_keyword("ex") then v:=(@<The x-height for |cur_font|@>)
+@.ex@>
+else goto not_found;
+@y
+if scan_keyword("em") then v:=(@<The em width for |cur_font|@>)
+@.em@>
+else if scan_keyword("ex") then v:=(@<The x-height for |cur_font|@>)
+@.ex@>
+else if scan_keyword("zw") then @<The KANJI width for |cur_jfont|@>
+@.ze@>
+else if scan_keyword("zh") then @<The KANJI height for |cur_jfont|@>
+@.zh@>
+else goto not_found;
+@z
+
+@x [26.458] l.9345 - pTeX: dimension unit: Q, H (1/4 mm)
+else if scan_keyword("sp") then goto done
+@.sp@>
+@y
+else if scan_keyword("H") then set_conversion(7227)(10160)
+@.H@>
+else if scan_keyword("Q") then set_conversion(7227)(10160)
+@.Q@>
+else if scan_keyword("sp") then goto done
+@.sp@>
+@z
+
+@x [27.464] l.9475 - pTeX: str_toks
+ if t=" " then t:=space_token
+ else t:=other_token+t;
+@y
+ if (iskanji1(t))and(k+1<pool_ptr)and(iskanji2(str_pool[k+1])) then
+ begin t:=t*@'400+str_pool[k+1]; incr(k);
+ end
+ else if t=" " then t:=space_token
+ else t:=other_token+t;
+@z
+
+@x [27.468] l.9531 - pTeX: convert KANJI code
+@d number_code=0 {command code for \.{\\number}}
+@d roman_numeral_code=1 {command code for \.{\\romannumeral}}
+@d string_code=2 {command code for \.{\\string}}
+@d meaning_code=3 {command code for \.{\\meaning}}
+@d font_name_code=4 {command code for \.{\\fontname}}
+@d job_name_code=5 {command code for \.{\\jobname}}
+@y
+@d number_code=0 {command code for \.{\\number}}
+@d roman_numeral_code=1 {command code for \.{\\romannumeral}}
+@d kansuji_code=2 {command code for \.{\\kansuji}}
+@d string_code=3 {command code for \.{\\string}}
+@d meaning_code=4 {command code for \.{\\meaning}}
+@d font_name_code=5 {command code for \.{\\fontname}}
+@d euc_code=6 {command code for \.{\\euc}}
+@d sjis_code=7 {command code for \.{\\sjis}}
+@d jis_code=8 {command code for \.{\\jis}}
+@d kuten_code=9 {command code for \.{\\kuten}}
+@d job_name_code=10 {command code for \.{\\jobname}}
+@z
+
+@x [27.468] l.9547 - pTeX:
+primitive("fontname",convert,font_name_code);@/
+@!@:font_name_}{\.{\\fontname} primitive@>
+@y
+primitive("fontname",convert,font_name_code);@/
+@!@:font_name_}{\.{\\fontname} primitive@>
+primitive("kansuji",convert,kansuji_code);
+@!@:kansuji_}{\.{\\kansuji} primitive@>
+primitive("euc",convert,euc_code);
+@!@:euc_}{\.{\\euc} primitive@>
+primitive("sjis",convert,sjis_code);
+@!@:sjis_}{\.{\\sjis} primitive@>
+primitive("jis",convert,jis_code);
+@!@:jis_}{\.{\\jis} primitive@>
+primitive("kuten",convert,kuten_code);
+@!@:kuten_}{\.{\\kuten} primitive@>
+@z
+
+@x [27.469] l.9558 - pTeX:
+ font_name_code: print_esc("fontname");
+@y
+ font_name_code: print_esc("fontname");
+ kansuji_code: print_esc("kansuji");
+ euc_code:print_esc("euc");
+ sjis_code:print_esc("sjis");
+ jis_code:print_esc("jis");
+ kuten_code:print_esc("kuten");
+@z
+
+@x [27.470] l.9566 - pTeX: convert KANJI code continue
+@p procedure conv_toks;
+var old_setting:0..max_selector; {holds |selector| setting}
+@y
+@p procedure conv_toks;
+var old_setting:0..max_selector; {holds |selector| setting}
+@!cx:KANJI_code; {temporary register for KANJI}
+@z
+
+@x [27.471] l.9577 - pTeX: convert KANJI code continue
+@ @<Scan the argument for command |c|@>=
+case c of
+number_code,roman_numeral_code: scan_int;
+string_code, meaning_code: begin save_scanner_status:=scanner_status;
+ scanner_status:=normal; get_token; scanner_status:=save_scanner_status;
+ end;
+@y
+@ @<Scan the argument for command |c|@>=
+KANJI(cx):=0;
+case c of
+number_code,roman_numeral_code,
+kansuji_code,euc_code,sjis_code,jis_code,kuten_code: scan_int;
+string_code, meaning_code: begin save_scanner_status:=scanner_status;
+ scanner_status:=normal; get_token;
+ if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then {wchar_token}
+ KANJI(cx):=cur_tok;
+ scanner_status:=save_scanner_status;
+ end;
+@z
+
+@x [27.471] l.9587 - pTeX: convert KANJI code continue
+@ @<Print the result of command |c|@>=
+case c of
+number_code: print_int(cur_val);
+roman_numeral_code: print_roman_int(cur_val);
+string_code:if cur_cs<>0 then sprint_cs(cur_cs)
+ else print_char(cur_chr);
+@y
+@ @<Print the result of command |c|@>=
+case c of
+number_code: print_int(cur_val);
+roman_numeral_code: print_roman_int(cur_val);
+jis_code: begin
+ if (proc_kanji_code=sjis_enc) then cur_val:=JIStoSJIS(cur_val)
+ else cur_val:=JIStoEUC(cur_val);
+ print_int(cur_val); end;
+euc_code: begin
+ if (proc_kanji_code=sjis_enc) then cur_val:=EUCtoSJIS(cur_val)
+ else do_nothing;
+ print_int(cur_val); end;
+sjis_code: begin
+ if (proc_kanji_code=sjis_enc) then do_nothing
+ else cur_val:=SJIStoEUC(cur_val);
+ print_int(cur_val); end;
+kuten_code: begin
+ if (proc_kanji_code=sjis_enc) then cur_val:=KUTENtoSJIS(cur_val)
+ else cur_val:=KUTENtoEUC(cur_val);
+ print_int(cur_val); end;
+kansuji_code: print_kansuji(cur_val);
+string_code:if cur_cs<>0 then sprint_cs(cur_cs)
+ else if KANJI(cx)=0 then print_char(cur_chr)
+ else print_kanji(cx);
+@z
+
+@x [28.487] l.9852 - pTeX: iftdir, ifydir, iftbox, ifybox
+@d if_case_code=16 { `\.{\\ifcase}' }
+@y
+@d if_case_code=16 { `\.{\\ifcase}' }
+@d if_tdir_code=17 { `\.{\\iftdir}' }
+@d if_ydir_code=18 { `\.{\\ifydir}' }
+@d if_mdir_code=19 { `\.{\\ifmdir}' }
+@d if_tbox_code=20 { `\.{\\iftbox}' }
+@d if_ybox_code=21 { `\.{\\ifybox}' }
+@z
+
+@x [28.487] l.9887 - pTeX: iftdir, ifydir, iftbox, ifybox
+primitive("ifcase",if_test,if_case_code);
+@!@:if_case_}{\.{\\ifcase} primitive@>
+@y
+primitive("ifcase",if_test,if_case_code);
+@!@:if_case_}{\.{\\ifcase} primitive@>
+primitive("iftdir",if_test,if_tdir_code);
+@!@:if_tdir_}{\.{\\iftdir} primitive@>
+primitive("ifydir",if_test,if_ydir_code);
+@!@:if_ydir_}{\.{\\ifydir} primitive@>
+primitive("ifmdir",if_test,if_mdir_code);
+@!@:if_mdir_}{\.{\\ifmdir} primitive@>
+primitive("iftbox",if_test,if_tbox_code);
+@!@:if_tbox_}{\.{\\iftbox} primitive@>
+primitive("ifybox",if_test,if_ybox_code);
+@!@:if_ybox_}{\.{\\ifybox} primitive@>
+@z
+
+@x [28.488] l.9907 - pTeX: iftdir, ifydir, iftbox, ifybox
+ if_case_code:print_esc("ifcase");
+@y
+ if_case_code:print_esc("ifcase");
+ if_tdir_code:print_esc("iftdir");
+ if_ydir_code:print_esc("ifydir");
+ if_mdir_code:print_esc("ifmdir");
+ if_tbox_code:print_esc("iftbox");
+ if_ybox_code:print_esc("ifybox");
+@z
+
+@x [28.501] l.10073 - pTeX: iftdir, ifydir, iftbox, ifybox
+if_void_code, if_hbox_code, if_vbox_code: @<Test box register status@>;
+@y
+if_tdir_code: b:=(abs(direction)=dir_tate);
+if_ydir_code: b:=(abs(direction)=dir_yoko);
+if_mdir_code: b:=(direction<0);
+if_void_code, if_hbox_code, if_vbox_code, if_tbox_code, if_ybox_code:
+ @<Test box register status@>;
+@z
+
+@x [28.505] l.10118 - pTeX: Test box register status : iftbox, ifybox
+if this_if=if_void_code then b:=(p=null)
+else if p=null then b:=false
+else if this_if=if_hbox_code then b:=(type(p)=hlist_node)
+else b:=(type(p)=vlist_node);
+@y
+if this_if=if_void_code then b:=(p=null)
+else if p=null then b:=false
+else begin
+ if type(p)=dir_node then p:=list_ptr(p);
+ if this_if=if_hbox_code then b:=(type(p)=hlist_node)
+ else if this_if=if_vbox_code then b:=(type(p)=vlist_node)
+ else if this_if=if_tbox_code then b:=(box_dir(p)=dir_tate)
+ else b:=(box_dir(p)=dir_yoko);
+ end
+@z
+
+@x [28.502] l.10138 - pTeX: ifx : Test character : KANJI character
+if (cur_cmd>active_char)or(cur_chr>255) then {not a character}
+ begin m:=relax; n:=256;
+ end
+else begin m:=cur_cmd; n:=cur_chr;
+ end;
+get_x_token_or_active_char;
+if (cur_cmd>active_char)or(cur_chr>255) then
+ begin cur_cmd:=relax; cur_chr:=256;
+ end;
+@y
+if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then
+ begin m:=cur_cmd; n:=cur_chr;
+ end
+else if (cur_cmd>active_char)or(cur_chr>255) then
+ begin m:=relax; n:=256;
+ end
+else begin m:=cur_cmd; n:=cur_chr;
+ end;
+get_x_token_or_active_char;
+if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then
+ begin cur_cmd:=cur_cmd;
+ end {dummy}
+else if (cur_cmd>active_char)or(cur_chr>255) then
+ begin cur_cmd:=relax; cur_chr:=256;
+ end;
+@z
+
+@x [29.523] l.10571 - pTeX: xord
+for j:=1 to n do append_to_name(xord[TEX_format_default[j]]);
+for j:=a to b do append_to_name(buffer[j]);
+for j:=format_default_length-format_ext_length+1 to format_default_length do
+ append_to_name(xord[TEX_format_default[j]]);
+@y
+if name_of_file then libc_free (name_of_file);
+name_of_file := xmalloc (1 + n + (b - a + 1) + format_ext_length + 1);
+for j:=1 to n do append_to_name(xord[TEX_format_default[j]]);
+for j:=a to b do append_to_name(buffer[j]);
+for j:=format_default_length-format_ext_length+1 to format_default_length do
+ append_to_name(xord[TEX_format_default[j]]);
+@z
+
+@x [29.526] l.10668 - pTeX: scan file name
+loop@+begin if (cur_cmd>other_char)or(cur_chr>255) then {not a character}
+ begin back_input; goto done;
+ end;
+ {If |cur_chr| is a space and we're not scanning a token list, check
+ whether we're at the end of the buffer. Otherwise we end up adding
+ spurious spaces to file names in some cases.}
+ if (cur_chr=" ") and (state<>token_list) and (loc>limit) then goto done;
+ if not more_name(cur_chr) then goto done;
+ get_x_token;
+ end;
+done: end_name; name_in_progress:=false;
+@y
+skip_mode:=false;
+loop@+begin
+ if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then {is kanji}
+ begin str_room(2);
+ append_char(cur_chr div 256); {kanji upper byte}
+ append_char(cur_chr mod 256); {kanji lower byte}
+ end
+ else if (cur_cmd>other_char)or(cur_chr>255) then {not a alphabet}
+ begin back_input; goto done;
+ end
+ {If |cur_chr| is a space and we're not scanning a token list, check
+ whether we're at the end of the buffer. Otherwise we end up adding
+ spurious spaces to file names in some cases.}
+ else if ((cur_chr=" ") and (state<>token_list) and (loc>limit)) or not more_name(cur_chr) then goto done;
+ get_x_token;
+ end;
+done: end_name; name_in_progress:=false;
+skip_mode:=true;
+@z
+
+@x l.10797 - pTeX
+if enctex_enabled_p then
+ begin wlog_cr; wlog(encTeX_banner); wlog(', reencoding enabled');
+ if translate_filename then
+ begin wlog_cr;
+ wlog(' (\xordcode, \xchrcode, \xprncode overridden by TCX)');
+ end;
+ end;
+@y
+@z
+
+@x [29.536] l.10834 - pTeX:
+begin
+if src_specials_p or file_line_error_style_p or parse_first_line_p
+then
+ wlog(banner_k)
+else
+ wlog(banner);
+@y
+begin
+if src_specials_p or file_line_error_style_p or parse_first_line_p
+then
+ wlog(banner_k)
+else
+ wlog(banner);
+wlog(' (');
+case proc_kanji_code of
+ jis_enc: wlog('jis');
+ euc_enc: wlog('euc');
+ sjis_enc: wlog('sjis');
+ othercases wterm('?');
+endcases;
+wlog(')');
+@z
+
+@x [30.560] l.10968 - pTeX:
+This is called BigEndian order.
+@!@^BigEndian order@>
+@y
+This is called BigEndian order.
+@!@^BigEndian order@>
+
+We use to get \TeX\ knowledge about KANJI fonts from \.{JFM} files.
+The \.{JFM} format holds more two 16-bit integers ,|id| and |nt|,
+at the top of the file.
+$$\vbox{\halign{\hfil#&$\null=\null$#\hfil\cr
+|id|&identification code of the file;\cr
+|nt|&number of words in the |char_type| table;\cr}}$$
+The identification byte, |id| equals~11 or~9. When \TeX read a font file,
+the |id| equals~11 or~9 then the font is the \.{JFM}, othercases it is
+the \.{TFM} file. The \.{TFM} holds |lf| at the same postion of |id|,
+usually it take a larger number than~9 or~11.
+The |nt| is nonngative and less than $2^{15}$.
+
+We must have |ec=0|,
+$$\hbox{|lf=7+lh+nt+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np|.}$$
+
+@d yoko_jfm_id=11 {for `yoko-kumi' fonts}
+@d tate_jfm_id=9 {for `tate-kumi' fonts}
+@z
+
+@x [30.544] l.11085 - pTeX: gk_tag
+operation looks for both |list_tag| and |ext_tag|.
+@y
+operation looks for both |list_tag| and |ext_tag|.
+
+If the \.{JFM}, the |lig_tag| is called |gk_tag|. The |gk_tag| means that
+this character has a glue/kerning program starting at position |remainder|
+in the |glue_kern| array. And a \.{JFM} not used |tag=2| and |tag=3|.
+@z
+
+@x [30.544] l.11088 - pTeX: gk_tag
+@d lig_tag=1 {character has a ligature/kerning program}
+@y
+@d lig_tag=1 {character has a ligature/kerning program}
+@d gk_tag=1 {character has a glue/kerning program}
+@z
+
+@x [30.549] l.11228 - pTeX:
+@<Glob...@>=
+@!font_info: ^fmemory_word;
+@y
+@<Glob...@>=
+@!font_info: ^memory_word; {pTeX: use halfword for |char_type| table.}
+@!font_dir: ^eight_bits;
+ {pTeX: direction of fonts, 0 is default, 1 is Yoko, 2 is Tate}
+@!font_num_ext: ^integer;
+ {pTeX: number of the |char_type| table.}
+@z
+
+@x [30.550] l.11270 - pTeX:
+@!char_base: ^integer;
+ {base addresses for |char_info|}
+@y
+@!char_base: ^integer;
+ {base addresses for |char_info|}
+@!ctype_base: ^integer;
+ {pTeX: base addresses for KANJI character type parameters}
+@z
+
+@x [30.554] l.11373 - pTeX:
+@d orig_char_info_end(#)==#].qqqq
+@d orig_char_info(#)==font_info[char_base[#]+orig_char_info_end
+@y
+@d orig_char_info_end(#)==#].qqqq
+@d orig_char_info(#)==font_info[char_base[#]+orig_char_info_end
+@#
+@d kchar_code_end(#)==#].hh.rh
+@d kchar_code(#)==font_info[ctype_base[#]+kchar_code_end
+@d kchar_type_end(#)==#].hh.lhfield
+@d kchar_type(#)==font_info[ctype_base[#]+kchar_type_end
+@z
+
+@x [30.557] l.11413 - pTeX: glue_kern_start
+@d lig_kern_start(#)==lig_kern_base[#]+rem_byte {beginning of lig/kern program}
+@y
+@d lig_kern_start(#)==lig_kern_base[#]+rem_byte {beginning of lig/kern program}
+@d glue_kern_start(#)==lig_kern_base[#]+rem_byte
+ {beginning of glue/kern program}
+@z
+
+@x [30.560] l.11457 - pTeX: jfm_flag, jfm_id, nt, cx
+var k:font_index; {index into |font_info|}
+@y
+var k:font_index; {index into |font_info|}
+@!jfm_flag:dir_default..dir_tate; {direction of the \.{JFM}}
+@!nt:halfword; {number of the |char_type| tables}
+@!cx:KANJI_code; {kanji code}
+@z
+
+@x [30.565] l.11548 - pTeX: read tfm size
+@ @<Read the {\.{TFM}} size fields@>=
+begin read_sixteen(lf);
+fget; read_sixteen(lh);
+fget; read_sixteen(bc);
+fget; read_sixteen(ec);
+if (bc>ec+1)or(ec>255) then abort;
+if bc>255 then {|bc=256| and |ec=255|}
+ begin bc:=1; ec:=0;
+ end;
+fget; read_sixteen(nw);
+fget; read_sixteen(nh);
+fget; read_sixteen(nd);
+fget; read_sixteen(ni);
+fget; read_sixteen(nl);
+fget; read_sixteen(nk);
+fget; read_sixteen(ne);
+fget; read_sixteen(np);
+if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort;
+end
+@y
+@ @<Read the {\.{TFM}} size fields@>=
+begin read_sixteen(lf);
+fget; read_sixteen(lh);
+if lf=yoko_jfm_id then
+ begin jfm_flag:=dir_yoko; nt:=lh;
+ fget; read_sixteen(lf);
+ fget; read_sixteen(lh);
+ end
+else if lf=tate_jfm_id then
+ begin jfm_flag:=dir_tate; nt:=lh;
+ fget; read_sixteen(lf);
+ fget; read_sixteen(lh);
+ end
+else begin jfm_flag:=dir_default; nt:=0;
+ end;
+fget; read_sixteen(bc);
+fget; read_sixteen(ec);
+if (bc>ec+1)or(ec>255) then abort;
+if bc>255 then {|bc=256| and |ec=255|}
+ begin bc:=1; ec:=0;
+ end;
+fget; read_sixteen(nw);
+fget; read_sixteen(nh);
+fget; read_sixteen(nd);
+fget; read_sixteen(ni);
+fget; read_sixteen(nl);
+fget; read_sixteen(nk);
+fget; read_sixteen(ne);
+fget; read_sixteen(np);
+if jfm_flag<>dir_default then
+ begin if lf<>7+lh+nt+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort
+ end
+else
+ begin if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then abort
+ end
+end
+@z
+
+@x [30.566] l.11574 - pTeX: set font_dir & font_num_ext
+@<Use size fields to allocate font information@>=
+lf:=lf-6-lh; {|lf| words should be loaded into |font_info|}
+if np<7 then lf:=lf+7-np; {at least seven parameters will appear}
+if (font_ptr=font_max)or(fmem_ptr+lf>font_mem_size) then
+ @<Apologize for not loading the font, |goto done|@>;
+f:=font_ptr+1;
+char_base[f]:=fmem_ptr-bc;
+width_base[f]:=char_base[f]+ec+1;
+height_base[f]:=width_base[f]+nw;
+depth_base[f]:=height_base[f]+nh;
+italic_base[f]:=depth_base[f]+nd;
+lig_kern_base[f]:=italic_base[f]+ni;
+kern_base[f]:=lig_kern_base[f]+nl-kern_base_offset;
+exten_base[f]:=kern_base[f]+kern_base_offset+nk;
+param_base[f]:=exten_base[f]+ne
+@y
+@<Use size fields to allocate font information@>=
+if jfm_flag<>dir_default then
+ lf:=lf-7-lh {If \.{JFM}, |lf| holds more two-16bit records than \.{TFM}}
+else
+ lf:=lf-6-lh; {|lf| words should be loaded into |font_info|}
+if np<7 then lf:=lf+7-np; {at least seven parameters will appear}
+if (font_ptr=font_max)or(fmem_ptr+lf>font_mem_size) then
+ @<Apologize for not loading the font, |goto done|@>;
+f:=font_ptr+1;
+font_dir[f]:=jfm_flag;
+font_num_ext[f]:=nt;
+ctype_base[f]:=fmem_ptr;
+char_base[f]:=ctype_base[f]+nt-bc;
+width_base[f]:=char_base[f]+ec+1;
+height_base[f]:=width_base[f]+nw;
+depth_base[f]:=height_base[f]+nh;
+italic_base[f]:=depth_base[f]+nd;
+lig_kern_base[f]:=italic_base[f]+ni;
+kern_base[f]:=lig_kern_base[f]+nl-kern_base_offset;
+exten_base[f]:=kern_base[f]+kern_base_offset+nk;
+param_base[f]:=exten_base[f]+ne;
+@z
+
+@x [30.569] l.11619 - pTeX: read char_type
+@ @<Read character data@>=
+for k:=fmem_ptr to width_base[f]-1 do
+ begin store_four_quarters(font_info[k].qqqq);
+@y
+@ @<Read character data@>=
+if jfm_flag<>dir_default then
+ for k:=ctype_base[f] to ctype_base[f]+nt-1 do
+ begin
+ fget; read_sixteen(cx); font_info[k].hh.rh:=tokanji(cx); {|kchar_code|}
+ fget; read_sixteen(cx); font_info[k].hh.lhfield:=tonum(cx); {|kchar_type|}
+ end;
+for k:=char_base[f]+bc to width_base[f]-1 do
+ begin store_four_quarters(font_info[k].qqqq);
+@z
+
+@x [30.570] l.11638 - pTeX:
+@d current_character_being_worked_on==k+bc-fmem_ptr
+@y
+@d current_character_being_worked_on==k-char_base[f]
+@z
+
+@x [30.573] l.11704 - pTeX: jfm
+ if a>128 then
+ begin if 256*c+d>=nl then abort;
+ if a=255 then if k=lig_kern_base[f] then bchar:=b;
+ end
+ else begin if b<>bchar then check_existence(b);
+ if c<128 then check_existence(d) {check ligature}
+ else if 256*(c-128)+d>=nk then abort; {check kern}
+ if a<128 then if k-lig_kern_base[f]+a+1>=nl then abort;
+ end;
+ end;
+@y
+ if a>128 then
+ begin if 256*c+d>=nl then abort;
+ if a=255 then if k=lig_kern_base[f] then bchar:=b;
+ end
+ else begin if b<>bchar then check_existence(b);
+ if c<128 then begin
+ if jfm_flag<>dir_default then begin if d>=ne then abort; end
+ else check_existence(d); {check ligature}
+ end else if 256*(c-128)+d>=nk then abort; {check kern}
+ if a<128 then if k-lig_kern_base[f]+a+1>=nl then abort;
+ end;
+ end;
+@z
+
+@x [30.574] l.11720 - pTeX: read jfm exten
+for k:=exten_base[f] to param_base[f]-1 do
+ begin store_four_quarters(font_info[k].qqqq);
+@y
+if jfm_flag<>dir_default then
+ for k:=exten_base[f] to param_base[f]-1 do
+ store_scaled(font_info[k].sc) {NOTE: this area subst for glue program}
+else for k:=exten_base[f] to param_base[f]-1 do
+ begin store_four_quarters(font_info[k].qqqq);
+@z
+
+@x [30.576] l.11765 - pTeX: adjust ctype_base
+adjust(char_base); adjust(width_base); adjust(lig_kern_base);
+@y
+adjust(ctype_base);
+adjust(char_base); adjust(width_base); adjust(lig_kern_base);
+@z
+
+@x [30.577] l.11778 - pTeX: jfont, tfont
+if cur_cmd=def_font then f:=cur_font
+@y
+if cur_cmd=def_jfont then f:=cur_jfont
+else if cur_cmd=def_tfont then f:=cur_tfont
+else if cur_cmd=def_font then f:=cur_font
+@z
+
+@x
+@p procedure char_warning(@!f:internal_font_number;@!c:eight_bits);
+begin if tracing_lost_chars>0 then
+ begin begin_diagnostic;
+ print_nl("Missing character: There is no ");
+@.Missing character@>
+ print_ASCII(c); print(" in font ");
+ slow_print(font_name[f]); print_char("!"); end_diagnostic(false);
+ end;
+end;
+@y
+@d print_lc_hex(#)==l:=#;
+ if l<10 then print_char(l+"0")@+else print_char(l-10+"a")
+
+@p procedure char_warning(@!f:internal_font_number;@!c:eight_bits);
+var @!l:0..255; {small indices or counters}
+begin if tracing_lost_chars>0 then
+ begin begin_diagnostic;
+ print_nl("Missing character: There is no ");
+@.Missing character@>
+ if (c<" ")or(c>"~") then
+ begin print_char("^"); print_char("^");
+ if c<64 then print_char(c+64)
+ else if c<128 then print_char(c-64)
+ else begin print_lc_hex(c div 16); print_lc_hex(c mod 16); end
+ end
+ else print_ASCII(c);
+ print(" in font ");
+ slow_print(font_name[f]); print_char("!"); end_diagnostic(false);
+ end;
+end;
+@z
+
+@x [31.586] l.12189 - pTeX: define set2
+@d set1=128 {typeset a character and move right}
+@y
+@d set1=128 {typeset a character and move right}
+@d set2=129 {typeset a character and move right}
+@z
+@x [31.586] l.12214 - pTeX: define dirchg
+@d post_post=249 {postamble ending}
+@y
+@d post_post=249 {postamble ending}
+@d dirchg=255 {direction change}
+@z
+
+@x [31.587] l.12246 - pTeX: ex_id_byte
+@d id_byte=2 {identifies the kind of \.{DVI} files described here}
+@y
+@d id_byte=2 {identifies the kind of \.{DVI} files described here}
+@d ex_id_byte=3 {identifies the kind of extended \.{DVI} files}
+@z
+
+@x [32.590] l.12329 - pTeX: ex_id_byte: This dvi is extended!
+@ The last part of the postamble, following the |post_post| byte that
+signifies the end of the font definitions, contains |q|, a pointer to the
+|post| command that started the postamble. An identification byte, |i|,
+comes next; this currently equals~2, as in the preamble.
+@y
+@ The last part of the postamble, following the |post_post| byte that
+signifies the end of the font definitions, contains |q|, a pointer to the
+|post| command that started the postamble. An identification byte, |i|,
+comes next; this equals~2 or~3. If not used p\TeX primitives then the
+identification byte equals~2, othercase this is set to~3.
+@z
+
+@x [32.592] l.12405 - pTeX:
+ {character and font in current |char_node|}
+@!c:quarterword;
+@!f:internal_font_number;
+@y
+ {character and font in current |char_node|}
+@!c:quarterword;
+@!f:internal_font_number;
+@!dir_used:boolean; {Is this dvi extended?}
+@z
+
+@x [32.593] l.12414 - pTeX: dir_used: Is this dvi extended?
+doing_leaders:=false; dead_cycles:=0; cur_s:=-1;
+@y
+doing_leaders:=false; dead_cycles:=0; cur_s:=-1; dir_used:=false;
+@z
+
+@x [32.617] l.12846 - pTeX: Initialize dvi_dir as shipout begins
+dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font;
+@y
+dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font;
+dvi_dir:=dir_yoko; cur_dir:=dvi_dir;
+@z
+
+@x [32.619] l.12892 - pTeX: hlist_out Kanji, disp_node
+procedure hlist_out; {output an |hlist_node| box}
+label reswitch, move_past, fin_rule, next_p, continue, found;
+var base_line: scaled; {the baseline coordinate for this box}
+@y
+procedure hlist_out; {output an |hlist_node| box}
+label reswitch, move_past, fin_rule, next_p, continue, found;
+var base_line: scaled; {the baseline coordinate for this box}
+@!disp: scaled; {displacement}
+@!save_dir:eight_bits; {what |dvi_dir| should pop to}
+@!jc:KANJI_code; {temporary register for KANJI codes}
+@!ksp_ptr:pointer; {position of |auto_spacing_glue| in the hlist}
+@z
+@x [32.619] l.12913 - pTeX: hlist_out Kanji, disp_node
+incr(cur_s);
+if cur_s>0 then dvi_out(push);
+if cur_s>max_push then max_push:=cur_s;
+save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v; left_edge:=cur_h;
+@y
+ksp_ptr:=space_ptr(this_box);
+incr(cur_s);
+if cur_s>0 then dvi_out(push);
+if cur_s>max_push then max_push:=cur_s;
+save_loc:=dvi_offset+dvi_ptr;
+synch_dir;
+base_line:=cur_v; left_edge:=cur_h; disp:=0;
+@z
+
+@x [32.622] l.12945 - pTeX: chain
+@<Output node |p| for |hlist_out|...@>=
+reswitch: if is_char_node(p) then
+ begin synch_h; synch_v;
+ repeat f:=font(p); c:=character(p);
+ if f<>dvi_f then @<Change font |dvi_f| to |f|@>;
+ if font_ec[f]>=qo(c) then if font_bc[f]<=qo(c) then
+ if char_exists(orig_char_info(f)(c)) then {N.B.: not |char_info|}
+ begin if c>=qi(128) then dvi_out(set1);
+ dvi_out(qo(c));@/
+ cur_h:=cur_h+char_width(f)(orig_char_info(f)(c));
+ goto continue;
+ end;
+ if mltex_enabled_p then
+ @<Output a substitution, |goto continue| if not possible@>;
+continue:
+ p:=link(p);
+ until not is_char_node(p);
+ dvi_h:=cur_h;
+ end
+else @<Output the non-|char_node| |p| for |hlist_out|
+ and move to the next node@>
+@y
+@<Output node |p| for |hlist_out|...@>=
+reswitch: if is_char_node(p) then
+ begin synch_h; synch_v;
+ chain:=false;
+ repeat f:=font(p); c:=character(p);
+ if f<>dvi_f then @<Change font |dvi_f| to |f|@>;
+ if font_dir[f]=dir_default then
+ begin chain:=false;
+ if font_ec[f]>=qo(c) then if font_bc[f]<=qo(c) then
+ if char_exists(orig_char_info(f)(c)) then {N.B.: not |char_info|}
+ begin if c>=qi(128) then dvi_out(set1);
+ dvi_out(qo(c));@/
+ cur_h:=cur_h+char_width(f)(orig_char_info(f)(c));
+ goto continue;
+ end;
+ if mltex_enabled_p then
+ @<Output a substitution, |goto continue| if not possible@>;
+continue:
+ end
+ else
+ begin if chain=false then chain:=true
+ else begin cur_h:=cur_h+width(ksp_ptr);
+ if g_sign<>normal then
+ begin if g_sign=stretching then
+ begin if stretch_order(ksp_ptr)=g_order then
+ cur_h:=cur_h+round(float(glue_set(this_box))*stretch(ksp_ptr));
+@^real multiplication@>
+ end
+ else
+ begin if shrink_order(ksp_ptr)=g_order then
+ cur_h:=cur_h-round(float(glue_set(this_box))*shrink(ksp_ptr));
+@^real multiplication@>
+ end;
+ end;
+ synch_h;
+ end;
+ p:=link(p);
+ if (proc_kanji_code=sjis_enc) then jc:=SJIStoJIS(KANJI(info(p)))
+ else jc:=EUCtoJIS(KANJI(info(p)));
+ dvi_out(set2); dvi_out(Hi(jc)); dvi_out(Lo(jc));
+ cur_h:=cur_h+char_width(f)(orig_char_info(f)(c)); {not |jc|}
+ end;
+ dvi_h:=cur_h; p:=link(p);
+ until not is_char_node(p);
+ chain:=false;
+ end
+else @<Output the non-|char_node| |p| for |hlist_out|
+ and move to the next node@>
+@z
+
+@x [32.623] l.12982 - pTeX: disp_node, dir_node
+@ @<Output the non-|char_node| |p| for |hlist_out|...@>=
+begin case type(p) of
+hlist_node,vlist_node:@<Output a box in an hlist@>;
+rule_node: begin rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p);
+ goto fin_rule;
+ end;
+whatsit_node: @<Output the whatsit node |p| in an hlist@>;
+@y
+@ @<Output the non-|char_node| |p| for |hlist_out|...@>=
+begin case type(p) of
+hlist_node,vlist_node,dir_node:@<Output a box in an hlist@>;
+rule_node: begin rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p);
+ goto fin_rule;
+ end;
+whatsit_node: @<Output the whatsit node |p| in an hlist@>;
+disp_node: begin disp:=disp_dimen(p); cur_v:=base_line+disp; end;
+@z
+
+@x [32.624] l.13000 - pTeX: output a box(and dir_node) with disp
+@ @<Output a box in an hlist@>=
+if list_ptr(p)=null then cur_h:=cur_h+width(p)
+else begin save_h:=dvi_h; save_v:=dvi_v;
+ cur_v:=base_line+shift_amount(p); {shift the box down}
+ temp_ptr:=p; edge:=cur_h;
+ if type(p)=vlist_node then vlist_out@+else hlist_out;
+ dvi_h:=save_h; dvi_v:=save_v;
+ cur_h:=edge+width(p); cur_v:=base_line;
+ end
+@y
+@ @<Output a box in an hlist@>=
+if list_ptr(p)=null then cur_h:=cur_h+width(p)
+else begin save_h:=dvi_h; save_v:=dvi_v; save_dir:=dvi_dir;
+ cur_v:=base_line+disp+shift_amount(p); {shift the box down}
+ temp_ptr:=p; edge:=cur_h;
+ case type(p) of
+ hlist_node:hlist_out;
+ vlist_node:vlist_out;
+ dir_node:dir_out;
+ endcases;
+ dvi_h:=save_h; dvi_v:=save_v; dvi_dir:=save_dir;
+ cur_h:=edge+width(p); cur_v:=base_line+disp; cur_dir:=save_dir;
+ end
+@z
+
+@x [32.625] l.13010 - pTeX: Output a rule with disp
+@ @<Output a rule in an hlist@>=
+if is_running(rule_ht) then rule_ht:=height(this_box);
+if is_running(rule_dp) then rule_dp:=depth(this_box);
+@y
+@ @<Output a rule in an hlist@>=
+if is_running(rule_ht) then rule_ht:=height(this_box)+disp;
+if is_running(rule_dp) then rule_dp:=depth(this_box)-disp;
+@z
+
+@x [32.629] l.13103 - pTeX: Output a leader box(and dir_node) with disp
+@<Output a leader box at |cur_h|, ...@>=
+begin cur_v:=base_line+shift_amount(leader_box); synch_v; save_v:=dvi_v;@/
+synch_h; save_h:=dvi_h; temp_ptr:=leader_box;
+outer_doing_leaders:=doing_leaders; doing_leaders:=true;
+if type(leader_box)=vlist_node then vlist_out@+else hlist_out;
+doing_leaders:=outer_doing_leaders;
+dvi_v:=save_v; dvi_h:=save_h; cur_v:=base_line;
+cur_h:=save_h+leader_wd+lx;
+end
+@y
+@<Output a leader box at |cur_h|, ...@>=
+begin cur_v:=base_line+disp+shift_amount(leader_box); synch_v; save_v:=dvi_v;@/
+synch_h; save_h:=dvi_h; save_dir:=dvi_dir; temp_ptr:=leader_box;
+outer_doing_leaders:=doing_leaders; doing_leaders:=true;
+case type(leader_box) of
+ hlist_node:hlist_out;
+ vlist_node:vlist_out;
+ dir_node:dir_out;
+endcases;
+doing_leaders:=outer_doing_leaders;
+dvi_v:=save_v; dvi_h:=save_h; dvi_dir:=save_dir;
+cur_v:=base_line; cur_h:=save_h+leader_wd+lx; cur_dir:=save_dir;
+end
+@z
+
+@x [32.630] l.13133 - pTeX: vlist_out
+begin cur_g:=0; cur_glue:=float_constant(0);
+this_box:=temp_ptr; g_order:=glue_order(this_box);
+g_sign:=glue_sign(this_box); p:=list_ptr(this_box);
+incr(cur_s);
+if cur_s>0 then dvi_out(push);
+if cur_s>max_push then max_push:=cur_s;
+save_loc:=dvi_offset+dvi_ptr; left_edge:=cur_h; cur_v:=cur_v-height(this_box);
+@y
+@!save_dir:integer; {what |dvi_dir| should pop to}
+begin cur_g:=0; cur_glue:=float_constant(0);
+this_box:=temp_ptr; g_order:=glue_order(this_box);
+g_sign:=glue_sign(this_box); p:=list_ptr(this_box);
+incr(cur_s);
+if cur_s>0 then dvi_out(push);
+if cur_s>max_push then max_push:=cur_s;
+save_loc:=dvi_offset+dvi_ptr;
+synch_dir;
+left_edge:=cur_h; cur_v:=cur_v-height(this_box);
+@z
+
+@x [32.632] l.13155 - pTeX: output non-char-node
+@ @<Output the non-|char_node| |p| for |vlist_out|@>=
+begin case type(p) of
+hlist_node,vlist_node:@<Output a box in a vlist@>;
+rule_node: begin rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p);
+ goto fin_rule;
+ end;
+@y
+@ @<Output the non-|char_node| |p| for |vlist_out|@>=
+begin case type(p) of
+hlist_node,vlist_node,dir_node: @<Output a box in a vlist@>;
+rule_node: begin rule_ht:=height(p); rule_dp:=depth(p); rule_wd:=width(p);
+ goto fin_rule;
+ end;
+@z
+
+@x [32.633] l.13175 - pTeX: Output a box in a vlist
+@<Output a box in a vlist@>=
+if list_ptr(p)=null then cur_v:=cur_v+height(p)+depth(p)
+else begin cur_v:=cur_v+height(p); synch_v;
+ save_h:=dvi_h; save_v:=dvi_v;
+ cur_h:=left_edge+shift_amount(p); {shift the box right}
+ temp_ptr:=p;
+ if type(p)=vlist_node then vlist_out@+else hlist_out;
+ dvi_h:=save_h; dvi_v:=save_v;
+ cur_v:=save_v+depth(p); cur_h:=left_edge;
+ end
+@y
+@<Output a box in a vlist@>=
+if list_ptr(p)=null then cur_v:=cur_v+height(p)+depth(p)
+else begin cur_v:=cur_v+height(p); synch_v;
+ save_h:=dvi_h; save_v:=dvi_v; save_dir:=dvi_dir;
+ cur_h:=left_edge+shift_amount(p); {shift the box right}
+ temp_ptr:=p;
+ case type(p) of
+ hlist_node:hlist_out;
+ vlist_node:vlist_out;
+ dir_node:dir_out;
+ endcases;
+ dvi_h:=save_h; dvi_v:=save_v; dvi_dir:=save_dir;
+ cur_v:=save_v+depth(p); cur_h:=left_edge; cur_dir:=save_dir;
+ end
+@z
+
+@x [32.637] l.13256 - pTeX: Output a leader in a vlist
+@<Output a leader box at |cur_v|, ...@>=
+begin cur_h:=left_edge+shift_amount(leader_box); synch_h; save_h:=dvi_h;@/
+cur_v:=cur_v+height(leader_box); synch_v; save_v:=dvi_v;
+temp_ptr:=leader_box;
+outer_doing_leaders:=doing_leaders; doing_leaders:=true;
+if type(leader_box)=vlist_node then vlist_out@+else hlist_out;
+doing_leaders:=outer_doing_leaders;
+dvi_v:=save_v; dvi_h:=save_h; cur_h:=left_edge;
+cur_v:=save_v-height(leader_box)+leader_ht+lx;
+end
+@y
+@<Output a leader box at |cur_v|, ...@>=
+begin cur_h:=left_edge+shift_amount(leader_box); synch_h; save_h:=dvi_h;@/
+cur_v:=cur_v+height(leader_box); synch_v; save_v:=dvi_v; save_dir:=dvi_dir;
+temp_ptr:=leader_box;
+outer_doing_leaders:=doing_leaders; doing_leaders:=true;
+case type(leader_box) of
+ hlist_node:hlist_out;
+ vlist_node:vlist_out;
+ dir_node:dir_out;
+endcases;
+doing_leaders:=outer_doing_leaders;
+dvi_v:=save_v; dvi_h:=save_h; dvi_dir:=save_dir;
+cur_h:=left_edge; cur_v:=save_v-height(leader_box)+leader_ht+lx;
+cur_dir:=save_dir;
+end
+@z
+
+@x [32.638] l.13270 - pTeX: ship out
+@p procedure ship_out(@!p:pointer); {output the box |p|}
+label done;
+var page_loc:integer; {location of the current |bop|}
+@y
+@p procedure ship_out(@!p:pointer); {output the box |p|}
+label done;
+var page_loc:integer; {location of the current |bop|}
+@!del_node:pointer; {used when delete the |dir_node| continued box}
+@z
+@x [32.640] l.13294 - pTeX: ship out
+@<Ship box |p| out@>;
+@y
+if type(p)=dir_node then
+ begin del_node:=p; p:=list_ptr(p);
+ delete_glue_ref(space_ptr(del_node));
+ delete_glue_ref(xspace_ptr(del_node));
+ free_node(del_node,box_node_size);
+ end;
+flush_node_list(link(p)); link(p):=null;
+if box_dir(p)<>dir_yoko then p:=new_dir_node(p,dir_yoko);
+@<Ship box |p| out@>;
+@z
+
+@x [32.641] l.13327 - pTeX: dir_node
+if type(p)=vlist_node then vlist_out@+else hlist_out;
+@y
+case type(p) of
+ hlist_node:hlist_out;
+ vlist_node:vlist_out;
+ dir_node:dir_out;
+endcases;
+@z
+
+@x [33.642] l.13394 - pTeX: postamble's id_byte
+ @<Output the font definitions for all fonts that were used@>;
+ dvi_out(post_post); dvi_four(last_bop); dvi_out(id_byte);@/
+@y
+ @<Output the font definitions for all fonts that were used@>;
+ dvi_out(post_post); dvi_four(last_bop);
+ if dir_used then dvi_out(ex_id_byte) else dvi_out(id_byte);@/
+@z
+
+@x [33.647] l.13515 - pTeX: cur_kanji_skip, cur_xkanji_skip, last_disp
+@< Glob...@>=
+@!adjust_tail:pointer; {tail of adjustment list}
+@y
+@< Glob...@>=
+@!adjust_tail:pointer; {tail of adjustment list}
+@!last_disp:scaled; {displacement at end of list}
+@!cur_kanji_skip:pointer;
+@!cur_xkanji_skip:pointer;
+@z
+
+@x [33.648] l.13518 - pTeX: cur_kanji_skip, cur_xkanji_skip
+@ @<Set init...@>=adjust_tail:=null; last_badness:=0;
+@y
+@ @<Set init...@>=adjust_tail:=null; last_badness:=0;
+ cur_kanji_skip:=zero_glue; cur_xkanji_skip:=zero_glue;
+{ koko
+ |incr(glue_ref_count(cur_kanji_skip));|
+ |incr(glue_ref_count(cur_xkanji_skip));|
+}
+@z
+
+@x [33.649] l.13522 - pTeX: hpack
+@p function hpack(@!p:pointer;@!w:scaled;@!m:small_number):pointer;
+label reswitch, common_ending, exit;
+var r:pointer; {the box node that will be returned}
+@y
+@p function hpack(@!p:pointer;@!w:scaled;@!m:small_number):pointer;
+label reswitch, common_ending, exit;
+var r:pointer; {the box node that will be returned}
+@!k:pointer; {points to a |kanji_space| specification}
+@!disp:scaled; {displacement}
+@z
+
+@x [33.649] l.13533 - pTeX: hpack
+begin last_badness:=0; r:=get_node(box_node_size); type(r):=hlist_node;
+subtype(r):=min_quarterword; shift_amount(r):=0;
+q:=r+list_offset; link(q):=p;@/
+h:=0; @<Clear dimensions to zero@>;
+while p<>null do @<Examine node |p| in the hlist, taking account of its effect
+ on the dimensions of the new box, or moving it to the adjustment list;
+ then advance |p| to the next node@>;
+if adjust_tail<>null then link(adjust_tail):=null;
+height(r):=h; depth(r):=d;@/
+@<Determine the value of |width(r)| and the appropriate glue setting;
+ then |return| or |goto common_ending|@>;
+common_ending: @<Finish issuing a diagnostic message
+ for an overfull or underfull hbox@>;
+exit: hpack:=r;
+end;
+@y
+begin last_badness:=0; r:=get_node(box_node_size); type(r):=hlist_node;
+subtype(r):=min_quarterword; shift_amount(r):=0;
+space_ptr(r):=cur_kanji_skip; xspace_ptr(r):=cur_xkanji_skip;
+add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip);
+k:=cur_kanji_skip;
+q:=r+list_offset; link(q):=p;@/
+h:=0; @<Clear dimensions to zero@>;
+disp:=0;
+while p<>null do @<Examine node |p| in the hlist, taking account of its effect
+ on the dimensions of the new box, or moving it to the adjustment list;
+ then advance |p| to the next node@>;
+if adjust_tail<>null then link(adjust_tail):=null;
+height(r):=h; depth(r):=d;@/
+@<Determine the value of |width(r)| and the appropriate glue setting;
+ then |return| or |goto common_ending|@>;
+common_ending:
+ @<Finish issuing a diagnostic message for an overfull or underfull hbox@>;
+exit: last_disp:=disp; hpack:=r;
+end;
+@z
+
+@x [33.651] l.13556 - pTeX: dir_node, disp_node, reset chain
+@ @<Examine node |p| in the hlist, taking account of its effect...@>=
+@^inner loop@>
+begin reswitch: while is_char_node(p) do
+ @<Incorporate character dimensions into the dimensions of
+ the hbox that will contain~it, then move to the next node@>;
+if p<>null then
+ begin case type(p) of
+ hlist_node,vlist_node,rule_node,unset_node:
+ @<Incorporate box dimensions into the dimensions of
+ the hbox that will contain~it@>;
+ ins_node,mark_node,adjust_node: if adjust_tail<>null then
+ @<Transfer node |p| to the adjustment list@>;
+ whatsit_node:@<Incorporate a whatsit node into an hbox@>;
+ glue_node:@<Incorporate glue into the horizontal totals@>;
+ kern_node,math_node: x:=x+width(p);
+ ligature_node: @<Make node |p| look like a |char_node|
+ and |goto reswitch|@>;
+ othercases do_nothing
+ endcases;@/
+ p:=link(p);
+ end;
+end
+@y
+@ @<Examine node |p| in the hlist, taking account of its effect...@>=
+@^inner loop@>
+begin reswitch: chain:=false;
+while is_char_node(p) do
+ @<Incorporate character dimensions into the dimensions of
+ the hbox that will contain~it, then move to the next node@>;
+if p<>null then
+ begin case type(p) of
+ hlist_node,vlist_node,dir_node,rule_node,unset_node:
+ @<Incorporate box dimensions into the dimensions of
+ the hbox that will contain~it@>;
+ ins_node,mark_node,adjust_node:
+ if adjust_tail<>null then @<Transfer node |p| to the adjustment list@>;
+ whatsit_node:@<Incorporate a whatsit node into an hbox@>;
+ disp_node:disp:=disp_dimen(p);
+ glue_node:@<Incorporate glue into the horizontal totals@>;
+ kern_node,math_node:x:=x+width(p);
+ ligature_node:@<Make node |p| look like a |char_node| and |goto reswitch|@>;
+ othercases do_nothing
+ endcases;@/
+ p:=link(p);
+ end;
+end
+@z
+
+@x [33.653] l.13589 - pTeX: displacement
+@<Incorporate box dimensions into the dimensions of the hbox...@>=
+begin x:=x+width(p);
+if type(p)>=rule_node then s:=0 @+else s:=shift_amount(p);
+if height(p)-s>h then h:=height(p)-s;
+if depth(p)+s>d then d:=depth(p)+s;
+end
+@y
+@<Incorporate box dimensions into the dimensions of the hbox...@>=
+begin x:=x+width(p);
+if type(p)>=rule_node then s:=disp @+else s:=shift_amount(p)+disp;
+if height(p)-s>h then h:=height(p)-s;
+if depth(p)+s>d then d:=depth(p)+s;
+end
+@z
+
+@x [33.654] l.13601 - pTeX: auto spacing, displacement
+@<Incorporate character dimensions into the dimensions of the hbox...@>=
+begin f:=font(p); i:=char_info(f)(character(p)); hd:=height_depth(i);
+x:=x+char_width(f)(i);@/
+s:=char_height(f)(hd);@+if s>h then h:=s;
+s:=char_depth(f)(hd);@+if s>d then d:=s;
+p:=link(p);
+end
+@y
+@<Incorporate character dimensions into the dimensions of the hbox...@>=
+begin f:=font(p); i:=char_info(f)(character(p)); hd:=height_depth(i);
+x:=x+char_width(f)(i);@/
+s:=char_height(f)(hd)-disp; if s>h then h:=s;
+s:=char_depth(f)(hd)+disp; if s>d then d:=s;
+if font_dir[f]<>dir_default then
+ begin p:=link(p);
+ if chain then
+ begin x:=x+width(k);@/
+ o:=stretch_order(k); total_stretch[o]:=total_stretch[o]+stretch(k);
+ o:=shrink_order(k); total_shrink[o]:=total_shrink[o]+shrink(k);
+ end
+ else chain:=true;
+ end
+else chain:=false;
+p:=link(p);
+end
+@z
+
+@x [33.668] l.13779 - pTeX: vpackage
+begin last_badness:=0; r:=get_node(box_node_size); type(r):=vlist_node;
+subtype(r):=min_quarterword; shift_amount(r):=0;
+@y
+begin last_badness:=0; r:=get_node(box_node_size); type(r):=vlist_node;
+subtype(r):=min_quarterword; shift_amount(r):=0;
+space_ptr(r):=zero_glue; xspace_ptr(r):=zero_glue;
+add_glue_ref(zero_glue); add_glue_ref(zero_glue);
+@z
+
+@x [33.669] l.13797 - pTeX: dir_node
+@ @<Examine node |p| in the vlist, taking account of its effect...@>=
+begin if is_char_node(p) then confusion("vpack")
+@:this can't happen vpack}{\quad vpack@>
+else case type(p) of
+ hlist_node,vlist_node,rule_node,unset_node:
+ @<Incorporate box dimensions into the dimensions of
+ the vbox that will contain~it@>;
+@y
+@ @<Examine node |p| in the vlist, taking account of its effect...@>=
+begin if is_char_node(p) then confusion("vpack")
+@:this can't happen vpack}{\quad vpack@>
+else case type(p) of
+ hlist_node,vlist_node,dir_node,rule_node,unset_node:
+ @<Incorporate box dimensions into the dimensions of
+ the vbox that will contain~it@>;
+@z
+
+@x [34.681] l.14026 - pTeX: math noad
+@d noad_size=4 {number of words in a normal noad}
+@d nucleus(#)==#+1 {the |nucleus| field of a noad}
+@d supscr(#)==#+2 {the |supscr| field of a noad}
+@d subscr(#)==#+3 {the |subscr| field of a noad}
+@y
+\yskip\hang In Japanese, |math_type(q)=math_jchar| means that |fam(q)|
+refers to one of the sixteen kanji font families, and |KANJI(q)| is the
+internal kanji code number.
+@^Japanese extentions@>
+
+@d noad_size=5 {number of words in a normal noad}
+@d nucleus(#)==#+1 {the |nucleus| field of a noad}
+@d supscr(#)==#+2 {the |supscr| field of a noad}
+@d subscr(#)==#+3 {the |subscr| field of a noad}
+@d kcode_noad(#)==#+4
+@d math_kcode(#)==info(#+4) {the |kanji character| field of a noad}
+@d kcode_noad_nucleus(#)==#+3
+@d math_kcode_nucleus(#)==info(#+3)
+ {the |kanji character| field offset from nucleus}
+@#
+@d math_jchar=5
+@d math_text_jchar=6
+@z
+
+@x [34.686] l.14129 - pTeX: new_noad
+mem[supscr(p)].hh:=empty_field;
+new_noad:=p;
+@y
+mem[supscr(p)].hh:=empty_field;
+mem[kcode_noad(p)].hh:=empty_field;
+new_noad:=p;
+@z
+
+@x [34.691] l.14236 - pTeX: print_fam_and_char
+procedure print_fam_and_char(@!p:pointer); {prints family and character}
+begin print_esc("fam"); print_int(fam(p)); print_char(" ");
+print_ASCII(qo(character(p)));
+@y
+procedure print_fam_and_char(@!p:pointer;@!t:small_number);
+ {prints family and character}
+var @!cx:KANJI_code; {temporary register for KANJI}
+begin print_esc("fam"); print_int(fam(p)); print_char(" ");
+if t=math_char then print_ASCII(qo(character(p)))
+else begin KANJI(cx):=math_kcode_nucleus(p); print_kanji(cx);
+ end;
+@z
+
+@x [34.692] l.14266 - pTeX: print_subsidiary_data
+ math_char: begin print_ln; print_current_string; print_fam_and_char(p);
+@y
+ math_char, math_jchar: begin print_ln; print_current_string;
+ print_fam_and_char(p,math_type(p));
+@z
+
+@x [34.696] l.14327 - pTeX: print_fam_and_char
+accent_noad: begin print_esc("accent"); print_fam_and_char(accent_chr(p));
+@y
+accent_noad: begin print_esc("accent");
+ print_fam_and_char(accent_chr(p),math_char);
+@z
+
+@x [35.715] l.14687 - pTeX: rebox
+ begin if type(b)=vlist_node then b:=hpack(b,natural);
+ p:=list_ptr(b);
+ if (is_char_node(p))and(link(p)=null) then
+ begin f:=font(p); v:=char_width(f)(char_info(f)(character(p)));
+ if v<>width(b) then link(p):=new_kern(width(b)-v);
+ end;
+@y
+ begin if type(b)<>hlist_node then b:=hpack(b,natural);
+ p:=list_ptr(b);
+ if is_char_node(p) then
+ if font_dir[font(p)]<>dir_default then
+ begin if link(link(p))=null then
+ begin f:=font(p); v:=char_width(f)(orig_char_info(f)(character(p)));
+ if v<>width(b) then link(link(p)):=new_kern(width(b)-v);
+ end
+ end
+ else if link(p)=null then
+ begin f:=font(p); v:=char_width(f)(orig_char_info(f)(character(p)));
+ if v<>width(b) then link(p):=new_kern(width(b)-v);
+ end;
+ delete_glue_ref(space_ptr(b)); delete_glue_ref(xspace_ptr(b));
+@z
+
+@x [36.720] l.14783 - pTeX: clean_box
+function clean_box(@!p:pointer;@!s:small_number):pointer;
+@y
+function clean_box(@!p:pointer;@!s:small_number;@!jc:halfword):pointer;
+@z
+
+@x [36.720] l.14790 - pTeX: clean_box
+math_char: begin cur_mlist:=new_noad; mem[nucleus(cur_mlist)]:=mem[p];
+ end;
+@y
+math_char: begin cur_mlist:=new_noad; mem[nucleus(cur_mlist)]:=mem[p];
+ end;
+math_jchar: begin cur_mlist:=new_noad; mem[nucleus(cur_mlist)]:=mem[p];
+ math_kcode(cur_mlist):=jc;
+ end;
+@z
+
+@x [36.720] l.14802 - pTeX: clean_box
+found: if is_char_node(q)or(q=null) then x:=hpack(q,natural)
+ else if (link(q)=null)and(type(q)<=vlist_node)and(shift_amount(q)=0) then
+ x:=q {it's already clean}
+ else x:=hpack(q,natural);
+@y
+found: if is_char_node(q)or(q=null) then x:=hpack(q,natural)
+ else if (link(q)=null)and(type(q)<=dir_node)and(shift_amount(q)=0) then
+ x:=q {it's already clean}
+ else x:=hpack(q,natural);
+@z
+
+@x [36.721] l.14814 - pTeX: skip 2nd kanji node
+if is_char_node(q) then
+ begin r:=link(q);
+@y
+if is_char_node(q) then
+ begin if font_dir[font(q)]<>dir_default then q:=link(q);
+ r:=link(q);
+@z
+
+@x [36.722] l.14833 - pTeX: fetch
+else begin if (qo(cur_c)>=font_bc[cur_f])and(qo(cur_c)<=font_ec[cur_f]) then
+ cur_i:=orig_char_info(cur_f)(cur_c)
+ else cur_i:=null_character;
+ if not(char_exists(cur_i)) then
+ begin char_warning(cur_f,qo(cur_c));
+ math_type(a):=empty;
+ end;
+ end;
+@y
+else begin if font_dir[cur_f]<>dir_default then
+ cur_c:=qi(get_jfm_pos(KANJI(math_kcode_nucleus(a)),cur_f));
+ if (qo(cur_c)>=font_bc[cur_f])and(qo(cur_c)<=font_ec[cur_f]) then
+ cur_i:=orig_char_info(cur_f)(cur_c)
+ else cur_i:=null_character;
+ if not(char_exists(cur_i)) then
+ begin char_warning(cur_f,qo(cur_c));
+ math_type(a):=empty;
+ end;
+ end;
+@z
+
+@x [36.726] l.14892 - pTeX: mlist_to_hlist
+var mlist:pointer; {beginning of the given list}
+@!penalties:boolean; {should penalty nodes be inserted?}
+@!style:small_number; {the given style}
+@y
+var mlist:pointer; {beginning of the given list}
+@!penalties:boolean; {should penalty nodes be inserted?}
+@!style:small_number; {the given style}
+@!u:pointer; {temporary register}
+@z
+
+@x [36.726] l.14913 - pTeX: mlist_to_hlist
+@<Make a second pass over the mlist, removing all noads and inserting the
+ proper spacing and penalties@>;
+end;
+@y
+@<Make a second pass over the mlist, removing all noads and inserting the
+ proper spacing and penalties@>;
+p:=new_null_box; link(p):=link(temp_head);
+adjust_hlist(p,false); link(temp_head):=link(p);
+delete_glue_ref(space_ptr(p)); delete_glue_ref(xspace_ptr(p));
+free_node(p,box_node_size);
+end;
+@z
+
+@x [36.727] l.14928 - pTeX: free box
+free_node(z,box_node_size);
+@y
+delete_glue_ref(space_ptr(z)); delete_glue_ref(xspace_ptr(z));
+free_node(z,box_node_size);
+@z
+
+@x [36.730] l.14976 - pTeX: free box: disp_node
+kern_node: begin math_kern(q,cur_mu); goto done_with_node;
+ end;
+@y
+kern_node: begin math_kern(q,cur_mu); goto done_with_node;
+ end;
+disp_node: goto done_with_node;
+@z
+
+@x [36.734] l.15046 - pTeX: make_over:clean_box
+ overbar(clean_box(nucleus(q),cramped_style(cur_style)),@|
+@y
+ overbar(clean_box(nucleus(q),cramped_style(cur_style),math_kcode(q)),@|
+@z
+
+@x [36.735] l.15055 - pTeX: make_under:clean_box
+begin x:=clean_box(nucleus(q),cur_style);
+@y
+begin x:=clean_box(nucleus(q),cur_style,math_kcode(q));
+@z
+
+@x [36.736] l.15069 - pTeX: make_under:clean_box
+if type(v)<>vlist_node then confusion("vcenter");
+@y
+if type(v)=dir_node then
+ begin if type(list_ptr(v))<>vlist_node then confusion("dircenter")
+ end
+else begin if type(v)<>vlist_node then confusion("vcenter")
+ end;
+@z
+
+@x [36.737] l.15089 - pTeX: make_radical:clean_box
+begin x:=clean_box(nucleus(q),cramped_style(cur_style));
+@y
+begin x:=clean_box(nucleus(q),cramped_style(cur_style),math_kcode(q));
+@z
+
+@x [36.738] l.15123 - pTeX: make_math_accent:clean_box
+ x:=clean_box(nucleus(q),cramped_style(cur_style)); w:=width(x); h:=height(x);
+@y
+ x:=clean_box(nucleus(q),cramped_style(cur_style),math_kcode(q));
+ w:=width(x); h:=height(x);
+@z
+
+@x [36.742] l.15186 - pTeX: make_math_accent:clean_box
+x:=clean_box(nucleus(q),cur_style); delta:=delta+height(x)-h; h:=height(x);
+@y
+x:=clean_box(nucleus(q),cur_style,math_kcode(q));
+delta:=delta+height(x)-h; h:=height(x);
+@z
+
+@x [36.744] l.15211 - pTeX: make_fraction:clean_box
+x:=clean_box(numerator(q),num_style(cur_style));
+z:=clean_box(denominator(q),denom_style(cur_style));
+@y
+x:=clean_box(numerator(q),num_style(cur_style),math_kcode(q));
+z:=clean_box(denominator(q),denom_style(cur_style),math_kcode(q));
+@z
+
+@x [36.749] l.15304 - pTeX: make_op:clean_box
+ delta:=char_italic(cur_f)(cur_i); x:=clean_box(nucleus(q),cur_style);
+@y
+ delta:=char_italic(cur_f)(cur_i);
+ x:=clean_box(nucleus(q),cur_style,math_kcode(q));
+@z
+
+@x [36.750] l.15321 - pTeX: make_op:clean_box
+begin x:=clean_box(supscr(q),sup_style(cur_style));
+y:=clean_box(nucleus(q),cur_style);
+z:=clean_box(subscr(q),sub_style(cur_style));
+@y
+begin x:=clean_box(supscr(q),sup_style(cur_style),math_kcode(q));
+y:=clean_box(nucleus(q),cur_style,math_kcode(q));
+z:=clean_box(subscr(q),sub_style(cur_style),math_kcode(q));
+@z
+
+@x [36.751] l.15342 - pTeX: free box node
+ begin free_node(x,box_node_size); list_ptr(v):=y;
+ end
+@y
+ begin
+ delete_glue_ref(space_ptr(x)); delete_glue_ref(xspace_ptr(x));
+ free_node(x,box_node_size); list_ptr(v):=y;
+ end
+@z
+
+@x [36.751] l.15350 - pTeX: free box node
+if math_type(subscr(q))=empty then free_node(z,box_node_size)
+@y
+if math_type(subscr(q))=empty then begin
+ delete_glue_ref(space_ptr(z)); delete_glue_ref(xspace_ptr(z));
+ free_node(z,box_node_size)
+end
+@z
+
+@x [36.752] l.15369 - pTeX: make_ord
+procedure make_ord(@!q:pointer);
+label restart,exit;
+var a:integer; {address of lig/kern instruction}
+@!p,@!r:pointer; {temporary registers for list manipulation}
+begin restart:@t@>@;@/
+if math_type(subscr(q))=empty then if math_type(supscr(q))=empty then
+ if math_type(nucleus(q))=math_char then
+ begin p:=link(q);
+ if p<>null then if (type(p)>=ord_noad)and(type(p)<=punct_noad) then
+ if math_type(nucleus(p))=math_char then
+ if fam(nucleus(p))=fam(nucleus(q)) then
+ begin math_type(nucleus(q)):=math_text_char;
+ fetch(nucleus(q));
+ if char_tag(cur_i)=lig_tag then
+ begin a:=lig_kern_start(cur_f)(cur_i);
+ cur_c:=character(nucleus(p));
+ cur_i:=font_info[a].qqqq;
+ if skip_byte(cur_i)>stop_flag then
+ begin a:=lig_kern_restart(cur_f)(cur_i);
+ cur_i:=font_info[a].qqqq;
+ end;
+ loop@+ begin @<If instruction |cur_i| is a kern with |cur_c|, attach
+ the kern after~|q|; or if it is a ligature with |cur_c|, combine
+ noads |q| and~|p| appropriately; then |return| if the cursor has
+ moved past a noad, or |goto restart|@>;
+ if skip_byte(cur_i)>=stop_flag then return;
+ a:=a+qo(skip_byte(cur_i))+1;
+ cur_i:=font_info[a].qqqq;
+ end;
+ end;
+ end;
+ end;
+exit:end;
+@y
+procedure make_ord(@!q:pointer);
+label restart,exit;
+var a:integer; {address of lig/kern instruction}
+@!gp,@!gq,@!p,@!r:pointer; {temporary registers for list manipulation}
+@!rr:halfword;
+begin restart:@t@>@;@/
+if (math_type(subscr(q))=empty)and(math_type(supscr(q))=empty)and@|
+((math_type(nucleus(q))=math_char)or(math_type(nucleus(q))=math_jchar)) then
+ begin p:=link(q);
+ if p<>null then if (type(p)>=ord_noad)and(type(p)<=punct_noad) then
+ if fam(nucleus(p))=fam(nucleus(q)) then
+ if math_type(nucleus(p))=math_char then
+ begin math_type(nucleus(q)):=math_text_char;
+ fetch(nucleus(q));
+ if char_tag(cur_i)=lig_tag then
+ begin a:=lig_kern_start(cur_f)(cur_i);
+ cur_c:=character(nucleus(p));
+ cur_i:=font_info[a].qqqq;
+ if skip_byte(cur_i)>stop_flag then
+ begin a:=lig_kern_restart(cur_f)(cur_i);
+ cur_i:=font_info[a].qqqq;
+ end;
+ loop@+ begin @<If instruction |cur_i| is a kern with |cur_c|, attach
+ the kern after~|q|; or if it is a ligature with |cur_c|, combine
+ noads |q| and~|p| appropriately; then |return| if the cursor has
+ moved past a noad, or |goto restart|@>;
+ if skip_byte(cur_i)>=stop_flag then return;
+ a:=a+qo(skip_byte(cur_i))+1;
+ cur_i:=font_info[a].qqqq;
+ end;
+ end;
+ end
+ else if math_type(nucleus(p))=math_jchar then
+ begin math_type(nucleus(q)):=math_text_jchar;
+ fetch(nucleus(p)); a:=cur_c; fetch(nucleus(q));
+ if char_tag(cur_i)=gk_tag then
+ begin cur_c:=a; a:=glue_kern_start(cur_f)(cur_i);
+ {|cur_c|:=qi(|get_jfm_pos|(|math_kcode|(p),
+ |fam_fnt|(fam(nucleus(p))+|cur_size|)));}
+ repeat
+ cur_i:=font_info[a].qqqq;
+ if next_char(cur_i)=cur_c then
+ if op_byte(cur_i)<kern_flag then
+ begin gp:=font_glue[cur_f]; rr:=rem_byte(cur_i);
+ if gp<>null then begin
+ while((type(gp)<>r)and(link(gp)<>null)) do begin gp:=link(gp);
+ end;
+ gq:=glue_ptr(gp);
+ end
+ else begin gp:=get_node(small_node_size);
+ font_glue[cur_f]:=gp; gq:=null;
+ end;
+ if gq=null then
+ begin type(gp):=r; gq:=new_spec(zero_glue); glue_ptr(gp):=gq;
+ a:=exten_base[cur_f]+qi((qo(rr))*3); width(gq):=font_info[a].sc;
+ stretch(gq):=font_info[a+1].sc; shrink(gq):=font_info[a+2].sc;
+ add_glue_ref(gq); link(gp):=get_node(small_node_size);
+ gp:=link(gp); glue_ptr(gp):=null; link(gp):=null;
+ end;
+ p:=new_glue(gq); link(p):=link(q); link(q):=p; return;
+ end
+ else begin p:=new_kern(char_kern(cur_f)(cur_i));
+ link(p):=link(q); link(q):=p; return;
+ end;
+ incr(a);
+ until skip_byte(cur_i)>=stop_flag;
+ end;
+ end;
+ end;
+exit:end;
+@z
+
+@x [36.754] l.15452 - pTeX:
+math_char, math_text_char:
+@y
+math_char, math_text_char, math_jchar, math_text_jchar:
+@z
+
+@x [36.755] l.15475 - pTeX: convert math text to KANJI char_node
+ begin delta:=char_italic(cur_f)(cur_i); p:=new_character(cur_f,qo(cur_c));
+ if (math_type(nucleus(q))=math_text_char)and(space(cur_f)<>0) then
+ delta:=0; {no italic correction in mid-word of text font}
+ if (math_type(subscr(q))=empty)and(delta<>0) then
+ begin link(p):=new_kern(delta); delta:=0;
+@y
+ begin delta:=char_italic(cur_f)(cur_i); p:=new_character(cur_f,qo(cur_c));
+ u:=p;
+ if font_dir[cur_f]<>dir_default then begin
+ link(u):=get_avail; u:=link(u); info(u):=math_kcode(q);
+ end;
+ if ((math_type(nucleus(q))=math_text_char)or
+ (math_type(nucleus(q))=math_text_jchar))and(space(cur_f)<>0) then
+ delta:=0; {no italic correction in mid-word of text font}
+ if (math_type(subscr(q))=empty)and(delta<>0) then begin
+ link(u):=new_kern(delta); delta:=0;
+@z
+
+@x [36.756] l.15505 - pTeX: free box
+ shift_down:=depth(z)+sub_drop(t);
+ free_node(z,box_node_size);
+ end;
+@y
+ shift_down:=depth(z)+sub_drop(t);
+ delete_glue_ref(space_ptr(z)); delete_glue_ref(xspace_ptr(z));
+ free_node(z,box_node_size);
+ end;
+@z
+
+@x [36.757] l.15526 - pTeX: make_scripts:clean_box
+begin x:=clean_box(subscr(q),sub_style(cur_style));
+@y
+begin x:=clean_box(subscr(q),sub_style(cur_style),math_kcode(q));
+@z
+
+@x [36.758] l.15538 - pTeX: make_scripts:clean_box
+begin x:=clean_box(supscr(q),sup_style(cur_style));
+@y
+begin x:=clean_box(supscr(q),sup_style(cur_style),math_kcode(q));
+@z
+
+@x [36.758] l.15555 - pTeX: make_scripts:clean_box
+begin y:=clean_box(subscr(q),sub_style(cur_style));
+@y
+begin y:=clean_box(subscr(q),sub_style(cur_style),math_kcode(q));
+@z
+
+@x [36.760] l.15616 - pTeX: disp_node
+othercases confusion("mlist3")
+@y
+disp_node: begin link(p):=q; p:=q; q:=link(q); link(p):=null; goto done;
+ end;
+othercases confusion("mlist3")
+@z
+
+@x [37.796] l.16276 - pTeX: call adjust_hlist
+ begin adjust_tail:=cur_tail; u:=hpack(link(head),natural); w:=width(u);
+@y
+ begin adjust_tail:=cur_tail; adjust_hlist(head,false);
+ delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip);
+ cur_kanji_skip:=space_ptr(head); cur_xkanji_skip:=xspace_ptr(head);
+ add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip);
+ u:=hpack(link(head),natural); w:=width(u);
+@z
+
+@x [37.799] l.16331 - pTeX: call adjust_hlist
+ begin p:=hpack(link(head),natural);
+@y
+ begin adjust_hlist(head,false);
+ delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip);
+ cur_kanji_skip:=space_ptr(head); cur_xkanji_skip:=xspace_ptr(head);
+ add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip);
+ p:=hpack(link(head),natural);
+@z
+
+@x [37.800] l.16353 - pTeX: call adjust_hlist
+var @!p,@!q,@!r,@!s,@!u,@!v: pointer; {registers for the list operations}
+@y
+var @!p,@!q,@!r,@!s,@!u,@!v,@!z: pointer; {registers for the list operations}
+@z
+
+@x [37.804] l.16456 - pTeX: call adjust_hlist
+ p:=hpack(preamble,saved(1),saved(0)); overfull_rule:=rule_save;
+@y
+ z:=new_null_box; link(z):=preamble;
+ adjust_hlist(z,false);
+ delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip);
+ cur_kanji_skip:=space_ptr(z); cur_xkanji_skip:=xspace_ptr(z);
+ add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip);
+ p:=hpack(preamble,saved(1),saved(0)); overfull_rule:=rule_save;
+ delete_glue_ref(space_ptr(z)); delete_glue_ref(xspace_ptr(z));
+ free_node(z,box_node_size);
+@z
+
+@x [37.807] l.16499 - pTeX: unset box -> BOX
+glue_order(q):=glue_order(p); glue_sign(q):=glue_sign(p);
+glue_set(q):=glue_set(p); shift_amount(q):=o;
+r:=link(list_ptr(q)); s:=link(list_ptr(p));
+@y
+box_dir(q):=abs(direction);
+glue_order(q):=glue_order(p); glue_sign(q):=glue_sign(p);
+glue_set(q):=glue_set(p); shift_amount(q):=o;
+r:=link(list_ptr(q)); s:=link(list_ptr(p));
+@z
+
+@x [37.809] l.16541 - pTeX: unset box -> BOX
+s:=link(s); link(u):=new_null_box; u:=link(u); t:=t+width(s);
+if mode=-vmode then width(u):=width(s)@+else
+ begin type(u):=vlist_node; height(u):=width(s);
+ end
+@y
+s:=link(s); link(u):=new_null_box; u:=link(u); t:=t+width(s);
+if mode=-vmode then width(u):=width(s)@+else
+ begin type(u):=vlist_node; height(u):=width(s);
+ end;
+box_dir(u):=abs(direction)
+@z
+
+@x [37.810] l.16564 - pTeX: unset box -> BOX
+width(r):=w; type(r):=hlist_node;
+end
+@y
+width(r):=w; type(r):=hlist_node;
+box_dir(r):=abs(direction);
+end
+@z
+
+@x [37.811] l.16585 - pTeX: unset box -> BOX
+height(r):=w; type(r):=vlist_node;
+@y
+height(r):=w; type(r):=vlist_node;
+box_dir(r):=abs(direction);
+@z
+
+@x [38.816] l.16687 - pTeX: init chain, delete disp_node
+link(temp_head):=link(head);
+if is_char_node(tail) then tail_append(new_penalty(inf_penalty))
+else if type(tail)<>glue_node then tail_append(new_penalty(inf_penalty))
+@y
+first_use:=true; chain:=false;
+delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip);
+cur_kanji_skip:=space_ptr(head); cur_xkanji_skip:=xspace_ptr(head);
+add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip);
+link(temp_head):=link(head);
+if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin free_node(tail,small_node_size); tail:=prev_node; link(tail):=null
+ end;
+if is_char_node(tail) then tail_append(new_penalty(inf_penalty))
+else if type(tail)<>glue_node then tail_append(new_penalty(inf_penalty))
+@z
+
+@x [38.828] l.16946 - pTeX: Global variable |chain|
+@!cur_p:pointer; {the current breakpoint under consideration}
+@y
+@!cur_p:pointer; {the current breakpoint under consideration}
+@!chain:boolean; {chain current line and next line?}
+@z
+
+% chain ξ硢 cur_kanji_skip Τǡ
+% break_width ƤʤФʤʤ
+@x [38.837] l.17125 - pTeX: add kanji_skip width, ita_kern
+begin no_break_yet:=false; do_all_six(set_break_width_to_background);
+s:=cur_p;
+if break_type>unhyphenated then if cur_p<>null then
+ @<Compute the discretionary |break_width| values@>;
+while s<>null do
+ begin if is_char_node(s) then goto done;
+@y
+begin no_break_yet:=false; do_all_six(set_break_width_to_background);
+s:=cur_p;
+if break_type>unhyphenated then if cur_p<>null then
+ @<Compute the discretionary |break_width| values@>;
+while s<>null do
+ begin if is_char_node(s) then
+ begin if chain then
+ begin break_width[1]:=break_width[1]-width(cur_kanji_skip);
+ break_width[2+stretch_order(cur_kanji_skip)]:=
+ break_width[2+stretch_order(cur_kanji_skip)]-stretch(cur_kanji_skip);
+ break_width[6]:=break_width[6]-shrink(cur_kanji_skip);
+ end;
+ goto done end;
+@z
+
+@x [38.837] l.17135 - pTeX:
+ kern_node: if subtype(s)<>explicit then goto done
+ else break_width[1]:=break_width[1]-width(s);
+@y
+ kern_node: if (subtype(s)<>explicit)and(subtype(s)<>ita_kern) then
+ goto done
+ else break_width[1]:=break_width[1]-width(s);
+@z
+
+@x [38.841] l.17186 - pTeX:
+if is_char_node(v) then
+ begin f:=font(v);
+ break_width[1]:=break_width[1]-char_width(f)(char_info(f)(character(v)));
+ end
+else case type(v) of
+ ligature_node: begin f:=font(lig_char(v));@/
+ break_width[1]:=@|break_width[1]-
+ char_width(f)(char_info(f)(character(lig_char(v))));
+ end;
+ hlist_node,vlist_node,rule_node,kern_node:
+ break_width[1]:=break_width[1]-width(v);
+ othercases confusion("disc1")
+@:this can't happen disc1}{\quad disc1@>
+ endcases
+@y
+if is_char_node(v) then
+ begin f:=font(v);
+ break_width[1]:=break_width[1]-char_width(f)(orig_char_info(f)(character(v)));
+ if font_dir[f]<>dir_default then v:=link(v);
+ end
+else case type(v) of
+ ligature_node: begin f:=font(lig_char(v));@/
+ break_width[1]:=@|break_width[1]-
+ char_width(f)(orig_char_info(f)(character(lig_char(v))));
+ end;
+ hlist_node,vlist_node,dir_node,rule_node,kern_node:
+ break_width[1]:=break_width[1]-width(v);
+ disp_node: do_nothing;
+ othercases confusion("disc1")
+@:this can't happen disc1}{\quad disc1@>
+ endcases
+@z
+
+@x [38.842] l.17204 - pTeX:
+ break_width[1]:=@|break_width[1]+char_width(f)(char_info(f)(character(s)));
+ end
+else case type(s) of
+ ligature_node: begin f:=font(lig_char(s));
+ break_width[1]:=break_width[1]+
+ char_width(f)(char_info(f)(character(lig_char(s))));
+ end;
+ hlist_node,vlist_node,rule_node,kern_node:
+ break_width[1]:=break_width[1]+width(s);
+@y
+ break_width[1]:=@|break_width[1]+char_width(f)(orig_char_info(f)(character(s)));
+ if font_dir[f]<>dir_default then s:=link(s);
+ end
+else case type(s) of
+ ligature_node: begin f:=font(lig_char(s));
+ break_width[1]:=break_width[1]+
+ char_width(f)(orig_char_info(f)(character(lig_char(s))));
+ end;
+ hlist_node,vlist_node,dir_node,rule_node,kern_node:
+ break_width[1]:=break_width[1]+width(s);
+ disp_node: do_nothing;
+@z
+
+@x [38.856] l.17467 - pTeX: print symbolic feasibe node
+if cur_p=null then print_esc("par")
+else if type(cur_p)<>glue_node then
+ begin if type(cur_p)=penalty_node then print_esc("penalty")
+ else if type(cur_p)=disc_node then print_esc("discretionary")
+@y
+if cur_p=null then print_esc("par")
+else if (type(cur_p)<>glue_node)and(not is_char_node(cur_p)) then
+ begin if type(cur_p)=penalty_node then print_esc("penalty")
+ else if type(cur_p)=disc_node then print_esc("discretionary")
+@z
+
+@x [39.862] l.17584 - pTeX: local valiable for line breaking
+@!auto_breaking:boolean; {is node |cur_p| outside a formula?}
+@!prev_p:pointer; {helps to determine when glue nodes are breakpoints}
+@!q,@!r,@!s,@!prev_s:pointer; {miscellaneous nodes of temporary interest}
+@!f:internal_font_number; {used when calculating character widths}
+@y
+@!auto_breaking:boolean; {is node |cur_p| outside a formula?}
+@!prev_p:pointer; {helps to determine when glue nodes are breakpoints}
+@!q,@!r,@!s,@!prev_s:pointer; {miscellaneous nodes of temporary interest}
+@!f,@!post_f:internal_font_number; {used when calculating character widths}
+@!post_p:pointer;
+@!cc:ASCII_code;
+@!first_use:boolean;
+@z
+
+@x [39.866] l.17677 - pTeX: dir_node, disp_node, ita_kern
+case type(cur_p) of
+hlist_node,vlist_node,rule_node: act_width:=act_width+width(cur_p);
+@y
+case type(cur_p) of
+hlist_node,vlist_node,dir_node,rule_node: act_width:=act_width+width(cur_p);
+@z
+
+@x [39.866] l.17685 - pTeX:
+kern_node: if subtype(cur_p)=explicit then kern_break
+ else act_width:=act_width+width(cur_p);
+@y
+kern_node: if (subtype(cur_p)=explicit)or(subtype(cur_p)=ita_kern) then
+ kern_break
+ else act_width:=act_width+width(cur_p);
+@z
+
+@x [39.866] l.17694 - pTeX:
+mark_node,ins_node,adjust_node: do_nothing;
+@y
+disp_node,mark_node,ins_node,adjust_node: do_nothing;
+@z
+
+% ǡϢ³ɴ֤ cur_kanji_skip 롣
+% penalty_node box_node ˤϡadjust_hlist 롼ˤäƴ˼ºݤ
+% glue_node ƤΤȲꤷƤ롣
+% chain ϡtry_break cur_kanji_skip Υ㥹ȤΤ˻Ȥ롣
+@x [39.867] l.17708 - pTeX: add kanji char width
+@<Advance \(c)|cur_p| to the node following the present string...@>=
+begin prev_p:=cur_p;
+repeat f:=font(cur_p);
+act_width:=act_width+char_width(f)(char_info(f)(character(cur_p)));
+cur_p:=link(cur_p);
+until not is_char_node(cur_p);
+end
+@y
+@<Advance \(c)|cur_p| to the node following the present string...@>=
+begin chain:=false;
+if is_char_node(cur_p) then
+ if font_dir[font(cur_p)]<>dir_default then
+ begin case type(prev_p) of
+ hlist_node,vlist_node,dir_node,rule_node,
+ ligature_node,disc_node,math_node: begin
+ cur_p:=prev_p; try_break(0,unhyphenated); cur_p:=link(cur_p);
+ end;
+ othercases do_nothing;
+ endcases;
+ end;
+ prev_p:=cur_p; post_p:=cur_p; post_f:=font(post_p);
+ repeat f:=post_f; cc:=character(cur_p);
+ act_width:=act_width+char_width(f)(orig_char_info(f)(cc));
+ post_p:=link(cur_p);
+ if font_dir[f]<>dir_default then
+ begin prev_p:=cur_p; cur_p:=post_p; post_p:=link(post_p);
+ if is_char_node(post_p) then
+ begin post_f:=font(post_p);
+ if font_dir[post_f]<>dir_default then chain:=true else chain:=false;
+ try_break(0,unhyphenated);
+ end
+ else
+ begin chain:=false;
+ case type(post_p) of
+ hlist_node,vlist_node,dir_node,rule_node,ligature_node,
+ disc_node,math_node: try_break(0,unhyphenated);
+ othercases do_nothing;
+ endcases;
+ end;
+ if chain then
+ begin if first_use then
+ begin check_shrinkage(cur_kanji_skip);
+ first_use:=false;
+ end;
+ act_width:=act_width+width(cur_kanji_skip);@|
+ active_width[2+stretch_order(cur_kanji_skip)]:=@|
+ active_width[2+stretch_order(cur_kanji_skip)]
+ +stretch(cur_kanji_skip);@/
+ active_width[6]:=active_width[6]+shrink(cur_kanji_skip);
+ end;
+ prev_p:=cur_p;
+ end
+ else if is_char_node(post_p) then
+ begin post_f:=font(post_p); chain:=false;
+ if font_dir[post_f]<>dir_default then try_break(0,unhyphenated);
+ end;
+ cur_p:=post_p;
+ until not is_char_node(cur_p);
+chain:=false;
+end
+@z
+
+@x [39.868] l.17723 - pTeX: ita_kern
+ else if (type(prev_p)=kern_node)and(subtype(prev_p)<>explicit) then
+ try_break(0,unhyphenated);
+@y
+ else if (type(prev_p)=kern_node) then
+ if (subtype(prev_p)<>explicit)and(subtype(prev_p)<>ita_kern) then
+ try_break(0,unhyphenated);
+@z
+
+@x [39.871] l.17756 - pTeX: add kanji char width, dir_node width, disp_node
+ disc_width:=disc_width+char_width(f)(char_info(f)(character(s)));
+ end
+else case type(s) of
+ ligature_node: begin f:=font(lig_char(s));
+ disc_width:=disc_width+
+ char_width(f)(char_info(f)(character(lig_char(s))));
+ end;
+ hlist_node,vlist_node,rule_node,kern_node:
+ disc_width:=disc_width+width(s);
+@y
+ disc_width:=disc_width+char_width(f)(orig_char_info(f)(character(s)));
+ if font_dir[f]<>dir_default then s:=link(s)
+ end
+else case type(s) of
+ ligature_node: begin f:=font(lig_char(s));
+ disc_width:=disc_width+
+ char_width(f)(orig_char_info(f)(character(lig_char(s))));
+ end;
+ hlist_node,vlist_node,dir_node,rule_node,kern_node:
+ disc_width:=disc_width+width(s);
+ disp_node: do_nothing;
+@z
+
+@x [39.872] l.17772 - pTeX: add kanji char width, dir_node width, disp_node
+ act_width:=act_width+char_width(f)(char_info(f)(character(s)));
+ end
+else case type(s) of
+ ligature_node: begin f:=font(lig_char(s));
+ act_width:=act_width+
+ char_width(f)(char_info(f)(character(lig_char(s))));
+ end;
+ hlist_node,vlist_node,rule_node,kern_node:
+ act_width:=act_width+width(s);
+@y
+ act_width:=act_width+char_width(f)(orig_char_info(f)(character(s)));
+ if font_dir[f]<>dir_default then s:=link(s)
+ end
+else case type(s) of
+ ligature_node: begin f:=font(lig_char(s));
+ act_width:=act_width+
+ char_width(f)(orig_char_info(f)(character(lig_char(s))));
+ end;
+ hlist_node,vlist_node,dir_node,rule_node,kern_node:
+ act_width:=act_width+width(s);
+ disp_node: do_nothing;
+@z
+
+@x [39.877] l.17879 - pTeX: last_disp
+cur_line:=prev_graf+1;
+@y
+cur_line:=prev_graf+1; last_disp:=0;
+@z
+
+@x [39.879] l.17919 - pTeX: ita_kern
+ if type(q)=kern_node then if subtype(q)<>explicit then goto done1;
+@y
+ if type(q)=kern_node then
+ if (subtype(q)<>explicit)and(subtype(q)<>ita_kern) then goto done1;
+@z
+
+@x [39.881] l.17950 - pTeX: |q| may be a |char_node|
+if q<>null then {|q| cannot be a |char_node|}
+ if type(q)=glue_node then
+ begin delete_glue_ref(glue_ptr(q));
+ glue_ptr(q):=right_skip;
+ subtype(q):=right_skip_code+1; add_glue_ref(right_skip);
+ goto done;
+ end
+ else begin if type(q)=disc_node then
+ @<Change discretionary to compulsory and set
+ |disc_break:=true|@>
+ else if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0;
+ end
+@y
+if q<>null then {|q| may be a |char_node|}
+ begin if not is_char_node(q) then
+ if type(q)=glue_node then
+ begin delete_glue_ref(glue_ptr(q));
+ glue_ptr(q):=right_skip;
+ subtype(q):=right_skip_code+1; add_glue_ref(right_skip);
+ goto done;
+ end
+ else begin if type(q)=disc_node then
+ @<Change discretionary to compulsory and set
+ |disc_break:=true|@>
+ else if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0;
+ end
+ end
+@z
+
+@x [39.887] l.18014 - pTeX: disp_node at begin-of-line
+r:=link(q); link(q):=null; q:=link(temp_head); link(temp_head):=r;
+@y
+r:=link(q); link(q):=null; q:=link(temp_head); link(temp_head):=r;
+if last_disp<>0 then begin
+ r:=get_node(small_node_size);
+ type(r):=disp_node; disp_dimen(r):=last_disp;
+ link(r):=q; q:=r;
+ end;
+@z
+
+@x [40.896] l.18177 - pTeX: hyphenation
+loop@+ begin if is_char_node(s) then
+ begin c:=qo(character(s)); hf:=font(s);
+ end
+@y
+loop@+ begin if is_char_node(s) then
+ begin hf:=font(s);
+ if font_dir[hf]<>dir_default then
+ begin prev_s:=s; s:=link(prev_s); c:=info(s); goto continue;
+ end else c:=qo(character(s));
+ end
+ else if type(s)=disp_node then goto continue
+ else if (type(s)=penalty_node)and(not subtype(s)=normal) then goto continue
+@z
+
+@x [40.899] l.18248 - pTeX: disp_node
+ whatsit_node,glue_node,penalty_node,ins_node,adjust_node,mark_node:
+ goto done4;
+@y
+ disp_node: do_nothing;
+ whatsit_node,glue_node,penalty_node,ins_node,adjust_node,mark_node:
+ goto done4;
+@z
+
+@x [44.968] l.19535 - pTeX: dir_node
+ hlist_node,vlist_node,rule_node:@<Insert glue for |split_top_skip|
+ and set~|p:=null|@>;
+@y
+ hlist_node,vlist_node,dir_node,rule_node:
+ @<Insert glue for |split_top_skip| and set~|p:=null|@>;
+@z
+
+@x [44.973] l.19626 - pTeX: dir_node
+hlist_node,vlist_node,rule_node: begin@t@>@;@/
+ cur_height:=cur_height+prev_dp+height(p); prev_dp:=depth(p);
+@y
+hlist_node,vlist_node,dir_node,rule_node: begin@t@>@;@/
+ cur_height:=cur_height+prev_dp+height(p); prev_dp:=depth(p);
+@z
+
+@x [44.977] l.19710 - pTeX: free box node
+var v:pointer; {the box to be split}
+@y
+var v:pointer; {the box to be split}
+w:pointer; {|dir_node|}
+@z
+
+@x [44.977] l.19722 - pTeX: free box node
+q:=prune_page_top(q); p:=list_ptr(v); free_node(v,box_node_size);
+if q=null then box(n):=null {the |eq_level| of the box stays the same}
+else box(n):=vpack(q,natural);
+vsplit:=vpackage(p,h,exactly,split_max_depth);
+@y
+q:=prune_page_top(q); p:=list_ptr(v);
+if q=null then box(n):=null {the |eq_level| of the box stays the same}
+else begin
+ box(n):=vpack(q,natural); box_dir(box(n)):=box_dir(v);
+ end;
+q:=vpackage(p,h,exactly,split_max_depth);
+box_dir(q):=box_dir(v);
+delete_glue_ref(space_ptr(v)); delete_glue_ref(xspace_ptr(v));
+free_node(v,box_node_size);
+vsplit:=q;
+@z
+
+@x [44.978] l.19732 - pTeX: bad box for vsplit
+if type(v)<>vlist_node then
+ begin print_err(""); print_esc("vsplit"); print(" needs a ");
+ print_esc("vbox");
+@:vsplit_}{\.{\\vsplit needs a \\vbox}@>
+ help2("The box you are trying to split is an \hbox.")@/
+ ("I can't split such a box, so I'll leave it alone.");
+ error; vsplit:=null; return;
+ end
+@y
+if type(v)=dir_node then begin
+ w:=v; v:=list_ptr(v);
+ delete_glue_ref(space_ptr(w));
+ delete_glue_ref(xspace_ptr(w));
+ free_node(w,box_node_size);
+end;
+if type(v)<>vlist_node then begin
+ print_err(""); print_esc("vsplit"); print(" needs a ");
+ print_esc("vbox");
+@:vsplit_}{\.{\\vsplit needs a \\vbox}@>
+ help2("The box you are trying to split is an \hbox.")@/
+ ("I can't split such a box, so I'll leave it alone.");
+ error; vsplit:=null; return;
+end;
+flush_node_list(link(v)); link(v):=null
+@z
+
+@x [45.993] l.20053 - pTeX: ensure_vbox
+begin p:=box(n);
+if p<>null then if type(p)=hlist_node then
+ begin print_err("Insertions can only be added to a vbox");
+@y
+begin p:=box(n);
+if p<>null then if (type(p)=dir_node) then
+ begin p:=list_ptr(p);
+ delete_glue_ref(space_ptr(box(n)));
+ delete_glue_ref(xspace_ptr(box(n)));
+ free_node(box(n),box_node_size);
+ box(n):=p
+end;
+if p<>null then if type(p)<>vlist_node then begin
+ print_err("Insertions can only be added to a vbox");
+@z
+
+@x [45.1000] l.20146 - pTeX: dir_node
+hlist_node,vlist_node,rule_node: if page_contents<box_there then
+ @<Initialize the current page, insert the \.{\\topskip} glue
+ ahead of |p|, and |goto continue|@>
+@y
+hlist_node,vlist_node,dir_node,rule_node: if page_contents<box_there then
+ @<Initialize the current page, insert the \.{\\topskip} glue
+ ahead of |p|, and |goto continue|@>
+@z
+
+@x [45.1009] l.20291 - pTeX: ins_dir
+if box(n)=null then height(r):=0
+else height(r):=height(box(n))+depth(box(n));
+@y
+if box(n)=null then height(r):=0
+else
+ begin if ins_dir(p)<>box_dir(box(n)) then
+ begin print_err("Insertions can only be added to a same direction vbox");
+@.Insertions can only...@>
+ help3("Tut tut: You're trying to \insert into a")@/
+ ("\box register that now have a different direction.")@/
+ ("Proceed, and I'll discard its present contents.");
+ box_error(n)
+ end;
+ height(r):=height(box(n))+depth(box(n));
+ end;
+@z
+
+@x [45.1017] l.20470 - pTeX: page dir
+box(255):=vpackage(link(page_head),best_size,exactly,page_max_depth);
+@y
+box(255):=vpackage(link(page_head),best_size,exactly,page_max_depth);
+box_dir(box(255)):=page_dir;
+@z
+
+@x [45.1020] l.20513 - pTeX: check ins_dir
+if best_ins_ptr(r)=null then wait:=true
+else begin wait:=false; s:=last_ins_ptr(r); link(s):=ins_ptr(p);
+@y
+if best_ins_ptr(r)=null then wait:=true
+else begin wait:=false;
+ n:=qo(subtype(p));
+ case box_dir(box(n)) of
+ any_dir:
+ if ins_dir(p)<>box_dir(box(n)) then begin
+ print_err("Insertions can only be added to a same direction vbox");
+@.Insertions can only...@>
+ help3("Tut tut: You're trying to \insert into a")@/
+ ("\box register that now have a different direction.")@/
+ ("Proceed, and I'll discard its present contents.");
+ box_error(n);
+ box(n):=new_null_box; last_ins_ptr(r):=box(n)+list_offset;
+ end;
+ othercases
+ box_dir(box(n)):=ins_dir(p);
+ endcases;
+ s:=last_ins_ptr(r); link(s):=ins_ptr(p);
+@z
+
+@x [45.1021] l.20537 - pTeX: free box node, ins_dir
+ free_node(temp_ptr,box_node_size); wait:=true;
+@y
+ delete_glue_ref(space_ptr(temp_ptr));
+ delete_glue_ref(xspace_ptr(temp_ptr));
+ free_node(temp_ptr,box_node_size); wait:=true;
+@z
+
+@x [45.1021] l.20543 - pTeX: free box node, ins_dir
+free_node(box(n),box_node_size);
+box(n):=vpack(temp_ptr,natural);
+@y
+delete_glue_ref(space_ptr(box(n)));
+delete_glue_ref(xspace_ptr(box(n)));
+flush_node_list(link(box(n)));
+free_node(box(n),box_node_size);
+box(n):=vpack(temp_ptr,natural); box_dir(box(n)):=ins_dir(p);
+@z
+
+@x [46.1030] l.20687 - pTeX:main_control
+@d append_normal_space=120 {go here to append a normal space between words}
+@y
+@d append_normal_space=120 {go here to append a normal space between words}
+@d main_loop_j=130 {like |main_loop|, but |cur_chr| holds a KANJI code}
+@d skip_loop=141
+@d again_2=150
+@z
+
+@x [46.1030] l.20691 - pTeX: main_control
+procedure main_control; {governs \TeX's activities}
+label big_switch,reswitch,main_loop,main_loop_wrapup,
+@y
+procedure main_control; {governs \TeX's activities}
+label big_switch,reswitch,main_loop,main_loop_wrapup,
+ main_loop_j,main_loop_j+1,main_loop_j+3,skip_loop,again_2,
+@z
+
+@x [46.1030] l.20697 - pTeX: main_control
+var@!t:integer; {general-purpose temporary variable}
+@y
+var@!t:integer; {general-purpose temporary variable}
+@!cx:KANJI_code; {kanji character}
+@!kp:pointer; {kinsoku penalty register}
+@!gp,gq:pointer; {temporary registers for list manipulation}
+@!disp:scaled; {displacement register}
+@!ins_kp:boolean; {whether insert kinsoku penalty}
+@z
+
+@x [46.1030] l.20701 - pTeX: main_control
+case abs(mode)+cur_cmd of
+hmode+letter,hmode+other_char,hmode+char_given: goto main_loop;
+hmode+char_num: begin scan_char_num; cur_chr:=cur_val; goto main_loop;@+end;
+hmode+no_boundary: begin get_x_token;
+ if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given)or
+ (cur_cmd=char_num) then cancel_boundary:=true;
+ goto reswitch;
+ end;
+@y
+ins_kp:=false;
+case abs(mode)+cur_cmd of
+hmode+letter,hmode+other_char: goto main_loop;
+hmode+kanji,hmode+kana,hmode+other_kchar: goto main_loop_j;
+hmode+char_given:
+ if (cur_chr>=0)and(cur_chr<256) then goto main_loop else goto main_loop_j;
+hmode+char_num: begin scan_char_num; cur_chr:=cur_val;
+ if (cur_chr>=0)and(cur_chr<256) then goto main_loop else goto main_loop_j;
+ end;
+hmode+no_boundary: begin get_x_token;
+ if (cur_cmd=letter)or(cur_cmd=other_char)or
+ (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar)or
+ (cur_cmd=char_given)or(cur_cmd=char_num) then cancel_boundary:=true;
+ goto reswitch;
+ end;
+@z
+
+@x [46.1030] l.20715 - pTeX: main_control
+main_loop:@<Append character |cur_chr| and the following characters (if~any)
+ to the current hlist in the current font; |goto reswitch| when
+ a non-character has been fetched@>;
+@y
+main_loop_j:@<Append KANJI-character |cur_chr|
+ to the current hlist in the current font; |goto reswitch| when
+ a non-character has been fetched@>;
+main_loop:@<Append character |cur_chr| and the following characters (if~any)
+ to the current hlist in the current font; |goto reswitch| when
+ a non-character has been fetched@>;
+@z
+
+@x [46.1034] l.20788 - pTeX: disp_node
+@<Append character |cur_chr|...@>=
+if ((head=tail) and (mode>0)) then begin
+ if (insert_src_special_auto) then append_src_special;
+end;
+adjust_space_factor;@/
+@y
+@<Append character |cur_chr|...@>=
+if ((head=tail) and (mode>0)) then begin
+ if (insert_src_special_auto) then append_src_special;
+end;
+adjust_space_factor;@/
+if direction=dir_tate then disp:=t_baseline_shift else disp:=y_baseline_shift;
+@<Append |disp_node| at begin of displace area@>;
+@z
+
+%@x [46.1035] l.20850 - pTeX: kinsoku penalty
+%@<Make a ligature node, if |ligature_present|;...@>=
+%wrapup(rt_hit)
+%@y
+%@<Make a ligature node, if |ligature_present|;...@>=
+%wrapup(rt_hit);
+%if ins_kp=true then
+% begin cx:=KANJI(cur_l); @<Insert kinsoku penalty@>;
+% ins_kp:=false;
+% end
+%@z
+
+@x [46.1036] l.20854 - pTeX: disp_node
+if lig_stack=null then goto reswitch;
+@y
+if lig_stack=null then
+ begin @<Append |disp_node| at end of displace area@>;
+ goto reswitch;
+ end;
+@z
+
+@x [46.1037] l.20886 - pTeX: Look ahead for another character
+@<Look ahead for another character...@>=
+get_next; {set only |cur_cmd| and |cur_chr|, for speed}
+if cur_cmd=letter then goto main_loop_lookahead+1;
+if cur_cmd=other_char then goto main_loop_lookahead+1;
+if cur_cmd=char_given then goto main_loop_lookahead+1;
+x_token; {now expand and set |cur_cmd|, |cur_chr|, |cur_tok|}
+if cur_cmd=letter then goto main_loop_lookahead+1;
+if cur_cmd=other_char then goto main_loop_lookahead+1;
+if cur_cmd=char_given then goto main_loop_lookahead+1;
+if cur_cmd=char_num then
+ begin scan_char_num; cur_chr:=cur_val; goto main_loop_lookahead+1;
+ end;
+if cur_cmd=no_boundary then bchar:=non_char;
+cur_r:=bchar; lig_stack:=null; goto main_lig_loop;
+main_loop_lookahead+1: adjust_space_factor;
+fast_get_avail(lig_stack); font(lig_stack):=main_f;
+cur_r:=qi(cur_chr); character(lig_stack):=cur_r;
+if cur_r=false_bchar then cur_r:=non_char {this prevents spurious ligatures}
+@y
+@<Look ahead for another character...@>=
+get_next; {set only |cur_cmd| and |cur_chr|, for speed}
+if cur_cmd=letter then goto main_loop_lookahead+1;
+if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then
+ @<goto |main_lig_loop|@>;
+if cur_cmd=other_char then goto main_loop_lookahead+1;
+if cur_cmd=char_given then
+ begin if (cur_chr>=0)and(cur_chr<256) then goto main_loop_lookahead+1
+ else @<goto |main_lig_loop|@>;
+ end;
+x_token; {now expand and set |cur_cmd|, |cur_chr|, |cur_tok|}
+if cur_cmd=letter then goto main_loop_lookahead+1;
+if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then
+ @<goto |main_lig_loop|@>;
+if cur_cmd=other_char then goto main_loop_lookahead+1;
+if cur_cmd=char_given then
+ begin if (cur_chr>=0)and(cur_chr<256) then goto main_loop_lookahead+1
+ else @<goto |main_lig_loop|@>;
+ end;
+if cur_cmd=char_num then
+ begin scan_char_num; cur_chr:=cur_val;
+ if (cur_chr>=0)and(cur_chr<256) then goto main_loop_lookahead+1
+ else @<goto |main_lig_loop|@>;
+ end;
+if cur_cmd=inhibit_glue then
+ begin inhibit_glue_flag:=true; goto main_loop_lookahead;
+ end;
+if cur_cmd=no_boundary then bchar:=non_char;
+cur_r:=bchar; lig_stack:=null; goto main_lig_loop;
+main_loop_lookahead+1: adjust_space_factor;
+fast_get_avail(lig_stack); font(lig_stack):=main_f;
+cur_r:=qi(cur_chr); character(lig_stack):=cur_r;
+if cur_r=false_bchar then cur_r:=non_char {this prevents spurious ligatures}
+
+@ @<goto |main_lig_loop|@>=
+begin bchar:=non_char; cur_r:=bchar; lig_stack:=null;
+if ligature_present then pack_lig(rt_hit);
+if ins_kp=true then
+ begin cx:=cur_l; @<Insert kinsoku penalty@>;
+ end;
+ins_kp:=false;
+goto main_loop_j;
+end
+@z
+
+@x [46.1041] l.20999 - pTeX: disp_node
+link(tail):=temp_ptr; tail:=temp_ptr;
+@y
+if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin link(prev_node):=temp_ptr; link(temp_ptr):=tail; prev_node:=temp_ptr;
+ end
+else begin link(tail):=temp_ptr; tail:=temp_ptr;
+ end;
+@z
+
+@x [46.1043] l.21029 - pTeX: disp_node
+link(tail):=q; tail:=q;
+@y
+if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin link(prev_node):=q; link(q):=tail; prev_node:=q;
+ end
+else begin link(tail):=q; tail:=q;
+ end
+@z
+
+@x [47.1061] l.21277 - pTeX: append kern
+begin s:=cur_chr; scan_dimen(s=mu_glue,false,false);
+tail_append(new_kern(cur_val)); subtype(tail):=s;
+end;
+@y
+begin s:=cur_chr; scan_dimen(s=mu_glue,false,false);
+if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin prev_append(new_kern(cur_val)); subtype(prev_node):=s;
+ end
+else
+ begin tail_append(new_kern(cur_val)); subtype(tail):=s;
+ end;
+end;
+@z
+
+@x [47.1068] l.21377 - pTeX:
+var p,@!q:pointer; {for short-term use}
+@y
+var p,@!q:pointer; {for short-term use}
+@!r:pointer; {temporaly}
+@z
+
+@x [47.1071] l.21485 - pTeX: \tate, \yoko, \dtou
+primitive("hbox",make_box,vtop_code+hmode);@/
+@!@:hbox_}{\.{\\hbox} primitive@>
+@y
+primitive("hbox",make_box,vtop_code+hmode);@/
+@!@:hbox_}{\.{\\hbox} primitive@>
+primitive("tate",chg_dir,dir_tate);@/
+@!@:tate_}{\.{\\tate} primitive@>
+primitive("yoko",chg_dir,dir_yoko);@/
+@!@:yoko_}{\.{\\yoko} primitive@>
+primitive("dtou",chg_dir,dir_dtou);@/
+@!@:dtou_}{\.{\\dtou} primitive@>
+@z
+
+@x [47.1072] l.21506 - pTeX: \tate, \yoko, \dtou
+ othercases print_esc("hbox")
+ endcases;
+leader_ship: if chr_code=a_leaders then print_esc("leaders")
+@y
+ othercases print_esc("hbox")
+ endcases;
+chg_dir:
+ case chr_code of
+ dir_yoko: print_esc("yoko");
+ dir_tate: print_esc("tate");
+ dir_dtou: print_esc("dtou");
+ endcases;
+leader_ship: if chr_code=a_leaders then print_esc("leaders")
+@z
+
+@x [47.1073] l.21523 - pTeX: \tate, \yoko
+any_mode(make_box): begin_box(0);
+@y
+any_mode(make_box): begin_box(0);
+any_mode(chg_dir):
+ begin if cur_group<>align_group then
+ if head=tail then
+ begin direction:=cur_chr;
+ if mode=vmode then page_dir:=cur_chr;
+ end
+ else begin print_err("Use `"); print_cmd_chr(cur_cmd,cur_chr);
+ print("' at top of list");
+ help2("Direction change command is available only while")
+ ("current list is null."); error;
+ end
+ else begin print_err("You can't use `"); print_cmd_chr(cur_cmd,cur_chr);
+ print("' in an align");
+ help2("To change direction in an align,")
+ ("you shold use \hbox or \vbox with \tate or \yoko."); error;
+ end
+ end;
+@z
+
+@x [47.1075] l.21538 - pTeX: box_end
+var p:pointer; {|ord_noad| for new box in math mode}
+@y
+var p:pointer; {|ord_noad| for new box in math mode}
+q:pointer;
+@z
+
+@x [47.1076] l.21553 - pTeX: box_dir adjust
+begin if cur_box<>null then
+ begin shift_amount(cur_box):=box_context;
+ if abs(mode)=vmode then
+ begin append_to_vlist(cur_box);
+ if adjust_tail<>null then
+ begin if adjust_head<>adjust_tail then
+ begin link(tail):=link(adjust_head); tail:=adjust_tail;
+ end;
+ adjust_tail:=null;
+ end;
+ if mode>0 then build_page;
+ end
+ else begin if abs(mode)=hmode then space_factor:=1000
+ else begin p:=new_noad;
+ math_type(nucleus(p)):=sub_box;
+ info(nucleus(p)):=cur_box; cur_box:=p;
+ end;
+ link(tail):=cur_box; tail:=cur_box;
+ end;
+ end;
+end
+@y
+begin if cur_box<>null then
+ begin p:=link(cur_box); link(cur_box):=null;
+ while p<>null do begin
+ q:=p; p:=link(p);
+ if box_dir(q)=abs(direction) then
+ begin list_ptr(q):=cur_box; cur_box:=q; link(cur_box):=null;
+ end
+ else begin
+ delete_glue_ref(space_ptr(q));
+ delete_glue_ref(xspace_ptr(q));
+ free_node(q,box_node_size);
+ end;
+ end;
+ if box_dir(cur_box)<>abs(direction) then
+ cur_box:=new_dir_node(cur_box,abs(direction));
+ shift_amount(cur_box):=box_context;
+ if abs(mode)=vmode then
+ begin append_to_vlist(cur_box);
+ if adjust_tail<>null then
+ begin if adjust_head<>adjust_tail then
+ begin link(tail):=link(adjust_head); tail:=adjust_tail;
+ end;
+ adjust_tail:=null;
+ end;
+ if mode>0 then build_page;
+ end
+ else begin
+ if abs(mode)=hmode then
+ space_factor:=1000
+ else begin p:=new_noad;
+ math_type(nucleus(p)):=sub_box;
+ info(nucleus(p)):=cur_box; cur_box:=p;
+ end;
+ link(tail):=cur_box; tail:=cur_box;
+ end;
+end;
+end
+@z
+
+@x [47.1078] l.21585 - pTeX: box_dir adjust
+ begin append_glue; subtype(tail):=box_context-(leader_flag-a_leaders);
+ leader_ptr(tail):=cur_box;
+ end
+@y
+ begin append_glue; subtype(tail):=box_context-(leader_flag-a_leaders);
+ if type(cur_box)<=dir_node then
+ begin p:=link(cur_box); link(cur_box):=null;
+ while p<>null do
+ begin q:=p; p:=link(p);
+ if box_dir(q)=abs(direction) then
+ begin list_ptr(q):=cur_box; cur_box:=q; link(cur_box):=null;
+ end
+ else begin
+ delete_glue_ref(space_ptr(q));
+ delete_glue_ref(xspace_ptr(q));
+ free_node(q,box_node_size);
+ end;
+ end;
+ if box_dir(cur_box)<>abs(direction) then
+ cur_box:=new_dir_node(cur_box,abs(direction));
+ end;
+ leader_ptr(tail):=cur_box;
+ end
+@z
+
+@x [47.1079] l.21605 - pTeX: disp_node, adjust direction
+var @!p,@!q:pointer; {run through the current list}
+@!m:quarterword; {the length of a replacement list}
+@!k:halfword; {0 or |vmode| or |hmode|}
+@!n:eight_bits; {a box number}
+@y
+var @!p,@!q:pointer; {run through the current list}
+@!m:quarterword; {the length of a replacement list}
+@!k:halfword; {0 or |vmode| or |hmode|}
+@!n:eight_bits; {a box number}
+@!a_dir:eight_bits; {adjust direction}
+@!d:pointer; {last |disp_node|}
+@!disp,@!pdisp:scaled; {displacement}
+@!pp,pnode:pointer;
+@z
+
+@x [47.1080] l.21636 - pTeX: disp_node, check head=tail
+else begin if not is_char_node(tail) then
+ if (type(tail)=hlist_node)or(type(tail)=vlist_node) then
+ @<Remove the last box, unless it's part of a discretionary@>;
+ end;
+@y
+else begin
+ if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin d:=tail; tail:=prev_node;
+ end
+ else d:=null;
+ if (not is_char_node(tail))and(head<>tail) then
+ if (type(tail)=hlist_node)or(type(tail)=vlist_node)
+ or(type(tail)=dir_node) then
+ @<Remove the last box, unless it's part of a discretionary@>;
+ if d<>null then
+ if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin prev_node:=pnode; prev_disp:=pdisp;
+ if prev_disp=disp_dimen(d) then free_node(tail,small_node_size)
+ else disp_dimen(tail):=disp_dimen(d);
+ free_node(d,small_node_size);
+ end
+ else tail_append(d);
+ end;
+@z
+
+@x [47.1081] l.21642 - pTeX: disp_node
+@ @<Remove the last box...@>=
+begin q:=head;
+repeat p:=q;
+if not is_char_node(q) then if type(q)=disc_node then
+ begin for m:=1 to replace_count(q) do p:=link(p);
+ if p=tail then goto done;
+ end;
+q:=link(p);
+until q=tail;
+cur_box:=tail; shift_amount(cur_box):=0;
+tail:=p; link(p):=null;
+done:end
+@y
+@ @<Remove the last box...@>=
+begin q:=head; disp:=0; pdisp:=0;
+repeat p:=q;
+if not is_char_node(q) then
+ if type(q)=disc_node then
+ begin for m:=1 to replace_count(q) do p:=link(p);
+ if p=tail then goto done;
+ end
+ else if type(q)=disp_node then
+ begin pnode:=pp; pdisp:=disp; disp:=disp_dimen(q);
+ end;
+pp:=q; q:=link(p);
+until q=tail;
+cur_box:=tail; shift_amount(cur_box):=0;
+tail:=p; link(p):=null;
+if type(cur_box)=dir_node then
+ begin link(list_ptr(cur_box)):=cur_box;
+ cur_box:=list_ptr(cur_box);
+ list_ptr(link(cur_box)):=null;
+ end
+else
+ if box_dir(cur_box)=dir_default then box_dir(cur_box):=abs(direction);
+done:end
+@z
+
+@x [47.1083] l.21675 - pTeX: adjust_dir
+if k=hmode then
+ if (box_context<box_flag)and(abs(mode)=vmode) then
+ scan_spec(adjusted_hbox_group,true)
+ else scan_spec(hbox_group,true)
+else begin if k=vmode then scan_spec(vbox_group,true)
+ else begin scan_spec(vtop_group,true); k:=vmode;
+ end;
+ normal_paragraph;
+ end;
+push_nest; mode:=-k;
+@y
+a_dir:=adjust_dir;
+if k=hmode then
+ if (box_context<box_flag)and(abs(mode)=vmode) then
+ begin a_dir:=abs(direction); scan_spec(adjusted_hbox_group,true);
+ end
+ else scan_spec(hbox_group,true)
+else begin if k=vmode then scan_spec(vbox_group,true)
+ else begin scan_spec(vtop_group,true); k:=vmode;
+ end;
+ normal_paragraph;
+ end;
+push_nest; mode:=-k; adjust_dir:=a_dir;
+@z
+
+@x [47.1085] l.21717 - pTeX: end of box, call adjust_hlist
+hbox_group: package(0);
+adjusted_hbox_group: begin adjust_tail:=adjust_head; package(0);
+ end;
+@y
+hbox_group: begin adjust_hlist(head,false); package(0);
+ end;
+adjusted_hbox_group: begin adjust_hlist(head,false);
+ adjust_tail:=adjust_head; package(0);
+ end;
+@z
+
+@x [47.1086] l.21730 - pTeX: set cur_kanji_skip, cur_xkanji_skip
+begin d:=box_max_depth; unsave; save_ptr:=save_ptr-3;
+if mode=-hmode then cur_box:=hpack(link(head),saved(2),saved(1))
+else begin cur_box:=vpackage(link(head),saved(2),saved(1),d);
+ if c=vtop_code then @<Readjust the height and depth of |cur_box|,
+ for \.{\\vtop}@>;
+ end;
+pop_nest; box_end(saved(0));
+end;
+@y
+begin d:=box_max_depth;
+ delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip);
+ if auto_spacing>0 then cur_kanji_skip:=kanji_skip
+ else cur_kanji_skip:=zero_glue;
+ if auto_xspacing>0 then cur_xkanji_skip:=xkanji_skip
+ else cur_xkanji_skip:=zero_glue;
+ add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip);
+ unsave; save_ptr:=save_ptr-3;
+ if mode=-hmode then begin
+ cur_box:=hpack(link(head),saved(2),saved(1));
+ box_dir(cur_box):=abs(direction); pop_nest;
+ end else begin
+ cur_box:=vpackage(link(head),saved(2),saved(1),d);
+ box_dir(cur_box):=abs(direction); pop_nest;
+ if c=vtop_code then
+ @<Readjust the height and depth of |cur_box|, for \.{\\vtop}@>;
+ end;
+ box_end(saved(0));
+end;
+@z
+
+@x [47.1090] l.21765 - pTeX: apend vmode case
+vmode+letter,vmode+other_char,vmode+char_num,vmode+char_given,
+ vmode+math_shift,vmode+un_hbox,vmode+vrule,
+ vmode+accent,vmode+discretionary,vmode+hskip,vmode+valign,
+ vmode+ex_space,vmode+no_boundary:@t@>@;@/
+ begin back_input; new_graf(true);
+ end;
+@y
+vmode+letter,vmode+other_char,vmode+char_num,vmode+char_given,
+ vmode+math_shift,vmode+un_hbox,vmode+vrule,
+ vmode+accent,vmode+discretionary,vmode+hskip,vmode+valign,
+ vmode+kanji,vmode+kana,vmode+other_kchar,
+ vmode+ex_space,vmode+no_boundary:@t@>@;@/
+ begin back_input; new_graf(true);
+ end;
+@z
+
+@x [47.1091] l.21782 - pTeX: new_graf, adjust direction
+push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
+@y
+push_nest; adjust_dir:=abs(direction);
+mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
+@z
+
+@x [47.1096] l.21842 - pTeX: end_graf, call adjust_hlist
+ begin if head=tail then pop_nest {null paragraphs are ignored}
+ else line_break(widow_penalty);
+@y
+ begin if head=tail then pop_nest {null paragraphs are ignored}
+ else begin adjust_hlist(head,true); line_break(widow_penalty)
+ end;
+@z
+
+@x [47.1099] l.21871 - pTeX: insert and adjust
+new_save_level(insert_group); scan_left_brace; normal_paragraph;
+push_nest; mode:=-vmode; prev_depth:=ignore_depth;
+@y
+new_save_level(insert_group); scan_left_brace; normal_paragraph;
+push_nest; mode:=-vmode; direction:=adjust_dir; prev_depth:=ignore_depth;
+@z
+
+@x [47.1100] l.21876 - pTeX: free box node, ins_dir
+insert_group: begin end_graf; q:=split_top_skip; add_glue_ref(q);
+ d:=split_max_depth; f:=floating_penalty; unsave; decr(save_ptr);
+ {now |saved(0)| is the insertion number, or 255 for |vadjust|}
+ p:=vpack(link(head),natural); pop_nest;
+ if saved(0)<255 then
+ begin tail_append(get_node(ins_node_size));
+ type(tail):=ins_node; subtype(tail):=qi(saved(0));
+ height(tail):=height(p)+depth(p); ins_ptr(tail):=list_ptr(p);
+ split_top_ptr(tail):=q; depth(tail):=d; float_cost(tail):=f;
+ end
+ else begin tail_append(get_node(small_node_size));
+ type(tail):=adjust_node;@/
+ subtype(tail):=0; {the |subtype| is not used}
+ adjust_ptr(tail):=list_ptr(p); delete_glue_ref(q);
+ end;
+ free_node(p,box_node_size);
+ if nest_ptr=0 then build_page;
+ end;
+@y
+insert_group: begin end_graf; q:=split_top_skip; add_glue_ref(q);
+ d:=split_max_depth; f:=floating_penalty; unsave; decr(save_ptr);
+ {now |saved(0)| is the insertion number, or 255 for |vadjust|}
+ p:=vpack(link(head),natural); box_dir(p):=abs(direction); pop_nest;
+ if saved(0)<255 then
+ begin r:=get_node(ins_node_size);
+ type(r):=ins_node; subtype(r):=qi(saved(0));
+ height(r):=height(p)+depth(p); ins_ptr(r):=list_ptr(p);
+ split_top_ptr(r):=q; depth(r):=d; float_cost(r):=f;
+ ins_dir(r):=box_dir(p);
+ if (not is_char_node(tail))and(type(tail)=disp_node) then
+ prev_append(r)
+ else tail_append(r);
+ end
+ else begin
+ if box_dir(p)<>adjust_dir then
+ begin print_err("Direction Incompatible.");
+ help1("\vadjust's argument and outer vlist must have same direction.");
+ error; flush_node_list(list_ptr(p));
+ end
+ else begin
+ r:=get_node(small_node_size); type(r):=adjust_node;@/
+ adjust_ptr(r):=list_ptr(p); delete_glue_ref(q);
+ if (not is_char_node(tail))and(type(tail)=disp_node) then
+ prev_append(r)
+ else tail_append(r);
+ end;
+ end;
+ delete_glue_ref(space_ptr(p));
+ delete_glue_ref(xspace_ptr(p));
+ free_node(p,box_node_size);
+ if nest_ptr=0 then build_page;
+ end;
+@z
+
+@x [47.1101] l.21901 - pTeX: mark_node, prev_append
+mark_ptr(p):=def_ref; link(tail):=p; tail:=p;
+@y
+mark_ptr(p):=def_ref;
+if (not is_char_node(tail))and(type(tail)=disp_node) then
+ prev_append(p)
+else tail_append(p);
+@z
+
+@x [47.1103] l.21911 - pTeX: penalty, prev_append
+procedure append_penalty;
+begin scan_int; tail_append(new_penalty(cur_val));
+if mode=vmode then build_page;
+end;
+@y
+procedure append_penalty;
+begin scan_int;
+ if (not is_char_node(tail))and(type(tail)=disp_node) then
+ prev_append(new_penalty(cur_val))
+ else tail_append(new_penalty(cur_val));
+ if mode=vmode then build_page;
+end;
+@z
+
+@x [47.1105] l.21932 - pTeX: delete_last: disp_node
+var @!p,@!q:pointer; {run through the current list}
+@!m:quarterword; {the length of a replacement list}
+@y
+var @!p,@!q:pointer; {run through the current list}
+@!m:quarterword; {the length of a replacement list}
+@!d:pointer; {last |disp_node|}
+@!disp,@!pdisp:scaled; {displacement}
+@!pp,pnode:pointer;
+@z
+
+@x [47.1105] l.21937 - pTeX: delete_last: disp_node
+else begin if not is_char_node(tail) then if type(tail)=cur_chr then
+ begin q:=head;
+ repeat p:=q;
+ if not is_char_node(q) then if type(q)=disc_node then
+ begin for m:=1 to replace_count(q) do p:=link(p);
+ if p=tail then return;
+ end;
+ q:=link(p);
+ until q=tail;
+ link(p):=null; flush_node_list(tail); tail:=p;
+ end;
+ end;
+exit:end;
+@y
+else begin
+ if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin d:=tail; tail:=prev_node; link(tail):=null;
+ end
+ else d:=null;
+ if not is_char_node(tail) then if type(tail)=cur_chr then
+ begin q:=head; pp:=null; disp:=0; pdisp:=0;
+ repeat p:=q;
+ if not is_char_node(q) then
+ if type(q)=disc_node then
+ begin for m:=1 to replace_count(q) do p:=link(p);
+ if p=tail then
+ begin if d<>null then tail_append(d);
+ return;
+ end
+ end
+ else if type(q)=disp_node then
+ begin pnode:=pp; pdisp:=disp; disp:=disp_dimen(q);
+ end;
+ pp:=q; q:=link(p);
+ until q=tail;
+ link(p):=null; flush_node_list(tail); tail:=p;
+ end;
+ prev_node:=pnode; prev_disp:=pdisp;
+ if d<>null then
+ if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin if prev_disp=disp_dimen(d) then
+ free_node(tail,small_node_size)
+ else disp_dimen(tail):=disp_dimen(d);
+ free_node(d,small_node_size)
+ end
+ else
+ begin prev_node:=tail; prev_disp:=disp; tail_append(d)
+ end
+ end;
+exit:end;
+@z
+
+@x [47.1110] l.21997 -pTeX: free box node, delete kanji_skip
+var p:pointer; {the box}
+@!c:box_code..copy_code; {should we copy?}
+@y
+var p:pointer; {the box}
+@!c:box_code..copy_code; {should we copy?}
+@!disp:scaled; {displacement}
+@z
+
+@x [47.1110] l.22001 - pTeX: free box node, delete kanji_skip
+if (abs(mode)=mmode)or((abs(mode)=vmode)and(type(p)<>vlist_node))or@|
+ ((abs(mode)=hmode)and(type(p)<>hlist_node)) then
+ begin print_err("Incompatible list can't be unboxed");
+@.Incompatible list...@>
+ help3("Sorry, Pandora. (You sneaky devil.)")@/
+ ("I refuse to unbox an \hbox in vertical mode or vice versa.")@/
+ ("And I can't open any boxes in math mode.");@/
+ error; return;
+ end;
+if c=copy_code then link(tail):=copy_node_list(list_ptr(p))
+else begin link(tail):=list_ptr(p); box(cur_val):=null;
+ free_node(p,box_node_size);
+ end;
+while link(tail)<>null do tail:=link(tail);
+@y
+if type(p)=dir_node then p:=list_ptr(p);
+if (abs(mode)=mmode)or((abs(mode)=vmode)and(type(p)<>vlist_node))or@|
+ ((abs(mode)=hmode)and(type(p)<>hlist_node)) then
+ begin print_err("Incompatible list can't be unboxed");
+@.Incompatible list...@>
+ help3("Sorry, Pandora. (You sneaky devil.)")@/
+ ("I refuse to unbox an \hbox in vertical mode or vice versa.")@/
+ ("And I can't open any boxes in math mode.");@/
+ error; return;
+end;
+case box_dir(p) of
+ any_dir:
+ if abs(direction)<>box_dir(p) then begin
+ print_err("Incompatible direction list can't be unboxed");
+ help2("Sorry, Pandora. (You sneaky devil.)")@/
+ ("I refuse to unbox a box in differrent direction.");@/
+ error; return;
+ end;
+endcases;
+disp:=0;
+if c=copy_code then link(tail):=copy_node_list(list_ptr(p))
+else
+ begin if type(box(cur_val))=dir_node then
+ begin delete_glue_ref(space_ptr(box(cur_val)));
+ delete_glue_ref(xspace_ptr(box(cur_val)));
+ free_node(box(cur_val),box_node_size);
+ end;
+ flush_node_list(link(p));
+ link(tail):=list_ptr(p); box(cur_val):=null;
+ delete_glue_ref(space_ptr(p));
+ delete_glue_ref(xspace_ptr(p));
+ free_node(p,box_node_size);
+ end;
+while link(tail)<>null do
+ begin p:=tail; tail:=link(tail);
+ if not is_char_node(tail) then
+ case type(tail) of
+ glue_node :
+ if (subtype(tail)=kanji_skip_code+1)
+ or(subtype(tail)=xkanji_skip_code+1) then
+ begin link(p):=link(tail);
+ delete_glue_ref(glue_ptr(tail));
+ free_node(tail,small_node_size); tail:=p;
+ end;
+ penalty_node :
+ if subtype(tail)=widow_pena then
+ begin link(p):=link(tail); free_node(tail,small_node_size);
+ tail:=p;
+ end;
+ disp_node :
+ begin prev_disp:=disp; disp:=disp_dimen(tail); prev_node:=p;
+ end;
+ endcases;
+ end;
+@z
+
+@x [47.1113] l.22028 - pTeX: italic correction, ita_kern
+procedure append_italic_correction;
+label exit;
+var p:pointer; {|char_node| at the tail of the current list}
+@!f:internal_font_number; {the font in the |char_node|}
+begin if tail<>head then
+ begin if is_char_node(tail) then p:=tail
+ else if type(tail)=ligature_node then p:=lig_char(tail)
+ else return;
+ f:=font(p);
+ tail_append(new_kern(char_italic(f)(char_info(f)(character(p)))));
+ subtype(tail):=explicit;
+ end;
+@y
+procedure append_italic_correction;
+label exit;
+var p:pointer; {|char_node| at the tail of the current list}
+@!f:internal_font_number; {the font in the |char_node|}
+@!d:pointer; {|disp_node|}
+begin if tail<>head then
+ begin
+ if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin d:=tail; tail:=prev_node;
+ end
+ else d:=null;
+ if (last_jchr<>null)and(link(last_jchr)=tail)and(is_char_node(tail)) then
+ p:=last_jchr
+ else if is_char_node(tail) then p:=tail
+ else if type(tail)=ligature_node then p:=lig_char(tail)
+ else return;
+ f:=font(p);
+ tail_append(new_kern(char_italic(f)(char_info(f)(character(p)))));
+ subtype(tail):=ita_kern;
+ if d<>null then
+ begin prev_node:=tail; tail_append(d);
+ end;
+ end;
+@z
+
+@x [47.1120] l.22119 - pTeX: discretionary with disp_node
+decr(save_ptr); return;
+@y
+decr(save_ptr);
+prev_node:=tail; tail_append(get_node(small_node_size));
+type(tail):=disp_node; disp_dimen(tail):=0; prev_disp:=0;
+return;
+@z
+
+@x [47.1121] l.22127 - pTeX: discretionary with disp_node
+ begin if not is_char_node(p) then if type(p)>rule_node then
+ if type(p)<>kern_node then if type(p)<>ligature_node then
+ begin print_err("Improper discretionary list");
+@y
+ begin if not is_char_node(p) then
+ if (type(p)>rule_node)and(type(p)<>kern_node)and
+ (type(p)<>ligature_node)and(type(p)<>disp_node) then
+ if (type(p)=penalty_node)and(subtype(p)<>normal) then
+ begin link(q):=link(p); free_node(p,small_node_size); p:=q;
+ end
+ else
+ begin print_err("Improper discretionary list");
+@z
+
+@x [47.1123] l.22160 - pTeX: make_accent, Kanji, insert disp_node
+var s,@!t: real; {amount of slant}
+@y
+var s,@!t: real; {amount of slant}
+@!disp:scaled; {displacement}
+@!cx:KANJI_code; {temporary register for KANJI}
+@z
+
+@x [47.1123] l.22165 - pTeX: make_accent, Kanji, insert disp_node
+begin scan_char_num; f:=cur_font; p:=new_character(f,cur_val);
+@y
+begin scan_char_num;
+if (cur_val<0)or(cur_val>255) then
+ begin KANJI(cx):=cur_val;
+ if direction=dir_tate then f:=cur_tfont else f:=cur_jfont;
+ p:=new_character(f,get_jfm_pos(KANJI(cx),f));
+ {DEBUG if p<>null then ...}
+ link(p):=get_avail; info(link(p)):=KANJI(cx);
+ end
+else begin f:=cur_font; p:=new_character(f,cur_val);
+ end;
+@z
+
+@x [47.1123] l.22175 - pTeX: make_accent, Kanji, insert disp_node
+ link(tail):=p; tail:=p; space_factor:=1000;
+@y
+ link(tail):=p;
+ if link(p)<>null then tail:=link(p) else tail:=p;
+ @<Append |disp_node| at end of displace area@>;
+ space_factor:=1000;
+@z
+
+@x [47.1124] l.22180 - pTeX: make_accent Kanji, insert disp_node
+q:=null; f:=cur_font;
+if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given) then
+ q:=new_character(f,cur_chr)
+else if cur_cmd=char_num then
+ begin scan_char_num; q:=new_character(f,cur_val);
+ end
+else back_input
+@y
+q:=null; f:=cur_font; KANJI(cx):=empty;
+if (cur_cmd=letter)or(cur_cmd=other_char) then
+ q:=new_character(f,cur_chr)
+else if (cur_cmd=kanji)or(cur_cmd=kana)or(cur_cmd=other_kchar) then
+ begin if direction=dir_tate then f:=cur_tfont else f:=cur_jfont;
+ cx:=cur_chr;
+ end
+else if cur_cmd=char_given then
+ if (cur_chr>=0)and(cur_chr<256)then q:=new_character(f,cur_chr)
+ else begin
+ if direction=dir_tate then f:=cur_tfont else f:=cur_jfont;
+ KANJI(cx):=cur_chr
+ end
+ else if cur_cmd=char_num then
+ begin scan_char_num;
+ if (cur_chr>=0)and(cur_chr<256)then q:=new_character(f,cur_val)
+ else begin
+ if direction=dir_tate then f:=cur_tfont else f:=cur_jfont;
+ KANJI(cx):=cur_chr
+ end
+ end
+else back_input;
+if direction=dir_tate then
+ begin if font_dir[f]=dir_tate then disp:=0
+ else if font_dir[f]=dir_yoko then disp:=t_baseline_shift-y_baseline_shift
+ else disp:=t_baseline_shift
+ end
+else begin if font_dir[f]=dir_yoko then disp:=0
+ else if font_dir[f]=dir_tate then disp:=y_baseline_shift-t_baseline_shift
+ else disp:=y_baseline_shift
+ end;
+@<Append |disp_node| at begin of displace area@>;
+if KANJI(cx)<>empty then
+ begin q:=new_character(f,get_jfm_pos(KANJI(cx),f));
+ link(q):=get_avail; info(link(q)):=KANJI(cx);
+ end;
+@z
+
+@x [47.1125] l.22200 - pTeX: make_accent Kanji
+if h<>x then {the accent must be shifted up or down}
+ begin p:=hpack(p,natural); shift_amount(p):=x-h;
+ end;
+@y
+if h<>x then {the accent must be shifted up or down}
+ begin delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip);
+ cur_kanji_skip:=zero_glue; cur_xkanji_skip:=zero_glue;
+ add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip);
+ p:=hpack(p,natural); shift_amount(p):=x-h;
+ end;
+@z
+
+@x l.22334 - pTeX
+procedure cs_error;
+begin
+if cur_chr = 10 then
+begin
+ print_err("Extra "); print_esc("endmubyte");
+@.Extra \\endmubyte@>
+ help1("I'm ignoring this, since I wasn't doing a \mubyte.");
+end else begin
+ print_err("Extra "); print_esc("endcsname");
+@.Extra \\endcsname@>
+ help1("I'm ignoring this, since I wasn't doing a \csname.");
+end;
+@y
+procedure cs_error;
+begin print_err("Extra "); print_esc("endcsname");
+@.Extra \\endcsname@>
+help1("I'm ignoring this, since I wasn't doing a \csname.");
+@z
+
+@x [48.1138] l.22385 - pTeX: init math : direction < 0 ... math direction
+if (cur_cmd=math_shift)and(mode>0) then @<Go into display math mode@>
+else begin back_input; @<Go into ordinary math mode@>;
+ end;
+@y
+if (cur_cmd=math_shift)and(mode>0) then @<Go into display math mode@>
+else begin back_input; @<Go into ordinary math mode@>;
+ end;
+direction:=-abs(direction);
+@z
+
+@x [48.1145] l.22435 - pTeX: Call adjust_hlist at begin of display
+else begin line_break(display_widow_penalty);@/
+@y
+else begin adjust_hlist(head,true); line_break(display_widow_penalty);@/
+@z
+
+@x [48.1147] l.22471 - pTeX: Skip kanji 2nd node, dir_node
+reswitch: if is_char_node(p) then
+ begin f:=font(p); d:=char_width(f)(char_info(f)(character(p)));
+ goto found;
+ end;
+case type(p) of
+hlist_node,vlist_node,rule_node: begin d:=width(p); goto found;
+ end;
+@y
+reswitch: if is_char_node(p) then
+ begin f:=font(p); d:=char_width(f)(orig_char_info(f)(character(p)));
+ if font_dir[f]<>dir_default then p:=link(p);
+ goto found;
+ end;
+case type(p) of
+hlist_node,vlist_node,dir_node,rule_node: begin d:=width(p); goto found;
+ end;
+@z
+
+@x [48.1150] l.22541 - pTeX: scan_math
+mmode+left_brace: begin tail_append(new_noad);
+ back_input; scan_math(nucleus(tail));
+ end;
+@y
+mmode+left_brace: begin tail_append(new_noad);
+ back_input; scan_math(nucleus(tail),kcode_noad(tail));
+ end;
+@z
+
+@x [48.1151] l.22555 - pTeX: scan_math: use Kanji in math_mode
+procedure scan_math(@!p:pointer);
+label restart,reswitch,exit;
+var c:integer; {math character code}
+begin restart:@<Get the next non-blank non-relax...@>;
+reswitch:case cur_cmd of
+letter,other_char,char_given: begin c:=ho(math_code(cur_chr));
+ if c=@'100000 then
+ begin @<Treat |cur_chr| as an active character@>;
+ goto restart;
+ end;
+ end;
+@y
+procedure scan_math(@!p,@!q:pointer);
+label restart,reswitch,exit;
+var c:integer; {math character code}
+cx:KANJI_code; {temporary register for KANJI}
+begin KANJI(cx):=0;
+restart: @<Get the next non-blank non-relax...@>;
+reswitch:case cur_cmd of
+letter,other_char,char_given:
+ if (cur_chr>=0)and(cur_chr<=256) then begin
+ c:=ho(math_code(cur_chr));
+ if c=@'100000 then
+ begin @<Treat |cur_chr| as an active character@>;
+ goto restart;
+ end;
+ end
+ else
+ KANJI(cx):=cur_chr;
+kanji,kana,other_kchar: cx:=cur_chr;
+@z
+
+@x [48.1151] l.22576 - pTeX: scan_math: use Kanji in math_mode
+math_type(p):=math_char; character(p):=qi(c mod 256);
+if (c>=var_code)and fam_in_range then fam(p):=cur_fam
+else fam(p):=(c div 256) mod 16;
+@y
+if KANJI(cx)=0 then
+ begin math_type(p):=math_char; character(p):=qi(c mod 256);
+ if (c>=var_code)and(fam_in_range) then fam(p):=cur_fam
+ else fam(p):=(c div 256) mod 16;
+ if font_dir[fam_fnt(fam(p)+cur_size)]<>dir_default then
+ begin print_err("Not one-byte family");
+ help1("IGNORE.");@/
+ error;
+ end
+ end
+else begin
+ if q=null then
+ begin math_type(p):=sub_mlist; info(p):=new_noad;
+ p:=nucleus(info(p)); q:=kcode_noad_nucleus(p);
+ end;
+ math_type(p):=math_jchar; fam(p):=cur_jfam; character(p):=qi(0);
+ info(q):=KANJI(cx);
+ if font_dir[fam_fnt(fam(p)+cur_size)]=dir_default then
+ begin print_err("Not two-byte family");
+ help1("IGNORE.");@/
+ error;
+ end
+ end;
+@z
+
+@x [48.1154] l.22605 - pTeX: math mode
+mmode+letter,mmode+other_char,mmode+char_given:
+ set_math_char(ho(math_code(cur_chr)));
+mmode+char_num: begin scan_char_num; cur_chr:=cur_val;
+ set_math_char(ho(math_code(cur_chr)));
+ end;
+@y
+mmode+letter,mmode+other_char,mmode+char_given:
+ if (cur_chr>=0)and(cur_chr<256) then
+ if cur_chr<128 then set_math_char(ho(math_code(cur_chr)))
+ else set_math_char(cur_chr)
+ else set_math_kchar(cur_chr);
+mmode+kanji,mmode+kana,mmode+other_kchar: begin
+ cx:=cur_chr; set_math_kchar(KANJI(cx));
+ end;
+mmode+char_num: begin scan_char_num; cur_chr:=cur_val;
+ if (cur_chr>=0)and(cur_chr<256) then
+ if cur_chr<128 then set_math_char(ho(math_code(cur_chr)))
+ else set_math_char(cur_chr)
+ else set_math_kchar(cur_chr);
+ end;
+@z
+
+@x [48.1155] l.22635 - pTeX: set_math_char
+ link(tail):=p; tail:=p;
+@y
+ link(tail):=p; tail:=p;
+ if font_dir[fam_fnt(fam(nucleus(p))+cur_size)]<>dir_default then begin
+ print_err("Not one-byte family");
+ help1("IGNORE.");@/
+ error;
+ end
+@z
+
+@x [48.1158] l.22690 - pTeX: scan_math
+ type(tail):=cur_chr; scan_math(nucleus(tail));
+@y
+ type(tail):=cur_chr; scan_math(nucleus(tail),kcode_noad(tail));
+@z
+
+@x [48.1163] l.22750 - pTeX: scan_math
+scan_delimiter(left_delimiter(tail),true); scan_math(nucleus(tail));
+@y
+scan_delimiter(left_delimiter(tail),true);
+scan_math(nucleus(tail),kcode_noad(tail));
+@z
+
+@x [48.1164] l.22770 - pTeX: scan_math
+scan_math(nucleus(tail));
+@y
+scan_math(nucleus(tail),kcode_noad(tail));
+@z
+
+@x [48.1164] l.22790 - pTeX: vcenter : dir
+vcenter_group: begin end_graf; unsave; save_ptr:=save_ptr-2;
+ p:=vpack(link(head),saved(1),saved(0)); pop_nest;
+ tail_append(new_noad); type(tail):=vcenter_noad;
+ math_type(nucleus(tail)):=sub_box; info(nucleus(tail)):=p;
+ end;
+@y
+vcenter_group: begin end_graf; unsave; save_ptr:=save_ptr-2;
+ p:=vpack(link(head),saved(1),saved(0));
+ box_dir(p):=abs(direction); pop_nest;
+ if box_dir(p)<>abs(direction) then p:=new_dir_node(p,abs(direction));
+ tail_append(new_noad); type(tail):=vcenter_noad;
+ math_type(nucleus(tail)):=sub_box; info(nucleus(tail)):=p;
+ end;
+@z
+
+@x [48.1176] l.22864 - pTeX: scan_math
+scan_math(p);
+@y
+scan_math(p,null);
+@z
+
+@x [48.1186] l.23006 - pTeX: copy kanji code
+ if math_type(supscr(p))=empty then
+ begin mem[saved(0)].hh:=mem[nucleus(p)].hh;
+@y
+ if ((math_type(supscr(p))=empty)and(math_kcode(p)=null)) then
+ begin mem[saved(0)].hh:=mem[nucleus(p)].hh;
+@z
+
+@x [48.1194] l.23078 - pTeX: set cur_kanji_skip, cur_xkanji_skip
+var l:boolean; {`\.{\\leqno}' instead of `\.{\\eqno}'}
+@y
+var l:boolean; {`\.{\\leqno}' instead of `\.{\\eqno}'}
+@!disp:scaled; {displacement}
+@z
+
+@x [48.1194] l.23087 - pTeX: set cur_kanji_skip, cur_xkanji_skip
+m:=mode; l:=false; p:=fin_mlist(null); {this pops the nest}
+@y
+delete_glue_ref(cur_kanji_skip); delete_glue_ref(cur_xkanji_skip);
+if auto_spacing>0 then cur_kanji_skip:=kanji_skip
+else cur_kanji_skip:=zero_glue;
+if auto_xspacing>0 then cur_xkanji_skip:=xkanji_skip
+else cur_xkanji_skip:=zero_glue;
+add_glue_ref(cur_kanji_skip); add_glue_ref(cur_xkanji_skip);
+m:=mode; l:=false; p:=fin_mlist(null); {this pops the nest}
+@z
+
+@x [48.1196] l.23134 - pTeX: insert disp_node
+begin tail_append(new_math(math_surround,before));
+cur_mlist:=p; cur_style:=text_style; mlist_penalties:=(mode>0); mlist_to_hlist;
+link(tail):=link(temp_head);
+while link(tail)<>null do tail:=link(tail);
+tail_append(new_math(math_surround,after));
+space_factor:=1000; unsave;
+end
+@y
+begin if direction=dir_tate then disp:=axis_height(text_size) else disp:=0;
+@<Append |disp_node| at begin of displace area@>;
+tail_append(new_math(math_surround,before));
+cur_mlist:=p; cur_style:=text_style; mlist_penalties:=(mode>0); mlist_to_hlist;
+link(tail):=link(temp_head);
+while link(tail)<>null do tail:=link(tail);
+tail_append(new_math(math_surround,after));
+@<Append |disp_node| at end of displace area@>;
+space_factor:=1000; unsave;
+end
+@z
+
+@x [48.1200] l.23203 - pTeX: adjust direction
+push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
+@y
+push_nest; adjust_dir:=abs(direction);
+mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
+@z
+
+@x [48.1201] l.23217 - pTeX: free box node
+ begin free_node(b,box_node_size);
+@y
+ begin delete_glue_ref(space_ptr(b)); delete_glue_ref(xspace_ptr(b));
+ free_node(b,box_node_size);
+@z
+
+@x [48.1201] l.23222 - pTeX: free box node
+ begin free_node(b,box_node_size);
+@y
+ begin delete_glue_ref(space_ptr(b)); delete_glue_ref(xspace_ptr(b));
+ free_node(b,box_node_size);
+@z
+
+@x [49.1210] l.23361 - pTeX: set_auto_spacing
+any_mode(toks_register),
+any_mode(assign_toks),
+any_mode(assign_int),
+@y
+any_mode(assign_kinsoku),
+any_mode(assign_inhibit_xsp_code),
+any_mode(set_auto_spacing),
+any_mode(set_kansuji_char),
+any_mode(toks_register),
+any_mode(assign_toks),
+any_mode(assign_int),
+any_mode(def_jfont),
+any_mode(def_tfont),
+@z
+
+@x [49.1211] l.23397 - pTeX: prefixed_command
+procedure prefixed_command;
+label done,exit;
+var a:small_number; {accumulated prefix codes so far}
+@y
+procedure prefixed_command;
+label done,exit;
+var a:small_number; {accumulated prefix codes so far}
+@!m:integer; {ditto}
+@z
+
+@x l.23403 - pTeX
+@!p,@!q,@!r:pointer; {for temporary short-term use}
+@y
+@!p,@!q:pointer; {for temporary short-term use}
+@z
+
+@x [49.1217] l.23487 - pTeX: select cur font
+set_font: define(cur_font_loc,data,cur_chr);
+@y
+set_font: begin
+ if font_dir[cur_chr]=dir_yoko then
+ define(cur_jfont_loc,data,cur_chr)
+ else if font_dir[cur_chr]=dir_tate then
+ define(cur_tfont_loc,data,cur_chr)
+ else
+ define(cur_font_loc,data,cur_chr)
+end;
+@z
+
+@x l.23504 - pTeX
+primitive("futurelet",let,normal+1);@/
+@!@:future_let_}{\.{\\futurelet} primitive@>
+if enctex_p then
+begin
+ primitive("mubyte",let,normal+10);@/
+@!@:mubyte_}{\.{\\mubyte} primitive@>
+ primitive("noconvert",let,normal+11);@/
+@!@:noconvert_}{\.{\\noconvert} primitive@>
+end;
+
+@ @<Cases of |print_cmd_chr|...@>=
+let: if chr_code<>normal then
+ if chr_code = normal+10 then print_esc("mubyte")
+ else if chr_code = normal+11 then print_esc("noconvert")
+ else print_esc("futurelet")
+ else print_esc("let");
+
+@ @<Assignments@>=
+let: if cur_chr = normal+11 then do_nothing { noconvert primitive }
+ else if cur_chr = normal+10 then { mubyte primitive }
+ begin
+ selector:=term_and_log;
+ get_token;
+ mubyte_stoken := cur_tok;
+ if cur_tok <= cs_token_flag then mubyte_stoken := cur_tok mod 256;
+ mubyte_prefix := 60; mubyte_relax := false;
+ mubyte_tablein := true; mubyte_tableout := true;
+ get_x_token;
+ if cur_cmd = spacer then get_x_token;
+ if cur_cmd = sub_mark then
+ begin
+ mubyte_tableout := false; get_x_token;
+ if cur_cmd = sub_mark then
+ begin
+ mubyte_tableout := true; mubyte_tablein := false;
+ get_x_token;
+ end;
+ end else if (mubyte_stoken > cs_token_flag) and
+ (cur_cmd = mac_param) then
+ begin
+ mubyte_tableout := false;
+ scan_int; mubyte_prefix := cur_val; get_x_token;
+ if mubyte_prefix > 50 then mubyte_prefix := 52;
+ if mubyte_prefix <= 0 then mubyte_prefix := 51;
+ end
+ else if (mubyte_stoken > cs_token_flag) and (cur_cmd = relax) then
+ begin
+ mubyte_tableout := true; mubyte_tablein := false;
+ mubyte_relax := true; get_x_token;
+ end;
+ r := get_avail; p := r;
+ while cur_cs = 0 do begin store_new_token (cur_tok); get_x_token; end;
+ if (cur_cmd <> end_cs_name) or (cur_chr <> 10) then
+ begin
+ print_err("Missing "); print_esc("endmubyte"); print(" inserted");
+ help2("The control sequence marked <to be read again> should")@/
+("not appear in <byte sequence> between \mubyte and \endmubyte.");
+ back_error;
+ end;
+ p := link(r);
+ if (p = null) and mubyte_tablein then
+ begin
+ print_err("The empty <byte sequence>, ");
+ print_esc("mubyte"); print(" ignored");
+ help2("The <byte sequence> in")@/
+("\mubyte <token> <byte sequence>\endmubyte should not be empty.");
+ error;
+ end else begin
+ while p <> null do
+ begin
+ append_char (info(p) mod 256);
+ p := link (p);
+ end;
+ flush_list (r);
+ if (str_start [str_ptr] + 1 = pool_ptr) and
+ (str_pool [pool_ptr-1] = mubyte_stoken) then
+ begin
+ if mubyte_read [mubyte_stoken] <> null
+ and mubyte_tablein then { clearing data }
+ dispose_munode (mubyte_read [mubyte_stoken]);
+ if mubyte_tablein then mubyte_read [mubyte_stoken] := null;
+ if mubyte_tableout then mubyte_write [mubyte_stoken] := 0;
+ pool_ptr := str_start [str_ptr];
+ end else begin
+ if mubyte_tablein then mubyte_update; { updating input side }
+ if mubyte_tableout then { updating output side }
+ begin
+ if mubyte_stoken > cs_token_flag then { control sequence }
+ begin
+ dispose_mutableout (mubyte_stoken-cs_token_flag);
+ if (str_start [str_ptr] < pool_ptr) or mubyte_relax then
+ begin { store data }
+ r := mubyte_cswrite[(mubyte_stoken-cs_token_flag) mod 128];
+ p := get_avail;
+ mubyte_cswrite[(mubyte_stoken-cs_token_flag) mod 128] := p;
+ info (p) := mubyte_stoken-cs_token_flag;
+ link (p) := get_avail;
+ p := link (p);
+ if mubyte_relax then begin
+ info (p) := 0; pool_ptr := str_start [str_ptr];
+ end else info (p) := slow_make_string;
+ link (p) := r;
+ end;
+ end else begin { single character }
+ if str_start [str_ptr] = pool_ptr then
+ mubyte_write [mubyte_stoken] := 0
+ else
+ mubyte_write [mubyte_stoken] := slow_make_string;
+ end;
+ end else pool_ptr := str_start [str_ptr];
+ end;
+ end;
+ end else begin { let primitive }
+ n:=cur_chr;
+@y
+primitive("futurelet",let,normal+1);@/
+@!@:future_let_}{\.{\\futurelet} primitive@>
+
+@ @<Cases of |print_cmd_chr|...@>=
+let: if chr_code<>normal then print_esc("futurelet")@+else print_esc("let");
+
+@ @<Assignments@>=
+let: begin n:=cur_chr;
+@z
+
+@x [49.1228] l.23785 - pTeX: assign jfam
+assign_int: begin p:=cur_chr; scan_optional_equals; scan_int;
+ word_define(p,cur_val);
+ end;
+@y
+assign_int: begin p:=cur_chr; scan_optional_equals; scan_int;
+ if p=int_base+cur_fam_code then
+ begin if font_dir[fam_fnt(cur_val)]<>dir_default then
+ word_define(int_base+cur_jfam_code,cur_val)
+ else word_define(p,cur_val);
+ end
+ else word_define(p,cur_val);
+ end;
+@z
+
+@x [49.1230] l.23812 - pTeX: xspcode, kcatcode
+@<Put each...@>=
+primitive("catcode",def_code,cat_code_base);
+@!@:cat_code_}{\.{\\catcode} primitive@>
+@y
+@<Put each...@>=
+primitive("catcode",def_code,cat_code_base);
+@!@:cat_code_}{\.{\\catcode} primitive@>
+primitive("kcatcode",def_code,kcat_code_base);
+@!@:cat_code_}{\.{\\kcatcode} primitive@>
+primitive("xspcode",def_code,auto_xsp_code_base);
+@!@:auto_xsp_code_}{\.{\\xspcode} primitive@>
+@z
+
+@x l.23815 - pTeX
+if enctex_p then
+begin
+ primitive("xordcode",def_code,xord_code_base);
+@!@:xord_code_}{\.{\\xordcode} primitive@>
+ primitive("xchrcode",def_code,xchr_code_base);
+@!@:xchr_code_}{\.{\\xchrcode} primitive@>
+ primitive("xprncode",def_code,xprn_code_base);
+@!@:xprn_code_}{\.{\\xprncode} primitive@>
+end;
+@y
+@z
+
+@x [49.1231] l.23842 - pTeX: xspcode, kcatcode
+def_code: if chr_code=xord_code_base then print_esc("xordcode")
+ else if chr_code=xchr_code_base then print_esc("xchrcode")
+ else if chr_code=xprn_code_base then print_esc("xprncode")
+ else if chr_code=cat_code_base then print_esc("catcode")
+ else if chr_code=math_code_base then print_esc("mathcode")
+@y
+def_code: if chr_code=cat_code_base then print_esc("catcode")
+ else if chr_code=kcat_code_base then print_esc("kcatcode")
+ else if chr_code=auto_xsp_code_base then print_esc("xspcode")
+ else if chr_code=math_code_base then print_esc("mathcode")
+@z
+
+@x [49.1232] l.23857 - pTeX: kcatcode
+def_code: begin @<Let |n| be the largest legal code value, based on |cur_chr|@>;
+ p:=cur_chr; scan_char_num;
+ if p=xord_code_base then p:=cur_val
+ else if p=xchr_code_base then p:=cur_val+256
+ else if p=xprn_code_base then p:=cur_val+512
+ else p:=p+cur_val;
+ scan_optional_equals;
+ scan_int;
+ if ((cur_val<0)and(p<del_code_base))or(cur_val>n) then
+ begin print_err("Invalid code ("); print_int(cur_val);
+@.Invalid code@>
+ if p<del_code_base then print("), should be in the range 0..")
+ else print("), should be at most ");
+ print_int(n);
+ help1("I'm going to use 0 instead of that illegal code value.");@/
+ error; cur_val:=0;
+ end;
+ if p<256 then xord[p]:=cur_val
+ else if p<512 then xchr[p-256]:=cur_val
+ else if p<768 then xprn[p-512]:=cur_val
+ else if p<math_code_base then define(p,data,cur_val)
+ else if p<del_code_base then define(p,data,hi(cur_val))
+ else word_define(p,cur_val);
+ end;
+@y
+def_code: begin
+ @<Let |m| be the minimal legal code value, based on |cur_chr|@>;
+ @<Let |n| be the largest legal code value, based on |cur_chr|@>;
+ p:=cur_chr; scan_char_num;
+ if p=kcat_code_base then p:=p+Hi(cur_val) else p:=p+cur_val;
+ scan_optional_equals; scan_int;
+ if ((cur_val<m)and(p<del_code_base))or(cur_val>n) then
+ begin print_err("Invalid code ("); print_int(cur_val);
+@.Invalid code@>
+ if p<del_code_base then
+ begin print("), should be in the range "); print_int(m); print("..");
+ end
+ else print("), should be at most ");
+ print_int(n);
+ if m=0 then
+ begin help1("I'm going to use 0 instead of that illegal code value.");@/
+ error;
+ end
+ else
+ begin help1("I'm going to use 16 instead of that illegal code value.");@/
+ error;
+ end;
+ cur_val:=m;
+ end;
+ if p<math_code_base then define(p,data,cur_val)
+ else if p<del_code_base then define(p,data,hi(cur_val))
+ else word_define(p,cur_val);
+ end;
+@z
+
+@x [49.1233] l.23882 - pTeX: kcatcode
+@ @<Let |n| be the largest...@>=
+if cur_chr=cat_code_base then n:=max_char_code
+@y
+@ @<Let |m| be the minimal...@>=
+if cur_chr=kcat_code_base then m:=kanji else m:=0
+
+@ @<Let |n| be the largest...@>=
+if cur_chr=cat_code_base then n:=invalid_char {1byte |max_char_code|}
+else if cur_chr=kcat_code_base then n:=max_char_code
+@z
+
+@x [49.1247] l.24083 - pTeX: alter_box_dimen : box_dir
+procedure alter_box_dimen;
+var c:small_number; {|width_offset| or |height_offset| or |depth_offset|}
+@!b:eight_bits; {box number}
+begin c:=cur_chr; scan_eight_bit_int; b:=cur_val; scan_optional_equals;
+scan_normal_dimen;
+if box(b)<>null then mem[box(b)+c].sc:=cur_val;
+end;
+@y
+procedure alter_box_dimen;
+var c:small_number; {|width_offset| or |height_offset| or |depth_offset|}
+@!b:eight_bits; {box number}
+@!p,q:pointer; {temporary registers}
+begin c:=cur_chr; scan_eight_bit_int; b:=cur_val; scan_optional_equals;
+scan_normal_dimen;
+if box(b)<>null then
+ begin q:=box(b); p:=link(q);
+ while p<>null do
+ begin if abs(direction)=box_dir(p) then q:=p;
+ p:=link(p);
+ end;
+ if box_dir(q)<>abs(direction) then
+ begin q:=new_dir_node(q,abs(direction)); list_ptr(q):=null;
+ link(q):=link(box(b)); link(box(b)):=q;
+ end;
+ mem[q+c].sc:=cur_val;
+ end;
+end;
+@z
+
+@x [49.1256] l.24163 - pTeX: def_tfont
+def_font: new_font(a);
+@y
+def_tfont,def_jfont,def_font: new_font(a);
+@z
+
+@x l.24369 - pTeX
+message_printing := true; active_noconvert := true;
+token_show(def_ref);
+message_printing := false; active_noconvert := false;
+selector:=old_setting;
+@y
+token_show(def_ref); selector:=old_setting;
+@z
+
+@x [49.1292] l.24451 - pTeX: shift_case
+@<Change the case of the token in |p|, if a change is appropriate@>=
+t:=info(p);
+if t<cs_token_flag+single_base then
+ begin c:=t mod 256;
+ if equiv(b+c)<>0 then info(p):=t-c+equiv(b+c);
+ end
+@y
+@<Change the case of the token in |p|, if a change is appropriate@>=
+t:=info(p);
+if (t<cs_token_flag+single_base)and(not check_kanji(t)) then
+ begin c:=t mod 256;
+ if equiv(b+c)<>0 then info(p):=t-c+equiv(b+c);
+ end
+@z
+
+@x [49.1291] l.24467 - pTeX: show_mode
+@d show_lists=3 { \.{\\showlists} }
+@y
+@d show_lists=3 { \.{\\showlists} }
+@d show_mode=4 { \.{\\showmode} }
+@z
+
+@x [49.1291] l.24476 - pTeX: show_mode
+primitive("showlists",xray,show_lists);
+@!@:show_lists_}{\.{\\showlists} primitive@>
+@y
+primitive("showlists",xray,show_lists);
+@!@:show_lists_}{\.{\\showlists} primitive@>
+primitive("showmode",xray,show_mode);
+@!@:show_mode_}{\.{\\showmode} primitive@>
+@z
+
+@x [49.1292] l.24483 - pTeX: show_mode
+ show_lists:print_esc("showlists");
+ othercases print_esc("show")
+@y
+ show_lists:print_esc("showlists");
+ show_mode:print_esc("showmode");
+ othercases print_esc("show")
+@z
+
+@x [49.1293] l.24495 - pTeX: show_mode
+show_code: @<Show the current meaning of a token, then |goto common_ending|@>;
+@y
+show_code: @<Show the current meaning of a token, then |goto common_ending|@>;
+show_mode: @<Show the current japanese processing mode@>;
+@z
+
+@x l.24597 - pTeX
+@<Dump ML\TeX-specific data@>;
+@<Dump enc\TeX-specific data@>;
+@y
+@<Dump ML\TeX-specific data@>;
+@z
+
+@x l.24631 - pTeX
+@<Undump ML\TeX-specific data@>;
+@<Undump enc\TeX-specific data@>;
+@y
+@<Undump ML\TeX-specific data@>;
+@z
+
+@x l.24982
+font_info:=xmalloc_array(fmemory_word, font_mem_size);
+@y
+font_info:=xmalloc_array(memory_word, font_mem_size);
+@z
+
+@x [50.1320] l.24988 - pTeX:
+@ @<Dump the array info for internal font number |k|@>=
+begin
+dump_things(font_check[null_font], font_ptr+1-null_font);
+@y
+@ @<Dump the array info for internal font number |k|@>=
+begin
+dump_things(font_dir[null_font], font_ptr+1-null_font);
+dump_things(font_num_ext[null_font], font_ptr+1-null_font);
+dump_things(font_check[null_font], font_ptr+1-null_font);
+@z
+
+@x [50.1321] l.25000 - pTeX:
+dump_things(char_base[null_font], font_ptr+1-null_font);
+@y
+dump_things(ctype_base[null_font], font_ptr+1-null_font);
+dump_things(char_base[null_font], font_ptr+1-null_font);
+@z
+
+@x [50.1322] l.25024 - pTeX:
+@<Undump the array info for internal font number |k|@>=
+begin {Allocate the font arrays}
+@y
+@<Undump the array info for internal font number |k|@>=
+begin {Allocate the font arrays}
+font_dir:=xmalloc_array(eight_bits, font_max);
+font_num_ext:=xmalloc_array(integer, font_max);
+@z
+
+@x [50.1322] l.25040 - pTeX:
+char_base:=xmalloc_array(integer, font_max);
+@y
+ctype_base:=xmalloc_array(integer, font_max);
+char_base:=xmalloc_array(integer, font_max);
+@z
+
+@x [50.1322] l.25050 - pTeX:
+undump_things(font_check[null_font], font_ptr+1-null_font);
+@y
+undump_things(font_dir[null_font], font_ptr+1-null_font);
+undump_things(font_num_ext[null_font], font_ptr+1-null_font);
+undump_things(font_check[null_font], font_ptr+1-null_font);
+@z
+
+@x [50.1322] l.25064 - pTeX:
+undump_things(char_base[null_font], font_ptr+1-null_font);
+@y
+undump_things(ctype_base[null_font], font_ptr+1-null_font);
+undump_things(char_base[null_font], font_ptr+1-null_font);
+@z
+
+@x l.25363 - pTeX
+ font_info:=xmalloc_array (fmemory_word, font_mem_size);
+@y
+ font_info:=xmalloc_array (memory_word, font_mem_size);
+@z
+
+@x l.25539 - pTeX
+if enctex_enabled_p then
+ begin wterm(encTeX_banner); wterm_ln(', reencoding enabled.');
+ if translate_filename then begin
+ wterm_ln(' (\xordcode, \xchrcode, \xprncode overridden by TCX)');
+ end;
+ end;
+@y
+@z
+
+@x [51.1337] l.25563 - pTeX:
+ font_check:=xmalloc_array(four_quarters, font_max);
+@y
+ font_dir:=xmalloc_array(eight_bits, font_max);
+ font_num_ext:=xmalloc_array(integer, font_max);
+ font_check:=xmalloc_array(four_quarters, font_max);
+@z
+
+@x [51.1337] l.25577 - pTeX:
+ char_base:=xmalloc_array(integer, font_max);
+@y
+ ctype_base:=xmalloc_array(integer, font_max);
+ char_base:=xmalloc_array(integer, font_max);
+@z
+
+@x [51.1337] l.25587 - pTeX:
+ font_ptr:=null_font; fmem_ptr:=7;
+@y
+ font_ptr:=null_font; fmem_ptr:=7;
+ font_dir[null_font]:=dir_default;
+ font_num_ext[null_font]:=0;
+@z
+
+@x [51.1337] l.25594 - pTeX:
+ char_base[null_font]:=0; width_base[null_font]:=0;
+@y
+ ctype_base[null_font]:=0; char_base[null_font]:=0; width_base[null_font]:=0;
+@z
+
+@x l.25747 - pTeX
+@d write_stream(#) == type(#+1) {stream number (0 to 17)}
+@d mubyte_zero == 64
+@d write_mubyte(#) == subtype(#+1) {mubyte value + |mubyte_zero|}
+@y
+@d write_stream(#) == info(#+1) {stream number (0 to 17)}
+@z
+
+@x l.25849 - pTeX
+ else if (cur_val>15) and (cur_val <> 18) then cur_val:=16;
+ end;
+write_stream(tail):=cur_val;
+if mubyte_out + mubyte_zero < 0 then write_mubyte(tail) := 0
+else if mubyte_out + mubyte_zero >= 2*mubyte_zero then
+ write_mubyte(tail) := 2*mubyte_zero - 1
+ else write_mubyte(tail) := mubyte_out + mubyte_zero;
+@y
+ else if (cur_val>15) and (cur_val <> 18) then cur_val:=16;
+ end;
+write_stream(tail):=cur_val;
+@z
+
+@x l.25881 - pTeX
+begin new_whatsit(special_node,write_node_size);
+if spec_out + mubyte_zero < 0 then write_stream(tail) := 0
+else if spec_out + mubyte_zero >= 2*mubyte_zero then
+ write_stream(tail) := 2*mubyte_zero - 1
+ else write_stream(tail) := spec_out + mubyte_zero;
+if mubyte_out + mubyte_zero < 0 then write_mubyte(tail) := 0
+else if mubyte_out + mubyte_zero >= 2*mubyte_zero then
+ write_mubyte(tail) := 2*mubyte_zero - 1
+ else write_mubyte(tail) := mubyte_out + mubyte_zero;
+if (spec_out = 2) or (spec_out = 3) then
+ if (mubyte_out > 2) or (mubyte_out = -1) or (mubyte_out = -2) then
+ write_noexpanding := true;
+p:=scan_toks(false,true); write_tokens(tail):=def_ref;
+write_noexpanding := false;
+@y
+begin new_whatsit(special_node,write_node_size); write_stream(tail):=null;
+p:=scan_toks(false,true); write_tokens(tail):=def_ref;
+@z
+
+@x l.25909 - pTeX
+if (s = "write") and (write_mubyte (p) <> mubyte_zero) then
+begin
+ print_char ("<"); print_int (write_mubyte(p)-mubyte_zero); print_char (">");
+end;
+@y
+@z
+
+@x l.25925 - pTeX
+if write_stream(p) <> mubyte_zero then
+begin
+ print_char ("<"); print_int (write_stream(p)-mubyte_zero);
+ if (write_stream(p)-mubyte_zero = 2) or
+ (write_stream(p)-mubyte_zero = 3) then
+ begin
+ print_char (":"); print_int (write_mubyte(p)-mubyte_zero);
+ end;
+ print_char (">");
+end;
+@y
+@z
+
+@x l.26009 - pTeX
+spec_sout := spec_out; spec_out := write_stream(p) - mubyte_zero;
+mubyte_sout := mubyte_out; mubyte_out := write_mubyte(p) - mubyte_zero;
+active_noconvert := true;
+mubyte_slog := mubyte_log;
+mubyte_log := 0;
+if (mubyte_out > 0) or (mubyte_out = -1) then mubyte_log := 1;
+if (spec_out = 2) or (spec_out = 3) then
+begin
+ if (mubyte_out > 0) or (mubyte_out = -1) then
+ begin
+ special_printing := true; mubyte_log := 1;
+ end;
+ if mubyte_out > 1 then cs_converting := true;
+end;
+@y
+@z
+
+@x l.26031 - pTeX
+if (spec_out = 1) or (spec_out = 3) then
+ for k:=str_start[str_ptr] to pool_ptr-1 do
+ str_pool[k] := si(xchr[so(str_pool[k])]);
+for k:=str_start[str_ptr] to pool_ptr-1 do dvi_out(so(str_pool[k]));
+spec_out := spec_sout; mubyte_out := mubyte_sout; mubyte_log := mubyte_slog;
+special_printing := false; cs_converting := false;
+active_noconvert := false;
+@y
+ for k:=str_start[str_ptr] to pool_ptr-1 do dvi_out(so(str_pool[k]));
+@z
+
+@x l.26062 - pTeX
+begin
+mubyte_sout := mubyte_out; mubyte_out := write_mubyte(p) - mubyte_zero;
+if (mubyte_out > 2) or (mubyte_out = -1) or (mubyte_out = -2) then
+ write_noexpanding := true;
+@<Expand macros in the token list
+@y
+begin @<Expand macros in the token list
+@z
+
+@x l.26077 - pTeX
+active_noconvert := true;
+if mubyte_out > 1 then cs_converting := true;
+mubyte_slog := mubyte_log;
+if (mubyte_out > 0) or (mubyte_out = -1) then mubyte_log := 1
+else mubyte_log := 0;
+token_show(def_ref); print_ln;
+cs_converting := false; write_noexpanding := false;
+active_noconvert := false;
+mubyte_out := mubyte_sout; mubyte_log := mubyte_slog;
+@y
+ token_show(def_ref); print_ln;
+@z
+
+@x [53.1376] l.26309 - pTeX:
+@<Glob...@> =
+@!debug_format_file: boolean;
+@y
+@<Glob...@> =
+@!debug_format_file: boolean;
+
+@ @<Set init...@>=
+@!debug debug_format_file:=true; @+gubed;
+@z
+
+@x l.26685 - pTeX
+@* \[54/enc\TeX] System-dependent changes for enc\TeX.
+
+@d encTeX_banner == ' encTeX v. Jun. 2004'
+
+@ The boolean variable |enctex_p| is set by web2c according to the given
+command line option (or an entry in the configuration file) before any
+\TeX{} function is called.
+
+@<Global...@> =
+@!enctex_p: boolean;
+
+
+@ The boolean variable |enctex_enabled_p| is used to enable enc\TeX's
+primitives. It is initialised to |false|. When loading a \.{FMT} it
+is set to the value of the boolean |enctex_p| saved in the \.{FMT} file.
+Additionally it is set to the value of |enctex_p| in Ini\TeX.
+
+@<Glob...@>=
+@!enctex_enabled_p:boolean; {enable encTeX}
+
+
+@ @<Set init...@>=
+enctex_enabled_p:=false;
+
+
+@ Auxiliary functions/procedures for enc\TeX{} (by Petr Olsak) follow.
+These functions implement the \.{\\mubyte} code to convert
+the multibytes in |buffer| to one byte or to one control
+sequence. These functions manipulate a mubyte tree: each node of
+this tree is token list with n+1 tokens (first token consist the byte
+from the byte sequence itself and the other tokens point to the
+branches). If you travel from root of the tree to a leaf then you
+find exactly one byte sequence which we have to convert to one byte or
+control sequence. There are two variants of the leaf: the ``definitive
+end'' or the ``middle leaf'' if a longer byte sequence exists and the mubyte
+tree continues under this leaf. First variant is implemented as one
+memory word where the link part includes the token to
+which we have to convert and type part includes the number 60 (normal
+conversion) or 1..52 (insert the control sequence).
+The second variant of ``middle leaf'' is implemented as two memory words:
+first one has a type advanced by 64 and link points to the second
+word where info part includes the token to which we have to convert
+and link points to the next token list with the branches of
+the subtree.
+
+The inverse: one byte to multi byte (for log printing and \.{\\write}
+printing) is implemented via a pool. Each multibyte sequence is stored
+in a pool as a string and |mubyte_write|[{\it printed char\/}] points
+to this string.
+
+@d new_mubyte_node ==
+ link (p) := get_avail; p := link (p); info (p) := get_avail; p := info (p)
+@d subinfo (#) == subtype (#)
+
+@<Basic printing...@>=
+{ read |buffer|[|i|] and convert multibyte. |i| should have been
+ of type 0..|buf_size|, but web2c doesn't like that construct in
+ argument lists. }
+function read_buffer(var i:integer):ASCII_code;
+var p: pointer;
+ last_found: integer;
+ last_type: integer;
+begin
+ mubyte_skip := 0; mubyte_token := 0;
+ read_buffer := buffer[i];
+ if mubyte_in = 0 then
+ begin
+ if mubyte_keep > 0 then mubyte_keep := 0;
+ return ;
+ end;
+ last_found := -2;
+ if (i = start) and (not mubyte_start) then
+ begin
+ mubyte_keep := 0;
+ if (end_line_char >= 0) and (end_line_char < 256) then
+ if mubyte_read [end_line_char] <> null then
+ begin
+ mubyte_start := true; mubyte_skip := -1;
+ p := mubyte_read [end_line_char];
+ goto continue;
+ end;
+ end;
+restart:
+ mubyte_start := false;
+ if (mubyte_read [buffer[i]] = null) or (mubyte_keep > 0) then
+ begin
+ if mubyte_keep > 0 then decr (mubyte_keep);
+ return ;
+ end;
+ p := mubyte_read [buffer[i]];
+continue:
+ if type (p) >= 64 then
+ begin
+ last_type := type (p) - 64;
+ p := link (p);
+ mubyte_token := info (p); last_found := mubyte_skip;
+ end else if type (p) > 0 then
+ begin
+ last_type := type (p);
+ mubyte_token := link (p);
+ goto found;
+ end;
+ incr (mubyte_skip);
+ if i + mubyte_skip > limit then
+ begin
+ mubyte_skip := 0;
+ if mubyte_start then goto restart;
+ return;
+ end;
+ repeat
+ p := link (p);
+ if subinfo (info(p)) = buffer [i+mubyte_skip] then
+ begin
+ p := info (p); goto continue;
+ end;
+ until link (p) = null;
+ mubyte_skip := 0;
+ if mubyte_start then goto restart;
+ if last_found = -2 then return; { no found }
+ mubyte_skip := last_found;
+found:
+ if mubyte_token < 256 then { multibyte to one byte }
+ begin
+ read_buffer := mubyte_token; mubyte_token := 0;
+ i := i + mubyte_skip;
+ if mubyte_start and (i >= start) then mubyte_start := false;
+ return;
+ end else begin { multibyte to control sequence }
+ read_buffer := 0;
+ if last_type = 60 then { normal conversion }
+ i := i + mubyte_skip
+ else begin { insert control sequence }
+ decr (i); mubyte_keep := last_type;
+ if i < start then mubyte_start := true;
+ if last_type = 52 then mubyte_keep := 10000;
+ if last_type = 51 then mubyte_keep := mubyte_skip + 1;
+ mubyte_skip := -1;
+ end;
+ if mubyte_start and (i >= start) then mubyte_start := false;
+ return;
+ end;
+exit: end;
+
+@ @<Declare additional routines for enc\TeX@>=
+procedure mubyte_update; { saves new string to mubyte tree }
+var j: pool_pointer;
+ p: pointer;
+ q: pointer;
+ in_mutree: integer;
+begin
+ j := str_start [str_ptr];
+ if mubyte_read [so(str_pool[j])] = null then
+ begin
+ in_mutree := 0;
+ p := get_avail;
+ mubyte_read [so(str_pool[j])] := p;
+ subinfo (p) := so(str_pool[j]); type (p) := 0;
+ end else begin
+ in_mutree := 1;
+ p := mubyte_read [so(str_pool[j])];
+ end;
+ incr (j);
+ while j < pool_ptr do
+ begin
+ if in_mutree = 0 then
+ begin
+ new_mubyte_node; subinfo (p) := so(str_pool[j]); type (p) := 0;
+ end else { |in_mutree| = 1 }
+ if (type (p) > 0) and (type (p) < 64) then
+ begin
+ type (p) := type (p) + 64;
+ q := link (p); link (p) := get_avail; p := link (p);
+ info (p) := q;
+ new_mubyte_node; subinfo (p) := so(str_pool[j]); type (p) := 0;
+ in_mutree := 0;
+ end else begin
+ if type (p) >= 64 then p := link (p);
+ repeat
+ p := link (p);
+ if subinfo (info(p)) = so(str_pool[j]) then
+ begin
+ p := info (p);
+ goto continue;
+ end;
+ until link (p) = null;
+ new_mubyte_node; subinfo (p) := so(str_pool[j]); type (p) := 0;
+ in_mutree := 0;
+ end;
+continue:
+ incr (j);
+ end;
+ if in_mutree = 1 then
+ begin
+ if type (p) = 0 then
+ begin
+ type (p) := mubyte_prefix + 64;
+ q := link (p); link (p) := get_avail; p := link (p);
+ link (p) := q; info (p) := mubyte_stoken;
+ return;
+ end;
+ if type (p) >= 64 then
+ begin
+ type (p) := mubyte_prefix + 64;
+ p := link (p); info (p) := mubyte_stoken;
+ return;
+ end;
+ end;
+ type (p) := mubyte_prefix;
+ link (p) := mubyte_stoken;
+exit: end;
+@#
+procedure dispose_munode (p: pointer); { frees a mu subtree recursivelly }
+var q: pointer;
+begin
+ if (type (p) > 0) and (type (p) < 64) then free_avail (p)
+ else begin
+ if type (p) >= 64 then
+ begin
+ q := link (p); free_avail (p); p := q;
+ end;
+ q := link (p); free_avail (p); p := q;
+ while p <> null do
+ begin
+ dispose_munode (info (p));
+ q := link (p);
+ free_avail (p);
+ p := q;
+ end;
+ end;
+end;
+@#
+procedure dispose_mutableout (cs: pointer); { frees record from out table }
+var p, q, r: pointer;
+begin
+ p := mubyte_cswrite [cs mod 128];
+ r := null;
+ while p <> null do
+ if info (p) = cs then
+ begin
+ if r <> null then link (r) := link (link (p))
+ else mubyte_cswrite[cs mod 128] := link (link (p));
+ q := link (link(p));
+ free_avail (link(p)); free_avail (p);
+ p := q;
+ end else begin
+ r := link (p); p := link (r);
+ end;
+end;
+
+@ The |print_buffer| procedure prints one character from |buffer|[|i|].
+It also increases |i| to the next character in the buffer.
+
+@<Basic printing...@>=
+{ print one char from |buffer|[|i|]. |i| should have been of type
+ 0..|buf_size|, but web2c doesn't like that construct in argument lists. }
+procedure print_buffer(var i:integer);
+var c: ASCII_code;
+begin
+ if mubyte_in = 0 then print (buffer[i]) { normal TeX }
+ else if mubyte_log > 0 then print_char (buffer[i])
+ else begin
+ c := read_buffer (i);
+ if mubyte_token > 0 then print_cs (mubyte_token-cs_token_flag)
+ else print (c);
+ end;
+ incr (i);
+end;
+
+@ Additional material to dump for enc\TeX. This includes whether
+enc\TeX is enabled, and if it is we also have to dump the \.{\\mubyte}
+arrays.
+
+@<Dump enc\TeX-specific data@>=
+dump_int(@"45435458); {enc\TeX's magic constant: "ECTX"}
+if not enctex_p then dump_int(0)
+else begin
+ dump_int(1);
+ dump_things(mubyte_read[0], 256);
+ dump_things(mubyte_write[0], 256);
+ dump_things(mubyte_cswrite[0], 128);
+end;
+
+@ Undumping the additional material we dumped for enc\TeX. This includes
+conditionally undumping the \.{\\mubyte} arrays.
+
+@<Undump enc\TeX-specific data@>=
+undump_int(x); {check magic constant of enc\TeX}
+if x<>@"45435458 then goto bad_fmt;
+undump_int(x); {undump |enctex_p| flag into |enctex_enabled_p|}
+if x=0 then enctex_enabled_p:=false
+else if x<>1 then goto bad_fmt
+else begin
+ enctex_enabled_p:=true;
+ undump_things(mubyte_read[0], 256);
+ undump_things(mubyte_write[0], 256);
+ undump_things(mubyte_cswrite[0], 128);
+end;
+
+@y
+@z
+
+@x l.26984 - pTeX
+@* \[54] System-dependent changes.
+@y
+@* \[55/p\TeX] System-dependent changes for p\TeX.
+This section described extended variables, procesures, functions and so on
+for pTeX.
+
+@<Declare procedures that scan font-related stuff@>=
+function get_jfm_pos(@!kcode:KANJI_code;@!f:internal_font_number):eight_bits;
+var @!jc:KANJI_code; {temporary register for KANJI}
+@!sp,@!mp,@!ep:pointer;
+begin@/
+if (proc_kanji_code=sjis_enc) then jc:=SJIStoJIS(kcode)
+else jc:=EUCtoJIS(kcode);
+sp:=1; { start position }
+ep:=font_num_ext[f]-1; { end position }
+if (kchar_code(f)(sp)<=jc)and(jc<=kchar_code(f)(ep)) then
+ begin while (sp <= ep) do
+ begin mp:=sp+((ep-sp) div 2);
+ if jc<kchar_code(f)(mp) then ep:=mp-1
+ else if jc>kchar_code(f)(mp) then sp:=mp+1
+ else
+ begin get_jfm_pos:=kchar_type(f)(mp); return;
+ end;
+ end;
+ end;
+get_jfm_pos:=kchar_type(f)(0);
+end;
+
+@ Following codes are used to calcutation a KANJI width and height.
+
+@<Local variables for dimension calculations@>=
+@!t: eight_bits;
+
+@ @<The KANJI width for |cur_jfont|@>=
+if direction=dir_tate then
+ v:=char_width(cur_tfont)(orig_char_info(cur_tfont)(qi(0)))
+else
+ v:=char_width(cur_jfont)(orig_char_info(cur_jfont)(qi(0)))
+
+@ @<The KANJI height for |cur_jfont|@>=
+if direction=dir_tate then begin
+ t:=height_depth(orig_char_info(cur_tfont)(qi(0)));
+ v:=char_height(cur_tfont)(t)+char_depth(cur_tfont)(t);
+end else begin
+ t:=height_depth(orig_char_info(cur_jfont)(qi(0)));
+ v:=char_height(cur_jfont)(t)+char_depth(cur_jfont)(t);
+end
+
+@ set a kansuji character.
+
+@ @<Put each...@>=
+primitive("kansujichar",set_kansuji_char,0);
+@!@:kansujichar_}{\.{\\kansujichar} primitive@>
+
+@ @<Cases of |print_cmd_chr|...@>=
+set_kansuji_char: print_esc("kansujichar");
+
+@ @<Assignments@>=
+set_kansuji_char:
+begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int;
+if not check_kanji(cur_val) then
+ begin print_err("Invalid KANSUJI char (");
+ print_hex(cur_val); print_char(")");
+@.Invalid KANSUJI char@>
+ help1("I'm skip this control sequences.");@/
+ error; return;
+ end
+else if (n<0)or(n>9) then
+ begin print_err("Invalid KANSUJI number ("); print_int(n); print_char(")");
+@.Invalid KANSUJI number@>
+ help1("I'm skip this control sequences.");@/
+ error; return;
+ end
+else
+ begin
+ if (proc_kanji_code=sjis_enc) then
+ define(kansuji_base+n,n,tokanji(SJIStoJIS(cur_val)))
+ else if (proc_kanji_code=euc_enc) then
+ define(kansuji_base+n,n,tokanji(EUCtoJIS(cur_val)))
+ else if (proc_kanji_code=jis_enc) then
+ define(kansuji_base+n,n,tokanji(cur_val));
+ end;
+end;
+
+@ |print_kansuji| procedure converts a number to KANJI number.
+
+@ @<Declare procedures needed in |scan_something|@>=
+procedure print_kansuji(@!n:integer);
+var @!k:0..23; {index to current digit; we assume that $|n|<10^{23}$}
+@!cx: KANJI_code; {temporary register for KANJI}
+begin k:=0;
+ if n<0 then return; {nonpositive input produces no output}
+ repeat dig[k]:=n mod 10; n:=n div 10; incr(k);
+ until n=0;
+ begin while k>0 do
+ begin decr(k);
+ cx:=kansuji_char(dig[k]);
+ if (proc_kanji_code=sjis_enc) then cx:=JIStoSJIS(cx)
+ else if (proc_kanji_code=euc_enc) then cx:=JIStoEUC(cx);
+ print_kanji(cx);
+ end;
+ end;
+end;
+
+@ pTeX inserts a glue specified by \.{\\kanjiskip} between 2byte-characters,
+automatically, if \.{\\autospacing}. This glue is suppressed by
+\.{\\noautospacing}.
+\.{\\xkanjiskip}, \.{\\noautoxspacing}, \.{\\autoxspacing}, \.{\\xspcode} is
+used to control between 2byte and 1byte characters.
+
+@d reset_auto_spacing_code=0
+@d set_auto_spacing_code=1
+@d reset_auto_xspacing_code=2
+@d set_auto_xspacing_code=3
+
+@<Put each...@>=
+primitive("autospacing",set_auto_spacing,set_auto_spacing_code);
+@!@:auto_spacing_}{\.{\\autospacing} primitive@>
+primitive("noautospacing",set_auto_spacing,reset_auto_spacing_code);
+@!@:no_auto_spacing_}{\.{\\noautospacing} primitive@>
+primitive("autoxspacing",set_auto_spacing,set_auto_xspacing_code);
+@!@:auto_xspacing_}{\.{\\autoxspacing} primitive@>
+primitive("noautoxspacing",set_auto_spacing,reset_auto_xspacing_code);
+@!@:no_auto_xspacing_}{\.{\\noautoxspacing} primitive@>
+
+@ @<Cases of |print_cmd_chr|...@>=
+set_auto_spacing:begin
+ if (chr_code mod 2)=0 then print_esc("noauto") else print_esc("auto");
+ if chr_code<2 then print("spacing") else print("xspacing");
+end;
+
+@ @<Assignments@>=
+set_auto_spacing:begin
+ if cur_chr<2 then p:=auto_spacing_code
+ else begin p:=auto_xspacing_code; cur_chr:=(cur_chr mod 2); end;
+ define(p,data,cur_chr);
+end;
+
+@ Following codes are used in section 49.
+
+@<Show the current japanese processing mode@>=
+begin print_nl("> ");
+if auto_spacing>0 then print("auto spacing mode; ")
+ else print("no auto spacing mode; ");
+print_nl("> ");
+if auto_xspacing>0 then print("auto xspacing mode")
+ else print("no auto xspacing mode");
+goto common_ending;
+end
+
+@ The \.{\\inhibitglue} primitive control to insert a glue specified
+JFM (Japanese Font Metic) file. The \.{\\inhibitxspcode} is used to control
+inserting a space between 2byte-char and 1byte-char.
+
+@d inhibit_both=0 {disable to insert space before 2byte-char and after it}
+@d inhibit_previous=1 {disable to insert space before 2byte-char}
+@d inhibit_after=2 {disable to insert space after 2byte-char}
+@d no_entry=1000
+@d new_pos=0
+@d cur_pos=1
+
+@<Global...@>=
+ inhibit_glue_flag:boolean;
+
+@ @<Set init...@>=
+ inhibit_glue_flag:=false;
+
+@ @<Cases of |main_control| that don't...@>=
+ any_mode(inhibit_glue): inhibit_glue_flag:=true;
+
+@ @<Put each...@>=
+primitive("inhibitglue",inhibit_glue,0);
+@!@:inhibit_glue_}{\.{\\inhibitglue} primitive@>
+primitive("inhibitxspcode",assign_inhibit_xsp_code,inhibit_xsp_code_base);
+@!@:inhibit_xsp_code_}{\.{\\inhibitxspcode} primitive@>
+
+@ @<Cases of |print_cmd_chr|...@>=
+inhibit_glue: print_esc("inhibitglue");
+assign_inhibit_xsp_code: print_esc("inhibitxspcode");
+
+@ @<Declare procedures needed in |scan_something|@>=
+function get_inhibit_pos(c:KANJI_code; n:small_number):pointer;
+label done, done1;
+var p,s:pointer;
+begin s:=calc_pos(c); p:=s;
+if n=new_pos then
+ begin repeat
+ if (inhibit_xsp_code(p)=0)or(inhibit_xsp_code(p)=c) then goto done;
+ incr(p); if p>255 then p:=0;
+ until s=p; p:=no_entry;
+ end
+else
+ begin repeat
+ if inhibit_xsp_code(p)=0 then goto done1;
+ if inhibit_xsp_code(p)=c then goto done;
+ incr(p); if p>255 then p:=0;
+ until s=p;
+done1: p:=no_entry;
+ end;
+done: get_inhibit_pos:=p;
+end;
+
+@ @<Assignments@>=
+assign_inhibit_xsp_code:
+begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int;
+if check_kanji(n) then
+ begin j:=get_inhibit_pos(tokanji(n),new_pos);
+ if j=no_entry then
+ begin print_err("Inhibit table is full!!");
+ help1("I'm skip this control sequences.");@/
+ error; return;
+ end;
+ define(inhibit_xsp_code_base+j,cur_val,n);
+ end
+else
+ begin print_err("Invalid KANJI code ("); print_hex(n); print_char(")");
+@.Invalid KANJI code@>
+ help1("I'm skip this control sequences.");@/
+ error; return;
+ end;
+end;
+
+@ @<Fetch inhibit type from some table@>=
+begin scan_int; q:=get_inhibit_pos(tokanji(cur_val),cur_pos);
+cur_val_level:=int_val; cur_val:=3;
+if q<>no_entry then cur_val:=inhibit_xsp_type(q);
+end
+
+@ The \.{\\prebreakpenalty} is used to specified amount of penalties inserted
+before the 2byte-char which is first argument of this primitive.
+The \.{\\postbreakpenalty} is inserted after the 2byte-char.
+
+@d pre_break_penalty_code=1
+@d post_break_penalty_code=2
+
+@<Put each...@>=
+primitive("prebreakpenalty",assign_kinsoku,pre_break_penalty_code);
+@!@:pre_break_penalty_}{\.{\\prebreakpenalty} primitive@>
+primitive("postbreakpenalty",assign_kinsoku,post_break_penalty_code);
+@!@:post_break_penalty_}{\.{\\postbreakpenalty} primitive@>
+
+@ @<Cases of |print_cmd_chr|...@>=
+assign_kinsoku: case chr_code of
+ pre_break_penalty_code: print_esc("prebreakpenalty");
+ post_break_penalty_code: print_esc("postbreakpenalty");
+ endcases;
+
+@ @<Declare procedures needed in |scan_something|@>=
+function get_kinsoku_pos(c:KANJI_code; n:small_number):pointer;
+label done, done1;
+var p,s:pointer;
+begin s:=calc_pos(c); p:=s;
+@!debug
+print_ln; print("c:="); print_int(c); print(", p:="); print_int(s);
+if p+kinsoku_base<0 then
+ begin print("p is negative value"); print_ln;
+ end;
+gubed
+if n=new_pos then
+ begin repeat
+ if (kinsoku_type(p)=0)or(kinsoku_code(p)=c) then goto done;
+ incr(p); if p>255 then p:=0;
+ until s=p;
+ p:=no_entry;
+ end
+else
+ begin repeat
+ if kinsoku_type(p)=0 then goto done1;
+ if kinsoku_code(p)=c then goto done;
+ incr(p); if p>255 then p:=0;
+ until s=p;
+done1: p:=no_entry;
+ end;
+done: get_kinsoku_pos:=p;
+end;
+
+@ @<Assignments@>=
+assign_kinsoku:
+begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int;
+if check_kanji(n) then
+ begin j:=get_kinsoku_pos(tokanji(n),new_pos);
+ if j=no_entry then
+ begin print_err("KINSOKU table is full!!");
+ help1("I'm skip this control sequences.");@/
+ error; return;
+ end;
+ if (p=pre_break_penalty_code)or(p=post_break_penalty_code) then
+ begin define(kinsoku_base+j,p,tokanji(n));
+ word_define(kinsoku_penalty_base+j,cur_val);
+ end
+ else confusion("kinsoku");
+@:this can't happen kinsoku}{\quad kinsoku@>
+ end
+else
+ begin print_err("Invalid KANJI code for ");
+ if (p=pre_break_penalty_code) then print("pre")
+ else if (p=post_break_penalty_code) then print("post")
+ else print_char("?");
+ print("breakpenalty ("); print_hex(n); print_char(")");
+@.Invalid KANJI code@>
+ help1("I'm skip this control sequences.");@/
+ error; return;
+ end;
+end;
+
+@ @<Fetch breaking penalty from some table@>=
+begin scan_int; q:=get_kinsoku_pos(tokanji(cur_val),cur_pos);
+cur_val_level:=int_val; cur_val:=0;
+if (q<>no_entry)and(m=kinsoku_type(q)) then
+ scanned_result(kinsoku_penalty(q))(int_val);
+end
+
+@ Following codes are used in |main_control|.
+
+@<Insert kinsoku penalty@>=
+begin kp:=get_kinsoku_pos(cx,cur_pos);
+if (kp<>no_entry) then
+ begin if (kinsoku_type(kp)=pre_break_penalty_code) then
+ begin if (not is_char_node(cur_q))and(type(cur_q)=penalty_node) then
+ penalty(cur_q):=penalty(cur_q)+kinsoku_penalty(kp)
+ else
+ begin main_p:=link(cur_q); link(cur_q):=new_penalty(kinsoku_penalty(kp));
+ subtype(link(cur_q)):=kinsoku_pena; link(link(cur_q)):=main_p;
+ end;
+ end
+ else if (kinsoku_type(kp)=post_break_penalty_code) then
+ begin tail_append(new_penalty(kinsoku_penalty(kp)));
+ subtype(tail):=kinsoku_pena;
+ end;
+ end;
+end;
+
+@ @<Insert |pre_break_penalty| of |cur_chr|@>=
+begin kp:=get_kinsoku_pos(cur_chr,cur_pos);
+if (kp<>no_entry) then
+ begin if (kinsoku_type(kp)=pre_break_penalty_code) then
+ if (not is_char_node(tail))and(type(tail)=penalty_node) then
+ penalty(tail):=penalty(tail)+kinsoku_penalty(kp)
+ else
+ begin tail_append(new_penalty(kinsoku_penalty(kp)));
+ subtype(tail):=kinsoku_pena;
+ end;
+ end;
+end;
+
+@ @<Insert |post_break_penalty|@>=
+begin kp:=get_kinsoku_pos(cx,cur_pos);
+if (kp<>no_entry) then
+ begin if (kinsoku_type(kp)=post_break_penalty_code) then
+ begin tail_append(new_penalty(kinsoku_penalty(kp)));
+ subtype(tail):=kinsoku_pena;
+ end;
+ end;
+end;
+
+@ This is a part of section 32.
+
+The procedure |synch_dir| is used in |hlist_out| and |vlist_out|.
+
+@d dvi_yoko=0
+@d dvi_tate=1
+@d dvi_dtou=3
+
+@<Glob...@>=
+@!dvi_dir:integer; {a \.{DVI} reader program thinks we direct to}
+@!cur_dir:integer; {\TeX\ thinks we direct to}
+@!page_dir:eight_bits;
+
+@ @<Set init...@>=
+page_dir:=dir_yoko;
+
+@ @<Declare procedures needed in |hlist_out|, |vlist_out|@>=
+procedure synch_dir;
+var tmp:scaled; {temporary resister}
+begin
+ case cur_dir of
+ dir_yoko:
+ if dvi_dir<>cur_dir then begin
+ synch_h; synch_v; dvi_out(dirchg); dvi_out(dvi_yoko);
+ dir_used:=true;
+ case dvi_dir of
+ dir_tate: begin tmp:=cur_h; cur_h:=-cur_v; cur_v:=tmp end;
+ dir_dtou: begin tmp:=cur_h; cur_h:=cur_v; cur_v:=-tmp end;
+ endcases;
+ dvi_h:=cur_h; dvi_v:=cur_v; dvi_dir:=cur_dir;
+ end;
+ dir_tate:
+ if dvi_dir<>cur_dir then begin
+ synch_h; synch_v; dvi_out(dirchg); dvi_out(dvi_tate);
+ dir_used:=true;
+ case dvi_dir of
+ dir_yoko: begin tmp:=cur_h; cur_h:=cur_v; cur_v:=-tmp end;
+ dir_dtou: begin cur_v:=-cur_v; cur_h:=-cur_h; end;
+ endcases;
+ dvi_h:=cur_h; dvi_v:=cur_v; dvi_dir:=cur_dir;
+ end;
+ dir_dtou:
+ if dvi_dir<>cur_dir then begin
+ synch_h; synch_v; dvi_out(dirchg); dvi_out(dvi_dtou);
+ dir_used:=true;
+ case dvi_dir of
+ dir_yoko: begin tmp:=cur_h; cur_h:=-cur_v; cur_v:=tmp end;
+ dir_tate: begin cur_v:=-cur_v; cur_h:=-cur_h; end;
+ endcases;
+ dvi_h:=cur_h; dvi_v:=cur_v; dvi_dir:=cur_dir;
+ end;
+ othercases
+ confusion("synch_dir");
+ endcases
+end;
+
+@ This function is called from |adjust_hlist| to used to check, whether
+a list which pointed |box_p| contain a printing character.
+If the list contain such a character, then return `true', otherwise `false'.
+If the first matter is a character, |first_char| is stored it.
+|last_char| is stored a last character. If no printing characters exist
+in the list, |first_char| and |last_char| is null.
+@^recursion@>
+
+@<Glob...@>=
+@!first_char:pointer; {first printable character}
+@!last_char:pointer; {last printable character}
+@!find_first_char:boolean; {find for a first printable character?}
+
+@ @<Declare procedures needed in |hlist_out|, |vlist_out|@>=
+function check_box(box_p:pointer):boolean;
+label done;
+var @!p:pointer; {run through the current box}
+@!flag:boolean; {found any printable character?}
+begin flag:=false; p:=box_p;
+while p<>null do
+ begin if is_char_node(p) then
+ repeat
+ if find_first_char then
+ begin first_char:=p; find_first_char:=false
+ end;
+ last_char:=p; flag:=true;
+ if font_dir[font(p)]<>dir_default then p:=link(p);
+ p:=link(p);
+ if p=null then goto done;
+ until not is_char_node(p);
+ case type(p) of
+ hlist_node:
+ begin flag:=true;
+ if shift_amount(p)=0 then
+ begin if check_box(list_ptr(p)) then flag:=true;
+ end
+ else if find_first_char then find_first_char:=false
+ else last_char:=null;
+ end;
+ ligature_node: if check_box(lig_ptr(p)) then flag:=true;
+ ins_node,disp_node,mark_node,adjust_node,whatsit_node,penalty_node:
+ do_nothing;
+ othercases begin flag:=true;
+ if find_first_char then find_first_char:=false
+ else last_char:=null;
+ end;
+ endcases;
+ p:=link(p);
+ end;
+done: check_box:=flag;
+end;
+
+@ Following procedure |adjust_hlist| inserts \.{\\xkanjiskip} between
+2byte-char and 1byte-char in hlist which pointed |p|.
+Note that the skip is inserted into a place where too difficult to decide
+whether inserting or not (i.e, before penalty, after penalty).
+
+If |pf| is true then insert |jchr_widow_penalty| that is penalty for
+creating a widow KANJI character line.
+
+@d no_skip=0
+@d after_schar=1 {denote after single byte character}
+@d after_wchar=2 {denote after double bytes character}
+
+@<Declare procedures needed in |hlist_out|, |vlist_out|@>=
+procedure adjust_hlist(p:pointer;pf:boolean);
+label exit;
+var q,s,t,u,v,x,z:pointer;
+ i,k:halfword;
+ insert_skip:no_skip..after_wchar;
+ cx:KANJI_code; {temporaly register for KANJI character}
+ ax:ASCII_code; {temporaly register for ASCII character}
+ do_ins:boolean; {for inserting |xkanji_skip| into prevous (or after) KANJI}
+begin if link(p)=null then goto exit;
+if auto_spacing>0 then
+ begin delete_glue_ref(space_ptr(p)); space_ptr(p):=kanji_skip;
+ add_glue_ref(kanji_skip);
+ end;
+if auto_xspacing>0 then
+ begin delete_glue_ref(xspace_ptr(p)); xspace_ptr(p):=xkanji_skip;
+ add_glue_ref(xkanji_skip);
+ end;
+u:=space_ptr(p); add_glue_ref(u);
+s:=xspace_ptr(p); add_glue_ref(s);
+if (not is_char_node(link(p))) {p1.0.9d}
+ and(type(link(p))=glue_node)and(subtype(link(p))=jfm_skip+1) then
+ begin v:=link(p); link(p):=link(v);
+ fast_delete_glue_ref(glue_ptr(v)); free_node(v,small_node_size);
+ end;
+i:=0; insert_skip:=no_skip; p:=link(p); v:=p; q:=p;
+while p<>null do
+ begin if is_char_node(p) then
+ begin repeat @<Insert a space around the character |p|@>;
+ q:=p; p:=link(p); incr(i);
+ if (i>5)and(pf) then
+ begin if is_char_node(v) then
+ if font_dir[font(v)]<>dir_default then v:=link(v);
+ v:=link(v);
+ end;
+ until not is_char_node(p);
+ end
+ else
+ begin case type(p) of
+ hlist_node: @<Insert hbox surround spacing@>;
+ ligature_node: @<Insert ligature surround spacing@>;
+ penalty_node,disp_node: @<Insert penalty or displace surround spacing@>;
+ kern_node: if (insert_skip=after_schar)and(subtype(p)<>explicit) then
+ do_nothing else insert_skip:=no_skip;
+ math_node: @<Insert math surround spacing@>;
+ mark_node,adjust_node,ins_node,whatsit_node:
+ {These nodes are vanished when typeset is done}
+ do_nothing;
+ othercases insert_skip:=no_skip;
+ endcases;
+ q:=p; p:=link(p);
+ end;
+ end;
+if (not is_char_node(q))and(type(q)=glue_node)and(subtype(q)=jfm_skip+1) then
+ begin fast_delete_glue_ref(glue_ptr(q));
+ glue_ptr(q):=zero_glue; add_glue_ref(zero_glue);
+ end;
+delete_glue_ref(u); delete_glue_ref(s);
+if (v<>null)and(pf)and(i>5) then @<Make |jchr_widow_penalty| node@>;
+exit:
+end;
+
+@ @<Insert a space around the character |p|@>=
+if font_dir[font(p)]<>dir_default then
+ begin KANJI(cx):=info(link(p));
+ if insert_skip=after_schar then @<Insert ASCII-KANJI spacing@>;
+ p:=link(p); insert_skip:=after_wchar;
+ end
+else
+ begin ax:=qo(character(p));
+ if insert_skip=after_wchar then @<Insert KANJI-ASCII spacing@>;
+ if auto_xsp_code(ax)>=2 then
+ insert_skip:=after_schar else insert_skip:=no_skip;
+ end
+
+@ @<Insert hbox surround spacing@>=
+begin find_first_char:=true; first_char:=null; last_char:=null;
+if (shift_amount(p)=0) then
+ begin if check_box(list_ptr(p)) then
+ begin if first_char<>null then @<Insert a space before the |first_char|@>;
+ if last_char<>null then
+ begin @<Insert a space after the |last_char|@>;
+ end else insert_skip:=no_skip;
+ end else insert_skip:=no_skip;
+ end else insert_skip:=no_skip;
+end
+
+@ @<Insert a space before the |first_char|@>=
+if font_dir[font(first_char)]<>dir_default then
+ begin KANJI(cx):=info(link(first_char));
+ if insert_skip=after_schar then @<Insert ASCII-KANJI spacing@>
+ else if insert_skip=after_wchar then @<Insert KANJI-KANJI spacing@>;
+ insert_skip:=after_wchar;
+ end
+else
+ begin ax:=qo(character(first_char));
+ if insert_skip=after_wchar then @<Insert KANJI-ASCII spacing@>;
+ if auto_xsp_code(ax)>=2 then
+ insert_skip:=after_schar else insert_skip:=no_skip;
+ end;
+
+@ @<Insert a space after the |last_char|@>=
+if font_dir[font(last_char)]<>dir_default then
+ begin insert_skip:=after_wchar;
+ if (is_char_node(link(p)))and(font_dir[font(link(p))]<>dir_default) then
+ begin @<Append KANJI-KANJI spacing@>; p:=link(p);
+ end;
+ end
+else
+ begin ax:=qo(character(last_char));
+ if auto_xsp_code(ax)>=2 then
+ insert_skip:=after_schar else insert_skip:=no_skip;
+ end;
+
+@ @<Insert math surround spacing@>=
+begin if (subtype(p)=before)and(insert_skip=after_wchar) then
+ begin ax:=qo("0"); @<Insert KANJI-ASCII spacing@>;
+ insert_skip:=no_skip;
+ end
+else if (subtype(p)=after) then
+ begin ax:=qo("0"); insert_skip:=after_schar;
+ end
+else insert_skip:=no_skip;
+end
+
+@ @<Insert ligature surround spacing@>=
+begin t:=lig_ptr(p);
+if is_char_node(t) then
+ begin ax:=qo(character(t));
+ if insert_skip=after_wchar then @<Insert KANJI-ASCII spacing@>;
+ while link(t)<>null do t:=link(t);
+ if is_char_node(t) then
+ begin ax:=qo(character(t));
+ if auto_xsp_code(ax)>=2 then
+ insert_skip:=after_schar else insert_skip:=no_skip;
+ end;
+ end;
+end
+
+@ @<Insert penalty or displace surround spacing@>=
+begin if is_char_node(link(p)) then
+ begin q:=p; p:=link(p);
+ if font_dir[font(p)]<>dir_default then
+ begin KANJI(cx):=info(link(p));
+ if insert_skip=after_schar then @<Insert ASCII-KANJI spacing@>
+ else if insert_skip=after_wchar then @<Insert KANJI-KANJI spacing@>;
+ p:=link(p); insert_skip:=after_wchar;
+ end
+ else
+ begin ax:=qo(character(p));
+ if insert_skip=after_wchar then @<Insert KANJI-ASCII spacing@>;
+ if auto_xsp_code(ax)>=2 then
+ insert_skip:=after_schar else insert_skip:=no_skip;
+ end;
+ end
+end
+
+@ @<Insert ASCII-KANJI spacing@>=
+begin
+ begin x:=get_inhibit_pos(cx,cur_pos);
+ if x<>no_entry then
+ if (inhibit_xsp_type(x)=inhibit_both)or
+ (inhibit_xsp_type(x)=inhibit_previous) then
+ do_ins:=false else do_ins:=true
+ else do_ins:=true;
+ end;
+if do_ins then
+ begin z:=new_glue(s); subtype(z):=xkanji_skip_code+1;
+ link(z):=link(q); link(q):=z; q:=z;
+ end;
+end
+
+@ @<Insert KANJI-ASCII spacing@>=
+begin if (auto_xsp_code(ax) mod 2)=1 then
+ begin x:=get_inhibit_pos(cx,cur_pos);
+ if x<>no_entry then
+ if (inhibit_xsp_type(x)=inhibit_both)or
+ (inhibit_xsp_type(x)=inhibit_after) then
+ do_ins:=false else do_ins:=true
+ else do_ins:=true;
+ end
+else do_ins:=false;
+if do_ins then
+ begin z:=new_glue(s); subtype(z):=xkanji_skip_code+1;
+ link(z):=link(q); link(q):=z; q:=z;
+ end;
+end
+
+@ @<Insert KANJI-KANJI spacing@>=
+begin z:=new_glue(u); subtype(z):=kanji_skip_code+1;
+link(z):=link(q); link(q):=z; q:=z;
+end
+
+@ @<Append KANJI-KANJI spacing@>=
+begin z:=new_glue(u); subtype(z):=kanji_skip_code+1;
+link(z):=link(p); link(p):=z; p:=link(z); q:=z;
+end
+
+@ @<Make |jchr_widow_penalty| node@>=
+begin q:=v; p:=link(v);
+if (is_char_node(v))and(font_dir[font(v)]<>dir_default) then
+ begin q:=p; p:=link(p);
+ end;
+t:=q; s:=null;
+@<Seek list and make |t| pointing widow penalty position@>;
+if (s<>null) then
+ begin s:=link(t);
+ if (not is_char_node(s))and(type(s)=penalty_node) then
+ penalty(s):=penalty(s)+jchr_widow_penalty
+ else if (jchr_widow_penalty<>0) then
+ begin s:=new_penalty(jchr_widow_penalty); subtype(s):=widow_pena;
+ link(s):=link(t); link(t):=s; t:=link(s);
+ while(not is_char_node(t)) do
+ begin if (type(t)=glue_node)or(type(t)=kern_node) then goto exit;
+ t:=link(t);
+ end;
+ z:=new_glue(u); subtype(z):=kanji_skip_code+1;
+ link(z):=link(s); link(s):=z;
+ end;
+ end;
+end;
+
+@ @<Seek list and make |t| pointing widow penalty position@>=
+while(p<>null) do
+begin if is_char_node(p) then
+ begin if font_dir[font(p)]<>dir_default then
+ begin KANJI(cx):=info(link(p)); i:=kcat_code(Hi(cx)); k:=0;
+ if (i=kanji)or(i=kana) then begin t:=q; s:=p; end;
+ p:=link(p); q:=p;
+ end
+ else begin k:=k+1;
+ if k>1 then begin q:=p; s:=null; end;
+ end;
+ end
+else begin case type(p) of
+ penalty_node,mark_node,adjust_node,whatsit_node,
+ glue_node,kern_node,math_node,disp_node:
+ do_nothing;
+ othercases begin q:=p; s:=null; end;
+ endcases;
+ end;
+p:=link(p);
+end
+
+@ @<Declare procedures needed in |hlist_out|, |vlist_out|@>=
+procedure dir_out;
+var @!this_box: pointer; {pointer to containing box}
+begin this_box:=temp_ptr;
+ temp_ptr:=list_ptr(this_box);
+ if (type(temp_ptr)<>hlist_node)and(type(temp_ptr)<>vlist_node) then
+ confusion("dir_out");
+ case box_dir(this_box) of
+ dir_yoko:
+ case box_dir(temp_ptr) of
+ dir_tate: {Tate in Yoko}
+ begin cur_v:=cur_v-height(this_box); cur_h:=cur_h+depth(temp_ptr) end;
+ dir_dtou: {DtoU in Yoko}
+ begin cur_v:=cur_v+depth(this_box); cur_h:=cur_h+height(temp_ptr) end;
+ endcases;
+ dir_tate:
+ case box_dir(temp_ptr) of
+ dir_yoko: {Yoko in Tate}
+ begin cur_v:=cur_v+depth(this_box); cur_h:=cur_h+height(temp_ptr) end;
+ dir_dtou: {DtoU in Tate}
+ begin
+ cur_v:=cur_v+depth(this_box)-height(temp_ptr);
+ cur_h:=cur_h+width(temp_ptr)
+ end;
+ endcases;
+ dir_dtou:
+ case box_dir(temp_ptr) of
+ dir_yoko: {Yoko in DtoU}
+ begin cur_v:=cur_v-height(this_box); cur_h:=cur_h+depth(temp_ptr) end;
+ dir_tate: {Tate in DtoU}
+ begin
+ cur_v:=cur_v+depth(this_box)-height(temp_ptr);
+ cur_h:=cur_h+width(temp_ptr)
+ end;
+ endcases;
+ endcases;
+ cur_dir:=box_dir(temp_ptr);
+ if type(temp_ptr)=vlist_node then vlist_out@+else hlist_out;
+end;
+
+@ These routines are used to output diagnostic which related direction.
+
+@ @<Basic printing procedures@>=
+procedure print_dir(@!dir:eight_bits); {prints |dir| data}
+begin if dir=dir_yoko then print_char("Y")
+else if dir=dir_tate then print_char("T")
+else if dir=dir_dtou then print_char("D")
+end;
+@#
+procedure print_direction(@!d:integer); {print the direction represented by d}
+begin case abs(d) of
+dir_yoko: print("yoko");
+dir_tate: print("tate");
+dir_dtou: print("dtou");
+end;
+if d<0 then print("(math)");
+print(" direction");
+end;
+
+@ The procedure |set_math_kchar| is same as |set_math_char| which
+written in section 48.
+
+@<Declare act...@>=
+procedure set_math_kchar(@!c:integer);
+var p:pointer; {the new noad}
+begin p:=new_noad; math_type(nucleus(p)):=math_jchar;
+character(nucleus(p)):=qi(0);
+math_kcode(p):=c; fam(nucleus(p)):=cur_jfam;
+if font_dir[fam_fnt(fam(nucleus(p))+cur_size)]=dir_default then
+ begin print_err("Not two-byte family");
+ help1("IGNORE.");@/
+ error;
+ end;
+type(p):=ord_noad;
+link(tail):=p; tail:=p;
+end;
+
+@ This section is a part of |main_control|.
+
+@<Append KANJI-character |cur_chr| ...@>=
+if is_char_node(tail) then
+ begin cx:=qo(character(tail)); @<Insert |post_break_penalty|@>;
+ end
+else if type(tail)=ligature_node then
+ begin cx:=qo(character(lig_char(tail))); @<Insert |post_break_penalty|@>;
+ end;
+if direction=dir_tate then
+ begin if font_dir[main_f]=dir_tate then disp:=0
+ else if font_dir[main_f]=dir_yoko then disp:=t_baseline_shift-y_baseline_shift
+ else disp:=t_baseline_shift;
+ main_f:=cur_tfont;
+ end
+else
+ begin if font_dir[main_f]=dir_yoko then disp:=0
+ else if font_dir[main_f]=dir_tate then disp:=y_baseline_shift-t_baseline_shift
+ else disp:=y_baseline_shift;
+ main_f:=cur_jfont;
+ end;
+@<Append |disp_node| at end of displace area@>;
+ins_kp:=false; ligature_present:=false;
+cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f));
+main_i:=orig_char_info(main_f)(qi(0));
+goto main_loop_j+3;
+@#
+main_loop_j+1: space_factor:=1000;
+ fast_get_avail(main_p); font(main_p):=main_f; character(main_p):=cur_l;
+ link(tail):=main_p; tail:=main_p; last_jchr:=tail;
+ fast_get_avail(main_p); info(main_p):=KANJI(cur_chr);
+ link(tail):=main_p; tail:=main_p;
+ cx:=cur_chr; @<Insert kinsoku penalty@>;
+ ins_kp:=false;
+again_2:
+ get_next;
+ main_i:=orig_char_info(main_f)(cur_l);
+ case cur_cmd of
+ kanji,kana,other_kchar: begin
+ cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f)); goto main_loop_j+3;
+ end;
+ letter,other_char: begin ins_kp:=true; cur_l:=qi(0); goto main_loop_j+3;
+ end;
+ endcases;
+ x_token;
+ case cur_cmd of
+ kanji,kana,other_kchar: cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f));
+ letter,other_char: begin ins_kp:=true; cur_l:=qi(0); end;
+ char_given: begin
+ if (cur_chr>=0)and(cur_chr<256) then
+ begin ins_kp:=true; cur_l:=qi(0);
+ end
+ else cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f));
+ end;
+ char_num: begin scan_char_num; cur_chr:=cur_val;
+ if (cur_chr>=0)and(cur_chr<256) then
+ begin ins_kp:=true; cur_l:=qi(0);
+ end
+ else cur_l:=qi(get_jfm_pos(KANJI(cur_chr),main_f));
+ end;
+ inhibit_glue: begin inhibit_glue_flag:=true; goto again_2; end;
+ othercases begin ins_kp:=max_halfword;
+ cur_l:=qi(0); cur_r:=non_char; lig_stack:=null;
+ end;
+ endcases;
+@#
+main_loop_j+3:
+ if ins_kp=true then @<Insert |pre_break_penalty| of |cur_chr|@>;
+ @<Look ahead for glue or kerning@>;
+ if (ins_kp=false) then begin { Kanji -> Kanji }
+ goto main_loop_j+1;
+ end else if (ins_kp=true) then begin { Kanji -> Ascii }
+ {@<Append |disp_node| at begin of displace area@>;}
+ ins_kp:=false; goto main_loop;
+ end else begin { Kanji -> cs }
+ {@<Append |disp_node| at begin of displace area@>;}
+ goto reswitch;
+ end;
+
+@ @<Append |disp_node| at begin ...@>=
+begin if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin if prev_disp=disp then
+ begin free_node(tail,small_node_size); tail:=prev_node; link(tail):=null;
+ end
+ else disp_dimen(tail):=disp;
+ end
+else
+ if disp<>0 then
+ begin prev_node:=tail; tail_append(get_node(small_node_size));
+ type(tail):=disp_node; disp_dimen(tail):=disp; prev_disp:=disp;
+ end;
+end;
+
+@ @<Append |disp_node| at end ...@>=
+if disp<>0 then
+begin if (not is_char_node(tail))and(type(tail)=disp_node) then
+ begin disp_dimen(tail):=0;
+ end
+else
+ begin prev_node:=tail; tail_append(get_node(small_node_size));
+ type(tail):=disp_node; disp_dimen(tail):=0; prev_disp:=disp;
+ end;
+end;
+
+@ @<Look ahead for glue or kerning@>=
+cur_q:=tail;
+if inhibit_glue_flag<>true then
+ begin if char_tag(main_i)=gk_tag then
+ begin main_k:=glue_kern_start(main_f)(main_i);
+ repeat main_j:=font_info[main_k].qqqq;
+ if next_char(main_j)=cur_l then
+ begin if op_byte(main_j)<kern_flag then
+ begin gp:=font_glue[main_f]; cur_r:=rem_byte(main_j);
+ if gp<>null then
+ begin while((type(gp)<>cur_r)and(link(gp)<>null)) do gp:=link(gp);
+ gq:=glue_ptr(gp);
+ end
+ else
+ begin gp:=get_node(small_node_size); font_glue[main_f]:=gp;
+ gq:=null;
+ end;
+ if gq=null then
+ begin type(gp):=cur_r; gq:=new_spec(zero_glue);
+ glue_ptr(gp):=gq;
+ main_k:=exten_base[main_f]+qi((qo(cur_r))*3);
+ width(gq):=font_info[main_k].sc;
+ stretch(gq):=font_info[main_k+1].sc;
+ shrink(gq):=font_info[main_k+2].sc;
+ add_glue_ref(gq); link(gp):=get_node(small_node_size);
+ gp:=link(gp); glue_ptr(gp):=null; link(gp):=null;
+ end;
+ tail_append(new_glue(gq)); subtype(tail):=jfm_skip+1;
+ goto skip_loop;
+ end
+ else begin
+ tail_append(new_kern(char_kern(main_f)(main_j)));
+ goto skip_loop;
+ end;
+ end;
+ incr(main_k);
+ until skip_byte(main_j)>=stop_flag;
+ end;
+end;
+skip_loop: inhibit_glue_flag:=false;
+
+@ @<Basic printing...@>=
+procedure print_kanji(@!s:KANJI_code); {prints a single character}
+begin
+if s>255 then
+ begin print_char(Hi(s)); print_char(Lo(s));
+ end else print_char(s);
+end;
+
+@* \[56] System-dependent changes.
+@z
diff --git a/language/japanese/ptex/ptexextra.c b/language/japanese/ptex/ptexextra.c
new file mode 100644
index 0000000000..2679caaba7
--- /dev/null
+++ b/language/japanese/ptex/ptexextra.c
@@ -0,0 +1,2319 @@
+/* texmf.c: Hand-coded routines for TeX or Metafont in C. Originally
+ written by Tim Morgan, drawing from other Unix ports of TeX. This is
+ a collection of miscellany, everything that's easier (or only
+ possible) to do in C.
+
+ This file is public domain. */
+
+#define EXTERN /* Instantiate data from {tex,mf,mp}d.h here. */
+
+/* This file is used to create texextra.c etc., with this line
+ changed to include texd.h, mfd.h, or mpd.h. The ?d.h file is what
+ #defines TeX or MF or MP, which avoids the need for a special
+ Makefile rule. */
+#include "texd.h"
+
+#include <kpathsea/c-ctype.h>
+#include <kpathsea/line.h>
+#include <kpathsea/readable.h>
+#include <kpathsea/variable.h>
+#include <kpathsea/absolute.h>
+
+#include <time.h> /* For `struct tm'. */
+#if defined (HAVE_SYS_TIME_H)
+#include <sys/time.h>
+#elif defined (HAVE_SYS_TIMEB_H)
+#include <sys/timeb.h>
+#endif
+
+#if defined(__STDC__)
+#include <locale.h>
+#endif
+
+#include <signal.h> /* Catch interrupts. */
+
+#include <texmfmp-help.h>
+
+/* {tex,mf}d.h defines TeX, MF, INI, and other such symbols.
+ Unfortunately there's no way to get the banner into this code, so
+ just repeat the text. */
+#ifdef TeX
+#if defined (KANJI)
+#include "ptexextra.h"
+#elif defined (eTeX)
+#include <etexdir/etexextra.h>
+#elif defined (pdfTeX)
+#include <pdftexdir/pdftexextra.h>
+#elif defined (pdfeTeX)
+#include <pdfetexdir/pdfetexextra.h>
+#elif defined (Omega)
+#include <omegadir/omegaextra.h>
+#else
+#define BANNER "This is TeX, Version 3.141592"
+#define COPYRIGHT_HOLDER "D.E. Knuth"
+#define AUTHOR NULL
+#define PROGRAM_HELP TEXHELP
+#define DUMP_VAR TEXformatdefault
+#define DUMP_LENGTH_VAR formatdefaultlength
+#define DUMP_OPTION "fmt"
+#define DUMP_EXT ".fmt"
+#define INPUT_FORMAT kpse_tex_format
+#define INI_PROGRAM "initex"
+#define VIR_PROGRAM "virtex"
+#endif
+#define edit_var "TEXEDIT"
+#endif /* TeX */
+#ifdef MF
+#define BANNER "This is Metafont, Version 2.71828"
+#define COPYRIGHT_HOLDER "D.E. Knuth"
+#define AUTHOR NULL
+#define PROGRAM_HELP MFHELP
+#define DUMP_VAR MFbasedefault
+#define DUMP_LENGTH_VAR basedefaultlength
+#define DUMP_OPTION "base"
+#ifdef DOS
+#define DUMP_EXT ".bas"
+#else
+#define DUMP_EXT ".base"
+#endif
+#define INPUT_FORMAT kpse_mf_format
+#define INI_PROGRAM "inimf"
+#define VIR_PROGRAM "virmf"
+#define edit_var "MFEDIT"
+#endif /* MF */
+#ifdef MP
+#define BANNER "This is MetaPost, Version 0.641"
+#define COPYRIGHT_HOLDER "AT&T Bell Laboratories"
+#define AUTHOR "John Hobby"
+#define PROGRAM_HELP MPHELP
+#define DUMP_VAR MPmemdefault
+#define DUMP_LENGTH_VAR memdefaultlength
+#define DUMP_OPTION "mem"
+#define DUMP_EXT ".mem"
+#define INPUT_FORMAT kpse_mp_format
+#define INI_PROGRAM "inimpost"
+#define VIR_PROGRAM "virmpost"
+#define edit_var "MPEDIT"
+#endif /* MP */
+
+/* The main program, etc. */
+
+/* What we were invoked as and with. */
+char **argv;
+int argc;
+
+/* If the user overrides argv[0] with -progname. */
+static string user_progname;
+
+/* The C version of what might wind up in DUMP_VAR. */
+static const_string dump_name;
+
+/* The C version of the jobname, if given. */
+static const_string job_name;
+
+/* Full source file name. */
+extern string fullnameoffile;
+
+/* The filename for dynamic character translation, or NULL. */
+string translate_filename;
+string default_translate_filename;
+
+/* Needed for --src-specials option. */
+static char *last_source_name;
+static int last_lineno;
+static boolean srcspecialsoption = false;
+static void parse_src_specials_option P1H(const_string);
+
+/* The main body of the WEB is transformed into this procedure. */
+extern TEXDLL void mainbody P1H(void);
+
+/* Parsing a first %&-line in the input file. */
+static void parse_first_line P1H(const_string);
+
+/* Parse option flags. */
+static void parse_options P2H(int, string *);
+
+/* Try to figure out if we have been given a filename. */
+static string get_input_file_name P1H(void);
+
+#ifdef MP
+/* name of TeX program to pass to makempx */
+static string mpost_tex_program = "";
+#endif
+
+#ifdef __STDC__
+#ifdef WIN32
+extern boolean bOem;
+string locale_name = ".ACP";
+#else
+string locale_name = "";
+#endif
+#endif
+
+/* The entry point: set up for reading the command line, which will
+ happen in `topenin', then call the main body. */
+
+void TEXDLL
+maininit P2C(int, ac, string *, av)
+{
+ string main_input_file;
+
+ /* Save to pass along to topenin. */
+ argc = ac;
+ argv = av;
+
+ /* Must be initialized before options are parsed. */
+ interactionoption = 4;
+#ifdef KANJI
+#ifdef OUTJIS
+prockanjicode = JIS;
+#endif /* OUTJIS */
+#ifdef OUTEUC
+prockanjicode = EUC;
+#endif /* OUTEUC */
+#ifdef OUTSJIS
+prockanjicode = SJIS;
+#endif /* OUTSJIS */
+#endif /* KANJI */
+
+ /* If the user says --help or --version, we need to notice early. And
+ since we want the --ini option, have to do it before getting into
+ the web (which would read the base file, etc.). */
+ parse_options (ac, av);
+
+#if defined(__STDC__)
+ /* Need to delay it because of win32 `-oem' option. Default value ""
+ means: get value from env. var LC_ALL, LC_CTYPE, or LANG */
+ setlocale(LC_CTYPE, locale_name);
+#endif
+
+ /* Do this early so we can inspect program_invocation_name and
+ kpse_program_name below, and because we have to do this before
+ any path searching. */
+ kpse_set_program_name (argv[0], user_progname);
+
+ /* FIXME: gather engine names in a single spot. */
+ xputenv("engine", TEXMFENGINENAME);
+
+ /* Were we given a simple filename? */
+ main_input_file = get_input_file_name();
+
+ /* Second chance to activate file:line:error style messages, this
+ time from texmf.cnf. */
+ if (filelineerrorstylep < 0) {
+ filelineerrorstylep = 0;
+ } else if (!filelineerrorstylep) {
+ string file_line_error_style = kpse_var_value ("file_line_error_style");
+ filelineerrorstylep = (file_line_error_style
+ && (*file_line_error_style == 't'
+ || *file_line_error_style == 'y'
+ || *file_line_error_style == '1'));
+ }
+
+ /* If no dump default yet, and we're not doing anything special on
+ this run, we may want to look at the first line of the main input
+ file for a %&<dumpname> specifier. */
+ if (parsefirstlinep < 0) {
+ parsefirstlinep = 0;
+ } else if (!parsefirstlinep) {
+ string parse_first_line = kpse_var_value ("parse_first_line");
+ parsefirstlinep = (parse_first_line
+ && (*parse_first_line == 't'
+ || *parse_first_line == 'y'
+ || *parse_first_line == '1'));
+ }
+ if (parsefirstlinep && (!dump_name || !translate_filename)) {
+ parse_first_line (main_input_file);
+ }
+ /* Check whether there still is no translate_filename known. If so,
+ use the default_translate_filename. */
+ /* FIXME: deprecated. */
+ if (!translate_filename) {
+ translate_filename = default_translate_filename;
+ }
+ /* If we're preloaded, I guess everything is set up. I don't really
+ know any more, it's been so long since anyone preloaded. */
+ if (readyalready != 314159) {
+ /* The `ini_version' variable is declared/used in the change files. */
+ boolean virversion = false;
+ if (FILESTRCASEEQ (kpse_program_name, INI_PROGRAM)) {
+ iniversion = true;
+ } else if (FILESTRCASEEQ (kpse_program_name, VIR_PROGRAM)) {
+ virversion = true;
+#ifdef TeX
+#ifndef Omega
+ } else if (FILESTRCASEEQ (kpse_program_name, "mltex")) {
+ mltexp = true;
+#endif /* !Omega */
+#ifdef eTeX /* For e-TeX compatibility mode... */
+#ifdef KANJI
+ } else if (FILESTRCASEEQ (kpse_program_name, "iniptex")) {
+ iniversion = true;
+ } else if (FILESTRCASEEQ (kpse_program_name, "virptex")) {
+ virversion = true;
+#else /* KANJI */
+ } else if (FILESTRCASEEQ (kpse_program_name, "initex")) {
+ iniversion = true;
+ } else if (FILESTRCASEEQ (kpse_program_name, "virtex")) {
+ virversion = true;
+#endif /* KANJI */
+#endif /* eTeX */
+#endif /* TeX */
+ }
+
+ if (!dump_name) {
+ /* If called as *vir{mf,tex,mpost} use `plain'. Otherwise, use the
+ name we were invoked under. */
+ dump_name = (virversion ? "plain" : kpse_program_name);
+ }
+ }
+
+#ifdef TeX
+#if !defined(Omega) && !defined(eOmega) && !defined(Aleph)
+ /* Sanity check: -mltex and -enc only work in combination with -ini. */
+ if (!iniversion) {
+ if (mltexp) {
+ fprintf(stderr, "-mltex only works with -ini\n");
+ }
+ }
+#endif
+#endif
+
+ /* If we've set up the fmt/base default in any of the various ways
+ above, also set its length. */
+ if (dump_name) {
+ /* adjust array for Pascal and provide extension */
+ DUMP_VAR = concat3 (" ", dump_name, DUMP_EXT);
+ DUMP_LENGTH_VAR = strlen (DUMP_VAR + 1);
+ } else {
+ /* For dump_name to be NULL is a bug. */
+ abort();
+ }
+
+ /* Additional initializations. No particular reason for doing them
+ here instead of first thing in the change file; less symbols to
+ propagate through Webc, that's all. */
+#ifdef MF
+ kpse_set_program_enabled (kpse_mf_format, MAKE_TEX_MF_BY_DEFAULT,
+ kpse_src_compile);
+ kpse_set_program_enabled (kpse_base_format, MAKE_TEX_FMT_BY_DEFAULT,
+ kpse_src_compile);
+#endif /* MF */
+#ifdef MP
+ kpse_set_program_enabled (kpse_mem_format, MAKE_TEX_FMT_BY_DEFAULT,
+ kpse_src_compile);
+#endif /* MP */
+#ifdef TeX
+#ifdef Omega
+ kpse_set_program_enabled (kpse_ocp_format, MAKE_OMEGA_OCP_BY_DEFAULT,
+ kpse_src_compile);
+ kpse_set_program_enabled (kpse_ofm_format, MAKE_OMEGA_OFM_BY_DEFAULT,
+ kpse_src_compile);
+ kpse_set_program_enabled (kpse_tfm_format, false, kpse_src_compile);
+#else
+ kpse_set_program_enabled (kpse_tfm_format, MAKE_TEX_TFM_BY_DEFAULT,
+ kpse_src_compile);
+#endif /* !Omega */
+ kpse_set_program_enabled (kpse_tex_format, MAKE_TEX_TEX_BY_DEFAULT,
+ kpse_src_compile);
+ kpse_set_program_enabled (kpse_fmt_format, MAKE_TEX_FMT_BY_DEFAULT,
+ kpse_src_compile);
+
+ if (shellenabledp < 0) {
+ shellenabledp = 0;
+ } else if (!shellenabledp) {
+ string shell_escape = kpse_var_value ("shell_escape");
+ shellenabledp = (shell_escape
+ && (*shell_escape == 't'
+ || *shell_escape == 'y'
+ || *shell_escape == '1'));
+ }
+ if (!outputcomment) {
+ outputcomment = kpse_var_value ("output_comment");
+ }
+#endif /* TeX */
+}
+
+#ifndef WIN32
+/* The entry point: set up for reading the command line, which will
+ happen in `topenin', then call the main body. */
+
+int
+main P2C(int, ac, string *, av)
+{
+#ifdef __EMX__
+ _wildcard (&ac, &av);
+ _response (&ac, &av);
+#endif
+
+ maininit(ac, av);
+
+ /* Call the real main program. */
+ mainbody ();
+ return EXIT_SUCCESS;
+}
+#endif /* ! WIN32 */
+
+/* This is supposed to ``open the terminal for input'', but what we
+ really do is copy command line arguments into TeX's or Metafont's
+ buffer, so they can handle them. If nothing is available, or we've
+ been called already (and hence, argc==0), we return with
+ `last=first'. */
+
+void
+topenin P1H(void)
+{
+ int i;
+
+ buffer[first] = 0; /* In case there are no arguments. */
+
+ if (optind < argc) { /* We have command line arguments. */
+ int k = first;
+ for (i = optind; i < argc; i++) {
+ char *ptr = &(argv[i][0]);
+ /* Don't use strcat, since in Omega the buffer elements aren't
+ single bytes. */
+ while (*ptr) {
+ buffer[k++] = *(ptr++);
+ }
+ buffer[k++] = ' ';
+ }
+ argc = 0; /* Don't do this again. */
+ buffer[k] = 0;
+ }
+
+ /* Find the end of the buffer. */
+ for (last = first; buffer[last]; ++last)
+ ;
+
+ /* Make `last' be one past the last non-blank character in `buffer'. */
+ /* ??? The test for '\r' should not be necessary. */
+ for (--last; last >= first
+ && ISBLANK (buffer[last]) && buffer[last] != '\r'; --last)
+ ;
+ last++;
+
+ /* One more time, this time converting to TeX's internal character
+ representation. */
+#ifndef Omega
+ for (i = first; i < last; i++)
+ buffer[i] = xord[buffer[i]];
+#endif
+}
+
+/* IPC for TeX. By Tom Rokicki for the NeXT; it makes TeX ship out the
+ DVI file in a pipe to TeXView so that the output can be displayed
+ incrementally. Shamim Mohamed adapted it for Web2c. */
+#if defined (TeX) && defined (IPC)
+
+#include <sys/socket.h>
+#include <fcntl.h>
+#ifndef O_NONBLOCK /* POSIX */
+#ifdef O_NDELAY /* BSD */
+#define O_NONBLOCK O_NDELAY
+#else
+#ifdef FNDELAY /* NeXT */
+#define O_NONBLOCK O_FNDELAY
+#else
+what the fcntl? cannot implement IPC without equivalent for O_NONBLOCK.
+#endif /* no FNDELAY */
+#endif /* no O_NDELAY */
+#endif /* no O_NONBLOCK */
+
+#ifndef IPC_PIPE_NAME /* $HOME is prepended to this. */
+#define IPC_PIPE_NAME "/.TeXview_Pipe"
+#endif
+#ifndef IPC_SERVER_CMD /* Command to run to start the server. */
+#define IPC_SERVER_CMD "open `which TeXview`"
+#endif
+
+struct msg
+{
+ short namelength; /* length of auxiliary data */
+ int eof; /* new eof for dvi file */
+#if 0 /* see usage of struct msg below */
+ char more_data[0]; /* where the rest of the stuff goes */
+#endif
+};
+
+static char *ipc_name;
+static struct sockaddr *ipc_addr;
+static int ipc_addr_len;
+
+static int
+ipc_make_name P1H(void)
+{
+ if (ipc_addr_len == 0) {
+ string s = getenv ("HOME");
+ if (s) {
+ ipc_addr = (struct sockaddr*)xmalloc (strlen (s) + 40);
+ ipc_addr->sa_family = 0;
+ ipc_name = ipc_addr->sa_data;
+ strcpy (ipc_name, s);
+ strcat (ipc_name, IPC_PIPE_NAME);
+ ipc_addr_len = strlen (ipc_name) + 3;
+ }
+ }
+ return ipc_addr_len;
+}
+
+
+static int sock = -1;
+
+static int
+ipc_is_open P1H(void)
+{
+ return sock >= 0;
+}
+
+
+static void
+ipc_open_out P1H(void) {
+#ifdef IPC_DEBUG
+ fputs ("tex: Opening socket for IPC output ...\n", stderr);
+#endif
+ if (sock >= 0) {
+ return;
+ }
+
+ if (ipc_make_name () < 0) {
+ sock = -1;
+ return;
+ }
+
+ sock = socket (PF_UNIX, SOCK_STREAM, 0);
+ if (sock >= 0) {
+ if (connect (sock, ipc_addr, ipc_addr_len) != 0
+ || fcntl (sock, F_SETFL, O_NONBLOCK) < 0) {
+ close (sock);
+ sock = -1;
+ return;
+ }
+#ifdef IPC_DEBUG
+ fputs ("tex: Successfully opened IPC socket.\n", stderr);
+#endif
+ }
+}
+
+
+static void
+ipc_close_out P1H(void)
+{
+#ifdef IPC_DEBUG
+ fputs ("tex: Closing output socket ...\n", stderr);
+#endif
+ if (ipc_is_open ()) {
+ close (sock);
+ sock = -1;
+ }
+}
+
+
+static void
+ipc_snd P3C(int, n, int, is_eof, char *, data)
+{
+ struct
+ {
+ struct msg msg;
+ char more_data[1024];
+ } ourmsg;
+
+#ifdef IPC_DEBUG
+ fputs ("tex: Sending message to socket ...\n", stderr);
+#endif
+ if (!ipc_is_open ()) {
+ return;
+ }
+
+ ourmsg.msg.namelength = n;
+ ourmsg.msg.eof = is_eof;
+ if (n) {
+ strcpy (ourmsg.more_data, data);
+ }
+ n += sizeof (struct msg);
+#ifdef IPC_DEBUG
+ fputs ("tex: Writing to socket...\n", stderr);
+#endif
+ if (write (sock, &ourmsg, n) != n) {
+ ipc_close_out ();
+ }
+#ifdef IPC_DEBUG
+ fputs ("tex: IPC message sent.\n", stderr);
+#endif
+}
+
+
+/* This routine notifies the server if there is an eof, or the filename
+ if a new DVI file is starting. This is the routine called by TeX.
+ Omega defines str_start(#) as str_start_ar[# - too_big_char], with
+ too_big_char = biggest_char + 1 = 65536 (omstr.ch).*/
+
+void
+ipcpage P1C(int, is_eof)
+{
+ static boolean begun = false;
+ unsigned len = 0;
+ unsigned i;
+ string p = "";
+
+ if (!begun) {
+ string name; /* Just the filename. */
+ string cwd = xgetcwd ();
+
+ ipc_open_out ();
+#ifndef Omega
+ len = strstart[outputfilename + 1] - strstart[outputfilename];
+#else
+ len = strstartar[outputfilename + 1 - 65536L] -
+ strstartar[outputfilename - 65536L];
+#endif
+ name = (string)xmalloc (len + 1);
+#ifndef Omega
+ strncpy (name, &strpool[strstart[outputfilename]], len);
+#else
+ for (i=0; i<len; i++)
+ name[i] = strpool[i+strstartar[outputfilename - 65536L]];
+#endif
+ name[len] = 0;
+
+ /* Have to pass whole filename to the other end, since it may have
+ been started up and running as a daemon, e.g., as with the NeXT
+ preview program. */
+ p = concat3 (cwd, DIR_SEP_STRING, name);
+ free (name);
+ len = strlen(p);
+ begun = true;
+ }
+ ipc_snd (len, is_eof, p);
+
+ if (len > 0) {
+ free (p);
+ }
+}
+#endif /* TeX && IPC */
+
+#if defined (TeX) || defined (MF) || defined (MP)
+#ifndef Omega /* TCX and Omega get along like sparks and gunpowder. */
+
+/* Return the next number following START, setting POST to the following
+ character, as in strtol. Issue a warning and return -1 if no number
+ can be parsed. */
+
+static int
+tcx_get_num P4C(int, upb,
+ unsigned, line_count,
+ string, start,
+ string *, post)
+{
+ int num = strtol (start, post, 0);
+ assert (post && *post);
+ if (*post == start) {
+ /* Could not get a number. If blank line, fine. Else complain. */
+ string p = start;
+ while (*p && ISSPACE (*p))
+ p++;
+ if (*p != 0)
+ fprintf (stderr, "%s:%d: Expected numeric constant, not `%s'.\n",
+ translate_filename, line_count, start);
+ num = -1;
+ } else if (num < 0 || num > upb) {
+ fprintf (stderr, "%s:%d: Destination charcode %d <0 or >%d.\n",
+ translate_filename, line_count, num, upb);
+ num = -1;
+ }
+
+ return num;
+}
+
+/* Update the xchr, xord, and xprn arrays for TeX, allowing a
+ translation table specified at runtime via an external file.
+ Look for the character translation file FNAME along the same path as
+ tex.pool. If no suffix in FNAME, use .tcx (don't bother trying to
+ support extension-less names for these files). */
+
+/* FIXME: A new format ought to be introduced for these files. */
+
+void
+readtcxfile P1H(void)
+{
+ string orig_filename;
+ if (!find_suffix (translate_filename)) {
+ translate_filename = concat (translate_filename, ".tcx");
+ }
+ orig_filename = translate_filename;
+ translate_filename
+ = kpse_find_file (translate_filename, kpse_web2c_format, true);
+ if (translate_filename) {
+ string line;
+ unsigned line_count = 0;
+ FILE *translate_file = xfopen (translate_filename, FOPEN_R_MODE);
+ while (line = read_line (translate_file)) {
+ int first;
+ string start2;
+ string comment_loc = strchr (line, '%');
+ if (comment_loc)
+ *comment_loc = 0;
+
+ line_count++;
+
+ first = tcx_get_num (255, line_count, line, &start2);
+ if (first >= 0) {
+ string start3;
+ int second;
+ int printable;
+
+ second = tcx_get_num (255, line_count, start2, &start3);
+ if (second >= 0) {
+ /* I suppose we could check for nonempty junk following the
+ "printable" code, but let's not bother. */
+ string extra;
+
+ /* If they mention a second code, make that the internal number. */
+ xord[first] = second;
+ xchr[second] = first;
+
+ printable = tcx_get_num (1, line_count, start3, &extra);
+ if (printable == -1)
+ printable = 0;
+ /* Don't allow the 7bit ASCII set to become unprintable. */
+ if (32 <= second && second <= 126)
+ printable = 1;
+ } else {
+ second = first; /* else make internal the same as external */
+ /* If they mention a charcode, call it printable. */
+ printable = 1;
+ }
+
+ xprn[second] = printable;
+ }
+ free (line);
+ }
+ xfclose(translate_file, translate_filename);
+ } else {
+ WARNING1 ("Could not open char translation file `%s'", orig_filename);
+ }
+}
+#endif /* !Omega */
+#endif /* TeX || MF || MP [character translation] */
+
+/* Normalize quoting of filename -- that is, only quote if there is a space,
+ and always use the quote-name-quote style. */
+string
+normalize_quotes P2C(const_string, name, const_string, mesg)
+{
+ boolean quoted = false;
+ boolean must_quote = (strchr(name, ' ') != NULL);
+ /* Leave room for quotes and NUL. */
+ string ret = (string)xmalloc(strlen(name)+3);
+ string p;
+ const_string q;
+ p = ret;
+ if (must_quote)
+ *p++ = '"';
+ for (q = name; *q; q++) {
+ if (*q == '"')
+ quoted = !quoted;
+ else
+ *p++ = *q;
+ }
+ if (must_quote)
+ *p++ = '"';
+ *p = '\0';
+ if (quoted) {
+ fprintf(stderr, "! Unbalanced quotes in %s %s\n", mesg, name);
+ uexit(1);
+ }
+ return ret;
+}
+
+/* Getting the input filename. */
+string
+get_input_file_name P1H(void)
+{
+ string input_file_name = NULL;
+
+ if (argv[optind] && argv[optind][0] != '&' && argv[optind][0] != '\\') {
+ /* Not &format, not \input, so assume simple filename. */
+ string name = normalize_quotes(argv[optind], "argument");
+ boolean quoted = (name[0] == '"');
+ if (quoted) {
+ /* Overwrite last quote and skip first quote. */
+ name[strlen(name)-1] = '\0';
+ name++;
+ }
+ input_file_name = kpse_find_file(name, INPUT_FORMAT, false);
+ if (quoted) {
+ /* Undo modifications */
+ name[strlen(name)] = '"';
+ name--;
+ }
+ argv[optind] = name;
+ }
+ return input_file_name;
+}
+
+/* Reading the options. */
+
+/* Test whether getopt found an option ``A''.
+ Assumes the option index is in the variable `option_index', and the
+ option table in a variable `long_options'. */
+#define ARGUMENT_IS(a) STREQ (long_options[option_index].name, a)
+
+/* SunOS cc can't initialize automatic structs, so make this static. */
+static struct option long_options[]
+ = { { DUMP_OPTION, 1, 0, 0 },
+ { "help", 0, 0, 0 },
+ { "ini", 0, &iniversion, 1 },
+ { "interaction", 1, 0, 0 },
+ { "halt-on-error", 0, &haltonerrorp, 1 },
+ { "kpathsea-debug", 1, 0, 0 },
+ { "progname", 1, 0, 0 },
+ { "version", 0, 0, 0 },
+ { "recorder", 0, &recorder_enabled, 1 },
+#ifdef TeX
+#ifdef IPC
+ { "ipc", 0, &ipcon, 1 },
+ { "ipc-start", 0, &ipcon, 2 },
+#endif /* IPC */
+#if !defined(Omega) && !defined(eOmega) && !defined(Aleph)
+ { "mltex", 0, &mltexp, 1 },
+#endif /* !Omega && !eOmega && !Aleph */
+ { "output-comment", 1, 0, 0 },
+ { "output-directory", 1, 0, 0 },
+ { "shell-escape", 0, &shellenabledp, 1 },
+ { "no-shell-escape", 0, &shellenabledp, -1 },
+ { "debug-format", 0, &debugformatfile, 1 },
+ { "src-specials", 2, 0, 0 },
+#endif /* TeX */
+#if defined (TeX) || defined (MF) || defined (MP)
+ { "file-line-error-style", 0, &filelineerrorstylep, 1 },
+ { "no-file-line-error-style", 0, &filelineerrorstylep, -1 },
+ /* Shorter option names for the above. */
+ { "file-line-error", 0, &filelineerrorstylep, 1 },
+ { "no-file-line-error", 0, &filelineerrorstylep, -1 },
+ { "jobname", 1, 0, 0 },
+ { "parse-first-line", 0, &parsefirstlinep, 1 },
+ { "no-parse-first-line", 0, &parsefirstlinep, -1 },
+#if !defined(Omega) && !defined(eOmega) && !defined(Aleph)
+ { "translate-file", 1, 0, 0 },
+ { "default-translate-file", 1, 0, 0 },
+ { "8bit", 0, &eightbitp, 1 },
+#endif /* !Omega && !eOmega && !Aleph */
+#endif /* TeX || MF || MP */
+#if defined (TeX) || defined (MF)
+ { "mktex", 1, 0, 0 },
+ { "no-mktex", 1, 0, 0 },
+#endif /* TeX or MF */
+#ifdef MP
+ { "T", 0, &troffmode, 1 },
+ { "troff", 0, &troffmode, 1 },
+ { "tex", 1, 0, 0 },
+#endif /* MP */
+#ifdef KANJI
+ { "kanji", 1, 0, 0 },
+#endif /* KANJI */
+ { 0, 0, 0, 0 } };
+
+
+static void
+parse_options P2C(int, argc, string *, argv)
+{
+ int g; /* `getopt' return code. */
+ int option_index;
+
+ for (;;) {
+ g = getopt_long_only (argc, argv, "+", long_options, &option_index);
+
+ if (g == -1) /* End of arguments, exit the loop. */
+ break;
+
+ if (g == '?') { /* Unknown option. */
+ /* FIXME: usage (argv[0]); replaced by continue. */
+ continue;
+ }
+
+ assert (g == 0); /* We have no short option names. */
+
+ if (ARGUMENT_IS ("kpathsea-debug")) {
+ kpathsea_debug |= atoi (optarg);
+
+ } else if (ARGUMENT_IS ("progname")) {
+ user_progname = optarg;
+
+ } else if (ARGUMENT_IS ("jobname")) {
+ job_name = normalize_quotes(optarg, "jobname");
+
+ } else if (ARGUMENT_IS (DUMP_OPTION)) {
+ dump_name = optarg;
+ if (!user_progname) user_progname = optarg;
+ dumpoption = true;
+
+ } else if (ARGUMENT_IS ("output-directory")) {
+ output_directory = optarg;
+
+#ifdef TeX
+ } else if (ARGUMENT_IS ("output-comment")) {
+ unsigned len = strlen (optarg);
+ if (len < 256) {
+ outputcomment = optarg;
+ } else {
+ WARNING2 ("Comment truncated to 255 characters from %d. (%s)",
+ len, optarg);
+ outputcomment = (string)xmalloc (256);
+ strncpy (outputcomment, optarg, 255);
+ outputcomment[255] = 0;
+ }
+
+#ifdef IPC
+ } else if (ARGUMENT_IS ("ipc-start")) {
+ ipc_open_out ();
+ /* Try to start up the other end if it's not already. */
+ if (!ipc_is_open ()) {
+ if (system (IPC_SERVER_CMD) == 0) {
+ unsigned i;
+ for (i = 0; i < 20 && !ipc_is_open (); i++) {
+ sleep (2);
+ ipc_open_out ();
+ }
+ }
+ }
+#endif /* IPC */
+ } else if (ARGUMENT_IS ("src-specials")) {
+ last_source_name = xstrdup("");
+ /* Option `--src" without any value means `auto' mode. */
+ if (optarg == NULL) {
+ insertsrcspecialeverypar = true;
+ insertsrcspecialauto = true;
+ srcspecialsoption = true;
+ srcspecialsp = true;
+ } else {
+ parse_src_specials_option(optarg);
+ }
+#endif /* TeX */
+#if defined (TeX) || defined (MF) || defined (MP)
+#ifndef Omega
+ } else if (ARGUMENT_IS ("translate-file")) {
+ translate_filename = optarg;
+ } else if (ARGUMENT_IS ("default-translate-file")) {
+ default_translate_filename = optarg;
+#if defined(WIN32) && defined(OEM)
+ } else if (ARGUMENT_IS ("oem")) {
+ /* This should switch the locale to the current OEM code page */
+ locale_name = ".OCP";
+ bOem = true;
+#endif
+#endif /* !Omega */
+#endif /* TeX || MF || MP */
+
+#if defined (TeX) || defined (MF)
+ } else if (ARGUMENT_IS ("mktex")) {
+ kpse_maketex_option (optarg, true);
+
+ } else if (ARGUMENT_IS ("no-mktex")) {
+ kpse_maketex_option (optarg, false);
+#endif /* TeX or MF */
+#if defined (MP)
+ } else if (ARGUMENT_IS ("tex")) {
+ mpost_tex_program = optarg;
+#endif /* MP */
+ } else if (ARGUMENT_IS ("interaction")) {
+ /* These numbers match @d's in *.ch */
+ if (STREQ (optarg, "batchmode")) {
+ interactionoption = 0;
+ } else if (STREQ (optarg, "nonstopmode")) {
+ interactionoption = 1;
+ } else if (STREQ (optarg, "scrollmode")) {
+ interactionoption = 2;
+ } else if (STREQ (optarg, "errorstopmode")) {
+ interactionoption = 3;
+ } else {
+ WARNING1 ("Ignoring unknown argument `%s' to --interaction", optarg);
+ }
+#if defined(KANJI)
+ } else if (ARGUMENT_IS ("kanji")) {
+ /* These numbers match @d's in *.ch */
+ if (STREQ (optarg, "jis")) {
+ prockanjicode = JIS;
+ } else if (STREQ (optarg, "euc")) {
+ prockanjicode = EUC;
+ } else if (STREQ (optarg, "sjis")) {
+ prockanjicode = SJIS;
+ } else {
+ WARNING1 ("Ignoring unknown argument `%s' to --kanji", optarg);
+ }
+#endif /* KANJI */
+
+ } else if (ARGUMENT_IS ("help")) {
+ usagehelp (PROGRAM_HELP, BUG_ADDRESS);
+
+ } else if (ARGUMENT_IS ("version")) {
+ printversionandexit (BANNER, COPYRIGHT_HOLDER, AUTHOR);
+
+ } /* Else it was a flag; getopt has already done the assignment. */
+ }
+}
+
+#if defined(TeX)
+void
+parse_src_specials_option P1C(const_string, opt_list)
+{
+ char * toklist = xstrdup(opt_list);
+ char * tok;
+ insertsrcspecialauto = false;
+ tok = strtok (toklist, ", ");
+ while (tok) {
+ if (strcmp (tok, "everypar") == 0
+ || strcmp (tok, "par") == 0
+ || strcmp (tok, "auto") == 0) {
+ insertsrcspecialauto = true;
+ insertsrcspecialeverypar = true;
+ } else if (strcmp (tok, "everyparend") == 0
+ || strcmp (tok, "parend") == 0)
+ insertsrcspecialeveryparend = true;
+ else if (strcmp (tok, "everycr") == 0
+ || strcmp (tok, "cr") == 0)
+ insertsrcspecialeverycr = true;
+ else if (strcmp (tok, "everymath") == 0
+ || strcmp (tok, "math") == 0)
+ insertsrcspecialeverymath = true;
+ else if (strcmp (tok, "everyhbox") == 0
+ || strcmp (tok, "hbox") == 0)
+ insertsrcspecialeveryhbox = true;
+ else if (strcmp (tok, "everyvbox") == 0
+ || strcmp (tok, "vbox") == 0)
+ insertsrcspecialeveryvbox = true;
+ else if (strcmp (tok, "everydisplay") == 0
+ || strcmp (tok, "display") == 0)
+ insertsrcspecialeverydisplay = true;
+ else if (strcmp (tok, "none") == 0) {
+ /* This one allows to reset an option that could appear in texmf.cnf */
+ insertsrcspecialauto = insertsrcspecialeverypar =
+ insertsrcspecialeveryparend = insertsrcspecialeverycr =
+ insertsrcspecialeverymath = insertsrcspecialeveryhbox =
+ insertsrcspecialeveryvbox = insertsrcspecialeverydisplay = false;
+ } else {
+ WARNING1 ("Ignoring unknown argument `%s' to --src-specials", tok);
+ }
+ tok = strtok(0, ", ");
+ }
+ free(toklist);
+ srcspecialsp=insertsrcspecialauto | insertsrcspecialeverypar |
+ insertsrcspecialeveryparend | insertsrcspecialeverycr |
+ insertsrcspecialeverymath | insertsrcspecialeveryhbox |
+ insertsrcspecialeveryvbox | insertsrcspecialeverydisplay;
+ srcspecialsoption = true;
+}
+#endif
+
+/* If the first thing on the command line (we use the globals `argv' and
+ `optind') is a normal filename (i.e., does not start with `&' or
+ `\'), and if we can open it, and if its first line is %&FORMAT, and
+ FORMAT is a readable dump file, then set DUMP_VAR to FORMAT.
+ Also call kpse_reset_program_name to ensure the correct paths for the
+ format are used. */
+static void
+parse_first_line P1C(const_string, filename)
+{
+ FILE *f = filename ? fopen (filename, FOPEN_R_MODE) : NULL;
+ if (f) {
+ string first_line = read_line (f);
+ xfclose (f, filename);
+
+ /* We deal with the general format "%&fmt --translate-file=tcx" */
+ /* The idea of using this format came from Wlodzimierz Bzyl
+ <matwb@monika.univ.gda.pl> */
+ if (first_line && first_line[0] == '%' && first_line[1] == '&') {
+ /* Parse the first line into at most three space-separated parts. */
+ char *s;
+ char *part[4];
+ int npart;
+ char **parse;
+
+ for (s = first_line+2; ISBLANK(*s); ++s)
+ ;
+ npart = 0;
+ while (*s && npart != 3) {
+ part[npart++] = s;
+ while (*s && *s != ' ') s++;
+ while (*s == ' ') *s++ = '\0';
+ }
+ part[npart] = NULL;
+ parse = part;
+ /* Look at what we've got. Very crude! */
+ if (*parse && **parse != '-') {
+ /* A format name */
+ if (dump_name) {
+ /* format already determined, do nothing. */
+ } else {
+ string f_name = concat (part[0], DUMP_EXT);
+ string d_name = kpse_find_file (f_name, DUMP_FORMAT, false);
+ if (d_name && kpse_readable_file (d_name)) {
+ dump_name = xstrdup (part[0]);
+ kpse_reset_program_name (dump_name);
+ /* Tell TeX/MF/MP we have a %&name line... */
+ dumpline = true;
+ }
+ free (f_name);
+ }
+ parse++;
+ }
+ /* The tcx stuff, if any. Should we support the -translate-file
+ form as well as --translate-file? */
+ if (*parse) {
+ if (translate_filename) {
+ /* TCX file already set, do nothing. */
+ } else if (STREQ (*parse, "--translate-file")) {
+ s = *(parse+1);
+ } else if (STREQ (*parse, "-translate-file")) {
+ s = *(parse+1);
+ } else if (STRNEQ (*parse, "--translate-file=", 17)) {
+ s = *parse+17;
+ } else if (STRNEQ (*parse, "-translate-file=", 16)) {
+ s = *parse+16;
+ }
+ /* Just set the name, no sanity checks here. */
+ /* FIXME: remove trailing spaces. */
+ if (s && *s) {
+ translate_filename = xstrdup(s);
+ }
+ }
+ }
+ if (first_line)
+ free (first_line);
+ }
+}
+
+/* Return true if FNAME is acceptable as a name for \openout, \openin, or
+ \input. */
+
+static boolean
+opennameok P3C(const_string, fname, const_string, check_var,
+ const_string, default_choice)
+{
+ /* We distinguish three cases:
+ 'a' (any) allows any file to be opened.
+ 'r' (restricted) means disallowing special file names.
+ 'p' (paranoid) means being really paranoid: disallowing special file
+ names and restricting output files to be in or below
+ the working directory or $TEXMFOUTPUT, while input files
+ must be below the current directory, $TEXMFOUTPUT, or
+ (implicitly) in the system areas.
+ We default to "paranoid". The error messages from TeX will be somewhat
+ puzzling...
+ This function contains several return statements... */
+
+ char mess[8];
+ const_string open_choice = kpse_var_value (check_var);
+
+ if (strcmp(check_var, "openin_any") == 0)
+ strcpy(mess, "reading");
+ else if (strcmp(check_var, "openout_any") == 0)
+ strcpy(mess, "writing");
+ else
+ mess[0] = '\0';
+
+ if (!open_choice) open_choice = default_choice;
+
+ if (*open_choice == 'a' || *open_choice == 'y' || *open_choice == '1')
+ return true;
+
+#if defined (unix) && !defined (MSDOS)
+ {
+ const_string base = xbasename (fname);
+ /* Disallow .rhosts, .login, etc. Allow .tex (for LaTeX). */
+ if (base[0] == 0 ||
+ (base[0] == '.' && !IS_DIR_SEP(base[1]) && !STREQ (base, ".tex"))) {
+ fprintf(stderr, "%s: Not %s to %s (%s = %s).\n",
+ program_invocation_name, mess, fname, check_var, open_choice);
+ return false;
+ }
+ }
+#else
+ /* Other OSs don't have special names? */
+#endif
+
+ if (*open_choice == 'r' || *open_choice == 'n' || *open_choice == '0')
+ return true;
+
+ /* Paranoia supplied by Charles Karney... */
+ if (kpse_absolute_p (fname, false)) {
+ const_string texmfoutput = kpse_var_value ("TEXMFOUTPUT");
+ /* Absolute pathname is only OK if TEXMFOUTPUT is set, it's not empty,
+ fname begins the TEXMFOUTPUT, and is followed by / */
+ if (!texmfoutput || *texmfoutput == '\0'
+ || fname != strstr (fname, texmfoutput)
+ || !IS_DIR_SEP(fname[strlen(texmfoutput)])) {
+ fprintf(stderr, "%s: Not %s to %s (%s = %s).\n",
+ program_invocation_name, mess, fname, check_var, open_choice);
+ return false;
+ }
+ }
+ /* For all pathnames, we disallow "../" at the beginning or "/../"
+ anywhere. */
+ if (fname[0] == '.' && fname[1] == '.' && IS_DIR_SEP(fname[2])) {
+ fprintf(stderr, "%s: Not %s to %s (%s = %s).\n",
+ program_invocation_name, mess, fname, check_var, open_choice);
+ return false;
+ } else {
+ const_string dotpair = strstr (fname, "..");
+ /* If dotpair[2] == DIR_SEP, then dotpair[-1] is well-defined. */
+ if (dotpair && IS_DIR_SEP(dotpair[2]) && IS_DIR_SEP(dotpair[-1])) {
+ fprintf(stderr, "%s: Not %s to %s (%s = %s).\n",
+ program_invocation_name, mess, fname, check_var, open_choice);
+ return false;
+ }
+ }
+
+ /* We passed all tests. */
+ return true;
+}
+
+boolean openinnameok P1C(const_string, fname)
+{
+ /* For input default to all. */
+ return opennameok (fname, "openin_any", "a");
+}
+
+boolean openoutnameok P1C(const_string, fname)
+{
+ /* For output, default to paranoid. */
+ return opennameok (fname, "openout_any", "p");
+}
+
+/* All our interrupt handler has to do is set TeX's or Metafont's global
+ variable `interrupt'; then they will do everything needed. */
+#ifdef WIN32
+/* Win32 doesn't set SIGINT ... */
+BOOL WINAPI
+catch_interrupt (DWORD arg)
+{
+ switch (arg) {
+ case CTRL_C_EVENT:
+ case CTRL_BREAK_EVENT:
+ interrupt = 1;
+ return TRUE;
+ default:
+ /* No need to set interrupt as we are exiting anyway */
+ return FALSE;
+ }
+}
+#else /* not WIN32 */
+static RETSIGTYPE
+catch_interrupt P1C (int, arg)
+{
+ interrupt = 1;
+#ifdef OS2
+ (void) signal (SIGINT, SIG_ACK);
+#else
+ (void) signal (SIGINT, catch_interrupt);
+#endif /* not OS2 */
+}
+#endif /* not WIN32 */
+
+/* Besides getting the date and time here, we also set up the interrupt
+ handler, for no particularly good reason. It's just that since the
+ `fix_date_and_time' routine is called early on (section 1337 in TeX,
+ ``Get the first line of input and prepare to start''), this is as
+ good a place as any. */
+
+void
+get_date_and_time P4C(integer *, minutes, integer *, day,
+ integer *, month, integer *, year)
+{
+ time_t clock = time ((time_t *) 0);
+ struct tm *tmptr = localtime (&clock);
+
+ *minutes = tmptr->tm_hour * 60 + tmptr->tm_min;
+ *day = tmptr->tm_mday;
+ *month = tmptr->tm_mon + 1;
+ *year = tmptr->tm_year + 1900;
+
+ {
+#ifdef SA_INTERRUPT
+ /* Under SunOS 4.1.x, the default action after return from the
+ signal handler is to restart the I/O if nothing has been
+ transferred. The effect on TeX is that interrupts are ignored if
+ we are waiting for input. The following tells the system to
+ return EINTR from read() in this case. From ken@cs.toronto.edu. */
+
+ struct sigaction a, oa;
+
+ a.sa_handler = catch_interrupt;
+ sigemptyset (&a.sa_mask);
+ sigaddset (&a.sa_mask, SIGINT);
+ a.sa_flags = SA_INTERRUPT;
+ sigaction (SIGINT, &a, &oa);
+ if (oa.sa_handler != SIG_DFL)
+ sigaction (SIGINT, &oa, (struct sigaction *) 0);
+#else /* no SA_INTERRUPT */
+#ifdef WIN32
+ SetConsoleCtrlHandler(catch_interrupt, TRUE);
+#else /* not WIN32 */
+ RETSIGTYPE (*old_handler) P1H(int);
+
+ old_handler = signal (SIGINT, catch_interrupt);
+ if (old_handler != SIG_DFL)
+ signal (SIGINT, old_handler);
+#endif /* not WIN32 */
+#endif /* no SA_INTERRUPT */
+ }
+}
+
+/*
+ Generating a better seed numbers
+ */
+integer
+getrandomseed()
+{
+#if defined (HAVE_GETTIMEOFDAY)
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ return (tv.tv_usec + 1000000 * tv.tv_usec);
+#elif defined (HAVE_FTIME)
+ struct timeb tb;
+ ftime(&tb);
+ return (tb.millitm + 1000 * tb.time);
+#else
+ time_t clock = time ((time_t*)NULL);
+ struct tm *tmptr = localtime(&clock);
+ return (tmptr->tm_sec + 60*(tmptr->tm_min + 60*tmptr->tm_hour));
+#endif
+}
+
+/* Read a line of input as efficiently as possible while still looking
+ like Pascal. We set `last' to `first' and return `false' if we get
+ to eof. Otherwise, we return `true' and set last = first +
+ length(line except trailing whitespace). */
+
+boolean
+input_line P1C(FILE *, f)
+{
+ int i;
+
+#ifdef KANJI
+/* new line input method */
+ static int injis=0;
+#endif
+
+ /* Recognize either LF or CR as a line terminator. */
+ last = first;
+#ifdef KANJI
+/* new line input method */
+ while (last < bufsize-3 && (i = getc (f)) != EOF && i != '\n' && i != '\r') {
+ int j;
+ if (i == '\033') { /* ESC */
+ if ((i = getc(f)) == '$') { /* Kanji-In */
+ i = getc(f);
+ if (i == '@' || i == 'B') {
+ injis = 1;
+ } else {
+ buffer[last++] = '\033';
+ buffer[last++] = '$';
+ if(i == EOF) {
+ break;
+ } else if(i == '\n') {
+ break;
+ } else if(i == '\r') {
+ j = getc(f);
+ if(j != '\n') ungetc(j, f);
+ else i = j;
+ break;
+ } else {
+ buffer[last++] = i;
+ }
+ }
+ } else if (i == '(') { /* Kanji-out */
+ i = getc(f);
+ if (i == 'J' || i == 'B' || i == 'H') {
+ injis = 0;
+ } else {
+ buffer[last++] = '\033';
+ buffer[last++] = '(';
+ if(i == EOF) {
+ break;
+ } else if(i == '\n') {
+ break;
+ } else if(i == '\r') {
+ j = getc(f);
+ if(j != '\n') ungetc(j, f);
+ else i = j;
+ break;
+ } else {
+ buffer[last++] = i;
+ }
+ }
+ } else {
+ buffer[last++] = '\033';
+ if(i == EOF) {
+ break;
+ } else if(i == '\n') {
+ break;
+ } else if(i == '\r') {
+ j = getc(f);
+ if(j != '\n') ungetc(j, f);
+ else i = j;
+ break;
+ } else {
+ buffer[last++] = i;
+ }
+ }
+ } else { /* rather than ESC */
+ if (injis == 0) {
+ buffer[last++] = i;
+ } else {
+ j = getc(f);
+ if(j == EOF) {
+ buffer[last++] = i;
+ i = j;
+ break;
+ } else if(j == '\n') {
+ buffer[last++] = i;
+ i = j;
+ break;
+ } else if(j == '\r') {
+ buffer[last++] = i;
+ i = j;
+ j = getc(f);
+ if(j != '\n') ungetc(j, f);
+ else i = j;
+ break;
+ /* JIS encoding */
+ } else {
+ if (prockanjicode==SJIS) {
+ i = JIStoSJIS(i << 8 | j);
+ } else {
+ i = JIStoEUC(i << 8 | j);
+ }
+ buffer[last++] = (i >> 8) & 0xff;
+ buffer[last++] = i & 0xff;
+ }
+ }
+ }
+ }
+
+ if(i == EOF || i == '\n' || i == '\r')
+ injis = 0;
+#else /* KANJI */
+ while (last < bufsize && (i = getc (f)) != EOF && i != '\n' && i != '\r')
+ buffer[last++] = i;
+#endif /* KANJI */
+
+ if (i == EOF && errno != EINTR && last == first)
+ return false;
+
+ /* We didn't get the whole line because our buffer was too small. */
+ if (i != EOF && i != '\n' && i != '\r') {
+ fprintf (stderr, "! Unable to read an entire line---bufsize=%u.\n",
+ (unsigned) bufsize);
+ fputs ("Please increase buf_size in texmf.cnf.\n", stderr);
+ uexit (1);
+ }
+
+ buffer[last] = ' ';
+ if (last >= maxbufstack)
+ maxbufstack = last;
+
+ /* If next char is LF of a CRLF, read it. */
+ if (i == '\r') {
+ while ((i = getc (f)) == EOF && errno == EINTR)
+ ;
+ if (i != '\n')
+ ungetc (i, f);
+ }
+
+ /* Trim trailing whitespace. */
+ while (last > first && ISBLANK (buffer[last - 1]))
+ --last;
+
+ /* Don't bother using xord if we don't need to. */
+#ifndef Omega
+ for (i = first; i <= last; i++)
+ buffer[i] = xord[buffer[i]];
+#endif
+
+#ifdef KANJI
+ for (i = last+1; (i < last + 5 && i < bufsize) ; i++)
+ buffer[i] = '\0';
+#endif
+
+ return true;
+}
+
+/* This string specifies what the `e' option does in response to an
+ error message. */
+static char *edit_value = EDITOR;
+
+/* This procedure originally due to sjc@s1-c. TeX & Metafont call it when
+ the user types `e' in response to an error, invoking a text editor on
+ the erroneous source file. FNSTART is how far into FILENAME the
+ actual filename starts; FNLENGTH is how long the filename is. */
+
+void
+calledit P4C(packedASCIIcode *, filename,
+ poolpointer, fnstart,
+ integer, fnlength,
+ integer, linenumber)
+{
+ char *temp, *command;
+ char c;
+ int sdone, ddone, i;
+
+ sdone = ddone = 0;
+ filename += fnstart;
+
+ /* Close any open input files, since we're going to kill the job. */
+ for (i = 1; i <= inopen; i++)
+ xfclose (inputfile[i], "inputfile");
+
+ /* Replace the default with the value of the appropriate environment
+ variable or config file value, if it's set. */
+ temp = kpse_var_value (edit_var);
+ if (temp != NULL)
+ edit_value = temp;
+
+ /* Construct the command string. The `11' is the maximum length an
+ integer might be. */
+ command = (string) xmalloc (strlen (edit_value) + fnlength + 11);
+
+ /* So we can construct it as we go. */
+ temp = command;
+
+ while ((c = *edit_value++) != 0)
+ {
+ if (c == '%')
+ {
+ switch (c = *edit_value++)
+ {
+ case 'd':
+ if (ddone)
+ FATAL ("call_edit: `%%d' appears twice in editor command");
+ sprintf (temp, "%ld", linenumber);
+ while (*temp != '\0')
+ temp++;
+ ddone = 1;
+ break;
+
+ case 's':
+ if (sdone)
+ FATAL ("call_edit: `%%s' appears twice in editor command");
+ for (i =0; i < fnlength; i++)
+ *temp++ = Xchr (filename[i]);
+ sdone = 1;
+ break;
+
+ case '\0':
+ *temp++ = '%';
+ /* Back up to the null to force termination. */
+ edit_value--;
+ break;
+
+ default:
+ *temp++ = '%';
+ *temp++ = c;
+ break;
+ }
+ }
+ else
+ *temp++ = c;
+ }
+
+ *temp = 0;
+
+ /* Execute the command. */
+#ifdef WIN32
+ /* Win32 reimplementation of the system() command
+ provides opportunity to call it asynchronously */
+ if (win32_system(command, true) != 0 )
+#else
+ if (system (command) != 0)
+#endif
+ fprintf (stderr, "! Trouble executing `%s'.\n", command);
+
+ /* Quit, since we found an error. */
+ uexit (1);
+}
+
+/* Read and write dump files. As distributed, these files are
+ architecture dependent; specifically, BigEndian and LittleEndian
+ architectures produce different files. These routines always output
+ BigEndian files. This still does not guarantee them to be
+ architecture-independent, because it is possible to make a format
+ that dumps a glue ratio, i.e., a floating-point number. Fortunately,
+ none of the standard formats do that. */
+
+#if !defined (WORDS_BIGENDIAN) && !defined (NO_DUMP_SHARE) /* this fn */
+
+/* This macro is always invoked as a statement. It assumes a variable
+ `temp'. */
+
+#define SWAP(x, y) temp = (x); (x) = (y); (y) = temp
+
+
+/* Make the NITEMS items pointed at by P, each of size SIZE, be the
+ opposite-endianness of whatever they are now. */
+
+static void
+swap_items P3C(char *, p, int, nitems, int, size)
+{
+ char temp;
+
+ /* Since `size' does not change, we can write a while loop for each
+ case, and avoid testing `size' for each time. */
+ switch (size)
+ {
+ /* 16-byte items happen on the DEC Alpha machine when we are not
+ doing sharable memory dumps. */
+ case 16:
+ while (nitems--)
+ {
+ SWAP (p[0], p[15]);
+ SWAP (p[1], p[14]);
+ SWAP (p[2], p[13]);
+ SWAP (p[3], p[12]);
+ SWAP (p[4], p[11]);
+ SWAP (p[5], p[10]);
+ SWAP (p[6], p[9]);
+ SWAP (p[7], p[8]);
+ p += size;
+ }
+ break;
+
+ case 8:
+ while (nitems--)
+ {
+ SWAP (p[0], p[7]);
+ SWAP (p[1], p[6]);
+ SWAP (p[2], p[5]);
+ SWAP (p[3], p[4]);
+ p += size;
+ }
+ break;
+
+ case 4:
+ while (nitems--)
+ {
+ SWAP (p[0], p[3]);
+ SWAP (p[1], p[2]);
+ p += size;
+ }
+ break;
+
+ case 2:
+ while (nitems--)
+ {
+ SWAP (p[0], p[1]);
+ p += size;
+ }
+ break;
+
+ case 1:
+ /* Nothing to do. */
+ break;
+
+ default:
+ FATAL1 ("Can't swap a %d-byte item for (un)dumping", size);
+ }
+}
+#endif /* not WORDS_BIGENDIAN and not NO_DUMP_SHARE */
+
+
+/* Here we write NITEMS items, each item being ITEM_SIZE bytes long.
+ The pointer to the stuff to write is P, and we write to the file
+ OUT_FILE. */
+
+void
+do_dump P4C(char *, p, int, item_size, int, nitems, FILE *, out_file)
+{
+#if !defined (WORDS_BIGENDIAN) && !defined (NO_DUMP_SHARE)
+ swap_items (p, nitems, item_size);
+#endif
+
+ if (fwrite (p, item_size, nitems, out_file) != nitems)
+ {
+ fprintf (stderr, "! Could not write %d %d-byte item(s).\n",
+ nitems, item_size);
+ uexit (1);
+ }
+
+ /* Have to restore the old contents of memory, since some of it might
+ get used again. */
+#if !defined (WORDS_BIGENDIAN) && !defined (NO_DUMP_SHARE)
+ swap_items (p, nitems, item_size);
+#endif
+}
+
+
+/* Here is the dual of the writing routine. */
+
+void
+do_undump P4C(char *, p, int, item_size, int, nitems, FILE *, in_file)
+{
+ if (fread (p, item_size, nitems, in_file) != nitems)
+ FATAL2 ("Could not undump %d %d-byte item(s)", nitems, item_size);
+
+#if !defined (WORDS_BIGENDIAN) && !defined (NO_DUMP_SHARE)
+ swap_items (p, nitems, item_size);
+#endif
+}
+
+/* Look up VAR_NAME in texmf.cnf; assign either the value found there or
+ DFLT to *VAR. */
+
+void
+setupboundvariable P3C(integer *, var, const_string, var_name, integer, dflt)
+{
+ string expansion = kpse_var_value (var_name);
+ *var = dflt;
+
+ if (expansion) {
+ integer conf_val = atoi (expansion);
+ /* It's ok if the cnf file specifies 0 for extra_mem_{top,bot}, etc.
+ But negative numbers are always wrong. */
+ if (conf_val < 0 || (conf_val == 0 && dflt > 0)) {
+ fprintf (stderr,
+ "%s: Bad value (%ld) in texmf.cnf for %s, keeping %ld.\n",
+ program_invocation_name,
+ (long) conf_val, var_name + 1, (long) dflt);
+ } else {
+ *var = conf_val; /* We'll make further checks later. */
+ }
+ free (expansion);
+ }
+}
+
+/* FIXME -- some (most?) of this can/should be moved to the Pascal/WEB side. */
+#if defined(TeX) || defined(MP) || defined(MF)
+static void
+checkpoolpointer (poolpointer poolptr, size_t len)
+{
+ if (poolptr + len >= poolsize) {
+ fprintf (stderr, "\nstring pool overflow [%i bytes]\n",
+ (int)poolsize); /* fixme */
+ exit(1);
+ }
+}
+
+#if !defined(pdfTeX) && !defined(pdfeTeX)
+static int
+maketexstring(const_string s)
+{
+ size_t len;
+ assert (s != 0);
+ len = strlen(s);
+ checkpoolpointer (poolptr, len);
+ while (len-- > 0)
+ strpool[poolptr++] = *s++;
+ return (makestring());
+}
+#endif
+
+strnumber
+makefullnamestring()
+{
+ return maketexstring(fullnameoffile);
+}
+
+strnumber
+getjobname()
+{
+ strnumber ret = curname;
+ if (job_name != NULL)
+ ret = maketexstring(job_name);
+ return ret;
+}
+#endif
+
+#if defined(TeX)
+int
+compare_paths P2C(const_string, p1, const_string, p2)
+{
+ int ret;
+ while (
+#ifdef MONOCASE_FILENAMES
+ (((ret = (toupper(*p1) - toupper(*p2))) == 0) && (*p2 != 0))
+#else
+ (((ret = (*p1 - *p2)) == 0) && (*p2 != 0))
+#endif
+ || (IS_DIR_SEP(*p1) && IS_DIR_SEP(*p2))) {
+ p1++, p2++;
+ }
+ ret = (ret < 0 ? -1 : (ret > 0 ? 1 : 0));
+ return ret;
+}
+
+string
+gettexstring P1C(strnumber, s)
+{
+ poolpointer i, len;
+ string name;
+#ifndef Omega
+ len = strstart[s + 1] - strstart[s];
+#else
+ len = strstartar[s + 1 - 65536L] - strstartar[s - 65536L];
+#endif
+ name = (string)xmalloc (len + 1);
+#ifndef Omega
+ strncpy (name, (string)&strpool[strstart[s]], len);
+#else
+ /* Don't use strncpy. The strpool is not made up of chars. */
+ for (i=0; i<len; i++) name[i] = strpool[i+strstartar[s - 65536L]];
+#endif
+ name[len] = 0;
+ return name;
+}
+
+boolean
+isnewsource P2C(strnumber, srcfilename, int, lineno)
+{
+ char *name = gettexstring(srcfilename);
+ return (compare_paths(name, last_source_name) != 0 || lineno != last_lineno);
+}
+
+void
+remembersourceinfo P2C(strnumber, srcfilename,
+ int, lineno)
+{
+ if (last_source_name)
+ free(last_source_name);
+ last_source_name = gettexstring(srcfilename);
+ last_lineno = lineno;
+}
+
+poolpointer
+makesrcspecial P2C(strnumber, srcfilename,
+ int, lineno)
+{
+ poolpointer oldpoolptr = poolptr;
+ char *filename = gettexstring(srcfilename);
+ char buf[40];
+ size_t len = strlen(filename);
+ char * s = buf;
+
+ /* Always put a space after the number, which makes things easier
+ * to parse.
+ */
+ sprintf (buf, "src:%d ", lineno);
+
+ if (poolptr + strlen(buf) + strlen(filename) >= poolsize) {
+ fprintf (stderr, "\nstring pool overflow\n"); /* fixme */
+ exit (1);
+ }
+ s = buf;
+ while (*s)
+ strpool[poolptr++] = *s++;
+
+ s = filename;
+ while (*s)
+ strpool[poolptr++] = *s++;
+
+ return (oldpoolptr);
+}
+#endif
+
+#ifdef MP
+/* Invoke makempx (or troffmpx) to make sure there is an up-to-date
+ .mpx file for a given .mp file. (Original from John Hobby 3/14/90) */
+
+#include <kpathsea/concatn.h>
+
+#ifndef MPXCOMMAND
+#define MPXCOMMAND "makempx"
+#endif
+
+boolean
+callmakempx P2C(string, mpname, string, mpxname)
+{
+ int ret;
+ string cnf_cmd = kpse_var_value ("MPXCOMMAND");
+
+ if (cnf_cmd && STREQ (cnf_cmd, "0")) {
+ /* If they turned off this feature, just return success. */
+ ret = 0;
+
+ } else {
+ /* We will invoke something. Compile-time default if nothing else. */
+ string cmd;
+ string qmpname = normalize_quotes(mpname, "mpname");
+ string qmpxname = normalize_quotes(mpxname, "mpxname");
+ if (!cnf_cmd)
+ cnf_cmd = xstrdup (MPXCOMMAND);
+
+ if (troffmode)
+ cmd = concatn (cnf_cmd, " -troff ",
+ qmpname, " ", qmpxname, NULL);
+ else if (mpost_tex_program && *mpost_tex_program)
+ cmd = concatn (cnf_cmd, " -tex=", mpost_tex_program, " ",
+ qmpname, " ", qmpxname, NULL);
+ else
+ cmd = concatn (cnf_cmd, " -tex ", qmpname, " ", qmpxname, NULL);
+
+ /* Run it. */
+ ret = system (cmd);
+ free (cmd);
+ free (qmpname);
+ free (qmpxname);
+ }
+
+ free (cnf_cmd);
+ return ret == 0;
+}
+#endif /* MP */
+
+/* Metafont/MetaPost fraction routines. Replaced either by assembler or C.
+ The assembler syntax doesn't work on Solaris/x86. */
+#ifndef TeX
+#if defined (__sun__) || defined (__cplusplus)
+#define NO_MF_ASM
+#endif
+#if defined(WIN32) && !defined(NO_MF_ASM)
+#include "lib/mfmpw32.c"
+#elif defined (__i386__) && defined (__GNUC__) && !defined (NO_MF_ASM)
+#include "lib/mfmpi386.asm"
+#else
+/* Replace fixed-point fraction routines from mf.web and mp.web with
+ Hobby's floating-point C code. */
+
+/****************************************************************
+Copyright 1990 - 1995 by AT&T Bell Laboratories.
+
+Permission to use, copy, modify, and distribute this software
+and its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the names of AT&T Bell Laboratories or
+any of its entities not be used in advertising or publicity
+pertaining to distribution of the software without specific,
+written prior permission.
+
+AT&T disclaims all warranties with regard to this software,
+including all implied warranties of merchantability and fitness.
+In no event shall AT&T be liable for any special, indirect or
+consequential damages or any damages whatsoever resulting from
+loss of use, data or profits, whether in an action of contract,
+negligence or other tortious action, arising out of or in
+connection with the use or performance of this software.
+****************************************************************/
+
+/**********************************************************
+ The following is by John Hobby
+ **********************************************************/
+
+#ifndef FIXPT
+
+/* These replacements for takefraction, makefraction, takescaled, makescaled
+ run about 3 to 11 times faster than the standard versions on modern machines
+ that have fast hardware for double-precision floating point. They should
+ produce approximately correct results on all machines and agree exactly
+ with the standard versions on machines that satisfy the following conditions:
+ 1. Doubles must have at least 46 mantissa bits; i.e., numbers expressible
+ as n*2^k with abs(n)<2^46 should be representable.
+ 2. The following should hold for addition, subtraction, and multiplcation but
+ not necessarily for division:
+ A. If the true answer is between two representable numbers, the computed
+ answer must be one of them.
+ B. When the true answer is representable, this must be the computed result.
+ 3. Dividing one double by another should always produce a relative error of
+ at most one part in 2^46. (This is why the mantissa requirement is
+ 46 bits instead of 45 bits.)
+ 3. In the absence of overflow, double-to-integer conversion should truncate
+ toward zero and do this in an exact fashion.
+ 4. Integer-to-double convesion should produce exact results.
+ 5. Dividing one power of two by another should yield an exact result.
+ 6. ASCII to double conversion should be exact for integer values.
+ 7. Integer arithmetic must be done in the two's-complement system.
+*/
+#define ELGORDO 0x7fffffff
+#define TWEXP31 2147483648.0
+#define TWEXP28 268435456.0
+#define TWEXP16 65536.0
+#define TWEXP_16 (1.0/65536.0)
+#define TWEXP_28 (1.0/268435456.0)
+
+integer
+ztakefraction P2C(integer, p, integer, q) /* Approximate p*q/2^28 */
+{ register double d;
+ register integer i;
+ d = (double)p * (double)q * TWEXP_28;
+ if ((p^q) >= 0) {
+ d += 0.5;
+ if (d>=TWEXP31) {
+ if (d!=TWEXP31 || (((p&077777)*(q&077777))&040000)==0)
+ aritherror = true;
+ return ELGORDO;
+ }
+ i = (integer) d;
+ if (d==i && (((p&077777)*(q&077777))&040000)!=0) --i;
+ } else {
+ d -= 0.5;
+ if (d<= -TWEXP31) {
+ if (d!= -TWEXP31 || ((-(p&077777)*(q&077777))&040000)==0)
+ aritherror = true;
+ return -ELGORDO;
+ }
+ i = (integer) d;
+ if (d==i && ((-(p&077777)*(q&077777))&040000)!=0) ++i;
+ }
+ return i;
+}
+
+integer
+ztakescaled P2C(integer, p, integer, q) /* Approximate p*q/2^16 */
+{ register double d;
+ register integer i;
+ d = (double)p * (double)q * TWEXP_16;
+ if ((p^q) >= 0) {
+ d += 0.5;
+ if (d>=TWEXP31) {
+ if (d!=TWEXP31 || (((p&077777)*(q&077777))&040000)==0)
+ aritherror = true;
+ return ELGORDO;
+ }
+ i = (integer) d;
+ if (d==i && (((p&077777)*(q&077777))&040000)!=0) --i;
+ } else {
+ d -= 0.5;
+ if (d<= -TWEXP31) {
+ if (d!= -TWEXP31 || ((-(p&077777)*(q&077777))&040000)==0)
+ aritherror = true;
+ return -ELGORDO;
+ }
+ i = (integer) d;
+ if (d==i && ((-(p&077777)*(q&077777))&040000)!=0) ++i;
+ }
+ return i;
+}
+
+/* Note that d cannot exactly equal TWEXP31 when the overflow test is made
+ because the exact value of p/q cannot be strictly between (2^31-1)/2^28
+ and 8/1. No pair of integers less than 2^31 has such a ratio.
+*/
+integer
+zmakefraction P2C(integer, p, integer, q) /* Approximate 2^28*p/q */
+{ register double d;
+ register integer i;
+#ifdef DEBUG
+ if (q==0) confusion(47);
+#endif /* DEBUG */
+ d = TWEXP28 * (double)p /(double)q;
+ if ((p^q) >= 0) {
+ d += 0.5;
+ if (d>=TWEXP31) {aritherror=true; return ELGORDO;}
+ i = (integer) d;
+ if (d==i && ( ((q>0 ? -q : q)&077777)
+ * (((i&037777)<<1)-1) & 04000)!=0) --i;
+ } else {
+ d -= 0.5;
+ if (d<= -TWEXP31) {aritherror=true; return -ELGORDO;}
+ i = (integer) d;
+ if (d==i && ( ((q>0 ? q : -q)&077777)
+ * (((i&037777)<<1)+1) & 04000)!=0) ++i;
+ }
+ return i;
+}
+
+/* Note that d cannot exactly equal TWEXP31 when the overflow test is made
+ because the exact value of p/q cannot be strictly between (2^31-1)/2^16
+ and 2^15/1. No pair of integers less than 2^31 has such a ratio.
+*/
+integer
+zmakescaled P2C(integer, p, integer, q) /* Approximate 2^16*p/q */
+{ register double d;
+ register integer i;
+#ifdef DEBUG
+ if (q==0) confusion(47);
+#endif /* DEBUG */
+ d = TWEXP16 * (double)p /(double)q;
+ if ((p^q) >= 0) {
+ d += 0.5;
+ if (d>=TWEXP31) {aritherror=true; return ELGORDO;}
+ i = (integer) d;
+ if (d==i && ( ((q>0 ? -q : q)&077777)
+ * (((i&037777)<<1)-1) & 04000)!=0) --i;
+ } else {
+ d -= 0.5;
+ if (d<= -TWEXP31) {aritherror=true; return -ELGORDO;}
+ i = (integer) d;
+ if (d==i && ( ((q>0 ? q : -q)&077777)
+ * (((i&037777)<<1)+1) & 04000)!=0) ++i;
+ }
+ return i;
+}
+
+#endif /* not FIXPT */
+#endif /* not assembler */
+#endif /* not TeX, i.e., MF or MP */
+
+#ifdef MF
+/* On-line display routines for Metafont. Here we use a dispatch table
+ indexed by the MFTERM or TERM environment variable to select the
+ graphics routines appropriate to the user's terminal. stdout must be
+ connected to a terminal for us to do any graphics. */
+
+#ifdef MFNOWIN
+#undef AMIGAWIN
+#undef EPSFWIN
+#undef HP2627WIN
+#undef MFTALKWIN
+#undef NEXTWIN
+#undef REGISWIN
+#undef SUNWIN
+#undef TEKTRONIXWIN
+#undef UNITERMWIN
+#undef WIN32WIN
+#undef X11WIN
+#endif
+
+#ifdef AMIGAWIN
+extern int mf_amiga_initscreen P1H(void);
+extern void mf_amiga_updatescreen P1H(void);
+extern void mf_amiga_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_amiga_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+#ifdef EPSFWIN
+extern int mf_epsf_initscreen P1H(void);
+extern void mf_epsf_updatescreen P1H(void);
+extern void mf_epsf_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_epsf_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+#ifdef HP2627WIN
+extern int mf_hp2627_initscreen P1H(void);
+extern void mf_hp2627_updatescreen P1H(void);
+extern void mf_hp2627_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_hp2627_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+#ifdef MFTALKWIN
+extern int mf_mftalk_initscreen P1H(void);
+extern void mf_mftalk_updatescreen P1H(void);
+extern void mf_mftalk_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_mftalk_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+#ifdef NEXTWIN
+extern int mf_next_initscreen P1H(void);
+extern void mf_next_updatescreen P1H(void);
+extern void mf_next_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_next_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+#ifdef REGISWIN
+extern int mf_regis_initscreen P1H(void);
+extern void mf_regis_updatescreen P1H(void);
+extern void mf_regis_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_regis_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+#ifdef SUNWIN
+extern int mf_sun_initscreen P1H(void);
+extern void mf_sun_updatescreen P1H(void);
+extern void mf_sun_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_sun_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+#ifdef TEKTRONIXWIN
+extern int mf_tektronix_initscreen P1H(void);
+extern void mf_tektronix_updatescreen P1H(void);
+extern void mf_tektronix_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_tektronix_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+#ifdef UNITERMWIN
+extern int mf_uniterm_initscreen P1H(void);
+extern void mf_uniterm_updatescreen P1H(void);
+extern void mf_uniterm_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_uniterm_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+#ifdef WIN32WIN
+extern int mf_win32_initscreen P1H(void);
+extern void mf_win32_updatescreen P1H(void);
+extern void mf_win32_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_win32_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+#ifdef X11WIN
+extern int mf_x11_initscreen P1H(void);
+extern void mf_x11_updatescreen P1H(void);
+extern void mf_x11_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_x11_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+#endif
+extern int mf_trap_initscreen P1H(void);
+extern void mf_trap_updatescreen P1H(void);
+extern void mf_trap_blankrectangle P4H(screencol, screencol, screenrow, screenrow);
+extern void mf_trap_paintrow P4H(screenrow, pixelcolor, transspec, screencol);
+
+
+/* This variable, `mfwsw', contains the dispatch tables for each
+ terminal. We map the Pascal calls to the routines `init_screen',
+ `update_screen', `blank_rectangle', and `paint_row' into the
+ appropriate entry point for the specific terminal that MF is being
+ run on. */
+
+struct mfwin_sw
+{
+ char *mfwsw_type; /* Name of terminal a la TERMCAP. */
+ int (*mfwsw_initscreen) P1H(void);
+ void (*mfwsw_updatescrn) P1H(void);
+ void (*mfwsw_blankrect) P4H(screencol, screencol, screenrow, screenrow);
+ void (*mfwsw_paintrow) P4H(screenrow, pixelcolor, transspec, screencol);
+} mfwsw[] =
+{
+#ifdef AMIGAWIN
+ { "amiterm", mf_amiga_initscreen, mf_amiga_updatescreen,
+ mf_amiga_blankrectangle, mf_amiga_paintrow },
+#endif
+#ifdef EPSFWIN
+ { "epsf", mf_epsf_initscreen, mf_epsf_updatescreen,
+ mf_epsf_blankrectangle, mf_epsf_paintrow },
+#endif
+#ifdef HP2627WIN
+ { "hp2627", mf_hp2627_initscreen, mf_hp2627_updatescreen,
+ mf_hp2627_blankrectangle, mf_hp2627_paintrow },
+#endif
+#ifdef MFTALKWIN
+ { "mftalk", mf_mftalk_initscreen, mf_mftalk_updatescreen,
+ mf_mftalk_blankrectangle, mf_mftalk_paintrow },
+#endif
+#ifdef NEXTWIN
+ { "next", mf_next_initscreen, mf_next_updatescreen,
+ mf_next_blankrectangle, mf_next_paintrow },
+#endif
+#ifdef REGISWIN
+ { "regis", mf_regis_initscreen, mf_regis_updatescreen,
+ mf_regis_blankrectangle, mf_regis_paintrow },
+#endif
+#ifdef SUNWIN
+ { "sun", mf_sun_initscreen, mf_sun_updatescreen,
+ mf_sun_blankrectangle, mf_sun_paintrow },
+#endif
+#ifdef TEKTRONIXWIN
+ { "tek", mf_tektronix_initscreen, mf_tektronix_updatescreen,
+ mf_tektronix_blankrectangle, mf_tektronix_paintrow },
+#endif
+#ifdef UNITERMWIN
+ { "uniterm", mf_uniterm_initscreen, mf_uniterm_updatescreen,
+ mf_uniterm_blankrectangle, mf_uniterm_paintrow },
+#endif
+#ifdef WIN32WIN
+ { "win32term", mf_win32_initscreen, mf_win32_updatescreen,
+ mf_win32_blankrectangle, mf_win32_paintrow },
+#endif
+#ifdef X11WIN
+ { "xterm", mf_x11_initscreen, mf_x11_updatescreen,
+ mf_x11_blankrectangle, mf_x11_paintrow },
+#endif
+
+ /* Always support this. */
+ { "trap", mf_trap_initscreen, mf_trap_updatescreen,
+ mf_trap_blankrectangle, mf_trap_paintrow },
+
+/* Finally, we must have an entry with a terminal type of NULL. */
+ { NULL, NULL, NULL, NULL, NULL }
+
+}; /* End of the array initialization. */
+
+
+/* This is a pointer to the mfwsw[] entry that we find. */
+static struct mfwin_sw *mfwp;
+
+
+/* The following are routines that just jump to the correct
+ terminal-specific graphics code. If none of the routines in the
+ dispatch table exist, or they fail, we produce trap-compatible
+ output, i.e., the same words and punctuation that the unchanged
+ mf.web would produce. */
+
+
+/* This returns true if we can do window operations, else false. */
+
+boolean
+initscreen P1H(void)
+{
+ /* If MFTERM is set, use it. */
+ const_string tty_type = kpse_var_value ("MFTERM");
+
+ if (tty_type == NULL)
+ {
+#if defined (AMIGA)
+ tty_type = "amiterm";
+#elif defined (WIN32)
+ tty_type = "win32term";
+#elif defined (OS2) || defined (__DJGPP__) /* not AMIGA nor WIN32 */
+ tty_type = "mftalk";
+#else /* not (OS2 or WIN32 or __DJGPP__ or AMIGA) */
+ /* If DISPLAY is set, we are X11; otherwise, who knows. */
+ boolean have_display = getenv ("DISPLAY") != NULL;
+ tty_type = have_display ? "xterm" : getenv ("TERM");
+
+ /* If we don't know what kind of terminal this is, or if Metafont
+ isn't being run interactively, don't do any online output. */
+ if (tty_type == NULL
+ || (!STREQ (tty_type, "trap") && !isatty (fileno (stdout))))
+ return 0;
+#endif /* not (OS2 or WIN32 or __DJGPP__ or AMIGA) */
+ }
+
+ /* Test each of the terminals given in `mfwsw' against the terminal
+ type, and take the first one that matches, or if the user is running
+ under Emacs, the first one. */
+ for (mfwp = mfwsw; mfwp->mfwsw_type != NULL; mfwp++) {
+ if (!strncmp (mfwp->mfwsw_type, tty_type, strlen (mfwp->mfwsw_type))
+ || STREQ (tty_type, "emacs"))
+ if (mfwp->mfwsw_initscreen)
+ return ((*mfwp->mfwsw_initscreen) ());
+ else {
+ fprintf (stderr, "mf: Couldn't initialize online display for `%s'.\n",
+ tty_type);
+ break;
+ }
+ }
+
+ /* We disable X support by default, since most sites don't use it, and
+ variations in X configurations seem impossible to overcome
+ automatically. Too frustrating for everyone involved. */
+ if (STREQ (tty_type, "xterm")) {
+ fputs ("\nmf: Window support for X was not compiled into this binary.\n",
+ stderr);
+ fputs ("mf: There may be a binary called `mfw' on your system which\n",
+ stderr);
+ fputs ("mf: does contain X window support.\n\n", stderr);
+ fputs ("mf: If you need to recompile, remember to give the --with-x\n",
+ stderr);
+ fputs ("mf: option to configure\n\n", stderr);
+ fputs ("mf: (Or perhaps you just failed to specify the mode.)\n", stderr);
+ }
+
+ /* The current terminal type wasn't found in any of the entries, or
+ initalization failed, so silently give up, assuming that the user
+ isn't on a terminal that supports graphic output. */
+ return 0;
+}
+
+
+/* Make sure everything is visible. */
+
+void
+updatescreen P1H(void)
+{
+ if (mfwp->mfwsw_updatescrn)
+ (*mfwp->mfwsw_updatescrn) ();
+}
+
+
+/* This sets the rectangle bounded by ([left,right], [top,bottom]) to
+ the background color. */
+
+void
+blankrectangle P4C(screencol, left, screencol, right,
+ screenrow, top, screenrow, bottom)
+{
+ if (mfwp->mfwsw_blankrect)
+ (*mfwp->mfwsw_blankrect) (left, right, top, bottom);
+}
+
+
+/* This paints ROW, starting with the color INIT_COLOR.
+ TRANSITION_VECTOR then specifies the length of the run; then we
+ switch colors. This goes on for VECTOR_SIZE transitions. */
+
+void
+paintrow P4C(screenrow, row, pixelcolor, init_color,
+ transspec, transition_vector, screencol, vector_size)
+{
+ if (mfwp->mfwsw_paintrow)
+ (*mfwp->mfwsw_paintrow) (row, init_color, transition_vector, vector_size);
+}
+#endif /* MF */
diff --git a/language/japanese/ptex/ptexextra.h b/language/japanese/ptex/ptexextra.h
new file mode 100644
index 0000000000..ebde5e41a4
--- /dev/null
+++ b/language/japanese/ptex/ptexextra.h
@@ -0,0 +1,61 @@
+/* ptexextra.h: banner etc. for pTeX.
+
+ This is included by pTeX, from ptexextra.c
+*/
+
+string based_prog_name = "TeX";
+const_string PTEXHELP[] = {
+ "Usage: ptex [option] texfile",
+ " : ptex [option] &format texfile",
+ "",
+ "-fmt=NAME use NAME instead of program name or %&format.",
+ "-halt-on-error stop processing at the first error",
+ "[-no]-file-line-error disable/enable file:line:error style messages",
+ "-ini be iniptex.",
+ "-interaction=STRING set interaction mode (STRING=batchmode|nonstopmode|",
+ " scrollmode|errorstopmode)",
+#ifdef IPC
+ "-ipc send DVI output to a socket as well as the usual",
+ " output file",
+ "-ipc-start as -ipc, and also start the server at the other end",
+#endif /* IPC */
+ "-jobname=STRING set the job name to STRING",
+ "-kanji=STRING set Japanese encoding (STRING=euc|jis|sjis)",
+ "-kpathsea-debug=NUMBER set path searching debugging flags according to",
+ " the bits of NUMBER",
+ "[-no]-mktex=FMT disable/enable mktexFMT generation (FMT=tex/tfm)",
+ "-mltex enable MLTeX extensions such as \\charsubdef",
+ "-output-comment=STRING use STRING for DVI file comment instead of date",
+ "-output-directory=DIR use DIR as the directory to write files to",
+ "[-no]-parse-first-line disable/enable parsing of the first line of the",
+ " input file",
+ "-progname=STRING set program (and fmt) name to STRING",
+ "-recorder enable filename recorder",
+ "[-no]-shell-escape disable/enable \\write18{SHELL COMMAND}",
+ "-src-specials insert source specials into the DVI file",
+ "-src-specials=WHERE insert source specials in certain places of",
+ " the DVI file. WHERE is a comma-separated value",
+ " list: cr display hbox math par parend vbox",
+ "-translate-file=TCXNAME use the TCX file TCXNAME",
+ "-help print this message and exit.",
+ "-version print version information and exit.",
+ NULL
+};
+
+#define BANNER "This is pTeX, Version 3.141592-p3.1.9"
+#define COPYRIGHT_HOLDER "D.E. Knuth"
+#define AUTHOR NULL
+#define PROGRAM_HELP PTEXHELP
+#define BUG_ADDRESS "www-ptex@ascii.co.jp"
+#define DUMP_VAR TEXformatdefault
+#define DUMP_LENGTH_VAR formatdefaultlength
+#define DUMP_OPTION "fmt"
+#define DUMP_EXT ".fmt"
+#define INPUT_FORMAT kpse_tex_format
+#define INI_PROGRAM "iniptex"
+#define VIR_PROGRAM "virptex"
+
+#ifdef Xchr
+#undef Xchr
+#define Xchr(x) (x)
+#endif /* Xchr */
diff --git a/language/japanese/ptex/ptexhelp.h b/language/japanese/ptex/ptexhelp.h
new file mode 100644
index 0000000000..bd8cd0b652
--- /dev/null
+++ b/language/japanese/ptex/ptexhelp.h
@@ -0,0 +1,71 @@
+/* ptexhelp.h: for the --help option"
+*/
+#ifndef PTEXHELP_H
+#define PTEXHELP_H
+#define HELP_H
+
+#ifdef TeX
+/* ptexextra.h */
+#undef TEXPOOLNAME
+#define TEXPOOLNAME "ptex.pool"
+#endif /* TeX */
+
+#ifdef TFTOPL
+string based_prog_name = "TFtoPL";
+const_string PTEXTFTOPLHELP[] = {
+"Usage: tftopl [option] tfmfile [plfile]",
+"",
+" -verbose output progress reports.",
+" -version print version information and exit.",
+" -help print this message and exit.",
+" -kanji={jis|euc|sjis} plfile kanji code.",
+NULL };
+#endif /* TFTOPL */
+
+#ifdef PLTOTF
+string based_prog_name = "PLtoTF";
+const_string PTEXPLTOTFHELP[] = {
+"Usage: pltotf [option] plfile [tfmfile]",
+"",
+" -verbose output progress reports.",
+" -version print version information and exit.",
+" -help print this message and exit.",
+" -kanji={jis|euc|sjis} plfile kanji code.",
+NULL };
+#endif /* PLTOTF */
+
+#ifdef BIBTEX
+string based_prog_name = "BibTeX";
+const_string JBIBTEXHELP[] = {
+"Usage: jbibtex [option] auxfile",
+"",
+" -min-crossrefs=INTEGER minimum number of cross-refs required",
+" for automatic cite_list inclusion (default 2).",
+" -terse do silently.",
+" -version print version information and exit.",
+" -help print this message and exit.",
+" -kanji={jis|euc|sjis} kanji code for output-file.",
+NULL };
+#endif /* BIBTEX */
+
+#ifdef DVITYPE
+string based_prog_name = "DVItype";
+const_string PDVITYPEHELP[] = {
+"Usage: pdvitype [option] dvifile",
+"",
+" -dpi=REAL assumed device resolution in pixels per inch",
+" (default 300.0).",
+" -magnification=INTEGER overrride the postamble's magnification.",
+" -max-pages=INTEGER maximum number of pages (default 1000000).",
+" -output-level=1..4 verbosity level.",
+" 1: terse, 2: medium-level, 3: verbose,",
+" 4: plus check for postamble(default).",
+" -page-start=PAGE type, e.g., `1.*.-5' to specify the first page",
+" with \\count0=1, \\count2=4.",
+" (see the TeX book chapter 15).",
+" -show-opcodes show opcodes in dicimal.",
+" -version print version information and exit.",
+" -help print this message and exit.",
+NULL };
+#endif /* DVITYPE */
+#endif /* PTEXHELP_H */
diff --git a/language/japanese/ptex/tftopl.ch b/language/japanese/ptex/tftopl.ch
new file mode 100644
index 0000000000..5ec3f96586
--- /dev/null
+++ b/language/japanese/ptex/tftopl.ch
@@ -0,0 +1,544 @@
+% This is a change file for TFtoPL
+%
+% (03/27/1998) KN TFtoPL p1.4 (3.1, Web2c 7.2)
+%
+@x [0] l.45 - pTeX:
+\def\title{TF\lowercase{to}PL changes for C}
+@y
+\def\title{TF\lowercase{to}PL changes for C, and for KANJI}
+@z
+
+@x [2] l.64 - pTeX:
+@d banner=='This is TFtoPL, Version 3.1' {printed when the program starts}
+@y
+@d banner=='This is Nihongo TFtoPL, Version 3.2-p1.5'
+ {printed when the program starts}
+@d jis_enc==0
+@d euc_enc==1
+@d sjis_enc==2
+@z
+
+@x [2] l.91 - pTeX:
+procedure initialize; {this procedure gets things started properly}
+@y
+procedure initialize; {this procedure gets things started properly}
+var @!k:integer; {all-purpose initiallization index}
+@z
+
+@x [2] l.97 - pTeX:
+ tfm_file_array := cast_to_byte_pointer (xmalloc (1003));
+@y
+ tfm_file_array := cast_to_byte_pointer (xmalloc (1003+4));
+@z
+
+@x [7] l.149 - pTeX:
+ print_ln (version_string);
+@y
+ print_ln (version_string);
+ print ('process kanji code is ');
+ case proc_kanji_code of
+ jis_enc: print('jis');
+ euc_enc: print('euc');
+ sjis_enc: print('sjis');
+ end;
+ print_ln('.');
+@z
+
+@x [18.20] l.438 - pTeX:
+@d index == index_type
+@y
+@d index == index_type
+@d yoko_id_byte = 11 {id byte for YOKO-kumi kanji tfm files}
+@d tate_id_byte = 9 {id byte for TATE-kumi kanji tfm files}
+@d tfm_format = 1 {normal tfm formated metric files}
+@d jfm_format = 2 {jfm formated metric files for YOKO-kumi kanji}
+@d vfm_format = 3 {vfm formated metric files for TATE-kumi kanji}
+@z
+
+@x [18.20] l.448 - pTeX:
+@!tfm_file_array: pointer_to_byte; {the input data all goes here}
+@y
+@!tfm_file_array: pointer_to_byte; {the input data all goes here}
+@!file_format:tfm_format..vfm_format; {format of tfm file}
+@!nt:0..@'77777; {number of words in the character type table}
+@!ng:0..@'77777; {number of words in the glue table}
+@z
+
+@x [20] l.434 - pTeX: Read JFM header
+read(tfm_file,tfm[1]); lf:=tfm[0]*@'400+tfm[1];
+@y
+read(tfm_file,tfm[1]); lf:=tfm[0]*@'400+tfm[1];
+if lf=yoko_id_byte then
+ begin file_format:=jfm_format;
+ print_ln('Input file is in YOKO-kumi kanji tfm format.');
+ write_ln(pl_file,'(COMMENT THIS IS A KANJI FORMAT FILE)');
+ end
+else if lf=tate_id_byte then
+ begin file_format:=vfm_format;
+ print_ln('Input file is in TATE-kumi kanji tfm format.');
+ write_ln(pl_file,'(COMMENT THIS IS A KANJI FORMAT FILE)');
+ write_ln(pl_file,'(DIRECTION TATE)');
+ end
+else begin file_format:=tfm_format; nt:=0; tmp_ptr:=2;
+ end;
+if file_format<>tfm_format then
+ begin if eof(tfm_file) then abort('The input file is only two bytes long!');
+ read(tfm_file,tfm[2]);
+ if eof(tfm_file) then abort('The input file is only three bytes long!');
+ read(tfm_file,tfm[3]); nt:=tfm[2]*@'400+tfm[3];
+ if eof(tfm_file) then abort('The input file is only four bytes long!');
+ read(tfm_file,tfm[4]);
+ if eof(tfm_file) then abort('The input file is only five bytes long!');
+ read(tfm_file,tfm[5]); lf:=tfm[4]*@'400+tfm[5];
+ tmp_ptr:=6;
+ end;
+@z
+
+@x [20] l.445 - pTeX: put the rest of the file into tfm[6] and after
+for tfm_ptr:=2 to 4*lf-1 do
+@y
+for tfm_ptr:=tmp_ptr to 4*lf-1 do
+@z
+
+@x [21] l.468 - pTeX: the location of subfile sizes is different
+begin tfm_ptr:=2;@/
+@y
+begin
+if file_format<>tfm_format then
+ begin tfm_ptr:=6; check_sum_value:=28;
+ end
+else
+ begin tfm_ptr:=2; check_sum_value:=24;
+ end;
+@z
+
+@x [21] l.485 - pTeX: ng has to be treated specially
+if (bc>ec+1)or(ec>255) then abort('The character code range ',
+@.The character code range...@>
+ bc:1,'..',ec:1,'is illegal!');
+if (nw=0)or(nh=0)or(nd=0)or(ni=0) then
+ abort('Incomplete subfiles for character dimensions!');
+@.Incomplete subfiles...@>
+if ne>256 then abort('There are ',ne:1,' extensible recipes!');
+@.There are ... recipes@>
+if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then
+ abort('Subfile sizes don''t add up to the stated total!');
+@.Subfile sizes don't add up...@>
+@y
+case file_format of
+tfm_format: begin
+ if (bc>ec+1)or(ec>255) then abort('The character code range ',
+@.The character code range...@>
+ bc:1,'..',ec:1,'is illegal!');
+ if (nw=0)or(nh=0)or(nd=0)or(ni=0) then
+ abort('Incomplete subfiles for character dimensions!');
+@.Incomplete subfiles...@>
+ if ne>256 then abort('There are ',ne:1,' extensible recipes!');
+@.There are ... recipes@>
+ if lf<>6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np then
+ abort('Subfile sizes don''t add up to the stated total!');
+@.Subfile sizes don't add up...@>
+ end;
+jfm_format,vfm_format: begin ng:=ne;
+ if (bc>ec+1)or(ec>255)or(bc<>0) then abort('The character code range ',
+@.The character code range...@>
+ bc:1,'..',ec:1,'is illegal!');
+ if (nw=0)or(nh=0)or(nd=0)or(ni=0) then
+ abort('Incomplete subfiles for character dimensions!');
+@.Incomplete subfiles...@>
+ if lf<>7+nt+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ng+np then
+ abort('Sum of subfile sizes (',
+ 7+nt+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ng+np:1,
+ ') is not equal to the stated total ', lf:1);
+@.Subfile sizes don't add up...@>
+ end;
+end;
+@z
+
+@x [23] l.506 - pTeX: declare type_base.
+@!char_base,@!width_base,@!height_base,@!depth_base,@!italic_base,
+@!lig_kern_base,@!kern_base,@!exten_base,@!param_base:integer;
+ {base addresses for the subfiles}
+@y
+@!char_base,@!width_base,@!height_base,@!depth_base,@!italic_base,
+@!lig_kern_base,@!kern_base,@!exten_base,@!param_base:integer;
+@!type_base,@!glue_base:integer; {base addresses for the subfiles}
+@!check_sum_value:integer; {either 24 (normal case) or 28 (kanji case)}
+@z
+
+@x [24] l.510 - pTeX: define type_base
+@ @<Compute the base addresses@>=
+begin char_base:=6+lh-bc;
+@y
+@ @<Compute the base addresses@>=
+begin
+if file_format<>tfm_format then
+ begin type_base:=7+lh;
+ char_base:=type_base+nt-bc; { bc should be zero ...}
+ end
+else char_base:=6+lh-bc;
+@z
+
+@x [24] l.517 - pTeX: define glue_base
+kern_base:=lig_kern_base+nl;
+exten_base:=kern_base+nk;
+param_base:=exten_base+ne-1;
+@y
+kern_base:=lig_kern_base+nl;
+exten_base:=kern_base+nk;
+glue_base:=exten_base;
+param_base:=exten_base+ne-1;
+@z
+
+@x [25] l.529 - pTeX: must change check_sum from macro (=24) to variable
+@d check_sum=24
+@d design_size=check_sum+4
+@d scheme=design_size+4
+@d family=scheme+40
+@d random_word=family+20
+@y
+@d check_sum==check_sum_value
+@d design_size==check_sum+4
+@d scheme==design_size+4
+@d family==scheme+40
+@d random_word==family+20
+@z
+
+@x [25] l.549 - pTeX: add definition of glue macro
+@d kern(#)==4*(kern_base+#) {here \#\ is an index, not a character}
+@y
+@d kern(#)==4*(kern_base+#) {here \#\ is an index, not a character}
+@d glue(#)==4*(glue_base+#) {likewise}
+@z
+
+@x [63] l.1003 - pTeX: Name of parameter for kanji-font
+else if (i<=13)and(font_type=mathex) then
+ if i=8 then out('DEFAULTRULETHICKNESS')
+ else out('BIGOPSPACING',i-8:1)
+else out('PARAMETER D ',i:1)
+@y
+else if (i<=13)and(font_type=mathex) then
+ if i=8 then out('DEFAULTRULETHICKNESS')
+ else out('BIGOPSPACING',i-8:1)
+else if (i<=9)and(file_format<>tfm_format) then
+ if i=8 then out('EXTRASTRETCH')
+ else out('EXTRASHRINK')
+else out('PARAMETER D ',i:1)
+@z
+
+@x [64] l.1027 - pTeX: Add printing of newline at end of program
+if nk>0 then for i:=0 to nk-1 do check_fix(kern(i))('Kern');
+@.Kern n is too big@>
+@y
+if nk>0 then for i:=0 to nk-1 do check_fix(kern(i))('Kern');
+@.Kern n is too big@>
+if file_format<>tfm_format then
+ begin if ng>0 then for i:=0 to ng-1 do check_fix(glue(i))('Glue');
+@.Glue n is too big@>
+ end;
+@z
+
+@x [68] l.1068 - pTeX: we print GLUEKERN instead of LIGTABLE
+ begin left; out('LIGTABLE'); out_ln;@/
+@y
+ begin left;
+ if file_format<>tfm_format then out('GLUEKERN') else out('LIGTABLE');
+ out_ln;@/
+@z
+
+@x [69] l.1090 - pTeX: we print Glue/kern instead of Ligature/kern
+ print('Ligature/kern starting index for character '); print_octal(c);
+ print_ln(' is too large;'); print_ln('so I removed it.'); reset_tag(c);
+@.Ligature/kern starting index...@>
+@y
+ case file_format of
+ tfm_format: print('Ligature/kern ');
+@.Ligature/kern starting index...@>
+ jfm_format,vfm_format: print('Glue/kern ');
+@.Glue/kern index starging index...@>
+ end;
+ print('starting index for character '); print_octal(c);
+ print_ln(' is too large;'); print_ln('so I removed it.'); reset_tag(c);
+@z
+
+@x [76] l.1179 - pTeX: if kanji format, output a glue step not a ligature step
+else @<Output a ligature step@>;
+@y
+else if file_format=tfm_format then @<Output a ligature step@>
+else if (file_format=jfm_format)or(file_format=vfm_format) then
+ @<Output a glue step@>;
+@z
+
+@x [78] l.1238 - pTeX:
+for c:=bc to ec do if width_index(c)>0 then
+@y
+for c:=bc to ec do
+if width_index(c)=0 then
+ begin if file_format<>tfm_format then
+ bad('width index of type ',c:1,' is zero!!')
+ end
+else if width_index(c)>0 then
+@z
+
+@x [78] l.1246 - pTeX: the 'character' table is really the 'type' table
+ left; out('CHARACTER'); out_char(c); out_ln;
+@y
+ left;
+ if file_format<>tfm_format then
+ begin out('TYPE'); tfm[0]:=c; out_octal(0,1);
+ end
+ else
+ begin out('CHARACTER'); out_char(c);
+ end;
+ out_ln;
+@z
+
+@x [78] l.1251 - pTeX: types can only have tags equal to 0 or 1
+ case tag(c) of
+ no_tag: do_nothing;
+ lig_tag: @<Output the applicable part of the ligature/kern
+ program as a comment@>;
+ list_tag: @<Output the character link unless there is a problem@>;
+ ext_tag: @<Output an extensible character recipe@>;
+ end; {there are no other cases}
+ right;
+ end
+@y
+ case tag(c) of
+ no_tag: do_nothing;
+ lig_tag: @<Output the applicable part of the ligature/kern
+ program as a comment@>;
+ list_tag: if file_format<>tfm_format then
+ bad('the tag of type ',c:1,' must be 0 or 1')
+ else @<Output the character link unless there is a problem@>;
+ ext_tag: if file_format<>tfm_format then
+ bad('the tag of type ',c:1,' must be 0 or 1')
+ else @<Output an extensible character recipe@>;
+ end; {there are no other cases}
+ right;
+ end
+@z
+
+@x [96] l.1539 - pTeX:
+var tfm_ptr:index; {an index into |tfm|}
+@y
+var tfm_ptr,tmp_ptr:index; {an index into |tfm|}
+@z
+
+@x [98] l.1566 - pTeX: declare kanji conversion subroutines and externals
+@p begin initialize;@/
+@y
+@p
+@<declare kanji conversion functions@>;
+begin initialize;@/
+@z
+
+@x [99] l.1570 - pTeX: don't check extensible recipes and list the char_type table
+@<Check the extensible recipes@>;
+@y
+if file_format<>tfm_format then
+ begin @<list |char_type| table@>;
+ end
+else
+ begin @<Check the extensible recipes@>;
+ end;
+@z
+
+@x
+const n_options = 4; {Pascal won't count array lengths for us.}
+@y
+const n_options = 5; {Pascal won't count array lengths for us.}
+@z
+@x
+ usage_help (TFTOPL_HELP, nil);
+@y
+ usage_help (PTEX_TFTOPL_HELP, nil);
+@z
+@x
+ end else if argument_is ('version') then begin
+ print_version_and_exit (banner, nil, 'D.E. Knuth');
+@y
+ end else if argument_is ('version') then begin
+ print_version_and_exit (banner, nil, 'D.E. Knuth');
+
+ end else if argument_is ('kanji') then begin
+ @<Set process kanji code@>;
+@z
+
+@x
+@ An element with all zeros always ends the list.
+@y
+@ kanji option
+
+@<Define the option...@> =
+long_options[current_option].name := 'kanji';
+long_options[current_option].has_arg := 1;
+long_options[current_option].flag := 0;
+long_options[current_option].val := 0;
+incr(current_option);
+
+@ An element with all zeros always ends the list.
+@z
+
+@x [99] l.1751 - pTeX:
+@* Index.
+@y
+@* For Japanese Font Metric routines. % pTeX:
+We need to include some routines for handling kanji character.
+
+@d max_kanji=7237 {number of the kanji characters - 1}
+
+@<Glob...@>=
+@!this_code:integer; {to hold jis code of the current kanji character}
+@!this_type:integer; {to hold |char_type| of the current kanji character}
+@!type_index:integer; {index into |char_type| table}
+@!type_num:integer; {index into |char_info| table}
+@!type_count:integer; {number of chars with the same type}
+@!kanji_index:integer; {index into |kanji_type| array}
+@!kanji_type:array[0..max_kanji] of -1..255; {kanji type index}
+
+@ @<Output a glue step@>=
+begin if nonexistent(tfm[k+1]) then
+ correct_bad_char('Glue step for')(k+1)
+@.Glue step for nonexistent...@>
+else
+ begin left; out('GLUE'); out_char(tfm[k+1]);
+ if tfm[k+3]>=ng then
+ begin bad('Glue index too large.');
+@.Glue index too large@>
+ out(' R 0.0 R 0.0 R 0.0');
+ end
+ else begin out_fix(glue(3*tfm[k+3]));
+ out_fix(glue(3*tfm[k+3]+1));
+ out_fix(glue(3*tfm[k+3]+2));
+ end;
+ right;
+ end;
+end;
+
+@ list the |char_type| table in a similar way to the type table
+
+@<list |char_type| table@>=
+this_code:=tfm[4*type_base+0]*@'400+tfm[4*type_base+1];
+this_type:=tfm[4*type_base+2]*@'400+tfm[4*type_base+3];
+if (this_code<>0)or(this_type<>0) then
+ begin bad('the first entry in char_type is not zero. I''ll zero it.');
+ print_ln('JIS code is ', this_code:1, '. Type is ', this_type:1, '.');
+ end;
+for kanji_index:=0 to max_kanji do kanji_type[kanji_index]:=-1;
+for type_index:=1 to nt-1 do
+ begin this_code:=tfm[4*type_base + type_index * 4 + 0] * 256 +
+ tfm[4*type_base + type_index * 4 + 1];
+ this_type:=tfm[4*type_base + type_index * 4 + 2] * 256 +
+ tfm[4*type_base + type_index * 4 + 3];
+ if not valid_jis_code(this_code) then
+ bad('jis code ', this_code:1,
+ ' in char_type table entry ', type_index:1,
+ ' is not valid. Ignoring it.')
+ else if (this_type <= 0) or (this_type > ec) then
+ bad('type ', this_type:1, ' of jis code ', this_code:1,
+ ' in char_type table is not valid. Ignoring character.')
+ else
+ kanji_type[jis_to_index(this_code)] := this_type;
+ end;
+@#
+for type_num:=1 to ec do
+ begin left; out('CHARSINTYPE');
+ tfm[0]:=type_num; out_octal(0,1); out_ln;
+ type_count:=0;
+ for kanji_index:=0 to max_kanji do
+ if kanji_type[kanji_index]=type_num then
+ begin incr(type_count);
+ if (type_count mod 14)=0 then out_ln;
+ out_kanji(index_to_jis(kanji_index)); out(' ');
+ end;
+ if type_count=0 then bad('type ', type_num:1, 'has no characters in it!');
+ out_ln; right;
+ end;
+
+@ Some subroutines to handle kanji codes and i/o
+
+@<Globals...@>=
+@!xchr:array[char] of byte; {specifiles conversion of output charcter}
+
+@ @<Set init...@>=
+for k:=@'0 to @'37 do xchr[k]:='?';
+for k:=@'40 to 255 do xchr[k]:=k;
+
+@ @<declare kanji conversion functions@>=
+procedure out_kanji(jis_code:integer); { prints a kanji character }
+var @!cx:integer; {KANJI code}
+i:0..4; {index of array}
+begin@/
+if charcode_format=charcode_octal then
+ begin cx:=jis_code; out(' J '); {specify jiscode format}
+ dig[0]:=Hi(cx) div 16; dig[1]:=Hi(cx) mod 16;
+ dig[2]:=Lo(cx) div 16; dig[3]:=Lo(cx) mod 16;
+ for i:=0 to 3 do
+ if dig[i]<10 then out(dig[i]) else
+ case dig[i] of
+ 10: out('A'); 11: out('B'); 12: out('C');
+ 13: out('D'); 14: out('E'); 15: out('F');
+ end;
+ end
+else begin
+ if (proc_kanji_code=sjis_enc) then cx:=JIStoSJIS(jis_code)
+ else cx:=JIStoEUC(jis_code);
+ out(xchr[Hi(cx)]); out(xchr[Lo(cx)]);
+ end;
+end;
+
+@ @<declare kanji conversion functions@>=
+function valid_jis_code(cx:integer):boolean;
+var first_byte, second_byte:integer; { jis code bytes }
+begin valid_jis_code:=true;
+first_byte:=cx div @'400; second_byte:=cx mod @'400;
+if (first_byte<@"21)
+ or((first_byte>@"28)and(first_byte<@"30))
+ or(first_byte>@"74) then valid_jis_code:=false;
+if (second_byte<@"21)or(second_byte>@"7E) then valid_jis_code:=false;
+end;
+
+@ @<declare kanji conversion functions@>=
+function index_to_jis(ix:integer):integer;
+begin
+if ix<=8*94+94-1 then
+ index_to_jis:=(ix div 94 + @"21) * @'400 + (ix mod 94 + @"21)
+else
+ index_to_jis:=((ix+7 * 94) div 94 + @"21) * @'400 + ((ix+7*94) mod 94 + @"21)
+end;
+
+@ @<declare kanji conversion functions@>=
+function jis_to_index(cx:integer):integer;
+var first_byte,second_byte:integer; { jis code bytes }
+begin
+first_byte:=cx div @'400 - @"21;
+second_byte:=cx mod @'400 - @"21;
+if first_byte<=8 then
+ jis_to_index:=first_byte*94+second_byte
+else
+ jis_to_index:=(first_byte-7)*94+second_byte;
+end
+
+@ output kanji code.
+
+@<Global...@> =
+@!proc_kanji_code:jis_enc..sjis_enc;
+
+@ @<Initialize the option...@> =
+ifdef('OUTJIS') proc_kanji_code:=jis_enc; endif('OUTJIS')@/
+ifdef('OUTEUC') proc_kanji_code:=euc_enc; endif('OUTEUC')@/
+ifdef('OUTSJIS') proc_kanji_code:=sjis_enc; endif('OUTSJIS')@/
+
+@ @<Set process kanji code@>=
+ if strcmp(optarg, 'jis') = 0 then
+ proc_kanji_code:=jis_enc
+ else if strcmp(optarg, 'euc') = 0 then
+ proc_kanji_code:=euc_enc
+ else if strcmp(optarg, 'sjis') = 0 then
+ proc_kanji_code:=sjis_enc
+ else
+ print_ln('Bad kanjicode encoding', optarg, '.');
+
+@* Index.
+@z
diff --git a/language/japanese/ptex/usage.c b/language/japanese/ptex/usage.c
new file mode 100644
index 0000000000..490065dbc3
--- /dev/null
+++ b/language/japanese/ptex/usage.c
@@ -0,0 +1,28 @@
+#include "config.h"
+
+/*** lib/usage.c: Output a help message (from help.h). ***/
+void
+usage P1C(const_string, str)
+{
+ fprintf (stderr, "Try `%s --help' for more information.\n", str);
+ uexit (1);
+}
+
+/* Call usage if the program exits by printing the help message.
+ MESSAGE is an NULL-terminated array or strings which make up the
+ help message. Each string is printed on a separate line.
+ We use arrays instead of a single string to work around compiler
+ limitations (sigh).
+*/
+void
+usagehelp P2C(const_string*, message, const_string, bug_email)
+{
+ if (!bug_email)
+ bug_email = "www-ptex@ascii.co.jp";
+ while (*message) {
+ fprintf(stdout, "%s\n", *message);
+ ++message;
+ }
+ fprintf(stdout, "\nEmail bug reports to %s.\n", bug_email);
+ uexit(0);
+}
diff --git a/language/japanese/ptex/version.c b/language/japanese/ptex/version.c
new file mode 100644
index 0000000000..63a9b2b3a1
--- /dev/null
+++ b/language/japanese/ptex/version.c
@@ -0,0 +1,54 @@
+#include "config.h"
+#include "kanji.h"
+
+/*** lib/printversion.c: Output for the option --version. ***/
+void
+printversionandexit P3C(const_string, banner,
+ const_string, copyright_holder, const_string, author)
+{
+ extern string versionstring; /* from web2c/lib/version.c */
+ extern string based_prog_name;
+ extern KPSEDLL string kpathsea_version_string;/* from kpathsea/version.c */
+ string prog_name, prog_version;
+ string work_banner;
+ unsigned len;
+
+#if TERM_CODE == JIS
+ string term_code=" (JIS)";
+#elif TERM_CODE == SJIS
+ string term_code=" (SJIS)";
+#else
+ string term_code=" (EUC)";
+#endif
+
+ work_banner = xstrdup(banner);
+ /* attention!: sizeof(s) = strlen(s) + 1 */
+ prog_name = strtok(work_banner, ",") + sizeof("This is ") - 1;
+ prog_version = strtok(NULL, ",") + sizeof(" Version ") - 1;
+
+ /* The Web2c version string starts with a space. */
+ printf ("%s %s%s%s\n", prog_name, prog_version, term_code, versionstring);
+ puts (kpathsea_version_string);
+
+ if (copyright_holder) {
+ printf ("Copyright (C) 1999 %s.\n", copyright_holder);
+ if (!author)
+ author = copyright_holder;
+ }
+
+ puts ("Kpathsea is copyright (C) 1999 Free Software Foundation, Inc.");
+
+ puts ("There is NO warranty. Redistribution of this software is");
+ fputs ("covered by the terms of ", stdout);
+ /* DVIcopy is GPL'd, so no additional words needed. */
+ if (/*copyright_holder && */!STREQ (prog_name, "DVIcopy")) {
+ printf ("both the %s copyright and\n", prog_name);
+ }
+ puts ("the GNU General Public License.");
+ puts ("For more information about these matters, see the files");
+ printf ("named COPYING and the %s source.\n", prog_name);
+ printf ("Primary author of %s: %s.\n", based_prog_name, author);
+ puts ("Kpathsea written by Karl Berry and others.");
+
+ uexit (0);
+}
diff --git a/language/japanese/ptex2pdf/COPYING b/language/japanese/ptex2pdf/COPYING
new file mode 100644
index 0000000000..d159169d10
--- /dev/null
+++ b/language/japanese/ptex2pdf/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/language/japanese/ptex2pdf/README.md b/language/japanese/ptex2pdf/README.md
new file mode 100644
index 0000000000..6cbd1d6878
--- /dev/null
+++ b/language/japanese/ptex2pdf/README.md
@@ -0,0 +1,190 @@
+# ptex2pdf[.lua] #
+
+**Author:** Norbert Preining
+**Website:** http://www.preining.info/blog/software-projects/ptex2pdf/ (in Japanese)
+**License:** GPLv2
+
+Convert Japanese TeX documents to pdf
+
+## Description ##
+
+Main purpose of the script is easy support of Japanese typesetting
+engines in TeXworks. As TeXworks typesetting setup does not allow
+for multistep processing, this script runs one of the ptex based
+programs (ptex, uptex, eptex, euptex, platex, uplatex) followed
+by dvipdfmx.
+
+## Usage ##
+
+`````
+[texlua] ptex2pdf[.lua] { option | basename[.tex] } ...
+options: -v version
+ -h help
+ -help print full help (installation, TeXworks setup)
+ -e use eptex class of programs
+ -u use uptex class of programs
+ -l use latex based formats
+ -s stop at dvi
+ -i retain intermediate files
+ -ot '<opts>' extra options for TeX
+ -od '<opts>' extra options for dvipdfmx
+ -output-directory '<dir>' directory for created files
+`````
+
+## Installation ##
+
+Copy the file ptex2pdf.lua into a directory where scripts are found,
+that is for example
+
+ `TLROOT/texmf-dist/scripts/ptex2pdf/`
+
+(where `TLROOT` is for example the root of your TeX Live installation)
+
+### Unix ###
+
+create a link in one of the bin dirs to the above file, in the
+TeX Live case:
+
+ `TLROOT/bin/ARCH/ptex2pdf -> ../../texmf-dist/scripts/ptex2pdf/ptex2pdf.lua`
+
+### Windows ###
+create a copy of runscript.exe as ptex2pdf.exe, in the TeX Live case:
+
+ `copy TLROOT/bin/win32/runscript.exe TLROOT/bin/win32/ptex2pdf.exe`
+
+## TeXworks setup ##
+
+Under Preferences > Typesetting add new entries, for example:
+
+for ptex files:
+
+| Setting | Value |
+|-------------|--------------------|
+| Name: | pTeX (ptex2pdf) |
+| Program: | ptex2pdf |
+| Arguments: | -ot |
+| | $synctexoption |
+| | $fullname |
+
+for platex files:
+
+| Setting | Value |
+|-------------|--------------------|
+| Name: | pLaTeX (ptex2pdf) |
+| Program: | ptex2pdf |
+| Arguments: | -l |
+| | -ot |
+| | $synctexoption |
+| | $fullname |
+
+for uptex files:
+
+| Setting | Value |
+|-------------|--------------------|
+| Name: | upTeX (ptex2pdf) |
+| Program: | ptex2pdf |
+| Arguments: | -u |
+| | -ot |
+| | $synctexoption |
+| | $fullname |
+
+for uplatex files:
+
+| Setting | Value |
+|-------------|--------------------|
+| Name: | upLaTeX (ptex2pdf) |
+| Program: | ptex2pdf |
+| Arguments: | -l |
+| | -u |
+| | -ot |
+| | $synctexoption |
+| | $fullname |
+
+If you need special kanji encodings for one of these programs,
+add the respective `-kanji` option with the `$synctexoption`. Example:
+
+for platex files in SJIS encoding:
+
+| Setting | Value |
+|-------------|----------------------------|
+| Name: | pLaTeX/SJIS (ptex2pdf) |
+| Program: | ptex2pdf |
+| Arguments: | -l |
+| | -ot |
+| | -kanji=sjis $synctexoption |
+| | $fullname |
+
+
+## Development place ##
+
+http://github.com/texjporg/ptex2pdf
+
+## Changelog ##
+
+- version 0.1 2013-03-08 NP
+ Initial release on blog
+- version 0.2 2013-03-10 NP
+ import into git repository
+ support passing options on to tex and dvipdfm
+ add README with TeXworks config options
+- version 0.3 2013-05-01 NP
+ include the readme in the lua code
+ fix program name for -e -u
+- version 0.4 2013-05-07 NP
+ quote the filename with ", so that special chars do survive
+ add an example for TeXworks for files with different kanji encoding
+- version 0.5 2014-11-05 NP
+ on Windows: set command_line_encoding to utf8 when running uptex
+ (patch by Akira Kakuto)
+- version 0.6 2015-03-08 NP
+ cygwin didn't like the (accidentally inserted) spaces after the
+ texlua in the shebang line, and stopped working with
+ "no such program: "texlua " ..."
+- version 0.7 2015-04-29
+ move to github as gitorious will be closed, adapt help output
+ to generate github flavored markdown
+ check for files using kpathsea instead of opening directly, to allow
+ for input of files found by kpathsea (closes github issue 1)
+- version 0.8 2015-06-15
+ file name checks: first search for arg as is, then try .tex and .ltx
+ (closes github issue: 3)
+- version 0.9 2016-12-12
+ allow for files in sub-directories
+ add -output-directory option
+ update copyright and development place (now in texjp)
+ support 'flag=val' to specify option values
+ only allow one (1) filename argument
+- version 20170603.0
+ start version number in the format YYYYMMDD.0
+ better support for cp932 windows filenames
+ first replace all backslash chars to slash chars
+- version 20170622.0
+ pass all non-optional arguments before filename to TeX engine
+- version 20180514.0
+ Windows: for uptex use command_line_encoding=utf8, for all other turn
+ it off (set to none)
+- version 20181212.0
+ support directories containing dots (thanks kn1cht)
+
+## Copyright and License ##
+
+Originally based on musixtex.lua from Bob Tennent.
+
+(c) Copyright 2016-2018 Japanese TeX Development Community
+(c) Copyright 2013-2018 Norbert Preining norbert@preining.info
+(c) Copyright 2012 Bob Tennent rdt@cs.queensu.ca
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+This program 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 General
+Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
diff --git a/language/japanese/ptex2pdf/ptex2pdf.lua b/language/japanese/ptex2pdf/ptex2pdf.lua
new file mode 100755
index 0000000000..e05b75c495
--- /dev/null
+++ b/language/japanese/ptex2pdf/ptex2pdf.lua
@@ -0,0 +1,454 @@
+#!/usr/bin/env texlua
+
+NAME = "ptex2pdf[.lua]"
+VERSION = "20181212.0"
+AUTHOR = "Norbert Preining"
+AUTHOREMAIL = "norbert@preining.info"
+SHORTDESC = "Convert Japanese TeX documents to pdf"
+LONGDESC = [[
+Main purpose of the script is easy support of Japanese typesetting
+engines in TeXworks. As TeXworks typesetting setup does not allow
+for multistep processing, this script runs one of the ptex based
+programs (ptex, uptex, eptex, euptex, platex, uplatex) followed
+by dvipdfmx.
+]]
+USAGE = [[
+[texlua] ptex2pdf[.lua] { option | basename[.tex] } ...
+options: -v version
+ -h help
+ -help print full help (installation, TeXworks setup)
+ -e use eptex class of programs
+ -u use uptex class of programs
+ -l use latex based formats
+ -s stop at dvi
+ -i retain intermediate files
+ -ot '<opts>' extra options for TeX
+ -od '<opts>' extra options for dvipdfmx
+ -output-directory '<dir>' directory for created files]]
+
+LICENSECOPYRIGHT = [[
+Originally based on musixtex.lua from Bob Tennent.
+
+(c) Copyright 2016-2018 Japanese TeX Development Community
+(c) Copyright 2013-2018 Norbert Preining norbert@preining.info
+(c) Copyright 2012 Bob Tennent rdt@cs.queensu.ca
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+This program 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 General
+Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+]]
+
+INSTALLATION = [[
+Copy the file ptex2pdf.lua into a directory where scripts are found,
+that is for example
+
+ `TLROOT/texmf-dist/scripts/ptex2pdf/`
+
+(where `TLROOT` is for example the root of your TeX Live installation)
+
+### Unix ###
+
+create a link in one of the bin dirs to the above file, in the
+TeX Live case:
+
+ `TLROOT/bin/ARCH/ptex2pdf -> ../../texmf-dist/scripts/ptex2pdf/ptex2pdf.lua`
+
+### Windows ###
+create a copy of runscript.exe as ptex2pdf.exe, in the TeX Live case:
+
+ `copy TLROOT/bin/win32/runscript.exe TLROOT/bin/win32/ptex2pdf.exe`
+]]
+
+TEXWORKS = [[
+Under Preferences > Typesetting add new entries, for example:
+
+for ptex files:
+
+| Setting | Value |
+|-------------|--------------------|
+| Name: | pTeX (ptex2pdf) |
+| Program: | ptex2pdf |
+| Arguments: | -ot |
+| | $synctexoption |
+| | $fullname |
+
+for platex files:
+
+| Setting | Value |
+|-------------|--------------------|
+| Name: | pLaTeX (ptex2pdf) |
+| Program: | ptex2pdf |
+| Arguments: | -l |
+| | -ot |
+| | $synctexoption |
+| | $fullname |
+
+for uptex files:
+
+| Setting | Value |
+|-------------|--------------------|
+| Name: | upTeX (ptex2pdf) |
+| Program: | ptex2pdf |
+| Arguments: | -u |
+| | -ot |
+| | $synctexoption |
+| | $fullname |
+
+for uplatex files:
+
+| Setting | Value |
+|-------------|--------------------|
+| Name: | upLaTeX (ptex2pdf) |
+| Program: | ptex2pdf |
+| Arguments: | -l |
+| | -u |
+| | -ot |
+| | $synctexoption |
+| | $fullname |
+
+If you need special kanji encodings for one of these programs,
+add the respective `-kanji` option with the `$synctexoption`. Example:
+
+for platex files in SJIS encoding:
+
+| Setting | Value |
+|-------------|----------------------------|
+| Name: | pLaTeX/SJIS (ptex2pdf) |
+| Program: | ptex2pdf |
+| Arguments: | -l |
+| | -ot |
+| | -kanji=sjis $synctexoption |
+| | $fullname |
+]]
+
+DEVELPLACE = "http://github.com/texjporg/ptex2pdf"
+
+
+CHANGELOG = [[
+- version 0.1 2013-03-08 NP
+ Initial release on blog
+- version 0.2 2013-03-10 NP
+ import into git repository
+ support passing options on to tex and dvipdfm
+ add README with TeXworks config options
+- version 0.3 2013-05-01 NP
+ include the readme in the lua code
+ fix program name for -e -u
+- version 0.4 2013-05-07 NP
+ quote the filename with ", so that special chars do survive
+ add an example for TeXworks for files with different kanji encoding
+- version 0.5 2014-11-05 NP
+ on Windows: set command_line_encoding to utf8 when running uptex
+ (patch by Akira Kakuto)
+- version 0.6 2015-03-08 NP
+ cygwin didn't like the (accidentally inserted) spaces after the
+ texlua in the shebang line, and stopped working with
+ "no such program: "texlua " ..."
+- version 0.7 2015-04-29
+ move to github as gitorious will be closed, adapt help output
+ to generate github flavored markdown
+ check for files using kpathsea instead of opening directly, to allow
+ for input of files found by kpathsea (closes github issue 1)
+- version 0.8 2015-06-15
+ file name checks: first search for arg as is, then try .tex and .ltx
+ (closes github issue: 3)
+- version 0.9 2016-12-12
+ allow for files in sub-directories
+ add -output-directory option
+ update copyright and development place (now in texjp)
+ support 'flag=val' to specify option values
+ only allow one (1) filename argument
+- version 20170603.0
+ start version number in the format YYYYMMDD.0
+ better support for cp932 windows filenames
+ first replace all backslash chars to slash chars
+- version 20170622.0
+ pass all non-optional arguments before filename to TeX engine
+- version 20180514.0
+ Windows: for uptex use command_line_encoding=utf8, for all other turn
+ it off (set to none)
+- version 20181212.0
+ support directories containing dots (thanks kn1cht)
+]]
+
+
+function usage()
+ print(USAGE)
+end
+
+function makereadme()
+ print("# " .. NAME .. " #")
+ print()
+ print("**Author:** " .. AUTHOR .. " ")
+ print("**Website:** http://www.preining.info/blog/software-projects/ptex2pdf/ (in Japanese) ")
+ print("**License:** GPLv2")
+ print()
+ print(SHORTDESC)
+ print()
+ print("## Description ##")
+ print()
+ print(LONGDESC)
+ print("## Usage ##")
+ print()
+ print("`````")
+ print(USAGE)
+ print("`````")
+ print()
+ print("## Installation ##")
+ print()
+ print(INSTALLATION)
+ print("## TeXworks setup ##")
+ print()
+ print(TEXWORKS)
+ print()
+ print("## Development place ##")
+ print()
+ print(DEVELPLACE)
+ print()
+ print("## Changelog ##")
+ print()
+ print(CHANGELOG)
+ print("## Copyright and License ##")
+ print()
+ print(LICENSECOPYRIGHT)
+end
+
+function help()
+ print(NAME .. ": " .. SHORTDESC)
+ print()
+ print("Author: " .. AUTHOR)
+ print()
+ print(LONGDESC)
+ print(USAGE)
+end
+
+function fullhelp()
+ help()
+ print("Installation")
+ print("------------")
+ print(INSTALLATION)
+ print("TeXworks setup")
+ print("--------------")
+ print(TEXWORKS)
+ print("Development place")
+ print("-----------------")
+ print(DEVELPLACE)
+ print()
+ print("Copyright and License")
+ print("---------------------")
+ print(LICENSECOPYRIGHT)
+end
+
+function whoami ()
+ print("This is " .. NAME .. " version ".. VERSION .. ".")
+end
+
+function print_ifdebug(message) -- for debugging: accepts only one argument
+ --print("DEBUG: " .. message) -- uncomment for debugging
+end
+
+function slashify(str) -- replace "\" with "/", mainly for path strings on cp932 windows
+ return (tostring(str):gsub("[\x81-\x9f\xe0-\xfc]?.", { ["\\"] = "/" }))
+end
+
+if #arg == 0 then
+ usage()
+ os.exit(0)
+end
+
+-- defaults:
+tex = "ptex"
+texopts = ""
+dvipdf = "dvipdfmx"
+dvipdfopts = ""
+intermediate = 1
+
+use_eptex = 0
+use_uptex = 0
+use_latex = 0
+outputdir = "."
+prefilename = ""
+filename = ""
+bname = ""
+exit_code = 0
+narg = 1
+repeat
+ this_arg = arg[narg]
+ -- replace double dash by single dash at the beginning
+ this_arg = string.gsub(this_arg, "^%-%-", "-")
+
+ if this_arg == "-v" then
+ whoami()
+ os.exit(0)
+ elseif this_arg == "-readme" then
+ makereadme()
+ os.exit(0)
+ elseif this_arg == "-output-directory" then
+ narg = narg+1
+ outputdir = arg[narg]
+ elseif (string.sub(this_arg, 1, 18) == "-output-directory=") then
+ outputdir = string.sub(this_arg, 19, -1)
+ elseif this_arg == "-print-version" then
+ print(VERSION)
+ os.exit(0)
+ elseif this_arg == "-h" then
+ help()
+ os.exit(0)
+ elseif this_arg == "-help" then
+ fullhelp()
+ os.exit(0)
+ elseif this_arg == "-e" then
+ use_eptex = 1
+ elseif this_arg == "-u" then
+ use_uptex = 1
+ elseif this_arg == "-l" then
+ use_latex = 1
+ elseif this_arg == "-s" then
+ dvipdf = ""
+ elseif this_arg == "-i" then
+ intermediate = 0
+ elseif this_arg == "-ot" then
+ narg = narg+1
+ texopts = arg[narg]
+ elseif (string.sub(this_arg, 1, 4) == "-ot=") then
+ texopts = string.sub(this_arg, 5, -1)
+ elseif this_arg == "-od" then
+ narg = narg+1
+ dvipdfopts = arg[narg]
+ elseif (string.sub(this_arg, 1, 4) == "-od=") then
+ dvipdfopts = string.sub(this_arg, 5, -1)
+ else
+ if filename == "" then
+ filename = this_arg
+ else
+ -- when emacs tex-mode is used, this will help store "\nonstopmode\input"
+ print("Multiple filename arguments? OK, I'll take the latter one.")
+ prefilename = prefilename .. " \"" .. filename .. "\""
+ filename = this_arg
+ end
+ end --if this_arg == ...
+ narg = narg+1
+until narg > #arg
+
+whoami()
+
+if use_eptex == 1 then
+ if use_uptex == 1 then
+ if use_latex == 1 then
+ tex = "uplatex" -- uplatex already as etex extension
+ else
+ tex = "euptex"
+ end
+ else
+ if use_latex == 1 then
+ tex = "platex" -- latex needs etex anyway
+ else
+ tex = "eptex"
+ end
+ end
+else
+ if use_uptex == 1 then
+ if use_latex == 1 then
+ tex = "uplatex"
+ else
+ tex = "uptex"
+ end
+ else
+ if use_latex == 1 then
+ tex = "platex"
+ else
+ tex = "ptex"
+ end
+ end
+end
+
+-- initialize kpse
+kpse.set_program_name(tex)
+
+-- filename searching
+-- first search for the file as is,
+-- if not found, try file .tex, if that not found, file .ltx
+
+if ( filename == "" ) then
+ print("No filename argument given, exiting.")
+ os.exit(1)
+else
+ filename = slashify(filename)
+ if ( kpse.find_file(filename) == nil ) then
+ -- try .tex extension
+ if ( kpse.find_file(filename .. ".tex") == nil ) then
+ -- last try .ltx
+ if ( kpse.find_file(filename .. ".ltx") == nil ) then
+ print("File cannot be found with kpathsea: ", filename .. "[.tex, .ltx]")
+ os.exit(1)
+ else
+ bname = filename
+ filename = filename .. ".ltx"
+ end
+ else
+ bname = filename
+ filename = filename .. ".tex"
+ end
+ else
+ -- if it has already an extension, we need to drop it to get the dvi name
+ bname = string.gsub(filename, "^(.*)%.[^./]+$", "%1")
+ end
+ -- filename may contain "/", but the intermediate output is written
+ -- in current directory, so we need to drop it
+ -- note that all "\" has been replaced with "/"
+ bname = string.gsub(bname, "^.*/(.*)$", "%1")
+end
+
+-- we are still here, so we found a file
+-- make sure that on Windows/uptex we are using utf8 as command line encoding
+if os.type == 'windows' then
+ if use_uptex == 1 then
+ os.setenv('command_line_encoding', 'utf8')
+ else
+ os.setenv('command_line_encoding', 'none')
+ end
+end
+if (outputdir ~= ".") then
+ texopts = "-output-directory \"" .. outputdir .. "\" " .. texopts
+ bname = outputdir .. "/" .. bname
+ dvipdfopts = "-o \"" .. bname .. ".pdf\""
+end
+print("Processing ".. filename)
+if (os.execute(tex .. " " .. texopts .. prefilename .. " \"" .. filename .. "\"") == 0) and
+ (dvipdf == "" or (os.execute(dvipdf .. " " .. dvipdfopts .. " \"" .. bname .. ".dvi" .. "\"") == 0)) then
+ if dvipdf ~= "" then
+ print(bname .. ".pdf generated by " .. dvipdf .. ".")
+ end
+ if intermediate == 1 then -- clean-up:
+ if dvipdf ~= "" then
+ os.remove( bname .. ".dvi" )
+ end
+ end
+else
+ print("ptex2pdf processing of " .. filename .. " failed.\n")
+ print_ifdebug("tex = " .. tex)
+ print_ifdebug("dvipdf = " .. dvipdf)
+ os.exit(2)
+end
+
+-- all done ... exit with success
+os.exit( 0 )
+
+
+
+-- Local Variables:
+-- lua-indent-level: 2
+-- tab-width: 2
+-- indent-tabs-mode: nil
+-- End:
+-- vim:set tabstop=2 expandtab: #
diff --git a/language/japanese/pxbase/LICENSE b/language/japanese/pxbase/LICENSE
new file mode 100644
index 0000000000..8ada757fbc
--- /dev/null
+++ b/language/japanese/pxbase/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/pxbase/README-ja.md b/language/japanese/pxbase/README-ja.md
new file mode 100644
index 0000000000..fd3eaf9ad0
--- /dev/null
+++ b/language/japanese/pxbase/README-ja.md
@@ -0,0 +1,227 @@
+PXbase パッケージバンドル
+=========================
+
+LaTeX: 他の PX パッケージのためのサポートライブラリ
+
+本バンドルの主な目的は、作者(ZR)の制作する他の pTeX 用パッケージ(名前
+が“PX”で始まる)が依拠するライブラリ機能の提供である。
+
+その他に、本バンドルには以下のユーザ・開発者用パッケージが含まれる。
+
+ * pxbabel パッケージ: Babel の機構に基づく CJK 間のフォント切替
+ * upkcat パッケージ: 文字指定による kcatcode 操作
+
+### 前提環境
+
+ * TeX フォーマット: LaTeX
+ * TeX エンジン: pTeX、upTeX(派生を含む)
+ * DVI ウェア(DVI 出力時): 不問
+
+※upkcat パッケージについては当該の節を参照。
+
+### 構成物
+
+ * `pxbase.sty`: pxbase パッケージ
+ * `pxbase.def`: サブモジュール(の残骸)
+ * `pxbabel.sty`: pxbabel パッケージ
+ * `pxbasenc.def`: サブモジュール
+ * `pxjsfenc.def`: サブモジュール
+ * `pxbsjc.def`: pxbase 用の補助ファイル
+ * `pxbsjc1.def`: pxbase 用の補助ファイル
+ * `upkcat.sty`: upkcat パッケージ
+
+※種々の事情により複雑になっている(例えば、`pxbsjc.def` は実際には bxbase
+パッケージから読まれている、`pxjsfenc.def` は BXbase/PXbase 内のどの
+パッケージからも参照されない、など)が、他のパッケージの動作を確保する
+ため敢えて 0.5 版のファイル構成を保っている。
+
+### インストール
+
+TDS 1.1 に準拠するシステムの場合、以下のようにファイルを移動する:
+
+ - `*.sty`, `*.def` → $TEXMF/tex/platex/PXbase
+
+この後必要に応じて mktexlsr を実行する。
+
+### ライセンス
+
+本パッケージは MIT ライセンスの下で配布される。
+
+
+pxbase パッケージ ― pTeX 用(旧)基礎ライブラリ
+------------------------------------------------
+
+他の PX シリーズのパッケージの下請けの役割も果たしていたが、0.9 版において
+[bxbase パッケージ]に統合された。今では、単に bxbase を読むだけである。
+
+[bxbase パッケージ]: https://www.ctan.org/pkg/bxbase
+
+### ユーザ向け機能
+
+※bxbase の方で述べていないものを挙げる。(FIXME:bxbase に移すべき。)
+
+※旧版のドキュメントに載っていたのに、ここにも bxbase の方にも載って
+いない機能は、非推奨の扱いになったということ。
+
+ * `\infojenc`: 漢字コードの情報を次の形で端末とログに出力する。
+
+ Kanji encoding: source=UTF8 internal=SJIS;
+
+ * `\safecaret`: 一部の箇所で TeX エスケープ形式(`^^ab`)の解釈が
+ 失敗するのを回避する。詳細は「TeX エスケープ形式(`^^ab`)の処理」
+ の節を参照。
+
+#### utf8x 入力エンコーディングの fasterror 設定
+
+ucs パッケージ(バンドル)が提供する「utf8x 入力エンコーディング」では、
+パッケージで未定義の Unicode 文字が入力された場合エラーになる。その時の
+エラーメッセージ中に該当の文字の Unicode 名を出力するが、この際に高位
+バイトを含むファイル(テキスト情報をハフマン符号で圧縮したものと思われる)
+を用いるので、pTeX では処理に失敗してしまう。そこで本パッケージでは、ucs
+パッケージが読み込まれた場合(utf8x が指定された時も含む)に上記の機能を
+抑止するオプション `fasterror` を常に有効にする。
+
+### TeX エスケープ形式(`^^ab`)の処理
+
+現在の pTeX では入力漢字コードが UTF-8 の時に JIS X 0208 に含まれない
+文字をエスケープ形式(`^^ab`)の UTF-8 バイト列に変換する。通常はこの
+形式は該当のバイト列と等価の解釈をされる。ところがここで `^` の catcode
+が本来の値 7 から変更されているとこの処理が失敗してしまう。具体的には
+次のような場合が該当する。
+
+ * Babel の一部の言語(esperanto 等)を使用した場合。
+ * verbatim や類似の環境の中。
+
+`\safecaret` 命令をプレアンブルで実行した場合、これらの場合でエスケープ
+形式の連続する出現をバイト列と解釈するようにする。
+
+### 開発者向け機能
+
+(使用中の漢字コード系の情報表示)
+
+ * `\bxInternalJaEncoding`:[暗黙文字トークン] 内部漢字コードを表す。
+ - `s`: シフトJIS
+ - `e`: EUC
+ - `u`: Unicode (upTeX)
+
+ * `\bxInputJaEncoding`:[暗黙文字トークン] 入力 TeX ソースの漢字
+ コードを表す。
+ - `s`: シフトJIS
+ - `e`: EUC
+ - `u`: UTF-8
+ - `a`: 自動判定が有効
+
+ * `\pxUpScale`:[マクロ] 和文の標準フォントに対する和文スケール。
+ `\Cjascale` が設定済の場合はその値、それ以外で文書クラスが和文標準
+ または jsclasses のものの場合は、当該クラスの既定のスケール値。
+
+
+pxbabel パッケージ ― Babel の機構に基づく CJK 間のフォント切替
+---------------------------------------------------------------
+
+詳細についてはマニュアル `pxbabel.pdf` を参照されたい。
+
+upkcat パッケージ ― 文字指定による kcatcode 操作
+-------------------------------------------------
+
+※ 本パッケージはパッケージ開発者向けのものである。
+
+文字を指定して(それが属するブロックの)kcatcode を操作する場合
+
+ \kcatcode`<文字>
+
+の形式を使うことになるが、その際にもしその文字の現在の kcatcode が 15
+である場合は文字がバイト列とみなされるので、この形式が使えない。この
+パッケージはそのような場合でも使用可能な、kcatcode の参照・変更の命令
+を提供する。なお、文書作成者はこちらではなく [pxcjkcat パッケージ]を
+用いるべきである。
+
+[pxcjkcat パッケージ]: https://www.ctan.org/pkg/pxcjkcat
+
+### 前提環境
+
+ * TeX フォーマット: plain、LaTeX
+ * TeX エンジン: upTeX(派生を含む)
+ * DVI ウェア(DVI 出力時): 不問
+
+### パッケージ読込
+
+plain upTeX の場合:
+
+ \input upkcat.sty
+
+upLaTeX の場合:
+
+ \usepackage{upkcat}
+
+### 機能
+
+ * `\getkcatcode{<文字>}`: `<文字>` の現在の kcatcode の値(15~19)
+ をマクロ `\thekcatcode` に文字列として返す。
+ * `\setkcatcode{<文字>}{<値>}`: `<文字>` の kcatcode の値を `<値>`
+ に設定する。
+
+
+更新履歴
+--------
+
+ * Version 1.1b 〈2017/07/03〉
+ - upLaTeX で japanese-otf と併用した場合に対応。
+ - バグ修正。
+
+ * Version 1.1a 〈2017/06/19〉
+ - バグ修正。
+
+ * Version 1.1 〈2017/05/29〉
+ - 内容の整理。
+ ※バージョンの値は BXbase と合致させて 1.1 版とした。
+ - 一部の機能を非推奨にした。
+
+ * Version 0.5i 〈2017/05/04〉 ― CTAN 公開版
+ - 0.5 版から ifuptex と pxcjkcat を削除したもの。
+ ※ifptex パッケージバンドルを CTAN に登録するための経過措置。
+
+ * Version 0.9b 〈2012/08/19〉
+ - ifuptex パッケージは「ifptex バンドル」に移動したため削除。
+ - pxcjkcat パッケージは専用のバンドルに移動したため削除。
+
+ * Version 0.5 〈2010/06/15〉
+ - pxbase: `\JI`/`\KI` を追加。
+ - pxbase: `\dvipdfmxmapline`/`\dvipdfmxmapfont` を追加。
+
+ * Version 0.4a 〈2010/02/07〉
+ - pxcjkcat: upTeX v0.29 における kcatcode のブロック分割の変更に
+ 対応。それに伴い `ccv1`, `ccv2` オプションを新設。
+ - pxcjkcat: `\cjkcategory` の第 1 引数に文字そのものを指定できる
+ ようにした。
+ - pxcjkcat: なぜかモード設定時の「Enclosed CJK Letters and Months」
+ (`cjk07`)の kcatcode の設定値が 16 になっていた。upTeX 既定値に
+ 合わせて 18 に修正した。
+
+ * Version 0.4 〈2009/07/05〉
+ - safe caret 機構のコード(`\safecaret` の実装の核心)を pxbase.def
+ に移動(BXbase と共通に)。
+ - Babel に加えて verbatim でも safe caret 機構が働くようにする。
+ ただし「pxbase は単に読み込むだけでは他人のコードを書き換えない」
+ という指針があるので、`\safecaret` を実行しないと有効にならない。
+ - pxbabel は中で `\safecaret` を呼ぶので、pxbabel を読み込むと safe
+ caret は自動的に有効になる。
+ - pxbabel でエンコーディングを `J20` 等に変えた場合に OTF パッケージ
+ の `\CID` が動かなくなるのを修正。
+
+ * Version 0.3 〈2008/04/06〉
+ - pxbabel に safe caret 機構を追加。
+
+ * Version 0.2b 〈2008/03/28〉
+ pxbabel に `\UTF` の切替を追加。
+
+ * Version 0.2a 〈2008/03/18〉
+ pxbabel, pxbase のバグ取り。
+ pxbabel の説明書をまだ書いていないことに気づいた ;-) 慌てて作成。
+
+ * Version 0.2 〈2008/03/14〉
+ 最初の公開版。
+
+-------------------------------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/pxbase/README.md b/language/japanese/pxbase/README.md
new file mode 100644
index 0000000000..6128d2223a
--- /dev/null
+++ b/language/japanese/pxbase/README.md
@@ -0,0 +1,85 @@
+PXbase Package Bundle
+=====================
+
+LaTeX: Tools for use with (u)pLaTeX
+
+The main purpose of this package is to provide auxiliary functions which
+are utilized by packages created by the same author. This package also
+provides a few user commands to assist in creating Japanese document on
+(u)pLaTeX.
+
+### System Requirements
+
+ * TeX format: LaTeX.
+ * TeX engine: pTeX and upTeX.
+ * DVI-ware (in DVI output): Anything.
+
+### Package content
+
+ * `pxbase.sty`: the pxbase package
+ * `pxbase.def`: a submodule (no longer used)
+ * `pxbabel.sty`: the pxbabel package
+ * `pxbasenc.def`: a submodule
+ * `pxjsfenc.def`: a submodule
+ * `pxbsjc.def`: a helper file for pxbase
+ * `pxbsjc1.def`: a helper file for pxbase
+ * `upkcat.sty`: the upkcat package
+
+Some files are kept present for compatibility with other packages.
+
+### Installation
+
+In a system compliant to TDS 1.1, move the files as follows:
+
+ - `*.sty` → $TEXMF/tex/platex/pxbase
+
+And rehash your TEXMF trees if necessary.
+
+### License
+
+This package is distributed under the MIT License.
+
+
+pxbase package ― the (quondam) base library for pTeX
+-----------------------------------------------------
+
+The package used to provide pTeX-specific features required by other
+packages. However, it has been merged with the [bxbase] package since
+v0.9, and currently it simply loads bxbase internally.
+
+[bxbase]: https://www.ctan.org/pkg/bxbase
+
+
+pxbabel package ― To help use Babel with Japanese document
+-----------------------------------------------------------
+
+Currently the documentation is available only in Japanese (see
+pxbabel.pdf).
+
+
+upkcat package ― To safely operate with kcatcode
+-------------------------------------------------
+
+Currently the documentation is available only in Japanese (see
+README-ja.md).
+
+
+Revision History
+----------------
+
+ * Version 1.1b 〈2017/07/03〉
+ * Version 1.1a 〈2017/06/19〉
+ * Version 1.1 〈2017/05/29〉
+ * Version 0.5i 〈2017/05/04〉 ― for CTAN
+ * Version 0.9b 〈2012/08/19〉
+ * Version 0.5 〈2010/06/15〉
+ * Version 0.4a 〈2010/02/07〉
+ * Version 0.4 〈2009/07/05〉
+ * Version 0.3 〈2008/04/06〉
+ * Version 0.2b 〈2008/03/28〉
+ * Version 0.2a 〈2008/03/18〉
+ * Version 0.2 〈2008/03/14〉
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/pxbase/pxbabel.pdf b/language/japanese/pxbase/pxbabel.pdf
new file mode 100644
index 0000000000..615e612777
--- /dev/null
+++ b/language/japanese/pxbase/pxbabel.pdf
Binary files differ
diff --git a/language/japanese/pxbase/pxbabel.sty b/language/japanese/pxbase/pxbabel.sty
new file mode 100644
index 0000000000..3f0ab85d30
--- /dev/null
+++ b/language/japanese/pxbase/pxbabel.sty
@@ -0,0 +1,434 @@
+%%
+%% This is file 'pxbabel.sty'.
+%%
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxbabel}[2017/07/03 v1.1b PX Babel interface for CJK]
+\def\pxbb@pkgname{pxbabel}
+
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{pxbase}
+\RequirePackage{ifptex}
+\safecaret
+\bxPrepareSetKeysSafe
+
+%% error messages
+\bxSetModuleName\pxbb@pkgname
+\bxPreamble\def\pxbb@warn@nocjk{%
+ \PackageWarningNoLine\pxbb@pkgname
+ {No multi-CJK support found, font switch disabled\MessageBreak
+ (I need upTeX-extension or otf package with `multi')}}
+\bxPreamble\def\pxbb@err@noldf#1{%
+ \PackageError\pxbb@pkgname
+ {Language definition file #1.ldf not found}%
+ {Maybe you misspelled the language option?\MessageBreak\@ehc}}
+\bxPreamble\def\pxbb@err@nomnl{%
+ \PackageError\pxbb@pkgname
+ {Main language is not specified}%
+ {Here 'japanese' is assumed.\MessageBreak\@ehc}}
+\bxPreamble\def\pxbb@warn@jafam#1{%
+ \PackageWarningNoLine\pxbb@pkgname
+ {!!!!!!!!!!!!!!! IMPORTANT NOTICE !!!!!!!!!!!!!!!\MessageBreak
+ Default Japanese family names have been changed\MessageBreak
+ after this package was loaded. The functionality\MessageBreak
+ of the package may be corrupted!\MessageBreak
+ \if t#1%
+ (You must load 'otf' package before this package.)\MessageBreak
+ \fi
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}}
+
+%--------------------------------------- Processing package options
+
+%% \pxbb@cjk@langid@list
+% The list of all CJK language ids.
+\bxPreamble\def\pxbb@cjk@langid@list{%
+ japanese,korean,schinese,tchinese%
+}
+
+%% \pxbb@lang@load@list
+% The list of language options to be loaded.
+\bxPreamble\let\pxbb@lang@load@list\@empty
+
+%% \pxbb@set@lang@spec{<lang_id>}{[+]<lang_name>}
+\bxPreamble\def\pxbb@set@lang@spec#1#2{%
+ \edef\pxbb@args{#2}%
+ \expandafter\pxbb@set@lang@spec@a\pxbb@args\@nil{#1}}
+\bxPreamble\def\pxbb@set@lang@spec@a#1#2\@nil#3{%
+ \bxIf{+#1}%
+ {\csdef{pxbb@langname/#3}{#2}%
+ \appto\pxbb@lang@load@list{,#2}}%
+ {\csdef{pxbb@langname/#3}{#1#2}}}
+
+%% keyval settings
+% (<lang_id>=[+]<lang_name>)
+\bxForEachIn\pxbb@cjk@langid@list\do{%
+ \define@key{pxbabel}{#1}{\pxbb@set@lang@spec{#1}{##1}}%
+ \pxbb@set@lang@spec{#1}{#1}}
+% (main=<lang_name>)
+\bxPreamble\let\pxbb@main@lang\relax
+\define@key{pxbabel}{main}{\def\pxbb@main@lang{#1}}
+% (caption=<lang_name>)
+\bxPreamble\def\pxbb@caption@lang{default}
+\define@key{pxbabel}{caption}{\def\pxbb@caption@lang{#1}}
+
+%% option handling
+\DeclareOption{switchcaption}{%
+ \def\pxbb@caption@lang{switch}}
+\DeclareOption{noswitchcaption}{%
+ \def\pxbb@caption@lang{default}}
+\newbool{pxbb@switchfont}\pxbb@switchfonttrue
+\DeclareOption{switchfont}{\pxbb@switchfonttrue}
+\DeclareOption{noswitchfont}{\pxbb@switchfontfalse}
+\newbool{pxbb@prefermmivjis}
+\DeclareOption{prefer2004jis}{\pxbb@prefermmivjistrue}
+\DeclareOption{noprefer2004jis}{\pxbb@prefermmivjisfalse}
+\DeclareOption{jis2004}{\pxbb@prefermmivjistrue}
+\DeclareOption{nojis2004}{\pxbb@prefermmivjisfalse}
+\newbool{pxbb@stdjaencoding}
+\bxIfExpToEqualX{\mcdefault}{mc}{}{\pxbb@stdjaencodingtrue}% default
+\DeclareOption{stdjaencoding}{\pxbb@stdjaencodingtrue}
+\DeclareOption{nostdjaencoding}{\pxbb@stdjaencodingfalse}
+% (<lang_id>, +<lang_id>)
+\bxPreamble\let\pxbb@last@lang\relax
+\bxForEachIn\pxbb@cjk@langid@list\do{%
+ \DeclareOption{#1}{%
+ \pxbb@set@lang@spec{#1}{#1}%
+ \def\pxbb@last@lang{#1}}%
+ \DeclareOption{+#1}{%
+ \pxbb@set@lang@spec{#1}{+#1}%
+ \def\pxbb@last@lang{#1}}}
+% (options processed by keyval)
+\DeclareOption*{%
+ \bxWithArgExpd{\CurrentOption}\do{%
+ \bxSetKeysSafe{pxbabel}{#1}%
+ \bxIfx{\bxRestKeys\@empty}{}%
+ {\appto\pxbb@lang@load@list{,#1}%
+ \def\pxbb@last@lang{#1}}}}
+\ProcessOptions*
+\bxChompComma\pxbb@lang@load@list
+
+%% 'triv' language check table
+\bxForEachIn\pxbb@cjk@langid@list\do{%
+ \cslet{pxbb@triv/\@nameuse{pxbb@langname/#1}}{t}}
+\bxForEachIn\pxbb@lang@load@list\do{%
+ \csundef{pxbb@triv/#1}}
+
+%--------------------------------------- Resolving settings
+
+%% \ifpxbb@otfmulti
+%% \ifpxbb@pxotf
+\newbool{pxbb@otfmulti}
+\newbool{pxbb@pxotf}
+\@ifpackageloaded{mlutf}{\pxbb@otfmultitrue}{}
+\@ifpackageloaded{pxotf}{\pxbb@otfmultitrue\pxbb@pxotftrue}{}
+
+%% \ifpxbb@babel
+\newbool{pxbb@babel}
+\@ifpackageloaded{babel}{\pxbb@babeltrue}{}
+
+%% environment check
+% The feature 'switchfont' requires multi-CJK support.
+\ifpxbb@switchfont
+ \ifpxbb@otfmulti\else
+ \ifupTeX\else
+ \pxbb@warn@nocjk
+\fi\fi\fi
+
+%% resolve the expected main language
+\ifundef\pxbb@main@lang{%then
+ % if 'main' is not specified
+ \ifbool{pxbb@babel}%
+ % in separate loading, main is unchanged
+ {\let\pxbb@main@lang\bbl@main@language}%
+ % in lumped loading, main is the one specified last
+ {\let\pxbb@main@lang\pxbb@last@lang}%
+}{}
+% if main is unknown, complain
+\ifx\pxbb@main@lang\relax
+ \pxbb@err@nomnl
+ \letcs\pxbb@main@lang{pxbb@langname/japanese}
+\fi
+
+%% resolve the caption language setting
+\bxIfExpToEqual{\pxbb@caption@lang}{auto}{%then
+ % if 'caption=auto' is given
+ \bxIfcsundef{pxbb@triv/\pxbb@main@lang}
+ % if main is not triv then caption=switch
+ {\def\pxbb@caption@lang{switch}}%
+ % if main is triv then caption=default
+ {\def\pxbb@caption@lang{default}}%
+}{}
+
+\ifx t\bxUseDebug
+\def\pxbb@bool#1{\ifbool{#1}{yes}{no}}
+\bxForEachIn\pxbb@cjk@langid@list\do{%
+\bxDebug{#1 = \@nameuse{pxbb@langname/#1}}}
+\bxDebug{main = \pxbb@main@lang}
+\bxDebug{caption = \pxbb@caption@lang}
+\bxDebug{switchfont = \pxbb@bool{pxbb@switchfont}}
+\bxDebug{load-list = \pxbb@lang@load@list}
+\bxDebug{last = \pxbb@last@lang}
+\bxDebug{babel = \pxbb@bool{pxbb@babel}}
+\bxDebug{otfmulti = \pxbb@bool{pxbb@otfmulti}}
+\fi
+
+%--------------------------------------- lumped loading
+\ifpxbb@babel\else
+
+%% load Babel
+\let\pxbb@tmpa\pxbb@lang@load@list
+\ifx\pxbb@tmpa\@empty \def\pxbb@tmpa{english}\fi
+\edef\pxbb@tmpa{%
+ \noexpand\RequirePackage[\pxbb@tmpa]{babel}%
+}\pxbb@tmpa
+
+\fi
+%--------------------------------------- separate loading
+\ifpxbb@babel
+
+%% \pxbb@g@add@lang@proc
+\bxPreamble\let\pxbb@g@add@lang@proc\@empty
+\begingroup
+
+%% remove languages that are already loaded
+\let\pxbb@tmpa\@empty
+\bxForEachIn\pxbb@lang@load@list\do{%
+ \bxIfcsundef{date#1}{\appto\pxbb@tmpa{,#1}}{}}
+\bxChompComma\pxbb@tmpa
+\let\pxbb@lang@load@list\pxbb@tmpa
+\bxDebug{\pxbb@lang@load@list}
+
+%% if some language should be added...
+\ifx\pxbb@lang@load@list\@empty\else
+ \ifdef\bbl@load@language{%
+ \PackageWarning\pxbb@pkgname
+ {Some languages need to be added. Note that the\MessageBreak
+ process of addition is unreliable}%
+ }{%else
+ \PackageError\pxbb@pkgname
+ {Some languages need to be added, but the addition\MessageBreak
+ is not supported because Babel in use is too old}%
+ {The languages to be added will be ignored.\MessageBreak
+ \@ehc}}
+\fi
+
+%% build \pxbb@g@add@lang@proc
+\bxForEachIn\pxbb@lang@load@list\do{%
+ \csdef{pxbb@use/#1}{t}}
+\def\pxbb@babel@alias#1#2{%
+ \bxIfcsundef{pxbb@use/#1}{}{%else
+ % if the real name is available, then ok
+ \IfFileExists{#1.ldf}{}{%else
+ \csdef{pxbb@bbl@opt/#1}{\bbl@load@language{#2}}}}}
+\def\pxbb@babel@load@proc#1{%
+ \bxIfcsundef{pxbb@use/#1}{\@gobble}{%else
+ \csdef{pxbb@bbl@opt/#1}}}
+% the alias list
+\pxbb@babel@alias{acadian}{frenchb}
+\pxbb@babel@alias{afrikaans}{dutch}
+\pxbb@babel@alias{american}{english}
+\pxbb@babel@alias{australian}{english}
+\pxbb@babel@alias{austrian}{germanb}
+\pxbb@babel@alias{bahasa}{bahasai}
+\pxbb@babel@alias{bahasai}{bahasai}
+\pxbb@babel@alias{bahasam}{bahasam}
+\pxbb@babel@alias{brazil}{portuges}
+\pxbb@babel@alias{brazilian}{portuges}
+\pxbb@babel@alias{british}{english}
+\pxbb@babel@alias{canadian}{english}
+\pxbb@babel@alias{canadien}{frenchb}
+\pxbb@babel@alias{francais}{frenchb}
+\pxbb@babel@alias{french}{frenchb}
+\pxbb@babel@alias{german}{germanb}
+\pxbb@babel@alias{hungarian}{magyar}
+\pxbb@babel@alias{indon}{bahasai}
+\pxbb@babel@alias{indonesian}{bahasai}
+\pxbb@babel@alias{lowersorbian}{lsorbian}
+\pxbb@babel@alias{malay}{bahasam}
+\pxbb@babel@alias{melayu}{bahasam}
+\pxbb@babel@alias{meyalu}{bahasam}
+\pxbb@babel@alias{naustrian}{ngermanb}
+\pxbb@babel@alias{newzealand}{english}
+\pxbb@babel@alias{ngerman}{ngermanb}
+\pxbb@babel@alias{nynorsk}{norsk}
+\pxbb@babel@alias{portuguese}{portuges}
+\pxbb@babel@alias{russian}{russianb}
+\pxbb@babel@alias{UKenglish}{english}
+\pxbb@babel@alias{ukrainian}{ukraineb}
+\pxbb@babel@alias{uppersorbian}{usorbian}
+\pxbb@babel@alias{USenglish}{english}
+\pxbb@babel@load@proc{hebrew}{%
+ \input{rlbabel.def}\bbl@load@language{hebrew}}
+\pxbb@babel@load@proc{polutonikogreek}{%
+ \bbl@load@language{greek}\languageattribute{greek}{polutoniko}}
+
+%% load addtional languages
+\bxForEachIn\pxbb@lang@load@list\do{%
+ \gappto\pxbb@g@add@lang@proc{\def\CurrentOption{#1}}%
+ \bxIfcsundef{pxbb@bbl@opt/#1}%
+ {\gappto\pxbb@g@add@lang@proc{\bbl@load@language{#1}}}%
+ {\letcs\pxbb@tmpa{pxbb@bbl@opt/#1}%
+ \xappto\pxbb@g@add@lang@proc{\expandonce{\pxbb@tmpa}}}}
+\gappto\pxbb@g@add@lang@proc{\let\CurrentOption\@empty}
+
+\endgroup
+% dispatch
+\pxbb@g@add@lang@proc
+
+\fi
+%--------------------------------------- post-load process
+
+%% declare 'triv' languages
+\bxForEachIn\pxbb@cjk@langid@list\do{%
+ \bxWithArgFullExpd{\@nameuse{pxbb@langname/#1}}\do{%
+ \bxIfcsundefX{date##1}{\bxTrivLangDef{##1}}{}}}
+\ifundef\datecjkmulti{\bxTrivLangDef{cjkmulti}}{}
+
+%% set main language
+\setmainlanguage{\pxbb@main@lang}
+
+%% set caption language
+\bxIfExpToEqual{\pxbb@caption@lang}{switch}{}%else
+ {\bxProvideCaptionLanguage{\pxbb@caption@lang}}
+
+%--------------------------------------- Adding font switch to 'extra's
+
+\ifpxbb@otfmulti %----<*otfmulti>
+
+%% add \UTF switch to Babel \extras
+\ifpxbb@switchfont
+\bxPreamble\def\pxbb@addtoextras@otf#1{%
+ \pxbb@addtoextras@otf@a{\bxCsuseX{pxbb@langname/#1}}}
+\bxPreamble\def\pxbb@addtoextras@otf@a#1#2{%
+ \csappto{extras#1}{\babel@save\UTF \let\UTF#2}}
+\pxbb@addtoextras@otf{korean}{\UTFK}
+\pxbb@addtoextras@otf{schinese}{\UTFC}
+\pxbb@addtoextras@otf{tchinese}{\UTFT}
+\pxbb@addtoextras@otf@a{cjkmulti}{\UTFM}
+\fi % pxbb@switchfont
+
+%%<*> \pxUTFJ/\UTFJ
+\let\pxUTFJ\UTF
+\AtBeginDocument{%
+ \providecommand*\UTFJ{\pxUTFJ}}
+
+\fi %----</otfmulti>
+
+\ifupTeX %----<*upTeX>
+
+%% preparations
+\bxRequireDefinition{pxbasenc}
+\pxBDHookEncSwitchOTF
+
+%% declarations for upTeX standatd CJK fonts
+\ifpxbb@pxotf\else
+\pxDeclareBasicCJKEncoding{J20}{J30}% UniJIS
+\pxDeclareBasicCJKFamily{J20}{!upjpnrm-h}{!upjpngt-h}{*gt}{*gt}
+\pxDeclareBasicCJKFamily{J30}{!upjpnrm-v}{!upjpngt-v}{*gt}{*gt}
+\pxDeclareBasicCJKEncoding{J21}{J31}% UniKS
+\pxDeclareBasicCJKFamily{J21}{!upkorrm-h}{!upkorgt-h}{*gt}{*gt}
+\pxDeclareBasicCJKFamily{J31}{!upkorrm-v}{!upkorgt-v}{*gt}{*gt}
+\pxDeclareBasicCJKEncoding{J22}{J32}% UniGB
+\pxDeclareBasicCJKFamily{J22}{!upschrm-h}{!upschgt-h}{*gt}{*gt}
+\pxDeclareBasicCJKFamily{J32}{!upschrm-v}{!upschgt-v}{*gt}{*gt}
+\pxDeclareBasicCJKEncoding{J23}{J33}% UniCNS
+\pxDeclareBasicCJKFamily{J23}{!uptchrm-h}{!uptchgt-h}{*gt}{*gt}
+\pxDeclareBasicCJKFamily{J33}{!uptchrm-v}{!uptchgt-v}{*gt}{*gt}
+\pxDeclareBasicCJKEncoding{J24}{J34}% UniJIS2004
+\pxDeclareBasicCJKFamily{J24}{!upjpnrm-h}{!upjpngt-h}{*gt}{*gt}
+\pxDeclareBasicCJKFamily{J34}{!upjpnrm-v}{!upjpngt-v}{*gt}{*gt}
+\begingroup \let\pxForceFontDeclaration=f
+\bxForEachIn{J20,J30,J21,J31,J22,J32,J23,J33,J24,J34}\do{%
+ \pxDeclareExtraCJKFamily{#1}{\mcdefault}{*mc}{*mc}%
+ \pxDeclareExtraCJKFamily{#1}{\gtdefault}{*gt}{*gt}}
+\endgroup
+\fi
+
+%--------------------------------------- add font switch to Babel \extras
+\ifpxbb@switchfont
+
+%% \pxbb@set@full@ja@enc
+% Sets to \pxbb@ful@ja@enc the destination encoding.
+\bxForEachIn{J20,J24}\do{% all full japanese encodings
+ \csdef{pxbb@is@fje/#1}{t}}
+\edef\pxbb@dflt@ja@enc{% default full japanese encoding
+ \ifbool{pxbb@stdjaencoding}{\cy@encoding}{%else
+ \ifbool{pxbb@prefermmivjis}{J24}{J20}}}
+\def\pxbb@set@full@ja@enc{%
+ \edef\pxbb@full@ja@enc{%
+ \bxIfcsundefX{pxbb@is@fje/\cy@encoding}%
+ {\pxbb@dflt@ja@enc}{\cy@encoding}}}
+
+%% \pxbb@addtoextras
+\bxPreamble\def\pxbb@addtoextras#1#2#3{%
+ \edef\pxbb@arg{{\@nameuse{pxbb@langname/#1}}%
+ \if t#2{\noexpand\pxbb@full@ja@enc}{\noexpand\@undefined}%
+ \else{#3}{t}\fi}%
+ \expandafter\pxbb@addtoextras@a\pxbb@arg}
+\bxPreamble\def\pxbb@addtoextras@a#1#2#3{%
+ \csappto{extras#1}{%
+ \pxbb@set@full@ja@enc
+ \let\pxInNonJaLanguage=#3%
+ \let\pxbb@org@encoding\cy@encoding
+ \long\def\kanjiencodingdefault{#2}%
+ \kanjiencoding{#2}\selectfont}%
+ \csappto{noextras#1}{%
+ \let\pxInNonJaLanguage\@undefined
+ \long\def\kanjiencodingdefault{\pxbb@org@encoding}%
+ \kanjiencoding{\pxbb@org@encoding}\selectfont}}
+\pxbb@addtoextras{japanese}{t}{}
+\pxbb@addtoextras{korean}{f}{J21}
+\pxbb@addtoextras{schinese}{f}{J22}
+\pxbb@addtoextras{tchinese}{f}{J23}
+
+\fi % pxbb@switchfont
+
+\fi %----</upTeX>
+
+%--------------------------------------- Other user commands
+
+%%<*> \cjklanguagename{<lang_id>}
+% Expands to the babel language name for <lang_id>.
+\newcommand*\cjklanguagename[1]{%
+ \@nameuse{pxbb@langname/#1}}
+
+%--------------------------------------- integrity check
+
+%% check if \mcdefault is not changed
+\let\pxbb@tunc@mcdefault\mcdefault
+\AtBeginDocument{%
+ \bxIfExpToEqualX\pxbb@tunc@mcdefault\mcdefault{}{%else
+ \bxIfExpToEqualX\mcdefault{hmc}%
+ {\pxbb@warn@jafam{t}}%
+ {\pxbb@warn@jafam{f}}}}
+
+%--------------------------------------- all done
+\endinput
+%
+% Roman, H Gothic, H Roman, V Gothic, H : metric encod.
+% ------------ ------------ ------------ ------------ : ------ --------
+% umin10 ugoth10 utmin10 utgoth10 : min10 JIS-old
+% ujis ujisg ujis-v ujisg-v : jis JIS-old
+% ujisn ujisng ujisn-v ujisng-v : jisn JIS-old
+% * urml ugbm urmlv ugbmv : RAW JIS-old
+% upjisr-h upjisg-h upjisr-v upjisg-v : upjpn JIS-bmp
+% upjisr-hq upjisg-hq : upjpn JIS-old
+% upjpnrm-h upjpngt-h upjpnrm-v upjpngt-v : upjpn JIS-full
+% * uprml upgbm uprmlv upgmbv : RAW JIS-bmp
+% * uprmlq upgbmq : RAW JIS-old
+% upkorrm-h upkorgt-h upkorrm-v upkorgt-v : upkor KS
+% * uphysmjm-h uphygt-h uphysmjm-v uphygt-v : RAW KS
+% upschrm-h upschgt-h upschrm-v upschgt-v : upsch GB
+% * upstsl-h upstht-h upstsl-v upstht-v : RAW GB
+% uptchrm-h uptchgt-h uptchrm-v uptchgt-v : uptch CNS
+% * upmsl-h upmhm-h upmsl-v upmhm-v : RAW CNS
+%% EOF
diff --git a/language/japanese/pxbase/pxbabel.tex b/language/japanese/pxbase/pxbabel.tex
new file mode 100644
index 0000000000..c619d0dcbb
--- /dev/null
+++ b/language/japanese/pxbase/pxbabel.tex
@@ -0,0 +1,332 @@
+% 文字コードは UTF-8
+% uplatex で組版する
+\documentclass[a4paper,uplatex]{jsarticle}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{1.1b}
+\newcommand{\PkgDate}{2017/07/03}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{:\quad\inhibitglue}
+\providecommand{\upTeX}{u\pTeX}
+\providecommand{\upLaTeX}{u\pLaTeX}
+%-----------------------------------------------------------
+\DeclareFontShape{JY2}{mc}{m}{ko}{<->s*[.924871]upkorrm-h}{}
+\DeclareFontShape{JT2}{mc}{m}{ko}{<->s*[.924871]upkorrm-v}{}
+\DeclareFontShape{JY2}{gt}{m}{ko}{<->s*[.924871]upkorgt-h}{}
+\DeclareFontShape{JT2}{gt}{m}{ko}{<->s*[.924871]upkorgt-h}{}
+\newcommand{\Kor}[1]{{\kanjishape{ko}\selectfont #1}}
+%-----------------------------------------------------------
+\begin{document}
+\title{\Pkg{pxbabel} パッケージ}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion \quad [\PkgDate]}
+\maketitle
+
+%===========================================================
+\section{概要}
+
+{(u)\pLaTeX}における日本語・簡体字中国語・繁体字中国語・
+韓国語(以下この 4 つを「CJK言語」と総称する)の間の
+「和文(CJK)フォント」の切り替えをBabelのインタフェースを
+用いて行えるようにする。
+
+\paragraph{前提環境}
+
+\begin{itemize}
+\item {\TeX}フォーマット: {\pLaTeX}/{\upLaTeX}
+ (拡張エンジンを含む)
+\end{itemize}
+
+\paragraph{依存パッケージ}
+
+\begin{itemize}
+\item \Pkg{babel}パッケージ
+\item \Pkg{japanese-otf}パッケージ({\pLaTeX}の場合)
+\end{itemize}
+
+%===========================================================
+\section{読込}
+
+v0.9より\Pkg{babel}パッケージと一緒に読み込む方式
+(一括読込モード)をサポートした。
+従来通り、別個に読み込む方式(分離読込モード)も可能である。
+どちらであるかは、\Pkg{pxbabel}読込時に\Pkg{babel}が読込済か
+どうかで判別する。
+
+\begin{quote}
+〈一括読込モードの場合〉\\
+|\usepackage[|\Meta{オプション}|]{pxbabel}|
+\par\bigskip
+〈分離読込モードの場合〉\\
+|\usepackage[|\Meta{Babelのオプション}|]{babel}|\\
+|\usepackage[|\Meta{オプション}|]{pxbabel}|
+\end{quote}
+
+オプションは以下の通り。
+なお「CJK 言語識別子」は次のいずれかの値のことを指す:
+\begin{itemize}
+\item |japanese|: 日本語
+\item |korean|: 韓国語
+\item |schinese|: 簡体字中国語
+\item |tchinese|: 繁体字中国語
+\end{itemize}
+「言語名」はBabelで指定する(|\foreignlanguage| 等の引数にする)
+言語を表す文字列のことである。
+
+\begin{itemize}
+\item \Meta{CJK言語識別子}|=|\Meta{言語名}\Means
+各々のCJK言語に対して実際に使用するBabelの言語名を指定する。
+詳しくは「機能」の節を参照。
+\Note 言語名の既定値はCJK言語識別子と同一名。
+(例えば |japanese|(日本語)の言語名は |japanese|。)
+
+\item \Meta{CJK言語識別子}\Means
+「\Meta{CJK言語識別子}|=|\Meta{CJK言語識別子}」と同じ。
+\Note これは既定値なので通常は指定する必要がないが、
+一括読込モードで「最後の言語(基底言語になる)」を
+指定するのに有用である。
+
+\item \Meta{CJK言語識別子}|=+|\Meta{言語名}\Means
+各々のCJK言語に対して実際に使用するBabelの言語名を指定し、
+かつその言語オプションの定義ファイル(|*.ldf|)を読み込む。
+
+\item |+|\Meta{CJK言語識別子}\Means
+「\Meta{CJK言語識別子}|=+|\Meta{CJK言語識別子}」と同じ。
+
+\item 有効なBabel言語の名前\Means
+その言語の定義ファイルを読み込む。
+\Note 分離読込モードでもこの機能は有効である。
+
+\item |main=|\Meta{言語名}\Means
+文書開始時に有効となる基底言語を、
+言語名(CJK言語識別子でない)で指定する。
+\Note このオプションが未指定の場合、
+分離読込モードでは\Pkg{babel}で最後に読まれた言語が基底言語になる。
+一括読込モードでは\Pkg{pxbabel}で最後に読まれた言語が基底言語になる。
+
+\item |caption=|\Meta{値}\Means
+キャプション言語(キャプションや日付の文字列で使われる言語)の
+固定に関する設定を行う。
+有効な値は次の通り:
+ \begin{itemize}
+ \item 有効なBabel言語名\Means その言語に固定する。
+ \item |main|\Means 文書開始時の基底言語に固定する。
+ \item |default|\Means キャプション文字列を文書クラスで
+ 指定されたものから変更しない。
+ \item |switch|\Means キャプション言語の固定を行わない。
+ (Babelの既定動作。)
+ \item |auto|(既定値)\Means
+ 文書開始時の基底言語が
+ 「言語オプション定義ファイルの読込を伴わないCJK言語」
+ (仮に「仮想言語設定」と呼ぶ)の場合は |default|、
+ それ以外は |switch|。
+ \end{itemize}
+\Note Babelでは言語の切替に関して、入力言語のみを切り替えるもの
+(|\foreignlanguage| 命令、|otherlanguage*| 環境)
+と基底言語を切り替えるもの
+(|\selectlanguage| 命令、|otherlanguage| 環境)
+があり、既定の動作では
+キャプション言語は基底言語に常に追随する
+(|switch| 指定時と同じ)。
+ところが、「仮想言語設定」においては、キャプション文字列の
+設定が働かないので、基底言語を「仮想言語設定」の言語に切り替えた場合に
+キャプション言語が正しくない事態が生じる。\<\footnote{%
+ ただし「文書開始時以外に基底言語を仮想言語設定に切り替える」ことを
+ しなければ問題は起こらない。
+ 特に、「日本語の文書クラスを用いて、かつBabelにおいて
+ 仮想言語設定とした日本語を文書全体で基底言語にする」
+ 場合は、キャプションは文書クラスで定めたものに固定される。}
+これによる混乱を避けるためにキャプション言語の固定が
+有用である場合がある。
+特に、「Babelによるキャプション文字列の変更を抑止して文書クラスで
+定めた文字列がいつでも有効であるようにしたい」という場合は、
+|default| を指定すればよい。
+文書開始時の基底言語が仮想言語設定である場合はこちらの使い方が
+多いと考えられるので、この場合には既定を |default| としている。
+\Note \Pkg{bxbase}パッケージの |\fixcaptiopnlanguage| によるキャプション
+言語固定の設定は、常に本パッケージでの設定より優先される。
+この使用は |main| オプションのものと一貫していないが、
+互換性のためそのままにしている。
+
+\item |noswitchcaption|\Means
+|caption=default| と同じ。
+\Note v0.9 より前はこれが既定値であった。
+ゆえに、(|no|)|switchcaption| も |caption| もなく基底言語が
+仮想言語設定でない場合の |caption| 設定は、
+v0.9 より前は |default|、以降は |switch| と異なることになる。
+仮想言語設定でない場合は |default| にする必然性が少ないので、
+Babelの既定動作に合わせる目的で変更された。
+
+\item |switchcaption|\Means
+|caption=switch| と同じ。
+
+\item |switchfont|(既定で有効)\Means
+このパッケージが提供する、
+CJK言語でフォントを切り替える機能を有効にする。
+
+\item |noswitchfont|\Means
+このパッケージが提供する、
+CJK言語でフォントを切り替える機能を無効にする。
+|switchfont| の否定。
+\end{itemize}
+
+%===========================================================
+\section{ユーザ命令}
+
+このパッケージが提供する主要な機能であるCJKフォント切替に
+ついてはBabelの機能を用いて行うことになるため、
+パッケージ特有の命令は存在しない。
+
+例えば、次のようなパッケージ読込(一括読込モード)
+の場合:
+\begin{quote}\begin{verbatim}
+\usepackage[korean,japanese]{pxbabel}
+\end{verbatim}\end{quote}
+本文中で
+\footnote{{\upLaTeX}フォーマット使用または
+{\pLaTeX}で\Pkg{bxutf8}入力エンコーディングを用いているとする。}
+\begin{quote}
+|日本語文書中に\foregnlanguage{korean}{|%
+\textgt{\Kor{한글}}|}がある。|
+\end{quote}
+と入力すれば次の出力が得られる。
+\begin{quote}
+日本語文書中に\Kor{한글}がある。
+\end{quote}
+
+本パッケージが提供する命令には次のものがある。
+
+\begin{itemize}
+\item |\cjklanguagename{|\Meta{CJK言語識別子}|}|\Means
+そのCJK言語に対する言語名。
+\Note 例えば読込時に |schinese=chinesesimp| と指定した場合、
+|\cjklanguagename{schinese}| は |chinesesimp| に展開される。
+\end{itemize}
+
+%===========================================================
+\section{CJKフォント切替機能の原理}
+
+\subsection{{\upLaTeX}において}
+
+{\upTeX}は標準で、CJK言語の{\TeX}フォント(和文TFM)を用意している。
+本パッケージはBabelにおいてCJK言語の切替処理(|\extras...|)
+の中に、フォントの切替を追加し、
+言語の選択に応じて適切なフォントが選ばれるようにする。
+言語に対するBabelの言語オプションの名前は変わりうるので、
+その名前をパッケージ読込時に指定できるようにした。
+また、あるCJK言語の為のオプションが読み込まれていない時は、
+フォントの切替のみをする簡易の言語オプション(仮想言語設定)
+をその場で生成する。
+
+\subsection{{\pLaTeX}において}
+
+\Pkg{japanese-otf}パッケージの |multi| オプションは{\pLaTeX}において
+韓国語・中国語を扱うためのもので、
+これを使うと |\UTFK|/|\UTFC|/|\UTFT| で
+韓国語/中国語(簡体)/中国語(繁体)のフォントを用いて
+文字が出力される
+(これらの命令の引数は |\UTF| と同じでUnicode値16進)。
+
+{\pLaTeX}における本パッケージの動作は次のようである。
+まず、{\upLaTeX}の場合と同じようにCJK言語のための
+Babel言語オプションを生成する。
+その上で、CJK言語に切り替わった場合には、
+|\UTF| の動作を「本来の |\UTF|」/|\UTFK|/|\UTFC|/|\UTFT|
+に切り替える。
+この機能は単独ではあまり有用とはいえないが、
+\Pkg{bxutf8}入力エンコーディング
+と併用してCJK言語のUTF-8直接入力を行う時に有用となる。
+すなわち直接入力されたCJK文字は |\UTF| に帰着するので、
+結果的に{\upLaTeX}の時と同じように、Babelで切り替えた言語用の
+フォントで出力することが可能となる。
+
+\Note ただし、この機構には、
+「JIS X~0208にある文字はそもそも |\UTF| に変換されずに
+直接日本語フォントで出力される」
+という欠点をもつ。
+これを解決するには\Pkg{pxfltsrc}パッケージ等の機能を用いて
+文書にテキスト変換フィルタを適用されるという処理が必要になる。
+
+%===========================================================
+\section{Babel一括読込モード}
+
+v0.9より前では、Babel本体(\Pkg{babel}パッケージ)
+とは別個に読み込む方式のみを採用していた。
+ところがこの場合、
+「Babelの本来の機能は不要で\Pkg{pxbabel}の
+フォント切替だけを用いたい」
+という場合、かなり不自然な指定をする必要があった。
+例えば、日本語(|japanese|)と韓国語(|korean|)を
+切り替えたい(メインは日本語)という場合は次のようになる。
+
+\begin{quote}\begin{verbatim}
+\usepackage[english]{babel}
+\usepackage[main=japanese]{pxbabel}
+\end{verbatim}\end{quote}
+\Note \Pkg{pxbabel}を読んで基底言語を |japanese|
+にする必要があるのだが、
+そうするとまず \Pkg{babel} を読む必要があり
+ここで何かダミーの言語(|english| を用いた)を指定する必要がある。
+このままでは基底が |english| になるので、
+|japanese| を基底にするのに |main| オプションが必要。
+
+そこで、v0.9において、\Pkg{babel}と一括で読み込むことで、
+\Pkg{babel}の使用言語オプション指定の方法を踏襲できるようにした。
+\Pkg{babel}の読込前に\Pkg{pxbabel}を読み込むとこの動作になり、
+\Pkg{babel}も一緒に読み込まれる。
+
+\begin{quote}\begin{verbatim}
+\usepackage[korean,japanese]{pxbabel}
+\end{verbatim}\end{quote}
+\Note オプションは\Pkg{babel}のものと同じ理屈で書く。
+|korean| と |japanese| を用い、
+基底が |japanese| なのでこの順番になる。
+
+目的が「{\upTeX}のSIP対応の日本語フォントが使いたい」
+だけの場合は以下のようになる。
+
+\begin{quote}\begin{verbatim}
+\usepackage[japanese]{pxbabel}
+\end{verbatim}\end{quote}
+\Note |japanese| のみ指定して、当然これが基底。
+
+実際には、4つのCJK言語のオプションは「常に」出現するので、
+上の2つの指定は等価であるが、
+一括読込の場合は\Pkg{babel}の習慣に合わせて記述するのが
+解りやすいと思われる。
+
+少し複雑な例を挙げておく。
+ドイツ語(|ngerman|)、日本語(|japanese|)、
+簡体字中国語(|simpchinese|)、繁体字中国語(|tradchinese|)
+を使用し、かつ前の3つには言語オプション定義(|*.ldf|)があり、
+基底は日本語で、キャプション言語の固定は行わないとする。
+
+\paragraph{分離読込モード}
+
+\begin{quote}\begin{verbatim}
+\usepackage[ngerman,simpchinese,japanese]{babel}
+\usepackage[schinese=simpchinese,tchinese=tradchinese,
+ caption=switch]{pxbabel}
+\end{verbatim}\end{quote}
+
+\Note 分離読込の場合は\Pkg{babel}で最後に指定したものが基底言語。
+
+\paragraph{一括読込モード}
+\begin{quote}\begin{verbatim}
+\usepackage[ngerman,schinese=+simpchinese,tchinese=tradchinese,
+ +japanese]{pxbabel}
+\end{verbatim}\end{quote}
+
+\Note ldfの読込を伴う言語(|japanese|)が基底なので、
+|caption| は |switch| が既定値になる。
+なお、非CJK言語(|ngerman|)には決して |+| を付けないことに注意。
+
+%===========================================================
+\section{更新履歴}
+
+|README-ja.md| ファイルを参照。
+
+%===========================================================
+\end{document}
diff --git a/language/japanese/pxbase/pxbase.def b/language/japanese/pxbase/pxbase.def
new file mode 100644
index 0000000000..214e278e54
--- /dev/null
+++ b/language/japanese/pxbase/pxbase.def
@@ -0,0 +1,7 @@
+%%
+%% This is file 'pxbase.def'.
+%%
+\PackageError{pxbase}%
+ {pxbase.def should no longer be read}%
+ {The current BX/PXbase package does not need the file.}
+%% EOF
diff --git a/language/japanese/pxbase/pxbase.sty b/language/japanese/pxbase/pxbase.sty
new file mode 100644
index 0000000000..e10ec1c6e2
--- /dev/null
+++ b/language/japanese/pxbase/pxbase.sty
@@ -0,0 +1,15 @@
+%%
+%% This is file 'pxbase.sty'.
+%%
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxbase}[2017/07/03 v1.1b PX base library]
+% The pxbase package now does the same thing as the bxbase package.
+\RequirePackageWithOptions{bxbase}[2017/05/29]
+\endinput
+%% EOF
diff --git a/language/japanese/pxbase/pxbasenc.def b/language/japanese/pxbase/pxbasenc.def
new file mode 100644
index 0000000000..55f1ac1130
--- /dev/null
+++ b/language/japanese/pxbase/pxbasenc.def
@@ -0,0 +1,516 @@
+%%
+%% This is file 'pxbasenc.def'.
+%%
+
+%% file declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesFile{pxbasenc.def}[2017/07/03 v1.1b PX encoding library]
+\def\pxec@pkgname{PXbase} % bundle name
+
+%% code guards
+\edef\pxec@restore@codes{%
+ \catcode33=\the\catcode33%
+ \catcode39=\the\catcode39%
+ \catcode45=\the\catcode45%
+ \catcode46=\the\catcode46%
+ \catcode47=\the\catcode47%
+ \catcode58=\the\catcode58%
+ \catcode60=\the\catcode60%
+ \catcode62=\the\catcode62%
+\relax}
+\catcode33=12 % <!>
+\catcode39=12 % <'>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode60=12 % <<>
+\catcode62=12 % <>>
+
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{ifuptex}[2008/03/14]
+
+%% variables
+\ifx\bxUcv\@undefined
+\newcount\bxUcv
+\fi
+\newif\ifpxec@ok
+\newif\ifpxec@sw
+\newif\ifpxec@star
+
+%% errors
+\def\pxec@error{\PackageError\pxec@pkgname}
+\def\pxec@err@irfam#1{\pxec@error
+ {Encodings '\pxec@tmpa' redefined inconsistently}\@ehc}
+\def\pxec@err@ukjsf{\pxec@error
+ {'\k@encoding' is not valid as JSF encoding}\@ehc}
+
+%--------------------------------------- CJK font declarations
+
+%% obtain error kanji font setting for use as 'safe font setting'
+\begingroup \escapechar\m@ne \error@kfontshape
+ \expandafter\let\expandafter\pxec@tenc
+ \csname t@enc@\f@encoding\endcsname
+ \xdef\pxec@safe@jfontspec
+ {{\f@encoding}{\pxec@tenc}{\f@family}{\f@series}{\f@shape}}%
+ \global\expandafter\let\expandafter\pxec@safe@y@decl
+ \csname \f@encoding/\f@family/\f@series/\f@shape\endcsname
+ \global\expandafter\let\expandafter\pxec@safe@t@decl
+ \csname \pxec@tenc/\f@family/\f@series/\f@shape\endcsname
+\endgroup
+
+%% \pxec@starinvoke\SOMECS
+\def\pxec@starinvoke#1{%
+ \@ifstar{\pxec@startrue#1}{\pxec@starfalse#1}}
+
+%%<+> \pxDeclareCJKEncoding[*]{<h-enc>}{<v-enc>}
+% *-form uses 'safety fonts' as subtitution.
+\@onlypreamble\pxDeclareCJKEncoding
+\def\pxDeclareCJKEncoding{%
+ \pxec@starinvoke\pxec@DeclareCJKEncoding}
+\@onlypreamble\pxDeclareBasicCJKEncoding
+\let\pxDeclareBasicCJKEncoding\pxDeclareCJKEncoding
+\def\pxec@DeclareCJKEncoding#1#2{%
+ \pxec@check@prior@decl{#1}{#2}%
+ \ifbxOk
+ \edef\pxec@args{{#1}{#2}}%
+ \expandafter\pxec@decl@cjkenc@a\pxec@args
+ \fi}
+\@onlypreamble\pxec@decl@cjkenc@a
+\def\pxec@decl@cjkenc@a#1#2{%
+ \DeclareYokoKanjiEncoding{#1}{}{}%
+ \DeclareTateKanjiEncoding{#2}{}{}%
+ \KanjiEncodingPair{#1}{#2}%
+ \ifpxec@star
+ \expandafter\pxec@decl@cjkenc@b\pxec@safe@jfontspec{#1}{#2}%
+ \else
+ \DeclareKanjiSubstitution{#1}{mc}{m}{n}%
+ \DeclareKanjiSubstitution{#2}{mc}{m}{n}%
+ \fi}
+\@onlypreamble\pxec@decl@cjkenc@b
+\def\pxec@decl@cjkenc@b#1#2#3#4#5#6#7{%
+ \DeclareKanjiFamily{#6}{ferr}{}%
+ \DeclareKanjiSubstitution{#6}{ferr}{#4}{#5}%
+ \expandafter\let\csname#6/ferr/#4/#5\endcsname\pxec@safe@y@decl
+ \DeclareKanjiFamily{#7}{ferr}{}%
+ \DeclareKanjiSubstitution{#7}{ferr}{#4}{#5}%
+ \expandafter\let\csname#7/ferr/#4/#5\endcsname\pxec@safe@t@decl}
+
+%% \pxec@check@prior@decl{<h-enc>}{<v-enc>}
+\@onlypreamble\pxec@check@prior@decl
+\def\pxec@check@prior@decl#1#2{%
+ \bxOktrue \def\pxec@tmpa{#1/#2}%
+ {% check if encodings '#1' and '#2' are declared
+ \count@=0\expandafter\ifx\csname T@#1\endcsname\relax\else1\fi
+ \expandafter\ifx\csname T@#2\endcsname\relax\else1\fi\relax
+ \ifnum\count@=\z@ \relax % neither declared, OK
+ \else\ifnum\count@=\@ne % exactly one declared, NG
+ \aftergroup\pxec@error@prior@decl
+ \else % both declared
+ \edef\pxec@y{#1}\edef\pxec@ty{\@nameuse{y@enc@#2}}%
+ \edef\pxec@t{#2}\edef\pxec@yt{\@nameuse{t@enc@#1}}%
+ \ifx\pxec@y\pxec@ty \ifx\pxec@t\pxec@yt \count@\z@ \fi\fi
+ \ifnum\count@=\z@ \aftergroup\bxOkfalse
+ \else \aftergroup\pxec@error@prior@decl \fi
+ \fi\fi}% after this \pxec@error@prior@decl may be called
+}
+\def\pxec@error@prior@decl{\pxec@err@irfam\pxec@tmpa\bxOkfalse}
+
+%%<+> \pxDeclareBasicCJKFamily[*]{<enc>}{<mc-m>}{<gt-m>}{<mc-bx>}{<gt-bx>}
+% Declares the two most basic CJK family, mc (mincho) and gt (gothic),
+% along with the most basic shapes m/n and bx/n for each of them.
+% *-form means the same as \bxDeclareBasicCJKShape.
+\@onlypreamble\pxDeclareBasicCJKFamily
+\def\pxDeclareBasicCJKFamily{%
+ \pxec@starinvoke\pxec@DeclareBasicCJKFamily}
+\@onlypreamble\pxec@DeclareBasicCJKFamily
+\def\pxec@DeclareBasicCJKFamily#1#2#3#4#5{%
+ \pxec@DeclareExtraCJKFamily{#1}{mc}{#2}{#4}%
+ \pxec@DeclareExtraCJKFamily{#1}{gt}{#3}{#5}}
+
+%%<+> \pxDeclareExtraCJKFamily[*]{<enc>}{<fam>}{<font-m>}{<font-bx>}
+\@onlypreamble\pxDeclareExtraCJKFamily
+\def\pxDeclareExtraCJKFamily{%
+ \pxec@starinvoke\pxec@DeclareExtraCJKFamily}
+\@onlypreamble\pxec@DeclareBasicCJKFamily
+\def\pxec@DeclareExtraCJKFamily#1#2#3#4{%
+ \pxDeclareKanjiFamily{#1}{#2}%
+ \pxec@DeclareBasicCJKShape{#1}{#2}{m}{#3}%
+ \pxec@DeclareBasicCJKShape{#1}{#2}{bx}{#4}}
+
+%% \pxec@DeclareBasicShapeSet[*]{<enc>}{<fam>}{<font-m>}{<font-bx>}
+% (private command used for JSF fonts)
+\@onlypreamble\pxec@DeclareBasicShapeSet
+\def\pxec@DeclareBasicShapeSet{%
+ \pxec@starinvoke\pxec@@DeclareBasicShapeSet}
+\@onlypreamble\pxec@@DeclareBasicShapeSet
+\def\pxec@@DeclareBasicShapeSet#1#2#3#4{%
+ \pxec@DeclareBasicCJKShape{#1}{#2}{m}{#3}%
+ \pxec@DeclareBasicCJKShape{#1}{#2}{bx}{#4}}
+
+%%<+> \pxDeclareBasicCJKFallback{<enc>}{<fam>}{<ser>}
+\def\pxDeclareBasicCJKFallback#1#2#3{%
+ \@for\pxec@x:={it,sl,sc}\do{%
+ \pxDeclareFontShape{#1}{#2}{#3}{\pxec@x}{<->ssub*#2/#3/n}}}
+
+%%<+> \pxDeclareBasicCJKShape[*]{<enc>}{<fam>}{<ser>}{<font>}
+% Declares the font for 'n'-shape. *-form does not set
+% substitution for shapes 'it', 'sl', 'sc'.
+\@onlypreamble\pxDeclareBasicCJKShape
+\def\pxDeclareBasicCJKShape{%
+ \pxec@starinvoke\pxec@DeclareBasicCJKShape}
+\@onlypreamble\pxec@DeclareBasicCJKShape
+\def\pxec@DeclareBasicCJKShape#1#2#3#4{%
+ \edef\pxec@args{{#1}{#2}{#3}{#4}}%
+ \expandafter\pxec@decl@bas@cjkshape@a\pxec@args}
+\@onlypreamble\pxec@decl@bas@cjkshape@a
+\def\pxec@decl@bas@cjkshape@a#1#2#3#4{%
+ \pxDeclareCJKShape{#1}{#2}{#3}{n}{#4}%
+ \ifpxec@star\else \pxDeclareBasicCJKFallback{#1}{#2}{#3}\fi}
+
+%%<+> \pxDeclareCJKShape{<enc>}{<fam>}{<ser>}{<shape>}{<font>}
+% Declares a single font shape. Here <font> is a font spec
+% or a fontsubst form.
+\@onlypreamble\pxDeclareCJKShape
+\def\pxDeclareCJKShape#1#2#3#4#5{%
+ \edef\pxec@args{{#1}{#2}{#3}{#4}{\pxFontSubst{#5}}}%
+ \expandafter\pxec@decl@cjkshape@a\pxec@args}
+\@onlypreamble\pxec@decl@cjkshape@a
+\def\pxec@decl@cjkshape@a#1#2#3#4#5{%
+ \pxDeclareFontShape{#1}{#2}{#3}{#4}{<->#5}}
+
+%%<+> \pxDefineFontSubst{<sym>}{<text>}
+% Defines a 'fontsubst' with name <sym>. After its call,
+% \pxFontSubst{*<sym>} will expand to <text>.
+% N.B. A fontsubst must be fully-expandable.
+%%<+> \pxFontSubst{<spec>}
+% Resolves a 'fontsubst' and expands to the resulted text. That is,
+% - <spec> of form !<text> expands to s*[<value>]<text>, where
+% <value> is the standard scale factor defined in \pxUpScale.
+% - <spec> of fotm *<text> expands to the definition of 'fontsubst'
+% with name <text>.
+% - <spec> of other form is left unchanged.
+\@onlypreamble\pxDefineFontSubst
+\def\pxDefineFontSubst#1{\@namedef{pxec@font*#1}}
+\@onlypreamble\pxFontSubst
+\def\pxFontSubst#1{\pxec@fontsubst@a#1\@nil}
+\@onlypreamble\pxec@fontsubst@a
+\def\pxec@fontsubst@a#1#2\@nil{%
+ \if!#1s*[\pxUpScale]#2%
+ \else\if*#1\@nameuse{pxec@font*#2}\else#1#2\fi\fi}
+% define some fontsubsts
+\pxDefineFontSubst{mc}{ssub*mc/m/n}
+\pxDefineFontSubst{gt}{ssub*gt/m/n}
+
+%%<+> \pxDeclareSimpleShape{<enc>}{<fam>}{<ser>}{<shape>}{<font>}
+% An alias of \pxDeclareCJKShape for compatibility.
+\@onlypreamble\pxDeclareSimpleShape
+\let\pxDeclareSimpleShape\pxDeclareCJKShape
+
+%%<+> \pxDeclareExtraCJKShapeBF{<enc>}{<shape>}
+%% {<mc-m>}{<gt-m>}{<mc-bx>}{<gt-bx>}
+\def\pxDeclareExtraCJKShapeBF#1#2#3#4#5#6{%
+ \pxDeclareCJKShape{#1}{mc}{m}{#2}{#3}%
+ \pxDeclareCJKShape{#1}{gt}{m}{#2}{#4}%
+ \pxDeclareCJKShape{#1}{mc}{bx}{#2}{#5}%
+ \pxDeclareCJKShape{#1}{gt}{bx}{#2}{#6}}
+
+
+%--------------------------------------- passive \DeclareFontShape
+
+%%<+> \pxForceFontDeclaration
+% Takes either of the following values and decides what to do
+% when the font shape is already declared.
+% t : Overwrites declaration.
+% f : Skips declaration.
+% e : Displays an error.
+% It should be t except when other values are needed.
+\let\pxForceFontDeclaration=t
+
+%%<+> \pxDeclareKanjiFamily{<enc>}{<fam>}
+\def\pxDeclareKanjiFamily#1#2{%
+ \expandafter\ifx\csname#1+#2\endcsname\relax
+ \DeclareKanjiFamily{#1}{#2}{}%
+ \else\if e\pxForceFontDeclaration
+ \pxec@error{Font family #1/#2 already defined}\@ehc
+ \fi\fi}
+
+%%<+> \pxDeclareFontShape{<enc>}{<fam>}{<ser>}{<shape>}{<spec>}
+\def\pxDeclareFontShape#1#2#3#4#5{%
+ \expandafter\ifx\csname #1/#2/#3/#4\endcsname\relax
+ \DeclareFontShape{#1}{#2}{#3}{#4}{#5}{}%
+ \else\if e\pxForceFontDeclaration
+ \pxec@error{Font shape #1/#2/#3/#4 already defined}\@ehc
+ \else\if f\pxForceFontDeclaration\else
+ \pxUndeclareFontShape{#1}{#2}{#3}{#4}%
+ \DeclareFontShape{#1}{#2}{#3}{#4}{#5}{}%
+ \fi\fi\fi}
+
+%%<+> \pxUndeclareFontShape{<enc>}{<fam>}{<ser>}{<shape>}
+\def\pxUndeclareFontShape#1#2#3#4{%
+ \expandafter\let\csname #1/#2/#3/#4\endcsname\@undefined
+ \@tfor\pxec@y:=\@vpt\@vipt\@viipt\@viiipt\@ixpt\@xpt
+ \@xipt\@xiipt\@xivpt\@xviipt\@xxpt\@xxvpt\do
+ {\expandafter\let\csname #1/#2/#3/#4/\pxec@y\endcsname\@undefined}}
+
+%--------------------------------------- CJK named encodings
+
+%%<+> \pxDeclareEncodingDispatcher{<enc_name>}{<text>}
+\@onlypreamble\pxDeclareEncodingDispatcher
+\def\pxDeclareEncodingDispatcher#1{%
+ \expandafter\pxec@decl@enc@dispat@a\csname pxec@ED/#1\endcsname}
+\def\pxec@decl@enc@dispat@a#1{\@onlypreamble#1\def#1}
+
+%%<+> \pxDispatchEncodings{<enc_name>,...}
+\@onlypreamble\pxDispatchEncodings
+\def\pxDispatchEncodings#1{%
+ \@for\pxec@x:={#1}\do{%
+ \ifx\pxec@x\@empty\else
+ \expandafter\pxec@dispat@enc@a\csname pxec@ED/\pxec@x\endcsname
+ \expandafter\let\csname pxec@EA/\pxec@x\endcsname=t\relax
+ \fi}}
+\def\pxec@dispat@enc@a#1{#1\let#1\relax}
+
+%%<+> \pxIsEncodingDispatched{<enc_name>}
+\def\pxIsEncodingDispatched#1{%
+ 1\expandafter\ifx\csname pxec@EA/#1\endcsname\relax
+ \expandafter0\else\expandafter1\fi}
+
+%%<+> \pxBothEncodingsFromName\CSyoko\CState{<enc_name>}
+%%<+> \pxEncodingFromName{<enc_name>}
+%%<+> \pxTateEncodingFromName{<enc_name>}
+\def\pxBothEncodingsFromName#1#2#3{%
+ \expandafter\let\expandafter#1\csname pxec@EY/#3\endcsname
+ \expandafter\let\expandafter#2\csname pxec@ET/#3\endcsname}
+\def\pxEncodingFromName#1{\csname pxec@EY/#1\endcsname}
+\def\pxTateEncodingFromName#1{\csname pxec@ET/#1\endcsname}
+
+%%<+> \pxSetEncodingName{<enc_name>}{<h_enc>}{<v_enc>}
+\@onlypreamble\pxSetEncodingName
+\def\pxSetEncodingName#1#2#3{%
+ \@namedef{pxec@EY/#1}{#2}\@namedef{pxec@ET/#1}{#3}}
+
+%------------------------------- font declarations using named encodings
+
+%%<+> \pxec@supdef\SOMECS{<text1>}{<text2>}
+% Define \SOMECS to be <text1> if <text1> is non-empty,
+% otherwise <text2>.
+\def\pxec@supdef#1#2#3{%
+ \def#1{#2}\ifx#1\@empty \def#1{#3}\fi}
+
+%%<+> \pxDeclareCJKEncodingNE[*]{<enc_name>}
+\@onlypreamble\pxDeclareCJKEncodingNE
+\def\pxDeclareCJKEncodingNE{%
+ \pxec@starinvoke\pxec@DeclareCJKEncodingNE}
+\def\pxec@DeclareCJKEncodingNE#1{%
+ \pxBothEncodingsFromName\pxec@y\pxec@t{#1}%
+ \pxec@DeclareCJKEncoding\pxec@y\pxec@t}
+
+%%<+> \pxDeclareExtraCJKFamilyNE[*]
+%% {<enc-name>}{<fam>}{<h-m>}{<h-bx>}{<v-m>}{<v-bx>}
+\@onlypreamble\pxDeclareExtraCJKFamilyNE
+\def\pxDeclareExtraCJKFamilyNE{%
+ \pxec@starinvoke\pxec@DeclareExtraCJKFamilyNE}
+\@onlypreamble\pxec@DeclareBasicCJKFamilyNE
+\def\pxec@DeclareExtraCJKFamilyNE#1#2#3#4#5#6{%
+ \pxBothEncodingsFromName\pxec@y\pxec@t{#1}%
+ \pxDeclareKanjiFamily{\pxec@y}{#2}%
+ \pxec@DeclareBasicCJKShape{\pxec@y}{#2}{m}{#3}%
+ \pxec@DeclareBasicCJKShape{\pxec@y}{#2}{bx}{#4}%
+ \pxDeclareKanjiFamily{\pxec@t}{#2}%
+ \pxec@supdef\pxec@vm{#5}{#3}\pxec@supdef\pxec@vb{#6}{#4}%
+ \pxec@DeclareBasicCJKShape{\pxec@t}{#2}{m}{\pxec@vm}%
+ \pxec@DeclareBasicCJKShape{\pxec@t}{#2}{bx}{\pxec@vb}}
+
+%%<+> \pxDeclareBasicCJKShapeNE[*]
+%% {<enc-name>}{<fam>}{<ser>}{<h-font>}{<v-font>}
+% Declares the font shape for 'n'-shape. *-form does not set
+% substitution for shapes 'it', 'sl', 'sc'.
+\@onlypreamble\pxDeclareBasicCJKShapeNE
+\def\pxDeclareBasicCJKShapeNE{%
+ \pxec@starinvoke\pxec@DeclareBasicCJKShapeNE}
+\@onlypreamble\pxec@DeclareBasicCJKShapeNE
+\def\pxec@DeclareBasicCJKShapeNE#1#2#3#4#5{%
+ \pxBothEncodingsFromName\pxec@y\pxec@t{#1}%
+ \pxec@supdef\pxec@z{#5}{#4}%
+ \pxec@DeclareBasicCJKShape\pxec@y{#2}{#3}{#4}%
+ \pxec@DeclareBasicCJKShape\pxec@t{#2}{#3}{\pxec@z}}
+
+%%<+> \pxDeclareCJKShapeNE
+%% {<enc_name>}{<fam>}{<ser>}{<shape>}{<h_font>}{<v_font>}
+\@onlypreamble\pxDeclareCJKShapeNE
+\def\pxDeclareCJKShapeNE#1#2#3#4#5#6{%
+ \pxBothEncodingsFromName\pxec@y\pxec@t{#1}%
+ \pxec@supdef\pxec@z{#6}{#5}%
+ \pxDeclareCJKShape\pxec@y{#2}{#3}{#4}{#5}%
+ \pxDeclareCJKShape\pxec@t{#2}{#3}{#4}{\pxec@z}}
+
+%--------------------------------------- JSF encodings
+
+%%<+> \pxDeclareJSFEncoding{<h-enc>}{<v-enc>}{<sfid>,...}
+\def\pxDeclareJSFEncoding#1#2#3{%
+ \pxDeclareBasicCJKEncoding*{#1}{#2}%
+ \expandafter\edef\csname pxec@ZL/#1\endcsname{#3}%
+ \expandafter\let\csname pxec@ZL/#2\expandafter\endcsname
+ \csname pxec@ZL/#1\endcsname}
+
+%%<+> \DeclareJSFFamily{<enc>}{<fam>}[<sfid>,...]{<body>}
+%%<+> \AppendToJSFFamily{<enc>}{<fam>}[<sfid>,...]{<body>}
+\def\DeclareJSFFamily{\pxec@starfalse\pxec@DeclareJSFFamily}
+\def\AppendToJSFFamily{\pxec@startrue\pxec@DeclareJSFFamily}
+\def\pxec@DeclareJSFFamily#1#2{%
+ \edef\pxec@djf@enc{#1}\edef\pxec@djf@fam{#2}%
+ \expandafter\let\expandafter\pxec@sfidlst\csname pxec@ZL/#1\endcsname
+ \@ifnextchar[%
+ \pxec@decl@jsf@fam@a{\pxec@decl@jsf@fam@b\relax}}
+\def\pxec@decl@jsf@fam@a[#1]{%
+ \pxec@decl@jsf@fam@b{\edef\pxec@sfidlst{#1}}}
+\def\pxec@decl@jsf@fam@b#1{%
+ \ifx\pxec@sfidlst\relax \pxec@err@ukjsf
+ \else #1\expandafter\pxec@decl@jsf@fam@c \fi}
+\def\pxec@decl@jsf@fam@c{%
+ \afterassignment\pxec@decl@jsf@fam@d\def\pxec@djf@body##1##2}
+\def\pxec@decl@jsf@fam@d{%
+ \ifpxec@star\else
+ \DeclareKanjiFamily{\pxec@djf@enc}{\pxec@djf@fam=Z}{\relax}\fi
+ \edef\pxec@nxt{\noexpand\@for\noexpand\pxec@djf@x:=\pxec@sfidlst}%
+ {\pxec@nxt\do{\pxec@decl@jsf@fam@do}}}
+\def\pxec@decl@jsf@fam@do{%
+ \global\expandafter\let\csname
+ pxec@Z/\pxec@djf@enc/\pxec@djf@fam/\pxec@djf@x\endcsname=t%
+ \edef\pxec@famx{\pxec@djf@fam=Z\pxec@djf@x}%
+ \DeclareKanjiFamily{\pxec@djf@enc}{\pxec@famx}{}%
+ \bxDebug{font family \pxec@famx\space loaded}%
+ \edef\JSFBasicShapeSet{\pxec@djf@starinvoke\pxec@JSFBasicShapeSet}%
+ \edef\JSFFallback{\pxec@djf@invoke\pxec@JSFFallback}%
+ \edef\JSFBasicShape{\pxec@djf@starinvoke\pxec@JSFBasicShape}%
+ \edef\JSFShape{\pxec@djf@starinvoke\pxec@JSFShape}%
+ \pxec@djf@body\pxec@djf@x\pxec@djf@fam}
+\def\pxec@djf@invoke#1{\noexpand#1{\pxec@djf@enc}{\pxec@famx}}
+\def\pxec@djf@starinvoke#1{\noexpand\pxec@starinvoke\pxec@djf@invoke#1}
+
+%%%% commands used inside \DeclareJSFFamily
+
+%%<+> \JSFBasicShapeSet[*]{<font-m-n>}{<font-bx-n>}
+\def\pxec@JSFBasicShapeSet{\pxec@DeclareBasicShapeSet}
+
+%%<+> \JSFFallback{<ser>}
+\def\pxec@JSFFallback{\pxDeclareBasicCJKFallback}
+
+%%<+> \JSFBasicShape[*]{<ser>}{<font-n>}
+\def\pxec@JSFBasicShape{\pxDeclareBasicCJKShape}
+
+%%<+> \JSFShape[*]{<ser>}{<shape>}{<font>}
+\def\pxec@JSFShape{%
+ \ifpxec@star \expandafter\pxDeclareFontShape
+ \else \expandafter\pxDeclareCJKShape \fi}
+
+%%<+> \JSFShapeRaw{<ser>}{<shape>}{<spec>}
+\def\pxec@JSFShapeRaw{\pxDeclareFontShape}
+
+%--------------------------------------- basic encodings
+
+%%%% the standard Japanese encodings
+\ifnativeupTeX
+\def\pxStdYEnc{JY2}\def\pxStdTEnc{JT2}
+\else
+\def\pxStdYEnc{JY1}\def\pxStdTEnc{JT1}
+\fi
+
+%%%% encoding name 'standard' for standard encodings
+\edef\pxec@args{{standard}{\pxStdYEnc}{\pxStdTEnc}}
+\expandafter\pxSetEncodingName\pxec@args
+
+%%%% user interfaces
+
+%%<*> \selectjaencoding{<enc_name>}
+\DeclareRobustCommand*\selectjaencoding[1]{%
+ \edef\pxec@tmpa{\pxEncodingFromName{#1}}%
+ \pxec@selectjaencoding\pxec@tmpa \ignorespaces}
+
+%%<*> \normaljaencoding
+\DeclareRobustCommand*\normaljaencoding{%
+ \pxec@selectjaencoding\kanjiencodingdefault}
+
+%%<*> \standardjaencoding
+\DeclareRobustCommand*\standardjaencoding{%
+ \pxec@selectjaencoding\pxStdYEnc}
+
+%% \pxec@selectjaencoding{<enc>}
+% Adjustment for pxbabel.
+\def\pxec@selectjaencoding#1{%
+ \ifx\pxInNonJaLanguage\@undefined \kanjiencoding{#1}\selectfont\fi
+ \ifx\pxbb@org@encoding\@undefined\else \edef\pxbb@org@encoding{#1}\fi}
+
+%%%% declarations for basic Japanese encodings
+
+\ifnativeupTeX %<upTeX>
+
+%% J20, J30 : 2000jis
+\pxSetEncodingName{2000jis}{J20}{J30}
+\pxDeclareEncodingDispatcher{2000jis}{\pxDeclareCJKEncodingNE{2000jis}}
+
+%% J24, J34 : 2004jis
+\pxSetEncodingName{2004jis}{J24}{J34}
+\pxDeclareEncodingDispatcher{2004jis}{\pxDeclareCJKEncodingNE{2004jis}}
+
+\else %<pTeX>
+
+%% J00, J10 : 78jis
+\pxSetEncodingName{78jis}{J00}{J10}
+\pxDeclareEncodingDispatcher{78jis}{\pxDeclareCJKEncodingNE{78jis}}
+
+% It is assumed that the standard encodings (JY1/JT1) have 83JIS form.
+% Thus the encoding '83jis' will not be used.
+%% J01, J11 : 83jis
+%\pxSetEncodingName{83jis}{J01}{J11}
+%\pxDeclareEncodingDispatcher{83jis}{\pxDeclareCJKEncodingNE{83jis}}
+
+% The name "J02/J12' is intended to mean 90JIS (= 97JIS), but Adobe does
+% not distinguish 90JIS from 83JIS. So I will make no distinction between
+% then either.
+
+% The fonts for standard families (mc & gt) in '2000jis' encoding are not
+% provided together with PXfontspec bundle, so this encoding is not ready
+% for use unless the appropriate fonts (jfms) are prepared.
+%% J03, J13 : 2000jis
+\pxSetEncodingName{2000jis}{J03}{J13}
+\pxDeclareEncodingDispatcher{2000jis}{\pxDeclareCJKEncodingNE{2000jis}}
+
+%% J04, J14 : 2004jis
+\pxSetEncodingName{2004jis}{J04}{J14}
+\pxDeclareEncodingDispatcher{2004jis}{\pxDeclareCJKEncodingNE{2004jis}}
+
+%% J08, J18 : winj (CP932)
+\pxSetEncodingName{winj}{J08}{J18}
+\pxDeclareEncodingDispatcher{winj}{\pxDeclareCJKEncodingNE{winj}}
+
+\fi %</upTeX>
+
+%--------------------------------------- patches to OTF/UTF packages
+
+%%%% make \CID work in nonstandard CJK encodings
+% \UTF & \CID require the current encoding to be the standard one, thus
+% they won't work well along with packages that change Japanese encoding
+% (pxfontenc, pxbabel, etc.). This patch resolves this problem.
+\providecommand*\pxBDHookEncSwitchOTF{\pxec@bdhook@encswotf@do}
+\@onlypreamble\pxec@bdhook@encswotf@do
+\def\pxec@bdhook@encswotf@do{%
+ \AtBeginDocument{%
+ \@ifpackageloaded{otf}{\let\pxec@JYn\otf@JYn}{}%
+ \@ifpackageloaded{utf}{\let\pxec@JYn\utf@JYn}{}%
+ \ifx\pxec@JYn\@undefined\else
+ % hook at the \set@character invocation, so that encoding will
+ % be forced to be the standard one
+ \long\def\set@character{% \long, as the original is
+ \afterassignment\pxec@put@character\@tempcnta}%
+ \def\pxec@put@character{\kanjiencoding{\pxec@JYn}\put@character}%
+ \fi}%
+ \let\pxBDHookEncSwitchOTF\@empty}% nullify
+
+%--------------------------------------- all done
+\pxec@restore@codes
+\endinput
+%% EOF
diff --git a/language/japanese/pxbase/pxbsjc.def b/language/japanese/pxbase/pxbsjc.def
new file mode 100644
index 0000000000..d8b27ec658
--- /dev/null
+++ b/language/japanese/pxbase/pxbsjc.def
@@ -0,0 +1,6 @@
+%
+% pxbsjc.def
+% Warning: Do not change encoding of this file!
+\def\bxtb@tmpa{齷齷}% E9 BD B7 E9 BD B7
+\endinput
+% EOF
diff --git a/language/japanese/pxbase/pxbsjc1.def b/language/japanese/pxbase/pxbsjc1.def
new file mode 100644
index 0000000000..2d04593828
--- /dev/null
+++ b/language/japanese/pxbase/pxbsjc1.def
@@ -0,0 +1,7 @@
+%
+% pxbsjc.def
+% Warning: Do not change encoding of this file!
+\def\bxtb@tmpa{齷齷}% E9 BD B7 E9 BD B7
+% O! % 82 4F 21
+\endinput
+% EOF
diff --git a/language/japanese/pxbase/pxjsfenc.def b/language/japanese/pxbase/pxjsfenc.def
new file mode 100644
index 0000000000..0fc28f2e81
--- /dev/null
+++ b/language/japanese/pxbase/pxjsfenc.def
@@ -0,0 +1,212 @@
+%%
+%% This is file 'pxjsfenc.def'.
+%%
+
+%% file declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesFile{pxjsfenc.def}[2017/07/03 v1.1b PX JSF encoding]
+
+%% code guards
+\edef\pxec@jsf@restore@codes{%
+ \catcode34=\the\catcode34%
+ \catcode43=\the\catcode43%
+ \catcode45=\the\catcode45%
+ \catcode46=\the\catcode46%
+ \catcode47=\the\catcode47%
+ \catcode60=\the\catcode60%
+\relax}
+\catcode34=12 % <">
+\catcode43=12 % <+>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode60=12 % <<>
+\g@addto@macro\pxec@jsf@restore@codes{%
+ \let\pxec@jsf@restore@codes\@undefined}
+
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{pxbase}
+\bxRequireDefinition{pxbasenc}
+
+%% variables
+\newif\ifpxec@hyperref % true if hyperref patch is invoked
+
+%--------------------------------------- main
+
+%% \pxec@declare@jsf@gen{<name>}{<enc>}{<ext>}
+\def\pxec@declare@jsf@ucs{\pxec@swtrue\pxec@declare@jsf@a}
+\def\pxec@declare@jsf@cid{\pxec@swfalse\pxec@declare@jsf@a}
+\def\pxec@declare@jsf@a#1{% {<name>} | {<enc>}{<ext>}
+ \expandafter\pxec@declare@jsf@b\csname#1\expandafter\endcsname
+ \csname pxUcv#1\expandafter\endcsname
+ \csname pxec@E@#1\expandafter\endcsname
+ \csname pxec@ext@#1\endcsname{#1}}
+\def\pxec@declare@jsf@b#1#2#3#4#5#6#7{%
+ % \[<name>]\[pxUcv<name>]\[pxec@E@<name>]\[pxec@ext@<name>]
+ % {<name>}{<enc>}{<ext>}
+ \ifpxec@sw \DeclareRobustCommand{#1}[1]{%
+ \uppercase{\bxUcv="##1}\pxec@out@jsf#3#4}%
+ \else \DeclareRobustCommand{#1}[1]{%
+ \uppercase{\bxUcv=##1}\pxec@out@jsf#3#4}%
+ \fi
+ \def#2{\pxec@out@jsf#3#4}\def#3{#6}%
+ \ifpxec@sw \pxec@addto@hyref@patch{#5}\fi
+ \ifx @#7@\else\bxUseShadowMap#4{#7}\fi}
+%% hyperref patch
+\def\pxec@hyref@patch{\pxec@hyperreftrue}
+\AtBeginDocument{\@ifpackageloaded{hyperref}{\pxec@hyref@patch}{}}
+\def\pxec@addto@hyref@patch#1{% {<name>}
+ \expandafter\pxec@addto@hyref@patch@a\csname#1\expandafter\endcsname
+ \csname pxec@hy@#1\expandafter\endcsname\csname#1 \endcsname}
+\def\pxec@addto@hyref@patch@a#1#2#3{%
+ % \[<name>]\[pxec@hy@<name>]\[<name> ]
+ \g@addto@macro\pxec@hyref@patch{\def#1{\protect#2}%
+ \def#2##1{\ifHy@pdfstring\0x##1\else#3{##1}\fi}}}
+
+%% define \UTF command
+% \pxec@E@UTF (second argument) will be \let'd to be either
+% \pxec@E@UTF@a or \pxec@E@UTF@b.
+% Note that pxbabel package \let's \UTF be \UTFK, etc. when
+% a CJK language is in effect.
+\pxec@declare@jsf@ucs{UTF}{J20}{sm-pxot-ja}
+
+%% \pxSwitchUTFCommand
+\def\pxSwitchUTFCommand#1{\csname pxec@SWU/#1\endcsname}
+\@namedef{pxec@SWU/2000jis}{\let\pxec@E@UTF\pxec@E@UTF@a}
+\@namedef{pxec@SWU/2004jis}{\let\pxec@E@UTF\pxec@E@UTF@b}
+
+%% define standard sets
+\pxec@declare@jsf@ucs{UTF@a}{J20}{sm-pxot-ja}
+\pxec@declare@jsf@ucs{UTFK}{J21}{sm-pxot-ko}
+\pxec@declare@jsf@ucs{UTFC}{J22}{sm-pxot-sc}
+\pxec@declare@jsf@ucs{UTFT}{J23}{sm-pxot-tc}
+\pxec@declare@jsf@ucs{UTF@b}{J24}{sm-pxot-ja}
+\pxec@declare@jsf@ucs{UTFM}{J25}{}
+\pxec@declare@jsf@cid{CID}{J40}{}
+\pxec@declare@jsf@cid{CIDK}{J41}{}
+\pxec@declare@jsf@cid{CIDC}{J42}{}
+\pxec@declare@jsf@cid{CIDT}{J43}{}
+
+%--------------------------------------- processing in upTeX
+\ifnativeupTeX
+
+\pxDeclareCJKEncoding*{J20}{J30}
+\pxDeclareCJKEncoding*{J21}{J31}
+\pxDeclareCJKEncoding*{J22}{J32}
+\pxDeclareCJKEncoding*{J23}{J33}
+\pxDeclareCJKEncoding*{J24}{J34}
+\pxDeclareCJKEncoding*{J40}{J50}
+\pxDeclareCJKEncoding*{J41}{J51}
+\pxDeclareCJKEncoding*{J42}{J52}
+\pxDeclareCJKEncoding*{J43}{J53}
+
+%<+> \pxSwitchUTFDirect
+%<+> \pxSwitchUTFIndirect
+\def\pxec@nxt#1{% here #1 is \[UTF ]
+ \let\pxec@UTF@ind#1\let\pxec@UcvUTF@ind\pxUcvUTF
+ \def\pxec@UTF@dir##1{\uppercase{\char"##1 }}%
+ \def\pxec@UcvUTF@dir{\char\bxUcv}%
+ \def\pxSwitchUTFDirect{%
+ \let#1\pxec@UTF@dir \let\pxUcvUTF\pxec@UcvUTF@dir}%
+ \def\pxSwitchUTFIndirect{%
+ \let#1\pxec@UTF@ind \let\pxUcvUTF\pxec@UcvUTF@ind}}
+\expandafter\pxec@nxt\csname UTF \endcsname
+
+%% \pxec@out@jsf{<enc>}\[<ext>]
+\def\pxec@out@jsf#1#2{% {<enc>}\[<ext>]
+ {\kanjiencoding{#1}\selectfont \kchar\bxUcv}}
+
+\pxec@jsf@restore@codes
+\expandafter\endinput \fi\relax % stop here
+%--------------------------------------- processing in pTeX
+
+%% JSF encodings
+\pxDeclareJSFEncoding{J20}{J30}{0,2,3,4,5,6,7,8,9,d,f}
+\pxDeclareJSFEncoding{J21}{J31}{0,1,2,3,4,5,6,7,8,9,a,b,c,d,f}
+\pxDeclareJSFEncoding{J22}{J32}{0,1,2,3,4,5,6,7,8,9,d,f}
+\pxDeclareJSFEncoding{J23}{J33}{0,2,3,4,5,6,7,8,9,d,f}
+\pxDeclareJSFEncoding{J24}{J34}{0,2,3,4,5,6,7,8,9,d,f}
+\pxDeclareJSFEncoding{J40}{J50}{0,1,2,3,4,5}
+\pxDeclareJSFEncoding{J41}{J51}{0,1,2,3,4}
+\pxDeclareJSFEncoding{J42}{J52}{0,1,2,3,4,5,6,7}
+\pxDeclareJSFEncoding{J43}{J53}{0,1,2,3,4}
+
+%% \pxec@out@jsf{<enc>}\[<ext>]
+% The code value specified has been assigned to \bxUcv here.
+\def\pxec@out@jsf#1#2{% {<enc>}\[<ext>]
+ \pxec@loadfontdef{#1}%
+ \bgroup\pxec@pretranscode#2\pxec@transcode
+ \expandafter\let\expandafter\pxec@tmpa
+ \csname #1/\k@family=Z\pxec@sfid/\k@series/\k@shape\endcsname
+ \ifx\pxec@tmpa\relax \pxec@setinvalid \fi
+ \kanjiencoding{#1}\kanjifamily{\k@family=Z\pxec@sfid}%
+ \selectfont\char\jis\bxUcv
+ \egroup\pxec@end}
+
+%% \pxec@transcode
+\mathchardef\pxec@c@jsfa="3030
+\mathchardef\pxec@c@jsfb="1000
+\chardef\pxec@c@jsfx="40
+\chardef\pxec@c@jsfy="C0
+\chardef\pxec@c@jsfz=10
+\def\do#1{\uppercase{\@tempcnta="#1}\relax
+ \expandafter\def\csname pxec@TX/\the\@tempcnta\endcsname{#1}}
+\do a\do b\do c\do d\do e\do f
+\def\pxec@transcode{%
+ \@tempcnta\bxUcv \divide\@tempcnta\pxec@c@jsfb
+ \edef\pxec@sfid{\ifnum\@tempcnta<\pxec@c@jsfz \the\@tempcnta
+ \else \csname pxec@TX/\the\@tempcnta\endcsname \fi}%
+ \multiply\@tempcnta\pxec@c@jsfb \advance\bxUcv-\@tempcnta
+ \@tempcnta\bxUcv \divide\@tempcnta\pxec@c@jsfx
+ \multiply\@tempcnta\pxec@c@jsfy \advance\bxUcv\@tempcnta
+ \advance\bxUcv\pxec@c@jsfa}
+\def\pxec@setinvalid{%
+ % set translated values for source codepoint 0
+ \def\pxec@sfid{0}\bxUcv\pxec@c@jsfa}
+
+%% \pxec@pretranscode\fontSM
+% Here \fontSM is a shadow-map font spec.
+\def\pxec@pretranscode#1{%
+ \ifnum\bxUcv<\p@\else% \p@ = "10000
+ \@tempcnta=\bxUcv \divide\@tempcnta\p@
+ \ifcase\@tempcnta\or \bxUcv\z@ \or
+ \ifx#1\@undefined \bxUcv\z@
+ \else \advance\bxUcv-"20000 \bxMap#1\fi
+ \else\bxUcv\z@\fi
+ \fi}
+
+%% \pxec@loadfontdef{<h-enc>}
+% Tries to load the font definition for current family and encoding
+% <h-enc> on demand from .fd files.
+\def\pxec@loadfontdef#1{%
+ \expandafter\let\expandafter\pxec@tmpa
+ \csname #1+\k@family=Z\endcsname
+ \ifx\pxec@tmpa\@empty \pxec@okfalse % already tried in failure
+ \else\ifx\pxec@tmpa\relax % not yet tried
+ \edef\pxec@nxt{%
+ \noexpand\pxec@loadfontdef@a{#1}%
+ \noexpand\pxec@loadfontdef@a{\csname t@enc#1\endcsname}}%
+ \pxec@oktrue \pxec@nxt
+ \ifpxec@ok\else
+ \expnadafter\let\csname#1+\k@family=Z\endcsname\@empty \fi
+ \else \pxec@oktrue \fi\fi
+ \ifpxec@ok\else \expandafter\pxec@skiptoend \fi}
+\def\pxec@loadfontdef@a#1{%
+ \expandafter\ifx\csname #1+\k@family=Z\endcsname\relax
+ \begingroup \let\typeout\@font@info \escapechar\m@ne
+ \def\f@encoding{#1}\def\f@family{\k@family=Z}%
+ \try@load@fontshape
+ \endgroup\fi
+ \expandafter\ifx\csname #1+\k@family=Z\endcsname\@empty
+ \pxec@err@nojsf{#1}\pxec@okfalse \fi}
+
+%%%% \pxec@skiptoend
+\def\pxec@skiptoend#1\pxec@end{}
+\let\pxec@end\@empty
+
+%--------------------------------------- all done
+\pxec@jsf@restore@codes
+\endinput
+%% EOF
diff --git a/language/japanese/pxbase/upkcat.sty b/language/japanese/pxbase/upkcat.sty
new file mode 100644
index 0000000000..a97cbde36d
--- /dev/null
+++ b/language/japanese/pxbase/upkcat.sty
@@ -0,0 +1,79 @@
+%%
+%% This is file 'upkcat.sty'.
+%%
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+% Note: This package supports both upLaTeX and plain upTeX.
+
+%% avoid multiple loading
+\csname\if11upkcatstyLoaded\fi\endcsname
+%% code guards
+\edef\x{\catcode32=\the\catcode32%
+\catcode43=\the\catcode43\catcode45=\the\catcode45%
+\catcode46=\the\catcode46\catcode47=\the\catcode47%
+\catcode60=\the\catcode60\catcode63=\the\catcode63%
+\catcode64=\the\catcode64\catcode96=\the\catcode96%
+\endlinechar=\the\endlinechar\relax}
+\catcode32=10\relax\endlinechar=13\relax
+\catcode43=12 \catcode45=12 % <+><->
+\catcode46=12 \catcode47=12 % <.></>
+\catcode60=12 \catcode63=12 % <<><?>
+\catcode64=11 \catcode96=12 % <@><`>
+\edef\pxkq@restore@codes{\x\let\noexpand\pxkq@restore@codes\relax}
+%% check for LaTeX
+\ifx\RequirePackage\@undefined %<*!LaTeX>
+ \long\def\x#1\ProvidesPackage#2[#3]{\immediate\write-1{Package: #2 #3}}
+ \expandafter\x
+\else %<*LaTeX>
+ \RequirePackage{ifuptex}[2008/03/14]\RequireupTeX
+\fi %</LaTeX>
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{upkcat}[2017/06/19 v1.1a safe kcatcode access]
+
+%--------------------------------------- main
+
+%%<*> \getkcatcode{<jachar>}
+\def\getkcatcode#1{\pxkq@getcp{#1}%
+ \edef\thekcatcode{\the\kcatcode\pxkq@cp}}
+%%<*> \setkcatcode{<jachar>}{<value>}
+\def\setkcatcode#1#2{\pxkq@getcp{#1}\kcatcode\pxkq@cp#2}
+\newcount\pxkq@cp \newif\ifpxkq@ok
+\def\pxkq@getcp#1{\pxkq@getcp@a#1\relax\relax}
+\def\pxkq@nxt#1#2#3#4#5{\pxkq@cp#1\loop
+ {\lccode`\?\pxkq@cp \advance\pxkq@cp-#3%
+ \lowercase{\expandafter\xdef\csname pxkq@#4?\endcsname}{#5}}%
+ \advance\pxkq@cp\@ne \ifnum\pxkq@cp<#2\repeat}
+\pxkq@nxt{240}{248}{240}l{\pxkq@cp\the\pxkq@cp\noexpand\pxkq@da}
+\pxkq@nxt{224}{240}{224}l{\pxkq@cp\the\pxkq@cp\noexpand\pxkq@ca}
+\pxkq@nxt{194}{224}{192}l{\pxkq@cp\the\pxkq@cp\noexpand\pxkq@ba}
+\pxkq@nxt{128}{192}{128}t{\advance\pxkq@cp\the\pxkq@cp\noexpand\pxkq@oktrue}
+\def\pxkq@getcp@a#1{\pxkq@cp`#1\relax\pxkq@chkk#1%
+ \ifpxkq@ok \let\pxkq@nxt\pxkq@end \else
+ \expandafter\let\expandafter\pxkq@nxt\csname pxkq@l\string#1\endcsname
+ \ifx\pxkq@nxt\relax \let\pxkq@nxt\pxkq@err \fi
+ \fi \pxkq@nxt}
+\def\pxkq@stp#1#2{\multiply\pxkq@cp64\pxkq@okfalse
+ \csname pxkq@t\string#2\endcsname
+ \ifpxkq@ok \expandafter#1\else \expandafter\pxkq@err \fi}
+\def\pxkq@end#1\relax{}
+\def\pxkq@ba{\pxkq@stp\pxkq@end}\def\pxkq@ca{\pxkq@stp\pxkq@cb}
+\def\pxkq@cb{\pxkq@stp\pxkq@end}\def\pxkq@da{\pxkq@stp\pxkq@db}
+\def\pxkq@db{\pxkq@stp\pxkq@dc}\def\pxkq@dc{\pxkq@stp\pxkq@end}
+\begingroup\lccode`8=`k\lccode`9=`a \lowercase{\endgroup
+ \def\pxkq@chkk#1{\pxkq@okfalse\expandafter\pxkq@chkk@a\meaning#189\@nil}
+ \def\pxkq@chkk@a#189#2\@nil{\ifcat @#1@\pxkq@oktrue\fi}}
+\def\pxkq@err#1\relax{\errhelp{I regard it as U+FFFF}%
+ \errmessage{Corrupted UTF-8 bytes}\pxkq@cp65535\relax}
+%\def\pxkq@end#1\relax{\showthe\pxkq@cp}
+
+%--------------------------------------- all done
+\pxkq@restore@codes
+\endinput
+%% EOF
diff --git a/language/japanese/pxchfon/LICENSE b/language/japanese/pxchfon/LICENSE
new file mode 100644
index 0000000000..534324b756
--- /dev/null
+++ b/language/japanese/pxchfon/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2019 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/pxchfon/PXcjk0.sfd b/language/japanese/pxchfon/PXcjk0.sfd
new file mode 100644
index 0000000000..0e32bf7ad9
--- /dev/null
+++ b/language/japanese/pxchfon/PXcjk0.sfd
@@ -0,0 +1,36 @@
+l0j 32: 0x0020_0x0021 0x201D 0x0023_0x0026 0x2019 0x0028_0x003B 61: \
+ 0x003D 63: 0x003F_0x005B 0x201C 0x005D 96: 0x2018 0x0061_0x007A \
+ 124: 0x2015 161: 0xFF61_0xFF9F
+l1j 11: 0xFB00_0xFB04 0x0131 0x0237 0x0060 0x00B4 0x02C7 0x02D8 \
+ 0x00AF 0x02DA 0x00B8 0x00DF 0x00E6 0x0153 0x00F8 0x00C6 0x0152 \
+ 0x00D8 0x0020_0x0021 0x201D 0x0023_0x0026 0x2019 0x0028_0x003B \
+ 0x00A1 0x003D 0x00BF 0x003F_0x005B 0x201C 0x005D 0x02C6 0x02D9 \
+ 0x2018 0x0061_0x007A 124: 0x2015 0x02DD 0x007E 0x00A8 129: 0x0022 \
+ 0x0027 0x003C 0x003E 0x005C 0x005F 0x0060 0x007B 0x007C 0x007D \
+ 0x00A2_0x00A3 0x00A5 0x00AC 161: 0xFF61_0xFF9F
+l4j 18: 0x0060 0x00B4 33: 0x0021_0x007E 0x00A8 128: 0x2018_0x2019 \
+ 0x201C_0x201D 161: 0xFF61_0xFF9F
+l5j 13: 0x0027 0x00A1 0x00BF 0x0131 18: 0x0060 0x00B4 22: 0x00AF \
+ 25: 0x00DF 0x00E6 0x0153 0x00F8 0x00C6 0x0152 0x00D8 0x0020_0x0021 \
+ 0x201D 0x0023_0x0026 0x2019 0x0028_0x005B 0x201C 0x005D_0x005F \
+ 0x2018 0x0061_0x007A 124: 0x2015 126: 0x007E 0x00A8 \
+ 161: 0xFF61_0xFF9F
+t1 0x02CB 0x02CA 0x02C6 0x02DC 0x00A8 0x02DD 0x02DA 0x02C7 0x02D8 \
+ 0x02C9 0x02D9 0x00B8 0x02DB 0x201A 0x2039_0x203A 0x201C_0x201E \
+ 0x00AB 0x00BB 0x2013 0x2015 25: 0x0131 0x0237 32: 0x0020_0x0026 \
+ 0x2019 0x0028_0x005F 0x2018 0x0061_0x007E 128: 0x0102 0x0104 0x0106 \
+ 0x010C 0x010E 0x011A 0x0118 0x011E 0x0139 0x013D 0x0141 0x0143 \
+ 0x0147 0x014A 0x0150 0x0154 0x0158 0x015A 0x0160 0x015E 0x0164 \
+ 0x0162 0x0170 0x016E 0x0178_0x0179 0x017D 0x017B 0x0132 0x0130 \
+ 0x0111 0x00A7 0x0103 0x0105 0x0107 0x010D 0x010F 0x011B 0x0119 \
+ 0x011F 0x013A 0x013E 0x0142 0x0144 0x0148 0x014B 0x0151 0x0155 \
+ 0x0159 0x015B 0x0161 0x015F 0x0165 0x0163 0x0171 0x016F 0x00FF \
+ 0x017A 0x017E 0x017C 0x0133 0x00A1 0x00BF 0x00A3 0x00C0_0x00D6 \
+ 0x0152 0x00D8_0x00DE 224: 0x00E0_0x00F6 0x0153 0x00F8_0x00FE \
+ 0x00DF
+ts1 11: 0x00B8 0x02DB 36: 0x0024 39: 0x0027 42: 0x204E 44: 0x002C \
+ 46: 0x002E 0x2044 61: 0x2212 87: 0x2126 91: 0x301A 93: 0x301B \
+ 96: 0x0060 126: 0x02F7 128: 0x02D8 0x02C7 0x02DD 132: 0x2020_0x2021 \
+ 0x2016 0x2030 0x2022 0x2103 140: 0x0192 151: 0x2122 157: 0x212E \
+ 162: 0x00A2_0x00AA 172: 0x00AC 174: 0x00AE_0x00B7 \
+ 185: 0x00B9_0x00BA 188: 0x00BC_0x00BE 0x20AC 214: 0x00D7 246: 0x00F7
diff --git a/language/japanese/pxchfon/README-ja.md b/language/japanese/pxchfon/README-ja.md
new file mode 100644
index 0000000000..7fec784750
--- /dev/null
+++ b/language/japanese/pxchfon/README-ja.md
@@ -0,0 +1,191 @@
+PXchfon パッケージバンドル
+==========================
+
+LaTeX: pLaTeX/upLateX における日本語フォント設定
+
+pLaTeX / upLaTeX の文書の標準のフォント(明朝・ゴシック)をユーザ指定の
+ものに置き換える。dvipdfmx 専用である。他のフォント追加パッケージと
+異なり、追加するフォントを LaTeX 文書中で指定するので、一度パッケージ
+をインストールするだけで、任意の日本語フォント(ただし等幅に限る)を
+使うことができる。欧文部分を同じ日本語フォントで置き換えることも可能で
+ある。UTF / OTF パッケージにも対応している。
+
+0.5 版での拡張で、pTeX において広く行われているフォント設定(IPA フォント
+の使用等)をパッケージオプション一つで行う機能を追加した。この機能は元々、
+別の PXjafont パッケージとして提供されていたものである。
+
+### 前提環境
+
+ * フォーマット: LaTeX
+ * エンジン: pTeX、upTeX
+ * DVIウェア: dvipdfmx
+ * 依存パッケージ:
+ - atbegshi パッケージ(`everypage` オプション使用時)
+ - pxufont パッケージ(`unicode` オプション使用時)
+
+### インストール
+
+#### 和文のみを置き換えればよい場合
+
+つまり、常に `noalphabet` オプション付きで用いる場合。この場合は以下の
+設定だけで済む。
+
+ - TDS 1.1 に従ったシステムでは、次のファイルを移動する。
+ * `*.sty` → $TEXMF/tex/platex/pxchfon/
+
+ - もっと簡単に、TeX システムのディレクトリには手を加えずに、単に
+ 文書ファイルと同じディレクトリに pxchfon.sty を置くだけでも使える。
+
+#### 欧文部分の置き換えも利用したい場合
+
+つまり、`noalphabet` なしでも用いたい場合。この場合は上に加えて以下の
+設定を行う。
+
+ * TDS 1.1 に従ったシステムでは、各ファイルを次の場所に移動する。
+ - `tfm/*.tfm` → $TEXMF/fonts/tfm/public/pxchfon/
+ - `vf/*.vf` → $TEXMF/fonts/vf/public/pxchfon/
+ - `pxcjk0.sfd` → $TEXMF/fonts/sfd/pxchfon/
+ - `*.def` → $TEXMF/tex/platex/pxchfon/
+
+### ライセンス
+
+MITライセンスの下で配布される。
+
+更新履歴
+--------
+
+ * Version 1.5a ‹2019/07/10›
+ - バグ修正。
+ * Version 1.5 ‹2019/05/15›
+ - TL2017 用の暫定設定である `unicode*` オプションを非推奨とする。
+ - `\asUTF` 命令を非推奨とする。
+ - 欧文置換用の VF を刷新した。TS1 エンコーディングをサポート。
+ - The VFs of alphabetic fonts are refined; now TS1 encoding is
+ also supported.
+ - Unicode 直接モードでは非埋込のフォントに対して警告を出す。
+ * Version 1.4a ‹2019/03/24›
+ - 非置換のフォントに対して不具合が起こりうる設定を使う場合、
+ 非置換のフォントがあると警告を出す。
+ * Version 1.4 ‹2019/03/24›
+ - プリセット `sourcehan-jp`、`noto-jp` を追加。
+ (Source Han・Noto CJK の地域別サブセット版を使用)
+ - 欧文フォント置換が T1 エンコーディングに(暫定的に)対応。
+ - 欧文フォント置換の不具合の修正。
+ * Version 1.3a ‹2019/03/20›
+ - 1.3 版の追加機能の大幅な改修。Unicode 直接モードの `expert` が
+ pTeX でも使用可能になった。
+ * Version 1.3 ‹2019/02/03›
+ - Unicode 直接モードにおいて japanese-otf の `expert` 指定の主要な
+ 機能(横組・縦組用仮名字形、ルビ用字形)に対応した。
+ - GID 指定入力(`glyphid` オプションおよび `\gid` 命令)。
+ * Version 1.2b ‹2019/01/21›
+ - 「じゅん101」のファイル名の誤りを修正。
+ * Version 1.2a ‹2018/03/17›
+ - プリセット `ume` を追加。
+ - プリセット `hiragino` を `hiragino-pro` の別名にする。
+ - バグ修正。
+ * Version 1.2 ‹2018/03/15›
+ - `sourcehan(-otc)`/`noto(-otc)` について、暫定的に `+` 付と同じ動作
+ にしていたが、`unicode` を既定にする動作に改める。
+ * Version 1.1b ‹2017/10/04›
+ - バグ修正。
+ * Version 1.1a ‹2017/09/09›
+ - オプション `unicode(*)-fwid` を追加。
+ - (試験的)“legacycode”関連オプションを追加。
+ * Version 1.1 ‹2017/07/05›
+ - マップ行生成のロジックを大幅に改修した。
+ - オプション `(no)strictcsi` を追加。
+ - (暫定的) プリセット `sourcehan(-otc)+`、`noto(-otc)+` を追加。
+ * Version 1.0c ‹2017/07/04›
+ - バグ修正。
+ * Version 1.0b ‹2017/06/29›
+ - バグ修正。
+ * Version 1.0a ‹2017/06/19›
+ - ドライバオプションを新設した。
+ - '(no)dumpmap'、'(no)dumpmaptl' オプションを新設した。
+ - オプション 'prefer2004jis' の別名として 'jis2004' を追加した。
+ - (暫定的) プリセット `yu-win10+` を追加。
+ - バグ修正。
+ * Version 1.0 ‹2017/05/31›
+ - 非推奨のプリセットに対してエラーを出す。
+ - pxjafont パッケージを非推奨とする。
+ - `directunicode*` については OTF パッケージの読込を不要とした。
+ - オプション `unicode(*)` を追加。
+ ※新しい dvipdfmx の「OpenType 属性指定」機能を利用したもの。
+ - プリセット `sourcehan(-otc)`、`noto(-otc)` を追加。
+ * Version 0.9 ‹2017/04/08›
+ - オプション `directunicode*` を追加。
+ - 非推奨のプリセットに対して警告を出す。
+ * Version 0.8 ‹2017/01/13›
+ - これまで暫定的に、`prefer2004jis` の効力を upTeX の OTF パッケージ
+ のフォントにも及ぼしていたが、OTF パッケージの `jis2004` オプション
+ が upTeX にも対応したため、この措置を取りやめ、本来の仕様通り、
+ `prefer2004jis` は標準和文フォントだけを対象とした。
+ - プリセット `moga-mobo` / `moga-maruberi` の定義の誤りを修正。
+ - プリセット `moga-mobo-ex` を追加。
+ - 単純マップファイルプリセット機能(`*NAME`)を追加。
+ * Version 0.7h ‹2015/10/14›
+ - バグ修正(\usefontmapline/file など)。
+ * Version 0.7g ‹2015/09/30›
+ - プリセット `hiragino-elcapitan-*`、`yu-win10` を追加。
+ * Version 0.7f ‹2015/08/04›
+ - `\diruni` / `\textdiruni` を追加。
+ * Version 0.7e ‹2015/05/07›
+ - マップファイルプリセット機能を追加。
+ - `\usefontmapfile` / `\usefontmapline` を追加。
+ - この版までの「試験的」機能を正式な機能とする。
+ * Version 0.7d ‹2013/06/16›
+ - 非埋込の明示指定をサポート。
+ * Version 0.7c ‹2013/06/16›
+ - OTF パッケージおよび upTeX 標準の中国語・韓国語フォントをサポート
+ した。
+ * Version 0.7b ‹2013/06/05›
+ - upTeX + OTF パッケージの時の `\UTF`/`\CID` 入力に対するフォント
+ を置換の対象に含めた。
+ * Version 0.7a ‹2013/05/18›
+ - バグ修正。
+ * Version 0.7 ‹2013/05/08›
+ - `(no)directunicode` を縦書きに対応。
+ - `relfont` オプションを追加。
+ * Version 0.6c ‹2013/04/20›
+ - `(no)directunicode` オプションを追加。
+ * Version 0.6b ‹2013/04/20›
+ - `(no)oneweight` オプションを追加。
+ - 非 CID フォントに関する `prefer2004jis` の実現方法を変更。
+ 2000JIS と 2004JIS の TFM で別の実フォントがマップされる。
+ - 3 つのパッケージレベル命令 `\JaFontReplacementFor`,
+ `\JaFontReplacementHook`, `\JaFontUserDefinedMap` を追加。
+ * Version 0.6a ‹2013/04/07›
+ - プリセットの設定を全面的に見直し。
+ - OTF パッケージの `jis2004` オプション設定時に使用されるフォント
+ 群に対応させた。
+ - OTF パッケージで極太ゴシックの CID 版と Unicode 版のフォント
+ に対応させた。
+ * Version 0.6 ‹2013/03/17›
+ - `prefer2004jis` を pTeX 標準フォントにも有効にした。
+ * Version 0.5 ‹2010/05/12›
+ - PXfontspec パッケージのフォントへの対応を追加。
+ - PXjafont パッケージの機能を組み入れた。
+ - `[no]prefer2004jis` オプションを追加。
+ - 欧文のマップ指定について v0.4 で混入したバグを修正。
+ - `[no]everypage` オプションを追加。
+ * Version 0.4a ‹2010/04/12›
+ - 縦書きの文書クラスで必ずエラーになるというバグを修正。
+ * Version 0.4 ‹2009/12/20›
+ - なぜか `\setmarugothicfont` の説明が抜けてたので補った。
+ - `\[no]usecmapforalphabet` を実験的に追加。
+ * Version 0.3a ‹2009/11/23›
+ - README 中に掲げた ttfonts.map の記述の間違いを訂正。
+ * Version 0.3 ‹2009/07/13›
+ - OTF パッケージの多ウェイト機能(deluxe オプション)に対応。
+ - UTF パッケージへの対応が全く機能していなかったのを修正。
+ - 明朝だけ指定した場合の欧文の取り扱いの問題を解決。
+ * Version 0.2a ‹2009/05/31›
+ - `noalphabet` 指定時には PXcjk0.sfd を読む必要はなかったので、説明を訂正
+ した。
+ * Version 0.2 ‹2009/03/29]
+ - 最初の公開版。
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/pxchfon/README.md b/language/japanese/pxchfon/README.md
new file mode 100644
index 0000000000..72450c9bd7
--- /dev/null
+++ b/language/japanese/pxchfon/README.md
@@ -0,0 +1,151 @@
+PXchfon Package
+===============
+
+LaTeX: Japanese font setup for pLaTeX and upLaTeX
+
+This package enables users to declare in their document which physical
+fonts should be used for the standard Japanese (logical) fonts of pLaTeX
+and upLaTeX. Font setup is realized by changing the font mapping of
+dvipdfmx, and thus users can use any (monospaced) physical fonts they
+like, once they properly install this package, without creating helper
+files for each new fonts. This package also supports setup for the fonts
+used in the japanese-otf package.
+
+### SYSTEM REQUIREMENTS
+
+ * TeX format: LaTeX.
+ * TeX engine: pTeX or upTeX.
+ * DVIware: dvipdfmx.
+ * Prerequisite packages:
+ - atbegshi (when option `everypage` is used)
+ - pxufont (when option `unicode` is used)
+
+### INSTALLATION
+
+Move the files as follows (in a system compliant to TDS 1.1):
+
+ - `*.sty` → $TEXMF/tex/platex/pxchfon/
+ - `tfm/*.tfm` → $TEXMF/fonts/tfm/public/pxchfon/
+ - `vf/*.vf` → $TEXMF/fonts/vf/public/pxchfon/
+ - `pxcjk0.sfd` → $TEXMF/fonts/sfd/pxchfon/
+ - `*.def` → $TEXMF/tex/platex/pxchfon/
+
+And rehash your TEXMF trees if necessary.
+
+### LICENSE
+
+This package is distributed under the MIT License.
+
+Revision History
+----------------
+
+ * Version 1.5a ‹2019/07/10›
+ - Bug fix.
+ * Version 1.5 ‹2019/05/15›
+ - The `unicode*` option, which is a tentative setting for TL2017,
+ is now deprecated.
+ - The `\asUTF` command is now deprecated.
+ - The VFs of alphabetic fonts are refined; now TS1 encoding is
+ also supported.
+ - Issue a warning for unembedded font weights, if direct Unicode
+ mode is employed.
+ * Version 1.4a ‹2019/03/24›
+ - Issue a warning for unsubstituted font weights, if a setting
+ where unsubtituted fonts could cause problems is employed.
+ * Version 1.4 ‹2019/03/24›
+ - Presets `sourcehan-jp` and `noto-jp`, which use the subset OTF
+ version of Source Han and Noto CJK.
+ - Now the replacement of alphabetic fonts also works with T1
+ encoding (besides OT1).
+ * Version 1.3a ‹2019/03/20›
+ - Now the support of `expert` mode in the direct Unicode mode is
+ available also on pTeX.
+ * Version 1.3 ‹2019/02/03›
+ - Now the direct Unicode mode supports the major feature of the
+ `expert` mode of the otf-japanese package.
+ - The feature of GID input (`glyphid` option).
+ * Version 1.2b ‹2019/01/21›
+ - Fix the file name for font “Jun 101”.
+ * Version 1.2a ‹2018/03/17›
+ - Preset `ume`.
+ - Preset `hiragino` alias to `hiragino-pro`.
+ - Bug fix.
+ * Version 1.2 ‹2018/03/15›
+ - Presets `sourcehan`/`noto` turns on `unicode` by default.
+ * Version 1.1b ‹2017/10/04›
+ - Bug fix.
+ * Version 1.1a ‹2017/09/09›
+ - Options `unicode(*)-fwid`.
+ - (experimental) Some“legacycode”-related options.
+ * Version 1.1 ‹2017/07/05›
+ - Revise the logic of generating map lines.
+ - Option `(no)strictcsi`.
+ - (transitional) Presets `sourcehan(-otc)+` and `noto(-otc)+`.
+ * Version 1.0c ‹2017/07/04›
+ - Bug fix.
+ * Version 1.0b ‹2017/06/29›
+ - Bug fix.
+ * Version 1.0a ‹2017/06/19›
+ - Driver options.
+ - Options `dumpmap` and `dumpmaptl`.
+ - Alias `jis2004` for the option `prefer2004jis`.
+ - (transitional) Preset `yu-win10+`.
+ * Version 1.0 ‹2017/05/31›
+ - The long-deprecated presets are now abolished.
+ - The package pxjafont is deprecated.
+ - Now `directunicode*` does not need japanese-otf.
+ - Option `unicode*`.
+ - Presets `sourcehan(-otc)` and `noto(-otc)`.
+ * Version 0.9 ‹2017/04/08›
+ - Option `directunicode*`.
+ * Version 0.8 ‹2017/01/13›
+ - Now `prefer2004jis` has no effect on the Japanese fonts provided
+ by japanese-otf pacakge even when using upTeX, since `jis2004`
+ option of japanese-otf can do the job now.
+ - Fix the settings for preset `moga-mobo` and `moga-maruberi`.
+ - Preset `moga-mobo-ex`.
+ - The simple map file preset (`*NAME`) feature.
+ * Version 0.7h ‹2015/10/14›
+ - Bug fix.
+ * Version 0.7g ‹2015/09/30›
+ - Presets `hiragino-elcapitan-*` and `yu-win10`.
+ * Version 0.7f ‹2015/08/04›
+ - `\diruni` and `\textdiruni`.
+ * Version 0.7e ‹2015/05/07›
+ - The map file preset (`+NAME`) feature.
+ - `\usefontmapfile` and `\usefontmapline`.
+ * Version 0.7d ‹2013/06/16›
+ - Explicit designation of non-embedding.
+ * Version 0.7c ‹2013/06/16›
+ - Support for Chinese and Korean fonts.
+ * Version 0.7b ‹2013/06/05›
+ - Support for the combination of upTeX + japanese-otf.
+ * Version 0.7a ‹2013/05/18›
+ - Bug fix.
+ * Version 0.7 ‹2013/05/08›
+ - `(no)directunicode` in vertical writing.
+ - `relfont` option.
+ * Version 0.6c ‹2013/04/20›
+ - `(no)directunicode` option.
+ * Version 0.6b ‹2013/04/20›
+ - `(no)oneweight` option.
+ - Support for `prefer2004jis` in using some non-CID fonts.
+ - Package level commands `\JaFontReplacementFor`,
+ `\JaFontReplacementHook` and `\JaFontUserDefinedMap`.
+ * Version 0.6a ‹2013/04/07›
+ - Complete revision of the preset settings.
+ - Support for `jis2004` version of the japanese-otf font set.
+ - Support for extra-bold weight in the japanese-otf font set.
+ * Version 0.6 ‹2013/03/17›
+ - `prefer2004jis` working on pTeX.
+ * Version 0.5 ‹2010/05/12›
+ * Version 0.4a ‹2010/04/12›
+ * Version 0.4 ‹2009/12/20›
+ * Version 0.3a ‹2009/11/23›
+ * Version 0.3 ‹2009/07/13›
+ * Version 0.2a ‹2009/05/31›
+ * Version 0.2 ‹2009/03/29›
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/pxchfon/pxchfon.pdf b/language/japanese/pxchfon/pxchfon.pdf
new file mode 100644
index 0000000000..96b7b5041b
--- /dev/null
+++ b/language/japanese/pxchfon/pxchfon.pdf
Binary files differ
diff --git a/language/japanese/pxchfon/pxchfon.sty b/language/japanese/pxchfon/pxchfon.sty
new file mode 100644
index 0000000000..c667ab8b88
--- /dev/null
+++ b/language/japanese/pxchfon/pxchfon.sty
@@ -0,0 +1,2006 @@
+%%
+%% This is file 'pxchfon.sty'.
+%%
+%% Copyright (c) 2019 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxchfon}[2019/07/10 v1.5a]
+\def\pxcz@pkgname{pxchfon}
+
+%--------------------------------------- general
+
+%% variables
+\newif\ifpxcz@ok
+\newif\ifpxcz@utf
+\let\pxcz@pre\relax
+\let\pxcz@post\relax
+
+%% unique tokens
+\def\pxcz@end{\pxcz@end@}
+\def\pxcz@mt{\pxcz@mt@}
+
+%% \pxcz@csletcs{<cs1>}{<cs2>}
+\def\pxcz@csletcs#1#2{%
+ \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
+
+%% \pxcz@cond\ifXXX...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\pxcz@cond#1\fi{%
+ #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+
+%% \pxcz@onlypreamble@csdef{<csname>}
+\def\pxcz@onlypreamble@csdef#1{%
+ \expandafter\pxcz@onlypreamble@def\csname#1\endcsname}
+%% \pxcz@onlypreamble@def\CS
+\def\pxcz@onlypreamble@def#1{%
+ \@onlypreamble#1\def#1}
+%% \pxcz@onlypreamble@let\CS
+\def\pxcz@onlypreamble@let#1{%
+ \@onlypreamble#1\let#1}
+
+%% \pxcz@csuse@or{<csname>}{<default>}
+\def\pxcz@csuse@or#1#2{%
+ \expandafter\ifx\csname#1\endcsname\relax \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi{#2}{\csname#1\endcsname}}
+
+%% \pxcz@lower\CS
+\def\pxcz@lower#1{%
+ \expandafter\pxcz@lower@a#1\pxcz@end#1}
+\def\pxcz@lower@a#1\pxcz@end#2{%
+ \lowercase{\def#2{#1}}}
+
+%% \pxcz@split{<at>}{<target>}
+\def\pxcz@split#1#2{%
+ \edef\pxcz@tmpx{{#1}{#2}}%
+ \expandafter\pxcz@split@a\pxcz@tmpx}
+\def\pxcz@split@a#1#2{%
+ \def\pxcz@tmpx##1#1##2\pxcz@end{\pxcz@split@b{##1}{##2}}%
+ \pxcz@tmpx#2\pxcz@mt#1\pxcz@end}
+\def\pxcz@split@b#1#2{%
+ \let\pxcz@pre\relax \let\pxcz@post\relax
+ \ifx\pxcz@end#2\pxcz@end\else
+ \pxcz@split@c#2\pxcz@end{#1}%
+ \fi}
+\def\pxcz@split@c#1\pxcz@mt#2\pxcz@end#3{%
+ \def\pxcz@pre{#3}\def\pxcz@post{#1}}
+
+%--------------------------------------- environment check
+
+%% check for 'pxjafont' package
+% if old version of pxjafont is loaded (probably this package is
+% required from pxjafont), then I abort here with an error message.
+\@ifpackageloaded{pxjafont}{%
+ \ifx\pxAliasedPxjafont\@undefined
+ \PackageError\pxcz@pkgname
+ {FATAL: Old 'pxjafont' is loaded}{\@ehc}
+ \expandafter\@@end\fi}{}
+
+%% \ifpxcz@uptex
+\newif\ifpxcz@uptex \pxcz@uptexfalse
+\edef\pxcz@tmpa{\string\ucs}\edef\pxcz@tmpb{\meaning\ucs}
+\ifx\pxcz@tmpa\pxcz@tmpb \pxcz@uptextrue \fi
+
+%% \ifpxcz@otf@deluxe
+\newif\ifpxcz@otf@deluxe \pxcz@otf@deluxefalse
+\@ifpackagewith{otf}{deluxe}{\pxcz@otf@deluxetrue}{}
+\@ifpackagewith{pxotf}{deluxe}{\pxcz@otf@deluxetrue}{}
+
+%% \ifpxcz@otf@multi
+\newif\ifpxcz@otf@multi \pxcz@otf@multifalse
+\@ifpackagewith{otf}{multi}{\pxcz@otf@multitrue}{}
+
+%% \ifpxcz@otf@expert
+\newif\ifpxcz@otf@expert \pxcz@otf@expertfalse
+\@ifpackagewith{otf}{expert}{\pxcz@otf@experttrue}{}
+
+%% \pxcz@pxufont@avail
+\IfFileExists{pxufont-ruby.sty}{\chardef\pxcz@pxufont@avail=2 }{%
+\IfFileExists{pxufont.sty}{\chardef\pxcz@pxufont@avail=1 }{%
+ \chardef\pxcz@pxufont@avail=0 }}
+
+%% \pxcz@pxufont@loaded
+\@ifpackageloaded{pxufont}{%
+ \ifx t\pxufontUseRubyFont \chardef\pxcz@pxufont@loaded=2
+ \else \chardef\pxcz@pxufont@loaded=1
+ \fi
+}{%else
+ \chardef\pxcz@pxufont@loaded=0
+}
+
+%--------------------------------------- handle options
+
+%% variables
+\newif\ifpxcz@enabled \pxcz@enabledtrue
+\let\pxcz@alphabet=n
+\newif\ifpxcz@otf \pxcz@otftrue
+\newif\ifpxcz@cmap@alpha
+\newif\ifpxcz@mmivjis
+\newif\ifpxcz@everypage
+\newif\ifpxcz@oneweight
+\newif\ifpxcz@uniquify
+\newif\ifpxcz@fullwidth
+\let\pxcz@directunicode\relax
+\let\pxcz@main@preset\relax
+\let\pxcz@file@preset\relax
+\newif\ifpxcz@file@preset@tl
+\newif\ifpxcz@alpha
+\newif\ifpxcz@rel
+\newif\ifpxcz@dumpmap
+\newif\ifpxcz@dumpmap@tl
+\newif\ifpxcz@switch@font \pxcz@switch@fonttrue
+\newif\ifpxcz@switch@font@xwid
+\newif\ifpxcz@switch@font@xjis
+\let\pxcz@strict@csi\relax
+\newif\ifpxcz@directunicode@default
+\let\pxcz@legacycode\relax
+\let\pxcz@expert\relax
+\newif\ifpxcz@glyphid
+
+%% process options
+% drivers
+\DeclareOption{nodvidriver}{\pxcz@enabledfalse}
+\DeclareOption{dvips}{\pxcz@enabledfalse}
+\DeclareOption{dviout}{\pxcz@enabledfalse}
+\DeclareOption{xdvi}{\pxcz@enabledfalse}
+\DeclareOption{dvipdfmx}{\pxcz@enabledtrue}
+% (no)alphabet / relfont
+\DeclareOption{alphabet}{\let\pxcz@alphabet=t}
+\DeclareOption{noalphabet}{\let\pxcz@alphabet=f}
+\DeclareOption{relfont}{\let\pxcz@alphabet=r}
+% (no)otf
+\DeclareOption{otf}{\pxcz@otftrue}
+\DeclareOption{nootf}{\pxcz@otffalse}
+\DeclareOption{utf}{\pxcz@otftrue}
+\DeclareOption{noutf}{\pxcz@otffalse}
+% (no)usecmapforalphabet
+\DeclareOption{usecmapforalphabet}{\pxcz@cmap@alphatrue}
+\DeclareOption{nousecmapforalphabet}{\pxcz@cmap@alphafalse}
+% (no)prefer2004jis / (no)jis2004
+\DeclareOption{prefer2004jis}{\pxcz@mmivjistrue}
+\DeclareOption{noprefer2004jis}{\pxcz@mmivjisfalse}
+\DeclareOption{jis2004}{\pxcz@mmivjistrue}
+\DeclareOption{nojis2004}{\pxcz@mmivjisfalse}
+% (no)everypage
+\DeclareOption{everypage}{\pxcz@everypagetrue}
+\DeclareOption{noeverypage}{\pxcz@everypagefalse}
+% (no)oneweight
+\DeclareOption{oneweight}{\pxcz@oneweighttrue}
+\DeclareOption{nooneweight}{\pxcz@oneweightfalse}
+% (no)directunicode / directunicode*
+\chardef\pxcz@directunicode@none=0
+\chardef\pxcz@directunicode@otf=1
+\chardef\pxcz@directunicode@all=2
+\chardef\pxcz@directunicode@full=3
+\DeclareOption{directunicode*}{\let\pxcz@directunicode\pxcz@directunicode@all}
+\DeclareOption{directunicode}{\let\pxcz@directunicode\pxcz@directunicode@otf}
+\DeclareOption{nodirectunicode}{\let\pxcz@directunicode\pxcz@directunicode@none}
+% (no)dumpmap
+\DeclareOption{dumpmap}{\pxcz@dumpmaptrue}
+\DeclareOption{nodumpmap}{\pxcz@dumpmapfalse}
+% (no)dumpmaptl
+\DeclareOption{dumpmaptl}{\pxcz@dumpmap@tltrue}
+\DeclareOption{nodumpmaptl}{\pxcz@dumpmap@tlfalse}
+% (no)switchfont
+\DeclareOption{switchfont}{\pxcz@switch@fonttrue}
+\DeclareOption{noswitchfont}{\pxcz@switch@fontfalse}
+% (no)strictcsi
+\DeclareOption{strictcsi}{\let\pxcz@strict@csi=t}
+\DeclareOption{nostrictcsi}{\let\pxcz@strict@csi=f}
+% XXXXX-legacycode
+\chardef\pxcz@legacycode@apply=0
+\chardef\pxcz@legacycode@ignore=1
+\chardef\pxcz@legacycode@suppress=2
+\chardef\pxcz@legacycode@replace=3
+\DeclareOption{apply-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@apply}
+\DeclareOption{ignore-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@ignore}
+\DeclareOption{suppress-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@suppress}
+\DeclareOption{replace-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@replace}
+% (no)expert
+\DeclareOption{expert}{\let\pxcz@expert=t}
+\DeclareOption{noexpert}{\let\pxcz@expert=f}
+% (no)glyphid
+\DeclareOption{glyphid}{\pxcz@glyphidtrue}
+\DeclareOption{noglyphid}{\pxcz@glyphidfalse}
+% preset spec options
+\pxcz@onlypreamble@def\pxcz@all@main@preset{%
+ noembed,%
+ %(uniweight)
+ ms,ipa,ipaex,%
+ %(multiweight)
+ ms-hg,ipa-hg,ipaex-hg,moga-mobo,moga-mobo-ex,moga-maruberi,ume,%
+ kozuka-pro,kozuka-pr6,kozuka-pr6n,hiragino-pro,hiragino-pron,%
+ hiragino-elcapitan-pro,hiragino-elcapitan-pron,%
+ morisawa-pro,morisawa-pr6n,yu-win,yu-win10,yu-win10+,yu-osx,%
+ sourcehan-otc,sourcehan,sourcehan-jp,noto-otc,noto,noto-jp,%
+ sourcehan-otc+,sourcehan+,noto-otc+,noto+,%
+ %(alias)
+ hiragino,noto-otf,%
+ noEmbed,kozuka,hiragino-elcapitan,morisawa}
+\pxcz@onlypreamble@def\pxcz@all@abolished@preset{%
+ ipa-otf,ipa-otf-dx,kozuka4,kozuka6,kozuka6n,
+ ms-dx,ipa-ttf,ipa-ttf-dx,ipav2,ipav2-dx,ipa-dx,hiragino-dx}
+ % But note, 'hiragino' != 'hiragino-pro'
+\def\pxcz@do#1{\DeclareOption{#1}{\def\pxcz@main@preset{#1}}}
+\@for\pxcz@x:=\pxcz@all@main@preset\do{%
+ \expandafter\pxcz@do\expandafter{\pxcz@x}}
+\@for\pxcz@x:=\pxcz@all@abolished@preset\do{%
+ \expandafter\pxcz@do\expandafter{\pxcz@x}}
+% others
+% The 'unicode' option means a Unicode-oriented mapping, and requires
+% dvipdfmx of version 20170627 or later. The 'unicode-fwid' is a variant.
+% The 'unicode*(-fwid)' option is a transitional (deteriorated) version
+% of 'unicode(-fwid)' and can work with dvipdfmx of version 20170318.
+\pxcz@onlypreamble@csdef{pxcz@POPT/unicode}{%
+ \let\pxcz@directunicode\pxcz@directunicode@full}
+\pxcz@onlypreamble@csdef{pxcz@POPT/unicode*}{%
+ \pxcz@uniquifytrue
+ \let\pxcz@directunicode\pxcz@directunicode@full}
+\pxcz@onlypreamble@csdef{pxcz@POPT/unicode-fwid}{%
+ \pxcz@fullwidthtrue
+ \let\pxcz@directunicode\pxcz@directunicode@full}
+\pxcz@onlypreamble@csdef{pxcz@POPT/unicode*-fwid}{%
+ \pxcz@fullwidthtrue \pxcz@uniquifytrue
+ \let\pxcz@directunicode\pxcz@directunicode@full}
+\DeclareOption*{%
+ \pxcz@csuse@or{pxcz@POPT/\CurrentOption}{%
+ \pxcz@parse@opt\CurrentOption
+ \ifpxcz@ok\else \@unknownoptionerror \fi}}
+\pxcz@onlypreamble@def\pxcz@parse@opt#1{%
+ \expandafter\pxcz@parse@opt@a#1\@nnil}
+\pxcz@onlypreamble@def\pxcz@parse@opt@a{%
+ \futurelet\pxcz@tok\pxcz@parse@opt@b}
+\pxcz@onlypreamble@def\pxcz@parse@opt@b{%
+ \pxcz@okfalse
+ \let\pxcz@tmpa\remove@to@nnil
+ \ifx+\pxcz@tok
+ \pxcz@file@preset@tltrue \let\pxcz@tmpa\pxcz@parse@opt@c
+ \else\ifx*\pxcz@tok
+ \pxcz@file@preset@tlfalse \let\pxcz@tmpa\pxcz@parse@opt@c
+ \fi\fi \pxcz@tmpa}
+\pxcz@onlypreamble@def\pxcz@parse@opt@c#1#2\@nnil{%
+ \pxcz@oktrue
+ \edef\pxcz@file@preset{#2}}
+% dispatch
+\ProcessOptions*
+
+%% 'unicode*' and 'unicode*-fwid' are DEPRECATED
+\ifpxcz@uniquify
+ \PackageWarningNoLine\pxcz@pkgname
+ {IMPORTANT: Option 'unicode*\ifpxcz@fullwidth -fwid\fi'
+ is DEPRECATED!\MessageBreak
+ This option invokes a transitional setting that\MessageBreak
+ is specially tailored for TL2017, and will be\MessageBreak
+ abolished in near future.\MessageBreak
+ You should update to TL2018 or later and use\MessageBreak
+ option 'unicode\ifpxcz@fullwidth -fwid\fi' instead}
+\fi
+
+%% 'everypage' needs 'atbegshi' package
+\ifpxcz@everypage
+\RequirePackage{atbegshi}
+\fi
+
+%% apply default value for \pxcz@directunicode
+\ifx\pxcz@directunicode\relax
+ \let\pxcz@directunicode\pxcz@directunicode@none
+ \ifnum\pxcz@pxufont@loaded>0
+ \PackageWarningNoLine\pxcz@pkgname
+ {Option 'unicode' is enabled, since the package\MessageBreak
+ 'pxufont' is already loaded}
+ \let\pxcz@directunicode\pxcz@directunicode@full
+ \fi
+ \pxcz@directunicode@defaulttrue
+\fi
+
+%% set 'pxcz@alpha'
+\@tempswafalse
+\if\pxcz@main@preset\relax
+ \if\pxcz@file@preset\relax \@tempswatrue \fi
+\fi
+\if t\pxcz@alphabet \pxcz@alphatrue
+\else\if f\pxcz@alphabet \pxcz@alphafalse
+\else\if r\pxcz@alphabet \pxcz@alphafalse
+\else\if@tempswa \pxcz@alphatrue
+\else \pxcz@alphafalse
+\fi\fi\fi\fi
+\ifpxcz@alpha
+ \IfFileExists{pxchfon0.def}{}{%else
+ \PackageError\pxcz@pkgname
+ {Option 'alphabet' not available in Lite edition}%
+ {You must install full edition of PXchfon bundle, or specify
+ 'noalphabet'\MessageBreak as package option.}%
+ \pxcz@alphafalse}
+\fi
+
+%% set 'pxcz@rel'
+\if r\pxcz@alphabet \pxcz@reltrue
+\else \pxcz@relfalse
+\fi
+\ifpxcz@rel
+ \IfFileExists{pxchfon0.def}{}{%else
+ \PackageError\pxcz@pkgname
+ {Option 'relfont' not available in Lite edition}%
+ {You must install full edition of PXchfon bundle.}%
+ \pxcz@relfalse}
+\fi
+
+%% \ifpxcz@alphafont
+% Whether or not alphabet fonts are used.
+\newif\ifpxcz@alphafont
+\ifpxcz@alpha \pxcz@alphafonttrue
+\else\ifpxcz@rel \pxcz@alphafonttrue
+\else \pxcz@alphafontfalse
+\fi\fi
+
+%% apply default for \pxcz@strict@csi
+\ifx\pxcz@strict@csi\relax
+ % 'dumpmap(tl)' changes the 'strictcsi' default to true.
+ \let\pxcz@strict@csi=f
+ \ifpxcz@dumpmap \let\pxcz@strict@csi=t \fi
+ \ifpxcz@dumpmap@tl \let\pxcz@strict@csi=t \fi
+\fi
+\if t\pxcz@strict@csi
+ % 'strictcsi' requires some pdfTeX feature.
+ \ifx\pdffiledump\@undefined
+ \PackageWarningNoLine\pxcz@pkgname
+ {The option 'strictcsi' cannot be used, because\MessageBreak
+ the engine does not support '\string\pdffiledump'}
+ \let\pxcz@strict@csi=f
+ \fi
+\fi
+
+%% apply 'switch@font'
+\ifpxcz@switch@font
+ \pxcz@switch@font@xjistrue
+\else
+ \let\pxcz@switch@font@xwidtrue\pxcz@switch@font@xwidfalse
+ \let\pxcz@switch@font@xjistrue\pxcz@switch@font@xjisfalse
+\fi
+
+%--------------------------------------- preset-dependent setup
+
+%% variables
+\newif\ifpxcz@warn@unless@all@defined
+\newif\ifpxcz@warn@unless@all@embedded
+
+%% \pxcz@apply@opt@unicode
+% Forces the 'unicode' setup (unless a directunicode option was given).
+\pxcz@onlypreamble@def\pxcz@apply@opt@unicode{%
+ \ifpxcz@directunicode@default % default -> unicode
+ \pxcz@warn@unicode
+ \let\pxcz@directunicode\pxcz@directunicode@full
+ \pxcz@uniquifyfalse
+ \else\ifnum\pxcz@directunicode=\pxcz@directunicode@full
+ \ifpxcz@uniquify % unicode* -> unicode+
+ \pxcz@switch@font@xwidtrue \pxcz@uniquifyfalse
+ \fi % unicode -> (unchanged)
+ \else \pxcz@uniquifyfalse % otherwise, enable switch-font
+ \fi\fi}
+%% \pxcz@apply@opt@unicodeP
+% Forces the 'unicode+' setup, which is a 'unicode' with switch-font
+% enabled on the width features.
+\pxcz@onlypreamble@def\pxcz@apply@opt@unicodeP{%
+ \pxcz@uniquifyfalse
+ \pxcz@switch@font@xwidtrue % 'unicode+'
+ \ifnum\pxcz@directunicode=\pxcz@directunicode@full\else
+ \pxcz@warn@unicode
+ \let\pxcz@directunicode\pxcz@directunicode@full
+ \fi}
+%% \pxcz@warn@unicode
+\pxcz@onlypreamble@def\pxcz@warn@unicode{%
+ \PackageWarningNoLine\pxcz@pkgname
+ {The option 'unicode' is enforced, because the\MessageBreak
+ preset '\pxcz@main@preset' is selected.}}
+
+%% the setup
+\def\pxcz@do#1{%
+ \edef\pxcz@tmpa{#1}%
+ \pxcz@cond\ifx\pxcz@main@preset\pxcz@tmpa\fi
+ {\@firstofone}{\@gobble}}
+% A 'XXXX+' preset forces 'unicode+' setting.
+% 'sourcehan(-otc)' and 'noto(-otc)' should force 'unicode', but currently
+% equivalent to the corresponding 'XXXX+' preset.
+\pxcz@do{sourcehan}{\pxcz@apply@opt@unicode}
+\pxcz@do{sourcehan-otc}{\pxcz@apply@opt@unicode}
+\pxcz@do{sourcehan-jp}{\pxcz@apply@opt@unicode}
+\pxcz@do{noto}{\pxcz@apply@opt@unicode}
+\pxcz@do{noto-otf}{\pxcz@apply@opt@unicode}
+\pxcz@do{noto-otc}{\pxcz@apply@opt@unicode}
+\pxcz@do{noto-jp}{\pxcz@apply@opt@unicode}
+\pxcz@do{sourcehan+}{\pxcz@apply@opt@unicodeP}
+\pxcz@do{sourcehan-otc+}{\pxcz@apply@opt@unicodeP}
+\pxcz@do{noto+}{\pxcz@apply@opt@unicodeP}
+\pxcz@do{noto-otc+}{\pxcz@apply@opt@unicodeP}
+\pxcz@do{yu-win10+}{\pxcz@apply@opt@unicodeP}
+% No-embed is not supported under the 'unicode' setup
+\ifnum\pxcz@directunicode=\pxcz@directunicode@full
+ \pxcz@warn@unless@all@embeddedtrue
+\fi
+
+%% apply default for \pxcz@legacycode
+\ifx\pxcz@legacycode\relax
+ \ifnum\pxcz@directunicode=\pxcz@directunicode@full
+ \let\pxcz@legacycode\pxcz@legacycode@replace
+ \else \let\pxcz@legacycode\pxcz@legacycode@apply
+ \fi
+\fi
+
+%% 'replace-lecacycode' requires the 'pxufont' package
+\ifnum\pxcz@legacycode=\pxcz@legacycode@replace
+ \ifnum\pxcz@pxufont@avail<1
+ \PackageError\pxcz@pkgname
+ {The option 'replace-lecacycode' requires the 'pxufont'\MessageBreak
+ package, but it is not installed}%
+ {The option 'suprress-lecacycode' is applied as fallback.\MessageBreak
+ \@ehc}
+ \let\pxcz@legacycode\pxcz@legacycode@suppress
+ \fi
+\fi
+
+%% check requirements for 'glyphid'
+\ifpxcz@glyphid
+ \pxcz@oktrue
+ \ifnum\pxcz@legacycode=\pxcz@legacycode@replace\else \pxcz@okfalse \fi
+ \ifpxcz@uptex\else \pxcz@okfalse \fi
+ \ifnum\pxcz@pxufont@avail<2 \pxcz@okfalse \fi
+ \ifpxcz@ok\else
+ \PackageError\pxcz@pkgname
+ {The option 'glyphid' cannot be used here. You must\MessageBreak
+ use upLaTeX and the 'unicode' option, and package\MessageBreak
+ 'pxufont' of v0.5 or later must be installed}
+ {\@ehc}
+ \pxcz@glyphidfalse
+ \fi
+\fi
+
+%% check requirements for 'expert'
+\pxcz@oktrue
+\ifnum\pxcz@legacycode=\pxcz@legacycode@replace\else \pxcz@okfalse \fi
+\ifnum\pxcz@directunicode=\pxcz@directunicode@full\else \pxcz@okfalse \fi
+\ifpxcz@uniquify \pxcz@okfalse \fi % no 'unicode*'
+\ifpxcz@switch@font@xwid \pxcz@okfalse \fi % no 'unicode+'
+\ifnum\pxcz@pxufont@avail<2 \pxcz@okfalse \fi
+\ifpxcz@ok\else
+ \if t\pxcz@expert % explicitly given
+ \PackageError\pxcz@pkgname
+ {The option 'expert' cannot be used here. You must\MessageBreak
+ use upLaTeX and the 'unicode' option, and package\MessageBreak
+ 'pxufont' of v0.5 or later must be installed}
+ {\@ehc}
+ \fi
+ \let\pxcz@expert=f
+\fi
+
+%% apply default for \pxcz@expert
+\ifpxcz@otf@expert
+ \ifx\pxcz@expert\relax
+ \let\pxcz@expert=t
+ \fi
+\else
+ \if t\pxcz@expert
+ \PackageWarningNoLine\pxcz@pkgname
+ {The 'expert' option will be ignored, since the\MessageBreak
+ expert mode of the 'otf' package is not enabled}
+ \fi
+ \let\pxcz@expert=f
+\fi
+\if t\pxcz@expert
+ \pxcz@warn@unless@all@definedtrue
+\fi
+
+%--------------------------------------- user interface
+
+%% \pxcz@sym@list
+\def\pxcz@sym@list{%
+ mnl,mnr,mnb,gtr,gtb,gtx,gtu,mgr,kom,kog,scm,scg,tcm,tcg}
+
+%%<*> \setminchofont/\setgothicfont/etc.
+\newcommand*\setminchofont{\pxcz@setfont{mnl,mnr,mnb}}
+\newcommand*\setgothicfont{\pxcz@setfont{gtr,gtb,gtx,gtu}}
+\newcommand*\setlightminchofont{\pxcz@setfont{mnl}}
+\newcommand*\setmediumminchofont{\pxcz@setfont{mnr}}
+\newcommand*\setboldminchofont{\pxcz@setfont{mnb}}
+\newcommand*\setmediumgothicfont{\pxcz@setfont{gtr}}
+\newcommand*\setboldgothicfont{\pxcz@setfont{gtb}}
+\newcommand*\setxboldgothicfont{\pxcz@setfont{gtx}}
+\newcommand*\setoneweightgothicfont{\pxcz@setfont{gtu}}
+\newcommand*\setmarugothicfont{\pxcz@setfont{mgr}}
+\newcommand*\setkoreanminchofont{\pxcz@setfont{kom}}
+\newcommand*\setkoreangothicfont{\pxcz@setfont{kog}}
+\newcommand*\setschineseminchofont{\pxcz@setfont{scm}}
+\newcommand*\setschinesegothicfont{\pxcz@setfont{scg}}
+\newcommand*\settchineseminchofont{\pxcz@setfont{tcm}}
+\newcommand*\settchinesegothicfont{\pxcz@setfont{tcg}}
+\pxcz@onlypreamble@def\pxcz@setfont#1{\@ifnextchar[%]
+ {\pxcz@setfont@a{#1}}{\pxcz@setfont@a{#1}[0]}}
+\pxcz@onlypreamble@def\pxcz@setfont@a#1[#2]#3{%
+ \edef\pxcz@tmpa{#3}\pxcz@lower\pxcz@tmpa
+ \pxcz@split{?:}{?\pxcz@tmpa}%
+ \ifx\pxcz@pre\relax
+ \pxcz@split{tc?}{\pxcz@tmpa?}%
+ \ifx\pxcz@pre\relax \pxcz@setfont@b{#1}{#3}%
+ \else \pxcz@setfont@b{#1}{:#2:#3}%
+ \fi
+ \else \pxcz@setfont@b{#1}{#3}%
+ \fi}
+\pxcz@onlypreamble@def\pxcz@setfont@b#1#2{%
+ \@for\pxcz@tmpx:=#1\do{%
+ \@namedef{pxcz@FS/\pxcz@tmpx}{#2}}}
+\@for\pxcz@x:=\pxcz@sym@list\do{%
+ \@namedef{pxcz@FS/\pxcz@x}{}}
+
+%--------------------------------------- '\asUTF'
+% NB. This feature is superseded by the \diruni command.
+\ifpxcz@uptex
+
+%%<*> \asUTF{<jachar>}
+\AtBeginDocument{%
+ \@ifpackageloaded{otf}{%
+ \providecommand*\asUTF{\pxcz@asutf@a}%
+ }{}%
+}
+\def\pxcz@asutf@a#1{%
+ \pxcz@warn@depre@asutf
+ \kchardef\pxcz@tmpa=`#1\relax
+ \expandafter\pxcz@asutf@b\meaning\pxcz@tmpa\relax
+}
+\def\pxcz@asutf@b#1"#2\relax{%
+ \UTF{#2}%
+}
+\def\pxcz@warn@depre@asutf{%
+ \PackageWarningNoLine\pxcz@pkgname
+ {Important: Command '\string\asUTF' is DEPRECATED}%
+ \global\let\pxcz@warn@depre@asutf\relax
+}
+
+\fi
+%--------------------------------------- fontmap internals
+
+%% \pxcz@noembed
+% The value given to \set...font to mean 'no-embed'.
+\def\pxcz@noembed{*}
+
+%% \pxcz@kill@mapping
+\def\pxcz@kill@mapping{!}
+
+%% \pxcz@cmap@directuni
+% CMap symbol for "direct unicode".
+\def\pxcz@cmap@directuni{unicode}
+
+%% \pxcz@cmap@hwuni
+% CMap name for halfwidth fonts.
+\def\pxcz@cmap@hwuni{UniJIS-UCS2-HW-H}
+
+%%<*> \usecmapforalphabet/\nousecmapforalphabet
+\newcommand*\usecmapforalphabet{%
+ \global\pxcz@cmap@alphatrue}
+\newcommand*\nousecmapforalphabet{%
+ \global\pxcz@cmap@alphafalse}
+
+%% \pxcz@NEF/<sym>
+\def\pxcz@do#1#2{%
+ \def\pxcz@tmpb{#2}%
+ \@for\pxcz@tmpa:=#1\do{%
+ \expandafter\let\csname pxcz@NEF/\pxcz@tmpa\endcsname\pxcz@tmpb
+ }}
+\pxcz@do{mnl,mnr,mnb}{Ryumin-Light}
+\pxcz@do{gtr,gtb,gtx,gtu,mgr}{GothicBBB-Medium}
+\pxcz@do{kom}{HYSMyeongJo-Medium}
+\pxcz@do{kog}{HYGoThic-Medium}
+\pxcz@do{scm}{STSong-Light}
+\pxcz@do{scg}{STHeiti-Regular}
+\pxcz@do{tcm}{MSung-Light}
+\pxcz@do{tcg}{MHei-Medium}
+
+%%<+> \JaFontReplacementFor{<sym>}
+\newcommand*\JaFontReplacementFor[1]{%
+ \csname pxcz@FS/#1\endcsname}
+
+%%<+> \JaFontReplacementHook{<code>}
+\@onlypreamble\JaFontReplacementHook
+\newcommand*\JaFontReplacementHook{%
+ \g@addto@macro\pxcz@user@hook}
+\let\pxcz@user@hook\@empty
+
+%%<+> \JaFontUserDefinedMap
+\@onlypreamble\JaFontUserDefinedMap
+\newcommand*\JaFontUserDefinedMap{%
+ \g@addto@macro\pxcz@user@map}
+\let\pxcz@user@map\@empty
+\@namedef{pxcz@FS/*}{\pxcz@empty}
+
+%%<+> \usefontmapline{<map-line>}
+\@onlypreamble\usefontmapline
+\newcommand*\usefontmapline[1]{%
+ \JaFontUserDefinedMap{\pxcz@addtospec@alt\pxcz@mapline{#1}}}
+
+%%<+> \usefontmapfile{<map-file>}
+\@onlypreamble\usefontmapfile
+\newcommand*\usefontmapfile[1]{%
+ \JaFontUserDefinedMap{\pxcz@addtospec@alt\pxcz@mapfile{#1}}}
+
+%% \pxcz@check@extra
+% Executed at the begin-document hook.
+\@onlypreamble\pxcz@check@extra
+\let\pxcz@check@extra\@empty
+
+%--------------------------------------- map entry handling
+
+%%<*> \setnewglyphcmapprefix{<str>}
+\def\pxcz@pfx@jis@dflt{2004-}
+\def\pxcz@pfx@jis@star{JISX0213-2004-}
+\@onlypreamble\setnewglyphcmapprefix
+\newcommand*\setnewglyphcmapprefix{%
+ \@ifstar{\pxcz@set@pfx@jis\pxcz@pfx@jis@star}%
+ {\pxcz@set@pfx@jis}}
+\def\pxcz@set@pfx@jis#1{%
+ \edef\pxcz@pfx@jis{#1}}
+\setnewglyphcmapprefix{\pxcz@pfx@jis@dflt}
+
+%% variables
+\let\pxcz@sym\relax
+\let\pxcz@cmap\relax
+\let\pxcz@font\relax
+\let\pxcz@csi\relax
+\newif\ifpxcz@vert
+\newif\ifpxcz@retain
+\newif\ifpxcz@retain@csi
+\let\pxcz@lopts\relax
+\let\pxcz@mopts\relax
+\let\pxcz@font@tribe\relax
+\newif\ifpxcz@noembed@used
+
+%% \pxcz@@jpXX
+\edef\pxcz@@jpXX{%
+ \ifpxcz@mmivjis jp04\else jp90\fi}
+%% \pxcz@add@lopt
+\pxcz@onlypreamble@def\pxcz@add@lopt#1{%
+ \edef\pxcz@lopts{%
+ \ifx\pxcz@lopts\@empty\else \pxcz@lopts:\fi#1}}
+%% \pxcz@uniquify@lopts
+\pxcz@onlypreamble@def\pxcz@uniquify@lopts#1#2{%
+ \pxcz@oktrue
+ \def\pxcz@tmpb{jp90}\ifx\pxcz@tmpb\pxcz@lopts\pxcz@okfalse\fi
+ \def\pxcz@tmpb{jp04}\ifx\pxcz@tmpb\pxcz@lopts\pxcz@okfalse\fi
+ \ifx\@empty\pxcz@lopts\if t#1\pxcz@okfalse\fi\fi
+ \ifpxcz@ok
+ \edef\pxcz@lopts{#2}%
+ \fi}
+
+%% \pxcz@is@jis@cmap
+\pxcz@onlypreamble@def\pxcz@is@jis@cmap{%
+ \pxcz@okfalse
+ \expandafter\pxcz@is@jis@cmap@a\pxcz@cmap\pxcz@end}
+\pxcz@onlypreamble@def\pxcz@is@jis@cmap@a#1#2\pxcz@end{%
+ \ifx\pxcz@mt#2\pxcz@mt \pxcz@oktrue \fi}
+
+%% \pxcz@force@mmiv@cmap
+\pxcz@onlypreamble@def\pxcz@force@mmiv@cmap{%
+ \pxcz@is@jis@cmap \ifpxcz@ok
+ \edef\pxcz@cmap{\pxcz@pfx@jis\pxcz@cmap}%
+ \else
+ \pxcz@split{UniJIS-}\pxcz@cmap
+ \ifx\pxcz@pre\relax\else
+ \edef\pxcz@cmap{UniJIS2004-\pxcz@post}%
+ \fi
+ \fi}
+
+%% \pxcz@inspect@font@tribe
+\pxcz@onlypreamble@def\pxcz@inspect@font@tribe{%
+ \let\pxcz@font@tribe\@empty
+ \ifx\pxcz@font\@empty
+ \else\ifx\pxcz@font\pxcz@noembed
+ \else
+ \pxcz@inspect@font@tribe@a{?SourceHanSerif-}{.otf?}{sourcehan}%
+ \pxcz@inspect@font@tribe@a{?SourceHanSans-}{.otf?}{sourcehan}%
+ \pxcz@inspect@font@tribe@a{?:0:SourceHanSerif-}{.ttc?}{sourcehanC}%
+ \pxcz@inspect@font@tribe@a{?:0:SourceHanSans-}{.ttc?}{sourcehanC}%
+ \pxcz@inspect@font@tribe@a{?NotoSerifCJKjp-}{.otf?}{noto}%
+ \pxcz@inspect@font@tribe@a{?NotoSansCJKjp-}{.otf?}{noto}%
+ \pxcz@inspect@font@tribe@a{?:0:NotoSerifCJK-}{.ttc?}{notoC}%
+ \pxcz@inspect@font@tribe@a{?:0:NotoSansCJK-}{.ttc?}{notoC}%
+ \pxcz@inspect@font@tribe@a{?yumin}{.ttf?}{yumin}%
+ \pxcz@inspect@font@tribe@a{?YUMIN}{.TTF?}{yuminU}%
+ \pxcz@inspect@font@tribe@a{:YuGoth}{.ttc?}{yugoth}%
+ \pxcz@inspect@font@tribe@a{:YUGOTH}{.TTC?}{yugoth}%
+ \pxcz@inspect@font@tribe@a{:moga}{.ttc?}{mogamobo}%
+ \pxcz@inspect@font@tribe@a{:mobo}{.ttc?}{mogamobo}%
+ \fi\fi
+ \ifx\pxcz@font@tribe\@empty\else
+ \PackageInfo\pxcz@pkgname
+ {Font tribe is '\pxcz@font@tribe':\MessageBreak
+ \@spaces\pxcz@font\@gobble}%
+ \fi}
+\pxcz@onlypreamble@def\pxcz@inspect@font@tribe@a#1#2#3{%
+ \pxcz@split{#1}{?\pxcz@font}%
+ \ifx\pxcz@pre\relax\else
+ \pxcz@split{#2}{\pxcz@font?}%
+ \ifx\pxcz@pre\relax\else
+ \def\pxcz@font@tribe{#3}%
+ \fi
+ \fi}
+
+%% \pxcz@switch@font@for{<feature>}
+% Modifies \pxcz@font, assuming \pxcz@font@tribe is properly set.
+\pxcz@onlypreamble@def\pxcz@switch@font@for#1{%
+ \pxcz@csletcs{pxcz@tmpb}{pxcz@switch@font@@\pxcz@font@tribe @#1}%
+ \ifx\pxcz@tmpb\relax\else
+%\typeout{#1:\pxcz@font-->\expandafter\pxcz@tmpb\pxcz@font}%
+ \edef\pxcz@font{\expandafter\pxcz@tmpb\pxcz@font}%
+ \fi}
+% entries
+\ifpxcz@switch@font@xwid
+ \def\pxcz@switch@font@@sourcehanC@fwid#1:0:{:2:}
+ \def\pxcz@switch@font@@sourcehanC@hwid#1:0:{:1:}
+ \def\pxcz@switch@font@@sourcehan@fwid#1-{#1SC-}
+ \def\pxcz@switch@font@@sourcehan@hwid#1-{#1K-}
+ \def\pxcz@switch@font@@notoC@fwid#1:0:{:2:}
+ \def\pxcz@switch@font@@notoC@hwid#1:0:{:1:}
+ \def\pxcz@switch@font@@noto@fwid#1jp{#1sc}
+ \def\pxcz@switch@font@@noto@hwid#1jp{#1kr}
+ \def\pxcz@switch@font@@yugoth@fwid#1:0:{:1:}
+ \def\pxcz@switch@font@@yumin@fwid#1.ttf{%
+ \@nameuse{pxcz@SFYM/#1.ttf}}
+ \def\pxcz@switch@font@@yuminU@fwid#1.TTF{%
+ \@nameuse{pxcz@SFYM/#1.TTF}}
+ \def\pxcz@do#1{\@namedef{pxcz@SFYM/#1}}
+ \pxcz@do{yuminl.ttf}{:1:YuGothL.ttc}
+ \pxcz@do{yumin.ttf}{:1:YuGothR.ttc}
+ \pxcz@do{yumindb.ttf}{:1:YuGothM.ttc}
+ \pxcz@do{YUMINL.TTF}{:1:YUGOTHL.TTC}
+ \pxcz@do{YUMIN.TTF}{:1:YUGOTHR.TTC}
+ \pxcz@do{YUMINDB.TTF}{:1:YUGOTHM.TTC}
+\fi
+\ifpxcz@switch@font@xjis
+ \@namedef{pxcz@switch@font@@mogamobo@jp90}#1.ttc{%
+ \pxcz@csuse@or{pxcz@SFMG/#1.ttc}{#1.ttc}}
+ \def\pxcz@do#1#2#3{\@namedef{pxcz@SFMG/:#1:#3}{:#2:#3}}
+ \pxcz@do{0}{3}{mogam.ttc}
+ \pxcz@do{1}{4}{mogam.ttc}
+ \pxcz@do{0}{3}{mogamb.ttc}
+ \pxcz@do{1}{4}{mogamb.ttc}
+ \pxcz@do{0}{2}{mogag.ttc}
+ \pxcz@do{1}{3}{mogag.ttc}
+ \pxcz@do{0}{2}{mogagb.ttc}
+ \pxcz@do{1}{3}{mogagb.ttc}
+ \pxcz@do{0}{2}{mobog.ttc}
+ \pxcz@do{1}{3}{mobog.ttc}
+ \pxcz@do{0}{2}{mobogb.ttc}
+ \pxcz@do{1}{3}{mobogb.ttc}
+\fi
+
+%% \pxcz@declare@entry@modifier{<name>}
+\pxcz@onlypreamble@def\pxcz@declare@entry@modifier#1{%
+ \pxcz@onlypreamble@csdef{pxcz@MEM/#1}}
+
+%% entry modifiers
+% Uni: Changes cmap to 'unicode' if directunicode.
+\pxcz@declare@entry@modifier{Uni}{%
+ \ifnum\pxcz@directunicode<\pxcz@directunicode@otf\else
+ \ifx\pxcz@font\pxcz@noembed\else
+ \let\pxcz@cmap\pxcz@cmap@directuni
+ \fi
+ \fi}
+% Uni*: Changes cmap to 'unicode' if directunicode*.
+\pxcz@declare@entry@modifier{Uni*}{%
+ \ifnum\pxcz@directunicode<\pxcz@directunicode@all\else
+ \ifx\pxcz@font\pxcz@noembed\else
+ \let\pxcz@cmap\pxcz@cmap@directuni
+ \fi
+ \fi}
+% Switch: Selects 90 or 04 (according to mmivjis)
+\pxcz@declare@entry@modifier{Switch}{%
+ \ifpxcz@mmivjis
+ \pxcz@force@mmiv@cmap
+ \else
+ \pxcz@switch@font@for{jp90}%
+ \fi
+ \pxcz@add@lopt{\pxcz@@jpXX}}
+% 04
+\pxcz@declare@entry@modifier{04}{%
+ \pxcz@add@lopt{jp04}}
+% 90
+\pxcz@declare@entry@modifier{90}{%
+ \pxcz@switch@font@for{jp90}%
+ \pxcz@add@lopt{jp90}}
+% HWid
+\pxcz@declare@entry@modifier{HWid}{%
+ \ifx\pxcz@font\pxcz@noembed \pxcz@okfalse
+ \else\ifnum\pxcz@directunicode=\pxcz@directunicode@full \pxcz@oktrue
+ \else\ifpxcz@cmap@alpha \pxcz@okfalse
+ \else \pxcz@oktrue
+ \fi\fi\fi
+ \ifpxcz@ok
+ \let\pxcz@cmap\pxcz@cmap@directuni
+ \pxcz@switch@font@for{hwid}%
+ \else \let\pxcz@cmap\pxcz@cmap@hwuni
+ \fi
+ \pxcz@add@lopt{hwid}}
+% FWid
+\pxcz@declare@entry@modifier{FWid}{%
+ \pxcz@switch@font@for{fwid}%
+ \pxcz@add@lopt{fwid}}
+% AJ16/AK12/AG14/AC14
+\pxcz@declare@entry@modifier{AJ16}{\def\pxcz@csi{AJ16}}
+\pxcz@declare@entry@modifier{AK12}{\def\pxcz@csi{AK12}\pxcz@retaintrue}
+\pxcz@declare@entry@modifier{AG14}{\def\pxcz@csi{AG14}\pxcz@retaintrue}
+\pxcz@declare@entry@modifier{AC14}{\def\pxcz@csi{AC14}\pxcz@retaintrue}
+% V: Adds '-w 1' if cmap is 'unicode'.
+\pxcz@declare@entry@modifier{V}{%
+ \pxcz@verttrue
+ \ifx\pxcz@cmap\pxcz@cmap@directuni
+ \edef\pxcz@mopts{ -w 1\pxcz@mopts}%
+ \fi}
+% Exp: Adds 'hkna/vkna' if cmap is 'unicode'.
+\pxcz@declare@entry@modifier{Exp}{%
+ \if t\pxcz@expert \ifx\pxcz@cmap\pxcz@cmap@directuni
+ \ifpxcz@vert \pxcz@add@lopt{vkna}%
+ \else \pxcz@add@lopt{hkna}%
+ \fi
+ \fi\fi}
+% Ruby
+\pxcz@declare@entry@modifier{Ruby}{%
+ \if t\pxcz@expert
+ \let\pxcz@cmap\pxcz@cmap@directuni
+ \pxcz@add@lopt{ruby}%
+ \fi}
+% I
+\pxcz@declare@entry@modifier{I}{%
+ \def\pxcz@csi{I}%
+ \pxcz@retaintrue \pxcz@retain@csitrue}
+% Fin: final step
+\pxcz@declare@entry@modifier{Fin}{%
+ \ifx\pxcz@csi\relax\else
+ \ifpxcz@retain@csi
+ \edef\pxcz@mopts{/\pxcz@csi}%
+ \else\expandafter\ifx\csname pxcz@OT/\pxcz@sym\endcsname\relax
+ \edef\pxcz@mopts{/\pxcz@csi}%
+ \else % omit CSI part for CFF fonts
+ \let\pxcz@mopts\@empty
+ \fi\fi
+ \fi}
+
+%% \pxcz@spec
+\let\pxcz@spec\@empty
+
+%% \pxcz@addtospec{<id>}
+\pxcz@onlypreamble@def\pxcz@addtospec#1{%
+ \begingroup
+ \let\Entry\pxcz@Entry
+ \@nameuse{pxcz@ME/#1}%
+ \endgroup}
+%% \Entry{<sym>}{<tfm>}{<cmap>}{<modify>,...}
+\pxcz@onlypreamble@def\pxcz@Entry#1#2#3#4{%
+ \def\pxcz@sym{#1}\def\pxcz@cmap{#3}%
+ \let\pxcz@csi\relax \let\pxcz@mopts\@empty \let\pxcz@lopts\@empty
+ \pxcz@retainfalse \pxcz@retain@csifalse \pxcz@vertfalse
+ \edef\pxcz@font{\@nameuse{pxcz@FS/\pxcz@sym}}%
+ \pxcz@inspect@font@tribe
+ % apply modifiers
+ \@for\pxcz@tmpx:=#4,Fin\do{%
+ \ifx\pxcz@font\@empty\else
+ \@nameuse{pxcz@MEM/\pxcz@tmpx}%
+ \fi}%
+ % resolve no-embed font spec
+ \ifx\pxcz@font\pxcz@noembed
+ \edef\pxcz@font{!\@nameuse{pxcz@NEF/\pxcz@sym}}%
+ \pxcz@retaintrue
+ \global\pxcz@noembed@usedtrue
+ \fi
+ % apply layout options when using 'unicode'
+ \ifnum\pxcz@directunicode<\pxcz@directunicode@full\else
+ \ifx\pxcz@cmap\pxcz@cmap@directuni
+ \ifpxcz@uniquify
+ \pxcz@uniquify@lopts{t}{\pxcz@@jpXX}%
+ \ifpxcz@fullwidth
+ \pxcz@add@lopt{fwid}%
+ \fi
+ \else
+ \ifpxcz@fullwidth
+ \pxcz@split{wid}\pxcz@lopts\ifx\pxcz@pre\relax
+ \pxcz@add@lopt{fwid}%
+ \fi
+ \fi
+ \fi
+ \ifx\pxcz@lopts\@empty\else
+ \edef\pxcz@mopts{\pxcz@mopts\space -l \pxcz@lopts}%
+ \fi
+ \fi
+ \fi
+ % suppress legacy-code mappings unless 'apply-legacycode'
+ \ifx\pxcz@cmap\pxcz@cmap@directuni\else \ifpxcz@retain\else
+ \ifnum\pxcz@legacycode=\pxcz@legacycode@apply % no-op
+ \else\ifnum\pxcz@legacycode=\pxcz@legacycode@ignore
+ \let\pxcz@font\@empty % skip
+ \else\ifx\pxcz@font\@empty\else
+ \let\pxcz@font\pxcz@kill@mapping % kill
+ \fi\fi\fi
+ \fi\fi
+ % output it
+ \ifx\pxcz@font\pxcz@kill@mapping
+ \xdef\pxcz@spec{\pxcz@spec\noexpand\special{%
+ \pxcz@mapline{-#2}}}%
+ \else\ifx\pxcz@font\@empty\else
+ \xdef\pxcz@spec{\pxcz@spec\noexpand\special{%
+ \pxcz@mapline{#2 \pxcz@cmap\space\pxcz@font\pxcz@mopts}}}%
+ \fi\fi}
+
+%% \pxcz@do@file@preset
+\pxcz@onlypreamble@def\pxcz@do@file@preset{%
+ \ifpxcz@file@preset@tl
+ \pxcz@do@file@preset@a{ptex-}%
+ \ifpxcz@uptex \pxcz@do@file@preset@a{uptex-}\fi
+ \ifpxcz@otf
+ \pxcz@do@file@preset@a{otf-}%
+ \ifpxcz@uptex \pxcz@do@file@preset@a{otf-up-}\fi
+ \fi
+ \else
+ \pxcz@do@file@preset@a{}%
+ \fi}
+\pxcz@onlypreamble@def\pxcz@do@file@preset@a#1{%
+ \pxcz@addtospec@alt\pxcz@mapfile{#1\pxcz@file@preset.map}}
+
+%% \pxcz@addtospec@alt
+\def\pxcz@addtospec@alt#1#2{%
+ \xdef\pxcz@spec{\pxcz@spec\noexpand\special{#1{#2}}}}
+\def\pxcz@mapfile#1{pdf:mapfile #1}
+\def\pxcz@mapline#1{pdf:mapline #1}
+
+%--------------------------------------- map entry definitions
+
+%% \pxcz@mapentry{<id>}{<text>}
+\pxcz@onlypreamble@def\pxcz@mapentry#1{%
+ \pxcz@onlypreamble@csdef{pxcz@ME/#1}}
+
+%% map entries
+\pxcz@mapentry{STD}{%
+\Entry{mnr}{rml} {H} {Switch}%
+\Entry{mnr}{rmlv} {V} {Switch,V}%
+\Entry{gtu}{gbm} {H} {Switch}%
+\Entry{gtu}{gbmv} {V} {Switch,V}%
+}
+\pxcz@mapentry{ALPHA}{%
+\Entry{mnl}{r-cfjar-l-@PXcjk0@}{unicode} {HWid}%
+\Entry{mnl}{r-cfjar-lz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}%
+\Entry{mnr}{r-cfjar-r-@PXcjk0@}{unicode} {HWid}%
+\Entry{mnr}{r-cfjar-rz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}%
+\Entry{mnb}{r-cfjar-b-@PXcjk0@}{unicode} {HWid}%
+\Entry{mnb}{r-cfjar-bz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}%
+\Entry{gtr}{r-cfjas-r-@PXcjk0@}{unicode} {HWid}%
+\Entry{gtr}{r-cfjas-rz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}%
+\Entry{gtb}{r-cfjas-b-@PXcjk0@}{unicode} {HWid}%
+\Entry{gtb}{r-cfjas-bz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}%
+\Entry{gtx}{r-cfjas-x-@PXcjk0@}{unicode} {HWid}%
+\Entry{gtx}{r-cfjas-xz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}%
+\Entry{mgr}{r-cfjam-r-@PXcjk0@}{unicode} {HWid}%
+\Entry{mgr}{r-cfjam-rz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}%
+}
+\pxcz@mapentry{UTF}{%
+\Entry{mnr}{unijmin-h} {UniJIS-UTF16-H} {Uni*,Switch}%
+\Entry{mnr}{unijmin-v} {UniJIS-UTF16-V} {Uni*,Switch,V}%
+\Entry{mnr}{cidmin-h} {Identity-H} {AJ16}%
+\Entry{mnr}{cidmin-v} {Identity-V} {AJ16,V}%
+\Entry{mnr}{hmr} {H} {Switch}%
+\Entry{mnr}{hmrv} {V} {Switch,V}%
+\Entry{gtu}{unijgoth-h} {UniJIS-UTF16-H} {Uni*,Switch}%
+\Entry{gtu}{unijgoth-v} {UniJIS-UTF16-V} {Uni*,Switch,V}%
+\Entry{gtu}{cidgoth-h} {Identity-H} {AJ16}%
+\Entry{gtu}{cidgoth-v} {Identity-V} {AJ16,V}%
+\Entry{gtu}{hkb} {H} {Switch}%
+\Entry{gtu}{hkbv} {V} {Switch,V}%
+}
+\pxcz@mapentry{OTF}{%
+\Entry{mnl}{otf-ujml-h} {UniJIS-UTF16-H} {Uni,90,FWid}%
+\Entry{mnl}{otf-ujml-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}%
+\Entry{mnl}{otf-cjml-h} {Identity-H} {AJ16}%
+\Entry{mnl}{otf-cjml-v} {Identity-V} {AJ16,V}%
+\Entry{mnl}{hminl-h} {H} {90}%
+\Entry{mnl}{hminl-v} {V} {90,V}%
+\Entry{mnl}{otf-ujmln-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}%
+\Entry{mnl}{otf-ujmln-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}%
+\Entry{mnl}{hminln-h} {H} {}%
+\Entry{mnl}{hminln-v} {V} {V}%
+\Entry{mnr}{otf-ujmr-h} {UniJIS-UTF16-H} {Uni,90,FWid}%
+\Entry{mnr}{otf-ujmr-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}%
+\Entry{mnr}{otf-cjmr-h} {Identity-H} {AJ16}%
+\Entry{mnr}{otf-cjmr-v} {Identity-V} {AJ16,V}%
+\Entry{mnr}{hminr-h} {H} {90}%
+\Entry{mnr}{hminr-v} {V} {90,V}%
+\Entry{mnr}{otf-ujmrn-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}%
+\Entry{mnr}{otf-ujmrn-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}%
+\Entry{mnr}{hminrn-h} {H} {}%
+\Entry{mnr}{hminrn-v} {V} {V}%
+\Entry{mnb}{otf-ujmb-h} {UniJIS-UTF16-H} {Uni,90,FWid}%
+\Entry{mnb}{otf-ujmb-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}%
+\Entry{mnb}{otf-cjmb-h} {Identity-H} {AJ16}%
+\Entry{mnb}{otf-cjmb-v} {Identity-V} {AJ16,V}%
+\Entry{mnb}{hminb-h} {H} {90}%
+\Entry{mnb}{hminb-v} {V} {90,V}%
+\Entry{mnb}{otf-ujmbn-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}%
+\Entry{mnb}{otf-ujmbn-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}%
+\Entry{mnb}{hminbn-h} {H} {}%
+\Entry{mnb}{hminbn-v} {V} {V}%
+\Entry{gtr}{otf-ujgr-h} {UniJIS-UTF16-H} {Uni,90,FWid}%
+\Entry{gtr}{otf-ujgr-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}%
+\Entry{gtr}{otf-cjgr-h} {Identity-H} {AJ16}%
+\Entry{gtr}{otf-cjgr-v} {Identity-V} {AJ16,V}%
+\Entry{gtr}{hgothr-h} {H} {90}%
+\Entry{gtr}{hgothr-v} {V} {90,V}%
+\Entry{gtr}{otf-ujgrn-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}%
+\Entry{gtr}{otf-ujgrn-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}%
+\Entry{gtr}{hgothrn-h} {H} {}%
+\Entry{gtr}{hgothrn-v} {V} {V}%
+\Entry{gtb}{otf-ujgb-h} {UniJIS-UTF16-H} {Uni,90,FWid}%
+\Entry{gtb}{otf-ujgb-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}%
+\Entry{gtb}{otf-cjgb-h} {Identity-H} {AJ16}%
+\Entry{gtb}{otf-cjgb-v} {Identity-V} {AJ16,V}%
+\Entry{gtb}{hgothb-h} {H} {90}%
+\Entry{gtb}{hgothb-v} {V} {90,V}%
+\Entry{gtb}{otf-ujgbn-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}%
+\Entry{gtb}{otf-ujgbn-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}%
+\Entry{gtb}{hgothbn-h} {H} {}%
+\Entry{gtb}{hgothbn-v} {V} {V}%
+\Entry{gtx}{otf-ujge-h} {UniJIS-UTF16-H} {Uni,90,FWid}%
+\Entry{gtx}{otf-ujge-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}%
+\Entry{gtx}{otf-cjge-h} {Identity-H} {AJ16}%
+\Entry{gtx}{otf-cjge-v} {Identity-V} {AJ16,V}%
+\Entry{gtx}{hgotheb-h} {H} {90}%
+\Entry{gtx}{hgotheb-v} {V} {90,V}%
+\Entry{gtx}{otf-ujgen-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}%
+\Entry{gtx}{otf-ujgen-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}%
+\Entry{gtx}{hgothebn-h} {H} {}%
+\Entry{gtx}{hgothebn-v} {V} {V}%
+\Entry{mgr}{otf-ujmgr-h} {UniJIS-UTF16-H} {Uni,90,FWid}%
+\Entry{mgr}{otf-ujmgr-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}%
+\Entry{mgr}{otf-cjmgr-h} {Identity-H} {AJ16}%
+\Entry{mgr}{otf-cjmgr-v} {Identity-V} {AJ16,V}%
+\Entry{mgr}{hmgothr-h} {H} {90}%
+\Entry{mgr}{hmgothr-v} {V} {90,V}%
+\Entry{mgr}{otf-ujmgrn-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}%
+\Entry{mgr}{otf-ujmgrn-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}%
+\Entry{mgr}{hmgothrn-h} {H} {}%
+\Entry{mgr}{hmgothrn-v} {V} {V}%
+%
+\ifpxcz@otf@multi
+\Entry{kom}{otf-ukmr-h} {UniKS-UTF16-H} {Uni,FWid}%
+\Entry{kom}{otf-ukmr-v} {UniKS-UTF16-V} {Uni,FWid,V}%
+\Entry{kom}{otf-ckmr-h} {Identity-H} {AK12}%
+\Entry{kom}{otf-ckmr-v} {Identity-V} {AK12,V}%
+\Entry{kog}{otf-ukgr-h} {UniKS-UTF16-H} {Uni,FWid}%
+\Entry{kog}{otf-ukgr-v} {UniKS-UTF16-V} {Uni,FWid,V}%
+\Entry{kog}{otf-ckgr-h} {Identity-H} {AK12}%
+\Entry{kog}{otf-ckgr-v} {Identity-V} {AK12,V}%
+\Entry{scm}{otf-ucmr-h} {UniGB-UTF16-H} {Uni,FWid}%
+\Entry{scm}{otf-ucmr-v} {UniGB-UTF16-V} {Uni,FWid,V}%
+\Entry{scm}{otf-ccmr-h} {Identity-H} {AG14}%
+\Entry{scm}{otf-ccmr-v} {Identity-V} {AG14,V}%
+\Entry{scg}{otf-ucgr-h} {UniGB-UTF16-H} {Uni,FWid}%
+\Entry{scg}{otf-ucgr-v} {UniGB-UTF16-V} {Uni,FWid,V}%
+\Entry{scg}{otf-ccgr-h} {Identity-H} {AG14}%
+\Entry{scg}{otf-ccgr-v} {Identity-V} {AG14,V}%
+\Entry{tcm}{otf-utmr-h} {UniCNS-UTF16-H} {Uni,FWid}%
+\Entry{tcm}{otf-utmr-v} {UniCNS-UTF16-V} {Uni,FWid,V}%
+\Entry{tcm}{otf-ctmr-h} {Identity-H} {AC14}%
+\Entry{tcm}{otf-ctmr-v} {Identity-V} {AC14,V}%
+\Entry{tcg}{otf-utgr-h} {UniCNS-UTF16-H} {Uni,FWid}%
+\Entry{tcg}{otf-utgr-v} {UniCNS-UTF16-V} {Uni,FWid,V}%
+\Entry{tcg}{otf-ctgr-h} {Identity-H} {AC14}%
+\Entry{tcg}{otf-ctgr-v} {Identity-V} {AC14,V}%
+\fi
+}
+\pxcz@mapentry{UPSTD}{%
+\Entry{mnr}{uprml-h} {UniJIS-UTF16-H} {Uni*,Switch}%
+\Entry{mnr}{uprml-v} {UniJIS-UTF16-V} {Uni*,Switch,V}%
+\Entry{mnr}{uprml-hq} {UniJIS-UCS2-H} {Uni*,FWid}%
+\Entry{gtu}{upgbm-h} {UniJIS-UTF16-H} {Uni*,Switch}%
+\Entry{gtu}{upgbm-v} {UniJIS-UTF16-V} {Uni*,Switch,V}%
+\Entry{gtu}{upgbm-hq} {UniJIS-UCS2-H} {Uni*,FWid}%
+\Entry{mnr}{urml} {UniJIS-UTF16-H} {Uni*,Switch}%
+\Entry{mnr}{urmlv} {UniJIS-UTF16-V} {Uni*,Switch,V}%
+\Entry{gtu}{ugbm} {UniJIS-UTF16-H} {Uni*,Switch}%
+\Entry{gtu}{ugbmv} {UniJIS-UTF16-V} {Uni*,Switch,V}%
+%
+\Entry{kom}{uphysmjm-h} {UniKS-UTF16-H} {Uni*}%
+\Entry{kom}{uphysmjm-v} {UniKS-UTF16-V} {Uni*,V}%
+\Entry{kog}{uphygt-h} {UniKS-UTF16-H} {Uni*}%
+\Entry{kog}{uphygt-v} {UniKS-UTF16-V} {Uni*,V}%
+\Entry{scm}{upstsl-h} {UniGB-UTF16-H} {Uni*}%
+\Entry{scm}{upstsl-v} {UniGB-UTF16-V} {Uni*,V}%
+\Entry{scg}{upstht-h} {UniGB-UTF16-H} {Uni*}%
+\Entry{scg}{upstht-v} {UniGB-UTF16-V} {Uni*,V}%
+\Entry{tcm}{upmsl-h} {UniCNS-UTF16-H} {Uni*}%
+\Entry{tcm}{upmsl-v} {UniCNS-UTF16-V} {Uni*,V}%
+\Entry{tcg}{upmhm-h} {UniCNS-UTF16-H} {Uni*}%
+\Entry{tcg}{upmhm-v} {UniCNS-UTF16-V} {Uni*,V}%
+}
+\pxcz@mapentry{UPOTF}{%
+\Entry{mnl}{uphminl-h} {UniJIS-UTF16-H} {Uni*,90,Exp}%
+\Entry{mnl}{uphminl-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}%
+\Entry{mnl}{uphminln-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}%
+\Entry{mnl}{uphminln-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}%
+\Entry{mnr}{uphminr-h} {UniJIS-UTF16-H} {Uni*,90,Exp}%
+\Entry{mnr}{uphminr-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}%
+\Entry{mnr}{uphminrn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}%
+\Entry{mnr}{uphminrn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}%
+\Entry{mnb}{uphminb-h} {UniJIS-UTF16-H} {Uni*,90,Exp}%
+\Entry{mnb}{uphminb-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}%
+\Entry{mnb}{uphminbn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}%
+\Entry{mnb}{uphminbn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}%
+\Entry{gtr}{uphgothr-h} {UniJIS-UTF16-H} {Uni*,90,Exp}%
+\Entry{gtr}{uphgothr-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}%
+\Entry{gtr}{uphgothrn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}%
+\Entry{gtr}{uphgothrn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}%
+\Entry{gtb}{uphgothb-h} {UniJIS-UTF16-H} {Uni*,90,Exp}%
+\Entry{gtb}{uphgothb-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}%
+\Entry{gtb}{uphgothbn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}%
+\Entry{gtb}{uphgothbn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}%
+\Entry{gtx}{uphgotheb-h} {UniJIS-UTF16-H} {Uni*,90,Exp}%
+\Entry{gtx}{uphgotheb-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}%
+\Entry{gtx}{uphgothebn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}%
+\Entry{gtx}{uphgothebn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}%
+\Entry{mgr}{uphmgothr-h} {UniJIS-UTF16-H} {Uni*,90,Exp}%
+\Entry{mgr}{uphmgothr-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}%
+\Entry{mgr}{uphmgothrn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}%
+\Entry{mgr}{uphmgothrn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}%
+}
+\pxcz@mapentry{GID}{%
+\Entry{mnl}{zur-gjml-h} {Identity-H} {I}%
+\Entry{mnl}{zur-gjml-v} {Identity-V} {I,V}%
+\Entry{mnr}{zur-gjmr-h} {Identity-H} {I}%
+\Entry{mnr}{zur-gjmr-v} {Identity-V} {I,V}%
+\Entry{mnb}{zur-gjmb-h} {Identity-H} {I}%
+\Entry{mnb}{zur-gjmb-v} {Identity-V} {I,V}%
+\Entry{gtr}{zur-gjgr-h} {Identity-H} {I}%
+\Entry{gtr}{zur-gjgr-v} {Identity-V} {I,V}%
+\Entry{gtb}{zur-gjgb-h} {Identity-H} {I}%
+\Entry{gtb}{zur-gjgb-v} {Identity-V} {I,V}%
+\Entry{gtx}{zur-gjge-h} {Identity-H} {I}%
+\Entry{gtx}{zur-gjge-v} {Identity-V} {I,V}%
+\Entry{mgr}{zur-gjmgr-h} {Identity-H} {I}%
+\Entry{mgr}{zur-gjmgr-v} {Identity-V} {I,V}%
+}
+\pxcz@mapentry{EXPERT}{%
+\Entry{mnl}{zur-rjml-h} {unicode} {Ruby}%
+\Entry{mnl}{zur-rjml-v} {unicode} {V,Ruby}%
+\Entry{mnr}{zur-rjmr-h} {unicode} {Ruby}%
+\Entry{mnr}{zur-rjmr-v} {unicode} {V,Ruby}%
+\Entry{mnb}{zur-rjmb-h} {unicode} {Ruby}%
+\Entry{mnb}{zur-rjmb-v} {unicode} {V,Ruby}%
+\Entry{gtr}{zur-rjgr-h} {unicode} {Ruby}%
+\Entry{gtr}{zur-rjgr-v} {unicode} {V,Ruby}%
+\Entry{gtb}{zur-rjgb-h} {unicode} {Ruby}%
+\Entry{gtb}{zur-rjgb-v} {unicode} {V,Ruby}%
+\Entry{gtx}{zur-rjge-h} {unicode} {Ruby}%
+\Entry{gtx}{zur-rjge-v} {unicode} {V,Ruby}%
+\Entry{mgr}{zur-rjmgr-h} {unicode} {Ruby}%
+\Entry{mgr}{zur-rjmgr-v} {unicode} {V,Ruby}%
+}
+\pxcz@mapentry{PXOTF}{%
+}
+
+% user-defined map
+\pxcz@mapentry{USR}{%
+ \pxcz@user@map
+}
+
+%--------------------------------------- '\diruni'
+
+%% variables
+\newif\ifpxcz@diruni@ok
+\let\pxcz@otf@weight\relax
+
+%% check if \diruni is available
+\ifpxcz@uptex
+ \@ifpackageloaded{otf}{% directunicode needs otf
+ \ifnum\pxcz@directunicode>\z@ \pxcz@diruni@oktrue \fi
+ }{%else
+ \ifnum\pxcz@directunicode<\pxcz@directunicode@all\else
+ \pxcz@diruni@oktrue % directunicode* does not need otf
+ \AtBeginDocument{% to laod otf later causes inconsistency
+ \@ifpackageloaded{otf}{\pxcz@diruni@okfalse}{}}%
+ \fi
+ }
+\fi
+
+%%<*> \diruni
+\DeclareRobustCommand*{\diruni}{%
+ \not@math@alphabet\diruni\relax
+ \fontshape{diruni}\selectfont
+}
+
+%%<*> \textdiruni{<text>}
+\newcommand*{\textdiruni}[1]{%
+ \relax\ifmmode\hbox\fi{\diruni#1}%
+}
+
+\ifpxcz@diruni@ok %---- <*diruni-ok>
+
+%% \pxcz@otf@weight: otf weight mode
+% watch out for priority...
+\@ifpackagewith{otf}{deluxe}{%
+ \let\pxcz@otf@weight=d
+}{\@ifpackagewith{otf}{bold}{%
+ \let\pxcz@otf@weight=b
+}{\@ifpackagewith{otf}{expert}{%
+ \let\pxcz@otf@weight=r % 'expert' cancels 'noreplace'
+}{\@ifpackagewith{otf}{noreplace}{%
+ \let\pxcz@otf@weight=n
+}{\@ifpackageloaded{otf}{%
+ \let\pxcz@otf@weight=r
+}{%else
+ \let\pxcz@otf@weight=n
+}}}}}
+%% \pxcz@otf@mmivjis: otf jis2004
+\@ifpackagewith{otf}{jis2004}{%
+ \let\pxcz@otf@mmivjis=t%
+}{%else
+ \let\pxcz@otf@mmivjis=f%
+}
+%% \pxcz@du@scale
+\let\pxcz@du@scale\utf@sc@le
+\ifx\pxcz@du@scale\@undefined
+ \let\pxcz@du@scale\Cjascale
+\fi
+\ifx\pxcz@du@scale\@undefined
+ \edef\pxcz@du@scale{\ifx\jsc@JYn\@undefined 0.962216\else 0.924715\fi}%
+\fi
+
+%% \pxcz@du@decl@shape{<fam>}{<ser>}<sw>{<tfmname>}{<suffix>}
+\pxcz@onlypreamble@def\pxcz@du@decl@shape#1#2#3#4#5{%
+\DeclareFontShape{JY2}{#1}{#2}{diruni}{<->%
+ \pxcz@du@shape@spec{#3}{#4}{#5}{h}}{}%
+\DeclareFontShape{JT2}{#1}{#2}{diruni}{<->%
+ \pxcz@du@shape@spec{#3}{#4}{#5}{v}}{}}
+\pxcz@onlypreamble@def\pxcz@du@shape@spec#1#2#3#4{%
+ \if#1t%
+ s*[\pxcz@du@scale]#2\if t\pxcz@otf@mmivjis#3\fi-#4%
+ \else#2\fi}
+
+\if d\pxcz@otf@weight % deluxe
+\pxcz@du@decl@shape{hmc}{l}t{otf-ujml}{n}%
+\pxcz@du@decl@shape{hmc}{m}t{otf-ujmr}{n}%
+\pxcz@du@decl@shape{hmc}{bx}t{otf-ujmb}{n}%
+\pxcz@du@decl@shape{hgt}{m}t{otf-ujgr}{n}%
+\pxcz@du@decl@shape{hgt}{bx}t{otf-ujgb}{n}%
+\pxcz@du@decl@shape{hgt}{eb}t{otf-ujge}{n}%
+\pxcz@du@decl@shape{mg}{m}t{otf-ujmgr}{n}%
+\else\if b\pxcz@otf@weight % bold
+\pxcz@du@decl@shape{hmc}{m}t{otf-ujmr}{n}%
+\pxcz@du@decl@shape{hmc}{bx}f{ssub*hgt/m/diruni}{}%
+\pxcz@du@decl@shape{hgt}{m}t{otf-ujgb}{n}%
+\pxcz@du@decl@shape{hgt}{bx}f{ssub*hgt/m/diruni}{}%
+\else\if r\pxcz@otf@weight % default
+\pxcz@du@decl@shape{hmc}{m}t{otf-ujmr}{n}%
+\pxcz@du@decl@shape{hmc}{bx}f{ssub*hgt/m/diruni}{}%
+\pxcz@du@decl@shape{hgt}{m}t{otf-ujgr}{n}%
+\pxcz@du@decl@shape{hgt}{bx}f{ssub*hgt/m/diruni}{}%
+\else % noreplace
+\ifnum\pxcz@directunicode>\@ne % (directunicode*)
+\pxcz@du@decl@shape{mc}{m}t{uprml}{}%
+\pxcz@du@decl@shape{mc}{bx}f{ssub*gt/m/diruni}{}%
+\pxcz@du@decl@shape{gt}{m}t{upgbm}{}%
+\pxcz@du@decl@shape{gt}{bx}f{ssub*gt/m/diruni}{}%
+\else % (directunicode)
+\pxcz@du@decl@shape{mc}{m}t{otf-ujmr}{n}%
+\pxcz@du@decl@shape{mc}{bx}f{ssub*gt/m/diruni}{}%
+\pxcz@du@decl@shape{gt}{m}t{otf-ujgr}{n}%
+\pxcz@du@decl@shape{gt}{bx}f{ssub*gt/m/diruni}{}%
+\fi
+\fi\fi\fi
+
+\AtBeginDocument{%
+ \def\pxcz@do#1#2#3{%
+ \DeclareFontShape{#1}{#2}{#3}{diruni}{<->ssub*#2/#3/n}{}}%
+ \@for\pxcz@tmpa:={\rmdefault,\sfdefault,\ttdefault}\do{%
+ \pxcz@force@load@font@fam\pxcz@tmpa
+ \@for\pxcz@tmpb:={m,bx}\do{%
+ \edef\pxcz@tmpb{{\f@encoding}{\pxcz@tmpa}{\pxcz@tmpb}}%
+ \expandafter\pxcz@do\pxcz@tmpb}}%
+}
+\pxcz@onlypreamble@def\pxcz@force@load@font@fam#1{%
+ \begingroup
+ \edef\f@family{#1}\def\f@series{m}\def\f@shape{n}%
+ \xdef\font@name{\csname\curr@fontshape/\f@size\endcsname}%
+ \let\extract@font\relax
+ \pickup@font
+ \endgroup
+}
+
+\ifpxcz@glyphid %---- <*glyphid>
+
+%%<*> \gid{<number>}
+\DeclareRobustCommand*{\gid}[1]{%
+ \begingroup
+ \kanjishape{dirgid}\selectfont
+ \kchar#1\relax
+ \endgroup}
+
+%% \pxcz@dg@decl@shape{<fam>}{<ser>}<sw>{<tfmname>}
+\pxcz@onlypreamble@def\pxcz@dg@decl@shape#1#2#3#4{%
+\DeclareFontShape{JY2}{#1}{#2}{dirgid}{<->%
+ \pxcz@dg@shape@spec{#3}{#4}{h}}{}%
+\DeclareFontShape{JT2}{#1}{#2}{dirgid}{<->%
+ \pxcz@dg@shape@spec{#3}{#4}{v}}{}}
+\pxcz@onlypreamble@def\pxcz@dg@shape@spec#1#2#3{%
+ \if#1t%
+ s*[\pxcz@du@scale]#2-#3%
+ \else#2\fi}
+
+\if d\pxcz@otf@weight % deluxe
+\pxcz@dg@decl@shape{hmc}{l}t{zur-gjml}%
+\pxcz@dg@decl@shape{hmc}{m}t{zur-gjmr}%
+\pxcz@dg@decl@shape{hmc}{bx}t{zur-gjmb}%
+\pxcz@dg@decl@shape{hgt}{m}t{zur-gjgr}%
+\pxcz@dg@decl@shape{hgt}{bx}t{zur-gjgb}%
+\pxcz@dg@decl@shape{hgt}{eb}t{zur-gjge}%
+\pxcz@dg@decl@shape{mg}{m}t{zur-gjmgr}%
+\else\if b\pxcz@otf@weight % bold
+\pxcz@dg@decl@shape{hmc}{m}t{zur-gjmr}%
+\pxcz@dg@decl@shape{hmc}{bx}f{ssub*hgt/m/dirgid}{}%
+\pxcz@dg@decl@shape{hgt}{m}t{zur-gjgb}%
+\pxcz@dg@decl@shape{hgt}{bx}f{ssub*hgt/m/dirgid}{}%
+\else\if r\pxcz@otf@weight % default
+\pxcz@dg@decl@shape{hmc}{m}t{zur-gjmr}%
+\pxcz@dg@decl@shape{hmc}{bx}f{ssub*hgt/m/dirgid}{}%
+\pxcz@dg@decl@shape{hgt}{m}t{zur-gjgr}%
+\pxcz@dg@decl@shape{hgt}{bx}f{ssub*hgt/m/dirgid}{}%
+\else % noreplace
+\pxcz@dg@decl@shape{mc}{m}t{zur-gjmr}%
+\pxcz@dg@decl@shape{mc}{bx}f{ssub*gt/m/dirgid}{}%
+\pxcz@dg@decl@shape{gt}{m}t{zur-gjgr}%
+\pxcz@dg@decl@shape{gt}{bx}f{ssub*gt/m/dirgid}{}%
+\fi\fi\fi
+
+\fi %---- </glyphid>
+
+\fi %---- </diruni-ok>
+
+%% \pxcz@err@diruni
+\ifcase\pxcz@directunicode
+ \def\pxcz@errhelp@diruni{%
+ You must use upLaTeX and load pxchfon with 'directunicode(*)' option.}
+\else
+ \def\pxcz@errhelp@diruni{%
+ You must use upLaTeX and load pxchfon after 'otf' package.}
+\fi
+\def\pxcz@err@diruni{%
+ \PackageError\pxcz@pkgname
+ {Command '\string\diruni' not available}%
+ {\pxcz@errhelp@diruni\MessageBreak\@ehc}%
+ \global\let\pxcz@err@diruni\relax}
+\AtBeginDocument{%
+ \ifpxcz@diruni@ok
+ \let\pxcz@err@diruni\relax
+ \let\pxcz@errhelp@diruni\relax
+ \else
+ \let\diruni\pxcz@err@diruni
+ \fi}
+
+%--------------------------------------- 'alphabet' option
+
+%% check for textcomp
+\newif\ifpxcz@textcomp
+\@ifpackageloaded{textcomp}{\pxcz@textcomptrue}{}
+
+%% \pxcz@afont@enc@list
+\def\pxcz@afont@enc@list{OT1,T1}
+\ifpxcz@textcomp \g@addto@macro\pxcz@afont@enc@list{,TS1}\fi
+%% \pxcz@decl@family{<fam>}
+\pxcz@onlypreamble@def\pxcz@decl@family#1{%
+ \ifpxcz@textcomp \DeclareEncodingSubset{TS1}{#1}{3}\fi
+ \@for\pxcz@x:=\pxcz@afont@enc@list\do{%
+ \DeclareFontFamily{\pxcz@x}{#1}{}}}
+%% \pxcz@decl@shape{<fam>}{<ser>}<sw>{<font>}
+\pxcz@onlypreamble@def\pxcz@decl@shape#1#2#3#4{%
+ \if s#3%
+ \@for\pxcz@x:=\pxcz@afont@enc@list\do{%
+ \DeclareFontShape{\pxcz@x}{#1}{#2}{n}{<->ssub*#4}{}}%
+ \else
+ \DeclareFontShape{OT1}{#1}{#2}{n}{<->#4-l5j}{}%
+ \DeclareFontShape {T1}{#1}{#2}{n}{<->#4-t1}{}%
+ \ifpxcz@textcomp
+ \DeclareFontShape{TS1}{#1}{#2}{n}{<->#4-ts1}{}%
+ \fi
+ \fi
+ \@for\pxcz@x:=\pxcz@afont@enc@list\do{%
+ \DeclareFontShape{\pxcz@x}{#1}{#2}{it}{<->ssub*#1/#2/n}{}%
+ \DeclareFontShape{\pxcz@x}{#1}{#2}{sl}{<->ssub*#1/#2/n}{}}}
+
+\ifpxcz@alphafont %---- <*alphabet>
+\ifpxcz@otf@deluxe %---- <*otfdx> : otf with deluxe option
+ % define families cfjar & cfjas
+\pxcz@decl@family{cfjar}%
+\pxcz@decl@shape{cfjar}{l}n{cfjar-l}%
+\pxcz@decl@shape{cfjar}{m}n{cfjar-r}%
+\pxcz@decl@shape{cfjar}{bx}n{cfjar-b}%
+\pxcz@decl@family{cfjas}%
+\pxcz@decl@shape{cfjas}{m}n{cfjas-r}%
+\pxcz@decl@shape{cfjas}{bx}n{cfjas-b}%
+\pxcz@decl@shape{cfjas}{eb}n{cfjas-x}%
+\pxcz@decl@family{cfjam}%
+\pxcz@decl@shape{cfjam}{m}n{cfjam-r}%
+ % redefine \ltseries & \ebseries so they affect roman font
+\let\ltseries\relax \let\ebseries\relax
+\DeclareRobustCommand\ltseries{%
+ \not@math@alphabet\ltseries\relax
+ \fontseries\ltdefault\selectfont}%
+\DeclareRobustCommand\ebseries{%
+ \not@math@alphabet\ebseries\relax
+ \fontseries\ebdefault\selectfont}%
+\else %---- <*!otfdx>
+\pxcz@decl@family{cfjar}%
+\pxcz@decl@shape{cfjar}{m}n{cfjar-r}%
+\pxcz@decl@shape{cfjar}{bx}s{cfjas/m/n}%
+\pxcz@decl@family{cfjas}%
+\pxcz@decl@shape{cfjas}{m}n{cfjas-r}%
+\pxcz@decl@shape{cfjas}{bx}s{cfjas/m/n}%
+\pxcz@onlypreamble@def\pxcz@err@dxotf#1{%
+ \PackageError\pxcz@pkgname
+ {Loaded before '#1' with 'deluxe'}%
+ {This package must be loaded after '#1' with 'deluxe' option
+ when using both.}}
+\g@addto@macro\pxcz@check@extra{%
+ \expandafter\let\expandafter\pxcz@x\csname pxcz@FS/mnr\endcsname
+ \ifx\pxcz@x\@empty\else
+ % if mnr is replaced but gtr is not then ...
+ \expandafter\ifx\csname pxcz@FS/gtr\endcsname\@empty
+ {\expandafter\let\csname pxcz@FS/gtr\endcsname\pxcz@x
+ \pxcz@Entry{gtr}{r-cfjas-r-@PXcjk0@}{unicode}{HWid}}%
+ \fi\fi
+ \@ifpackagewith{otf}{deluxe}{\pxcz@err@dxotf{otf}}{}%
+ \@ifpackagewith{pxotf}{deluxe}{\pxcz@err@dxotf{pxotf}}{}%
+}
+\fi %---- </otfdx>
+\fi %---- </alphabet>
+
+%--------------------------------------- begin-document hook
+
+%% variables
+\let\pxcz@afont@enc\relax
+
+%% \pxcz@mgfamily@hook
+\def\pxcz@mgfamily@hook{\romanfamily{cfjam}}
+
+%% \pxcz@set@page@hook{<text>}
+\ifpxcz@everypage
+\pxcz@onlypreamble@def\pxcz@set@page@hook#1{%
+ \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{%
+ \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@
+ #1\copy\AtBeginShipoutBox}}}
+\else
+\pxcz@onlypreamble@def\pxcz@set@page@hook#1{%
+ % this is \AtBeginDvi with forcing of yoko-dir added
+ \global\setbox\@begindvibox\vbox{\yoko\unvbox\@begindvibox#1}}
+\fi
+
+%% \pxcz@check@alldefined{<sym>,...}
+\pxcz@onlypreamble@def\pxcz@check@alldefined#1{%
+ \pxcz@oktrue
+ \@for\pxcz@x:={#1}\do{%
+ \expandafter\ifx\csname pxcz@FS/\pxcz@x\endcsname\@empty
+ \pxcz@okfalse \fi}}
+
+%% \pxcz@decl@relfont{<fam>}{<afam>}{<ser>,...}
+\pxcz@onlypreamble@def\pxcz@decl@relfont#1#2#3{%
+ \@for\pxcz@x:={#3}\do{%
+ \expandafter\ifx\csname\k@encoding/#1/\pxcz@x/n\endcsname\relax\else
+ \edef\pxcz@tmpa{\noexpand\DeclareRelationFont
+ {\k@encoding}{#1}{\pxcz@x}{}{\pxcz@afont@enc}{#2}{\pxcz@x}{}%
+ }\pxcz@tmpa
+ \fi}%
+ \PackageInfo\pxcz@pkgname
+ {Relation font set for \k@encoding/#1}}
+
+%% \pxcz@check@afont@enc
+\pxcz@onlypreamble@def\pxcz@check@afont@enc{%
+ \pxcz@oktrue % OT1 is always okay
+ \expandafter\ifx\csname\pxcz@afont@enc+cfjar\endcsname\relax
+ \pxcz@okfalse \fi
+ % if not okay, use OT1 instead
+ \ifpxcz@ok\else \def\pxcz@afont@enc{OT1}\fi}
+
+%% the begin-document hook
+\pxcz@onlypreamble@def\pxcz@doc@hook{%
+ \pxcz@user@hook
+ \ifx\pxcz@file@preset\relax\else
+ \pxcz@do@file@preset
+ \fi
+ \ifx t\pxcz@strict@csi
+ \pxcz@inspect@flavor@all
+ \fi
+ \ifpxcz@alpha % 'alphabet'
+ \pxcz@check@alldefined{mnl,mnr,mnb}%
+ \ifpxcz@ok \renewcommand\rmdefault{cfjar}\fi
+ \pxcz@check@alldefined{gtr,gtb,gtx}%
+ \ifpxcz@ok \renewcommand\sfdefault{cfjas}\fi
+ % attach hook to \mgfamily if mgr font is defined
+ \pxcz@check@alldefined{mgr}
+ \ifpxcz@ok\ifpxcz@otf@deluxe
+ \begingroup
+ \def\pxcz@x##1{\toks@\expandafter{##1}%
+ \xdef##1{\noexpand\pxcz@mgfamily@hook\the\toks@}%
+ }\expandafter\pxcz@x\csname mgfamily \endcsname
+ \endgroup
+ \fi\fi
+ % decide alphabet font encoding
+ \edef\pxcz@afont@enc{\encodingdefault}%
+ \pxcz@check@afont@enc\ifpxcz@ok\else
+ \PackageWarningNoLine\pxcz@pkgname
+ {Default encoding is changed to 'OT1' because%
+ \MessageBreak'alphabet' option is in effect}%
+ \renewcommand\encodingdefault{OT1}%
+ \fi
+ \normalfont
+ \pxcz@addtospec{ALPHA}%
+ \fi
+ \ifpxcz@rel % 'relfont'
+ \edef\pxcz@afont@enc{\encodingdefault}%
+ \pxcz@check@afont@enc
+ \pxcz@check@alldefined{mnl,mnr,mnb}%
+ \ifpxcz@ok \pxcz@decl@relfont\mcdefault{cfjar}{m,bx,l}\fi
+ \pxcz@check@alldefined{gtr,gtb,gtx}%
+ \ifpxcz@ok \pxcz@decl@relfont\gtdefault{cfjas}{m,bx,eb}\fi
+ \pxcz@check@alldefined{mgr}%
+ \ifpxcz@ok\ifpxcz@otf@deluxe
+ \pxcz@decl@relfont\mgdefault{cfjam}{m}%
+ \fi\fi
+ \pxcz@addtospec{ALPHA}%
+ \fi
+ \ifpxcz@uptex\else
+ \pxcz@addtospec{STD}%
+ \fi
+ \ifnum0\ifnum\pxcz@legacycode=\pxcz@legacycode@replace 1\fi
+ \ifpxcz@uptex 1\fi >\z@
+ \pxcz@addtospec{UPSTD}%
+ \fi
+ \ifpxcz@otf
+ \@ifpackageloaded{otf}{\pxcz@otftrue}{\pxcz@otffalse}%
+ \@ifpackageloaded{utf}{\pxcz@utftrue}{\pxcz@utffalse}%
+ \fi
+ \ifpxcz@otf
+ \ifnum0\ifnum\pxcz@legacycode=\pxcz@legacycode@replace 1\fi
+ \ifpxcz@uptex 1\fi >\z@
+ \pxcz@addtospec{UPOTF}%
+ \fi
+ \pxcz@addtospec{OTF}%
+ \fi
+ \ifpxcz@glyphid \pxcz@addtospec{GID}%
+ \fi
+ \ifx t\pxcz@expert \pxcz@addtospec{EXPERT}%
+ \fi
+ \ifpxcz@utf \pxcz@addtospec{UTF}%
+ \fi
+ \@ifpackageloaded{pxotf}{\pxcz@oktrue}{\pxcz@okfalse}%
+ \@ifpackageloaded{pxfontenc}{\pxcz@oktrue}{}%
+ \ifpxcz@ok \pxcz@addtospec{PXOTF}%
+ \fi
+ % warn if some weights are not substituted, and if necessaty
+ \ifpxcz@warn@unless@all@defined
+ \ifpxcz@otf@deluxe
+ \pxcz@check@alldefined{mnl,mnr,mnb,gtr,gtb,gtx,mgr}%
+ \else \pxcz@check@alldefined{mnr,mnb,gtr,gtb}%
+ \fi
+ \ifpxcz@ok\else
+ \PackageWarningNoLine\pxcz@pkgname
+ {Some font weights are not substituted.\MessageBreak
+ So some features of pxchfon might not work\MessageBreak
+ properly when applied to such weights}%
+ \fi
+ \fi
+ % warn if some weights are not embedded, and if necessaty
+ \ifpxcz@warn@unless@all@embedded \ifpxcz@noembed@used
+ \PackageWarningNoLine\pxcz@pkgname
+ {Some font weights have no-embed setting.\MessageBreak
+ So some features of pxchfon might not work\MessageBreak
+ properly when applied to such weights}%
+ \fi\fi
+ %
+ \pxcz@check@extra
+ \pxcz@addtospec{USR}%
+ \ifpxcz@enabled
+ \pxcz@set@page@hook{\pxcz@spec}%
+ \else\ifx\pxcz@spec\@empty\else
+ \PackageWarningNoLine\pxcz@pkgname
+ {Font mapping is disabled, since the driver in use\MessageBreak
+ is not dvipdfmx}%
+ \fi\fi
+ \ifpxcz@dumpmap
+ \pxcz@do@dumpmap
+ \fi
+ \ifpxcz@dumpmap@tl
+ \pxcz@do@dumpmap@tl
+ \fi
+}
+\AtBeginDocument{\pxcz@doc@hook}
+
+%--------------------------------------- strict-CSI mode
+\ifx t\pxcz@strict@csi
+% In this section, the e-TeX extension plus \pdffiledump and
+% \pdffilesize is assumed to be available.
+
+%% variables
+\newcount\pxcz@cntr
+\let\pxcz@insf@file\relax
+\let\pxcz@insf@idx\relax
+\let\pxcz@insf@nfont\relax
+\let\pxcz@kpse@dir\relax
+
+%% constants
+\def\pxcz@insf@@OTTO{"4F54544F }
+\def\pxcz@insf@@IZ{"00010000 }
+\def\pxcz@insf@@ttcf{"74746366 }
+
+%% \pxcz@insf@read@word{<offset>}
+% Reads a 32-bit integer from \pxcz@insf@file at the given offset,
+% and sets the value (or -1 on error) to \pxcz@cntr.
+\pxcz@onlypreamble@def\pxcz@insf@read@word#1{%
+ \pxcz@cntr=#1\relax
+ \edef\pxcz@tmpa{\pdffiledump offset\pxcz@cntr length1{\pxcz@insf@file}}%
+ \ifnum"0\pxcz@tmpa<"80
+ \advance\pxcz@cntr\@ne
+ \edef\pxcz@tmpb{\pdffiledump offset\pxcz@cntr length3{\pxcz@insf@file}}%
+ \ifnum"1\pxcz@tmpb<"1000000 \pxcz@cntr\m@ne % truncated
+ \else \pxcz@cntr"\pxcz@tmpa\pxcz@tmpb\relax % the value
+ \fi
+ \else \pxcz@cntr\m@ne % overflow
+ \fi}
+
+%% \pxcz@inspect@flavor{<path>}{<index>}
+% Sets the result to \pxcz@cntr.
+% 1=CFF, 0=TTF, <0 if error.
+\pxcz@onlypreamble@def\pxcz@inspect@flavor#1#2{%
+ \edef\pxcz@insf@file{#1}%
+ \mathchardef\pxcz@insf@idx=#2\relax
+ \pxcz@insf@read@word{0}% outer tag
+ \ifnum\pxcz@cntr=\pxcz@insf@@ttcf % TTC/OTC
+ \pxcz@insf@read@word{8}% font count
+ \ifnum\pxcz@cntr>"7FFF \pxcz@cntr\m@ne \fi
+ \ifnum\pxcz@cntr>\m@ne
+ \mathchardef\pxcz@insf@nfont\pxcz@cntr
+ \@tempcnta\pxcz@insf@idx \multiply\@tempcnta4
+ \advance\@tempcnta12 \pxcz@insf@read@word{\@tempcnta}% inner tag
+ \@tempcnta\pxcz@cntr
+ \fi
+ \else % not collection
+ \@tempcnta=0 \chardef\pxcz@insf@nfont=1
+ \fi
+ \ifnum\pxcz@cntr>\m@ne % no format error so far
+ \ifnum\pxcz@insf@idx<\pxcz@insf@nfont
+ \pxcz@insf@read@word{\@tempcnta}%
+ \ifnum\pxcz@cntr=\m@ne % ERROR: bad format
+ \else\ifnum\pxcz@cntr=\pxcz@insf@@OTTO \pxcz@cntr\@ne % CFF-flavor
+ \else\ifnum\pxcz@cntr=\pxcz@insf@@IZ \pxcz@cntr\z@ % TTF-flavor
+ \else \pxcz@cntr-\thr@@ % ERROR: unknown tag
+ \fi\fi\fi
+ \else \pxcz@cntr-\tw@ % ERROR: bad index
+ \fi
+ %else ERROR: bad format
+ \fi}
+
+%% \pxcz@kpse@dir@cache
+% to spped up \pxcz@kpsewhich
+\pxcz@onlypreamble@let\pxcz@kpse@dir@cache\@empty
+
+%% \pxcz@kpsewhich{<filename>}
+% Sets to \pxcz@kpse@dir the directory where the file is found
+% (or \relax if not found).
+\pxcz@onlypreamble@def\pxcz@kpsewhich#1{%
+ \edef\pxcz@tmpa{#1}\let\pxcz@kpse@dir\relax
+ \let\do\pxcz@kpsewhich@do \pxcz@kpse@dir@cache\relax
+ \ifx\pxcz@kpse@dir\relax
+ \chardef\pxcz@tmpz=\endlinechar \endlinechar\m@ne
+ \openin\@inputcheck="|kpsewhich \pxcz@tmpa"\relax
+ \unless\ifeof\@inputcheck
+ \readline\@inputcheck to\pxcz@tmpb
+ \unless\ifx\pxcz@tmpb\@empty
+ \let\pxcz@kpse@dir\@empty \let\do\relax
+ \expandafter\pxcz@kpsewhich@a\pxcz@tmpb/\pxcz@end
+ \edef\pxcz@kpse@dir@cache{%
+ \pxcz@kpse@dir@cache\do{\pxcz@kpse@dir}}%
+ \fi
+ \fi
+ \endlinechar\pxcz@tmpz
+ \fi}
+\pxcz@onlypreamble@def\pxcz@kpsewhich@a#1/#2\pxcz@end{%
+ \ifx\pxcz@end#2\pxcz@end \expandafter\@gobble
+ \else \expandafter\@firstofone
+ \fi{%
+ \edef\pxcz@kpse@dir{\pxcz@kpse@dir#1/}%
+ \pxcz@kpsewhich@a#2\pxcz@end}}
+\pxcz@onlypreamble@def\pxcz@kpsewhich@do#1{%
+ \ifnum0\pdffilesize{#1\pxcz@tmpa}>\z@
+ \def\pxcz@kpse@dir{#1}%
+ \expandafter\pxcz@kpsewhich@do@a
+ \fi}
+\def\pxcz@kpsewhich@do@a#1\relax{}
+
+%% \pxcz@inspect@flavor@all
+% Sets \[pxcz@OT/<sym>].
+\pxcz@onlypreamble@def\pxcz@inspect@flavor@all{%
+ \@for\pxcz@tmpa:=\pxcz@sym@list\do{%
+ \edef\pxcz@tmpa{{\pxcz@tmpa}{\@nameuse{pxcz@FS/\pxcz@tmpa}}}%
+ \expandafter\pxcz@inspect@flavor@all@a\pxcz@tmpa}}
+\pxcz@onlypreamble@def\pxcz@inspect@flavor@all@a#1#2{%
+ \def\pxcz@tmpa{#2}%
+ \ifx\pxcz@tmpa\@empty
+ \else\ifx\pxcz@tmpa\pxcz@noembed
+ \@namedef{pxcz@OT/#1}{t}%
+ \else \pxcz@inspect@flavor@all@b#2\pxcz@end{#1}%
+ \fi\fi}
+\pxcz@onlypreamble@def\pxcz@inspect@flavor@all@b#1#2\pxcz@end{%
+ \edef\pxcz@tmpa{\ifx:#1\else:0:\fi#1#2}%
+ \expandafter\pxcz@inspect@flavor@all@c\pxcz@tmpa\pxcz@end}
+\pxcz@onlypreamble@def\pxcz@inspect@flavor@all@c:#1:#2\pxcz@end#3{%
+ \pxcz@kpsewhich{#2}%
+ \unless\ifx\pxcz@kpse@dir\relax
+ \pxcz@inspect@flavor{\pxcz@kpse@dir#2}{#1}%
+%\typeout{#3)\pxcz@kpse@dir#2;#1==>\the\pxcz@cntr}%
+ \ifnum\pxcz@cntr>\z@
+ \@namedef{pxcz@OT/#3}{t}%
+ \fi
+ \fi}
+
+\fi
+%--------------------------------------- dump font map
+% if some dumpmap is enabled...
+\ifnum 0\ifpxcz@dumpmap 1\fi
+ \ifpxcz@dumpmap@tl 1\fi >\z@
+
+%% variables
+\let\pxcz@dump@text\relax
+\let\pxcz@spec@save\relax
+\newwrite\pxcz@fout
+
+%% \pxcz@add@to@dump@text
+\def\pxcz@add@to@dump@text#1{%
+ \edef\pxcz@dump@text{\pxcz@dump@text#1}}
+
+%% \pxcz@dump@special{<string>}
+\pxcz@onlypreamble@def\pxcz@dump@special#1{%
+ \pxcz@dump@special@a#1\bxcz@end}
+\pxcz@onlypreamble@def\pxcz@dump@special@a#1 #2\bxcz@end{%
+ \@nameuse{pxcz@dump@special@#1}\@gobble{#2}}
+\@namedef{pxcz@dump@special@pdf:mapline}#1#2{%
+ \pxcz@add@to@dump@text{\pxcz@rmin#2^^J}}
+
+%% \pxcz@rmin
+\def\pxcz@rmin#1{%
+ \ifx-#1\@percentchar\else#1\fi}
+
+%% \pxcz@dump@spec@to{<file-name>}
+\pxcz@onlypreamble@def\pxcz@dump@spec@to#1{%
+ \def\pxcz@dump@text{\@percentchar\space#1^^J}%
+ \let\special\pxcz@dump@special
+ \pxcz@spec \let\special\relax
+ \pxcz@add@to@dump@text{\@percentchar\space EOF}%
+ \immediate\openout\pxcz@fout=#1\relax
+ \immediate\write\pxcz@fout{\pxcz@dump@text}%
+ \immediate\closeout\pxcz@fout}
+
+%% \pxcz@do@dumpmap
+\pxcz@onlypreamble@def\pxcz@do@dumpmap{%
+ \begingroup
+ \pxcz@dump@spec@to{\jobname.map}%
+ \endgroup}
+
+%% \pxcz@do@dumpmap@tl
+\pxcz@onlypreamble@def\pxcz@do@dumpmap@tl{%
+ \begingroup
+ \let\pxcz@spec@save\pxcz@spec
+ \pxcz@do@dumpmap@tl@a{STD}{ptex-\jobname}%
+ \pxcz@do@dumpmap@tl@a{UPSTD}{uptex-\jobname}%
+ \pxcz@do@dumpmap@tl@a{OTF}{otf-\jobname}%
+ \pxcz@do@dumpmap@tl@a{UPOTF}{otf-up-\jobname}%
+ \global\let\pxcz@spec\pxcz@spec@save
+ \endgroup}
+\pxcz@onlypreamble@def\pxcz@do@dumpmap@tl@a#1#2{%
+ \global\let\pxcz@spec\@empty
+ \pxcz@addtospec{#1}%
+ \pxcz@dump@spec@to{#2.map}}
+
+\fi
+%--------------------------------------- preset japanese font mappings
+
+%% \pxcz@declare@preset{<name>}{<text>}
+\pxcz@onlypreamble@def\pxcz@declare@preset#1{%
+ \pxcz@onlypreamble@csdef{pxcz@the@preset@#1}}
+
+%% \pxcz@declare@preset@alias{<name1>}{<name2>}
+\pxcz@onlypreamble@def\pxcz@declare@preset@alias#1#2{%
+ \expandafter\pxcz@onlypreamble@let\csname pxcz@the@preset@#1%
+ \expandafter\endcsname\csname pxcz@the@preset@#2\endcsname}
+
+%% \pxcz@abolished@preset
+\pxcz@onlypreamble@def\pxcz@abolished@preset{%
+ \PackageError\pxcz@pkgname
+ {The old preset '\pxcz@main@preset' is *abolished*}{\@ehc}%
+ \pxcz@uniweight{ERROR.ttf}{ERROR.ttf}}
+\@for\pxcz@x:=\pxcz@all@abolished@preset\do{%
+ \pxcz@onlypreamble@csdef{pxcz@the@preset@\pxcz@x}{\pxcz@abolished@preset}}
+
+%% \pxcz@uniweight{<font-mn>}{<font-gt>}
+\pxcz@onlypreamble@def\pxcz@uniweight#1#2{%
+ \setminchofont{#1}\setgothicfont{#2}\setmarugothicfont{#2}}
+
+%% \pxcz@multiweight{<font-mnl>}{<font-mnr>}{<font-mnb>}
+%% {<font-gtr>}{<font-gtb>}{<font-gtx>}{<font-gtu>}{<font-mgr>}
+\pxcz@onlypreamble@def\pxcz@multiweight#1#2#3#4#5#6#7#8{%
+ \setminchofont{#2}\setgothicfont{#7}\setmarugothicfont{#8}%
+ \ifpxcz@oneweight\else
+ \setlightminchofont{#1}\setboldminchofont{#3}%
+ \setmediumgothicfont{#4}\setboldgothicfont{#5}\setxboldgothicfont{#6}%
+ \fi}
+
+%% \pxcz@use@preset{<name>}
+\pxcz@onlypreamble@def\pxcz@use@preset#1{%
+ \csname pxcz@the@preset@#1\endcsname}
+
+%% definitions of main preset mappings
+\pxcz@declare@preset{noembed}{%
+ \pxcz@uniweight{*}{*}}
+%(uniweight)
+\pxcz@declare@preset{ms}{%
+ \pxcz@uniweight{:0:msmincho.ttc}{:0:msgothic.ttc}}
+\pxcz@declare@preset{ipa}{%
+ \pxcz@uniweight{ipam.ttf}{ipag.ttf}}
+\pxcz@declare@preset{ipaex}{%
+ \pxcz@uniweight{ipaexm.ttf}{ipaexg.ttf}}
+%(multiweight)
+\pxcz@declare@preset{ms-hg}{%
+ \pxcz@multiweight{:0:msmincho.ttc}{:0:msmincho.ttc}{:0:hgrme.ttc}%
+ {:0:hgrgm.ttc}{:0:hgrge.ttc}{:0:hgrsgu.ttc}{:0:msgothic.ttc}{hgrsmp.ttf}}
+\pxcz@declare@preset{ipa-hg}{%
+ \pxcz@multiweight{ipam.ttf}{ipam.ttf}{:0:hgrme.ttc}%
+ {:0:hgrgm.ttc}{:0:hgrge.ttc}{:0:hgrsgu.ttc}{ipag.ttf}{hgrsmp.ttf}}
+\pxcz@declare@preset{ipaex-hg}{%
+ \pxcz@multiweight{ipaexm.ttf}{ipaexm.ttf}{:0:hgrme.ttc}%
+ {:0:hgrgm.ttc}{:0:hgrge.ttc}{:0:hgrsgu.ttc}{ipaexg.ttf}{hgrsmp.ttf}}
+\pxcz@declare@preset{moga-mobo}{%
+ \pxcz@multiweight{:0:mogam.ttc}{:0:mogam.ttc}{:0:mogamb.ttc}%
+ {:0:mogag.ttc}{:0:mogagb.ttc}{:0:mogagb.ttc}{:0:mogag.ttc}{:0:mobog.ttc}}
+\pxcz@declare@preset{moga-mobo-ex}{%
+ \pxcz@multiweight{:1:mogam.ttc}{:1:mogam.ttc}{:1:mogamb.ttc}%
+ {:1:mogag.ttc}{:1:mogagb.ttc}{:1:mogagb.ttc}{:1:mogag.ttc}{:1:mobog.ttc}}
+\pxcz@declare@preset{moga-maruberi}{%
+ \pxcz@multiweight{:0:mogam.ttc}{:0:mogam.ttc}{:0:mogamb.ttc}%
+ {:0:mogag.ttc}{:0:mogagb.ttc}{:0:mogagb.ttc}{:0:mogag.ttc}{MTLmr3m.ttf}}
+\pxcz@declare@preset{ume}{%
+ \pxcz@multiweight{ume-tmo3.ttf}{ume-tmo3.ttf}{ume-tmo3.ttf}%
+ {ume-tgo4.ttf}{ume-tgo5.ttf}{ume-tgo5.ttf}{ume-tgo5.ttf}{ume-tgo4.ttf}}
+\pxcz@declare@preset{kozuka-pro}{%
+ \usecmapforalphabet
+ \pxcz@multiweight{KozMinPro-Light.otf}{KozMinPro-Regular.otf}%
+ {KozMinPro-Bold.otf}{KozGoPro-Regular.otf}{KozGoPro-Bold.otf}%
+ {KozGoPro-Heavy.otf}{KozGoPro-Medium.otf}{KozGoPro-Heavy.otf}}
+\pxcz@declare@preset{kozuka-pr6}{%
+ \usecmapforalphabet
+ \pxcz@multiweight{KozMinProVI-Light.otf}{KozMinProVI-Regular.otf}%
+ {KozMinProVI-Bold.otf}{KozGoProVI-Regular.otf}{KozGoProVI-Bold.otf}%
+ {KozGoProVI-Heavy.otf}{KozGoProVI-Medium.otf}{KozGoProVI-Heavy.otf}}
+\pxcz@declare@preset{kozuka-pr6n}{%
+ \usecmapforalphabet
+ \pxcz@multiweight{KozMinPr6N-Light.otf}{KozMinPr6N-Regular.otf}%
+ {KozMinPr6N-Bold.otf}{KozGoPr6N-Regular.otf}{KozGoPr6N-Bold.otf}%
+ {KozGoPr6N-Heavy.otf}{KozGoPr6N-Medium.otf}{KozGoPr6N-Heavy.otf}}
+\pxcz@declare@preset{hiragino-pro}{%
+ \usecmapforalphabet
+ \pxcz@multiweight{HiraMinPro-W2.otf}{HiraMinPro-W3.otf}%
+ {HiraMinPro-W6.otf}{HiraKakuPro-W3.otf}{HiraKakuPro-W6.otf}%
+ {HiraKakuStd-W8.otf}{HiraKakuPro-W6.otf}{HiraMaruPro-W4.otf}}
+\pxcz@declare@preset{hiragino-pron}{%
+ \usecmapforalphabet
+ \pxcz@multiweight{HiraMinProN-W2.otf}{HiraMinProN-W3.otf}%
+ {HiraMinProN-W6.otf}{HiraKakuProN-W3.otf}{HiraKakuProN-W6.otf}%
+ {HiraKakuStdN-W8.otf}{HiraKakuProN-W6.otf}{HiraMaruProN-W4.otf}}
+\pxcz@declare@preset{hiragino-elcapitan-pro}{%
+ \usecmapforalphabet
+ \pxcz@multiweight{HiraMinPro-W2.otf}{:1:HiraginoSerif-W3.ttc}%
+ {:1:HiraginoSerif-W6.ttc}{:3:HiraginoSans-W3.ttc}{:3:HiraginoSans-W6.ttc}%
+ {:2:HiraginoSans-W8.ttc}{:3:HiraginoSans-W6.ttc}{:0:HiraginoSansR-W4.ttc}}
+\pxcz@declare@preset{hiragino-elcapitan-pron}{%
+ \usecmapforalphabet
+ \pxcz@multiweight{HiraMinProN-W2.otf}{:0:HiraginoSerif-W3.ttc}%
+ {:0:HiraginoSerif-W6.ttc}{:2:HiraginoSans-W3.ttc}{:2:HiraginoSans-W6.ttc}%
+ {:3:HiraginoSans-W8.ttc}{:2:HiraginoSans-W6.ttc}{:1:HiraginoSansR-W4.ttc}}
+\pxcz@declare@preset{morisawa-pro}{%
+ \usecmapforalphabet
+ \pxcz@multiweight{A-OTF-RyuminPro-Light.otf}{A-OTF-RyuminPro-Light.otf}%
+ {A-OTF-FutoMinA101Pro-Bold.otf}{A-OTF-GothicBBBPro-Medium.otf}%
+ {A-OTF-FutoGoB101Pro-Bold}{A-OTF-MidashiGoPro-MB31.otf}%
+ {A-OTF-GothicBBBPro-Medium.otf}{A-OTF-Jun101Pro-Light.otf}}
+\pxcz@declare@preset{morisawa-pr6n}{%
+ \usecmapforalphabet
+ \pxcz@multiweight{A-OTF-RyuminPr6N-Light.otf}{A-OTF-RyuminPr6N-Light.otf}%
+ {A-OTF-FutoMinA101Pr6N-Bold.otf}{A-OTF-GothicBBBPr6N-Medium.otf}%
+ {A-OTF-FutoGoB101Pr6N-Bold}{A-OTF-MidashiGoPr6N-MB31.otf}%
+ {A-OTF-GothicBBBPr6N-Medium.otf}{A-OTF-Jun101Pro-Light.otf}}
+\pxcz@declare@preset{yu-win}{%
+ \pxcz@multiweight{yuminl.ttf}{yumin.ttf}%
+ {yumindb.ttf}{yugothic.ttf}{yugothib.ttf}%
+ {yugothib.ttf}{yugothic.ttf}{yugothic.ttf}}
+\pxcz@declare@preset{yu-win10}{%
+ \pxcz@multiweight{yuminl.ttf}{yumin.ttf}%
+ {yumindb.ttf}{:0:YuGothR.ttc}{:0:YuGothB.ttc}%
+ {:0:YuGothB.ttc}{:0:YuGothM.ttc}{:0:YuGothM.ttc}}
+\pxcz@declare@preset{yu-osx}{%
+ \usecmapforalphabet
+ \pxcz@multiweight{YuMin-Medium.otf}{YuMin-Medium.otf}%
+ {YuMin-Demibold.otf}{YuGo-Medium.otf}{YuGo-Bold.otf}%
+ {YuGo-Bold.otf}{YuGo-Medium.otf}{YuGo-Medium.otf}}
+% Source Han Sans/Serif, "OTC"
+\pxcz@declare@preset{sourcehan-otc}{%
+ \pxcz@multiweight{:0:SourceHanSerif-Light.ttc}%
+ {:0:SourceHanSerif-Regular.ttc}{:0:SourceHanSerif-Bold.ttc}%
+ {:0:SourceHanSans-Regular.ttc}{:0:SourceHanSans-Bold.ttc}%
+ {:0:SourceHanSans-Heavy.ttc}{:0:SourceHanSans-Medium.ttc}%
+ {:0:SourceHanSans-Medium.ttc}}
+% Source Han Sans/Serif, "Language-specific OTF"
+\pxcz@declare@preset{sourcehan}{%
+ \pxcz@multiweight{SourceHanSerif-Light.otf}%
+ {SourceHanSerif-Regular.otf}{SourceHanSerif-Bold.otf}%
+ {SourceHanSans-Regular.otf}{SourceHanSans-Bold.otf}%
+ {SourceHanSans-Heavy.otf}{SourceHanSans-Medium.otf}%
+ {SourceHanSans-Medium.otf}}
+% Source Han Sans/Serif, "Region-specific Subset OTF"
+\pxcz@declare@preset{sourcehan-jp}{%
+ \pxcz@multiweight{SourceHanSerifJP-Light.otf}%
+ {SourceHanSerifJP-Regular.otf}{SourceHanSerifJP-Bold.otf}%
+ {SourceHanSansJP-Regular.otf}{SourceHanSansJP-Bold.otf}%
+ {SourceHanSansJP-Heavy.otf}{SourceHanSansJP-Medium.otf}%
+ {SourceHanSansJP-Medium.otf}}
+% Noto Sans/Serif CJK, "OpenType/CFF Collection (OTC)"
+\pxcz@declare@preset{noto-otc}{%
+ \pxcz@multiweight{:0:NotoSerifCJK-Light.ttc}%
+ {:0:NotoSerifCJK-Regular.ttc}{:0:NotoSerifCJK-Bold.ttc}%
+ {:0:NotoSansCJK-Regular.ttc}{:0:NotoSansCJK-Bold.ttc}%
+ {:0:NotoSansCJK-Black.ttc}{:0:NotoSansCJK-Medium.ttc}%
+ {:0:NotoSansCJK-Medium.ttc}}
+% Noto Sans/Serif CJK, "Language-specific OpenType/CFF (OTF)"
+\pxcz@declare@preset{noto}{%
+ \pxcz@multiweight{NotoSerifCJKjp-Light.otf}%
+ {NotoSerifCJKjp-Regular.otf}{NotoSerifCJKjp-Bold.otf}%
+ {NotoSansCJKjp-Regular.otf}{NotoSansCJKjp-Bold.otf}%
+ {NotoSansCJKjp-Black.otf}{NotoSansCJKjp-Medium.otf}%
+ {NotoSansCJKjp-Medium.otf}}
+% Noto Sans/Serif CJK, "Region-specific Subset OpenType/CFF (Subset OTF)"
+\pxcz@declare@preset{noto-jp}{%
+ \pxcz@multiweight{NotoSerifJP-Light.otf}%
+ {NotoSerifJP-Regular.otf}{NotoSerifJP-Bold.otf}%
+ {NotoSansJP-Regular.otf}{NotoSansJP-Bold.otf}%
+ {NotoSansJP-Black.otf}{NotoSansJP-Medium.otf}%
+ {NotoSansJP-Medium.otf}}
+%(alias)
+\pxcz@declare@preset@alias{hiragino}{hiragino-pro}
+\pxcz@declare@preset@alias{noEmbed}{noembed}
+\pxcz@declare@preset@alias{kozuka}{kozuka-pro}
+\pxcz@declare@preset@alias{hiragino-elcapitan}{hiragino-elcapitan-pro}
+\pxcz@declare@preset@alias{morisawa}{morisawa-pro}
+\pxcz@declare@preset@alias{noto-otf}{noto}
+%(plus-variants)
+\pxcz@declare@preset@alias{sourcehan+}{sourcehan}
+\pxcz@declare@preset@alias{sourcehan-otc+}{sourcehan-otc}
+\pxcz@declare@preset@alias{noto+}{noto}
+\pxcz@declare@preset@alias{noto-otc+}{noto-otc}
+\pxcz@declare@preset@alias{yu-win10+}{yu-win10}
+
+%% ... and invokes the specified one!
+\if\pxcz@main@preset\relax\else
+\pxcz@use@preset{\pxcz@main@preset}
+\fi
+
+%% load pxufont
+\ifx t\pxcz@expert
+ \RequirePackage{pxufont-ruby}[]
+\else\ifnum\pxcz@legacycode=\pxcz@legacycode@replace
+ \RequirePackage{pxufont}[]
+\fi\fi
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/pxchfon/pxchfon.tex b/language/japanese/pxchfon/pxchfon.tex
new file mode 100644
index 0000000000..1493bc92fc
--- /dev/null
+++ b/language/japanese/pxchfon/pxchfon.tex
@@ -0,0 +1,1352 @@
+% 文字コードは UTF-8
+% uplatex で組版する
+\documentclass[uplatex,dvipdfmx,a4paper]{jsarticle}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern,textcomp}
+\usepackage{color}
+\definecolor{myblue}{rgb}{0,0,0.75}
+\definecolor{mygreen}{rgb}{0,0.45,0}
+\usepackage[colorlinks,hyperfootnotes=false]{hyperref}
+\usepackage{pxjahyper}
+\hypersetup{linkcolor=myblue,urlcolor=mygreen}
+\usepackage{metalogo}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{1.5a}
+\newcommand{\PkgDate}{2019/07/10}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{:\ }
+\providecommand{\Strong}[1]{\textsf{#1}}
+\providecommand{\pTeX}{p\TeX}
+\providecommand{\pLaTeX}{p\LaTeX}
+\providecommand{\upTeX}{u\pTeX}
+\providecommand{\upLaTeX}{u\pLaTeX}
+%-----------------------------------------------------------
+\begin{document}
+\title{\Pkg{pxchfon} パッケージ}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion\quad[\PkgDate]}
+\maketitle
+\tableofcontents
+
+%===========================================================
+\section{概要}
+
+{\pLaTeX}/{\upLaTeX}+dvipdfmxのワークフローでPDF文書を作る場合に、
+標準の和文フォント(明朝・ゴシック)に対して実際に使われる
+OpenTypeフォントをユーザが指定する機能を提供する。
+使用するフォントを{\LaTeX}文書中で指定するので、
+一度パッケージをインストールするだけで、
+任意の日本語フォント(ただし等幅に限る)を使うことができる。
+欧文部分を同じ日本語フォントで置き換えることも可能である。
+\Pkg{japanese-otf}\footnote{\Pkg{japanese-otf}パッケージ\Means
+ https://www.ctan.org/pkg/japanese-otf}%
+パッケージにも対応している。
+
+また、{(u)\pLaTeX}において広く行われているフォント設定
+(IPAexフォントの使用等)をパッケージオプション一つで適用する機能
+(プリセット指定)も備えている。
+
+%===========================================================
+\section{前提環境}
+
+\begin{itemize}
+\item {\TeX}フォーマット\Means {\LaTeX}
+\item {\TeX}エンジン\Means {\pTeX}/{\upTeX}
+\item DVIウェア\Means dvipdfmx
+\item 前提パッケージ\Means
+ \begin{itemize}
+ \item \Pkg{atbegshi}パッケージ(|everypage| オプション使用時)
+ \item \Pkg{pxufont}パッケージ(|unicode| オプション使用時)
+ \end{itemize}
+\end{itemize}
+
+%===========================================================
+\section{読込}
+\label{sec:Loading}
+
+プレアンブルにおいて、|\usepackage| を用いて読み込む。
+\begin{quote}\small\begin{verbatim}
+\usepackage[<オプション>,...]{pxchfon}
+\end{verbatim}\end{quote}
+
+オプションは次のものが用意されている。
+
+\begin{itemize}
+\item \Strong{ドライバオプション}\Means
+ |dvipdfmx|、|dvips|、|dviout|、|xdvi| および |nodvidriver|%
+ \footnote{ドライバ依存動作を明示的に無効化するための指定。}
+ が指定できる。
+ ただし、本パッケージの主要機能である
+ 「フォントマップの文書内での指定」
+ がサポートされるのはdvipdfmxのみである。
+ 他のDVIウェアにおける動作については
+ \ref{sec:Other-Drivers}節を参照。
+ ドライバオプションの既定値は |dvipdfmx| である。
+\item \Strong{プリセット指定オプション}(|ipaex|、|hiragino-pron| 等)
+ 名前に対応するプリセット指定を有効にする。
+ \Note 詳細については\ref{sec:Preset}節を参照。
+\item \Strong{ファイルプリセット指定オプション}%
+ (|+|\mbox{}\textgt{名前} または |*|\mbox{}\textgt{名前})
+ 名前に対応するファイルプリセット指定を有効にする。
+ \Note 詳細については\ref{sec:FilePreset}節を参照。
+\item |alphabet|\Means
+ 欧文フォントも指定されたフォントの英数字部分で置き換える。
+ (明朝が |\rmfamily|、ゴシックが |\sffamily| に適用される。)
+ \Note 技術的制約のため
+ \footnote{プロポーショナル幅のフォントを使うためには、
+ そのフォントに合わせた{\TeX}側の論理フォント(TFM)を
+ 事前に用意する必要があるため。
+ 和文が全角幅しか使えないのも同じ理由である。}、
+ \Strong{半角等幅のフォント}しかサポートされないことに注意してほしい。
+ つまり、この設定を使うと欧文が全て等幅になってしまう。
+ 「部分的に欧文フォントを和文フォントに合わせたい」という場合は、
+ 後述の |relfont| オプションの使用も検討されたい。
+ \Note プリセット指定オプション\Strong{不使用}の場合は
+ こちらが既定で有効になる。
+ すなわち\Strong{欧文フォントも置き換えられる}。
+\item |noalphabet|\Means
+ |alphabet| の否定。
+ 欧文フォントは変更しない。
+% インストール時に欧文用の設定をしていない場合は必ずこれを
+% 指定する必要がある。
+ \Note プリセット指定オプション使用の場合はこちらが既定で有効になる。
+\item |otf|(既定)\Means
+ \Pkg{japanese-otf}パッケージの使用時に、
+ そのフォントも置き換えの対象とする。
+\item |nootf|\Means
+ |otf| の否定。
+ \Pkg{japanese-otf}パッケージのフォントは置き換えない。
+ \Note この場合、\Pkg{japanese-otf}パッケージで |noreplace| を
+ 指定しない限り、標準の和文フォントは変化しない。
+\item |prefer2004jis|\Means
+ {\pTeX}/{\upTeX}の標準和文フォントのCMapを「2004JIS字形」指定の
+ ものに変更する。
+ \footnote{\Pkg{japanese-otf}パッケージの和文フォントについては、
+ \Pkg{japanese-otf}パッケージの |jis2004| オプションで2004JIS字形
+ 指定を行う仕様になっている。
+ そのため、本パッケージの |prefer2004jis| の対象にはならない。
+ ところが0.7h版以前の本パッケージでは、
+ {\upTeX}上の\Pkg{japanese-otf}の和文フォントにも |prefer2004jis| を
+ 適用していた。
+ これは、昔の\Pkg{japanese-otf}が{\upTeX}上では |jis2004| オプションに
+ 未対応であったためであり、非公式の暫定仕様であった。
+ 現在では、この暫定仕様は廃止されている。}
+\item |noprefer2004jis|(既定)\Means
+ |prefer2004jis| の否定。
+\item |(no)jis2004|\Means
+ |(no)prefer2004jis| の別名。
+ \Note グローバルオプションに |jis2004| を指定して\Pkg{japanese-otf}と
+ \Pkg{pxchfon}の両方に適用することを意図している。
+\item |oneweight|\Means
+ \Pkg{japanese-otf}パッケージを単ウェイトで使用する場合に、
+ プリセット設定で使われるフォントの集合を{\pTeX}標準と同一にする。
+ \footnote{小塚フォントのプリセットでは、{\pTeX}標準のゴシック
+ (jisg等)にはMウェイト(Acrobatに付属のフォントの一つ)を
+ 割り当てる一方で、\Pkg{japanese-otf}パッケージの3ウェイトのゴシックには
+ R、B、Hウェイトを割り当てている。
+ 従って、\Pkg{japanese-otf}を単ウェイトで用いる時にMウェイトを使いたい
+ 場合には \texttt{oneweight} オプションを指定すればよい。
+ 現状では、小塚フォント以外のプリセットではこのオプションを
+ 用いる必要はない。}
+\item |nooneweight|(既定)\Means
+ |oneweight| の否定。
+\end{itemize}
+
+\paragraph{上級者向けオプション}
+\begin{itemize}
+\item |relfont|\Means
+ 指定された和文フォントの英数字部分を({\pLaTeX}の標準機能である)
+ \Strong{従属欧文フォント}として設定する。
+ すなわち、既定では欧文フォントは置き換えないが、|\selectfont| で
+ 和文フォントを選択する際に予め |\userelfont| を実行しておくと
+ 欧文も和文と同じ書体になる。
+ \footnote{特に
+ 「\texttt{\symbol{`\\}userelfont\symbol{`\\}selectfont}」
+ だけ実行すると、欧文が現在の和文と同じ書体になる。}
+ (ただし適用すべき和文ファミリについて置換が設定されていない
+ 場合は無効になる。)
+ \Note |alphabet|、|noalphabet|、|relfont| の3つのオプションは
+ 排他である。
+\item |everypage|\Means
+ DVIの全ページにマップ設定を書き込む。
+ \Note 詳細については\ref{sec:PageSelection}節を参照。
+\item |noeverypage|(既定)\Means
+ |everypage|の否定。
+ DVIの先頭ページにのみマップ設定を書き込む。
+\item \Strong{Unicode直接指定オプション}\Means
+ 一部または全部のフォントについて、エンコーディング指定方式を
+ “Cmap指定”から“Unicode直接指定”に変更する。
+ |nounicode|(既定)、|directunicode|、|directunicode*|、
+ |unicode*|、|unicode| の5種類の指定がある。
+ \Note 詳細については\ref{sec:DirectUnicode}節を参照。
+ \Note 一部のプリセット指定(|sourcehan|等)は
+ Unicode直接指定の既定値を変更する。
+%\item |directunicode|\Means
+% \Pkg{japanese-otf}パッケージのUnicode出力用フォント(|\UTF{}| の出力)
+% について、Unicodeを用いてフォントのグリフにアクセスするように
+% 設定する。
+% この設定を用いると、当該のフォントのもつ任意のUnicode文字
+% (ただし全角幅に限る)が利用可能になる。
+% \footnote{通常は、Unicodeを一旦Adobe-Japan1のCIDに変換して、
+% CIDでフォントのグリフにアクセスするという処理になる。
+% このため、Adobe-Japan1のグリフと対応しないUnicode文字は
+% 普通は使えない。なお、\texttt{directunicode} は0.6c版では
+% 横書きのみの対応であったが、0.7版で縦書きにも対応した。
+% ただし、dvipdfmxの仕様の都合で、縦書き用グリフにはならない。
+% また、現状では実質的に効果がBMP内の文字に限られる。}
+%\item |directunicode*|\Means
+% |directunicode| の設定を適用し、さらに、{\upTeX}標準の
+% 和文フォントにもUnicodeを用いたグリフアクセスを設定する。
+% \Note これは、「非標準的なCMapをもつOpenTypeフォント
+% \footnote{例えば、Adobeの「Source Han Sans」など。}%
+% を\Pkg{pxchfon}で使いたい」
+% という要求のための部分的な解決法である。
+% このオプションを利用する場合、状況によって一部の出力が異常になる
+% 可能性があることに予め注意すべきである。
+% 例えば、|prefer2004jis| は機能しなくなるし、また縦組の約物の
+% 出力は異常になる。
+%\item |nodirectunicode|(既定)\Means
+% |directunicode| の否定。
+\item |usecmapforalphabet|\Means
+ |alphabet|(または |relfont|)を指定して日本語フォントの英数字部分を
+ 欧文フォントとして使う際に、そのエンコーディング指定方式を
+ “CMap指定”にする。
+% \Note “CMap指定”と“Unicode直接指定”の違いについては
+% \ref{sec:DirectUnicode}節を参照。
+ \Note 半角英数字用の\texttt{UniJIS-UCS2-HW-H}というCMapが指定される。
+ \Note 字形セットがAJ1であるOpenTypeフォントの場合、“Unicode直接指定”
+ を使うと英数字がプロポーショナル幅のものになるがこれは
+ サポートされない(|alphabet| オプションの説明を参照)ので、
+ このオプションを指定して半角幅のものを使う必要がある。
+\item |nousecmapforalphabet|(既定)\Means
+ |usecmapforalphabet| の否定。
+ \Note 和文と異なり、欧文フォントでは実質的に“Unicode直接指定”の方が
+ 既定となっている。
+ \Note 一部のプリセット指定は |usecmapforalphabet| の指定を強制する。
+\item |dumpmap|\Means
+ 「通常マップファイルダンプ出力」を有効にする。
+ すなわち、本パッケージにより文書に設定されるマップ行を、
+ \Meta{ジョブ名}|.map| の名のファイルに書き出す。
+\item |nodumpmap|(既定)\Means
+ |dumpmap| の否定。
+\item |dumpmaptl|\Means
+ 「{\TeX} Liveマップファイルダンプ出力」を有効にする。
+ すなわち、本パッケージによる設定を再現する
+ kanji-config-updmap用のマップファイルのセット
+ (|ptex-NAME.map|、|otf-NAME.map|、|uptex-NAME.map|、
+ |otf-up-NAME.map| の4つ、ただし |NAME| はジョブ名)
+ を出力する。
+ \Note 例えば、\Pkg{japanese-otf}パッケージが使われない場合は
+ \Pkg{japanese-otf}パッケージ用のマップ行は適用されない。
+ そのため、通常ダンプ出力はそのようなマップ行は書き出されない。
+ これに対して、
+ {\TeX} Live用ダンプ出力は「実際に適用されるか」は無関係で
+ kanji-config-updmapの規則に従うため、
+ \Pkg{japanese-otf}パッケージ用のマップが |otf-*.map| に書き出される。
+\item |nodumpmaptl|(既定)\Means
+ |dumpmaptl| の否定。
+\item |strictcsi|\Means
+ |Identity-H/V| のCMapが指定されたマップ行について、CSI指定は
+ (仕様に厳密に従って)フォントがTrueTypeグリフの場合にのみ出力する。
+ \Note 「CSI指定」とはフォントファイル名の直後に書く“|/AJ1|”の類の
+ ことで、本来は(グリフ集合情報を持たない)TrueTypeグリフのフォント
+ のためのものである。
+ しかし、CFFグリフのフォントに対してCSI指定があっても特に問題は
+ 起こらず、また、フォントのグリフ種別の判断する処理は少し時間が
+ かかるため、既定では厳密な判定は行わない。
+\item |nostrictcsi|(既定)\Means
+ |strictcsi| の否定。
+ |Identity-H/V| に対するCSI指定は常に出力される。
+ \Note さすがにファイルに出力されたマップ行に不備があるのは
+ 避けたいので、|dumpmap(tl)| が指定された場合は、
+ 既定が |strictcsi| に変更される。
+\item |expert|(既定)\Means
+ Unicode直接指定の適用時
+ \footnote{置換されていないウェイトはUnicode直接指定にならない。
+ (\ref{ssec:DirectUnicodeNotice}節の注意を参照。)}%
+ に\Pkg{japanese-otf}の |expert| オプション
+ の機能を(可能な範囲で)エミュレートする。
+ \Note \Pkg{japanese-otf}の |expert| が指定されない場合は無意味。
+\item |noexpert|\Means
+ |expert| の否定。
+ Unicode直接指定時には\Pkg{japanese-otf}の |expert| は無効になる。
+\item |glyphid|\Means
+ GID指定入力(|\gid| 命令)の機能を有効にする。
+ \Note エンジンが{\upTeX}でかつUnicode直接指定
+ \footnote{置換されていないウェイトはUnicode直接指定にならない。
+ (\ref{ssec:DirectUnicodeNotice}節の注意を参照。)}%
+ が有効の場合にのみ利用できる。
+\item |noglyphid|(既定)\Means
+ |glyphid| の否定。
+\end{itemize}
+
+%===========================================================
+\section{機能}
+
+以下に該当する和文(CJK)用の論理フォント(原メトリックTFM)について、
+それに対応する物理フォント(OpenTypeフォント)を
+ユーザ指定のものに置き換える。
+\begin{itemize}
+\item {\pTeX}の標準のフォント --- |rml*|/|gbm*|
+\item {\upTeX}の日本語フォント --- |urml*|/|ugbm*|/|uprml*|/|upgbm*|
+\item {\upTeX}の中国語・韓国語フォント
+\item \Pkg{UTF}パッケージのフォント --- |hmr*|/|hkb*|/|unij*|/|cid*|
+\item \Pkg{japanese-otf}パッケージの日本語フォント
+ --- |{,up}hmin*|/|{,up}hgoth*|/|otf-{u,c}j*|
+\item \Pkg{japanese-otf}パッケージの中国語・韓国語フォント
+\item \Pkg{pxufont}パッケージのフォント
+ --- |zur-?j*|
+%\item \Pkg{PXfontspec}パッケージの日本語フォント --- |nja{r,s}-*|
+\end{itemize}
+
+\Note 中国語・韓国語フォントに対するサポートの詳細については
+\ref{sec:Non-Japanese}を参照。
+
+和文フォント置換は、dvipdfmxのマップ設定を文書内で
+(一時的に)変更するという方法で実現している。
+欧文フォントについては実現方法が少し異なる
+(\ref{sec:Mechanism-Alph}節を参照)。
+
+\paragraph{単ウェイトの場合の設定}
+
+\Pkg{japanese-otf}パッケージを |deluxe| オプション付きで用いている
+場合\textgt{以外}、すなわち明朝・ゴシックとも単ウェイトの場合、
+以下の命令を用いる。
+
+\begin{itemize}
+\item |\setminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 明朝体(|\mcfamily|)のフォントを置き換えるフォントを
+ ファイル名で指定する。
+ TTC形式の場合の該当のフォントの番号を\Meta{番号}に指定する。
+\item |\setgothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ ゴシック体(|\gtfamily|%
+ \footnote{単ウェイト設定を用いる多くの場合、明朝体の太字
+ (|\mcfamily|\linebreak[0]|\bfseries|)は
+ ゴシック体(|\gtfamily| と同じもの)で代替される。}%
+ )のフォントを置き換えるフォントをファイル名で指定する。
+ \Meta{番号}の意味は前項と同じ。
+\item 以上の2つの命令、および以降で紹介するフォント設定命令について、
+ \Meta{フォントファイル名}の値を |*| にするとフォント非埋込を指示する。
+ また、この値を空にすると、以前に(当該の命令により)設定されていた
+ 値を取り消して(dvipdfmxの)既定の設定に戻す。
+\end{itemize}
+
+以下に設定例を示す。
+
+\begin{quote}\small\begin{verbatim}
+\setminchofont{ipam.ttf} % 明朝体は"IPA明朝"
+\setgothicfont[0]{msgothic.ttc} % ゴシック体は"MS ゴシック"
+\setminchofont{*} % 明朝体は非埋込
+\setgothicfont{} % ゴシック体は既定設定に従う
+\end{verbatim}\end{quote}
+
+\paragraph{多ウェイトの場合の設定}
+
+\Pkg{japanese-otf}パッケージを |deluxe| 付きで用いている場合は、
+明朝・ゴシックともに3ウェイトを使う。
+この時は、各ウェイト毎にフォント指定ができる。
+またこの場合、丸ゴシック(|\mgfamily|)が使用可能になるが、
+これに対して置き換えるフォントを指定することができる。
+
+\begin{itemize}
+\newcommand*{\CNot}{\footnotesize}
+\item |\setlightminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 明朝・細ウェイト{\CNot (|\mcfamily\ltseries|)}
+\item |\setmediumminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 明朝・中ウェイト{\CNot (|\mcfamily\mdseries|)}
+\item |\setboldminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 明朝・太ウェイト{\CNot (|\mcfamily\bfseries|)}
+\item |\setmediumgothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ ゴシック・中ウェイト{\CNot (|\gtfamily\mdseries|)}
+\item |\setboldgothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ ゴシック・太ウェイト{\CNot (|\gtfamily\bfseries|)}
+\item |\setxboldgothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ ゴシック・極太ウェイト{\CNot (|\gtfamily\ebseries|)}
+\item |\setmarugothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 丸ゴシック{\CNot (|\mgfamily|)}
+\end{itemize}
+
+さらに、この場合、|\setminchofont| と |\setgothicfont| は各々のファミリの
+3ウェイト全てを指定のフォントで置き換える。
+実質的に単ウェイトになってしまうようで無意味に思えるが、
+例えば明朝を実際には 2ウェイトしか使わないという時に、
+\begin{quote}\small\begin{verbatim}
+\setminchofont{minchoW3.otf} %まず3ウェイト指定して
+\setboldminchofont{minchoW6.otf} %太だけ再指定する
+\end{verbatim}\end{quote}
+とする使い方が考えられる。
+特に、欧文フォントも置き換えたい場合は3ウェイトが
+全て指定されていないと有効にならないので、
+\begin{quote}\small\begin{verbatim}
+\setmediumminchofont{minchoW3.otf}
+\setboldminchofont{minchoW6.otf}
+\end{verbatim}\end{quote}
+では思い通りにならないことになる。
+また、この仕様のため、|deluxe| 以外の場合
+(既定、|bold|、|noreplace|)は |\setgothicfont| で指定した
+ものが確実にゴシック(単ウェイト)に反映される。
+
+\paragraph{上級者向け機能}
+\begin{itemize}
+\item |\usecmapforalphabet|\Means
+ |usecmapforalphabet| オプションの設定に切り替える。
+ (\ref{sec:Loading}節を参照。)
+\item |\nousecmapforalphabet|\Means
+ |nousecmapforalphabet| オプションの設定に切り替える。
+\item |\setnewglyphcmapprefix{|\Meta{文字列}|}|\Means
+ 2004JIS用のJISコード系のCMapの名前の接頭辞を指定する。
+ そのようなCMapは、{\pTeX}の標準和文フォントについて2004JIS字形を
+ 選択(|prefer2004jis| 指定)した時に必要となるが、
+ Adobeが配布しているCMapファイルには該当するものがないので、
+ それを適宜用意してそのファイル名をこの命令で指定する必要がある。
+ 引数に与えるのは最後の1文字(書字方向の「|H|」「|V|」)を除いた
+ 部分の文字列である。\par
+ CMap名接頭辞の既定値は「|2004-|」で、これは最近の{\TeX} Liveに
+ 含まれている「|2004-H|」等のCMapファイルを用いることを意味する。%
+ \footnote{%
+ 引数に \texttt{*} を与えた場合は \texttt{JISX0213-2004-H} が
+ 指定されたと見なされる(歴史的理由から)。}
+\item |\usefontmapfile{|\Meta{マップファイル名}|}|\Means
+ 指定のdvipdfmx用のマップファイルの読込を指示する。
+ pdf{\TeX}の |\pdfmapfile| に相当する機能。
+\item |\usefontmapline{|\Meta{マップ行}|}|\Means
+ dvipdfmxのマップ行を直接指定して、その読込を指示する。
+ pdf{\TeX}の |\pdfmapline| に相当する機能。
+\item |\diruni|\Means
+ 現在の和文フォントを“Unicode直接入力”
+ (フォントマップを“Unicode直接指定”にした上で
+ さらに和文VFをバイパスする)
+ の状態に切り替える(宣言型命令)。
+ これにより、実際のフォントがサポートする任意の
+ 文字が出力可能となる。
+ その代わり、この状態では、約物の周りの空き調整が無効になる。
+% 詳細については\ref{sec:Loading}節の |directunicode| オプションの
+% 説明を参照されたい。
+ \Note “Unicode直接指定”のオプションの何れか
+ (|unicode|等)が有効であり、
+ かつ現在の和文ファミリについてフォントの置き換えが有効に
+ なっている必要がある。
+ \Note 全角幅のグリフでないと正常に出力されない。
+ \Note この命令自体は単にシェープを |diruni| という値に変えて
+ いるだけであり、このシェープに“Unicode直接入力”のフォントが
+ 予め設定されているわけである。
+\item |\textdiruni{|\Meta{テキスト}|}|\Means
+ |\diruni| に対応する引数型命令。
+\item |\gid{|\Meta{整数}|}|\Means
+ 現在の和文フォントで、指定の値のGIDをもつグリフを出力する。
+ \Note 全角幅のグリフでないと正常に出力されない。
+ \Note エンジンが{\upLaTeX}であり、
+ |unicode| オプションが指定されていて、かつ、
+ 現在の和文ファミリについてフォントの置き換えが有効に
+ 有効になっている必要がある。
+\end{itemize}
+
+%===========================================================
+\section{プリセット指定}
+\label{sec:Preset}
+
+このパッケージの元々の意図は、標準のフォントを
+普段使っているものと全く別の書体に変えることであったが、
+例えば「普段使う設定が複数ありそれを簡単に切り替えたい」という
+場合にも有用である。
+そこで、{\pTeX}において広く行われている設定をパッケージ内に
+組み込んで、パッケージオプションでそれを呼び出すという機能が
+後になって追加された。
+\footnote{元々は\Pkg{PXjafont}という別のパッケージで
+提供されていた機能であるが、
+0.5版からこのパッケージに組み入れることにした。}
+
+パッケージオプションにプリセット名を指定すると予め決められたフォント
+ファイル名が |\setminchofont| 等の命令で設定される。
+例えば、
+\begin{quote}\small\begin{verbatim}
+\usepackage[ipa]{pxchfon}
+\end{verbatim}\end{quote}
+は以下の記述と同等になる。
+\begin{quote}\small\begin{verbatim}
+\usepackage[noalphabet]{pxchfon}
+\setminchofont{ipam.ttf}
+\setgothicfont{ipag.ttf}
+\end{verbatim}\end{quote}
+
+注意として、プリセット指定を用いた場合は、
+欧文フォントの置換について |noalphabet|(無効)が既定になる。
+プリセット指定の場合は和文が「普通の」明朝・ゴシックのフォントと
+なるので欧文フォントを変更しない場合が多いと考えられるためである。
+
+%-------------------
+\subsection{単ウェイト用の設定}
+
+後述の「多ウェイト用の設定」で述べられた設定以外で使う場合に使用する。
+
+\begin{itemize}
+\item |noembed|\Means
+ フォントを埋め込まない。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{*} % 非埋込
+\setgothicfont{*} % 非埋込
+\end{verbatim}\end{quote}
+
+\item |ms|\Means
+ MSフォント。
+\begin{quote}\small\begin{verbatim}
+\setminchofont[0]{msmincho.ttc} % MS 明朝
+\setgothicfont[0]{msgothic.ttc} % MS ゴシック
+\end{verbatim}\end{quote}
+
+\item |ipa|\Means
+ IPAフォント。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{ipam.ttf} % IPA明朝
+\setgothicfont{ipag.ttf} % IPAゴシック
+\end{verbatim}\end{quote}
+
+\item |ipaex|\Means
+ IPAexフォント。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{ipaexm.ttf} % IPAex明朝
+\setgothicfont{ipaexg.ttf} % IPAexゴシック
+\end{verbatim}\end{quote}
+\end{itemize}
+
+%-------------------
+\subsection{多ウェイト用の設定}
+
+\Pkg{japanese-otf}パッケージの |deluxe| オプション使用時に有効になる。
+明朝3ウェイト、ゴシック3ウェイト、丸ゴシック1ウェイトを設定する。
+
+\begin{itemize}
+\item |ms-hg|\Means
+ MSフォント + HGフォント。
+ \Note HGフォント = Microsoft Office 付属の日本語フォント
+ \Note 「HG丸ゴシックM-PRO」
+ は欧文が等幅でないので |alphabet| オプション指定と
+ ともに使うことができない。
+ (後掲の |ipa-hg|、|ipaex-hg| についても同様。)
+
+\begin{quote}\small\begin{verbatim}
+\setminchofont[0]{msmincho.ttc} % MS 明朝
+\setboldminchofont[0]{hgrme.ttc} % HG明朝E
+\setgothicfont[0]{msgothic.ttc} % MS ゴシック
+\setmediumgothicfont[0]{hgrgm.ttc} % HGゴシックM
+\setboldgothicfont[0]{hgrge.ttc} % HGゴシックE
+\setxboldgothicfont[0]{hgrsgu.ttc} % HG創英角ゴシックUB
+\setmarugothic{hgrsmp.ttf} % HG丸ゴシックM-PRO
+\end{verbatim}\end{quote}
+
+\item |ipa-hg|\Means
+ IPAフォント + HGフォント。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{ipam.ttf} % IPA明朝
+\setboldminchofont[0]{hgrme.ttc} % HG明朝E
+\setgothicfont{ipag.ttf} % IPAゴシック
+\setmediumgothicfont[0]{hgrgm.ttc} % HGゴシックM
+\setboldgothicfont[0]{hgrge.ttc} % HGゴシックE
+\setxboldgothicfont[0]{hgrsgu.ttc} % HG創英角ゴシックUB
+\setmarugothic{hgrsmp.ttf} % HG丸ゴシックM-PRO
+\end{verbatim}\end{quote}
+
+\item |ipaex-hg|\Means
+ IPAexフォント + HGフォント。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{ipaexm.ttf} % IPAex明朝
+\setboldminchofont[0]{hgrme.ttc} % HG明朝E
+\setgothicfont{ipaexg.ttf} % IPAexゴシック
+\setmediumgothicfont[0]{hgrgm.ttc} % HGゴシックM
+\setboldgothicfont[0]{hgrge.ttc} % HGゴシックE
+\setxboldgothicfont[0]{hgrsgu.ttc} % HG創英角ゴシックUB
+\setmarugothic{hgrsmp.ttf} % HG丸ゴシックM-PRO
+\end{verbatim}\end{quote}
+
+\item |moga-mobo|\Means
+ Mogaフォント + Moboフォント。
+ \Note 「丸ゴシック」ファミリに MoboGothic を充てている。
+ \Note Moga/MoboフォントはCIDアクセス非対応であるが、
+ フォント実体を変えることで |prefer2004jis| オプションに
+ 対応させている。
+ \par\medskip
+ \textgt{|prefer2004jis| 非指定時}
+\begin{quote}\small\begin{verbatim}
+\setminchofont[3]{mogam.ttc} % Moga90Mincho
+\setboldminchofont[3]{mogamb.ttc} % Moga90Mincho Bold
+\setgothicfont[2]{mogag.ttc} % Moga90Gothic
+\setboldgothicfont[2]{mogagb.ttc} % Moga90Gothic Bold
+\setxboldgothicfont[2]{mogagb.ttc} % Moga90Gothic Bold
+\setmarugothic[2]{mobog.ttc} % Mobo90Gothic
+\end{verbatim}\end{quote}
+ \par\medskip
+ \textgt{|prefer2004jis| 指定時}
+\begin{quote}\small\begin{verbatim}
+\setminchofont[0]{mogam.ttc} % MogaMincho
+\setboldminchofont[0]{mogamb.ttc} % MogaMincho Bold
+\setgothicfont[0]{mogag.ttc} % MogaGothic
+\setboldgothicfont[0]{mogagb.ttc} % MogaGothic Bold
+\setxboldgothicfont[0]{mogagb.ttc} % MogaGothic Bold
+\setmarugothic[0]{mobog.ttc} % MoboGothic
+\end{verbatim}\end{quote}
+
+\item |moga-mobo-ex|\Means
+ MogaExフォント + MoboExフォント。
+ \Note 「丸ゴシック」ファミリに MoboExGothic を充てている。
+ \Note フォント実体を変えることで |prefer2004jis| オプションに
+ 対応させている。
+ \par\medskip
+ \textgt{|prefer2004jis| 非指定時}
+\begin{quote}\small\begin{verbatim}
+\setminchofont[4]{mogam.ttc} % MogaEx90Mincho
+\setboldminchofont[4]{mogamb.ttc} % MogaEx90Mincho Bold
+\setgothicfont[3]{mogag.ttc} % MogaEx90Gothic
+\setboldgothicfont[3]{mogagb.ttc} % MogaEx90Gothic Bold
+\setxboldgothicfont[3]{mogagb.ttc} % MogaEx90Gothic Bold
+\setmarugothic[3]{mobog.ttc} % MoboEx90Gothic
+\end{verbatim}\end{quote}
+ \par\medskip
+ \textgt{|prefer2004jis| 指定時}
+\begin{quote}\small\begin{verbatim}
+\setminchofont[1]{mogam.ttc} % MogaExMincho
+\setboldminchofont[1]{mogamb.ttc} % MogaExMincho Bold
+\setgothicfont[1]{mogag.ttc} % MogaExGothic
+\setboldgothicfont[1]{mogagb.ttc} % MogaExGothic Bold
+\setxboldgothicfont[1]{mogagb.ttc} % MogaExGothic Bold
+\setmarugothic[1]{mobog.ttc} % MoboExGothic
+\end{verbatim}\end{quote}
+
+\item |moga-maruberi|\Means
+ Mogaフォント + モトヤLマルベリ3等幅。
+ \Note |moga-mobo| と以下を除いて同じ。
+\begin{quote}\small\begin{verbatim}
+\setmarugothic{MTLmr3m.ttf} % モトヤLマルベリ3等幅
+\end{verbatim}\end{quote}
+
+\item |ume|\Means
+ 梅フォント。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{ume-tmo3.ttf} % 梅明朝
+\setgothicfont{ume-tgo5.ttf} % 梅ゴシックO5
+\setmediumgothicfont{ume-tgo4.ttf} % 梅ゴシック
+\setmarugothic{ume-tgo5.ttf} % 梅ゴシックO5
+\end{verbatim}\end{quote}
+
+\item |kozuka-pro|\Means
+ 小塚フォント(Pro版)。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{KozMinPro-Regular.otf} % 小塚明朝 Pro R
+\setlightminchofont{KozMinPro-Light.otf} % 小塚明朝 Pro L
+\setboldminchofont{KozMinPro-Bold.otf} % 小塚明朝 Pro B
+\setgothicfont{KozGoPro-Medium.otf} % 小塚ゴシック Pro M
+\setmediumgothicfont{KozGoPro-Regular.otf} % 小塚ゴシック Pro R
+\setboldgothicfont{KozGoPro-Bold.otf} % 小塚ゴシック Pro B
+\setxboldgothicfont{KozGoPro-Heavy.otf} % 小塚ゴシック Pro H
+\setmarugothicfont{KozGoPro-Heavy.otf} % 小塚ゴシック Pro H
+\end{verbatim}\end{quote}
+
+\item |kozuka-pr6|\Means
+ 小塚フォント(Pr6版)。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{KozMinProVI-Regular.otf} % 小塚明朝 Pro-VI R
+\setlightminchofont{KozMinProVI-Light.otf} % 小塚明朝 Pro-VI L
+\setboldminchofont{KozMinProVI-Bold.otf} % 小塚明朝 Pro-VI B
+\setgothicfont{KozGoProVI-Medium.otf} % 小塚ゴシック Pro-VI M
+\setmediumgothicfont{KozGoProVI-Regular.otf} % 小塚ゴシック Pro-VI R
+\setboldgothicfont{KozGoProVI-Bold.otf} % 小塚ゴシック Pro-VI B
+\setxboldgothicfont{KozGoProVI-Heavy.otf} % 小塚ゴシック Pro-VI H
+\setmarugothicfont{KozGoProVI-Heavy.otf} % 小塚ゴシック Pro-VI H
+\end{verbatim}\end{quote}
+
+\item |kozuka-pr6n|\Means
+ 小塚フォント(Pr6n版)。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{KozMinPr6N-Regular.otf} % 小塚明朝 Pr6N R
+\setlightminchofont{KozMinPr6N-Light.otf} % 小塚明朝 Pr6N L
+\setboldminchofont{KozMinPr6N-Bold.otf} % 小塚明朝 Pr6N B
+\setgothicfont{KozGoPr6N-Medium.otf} % 小塚ゴシック Pr6N M
+\setmediumgothicfont{KozGoPr6N-Regular.otf} % 小塚ゴシック Pr6N R
+\setboldgothicfont{KozGoPr6N-Bold.otf} % 小塚ゴシック Pr6N B
+\setxboldgothicfont{KozGoPr6N-Heavy.otf} % 小塚ゴシック Pr6N H
+\setmarugothicfont{KozGoPr6N-Heavy.otf} % 小塚ゴシック Pr6N H
+\end{verbatim}\end{quote}
+
+\item |hiragino-pro|\Means
+ ヒラギノフォント基本6書体セット(Pro/Std版) + 明朝W2。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{HiraMinPro-W3.otf} % ヒラギノ明朝 Pro W3
+\setlightminchofont{HiraMinPro-W2.otf} % ヒラギノ明朝 Pro W2
+\setboldminchofont{HiraMinPro-W6.otf} % ヒラギノ明朝 Pro W6
+\setgothicfont{HiraKakuPro-W3.otf} % ヒラギノ角ゴ Pro W3
+\setboldgothicfont{HiraKakuPro-W6.otf} % ヒラギノ角ゴ Pro W6
+\setxboldgothicfont{HiraKakuStd-W8.otf} % ヒラギノ角ゴ Std W8
+\setmarugothicfont{HiraMaruPro-W4.otf} % ヒラギノ丸ゴ Pro W4
+\end{verbatim}\end{quote}
+
+\item |hiragino-pron|\Means
+ ヒラギノフォント基本6書体セット(ProN/StdN版) + 明朝W2。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{HiraMinProN-W3.otf} % ヒラギノ明朝 ProN W3
+\setlightminchofont{HiraMinProN-W2.otf} % ヒラギノ明朝 ProN W2
+\setboldminchofont{HiraMinProN-W6.otf} % ヒラギノ明朝 ProN W6
+\setgothicfont{HiraKakuProN-W3.otf} % ヒラギノ角ゴ ProN W3
+\setboldgothicfont{HiraKakuProN-W6.otf} % ヒラギノ角ゴ ProN W6
+\setxboldgothicfont{HiraKakuStdN-W8.otf} % ヒラギノ角ゴ StdN W8
+\setmarugothicfont{HiraMaruProN-W4.otf} % ヒラギノ丸ゴ ProN W4
+\end{verbatim}\end{quote}
+
+\item |hiragino-elcapitan-pro|\Means
+ ヒラギノフォント(Mac~OS~X El~Capitan 搭載;Pro/Std版) + 明朝W2。
+\begin{quote}\small\begin{verbatim}
+\setminchofont[1]{HiraginoSerif-W3.ttc}
+\setlightminchofont{HiraMinPro-W2.otf}
+\setboldminchofont[1]{HiraginoSerif-W6.ttc}
+\setgothicfont[3]{HiraginoSans-W3.ttc}
+\setboldgothicfont[3]{HiraginoSans-W6.ttc}
+\setxboldgothicfont[2]{HiraginoSans-W8.ttc}
+\setmarugothicfont[0]{HiraginoSansR-W4.ttc}
+\end{verbatim}\end{quote}
+
+\item |hiragino-elcapitan-pron|\Means
+ ヒラギノフォント(Mac~OS~X El~Capitan 搭載;ProN/StdN版) + 明朝W2。
+\begin{quote}\small\begin{verbatim}
+\setminchofont[0]{HiraginoSerif-W3.ttc}
+\setlightminchofont{HiraMinProN-W2.otf}
+\setboldminchofont[0]{HiraginoSerif-W6.ttc}
+\setgothicfont[2]{HiraginoSans-W3.ttc}
+\setboldgothicfont[2]{HiraginoSans-W6.ttc}
+\setxboldgothicfont[3]{HiraginoSans-W8.ttc}
+\setmarugothicfont[1]{HiraginoSansR-W4.ttc}
+\end{verbatim}\end{quote}
+
+\item |morisawa-pro|\Means
+ モリサワフォント基本7書体(Pro版)。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{A-OTF-RyuminPro-Light.otf} % A-OTF リュウミン Pro L-KL
+\setboldminchofont{A-OTF-FutoMinA101Pro-Bold.otf} % A-OTF 太ミンA101 Pro
+\setgothicfont{A-OTF-GothicBBBPro-Medium.otf} % A-OTF 中ゴシックBBB Pro
+\setboldgothicfont{A-OTF-FutoGoB101Pro-Bold.otf} % A-OTF 太ゴB101 Pro
+\setxboldgothicfont{A-OTF-MidashiGoPro-MB31.otf} % A-OTF 見出ゴMB31 Pro
+\setmarugothicfont{A-OTF-Jun101Pro-Light.otf} % A-OTF じゅん Pro 101
+\end{verbatim}\end{quote}
+
+\item |morisawa-pr6n|\Means
+ モリサワフォント基本7書体(Pr6N版
+ \footnote{「じゅん」はPr6N版が存在しないためPro版が使われる。})。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{A-OTF-RyuminPr6N-Light.otf} % A-OTF リュウミン Pr6N L-KL
+\setboldminchofont{A-OTF-FutoMinA101Pr6N-Bold.otf} % A-OTF 太ミンA101 Pr6N
+\setgothicfont{A-OTF-GothicBBBPr6N-Medium.otf} % A-OTF 中ゴシックBBB Pr6N
+\setboldgothicfont{A-OTF-FutoGoB101Pr6N-Bold.otf} % A-OTF 太ゴB101 Pr6N
+\setxboldgothicfont{A-OTF-MidashiGoPr6N-MB31.otf} % A-OTF 見出ゴMB31 Pr6N
+\setmarugothicfont{A-OTF-Jun101Pro-Light.otf} % A-OTF じゅん Pro 101
+\end{verbatim}\end{quote}
+
+\item |yu-win|\Means
+ 游書体(Windows~8.1搭載版)。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{yumin.ttf} % 游明朝 Regular
+\setlightminchofont{yuminl.ttf} % 游明朝 Light
+\setboldminchofont{yumindb.ttf} % 游明朝 Demibold
+\setgothicfont{yugothic.ttf} % 游ゴシック Regular
+\setboldgothicfont{yugothib.ttf} % 游ゴシック Bold
+\setxboldgothicfont{yugothib.ttf} % 游ゴシック Bold
+\setmarugothicfont{yugothic.ttf} % 游ゴシック Regular
+\end{verbatim}\end{quote}
+
+\item |yu-win10|\Means
+ 游書体(Windows~10搭載版)。
+ \Note フォントの性質のため、この設定では欧文引用符
+ “\,”‘\,’の出力が不正になる。
+ この不具合は |unicode| オプションを指定する
+ (dvipdfmxの20170918版が必要)、
+ または代わりに |yu-win10+| プリセットを指定する
+ (dvipdfmxの20170318版が必要)ことで回避できる。
+ 詳細については\ref{sec:DirectUnicode}節を参照されたい。
+
+\begin{quote}\small\begin{verbatim}
+\setminchofont{yumin.ttf}
+\setlightminchofont{yuminl.ttf}
+\setboldminchofont{yumindb.ttf}
+\setgothicfont[0]{YuGothM.ttc}
+\setmediumgothicfont[0]{YuGothR.ttc}
+\setboldgothicfont[0]{YuGothB.ttc}
+\setxboldgothicfont[0]{YuGothB.ttc}
+\setmarugothicfont[0]{YuGothM.ttc}
+\end{verbatim}\end{quote}
+
+\item |yu-osx|\Means
+ 游書体(Mac OS X搭載版)。
+\begin{quote}\small\begin{verbatim}
+\setminchofont{YuMin-Medium.otf} % 游明朝体 ミディアム
+\setboldminchofont{YuMin-Demibold.ttf} % 游明朝体 デミボールド
+\setgothicfont{YuGo-Medium.otf} % 游ゴシック体 ミディアム
+\setboldgothicfont{YuGo-Bold.otf} % 游ゴシック体 ボールド
+\setxboldgothicfont{YuGo-Bold.otf} % 游ゴシック体 ボールド
+\setmarugothicfont{YuGo-Medium.otf} % 游ゴシック体 ミディアム
+\end{verbatim}\end{quote}
+
+\item |sourcehan-otc|\Means
+ Source Han Serif(源ノ明朝)+ Source Han Sans(源ノ角ゴシック)、
+ OTC版。
+
+\begin{quote}\small\begin{verbatim}
+\setminchofont[0]{SourceHanSerif-Regular.ttc}
+\setlightminchofont[0]{SourceHanSerif-Light.ttc}
+\setboldminchofont[0]{SourceHanSerif-Bold.ttc}
+\setgothicfont[0]{SourceHanSans-Medium.ttc}
+\setmediumgothicfont[0]{SourceHanSans-Regular.ttc}
+\setboldgothicfont[0]{SourceHanSans-Bold.ttc}
+\setxboldgothicfont[0]{SourceHanSans-Heavy.ttc}
+\setmarugothicfont[0]{SourceHanSans-Medium.ttc}
+\end{verbatim}\end{quote}
+
+\item |sourcehan|\Means
+ Source Han Serif(源ノ明朝)+ Source Han Sans(源ノ角ゴシック)、
+ 言語別OTF版。
+
+\begin{quote}\small\begin{verbatim}
+\setminchofont{SourceHanSerif-Regular.otf}
+\setlightminchofont{SourceHanSerif-Light.otf}
+\setboldminchofont{SourceHanSerif-Bold.otf}
+\setgothicfont{SourceHanSans-Medium.otf}
+\setmediumgothicfont{SourceHanSans-Regular.otf}
+\setboldgothicfont{SourceHanSans-Bold.otf}
+\setxboldgothicfont{SourceHanSans-Heavy.otf}
+\setmarugothicfont{SourceHanSans-Medium.otf}
+\end{verbatim}\end{quote}
+
+\item |sourcehan-jp|\Means
+ Source Han Serif JP(源ノ明朝)+ Source Han Sans JP(源ノ角ゴシック)、
+ 地域別サブセットOTF版。
+
+\begin{quote}\small\begin{verbatim}
+\setminchofont{SourceHanSerifJP-Regular.otf}
+\setlightminchofont{SourceHanSerifJP-Light.otf}
+\setboldminchofont{SourceHanSerifJP-Bold.otf}
+\setgothicfont{SourceHanSansJP-Medium.otf}
+\setmediumgothicfont{SourceHanSansJP-Regular.otf}
+\setboldgothicfont{SourceHanSansJP-Bold.otf}
+\setxboldgothicfont{SourceHanSansJP-Heavy.otf}
+\setmarugothicfont{SourceHanSansJP-Medium.otf}
+\end{verbatim}\end{quote}
+
+\item |noto-otc|\Means
+ Noto Serif CJK JP + Noto Sans CJK JP、
+ OTC版。
+
+\begin{quote}\small\begin{verbatim}
+\setminchofont[0]{NotoSerifCJK-Regular.ttc}
+\setlightminchofont[0]{NotoSerifCJK-Light.ttc}
+\setboldminchofont[0]{NotoSerifCJK-Bold.ttc}
+\setgothicfont[0]{NotoSansCJK-Medium.ttc}
+\setmediumgothicfont[0]{NotoSansCJK-Regular.ttc}
+\setboldgothicfont[0]{NotoSansCJK-Bold.ttc}
+\setxboldgothicfont[0]{NotoSansCJK-Black.ttc}
+\setmarugothicfont[0]{NotoSansCJK-Medium.ttc}
+\end{verbatim}\end{quote}
+
+\item |noto|\Means
+ Noto Serif CJK JP + Noto Sans CJK JP、
+ 言語別OTF版。
+
+\begin{quote}\small\begin{verbatim}
+\setminchofont{NotoSerifCJKjp-Regular.otf}
+\setlightminchofont{NotoSerifCJKjp-Light.otf}
+\setboldminchofont{NotoSerifCJKjp-Bold.otf}
+\setgothicfont{NotoSansCJKjp-Medium.otf}
+\setmediumgothicfont{NotoSansCJKjp-Regular.otf}
+\setboldgothicfont{NotoSansCJKjp-Bold.otf}
+\setxboldgothicfont{NotoSansCJKjp-Black.otf}
+\setmarugothicfont{NotoSansCJKjp-Medium.otf}
+\end{verbatim}\end{quote}
+
+\item |noto-jp|\Means
+ Noto Serif JP + Noto Sans JP、
+ 地域別サブセットOTF版。
+
+\begin{quote}\small\begin{verbatim}
+\setminchofont{NotoSerifJP-Regular.otf}
+\setlightminchofont{NotoSerifJP-Light.otf}
+\setboldminchofont{NotoSerifJP-Bold.otf}
+\setgothicfont{NotoSansJP-Medium.otf}
+\setmediumgothicfont{NotoSansJP-Regular.otf}
+\setboldgothicfont{NotoSansJP-Bold.otf}
+\setxboldgothicfont{NotoSansJP-Black.otf}
+\setmarugothicfont{NotoSansJP-Medium.otf}
+\end{verbatim}\end{quote}
+
+\end{itemize}
+
+%-------------------
+\subsection{ptex-fontmaps互換のオプション}
+
+\Pkg{ptex-fontmaps}のプリセット名を別名として用意した。
+
+\begin{itemize}
+\item |noEmbed|\Means |noembed| の別名。
+\item |kozuka|\Means |kozuka-pro| の別名。
+\item |hiragino|\Means |hiragino-pro| の別名。
+\item |hiragino-elcapitan|\Means |hiragino-elcapitan-pro| の別名。
+\item |morisawa|\Means |morisawa-pro| の別名。
+\end{itemize}
+
+%-------------------
+\subsection{廃止されたオプション}
+
+以下に挙げるのは、0.5版以降で非推奨となっていたプリセット設定である。
+これらは1.0版において\textgt{廃止}されたため、
+現在は使用するとエラーが発生する。
+
+\begin{itemize}
+\item |ipa-otf|\Means
+ 「拡張子が |.otf| の」IPAフォント。
+ \Note 代替のプリセットはない。
+\item |ipa-otf-dx|\Means
+ 「拡張子が |.otf| の」IPAフォント + HGフォント。
+ \Note 代替のプリセットはない。
+\item |kozuka4|\Means
+ 小塚フォント(Pro版)の単ウェイト使用。
+ \Note |kozuka-pro|+|oneweight| オプションで代替可能。
+\item |kozuka6|\Means
+ 小塚フォント(Pr6版)の単ウェイト使用。
+ \Note |kozuka-pr6|+|oneweight| オプションで代替可能。
+\item |kozuka6n|\Means
+ 小塚フォント(Pr6n版)の単ウェイト使用。
+ \Note |kozuka-pr6n|+|oneweight| オプションで代替可能。
+\item |hiragino|\Means
+ ヒラギノフォントの単ウェイト使用。
+ \Note |hiragino-pro|+|oneweight| オプションで代替可能。
+ \Note 1.2a版以降で、|hiragino-pro| の別名として再定義された。
+\item |ms-dx|\Means |ms-hg| の別名。
+\item |ipa-ttf|\Means |ipa| の別名。
+\item |ipa-ttf-dx|\Means |ipa-hg| の別名。
+\item |ipav2|\Means |ipa| の別名。
+\item |ipav2-dx|\Means |ipa-hg| の別名。
+\item |ipa-dx|\Means |ipa-hg| の別名。
+\item |hiragino-dx|\Means |hiragino-pro| の別名。
+\end{itemize}
+
+%===========================================================
+\section{ファイルプリセット機能}
+\label{sec:FilePreset}
+
+ファイルプリセット機能を利用すると、既存のdvipdfmx用のマップファイル
+の読込を文書内で指定することが可能になる。
+パッケージオプションに次の何れかの形式の文字列を指定すると、
+ファイルプリセットの指定と見なされる。
+
+\begin{itemize}
+\item |+|\mbox{}\textgt{名前}\Means
+ {\TeX} Live用ファイルプリセット。
+\item |*|\mbox{}\textgt{名前}\Means
+ 単純ファイルプリセット。
+\end{itemize}
+
+\subsection{{\TeX} Live用ファイルプリセット機能}
+
+{\TeX} Liveでは{(u)\pLaTeX}のフォントの設定を
+kanji-config-updmapというユーティリティで行うことができる。
+そこでは、決まった形式のファイル名をもつdvipdfmx用の
+マップファイルを用意していて、ユーザが要求したプリセット名に
+対応したファイルをupdmapの機構を用いて有効化することで、
+dvipdfmxの既定の設定を切り替えている。
+
+パッケージオプションとして |+| で始まる文字列
+(仮に |+NAME| とする)を与えると、
+kanji-config-updmap用のマップファイルの読込が指示される。
+具体的には、以下の名前のマップファイルが読み込まれる。
+
+\begin{itemize}
+\item {\pLaTeX}の場合:
+ \begin{itemize}
+ \item |ptex-NAME.map|
+ \item |otf-NAME.map|
+ \end{itemize}
+\item {\upLaTeX}の場合、上記のものに加えて以下のもの:
+ \begin{itemize}
+ \item |uptex-NAME.map|
+ \item |otf-up-NAME.map|
+ \end{itemize}
+\end{itemize}
+
+例えば、{\pLaTeX}文書において以下のようにパッケージを読み込んだとする。
+
+\begin{quote}\small\begin{verbatim}
+\usepackage[+yu-win]{pxchfon}
+\end{verbatim}\end{quote}
+
+この場合、|ptex-yu-win.map| と |otf-yu-win.map| の2つのマップファイル
+がdvipdfmx実行時に読み込まれる。
+
+\subsection{単純ファイルプリセット機能}
+
+パッケージオプションとして |*| で始まる文字列
+(仮に |*NAME| とする)を与えると、
+|NAME.map| という名前のマップファイルの読込が指示される。
+
+例えば、以下のようにパッケージを読み込んだとする。
+
+\begin{quote}\small\begin{verbatim}
+\usepackage[*yu]{pxchfon}
+\end{verbatim}\end{quote}
+
+この場合、|yu.map| というマップファイル
+\footnote{例えばW32{\TeX}ではこの名前のマップファイルが
+ 用意されている。}%
+がdvipdfmx実行時に読み込まれる。
+
+
+%===========================================================
+\section{Unicode直接指定}
+\label{sec:DirectUnicode}
+
+dvipdfmxのフォントマップ設定において、和文フォントのエンコーディングを
+指定する方法は“CMap指定”と“Unicode直接指定”の2種類がある。
+\footnote{詳細についてはdvipdfmxのマニュアルを参照されたい。}
+かつては、Unicodeで包摂されている異体字を区別するためには
+CMap指定の利用が必須であったため、慣習的に、dvipdfmxのフォントマップ
+設定においてはCMap指定が主に用いられてきた。
+
+しかしこのCMap指定は、Adobe-Japan1(AJ1)%
+\footnote{または各々のCJK言語の“Adobe標準”のグリフ集合、
+例えば簡体字中国語ならAdobe-GB1。}%
+のグリフ集合に対応したOpenTypeフォントにしか適用できない、
+という欠点がある。
+近年は、“AJ1でない”OpenTypeフォント
+\footnote{例えば、Adobe開発のフリーフォントの
+「Source Han Serif(源ノ明朝)」など。}%
+が普及しつつあり、そのようなフォントでは異体字の切替などの
+付加機能を専ら“OpenType属性の指定”により行うことを想定している。
+これに対応するため、dvipdfmxのマップ指定において
+“OpenType属性の指定”がサポートされるようになった。
+
+\Pkg{pxchfon}では和文フォントのエンコーディングに対する
+Unicode直接指定をサポートしている。
+特に1.0版から、新しいdvipdfmxのOpenType属性の指定を積極的に
+利用することで、“AJ1でない”フォントを使用した場合でも、
+CMap指定の場合の機能性を可能な限り保つことを目指している。
+
+\Note Unicode直接指定に対するサポートは発展途上であるため、
+過渡的な要素が多く混ざっていてやや煩雑になっていることに
+注意してほしい。
+
+\paragraph{“Unicode直接指定”オプション}
+以下のパッケージオプションを指定することで
+Unicode直接指定の有効・無効を切り替えられる。
+
+\begin{itemize}
+\item |unicode|\Means
+ 全般的にUnicode直接指定を利用する。
+ 最も理想的な設定であるが、\Strong{{\TeX} Live 2018以降のdvipdfmx}%
+ (20170918版以降)が必要である。
+\item |unicode*|\Means
+ {\TeX} Live 2017のdvipdfmx(20170318版)専用の\Strong{過渡的}な設定。
+ \Note 1.5版以降では\Strong{非推奨}であり、
+ 将来的に廃止される予定である。
+\item |directunicode*|\Means
+ 全般的にUnicode直接指定を利用するが、
+ 古い({\TeX} Live 2016以前の)dvipdfmxに
+ 対応するために、OpenType属性の指定を全く行わない。
+ つまり、入力のUnicode文字に対する既定のグリフが常に出力され、
+ 異体字の区別は全て無効になる。
+\item |directunicode|\Means
+ \Pkg{japanese-otf}の|\UTF|入力のフォントに限って
+ Unicode直接指定を利用する。
+ |directunicode*| と同じくOpenType属性の指定を全く行わない。
+ \Note 前述の通り |directunicode*| はデメリットが強いため、
+ 適用範囲を限定したもの。
+\end{itemize}
+
+\paragraph{Unicode直接指定専用プリセット}
+
+以下に挙げるプリセット設定は“AJ1でない”OpenTypeフォントを
+利用するものである。
+そのため、これらのプリセットを指定した場合は、
+自動的に |unicode| が(既定として)指定される%
+\footnote{1.0~1.1b版では{\TeX} Live 2017のための暫定措置として
+「|+|付の特殊プリセットへの自動振替」が行われていたが、
+1.2版から本来の仕様が適用される。}。
+
+\begin{itemize}
+\item |sourcehan-otc|
+\item |sourcehan|
+\item |sourcehan-jp|
+\item |noto-otc|
+\item |noto|
+\item |noto-jp|
+\end{itemize}
+
+\paragraph{特殊プリセット指定\<(非推奨)}
+
+以下に挙げるプリセット設定は{\TeX} Live 2017%
+(dvipdfmx 20170318版)のために用意された特殊な設定である。
+
+1.5版においてこれらのプリセットは\Strong{非推奨}となった。
+将来的には廃止される予定である。
+そのため、これらのプリセットを利用している場合は、
+\Strong{{\TeX}システムを更新}(dvipdfmxを20170918版以降に)した上で、
+“本来の正しい設定”に移行することを推奨する。
+
+\begin{itemize}
+\item |sourcehan+|、|sourcehan-otc+|、|noto+|、|noto-otc+|:\\
+ →代わりに|+|無しの名前(|sourcehan| 等)を指定する。
+ \Note 前述の通り、|unicode| は自動的に補われる。
+ \Note 日本語版以外のフォントはもはや不要である。
+
+\item |yu-win10+|:\\
+ →代わりに |yu-win10| と |unicode| を指定する。
+\end{itemize}
+
+%-------------------
+\subsection{Unicode直接指定に関する注意事項}
+\label{ssec:DirectUnicodeNotice}
+
+\begin{itemize}
+\item プリセット指定または |\set...font| 命令で
+ フォントを置換していないウェイトについては、
+ |unicode| 指定時であってもUnicode直接指定は効かない。
+ 従って、そのようなウェイトはUnicode直接指定が想定する出力には
+ ならず、またUnicode直接指定を必要とする機能
+ (|expert| や |glyphid| の各オプション)
+ も使えない。
+\item 特に、|expert| については、
+ 非置換のウェイトの動作が非常に複雑で解りにくい。
+ 従って、|expert| を指定する場合は、全ファミリ・ウェイトについて
+ 置換を指定することを推奨する
+ (これに反する場合は警告が出る)。
+\item 非埋込を指定したウェイトについてはUnicode直接指定が
+ 無効になる。
+ この動作も非常に解りにくいため、
+ Unicode直接指定を用いる場合は、非埋込の指定をしないことを推奨する
+ (これに反する場合は警告が出る)。
+\end{itemize}
+
+
+%===========================================================
+\section{dvipdfmxのページ抜粋処理への対応}
+\label{sec:PageSelection}
+
+dvipdfmxには元のDVI文書の一部のページだけを抜粋してPDF文書に変換する
+機能がある(|-s| オプション)。
+ところが、本パッケージでは、ユーザ命令で指定されたフォントマップ情報を、
+DVIの先頭ページに書き出すという処理方法をとっている
+(すなわち「ページ独立性」を保っていない)ため、
+先頭ページを含まない抜粋を行った場合は、
+フォント置換が効かないという現象が発生する。
+
+この問題を解決するのが |everypage| パッケージオプションである。
+このオプションが指定された場合は、
+DVI文書の全てのページにフォントマップ情報を書き出すので、
+ページ抜粋を行っても確実にフォント置換が有効になる。
+ただし、このオプションを指定する場合は\Pkg{atbegshi}パッケージが
+必要である。
+
+%===========================================================
+\section{欧文フォントの置換の原理}
+\label{sec:Mechanism-Alph}
+
+指定された和文フォントの半角部分からなる欧文フォントファミリとして
+OT1/cfjar(明朝)、OT1/cfjas(ゴシック)、OT1/cfjam(丸ゴシック)
+の3つ(以下では\Strong{CFJAファミリ}と総称する)を定義している。
+その上で、CFJAファミリに対するマップ指定を和文と同じ方法で行っている。
+なお、CFJAファミリは内部ではOT1として扱われるが、
+実際にはOT1の一部のグリフしか持っていない。
+
+\paragraph{alphabetオプション指定時}
+オプション |alphabet| を指定した場合、
+CFJAファミリを既定の欧文ファミリとして設定する
+(cfjar→|\rmdefault|;cfjas→|\sfdefault|)。
+従って、例えば一時的に従来のCMフォントを使いたい場合は、
+適宜ファミリの変更(|\fontfamily{cmr}|等)を行えばよい。
+
+\paragraph{relfontオプション指定時}
+オプション |relfont| を指定した場合、
+CFJAファミリを和文ファミリの従属欧文フォントに
+(cfjarを |\mcfamily| に、cfjasを |\gtfamily| に、
+cfjamを |\mgfamily| に対して)設定する。
+
+\paragraph{利用可能な欧文エンコーディング}
+現状で、CFJAファミリが対応している欧文エンコーディングは
+OT1、T1、TS1の3つである
+\footnote{1.4版でT1に“暫定対応”し、1.5版でT1とTS1に正式に対応した。}%
+(TS1は事前に\Pkg{textcomp}を読み込んだ場合にのみ有効)
+このため、欧文フォントの置換
+(\texttt{alphabet}や\texttt{relfont}オプション)
+を利用する文書は、欧文エンコーディングがOT1かT1である必要がある
+\footnote{TS1は記号用のエンコーディングであり、本文の既定の
+エンコーディングとして使うものではない。}。
+
+何れのエンコーディングを用いる場合でも、様々な理由により、利用できる
+文字の種類が限られている。
+\begin{enumerate}
+\item AJ1対応のOpenTypeフォントを指定して、かつ |usecmapforalphabet|
+ オプションを指定した場合、
+ 以下の文字(でかつ当該の欧文エンコーディングに含まれるもの)が使える。
+ \Note AJ1対応フォント用のプリセット(|kozuka-pr6n| 等)を
+ 指定した場合は |usecmapforalphabet| は自動的に有効になる。
+ \begin{itemize}
+ \item[a)] ASCII文字
+ \footnote{出力される文字の話であることに注意。
+ 例えば、OT1やT1で \textsf{\textquotesingle}(U+0027)を
+ 入力したときに出力される文字は \textsf{\textquoteright}(U+2019)
+ であり、これはASCII文字ではない。
+ なお、TS1はU+0027を含む。}%
+ およびen-ダッシュ(\textsf{--})。
+ \Note これらは半角幅である。
+ \item[b)] クオート(\textsf{`` '' ` '})。
+ \Note これらは和文用の全角幅の字形を、空きを詰めて半角幅で出力する。
+ \item[c)] em-ダッシュ(\textsf{---})。
+ \Note これらはU+2015の全角幅の字形をそのまま全角幅で出力する。
+ \end{itemize}
+\item 1以外の場合、
+ 以下の文字(でかつ当該の欧文エンコーディングに含まれるもの)が使える。
+ \Note この場合、既定では欧文は |directunicode*| 相当の状態になる。
+ \begin{itemize}
+ \item 1項のa、b、cの文字はフォントが正しい幅
+ (aは半角、bとcは半角)の字形を持っていれば使える。
+ \item それ以外でも、Unicodeにある文字である大部分の文字は、
+ フォントが半角幅の字形を持っていれば使える。
+ \Note 半角幅のまま出力される。
+ \item |unicode| オプションを指定すると、正しい幅の字形を優先して
+ 使おうとするため、既定の場合よりも多くの文字が使える。
+ \end{itemize}
+\end{enumerate}
+
+
+%===========================================================
+\section{注意事項}
+\label{sec:Notice}
+
+\begin{itemize}
+\item 指定できるフォントは等幅のものに限られる。
+ 実際に使われるメトリックは置換前と変わらない。
+ (例えば jsarticle の標準設定ならJISメトリック)
+\item 欧文部分を置き換えた場合、残念ながら欧文も等幅
+ (半角幅)になってしまう。
+ さらに、アクセント付きの文字(\'e 等)や非英語文字
+ ({\ss} 等)も使えない。
+ 大抵の日本語用フォントにはその文字を出力するためのグリフがそもそも
+ ないのであるが、例えあったとしても使えない。
+\item \Pkg{japanese-otf}/\Pkg{UTF}パッケージ使用時に |\UTF| や |\CID| で
+ 指定した文字が出力されるかは、
+ 指定したフォントがその文字を持っているかに依存する。
+\item |deluxe| 付きの\Pkg{japanese-otf}パッケージと |alphabet| 付きの
+ \Pkg{pxchfon}を同時に使う場合には、
+ \Pkg{japanese-otf}パッケージを先に読み込む必要がある。
+ (これに反した場合はエラーになる。)
+\item 単ウェイトの場合は、明朝の太字はゴシックになるという一般的な
+ 設定に欧文フォントの置換の際にも従っているが、
+ 明朝のみが置換されている場合は、
+ 明朝の置換フォントが太字にも適用される。
+%\item 既述のように、0.3版以降では\Pkg{japanese-otf}パッケージで |deluxe|、
+% |bold|、|noreplace| のいずれも指定されてない場合でも |\setgothicfont|
+% が有効になる。
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\appendix
+%===========================================================
+\section{dvipdfmx以外のDVIウェアでの使用}
+\label{sec:Other-Drivers}
+
+本パッケージの核心の機能である
+「使用フォントを文書中で指定する」
+ことの実現にはdvipdfmxの拡張機能を利用している。
+従って、dvipdfmxの利用が必須となるのだが、
+(プレビュー等の目的で)
+文書中で指定したフォントが反映されなくてもよいのなら、
+他のDVIウェアでも本パッケージを利用した
+DVI文書を扱える可能性がある。
+
+%-------------------
+\subsection{和文フォントだけを置き換えた場合(\texttt{noalphabet} 指定時)}
+
+この設定で生成されるDVIファイルを
+dvipdfmx以外のDVIウェアに読ませた場合、
+フォント置換が無視され、
+そのソフトウェアで設定されたフォントで出力されるはずである。
+%ただ、ソフトウェアによっては、警告やエラーが出る可能性もある。
+
+%-------------------
+\subsection{欧文フォントも置き換えた場合(\texttt{alphabet} 指定時)}
+
+欧文フォントを置き換えたDVIファイルは、
+独自の欧文フォント(|r-cfja?-?-l0j| という形式の名前)
+を含んでいるので、
+少なくともそれに関する設定をしない限りはdvipdfmx以外の
+DVIウェアで処理することができない。
+さらに、このフォントを扱うためにはDVIウェアが
+サブフォント(sfd)に対応している必要がある。
+文書中での設定をdvipdfmx以外のDVIウェアで活かすことはできない。
+しかし、「独自部分の欧文フォントを常に特定の代替フォントで表示させる」
+ということは、sfd対応のDVIウェアであれば可能である。
+
+以下に、ttf2pkについて、「常にIPAフォントで代替する」
+ための設定を掲げておく。
+この記述をttf2pkのマップファイル(ttfonts.map)に加えると、
+例えば、dvioutで本パッケージ使用のDVIファイルを閲覧できるようになる。
+
+\begin{quote}\small\begin{verbatim}
+r-cfjar-l-@PXcjk0@ msmincho.ttc FontIndex=0
+r-cfjar-r-@PXcjk0@ msmincho.ttc FontIndex=0
+r-cfjar-b-@PXcjk0@ msmincho.ttc FontIndex=0
+r-cfjas-r-@PXcjk0@ msgothic.ttc FontIndex=0
+r-cfjas-b-@PXcjk0@ msgothic.ttc FontIndex=0
+r-cfjas-x-@PXcjk0@ msgothic.ttc FontIndex=0
+\end{verbatim}\end{quote}
+
+%===========================================================
+\section{pxjafontパッケージ}
+
+現在の版の\Pkg{pxchfon}パッケージは旧来の\Pkg{pxjafont}の機能を
+取り込んでいるため、\Pkg{pxjafont}は不要である。
+古い環境との互換性のため\Pkg{pxjafont}を残していたが、
+1.0版において\Pkg{pxjafont}の使用を非推奨の扱いとした。
+(近い将来に廃止予定。)
+
+\Pkg{pxjafont}を利用しているユーザは、
+\ref{sec:Preset}節を参照して現在の\Pkg{pxchfon}用の
+適切な設定に書き直す必要がある。
+
+\Note 古いプリセット名の中に廃止されたものがあるので注意。
+
+%===========================================================
+\section{中国語・韓国語フォントへの対応}
+\label{sec:Non-Japanese}
+
+0.7c版で\Pkg{japanese-otf}パッケージ(|multi| オプション指定)および
+{\upTeX}標準の中国語・韓国語フォントについてのサポートを始めた。
+以下の命令で、実フォントの置換指定ができる。
+
+\begin{itemize}
+\newcommand*{\CNot}{\footnotesize}
+\item |\setkoreanminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 韓国語・明朝体。
+\item |\setkoreangothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 韓国語・ゴシック体。
+\item |\setschineseminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 簡体字中国語・明朝体(宋体)。
+\item |\setschinesegothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 簡体字中国語・ゴシック体(黒体)。
+\item |\settchineseminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 繁体字中国語・明朝体(明体)。
+\item |\settchinesegothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means
+ 繁体字中国語・ゴシック体(黒体)。
+\end{itemize}
+
+注意事項。
+
+\begin{itemize}
+\item プリセット指定は中国語・韓国語のフォントについては何も指定しない。
+従って、上記の命令を用いない場合は、これらのフォントのマップ再設定が
+行われることはない。
+\item 「Unicode直接指定オプション」は中国語・韓国語のフォントに対しても
+有効である。
+|directunicode| の場合は「\Pkg{japanese-otf}パッケージのUnicode入力命令」
+(|\UTFK|、|\UTFM|、等)が対象となり、
+それ以外はこれに加えて{\upTeX}標準のフォントも
+対象になる。
+\end{itemize}
+
+%===========================================================
+\end{document}
+%% EOF
diff --git a/language/japanese/pxchfon/pxchfon0.def b/language/japanese/pxchfon/pxchfon0.def
new file mode 100644
index 0000000000..1be68f098f
--- /dev/null
+++ b/language/japanese/pxchfon/pxchfon0.def
@@ -0,0 +1,4 @@
+% pxchfon0.def
+% This file does nothing; it exists for check for full installation.
+\relax
+% EOF
diff --git a/language/japanese/pxchfon/pxjafont.sty b/language/japanese/pxchfon/pxjafont.sty
new file mode 100644
index 0000000000..ad79f5bcbd
--- /dev/null
+++ b/language/japanese/pxchfon/pxjafont.sty
@@ -0,0 +1,24 @@
+%%
+%% This is file 'pxjafont.sty'.
+%%
+%% Copyright (c) 2019 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxjafont}
+%% show warning
+\PackageWarning{pxchfon}
+ {!!!!!!!!!!!! IMPORTANT WARNING !!!!!!!!!!!!\MessageBreak
+ The package 'pxjafont' is obsolete and its use is\MessageBreak
+ deprecated. please refer to the manual of pxchfon.\MessageBreak
+ The warning is issued}
+%% delegate
+\let\pxAliasedPxjafont=t
+\RequirePackageWithOptions{pxchfon}[]
+\endinput
+%% EOF
diff --git a/language/japanese/pxchfon/sample/sample-2000jis.pdf b/language/japanese/pxchfon/sample/sample-2000jis.pdf
new file mode 100644
index 0000000000..e9034e19a9
--- /dev/null
+++ b/language/japanese/pxchfon/sample/sample-2000jis.pdf
Binary files differ
diff --git a/language/japanese/pxchfon/sample/sample-2000jis.tex b/language/japanese/pxchfon/sample/sample-2000jis.tex
new file mode 100644
index 0000000000..d8f11703aa
--- /dev/null
+++ b/language/japanese/pxchfon/sample/sample-2000jis.tex
@@ -0,0 +1,7 @@
+% 文字コードはUTF-8 (platex -kanji=utf8)
+\documentclass[a6paper,papersize]{jsarticle}
+\usepackage[noembed,noprefer2004jis]{pxchfon} % no-embed
+%\usepackage[hiragino-pron,noprefer2004jis]{pxchfon} % embed Hiragino ProN
+\begin{document}
+葛餅で蓬餅で、かつ煎餅!
+\end{document}
diff --git a/language/japanese/pxchfon/sample/sample-2004jis.pdf b/language/japanese/pxchfon/sample/sample-2004jis.pdf
new file mode 100644
index 0000000000..27e567b8e0
--- /dev/null
+++ b/language/japanese/pxchfon/sample/sample-2004jis.pdf
Binary files differ
diff --git a/language/japanese/pxchfon/sample/sample-2004jis.tex b/language/japanese/pxchfon/sample/sample-2004jis.tex
new file mode 100644
index 0000000000..2563674efc
--- /dev/null
+++ b/language/japanese/pxchfon/sample/sample-2004jis.tex
@@ -0,0 +1,7 @@
+% 文字コードはUTF-8 (platex -kanji=utf8)
+\documentclass[a6paper,papersize]{jsarticle}
+\usepackage[noembed,prefer2004jis]{pxchfon} % no-embed
+%\usepackage[hiragino-pron,prefer2004jis]{pxchfon} % embed Hiragino ProN
+\begin{document}
+葛餅で蓬餅で、かつ煎餅!
+\end{document}
diff --git a/language/japanese/pxchfon/sample/sample-pxchfon.pdf b/language/japanese/pxchfon/sample/sample-pxchfon.pdf
new file mode 100644
index 0000000000..38ed09884e
--- /dev/null
+++ b/language/japanese/pxchfon/sample/sample-pxchfon.pdf
Binary files differ
diff --git a/language/japanese/pxchfon/sample/sample-pxchfon.tex b/language/japanese/pxchfon/sample/sample-pxchfon.tex
new file mode 100644
index 0000000000..504b1eb411
--- /dev/null
+++ b/language/japanese/pxchfon/sample/sample-pxchfon.tex
@@ -0,0 +1,56 @@
+% 文字コードはUTF-8 (platex -kanji=utf8)
+\documentclass[a4paper]{jsarticle}
+\usepackage{pxchfon}
+\setminchofont[0]{hgrgy.ttc} % HG行書体
+\setgothicfont[0]{hgrpp1.ttc} % HG創英角ポップ体
+\usepackage{otf}
+ % 箇条書きの番号を丸数字と小文字ローマ数字に
+\renewcommand{\theenumi}{\ajLabel\ajMaru{enumi}}
+\renewcommand{\labelenumi}{\theenumi}
+\renewcommand{\theenumii}{\ajLabel\ajroman{enumii}}
+\renewcommand{\labelenumii}{\theenumii}
+\begin{document}
+\title{pxchfon パッケージ}
+\author{ZR}
+\date{2009 年 3 月 29 日}
+\maketitle
+
+\section{はじめに}
+この文書は pxchfon パッケージの使用例を示したものである。
+このパッケージでは「明朝」「ゴシック」に対応するフォントを
+ユーザ指定の日本語フォントに置き換えられる。
+一度インストールしてしまえば、あとは {\LaTeX} 文書内で
+フォントファイル名を直接指定することで任意のフォントが使える。
+この文書では明朝を「HG行書体」(hgrgy.ttc)、ゴシックを
+\textsf{「HG創英角\aj半角{ホ゜ッフ゜}体」(hgrppl.ttc)}に置き換えている。
+
+\section{特徴}
+\begin{enumerate}
+\item 既定の和文のフォント(明朝・ゴシック)を指定のものに
+ 置き換える。
+ \begin{enumerate}
+ \item 既定の欧文ファミリ(rmfamily・sffamily)を和文フォントの
+ 従属欧文に置き換える設定も可能。
+ \item 数式フォントは置換されない。
+ \end{enumerate}
+\item 一度インストールすると、それだけで任意の日本語フォントに
+ 適用できる。
+ \begin{enumerate}
+ \item しかも和文のみを置き換える場合なら、インストールも簡単。
+ \item 置き換えるフォントは、{\LaTeX} 文書内でファイル名で
+ 指定する。
+ \end{enumerate}
+\item ただし、等幅のフォントしか利用できない。
+ \begin{enumerate}
+ \item 欧文も等幅(半角)になってしまう。
+ \item しかもアクセント付文字・非英語文字(
+ {\fontfamily{cmr}\selectfont \'e, \ss} 等)が使えない。
+ \item 残念。
+ \end{enumerate}
+\item dvipdfmx 専用。
+ \begin{enumerate}
+ \item 非常に残念。
+ \end{enumerate}
+\end{enumerate}
+
+\end{document}
diff --git a/language/japanese/pxchfon/tfm/cfjam-r-l0j.tfm b/language/japanese/pxchfon/tfm/cfjam-r-l0j.tfm
new file mode 100644
index 0000000000..1ce1eefb59
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjam-r-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjam-r-l5j.tfm b/language/japanese/pxchfon/tfm/cfjam-r-l5j.tfm
new file mode 100644
index 0000000000..882477d2ca
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjam-r-l5j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjam-r-t1.tfm b/language/japanese/pxchfon/tfm/cfjam-r-t1.tfm
new file mode 100644
index 0000000000..00c6a1e020
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjam-r-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjam-r-ts1.tfm b/language/japanese/pxchfon/tfm/cfjam-r-ts1.tfm
new file mode 100644
index 0000000000..3f56f7e836
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjam-r-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-b-l0j.tfm b/language/japanese/pxchfon/tfm/cfjar-b-l0j.tfm
new file mode 100644
index 0000000000..8ab7c83105
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-b-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-b-l5j.tfm b/language/japanese/pxchfon/tfm/cfjar-b-l5j.tfm
new file mode 100644
index 0000000000..1aa122601f
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-b-l5j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-b-t1.tfm b/language/japanese/pxchfon/tfm/cfjar-b-t1.tfm
new file mode 100644
index 0000000000..93ba9c37b8
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-b-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-b-ts1.tfm b/language/japanese/pxchfon/tfm/cfjar-b-ts1.tfm
new file mode 100644
index 0000000000..a254dad89f
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-b-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-l-l0j.tfm b/language/japanese/pxchfon/tfm/cfjar-l-l0j.tfm
new file mode 100644
index 0000000000..8ab7c83105
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-l-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-l-l5j.tfm b/language/japanese/pxchfon/tfm/cfjar-l-l5j.tfm
new file mode 100644
index 0000000000..1aa122601f
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-l-l5j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-l-t1.tfm b/language/japanese/pxchfon/tfm/cfjar-l-t1.tfm
new file mode 100644
index 0000000000..93ba9c37b8
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-l-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-l-ts1.tfm b/language/japanese/pxchfon/tfm/cfjar-l-ts1.tfm
new file mode 100644
index 0000000000..a254dad89f
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-l-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-r-l0j.tfm b/language/japanese/pxchfon/tfm/cfjar-r-l0j.tfm
new file mode 100644
index 0000000000..8ab7c83105
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-r-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-r-l5j.tfm b/language/japanese/pxchfon/tfm/cfjar-r-l5j.tfm
new file mode 100644
index 0000000000..1aa122601f
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-r-l5j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-r-t1.tfm b/language/japanese/pxchfon/tfm/cfjar-r-t1.tfm
new file mode 100644
index 0000000000..93ba9c37b8
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-r-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjar-r-ts1.tfm b/language/japanese/pxchfon/tfm/cfjar-r-ts1.tfm
new file mode 100644
index 0000000000..a254dad89f
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjar-r-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-b-l0j.tfm b/language/japanese/pxchfon/tfm/cfjas-b-l0j.tfm
new file mode 100644
index 0000000000..ef482a497c
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-b-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-b-l5j.tfm b/language/japanese/pxchfon/tfm/cfjas-b-l5j.tfm
new file mode 100644
index 0000000000..4217e24ead
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-b-l5j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-b-t1.tfm b/language/japanese/pxchfon/tfm/cfjas-b-t1.tfm
new file mode 100644
index 0000000000..9fb0e93f07
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-b-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-b-ts1.tfm b/language/japanese/pxchfon/tfm/cfjas-b-ts1.tfm
new file mode 100644
index 0000000000..22ca080736
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-b-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-r-l0j.tfm b/language/japanese/pxchfon/tfm/cfjas-r-l0j.tfm
new file mode 100644
index 0000000000..ef482a497c
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-r-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-r-l5j.tfm b/language/japanese/pxchfon/tfm/cfjas-r-l5j.tfm
new file mode 100644
index 0000000000..4217e24ead
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-r-l5j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-r-t1.tfm b/language/japanese/pxchfon/tfm/cfjas-r-t1.tfm
new file mode 100644
index 0000000000..9fb0e93f07
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-r-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-r-ts1.tfm b/language/japanese/pxchfon/tfm/cfjas-r-ts1.tfm
new file mode 100644
index 0000000000..22ca080736
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-r-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-x-l0j.tfm b/language/japanese/pxchfon/tfm/cfjas-x-l0j.tfm
new file mode 100644
index 0000000000..ef482a497c
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-x-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-x-l5j.tfm b/language/japanese/pxchfon/tfm/cfjas-x-l5j.tfm
new file mode 100644
index 0000000000..4217e24ead
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-x-l5j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-x-t1.tfm b/language/japanese/pxchfon/tfm/cfjas-x-t1.tfm
new file mode 100644
index 0000000000..9fb0e93f07
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-x-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/cfjas-x-ts1.tfm b/language/japanese/pxchfon/tfm/cfjas-x-ts1.tfm
new file mode 100644
index 0000000000..22ca080736
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/cfjas-x-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjam-r-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjam-r-l0j.tfm
new file mode 100644
index 0000000000..b23da58d46
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjam-r-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjam-r-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjam-r-t1.tfm
new file mode 100644
index 0000000000..f79c95b877
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjam-r-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjam-r-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjam-r-ts1.tfm
new file mode 100644
index 0000000000..d44b375460
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjam-r-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjam-rz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjam-rz-l0j.tfm
new file mode 100644
index 0000000000..9666a37fc6
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjam-rz-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-b-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-b-l0j.tfm
new file mode 100644
index 0000000000..c9f89c5480
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-b-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-b-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-b-t1.tfm
new file mode 100644
index 0000000000..7e0c5dc73b
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-b-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-b-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-b-ts1.tfm
new file mode 100644
index 0000000000..0ff306f220
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-b-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-bz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-bz-l0j.tfm
new file mode 100644
index 0000000000..b6f4d38b55
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-bz-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-l-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-l-l0j.tfm
new file mode 100644
index 0000000000..c9f89c5480
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-l-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-l-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-l-t1.tfm
new file mode 100644
index 0000000000..7e0c5dc73b
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-l-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-l-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-l-ts1.tfm
new file mode 100644
index 0000000000..0ff306f220
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-l-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-lz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-lz-l0j.tfm
new file mode 100644
index 0000000000..7a0d9dd3a7
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-lz-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-r-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-r-l0j.tfm
new file mode 100644
index 0000000000..c9f89c5480
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-r-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-r-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-r-t1.tfm
new file mode 100644
index 0000000000..7e0c5dc73b
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-r-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-r-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-r-ts1.tfm
new file mode 100644
index 0000000000..0ff306f220
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-r-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjar-rz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-rz-l0j.tfm
new file mode 100644
index 0000000000..4ba4409204
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjar-rz-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-b-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-b-l0j.tfm
new file mode 100644
index 0000000000..1ce191cd79
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-b-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-b-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-b-t1.tfm
new file mode 100644
index 0000000000..9a821a75fe
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-b-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-b-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-b-ts1.tfm
new file mode 100644
index 0000000000..43fc0c144b
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-b-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-bz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-bz-l0j.tfm
new file mode 100644
index 0000000000..6ff8357a11
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-bz-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-r-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-r-l0j.tfm
new file mode 100644
index 0000000000..1ce191cd79
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-r-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-r-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-r-t1.tfm
new file mode 100644
index 0000000000..9a821a75fe
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-r-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-r-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-r-ts1.tfm
new file mode 100644
index 0000000000..43fc0c144b
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-r-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-rz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-rz-l0j.tfm
new file mode 100644
index 0000000000..8754540826
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-rz-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-x-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-x-l0j.tfm
new file mode 100644
index 0000000000..1ce191cd79
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-x-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-x-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-x-t1.tfm
new file mode 100644
index 0000000000..9a821a75fe
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-x-t1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-x-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-x-ts1.tfm
new file mode 100644
index 0000000000..43fc0c144b
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-x-ts1.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/tfm/r-cfjas-xz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-xz-l0j.tfm
new file mode 100644
index 0000000000..ed424d178f
--- /dev/null
+++ b/language/japanese/pxchfon/tfm/r-cfjas-xz-l0j.tfm
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjam-r-l0j.vf b/language/japanese/pxchfon/vf/cfjam-r-l0j.vf
new file mode 100644
index 0000000000..95662b4788
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjam-r-l0j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjam-r-l5j.vf b/language/japanese/pxchfon/vf/cfjam-r-l5j.vf
new file mode 100644
index 0000000000..1a4112d7d9
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjam-r-l5j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjam-r-t1.vf b/language/japanese/pxchfon/vf/cfjam-r-t1.vf
new file mode 100644
index 0000000000..29229d696b
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjam-r-t1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjam-r-ts1.vf b/language/japanese/pxchfon/vf/cfjam-r-ts1.vf
new file mode 100644
index 0000000000..713d1293c3
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjam-r-ts1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-b-l0j.vf b/language/japanese/pxchfon/vf/cfjar-b-l0j.vf
new file mode 100644
index 0000000000..691e35568d
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-b-l0j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-b-l5j.vf b/language/japanese/pxchfon/vf/cfjar-b-l5j.vf
new file mode 100644
index 0000000000..3e0fcb098a
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-b-l5j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-b-t1.vf b/language/japanese/pxchfon/vf/cfjar-b-t1.vf
new file mode 100644
index 0000000000..4314f1be8e
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-b-t1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-b-ts1.vf b/language/japanese/pxchfon/vf/cfjar-b-ts1.vf
new file mode 100644
index 0000000000..9ed12d5a7e
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-b-ts1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-l-l0j.vf b/language/japanese/pxchfon/vf/cfjar-l-l0j.vf
new file mode 100644
index 0000000000..f1446f879a
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-l-l0j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-l-l5j.vf b/language/japanese/pxchfon/vf/cfjar-l-l5j.vf
new file mode 100644
index 0000000000..a0eff1a30b
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-l-l5j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-l-t1.vf b/language/japanese/pxchfon/vf/cfjar-l-t1.vf
new file mode 100644
index 0000000000..9327d0ca2b
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-l-t1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-l-ts1.vf b/language/japanese/pxchfon/vf/cfjar-l-ts1.vf
new file mode 100644
index 0000000000..22d88d661b
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-l-ts1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-r-l0j.vf b/language/japanese/pxchfon/vf/cfjar-r-l0j.vf
new file mode 100644
index 0000000000..6caaca72d5
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-r-l0j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-r-l5j.vf b/language/japanese/pxchfon/vf/cfjar-r-l5j.vf
new file mode 100644
index 0000000000..baa61e9ea5
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-r-l5j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-r-t1.vf b/language/japanese/pxchfon/vf/cfjar-r-t1.vf
new file mode 100644
index 0000000000..051349ff3c
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-r-t1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjar-r-ts1.vf b/language/japanese/pxchfon/vf/cfjar-r-ts1.vf
new file mode 100644
index 0000000000..dd01810657
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjar-r-ts1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-b-l0j.vf b/language/japanese/pxchfon/vf/cfjas-b-l0j.vf
new file mode 100644
index 0000000000..b8d611659d
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-b-l0j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-b-l5j.vf b/language/japanese/pxchfon/vf/cfjas-b-l5j.vf
new file mode 100644
index 0000000000..ae1b994ccb
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-b-l5j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-b-t1.vf b/language/japanese/pxchfon/vf/cfjas-b-t1.vf
new file mode 100644
index 0000000000..8370253a7c
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-b-t1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-b-ts1.vf b/language/japanese/pxchfon/vf/cfjas-b-ts1.vf
new file mode 100644
index 0000000000..52742ece27
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-b-ts1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-r-l0j.vf b/language/japanese/pxchfon/vf/cfjas-r-l0j.vf
new file mode 100644
index 0000000000..f3b60a2537
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-r-l0j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-r-l5j.vf b/language/japanese/pxchfon/vf/cfjas-r-l5j.vf
new file mode 100644
index 0000000000..51b6b8c6cf
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-r-l5j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-r-t1.vf b/language/japanese/pxchfon/vf/cfjas-r-t1.vf
new file mode 100644
index 0000000000..bf1e491fd1
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-r-t1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-r-ts1.vf b/language/japanese/pxchfon/vf/cfjas-r-ts1.vf
new file mode 100644
index 0000000000..0bbe6b763b
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-r-ts1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-x-l0j.vf b/language/japanese/pxchfon/vf/cfjas-x-l0j.vf
new file mode 100644
index 0000000000..c1314dbd50
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-x-l0j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-x-l5j.vf b/language/japanese/pxchfon/vf/cfjas-x-l5j.vf
new file mode 100644
index 0000000000..c3a8db3bfb
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-x-l5j.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-x-t1.vf b/language/japanese/pxchfon/vf/cfjas-x-t1.vf
new file mode 100644
index 0000000000..98fc3f1211
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-x-t1.vf
Binary files differ
diff --git a/language/japanese/pxchfon/vf/cfjas-x-ts1.vf b/language/japanese/pxchfon/vf/cfjas-x-ts1.vf
new file mode 100644
index 0000000000..d6e314825b
--- /dev/null
+++ b/language/japanese/pxchfon/vf/cfjas-x-ts1.vf
Binary files differ
diff --git a/language/japanese/pxjahyper/LICENSE b/language/japanese/pxjahyper/LICENSE
new file mode 100644
index 0000000000..534324b756
--- /dev/null
+++ b/language/japanese/pxjahyper/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2019 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/pxjahyper/README-ja.md b/language/japanese/pxjahyper/README-ja.md
new file mode 100644
index 0000000000..dd70862687
--- /dev/null
+++ b/language/japanese/pxjahyper/README-ja.md
@@ -0,0 +1,66 @@
+PXjahyper パッケージバンドル
+============================
+
+LaTeX: pLaTeX 上での hyperref のサポート
+
+(u)pLaTeX 上で hyperref を用いて日本語の文書情報を含む PDF 文書を作成する
+場合に必要となる以下の機能を提供する。
+
+ * PDF 文字列内の和文文字のサポート
+ * mag 指定に対するサポート
+
+### 前提環境
+
+ * フォーマット: LaTeX
+ * エンジン: pTeX、upTeX、pTeX-ng
+ * DVIウェア: dvipdfmx
+ * 依存パッケージ:
+ - hyperref
+
+### インストール
+
+ - `*.sty` → $TEXMF/tex/platex/PXjahyper
+
+### ライセンス
+
+本パッケージは MIT ライセンスの下で配布される。
+
+
+pxjahyper パッケージ ー 本体
+----------------------------
+
+詳細についてはマニュアル `pxjahyper.pdf` を参照されたい。
+
+
+更新履歴
+--------
+
+ * Version 0.3e 〈2019/06/20〉
+ - hyperref の `unicode` 指定が後から変更された場合はエラーを出す。
+
+ * Version 0.3d 〈2018/07/15〉
+ - バグ修正。
+
+ * Version 0.3c 〈2018/01/25〉
+ - バグ修正。
+
+ * Version 0.3b 〈2018/01/13〉
+ - パッケージ定義の PDF 文字列の文字定義を拡充した。
+ - (試験的) 自動判別の誤判定を防ぐため、アウトラインファイルに
+ 日本語文字のコメントを含ませておく。
+ - (試験的) `(no)jacommentline` オプション。
+
+ * Version 0.3a 〈2017/10/17〉
+ - `bigcode` を既定に変更。
+ - (試験的) upLaTeX で hyperref の `unicode` 指定を可能にする。
+
+ * Version 0.3 〈2012/05/28〉
+ - papersize special の調整機能を追加。
+ - `\Ux` を追加。
+
+ * Version 0.2 〈2012/05/27〉
+ - 最初の公開版。
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/pxjahyper/README.md b/language/japanese/pxjahyper/README.md
new file mode 100644
index 0000000000..60c28b0e99
--- /dev/null
+++ b/language/japanese/pxjahyper/README.md
@@ -0,0 +1,49 @@
+PXjahyper Package
+=================
+
+LaTeX: Hyperref support for pLaTeX
+
+This package adjusts the behavior of hyperref on (u)pLaTeX so that authors
+can properly create PDF documents that contain document information in
+Japanese.
+
+ * Support for PDF strings containing Japanese characters.
+ * Support for magnification settings.
+
+### System Requirements
+
+ * TeX format: LaTeX.
+ * TeX engine: pTeX, upTeX, pTeX-ng.
+ * DVI-ware: dvipdfmx.
+ * Dependent packages:
+ - hyperref
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/platex/PXjahyper
+
+### License
+
+This package is distributed under the MIT License.
+
+
+The pxjahyper Package ー main
+-----------------------------
+
+Please refer to the manual `pxjahyper.pdf` (in Japanese) for detail.
+
+
+Revision History
+----------------
+
+ * Version 0.3e 〈2019/06/20〉
+ * Version 0.3d 〈2018/07/15〉
+ * Version 0.3c 〈2018/01/25〉
+ * Version 0.3b 〈2018/01/13〉
+ * Version 0.3a 〈2017/10/17〉
+ * Version 0.3 〈2012/05/28〉
+ * Version 0.2 〈2012/05/27〉
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/pxjahyper/pxjahyper.pdf b/language/japanese/pxjahyper/pxjahyper.pdf
new file mode 100644
index 0000000000..03ef941185
--- /dev/null
+++ b/language/japanese/pxjahyper/pxjahyper.pdf
Binary files differ
diff --git a/language/japanese/pxjahyper/pxjahyper.sty b/language/japanese/pxjahyper/pxjahyper.sty
new file mode 100644
index 0000000000..68166215ec
--- /dev/null
+++ b/language/japanese/pxjahyper/pxjahyper.sty
@@ -0,0 +1,982 @@
+%%
+%% This is file 'pxjahyper.sty'.
+%%
+%% Copyright (c) 2019 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxjahyper}[2019/06/20 v0.3e]
+
+%% error messages
+\def\pxhy@pkgname{pxjahyper}
+\def\pxhy@warn{\PackageWarningNoLine\pxhy@pkgname}
+\def\pxhy@error{\PackageError\pxhy@pkgname}
+\@onlypreamble\pxhy@fatal
+\def\pxhy@fatal#1#2{%
+ \PackageError\pxhy@pkgname
+ {#1}%
+ {#2Package loading is aborted right now.}%
+}
+\providecommand{\bxDebug}[1]{}
+
+%% packages
+\RequirePackage{atbegshi}
+
+%% globals
+\newif\ifpxhy@ptex
+\newif\ifpxhy@uptex
+\let\pxhy@jcode\@undefined
+\newif\ifpxhy@tounicode
+\newif\ifpxhy@zerox
+\newif\ifpxhy@bigcode
+\let\pxhy@bigcode\relax
+\chardef\pxhy@driver@none=0
+\chardef\pxhy@driver@dvipdfmx=1
+\let\pxhy@driver\@undefined
+\newif\ifpxhy@hy@unicode
+\newif\ifpxhy@jacommentline
+
+%--------------------------------------- Package options
+
+\DeclareOption{dvipdfmx}{%
+ \let\pxhy@driver\pxhy@driver@dvipdfmx
+}
+\DeclareOption{dvipdfm}{%
+ \let\pxhy@driver\pxhy@driver@dvipdfmx
+}
+\DeclareOption{nodvidriver}{%
+ \let\pxhy@driver\pxhy@driver@none
+}
+\DeclareOption{none}{%
+ \let\pxhy@driver\pxhy@driver@none
+}
+\DeclareOption{auto}{%
+ \let\pxhy@driver\@undefined
+}
+\DeclareOption{tounicode}{%
+ \pxhy@tounicodetrue
+}
+\DeclareOption{notounicode}{%
+ \pxhy@tounicodefalse
+}
+\DeclareOption{out2uni}{%
+ \pxhy@zeroxtrue
+}
+\DeclareOption{noout2uni}{%
+ \pxhy@zeroxfalse
+}
+\DeclareOption{bigcode}{%
+ \let\pxhy@bigcode=t%
+}
+\DeclareOption{nobigcode}{%
+ \let\pxhy@bigcode=f%
+}
+\DeclareOption{jacommentline}{%
+ \pxhy@jacommentlinetrue
+}
+\DeclareOption{nojacommentline}{%
+ \pxhy@jacommentlinefalse
+}
+\ExecuteOptions{%
+ auto,tounicode,noout2uni,jacommentline%
+}
+\ProcessOptions*
+
+%--------------------------------------- Environment check
+
+%% The hyperref package must be loaded in advance.
+\@ifpackageloaded{hyperref}{}{%else
+ \pxhy@fatal{'hyperref' not yet loaded}{}%
+ \endinput
+}
+
+%% Check for the hyperref option 'unicode'.
+\expandafter\ifx\csname ifHy@unicode\expandafter\endcsname
+ \csname iftrue\endcsname
+ \pxhy@hy@unicodetrue
+\fi
+\AtBeginDocument{%
+ \@tempswafalse
+ \expandafter\ifx\csname ifHy@unicode\expandafter\endcsname
+ \csname iftrue\endcsname
+ \@tempswatrue
+ \fi
+ \ifnum0\ifpxhy@hy@unicode1\fi\if@tempswa1\fi=1
+ \PackageError\pxhy@pkgname
+ {You must not change the encoding setting (e.g.\MessageBreak
+ 'unicode) of hyperref after pxjahyper is loaded}%
+ {\@ehc}%
+ \fi
+}
+
+%% Check hyperref driver.
+\ifx\pxhy@driver\@undefined
+ \def\pxhy@tmpa{hdvipdfm}
+ \ifx\Hy@driver\pxhy@tmpa
+ \let\pxhy@driver\pxhy@driver@dvipdfmx
+ \else
+ \let\pxhy@driver\pxhy@driver@none
+ \fi
+\fi
+
+%% Check the engine.
+\def\pxhy@check#1#2{%
+ \edef\pxhy@tmpa{\string#1}%
+ \edef\pxhy@tmpb{\meaning#1}%
+ \ifx\pxhy@tmpa\pxhy@tmpb #2\fi
+}
+\pxhy@check\kanjiskip{\pxhy@ptextrue}
+\pxhy@check\forcecjktoken{\pxhy@uptextrue}
+\ifpxhy@ptex\else
+ \pxhy@fatal{Unknown engine used!!!}{}
+ \expandafter\endinput
+\fi
+
+%% Check the internal jcode.
+\ifnum \jis"2121="8140
+ \let\pxhy@jcode=s\relax
+\else\ifnum\jis"2121="A1A1
+ \let\pxhy@jcode=e\relax
+\else\ifnum\jis"2121="3000
+ \let\pxhy@jcode=u\relax
+\fi\fi\fi
+\ifx\pxhy@jcode\@undefined
+ \pxhy@fatal{Unknown internal kanji code!!!}{}
+ \expandafter\endinput
+\fi
+
+%% adjustment
+% upTeX not in unicode is not seen as upTeX.
+\if u\pxhy@jcode\else
+ \pxhy@uptexfalse
+\fi
+% out2uni cannot be used with upTeX.
+\ifpxhy@uptex \ifpxhy@zerox
+ \pxhy@warn{out2uni is invalid in upTeX}
+ \pxhy@zeroxfalse
+\fi\fi
+% bigcode cannot be used without upTeX.
+\if t\pxhy@bigcode
+ \ifpxhy@uptex
+ \pxhy@bigcodetrue
+ \else
+ \pxhy@warn{bigcode is invalid without upTeX}
+ \fi
+\else\if f\pxhy@bigcode
+\else
+ \ifpxhy@uptex
+ \pxhy@bigcodetrue
+ \fi
+\fi\fi
+% out2uni disables tounicode.
+\ifpxhy@zerox
+ \pxhy@tounicodefalse
+\fi
+% hyperref 'unicode' is allowed only on upLaTeX.
+\ifnum0\ifpxhy@hy@unicode\ifpxhy@uptex\else1\fi\fi>\z@
+ \pxhy@fatal{hyperref 'unicode' mode is not supported}{}%
+ \expandafter\endinput
+\fi
+
+\iffalse
+\typeout{%
+pxhy@ptex = \ifpxhy@ptex true\else false\fi^^J%
+pxhy@uptex = \ifpxhy@uptex true\else false\fi^^J%
+pxhy@jcode = \meaning\pxhy@jcode^^J%
+pxhy@tounicode = \ifpxhy@tounicode true\else false\fi^^J%
+pxhy@zerox = \ifpxhy@zerox true\else false\fi^^J%
+pxhy@driver = \the\pxhy@driver^^J%
+}
+\fi
+
+%--------------------------------------- Helpers
+
+%% pxhy@end
+\def\pxhy@end{\pxhy@end@}
+
+%% \pxhy@out@special{<text>}
+\def\pxhy@out@special#1{%
+ \begingroup
+ \toks\z@{\special{#1}}%
+ \toks\tw@\expandafter{\AtBegShi@HookFirst}%
+ \xdef\AtBegShi@HookFirst{\the\toks@\the\toks\tw@}%
+ \endgroup
+}
+
+%% \pxhy@get@jchar{<num>}
+% Let \pxhy@jchar a macro expanding to a single jchar token
+% of the char code <num>.
+\def\pxhy@get@jchar#1{%
+ \begingroup
+ \pxhy@forcecjktoken
+ \kansujichar\@ne=#1\relax
+ \xdef\pxhy@jchar{\kansuji\@ne}%
+ \endgroup
+}
+
+%% \pxhy@forcecjktoken
+\ifpxhy@uptex
+ \let\pxhy@forcecjktoken\forcecjktoken
+\else
+ \let\pxhy@forcecjktoken\relax
+\fi
+
+%--------------------------------------- Output 'tounicode' special
+\ifpxhy@tounicode
+
+ \ifnum\pxhy@driver=\pxhy@driver@dvipdfmx %<*dvipdfmx>
+ %% dvipdfmx
+ \if e\pxhy@jcode % euc
+ \pxhy@out@special{pdf:tounicode EUC-UCS2}
+ \else\if s\pxhy@jcode % sjis
+ \pxhy@out@special{pdf:tounicode 90ms-RKSJ-UCS2}
+ \else\ifpxhy@bigcode % ucs, bigcode
+ \pxhy@out@special{pdf:tounicode UTF8-UTF16}
+ \else
+ \pxhy@out@special{pdf:tounicode UTF8-UCS2}
+ \fi\fi\fi
+ \fi %</dvipdfmx>
+
+\fi
+%--------------------------------------- Papersize special adjustment
+
+% When the magnification is in effect (i.e. \mag<>1000), hyperref
+% emits a papersize special with wrong value. (dvipdfmx interprets
+% the lengths in the special as 'true' length.) So here a papersize
+% special with adjusted values will be output.
+\ifnum\mag=1000 \else
+ \expandafter\ifx\csname ifHy@setpagesize\expandafter\endcsname
+ \csname iftrue\endcsname % hyperref setpagesize is on
+ \ifnum0<\mag \ifnum32768>\mag % \mag is in valid range
+ \begingroup
+ \@ifundefined{stockwidth}{}{%else
+ \paperwidth=\stockwidth
+ \paperheight=\stockheight
+ }%
+ \@tempcnta=\mag \advance\@tempcnta100000
+ \def\pxhy@next1#1#2#3#4#5\relax{%
+ \def\pxhy@tmpa{#1#2.#3#4#5}%
+ }%
+ \expandafter\pxhy@next\the\@tempcnta\relax
+ \paperwidth=\pxhy@tmpa\paperwidth
+ \paperheight=\pxhy@tmpa\paperheight
+ \xdef\pxhy@spec@papersize{%
+ papersize=\the\paperwidth,\the\paperheight
+ }%
+ \AtBeginShipoutFirst{%
+ \special{\pxhy@spec@papersize}%
+ }
+ \endgroup
+ \fi\fi
+ \fi
+\fi
+
+%--------------------------------------- Hooks to pdfstringdef
+
+\def\pxhy@uc@REPL{FFFD}
+\def\pxhy@uc@XNAC{FDD1} % not-a-char codepoint used as marker
+\let\pxhy@burst\romannumeral
+\let\pxhy@nxend\indent
+
+%% \pxhy@uchex{<hex>}
+% The entity of the code-value input function. If the input
+% is a valid code value in hex then it passes the value to
+% \pxhy@uchex@res in 4-6 digits; otherwise passes FFFD to
+% \pxhy@uchex@res.
+\def\pxhy@uchex#1{%
+ \expandafter\pxhy@uchex@a\pxhy@burst-`>#1\pxhy@nxend
+}
+\edef\pxhy@uchex@err{%
+ \noexpand\pxhy@uchex@res{\pxhy@uc@REPL}%
+}
+\def\pxhy@uchex@a#1#2\pxhy@nxend{%
+ \ifnum2<"1#1
+ \expandafter\pxhy@uchex@b\romannumeral-"#1#2\pxhy@nxend{#1#2}%
+ \else \pxhy@uchex@err
+ \fi
+}
+\def\pxhy@uchex@b#1\pxhy@nxend#2{%
+ \ifx\pxhy@empty#1\pxhy@empty
+ \ifnum"#2>"10FFFF
+ \pxhy@uchex@err
+ \else\ifnum"#2>"FFF
+ \pxhy@uchex@res{#2}%
+ \else
+ \pxhy@uchex@c#2"000\pxhy@end
+ \fi\fi
+ \else \pxhy@uchex@err
+ \fi
+}
+\def\pxhy@uchex@c#1#2#3#4#5#6\pxhy@end{%
+ \pxhy@uchex@d#1#2#3#4#5\pxhy@end
+}
+\def\pxhy@uchex@d#1"#2\pxhy@end{%
+ \pxhy@uchex@res{#2#1}%
+}
+
+\ifpxhy@uptex %<*upTeX>
+
+ %% \pxhy@marker: a not-a-char U+FDD1
+ \pxhy@get@jchar{\ucs"\pxhy@uc@XNAC}
+ \edef\pxhy@marker{\pxhy@jchar}
+
+ %% Makes \Ux and \UTF be the code input command in PDF strings.
+ \pdfstringdefDisableCommands{%
+ \let\Ux\pxhy@uchex
+ \let\UTF\pxhy@uchex
+ \let\UTFM\pxhy@uchex
+ \let\UTFK\pxhy@uchex
+ \let\UTFC\pxhy@uchex
+ \let\UTFT\pxhy@uchex
+ }
+
+ %BEGIN-- in the following block #1 means the marker
+ \def\pxhy@next#1{% #1=marker
+ %% \pxhy@uchex@res
+ % Expands to a tag string which will later be converted to
+ % a real character in the postprocess.
+ \def\pxhy@uchex@res##1{#1##1>}%
+ %% \pxhy@posthook
+ % The postprocess of this package. It is registered to
+ % \pdfstringdefPostHook.
+ \def\pxhy@posthook##1{%
+ \expandafter\pxhy@posthook@a##1#1\pxhy@end
+ \pxhy@posthook@b##1%
+ }%
+ \def\pxhy@posthook@a##1#1##2\pxhy@end{%
+ \ifx\pxhy@empty##2\pxhy@empty
+ \expandafter\@gobbletwo
+ \fi
+ }%
+ \def\pxhy@posthook@b##1{%
+ \let\pxhy@str\@empty
+ \expandafter\pxhy@posthook@c##1#1>%
+ \global\let##1=\pxhy@str
+ }%
+ \def\pxhy@posthook@c##1#1##2>{%
+ \ifx\pxhy@empty##2\pxhy@empty
+ \edef\pxhy@str{\pxhy@str##1}%
+ \else
+ \pxhy@get@jchar{"##2}%
+ \edef\pxhy@str{\pxhy@str##1\pxhy@jchar}%
+ \expandafter\pxhy@posthook@c
+ \fi
+ }%
+ }
+ \expandafter\pxhy@next\pxhy@marker
+ %END--
+
+ % Add \pxhy@posthook to \pdfstringdefPostHook.
+ \begingroup
+ \toks@\expandafter{\pdfstringdefPostHook{#1}}
+ \edef\pxhy@next{%
+ \gdef\noexpand\pdfstringdefPostHook##1{%
+ \the\toks@
+ \noexpand\pxhy@posthook{##1}%
+ }%
+ }%
+ \pxhy@next
+ \endgroup
+
+\else\ifpxhy@zerox %<*!upTeX>
+
+ %% \pxhy@uchex@res
+ % Expands to \0x form.
+ \def\pxhy@uchex@res#1{%
+ \0x#1%
+ }
+
+ %% Makes \Ux be the code input command in PDF strings.
+ % (If the otf package is loaded, then \UTF already does
+ % the same thing.)
+ \pdfstringdefDisableCommands{%
+ \let\Ux\pxhy@uchex
+ }
+
+ %Note: if out2uni is off then \Ux remains undefined.
+\fi\fi %</upTeX>
+
+%--------------------------------------- Redefine text commands for PD1
+
+\ifnum\pxhy@driver=\pxhy@driver@dvipdfmx %<*dvipdfmx>
+
+%%<+> \pxDeclarePdfTextCommand{\CS}{<jis>}{<ucs>}
+\@onlypreamble\pxDeclarePdfTextCommand
+\newcommand*\pxDeclarePdfTextCommand[3]{%
+ \pxhy@decl@pdf@tc{#2}{#3}%
+ {\DeclareTextCommand{#1}{PD1}}%
+ {\pxhy@revoke@pdf@tc{#1}}%
+}
+
+%%<+> \pxDeclarePdfTextComposite{\CS}{<arg>}{<jis>}{<ucs>}
+\@onlypreamble\pxDeclarePdfTextComposite
+\newcommand*\pxDeclarePdfTextComposite[4]{%
+ \pxhy@decl@pdf@tc{#3}{#4}%
+ {\DeclareTextCompositeCommand{#1}{PD1}{#2}}%
+ {\pxhy@revoke@pdf@tcc{#1}{#2}}%
+}
+
+\else %<*!dvipdfmx>
+
+\@onlypreamble\pxDeclarePdfTextCommand
+\newcommand*\pxDeclarePdfTextCommand[3]{}
+\@onlypreamble\pxDeclarePdfTextComposite
+\newcommand*\pxDeclarePdfTextComposite[4]{}
+
+\fi %</dvipdfmx>
+
+%% \pxhy@revoke@pdf@tc
+\@onlypreamble\pxhy@revoke@pdf@tc
+\def\pxhy@revoke@pdf@tc#1{%
+ \expandafter\let\csname PD1\string#1\endcsname\@undefined
+ \pxhy@make@txtcmd\pxhy@tmpa{PD1}#1%
+ \ifx#1\pxhy@tmpa
+ \pxhy@make@txtcmd#1?#1%
+ \fi
+}
+\@onlypreamble\pxhy@make@txtcmd
+\def\pxhy@make@txtcmd#1#2#3{%
+ \expandafter\def\expandafter#1\expandafter{%
+ \csname#2-cmd\expandafter\endcsname\expandafter#3%
+ \csname#2\string#3\endcsname
+ }%
+}
+
+%% \pxhy@revoke@pdf@tcc
+\@onlypreamble\pxhy@revoke@pdf@tc
+\def\pxhy@revoke@pdf@tcc#1#2{%
+ \expandafter\let\csname\string\PD1\string#1-\string#2%
+ \endcsname\@undefined
+}
+
+%% \pxhy@decl@pdf@tc
+\@onlypreamble\pxhy@decl@pdf@tc
+\def\pxhy@decl@pdf@tc#1#2{%
+ \pxhy@get@body{#1}{#2}%
+ \ifx\pxhy@body\@undefined
+ \let\pxhy@next\@secondoftwo
+ \else
+ \def\pxhy@next{%
+ \expandafter\pxhy@decl@pdf@tc@a\pxhy@body\pxhy@end}%
+ \fi
+ \pxhy@next
+}
+\@onlypreamble\pxhy@decl@pdf@tc@a
+\def\pxhy@decl@pdf@tc@a#1\pxhy@end#2#3{%
+ #2{#1}%
+}
+
+%% \pxhy@get@body{<jis>}{<ucs>}
+\@onlypreamble\pxhy@get@body
+\ifpxhy@uptex %<*upTeX>
+ \def\pxhy@get@body#1#2{%
+ \pxhy@get@jchar{\ucs"#2}%
+ \let\pxhy@body\pxhy@jchar
+ }%
+\else %<*!upTeX>
+ \ifpxhy@zerox
+ \def\pxhy@get@body#1#2{%
+ \ifx\pxhy@end#1\pxhy@end
+ \def\pxhy@body{\0x#2}%
+ \else
+ \pxhy@get@jchar{\jis"#1}%
+ \let\pxhy@body\pxhy@jchar
+ \fi
+ }%
+ \else
+ \def\pxhy@get@body#1#2{%
+ \ifx\pxhy@end#1\pxhy@end
+ \let\pxhy@body\@undefined
+ \else
+ \pxhy@get@jchar{\jis"#1}%
+ \let\pxhy@body\pxhy@jchar
+ \fi
+ }%
+ \fi
+\fi %</upTeX>
+
+%%%%%%%%%%%%%%%%%%%% the definitions
+
+% JIS X 0213 does not distinguish the following pairs:
+% - circumflex(U+02C6) and asciicircum(U+005E)
+% - tilde(U+02DC) and asciitilde(U+007E)
+% Here I use ASCII characters as done in JIS.
+\DeclareTextCommand{\textcircumflex}{PD1}{\136}
+\DeclareTextCommand{\textasciicircum}{PD1}{\136}
+\DeclareTextCommand{\texttilde}{PD1}{\176}
+\DeclareTextCommand{\textasciitilde}{PD1}{\176}
+
+% Some ad-hoc redefinitions.
+\DeclareTextCommand{\textfi}{PD1}{fi}
+\DeclareTextCommand{\textfl}{PD1}{fl}
+\DeclareTextCommand{\IJ}{PD1}{IJ}
+\DeclareTextCommand{\ij}{PD1}{ij}
+\DeclareTextCommand{\textspace}{PD1}{\040}
+\DeclareTextCommand{\textquotesingle}{PD1}{\047}
+
+%%[A] The characters in PdfDocEncoding (except ASCII).
+\pxDeclarePdfTextCommand{\textasciibreve}{}{02D8}
+\pxDeclarePdfTextCommand{\textasciicaron}{}{02C7}
+\pxDeclarePdfTextCommand{\textdotaccent}{}{02D9}
+\pxDeclarePdfTextCommand{\texthungarumlaut}{}{02DD}
+\pxDeclarePdfTextCommand{\textogonek}{}{02DB}
+\pxDeclarePdfTextCommand{\textring}{}{02DA}
+\pxDeclarePdfTextCommand{\texttilde}{}{02DC}
+\pxDeclarePdfTextCommand{\textbullet}{}{2022}
+\pxDeclarePdfTextCommand{\textdagger}{2277}{2020}
+\pxDeclarePdfTextCommand{\textdaggerdbl}{2278}{2021}
+\pxDeclarePdfTextCommand{\textellipsis}{2144}{2026}
+\pxDeclarePdfTextCommand{\textemdash}{213D}{2014}
+\pxDeclarePdfTextCommand{\textendash}{}{2013}
+\pxDeclarePdfTextCommand{\textflorin}{}{0192}
+\pxDeclarePdfTextCommand{\textfractionsolidus}{}{2044}
+\pxDeclarePdfTextCommand{\guilsinglleft}{}{2039}
+\pxDeclarePdfTextCommand{\guilsinglright}{}{203A}
+\pxDeclarePdfTextCommand{\textminus}{215D}{2212}
+\pxDeclarePdfTextCommand{\textperthousand}{2273}{2030}
+\pxDeclarePdfTextCommand{\quotedblbase}{}{201E}
+\pxDeclarePdfTextCommand{\textquotedblleft}{2148}{201C}
+\pxDeclarePdfTextCommand{\textquotedblright}{2149}{201D}
+\pxDeclarePdfTextCommand{\textquoteleft}{2146}{2018}
+\pxDeclarePdfTextCommand{\textquoteright}{2147}{2019}
+\pxDeclarePdfTextCommand{\quotesinglbase}{}{201A}
+\pxDeclarePdfTextCommand{\texttrademark}{}{2122}
+\pxDeclarePdfTextCommand{\L}{}{0141}
+\pxDeclarePdfTextCommand{\OE}{}{0152}
+\pxDeclarePdfTextComposite{\v}{S}{}{0160}
+\pxDeclarePdfTextComposite{\"}{Y}{}{0178}
+\pxDeclarePdfTextComposite{\v}{Z}{}{017D}
+\pxDeclarePdfTextCommand{\i}{}{0131}
+\pxDeclarePdfTextCommand{\l}{}{0142}
+\pxDeclarePdfTextCommand{\oe}{}{0153}
+\pxDeclarePdfTextComposite{\v}{s}{}{0161}
+\pxDeclarePdfTextComposite{\v}{z}{}{017E}
+\pxDeclarePdfTextCommand{\texteuro}{}{20AC}
+\pxDeclarePdfTextCommand{\textexclamdown}{}{00A1}
+\pxDeclarePdfTextCommand{\textcent}{2171}{00A2}
+\pxDeclarePdfTextCommand{\textsterling}{2172}{00A3}
+\pxDeclarePdfTextCommand{\textcurrency}{}{00A4}
+\pxDeclarePdfTextCommand{\textyen}{}{00A5}
+\pxDeclarePdfTextCommand{\textbrokenbar}{}{00A6}
+\pxDeclarePdfTextCommand{\textsection}{2178}{00A7}
+\pxDeclarePdfTextCommand{\textasciidieresis}{212F}{00A8}
+\pxDeclarePdfTextCommand{\textcopyright}{}{00A9}
+\pxDeclarePdfTextCommand{\textordfeminine}{}{00AA}
+\pxDeclarePdfTextCommand{\guillemotleft}{}{00AB}
+\pxDeclarePdfTextCommand{\textlogicalnot}{224C}{00AC}
+\pxDeclarePdfTextCommand{\textlnot}{224C}{00AC}
+\pxDeclarePdfTextCommand{\textregistered}{}{00AE}
+\pxDeclarePdfTextCommand{\textasciimacron}{}{00AF}
+\pxDeclarePdfTextCommand{\textdegree}{216B}{00B0}
+\pxDeclarePdfTextCommand{\textplusminus}{215E}{00B1}
+\pxDeclarePdfTextCommand{\texttwosuperior}{}{00B2}
+\pxDeclarePdfTextCommand{\textthreesuperior}{}{00B3}
+\pxDeclarePdfTextCommand{\textacute}{212D}{00B4}
+%\pxDeclarePdfTextCommand{\textmu}{}{00B5}
+\pxDeclarePdfTextCommand{\textparagraph}{2279}{00B6}
+\pxDeclarePdfTextCommand{\textperiodcentered}{}{00B7}
+\pxDeclarePdfTextCommand{\textcedilla}{}{00B8}
+\pxDeclarePdfTextCommand{\textonesuperior}{}{00B9}
+\pxDeclarePdfTextCommand{\textordmasculine}{}{00BA}
+\pxDeclarePdfTextCommand{\guillemotright}{}{00BB}
+\pxDeclarePdfTextCommand{\textonequarter}{}{00BC}
+\pxDeclarePdfTextCommand{\textonehalf}{}{00BD}
+\pxDeclarePdfTextCommand{\textthreequarters}{}{00BE}
+\pxDeclarePdfTextCommand{\textquestiondown}{}{00BF}
+\pxDeclarePdfTextComposite{\`}{A}{}{00C0}
+\pxDeclarePdfTextComposite{\'}{A}{}{00C1}
+\pxDeclarePdfTextComposite{\^}{A}{}{00C2}
+\pxDeclarePdfTextComposite{\~}{A}{}{00C3}
+\pxDeclarePdfTextComposite{\"}{A}{}{00C4}
+\pxDeclarePdfTextComposite{\r}{A}{}{00C5}
+\pxDeclarePdfTextCommand{\AE}{}{00C6}
+\pxDeclarePdfTextComposite{\c}{C}{}{00C7}
+\pxDeclarePdfTextComposite{\`}{E}{}{00C8}
+\pxDeclarePdfTextComposite{\'}{E}{}{00C9}
+\pxDeclarePdfTextComposite{\^}{E}{}{00CA}
+\pxDeclarePdfTextComposite{\"}{E}{}{00CB}
+\pxDeclarePdfTextComposite{\`}{I}{}{00CC}
+\pxDeclarePdfTextComposite{\'}{I}{}{00CD}
+\pxDeclarePdfTextComposite{\^}{I}{}{00CE}
+\pxDeclarePdfTextComposite{\"}{I}{}{00CF}
+\pxDeclarePdfTextCommand{\DH}{}{00D0}
+\pxDeclarePdfTextCommand{\DJ}{}{00D0}
+\pxDeclarePdfTextComposite{\~}{N}{}{00D1}
+\pxDeclarePdfTextComposite{\`}{O}{}{00D2}
+\pxDeclarePdfTextComposite{\'}{O}{}{00D3}
+\pxDeclarePdfTextComposite{\^}{O}{}{00D4}
+\pxDeclarePdfTextComposite{\~}{O}{}{00D5}
+\pxDeclarePdfTextComposite{\"}{O}{}{00D6}
+\pxDeclarePdfTextCommand{\textmultiply}{215F}{00D7}
+\pxDeclarePdfTextCommand{\O}{}{00D8}
+\pxDeclarePdfTextComposite{\`}{U}{}{00D9}
+\pxDeclarePdfTextComposite{\'}{U}{}{00DA}
+\pxDeclarePdfTextComposite{\^}{U}{}{00DB}
+\pxDeclarePdfTextComposite{\"}{U}{}{00DC}
+\pxDeclarePdfTextComposite{\'}{Y}{}{00DD}
+\pxDeclarePdfTextCommand{\TH}{}{00DE}
+\pxDeclarePdfTextCommand{\ss}{}{00DF}
+\pxDeclarePdfTextComposite{\`}{a}{}{00E0}
+\pxDeclarePdfTextComposite{\'}{a}{}{00E1}
+\pxDeclarePdfTextComposite{\^}{a}{}{00E2}
+\pxDeclarePdfTextComposite{\~}{a}{}{00E3}
+\pxDeclarePdfTextComposite{\"}{a}{}{00E4}
+\pxDeclarePdfTextComposite{\r}{a}{}{00E5}
+\pxDeclarePdfTextCommand{\ae}{}{00E6}
+\pxDeclarePdfTextComposite{\c}{c}{}{00E7}
+\pxDeclarePdfTextComposite{\`}{e}{}{00E8}
+\pxDeclarePdfTextComposite{\'}{e}{}{00E9}
+\pxDeclarePdfTextComposite{\^}{e}{}{00EA}
+\pxDeclarePdfTextComposite{\"}{e}{}{00EB}
+\pxDeclarePdfTextComposite{\`}{i}{}{00EC}
+\pxDeclarePdfTextComposite{\`}{\i}{}{00EC}
+\pxDeclarePdfTextComposite{\'}{i}{}{00ED}
+\pxDeclarePdfTextComposite{\'}{\i}{}{00ED}
+\pxDeclarePdfTextComposite{\^}{i}{}{00EE}
+\pxDeclarePdfTextComposite{\^}{\i}{}{00EE}
+\pxDeclarePdfTextComposite{\"}{i}{}{00EF}
+\pxDeclarePdfTextComposite{\"}{\i}{}{00EF}
+\pxDeclarePdfTextCommand{\dh}{}{00F0}
+\pxDeclarePdfTextComposite{\~}{n}{}{00F1}
+\pxDeclarePdfTextComposite{\`}{o}{}{00F2}
+\pxDeclarePdfTextComposite{\'}{o}{}{00F3}
+\pxDeclarePdfTextComposite{\^}{o}{}{00F4}
+\pxDeclarePdfTextComposite{\~}{o}{}{00F5}
+\pxDeclarePdfTextComposite{\"}{o}{}{00F6}
+\pxDeclarePdfTextCommand{\textdivide}{2160}{00F7}
+\pxDeclarePdfTextCommand{\o}{}{00F8}
+\pxDeclarePdfTextComposite{\`}{u}{}{00F9}
+\pxDeclarePdfTextComposite{\'}{u}{}{00FA}
+\pxDeclarePdfTextComposite{\^}{u}{}{00FB}
+\pxDeclarePdfTextComposite{\"}{u}{}{00FC}
+\pxDeclarePdfTextComposite{\'}{y}{}{00FD}
+\pxDeclarePdfTextCommand{\th}{}{00FE}
+\pxDeclarePdfTextComposite{\"}{y}{}{00FF}
+\pxDeclarePdfTextCommand{\textcelsius}{216E}{2103}
+%%%%%%%%
+
+%%[B] Aliases to [A].
+\pxDeclarePdfTextCommand{\copyright}{}{00A9}
+\pxDeclarePdfTextCommand{\textflqq}{}{00AB}
+\pxDeclarePdfTextCommand{\flqq}{}{00AB}
+\pxDeclarePdfTextCommand{\textneg}{224C}{00AC}
+\pxDeclarePdfTextCommand{\textpm}{215E}{00B1}
+\pxDeclarePdfTextCommand{\textcdot}{}{00B7}
+\pxDeclarePdfTextCommand{\textfrqq}{}{00BB}
+\pxDeclarePdfTextCommand{\frqq}{}{00BB}
+\pxDeclarePdfTextCommand{\texttimes}{215F}{00D7}
+\pxDeclarePdfTextCommand{\textdiv}{2160}{00F7}
+\pxDeclarePdfTextCommand{\textgrq}{2146}{2018}
+\pxDeclarePdfTextCommand{\textglq}{}{201A}
+\pxDeclarePdfTextCommand{\textquotesinglbase}{}{201A}
+\pxDeclarePdfTextCommand{\textgrqq}{2148}{201C}
+\pxDeclarePdfTextCommand{\crqq}{2148}{201C}
+\pxDeclarePdfTextCommand{\textglqq}{}{201E}
+\pxDeclarePdfTextCommand{\clqq}{}{201E}
+\pxDeclarePdfTextCommand{\textquotedblbase}{}{201E}
+\pxDeclarePdfTextCommand{\textflq}{}{2039}
+\pxDeclarePdfTextCommand{\textfrq}{}{203A}
+\pxDeclarePdfTextCommand{\textEuro}{}{20AC}
+%%
+
+%%[C] The characters that are included both in JIS X 0213
+% and some of the TeX encodings.
+% Note: The entries marked with (*) involves non-standard mappings.
+\pxDeclarePdfTextCommand{\textbardbl}{2142}{2016}
+\pxDeclarePdfTextCommand{\textlangle}{2152}{3008}%(*)2329
+\pxDeclarePdfTextCommand{\textrangle}{2153}{3009}%(*)232A
+\pxDeclarePdfTextCommand{\textxleq}{2165}{2266}%(*)2264
+\pxDeclarePdfTextCommand{\textxgeq}{2166}{2267}%(*)2265
+\pxDeclarePdfTextCommand{\textinfty}{2167}{221E}
+\pxDeclarePdfTextCommand{\textborn}{217A}{2605}
+\pxDeclarePdfTextCommand{\textreferencemark}{2228}{203B}
+\pxDeclarePdfTextCommand{\textrightarrow}{222A}{2192}
+\pxDeclarePdfTextCommand{\textleftarrow}{222B}{2190}
+\pxDeclarePdfTextCommand{\textuparrow}{222C}{2191}
+\pxDeclarePdfTextCommand{\textdownarrow}{222D}{2193}
+\pxDeclarePdfTextCommand{\textsurd}{2265}{221A}
+\pxDeclarePdfTextCommand{\textapprox}{}{2245}
+\pxDeclarePdfTextCommand{\textmusicalnote}{2276}{266A}
+\pxDeclarePdfTextCommand{\textbigcircle}{227E}{25EF}
+\pxDeclarePdfTextCommand{\textopenbullet}{}{25E6}
+\pxDeclarePdfTextCommand{\textell}{}{2113}
+\pxDeclarePdfTextCommand{\textmho}{}{2127}
+\pxDeclarePdfTextCommand{\textAlpha}{2621}{0391}
+\pxDeclarePdfTextCommand{\textBeta}{2622}{0392}
+\pxDeclarePdfTextCommand{\textGamma}{2623}{0393}
+\pxDeclarePdfTextCommand{\textDelta}{2624}{0394}
+\pxDeclarePdfTextCommand{\textEpsilon}{2625}{0395}
+\pxDeclarePdfTextCommand{\textZeta}{2626}{0396}
+\pxDeclarePdfTextCommand{\textEta}{2627}{0397}
+\pxDeclarePdfTextCommand{\textTheta}{2628}{0398}
+\pxDeclarePdfTextCommand{\textIota}{2629}{0399}
+\pxDeclarePdfTextCommand{\textKappa}{262A}{039A}
+\pxDeclarePdfTextCommand{\textLambda}{262B}{039B}
+\pxDeclarePdfTextCommand{\textMu}{262C}{039C}
+\pxDeclarePdfTextCommand{\textNu}{262D}{039D}
+\pxDeclarePdfTextCommand{\textXi}{262E}{039E}
+\pxDeclarePdfTextCommand{\textOmicron}{262F}{039F}
+\pxDeclarePdfTextCommand{\textPi}{2630}{03A0}
+\pxDeclarePdfTextCommand{\textRho}{2631}{03A1}
+\pxDeclarePdfTextCommand{\textSigma}{2632}{03A3}
+\pxDeclarePdfTextCommand{\textTau}{2633}{03A4}
+\pxDeclarePdfTextCommand{\textUpsilon}{2634}{03A5}
+\pxDeclarePdfTextCommand{\textPhi}{2635}{03A6}
+\pxDeclarePdfTextCommand{\textChi}{2636}{03A7}
+\pxDeclarePdfTextCommand{\textPsi}{2637}{03A8}
+\pxDeclarePdfTextCommand{\textOmega}{2638}{03A9}
+\pxDeclarePdfTextCommand{\textohm}{2638}{03A9}%(*)2126
+\pxDeclarePdfTextCommand{\textalpha}{2641}{03B1}
+\pxDeclarePdfTextCommand{\textbeta}{2642}{03B2}
+\pxDeclarePdfTextCommand{\textgamma}{2643}{03B3}
+\pxDeclarePdfTextCommand{\textdelta}{2644}{03B4}
+\pxDeclarePdfTextCommand{\textepsilon}{2645}{03B5}
+\pxDeclarePdfTextCommand{\textzeta}{2646}{03B6}
+\pxDeclarePdfTextCommand{\texteta}{2647}{03B7}
+\pxDeclarePdfTextCommand{\texttheta}{2648}{03B8}
+\pxDeclarePdfTextCommand{\textiota}{2649}{03B9}
+\pxDeclarePdfTextCommand{\textkappa}{264A}{03BA}
+\pxDeclarePdfTextCommand{\textlambda}{264B}{03BB}
+\pxDeclarePdfTextCommand{\textmu}{264C}{03BC}
+\pxDeclarePdfTextCommand{\textnu}{264D}{03BD}
+\pxDeclarePdfTextCommand{\textxi}{264E}{03BE}
+\pxDeclarePdfTextCommand{\textomicron}{264F}{03BF}
+\pxDeclarePdfTextCommand{\textpi}{2650}{03C0}
+\pxDeclarePdfTextCommand{\textrho}{2651}{03C1}
+\pxDeclarePdfTextCommand{\textsigma}{2652}{03C3}
+\pxDeclarePdfTextCommand{\texttau}{2653}{03C4}
+\pxDeclarePdfTextCommand{\textupsilon}{2654}{03C5}
+\pxDeclarePdfTextCommand{\textphi}{2655}{03C6}
+\pxDeclarePdfTextCommand{\textchi}{2656}{03C7}
+\pxDeclarePdfTextCommand{\textpsi}{2657}{03C8}
+\pxDeclarePdfTextCommand{\textomega}{2658}{03C9}
+\pxDeclarePdfTextCommand{\textvarsigma}{}{03C2}
+\pxDeclarePdfTextCommand{\textfinalsigma}{}{03C2}
+\pxDeclarePdfTextCommand{\CYRA}{2721}{0410}
+\pxDeclarePdfTextCommand{\CYRB}{2722}{0411}
+\pxDeclarePdfTextCommand{\CYRV}{2723}{0412}
+\pxDeclarePdfTextCommand{\CYRG}{2724}{0413}
+\pxDeclarePdfTextCommand{\CYRD}{2725}{0414}
+\pxDeclarePdfTextCommand{\CYRE}{2726}{0415}
+\pxDeclarePdfTextCommand{\CYRYO}{2727}{0401}
+\pxDeclarePdfTextCommand{\CYRZH}{2728}{0416}
+\pxDeclarePdfTextCommand{\CYRZ}{2729}{0417}
+\pxDeclarePdfTextCommand{\CYRI}{272A}{0418}
+\pxDeclarePdfTextCommand{\CYRISHRT}{272B}{0419}
+\pxDeclarePdfTextCommand{\CYRK}{272C}{041A}
+\pxDeclarePdfTextCommand{\CYRL}{272D}{041B}
+\pxDeclarePdfTextCommand{\CYRM}{272E}{041C}
+\pxDeclarePdfTextCommand{\CYRN}{272F}{041D}
+\pxDeclarePdfTextCommand{\CYRO}{2730}{041E}
+\pxDeclarePdfTextCommand{\CYRP}{2731}{041F}
+\pxDeclarePdfTextCommand{\CYRR}{2732}{0420}
+\pxDeclarePdfTextCommand{\CYRS}{2733}{0421}
+\pxDeclarePdfTextCommand{\CYRT}{2734}{0422}
+\pxDeclarePdfTextCommand{\CYRU}{2735}{0423}
+\pxDeclarePdfTextCommand{\CYRF}{2736}{0424}
+\pxDeclarePdfTextCommand{\CYRH}{2737}{0425}
+\pxDeclarePdfTextCommand{\CYRC}{2738}{0426}
+\pxDeclarePdfTextCommand{\CYRCH}{2739}{0427}
+\pxDeclarePdfTextCommand{\CYRSH}{273A}{0428}
+\pxDeclarePdfTextCommand{\CYRSHCH}{273B}{0429}
+\pxDeclarePdfTextCommand{\CYRHRDSN}{273C}{042A}
+\pxDeclarePdfTextCommand{\CYRERY}{273D}{042B}
+\pxDeclarePdfTextCommand{\CYRSFTSN}{273E}{042C}
+\pxDeclarePdfTextCommand{\CYREREV}{273F}{042D}
+\pxDeclarePdfTextCommand{\CYRYU}{2740}{042E}
+\pxDeclarePdfTextCommand{\CYRYA}{2741}{042F}
+\pxDeclarePdfTextCommand{\cyra}{2751}{0430}
+\pxDeclarePdfTextCommand{\cyrb}{2752}{0431}
+\pxDeclarePdfTextCommand{\cyrv}{2753}{0432}
+\pxDeclarePdfTextCommand{\cyrg}{2754}{0433}
+\pxDeclarePdfTextCommand{\cyrd}{2755}{0434}
+\pxDeclarePdfTextCommand{\cyre}{2756}{0435}
+\pxDeclarePdfTextCommand{\cyryo}{2757}{0451}
+\pxDeclarePdfTextCommand{\cyrzh}{2758}{0436}
+\pxDeclarePdfTextCommand{\cyrz}{2759}{0437}
+\pxDeclarePdfTextCommand{\cyri}{275A}{0438}
+\pxDeclarePdfTextCommand{\cyrishrt}{275B}{0439}
+\pxDeclarePdfTextCommand{\cyrk}{275C}{043A}
+\pxDeclarePdfTextCommand{\cyrl}{275D}{043B}
+\pxDeclarePdfTextCommand{\cyrm}{275E}{043C}
+\pxDeclarePdfTextCommand{\cyrn}{275F}{043D}
+\pxDeclarePdfTextCommand{\cyro}{2760}{043E}
+\pxDeclarePdfTextCommand{\cyrp}{2761}{043F}
+\pxDeclarePdfTextCommand{\cyrr}{2762}{0440}
+\pxDeclarePdfTextCommand{\cyrs}{2763}{0441}
+\pxDeclarePdfTextCommand{\cyrt}{2764}{0442}
+\pxDeclarePdfTextCommand{\cyru}{2765}{0443}
+\pxDeclarePdfTextCommand{\cyrf}{2766}{0444}
+\pxDeclarePdfTextCommand{\cyrh}{2767}{0445}
+\pxDeclarePdfTextCommand{\cyrc}{2768}{0446}
+\pxDeclarePdfTextCommand{\cyrch}{2769}{0447}
+\pxDeclarePdfTextCommand{\cyrsh}{276A}{0448}
+\pxDeclarePdfTextCommand{\cyrshch}{276B}{0449}
+\pxDeclarePdfTextCommand{\cyrhrdsn}{276C}{044A}
+\pxDeclarePdfTextCommand{\cyrery}{276D}{044B}
+\pxDeclarePdfTextCommand{\cyrsftsn}{276E}{044C}
+\pxDeclarePdfTextCommand{\cyrerev}{276F}{044D}
+\pxDeclarePdfTextCommand{\cyryu}{2770}{044E}
+\pxDeclarePdfTextCommand{\cyrya}{2771}{044F}
+\pxDeclarePdfTextCommand{\textvisiblespace}{}{2423}
+\pxDeclarePdfTextComposite{\=}{A}{}{0100}
+\pxDeclarePdfTextComposite{\=}{I}{}{012A}
+\pxDeclarePdfTextComposite{\=}{U}{}{016A}
+\pxDeclarePdfTextComposite{\=}{E}{}{0112}
+\pxDeclarePdfTextComposite{\=}{O}{}{014C}
+\pxDeclarePdfTextComposite{\=}{a}{}{0101}
+\pxDeclarePdfTextComposite{\=}{i}{}{012B}
+\pxDeclarePdfTextComposite{\=}{u}{}{016B}
+\pxDeclarePdfTextComposite{\=}{e}{}{0113}
+\pxDeclarePdfTextComposite{\=}{o}{}{014D}
+\pxDeclarePdfTextComposite{\k}{A}{}{0104}
+\pxDeclarePdfTextComposite{\v}{L}{}{013D}
+\pxDeclarePdfTextComposite{\'}{S}{}{015A}
+\pxDeclarePdfTextComposite{\c}{S}{}{015E}
+\pxDeclarePdfTextComposite{\v}{T}{}{0164}
+\pxDeclarePdfTextComposite{\'}{Z}{}{0179}
+\pxDeclarePdfTextComposite{\.}{Z}{}{017B}
+\pxDeclarePdfTextComposite{\k}{a}{}{0105}
+\pxDeclarePdfTextComposite{\v}{l}{}{013E}
+\pxDeclarePdfTextComposite{\'}{s}{}{015B}
+\pxDeclarePdfTextComposite{\c}{s}{}{015F}
+\pxDeclarePdfTextComposite{\v}{t}{}{0165}
+\pxDeclarePdfTextComposite{\'}{z}{}{017A}
+\pxDeclarePdfTextComposite{\.}{z}{}{017C}
+\pxDeclarePdfTextComposite{\'}{R}{}{0154}
+\pxDeclarePdfTextComposite{\u}{A}{}{0102}
+\pxDeclarePdfTextComposite{\'}{L}{}{0139}
+\pxDeclarePdfTextComposite{\'}{C}{}{0106}
+\pxDeclarePdfTextComposite{\v}{C}{}{010C}
+\pxDeclarePdfTextComposite{\k}{E}{}{0118}
+\pxDeclarePdfTextComposite{\v}{E}{}{011A}
+\pxDeclarePdfTextComposite{\v}{D}{}{010E}
+\pxDeclarePdfTextComposite{\'}{N}{}{0143}
+\pxDeclarePdfTextComposite{\v}{N}{}{0147}
+\pxDeclarePdfTextComposite{\H}{O}{}{0150}
+\pxDeclarePdfTextComposite{\v}{R}{}{0158}
+\pxDeclarePdfTextComposite{\r}{U}{}{016E}
+\pxDeclarePdfTextComposite{\H}{U}{}{0170}
+\pxDeclarePdfTextComposite{\c}{T}{}{0162}
+\pxDeclarePdfTextComposite{\'}{r}{}{0155}
+\pxDeclarePdfTextComposite{\u}{a}{}{0103}
+\pxDeclarePdfTextComposite{\'}{l}{}{013A}
+\pxDeclarePdfTextComposite{\'}{c}{}{0107}
+\pxDeclarePdfTextComposite{\v}{c}{}{010D}
+\pxDeclarePdfTextComposite{\k}{e}{}{0119}
+\pxDeclarePdfTextComposite{\v}{e}{}{011B}
+\pxDeclarePdfTextComposite{\v}{d}{}{010F}
+\pxDeclarePdfTextCommand{\dj}{}{0111}
+\pxDeclarePdfTextComposite{\'}{n}{}{0144}
+\pxDeclarePdfTextComposite{\v}{n}{}{0148}
+\pxDeclarePdfTextComposite{\H}{o}{}{0151}
+\pxDeclarePdfTextComposite{\v}{r}{}{0159}
+\pxDeclarePdfTextComposite{\r}{u}{}{016F}
+\pxDeclarePdfTextComposite{\H}{u}{}{0171}
+\pxDeclarePdfTextComposite{\c}{t}{}{0163}
+\pxDeclarePdfTextCommand{\ng}{}{014B}
+\pxDeclarePdfTextCommand{\textnumero}{}{2116}
+%%
+
+% Give a substitute definition to characters that appear as
+% ligatures, since otherwise hyperref leaves some garbage in
+% output pdf-strings when such ligatures appear.
+\ifpxhy@uptex\else
+ \ifpxhy@zerox\else
+ \DeclareTextCommand{\textendash}{PD1}{--}
+ \DeclareTextCommand{\textquestiondown}{PD1}{}% empty
+ \DeclareTextCommand{\textexclamdown}{PD1}{}% empty
+ \fi
+\fi
+
+%--------------------------------------- Enable hyperref unicode
+\ifpxhy@hy@unicode
+
+\PackageInfo\pxhy@pkgname
+ {The setup for hyperref 'unicode' is applied.\MessageBreak
+ (Note that this feature is experimental.)\@gobbletwo}
+
+%% The following code is taken from hyperref.sty.
+%%%%BEGIN
+ \def\HyPsd@Char#1{%
+ \ifnum`#1<128 %
+ \@backslashchar 000#1%
+ \else
+ \ifnum`#1<65536 %
+ \expandafter\HyPsd@CharTwoByte\number`#1!%
+ \else
+ \expandafter\expandafter\expandafter\HyPsd@CharSurrogate
+ \intcalcSub{`#1}{65536}!%
+ \fi
+ \fi
+ }%
+ \def\HyPsd@CharTwoByte#1!{%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \IntCalcDiv#1!256!!%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \IntCalcMod#1!256!!%
+ }%
+ \def\HyPsd@CharOctByte#1!{%
+ \@backslashchar
+ \IntCalcDiv#1!64!%
+ \intcalcDiv{\IntCalcMod#1!64!}{8}%
+ \IntCalcMod#1!8!%
+ }%
+ \def\HyPsd@CharSurrogate#1!{%
+ \@backslashchar 33%
+ \IntCalcDiv#1!262144!%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \intcalcDiv{\IntCalcMod#1!262144!}{1024}!%
+ \@backslashchar 33%
+ \expandafter\expandafter\expandafter\IntCalcAdd
+ \intcalcDiv{\IntCalcMod#1!1024!}{256}!4!%
+ \expandafter\expandafter\expandafter\HyPsd@CharOctByte
+ \IntCalcMod#1!256!!%
+ }%
+%%%%END
+
+%% disable the verification of bxjscls
+\let\jsCheckHyperrefUnicode\@empty
+
+\fi
+%--------------------------------------- 'jacommentline'
+\ifpxhy@jacommentline
+
+% The 'jacomemntline' feature outputs at the top of the
+% hyperref outline file (*.out) a comment line including
+% some Japanese characters.
+
+%% \pxhy@jacomment
+\let\pxhy@jacomment\@empty
+\begingroup
+ \@for\pxhy@x:={%
+ 2433,244E,2555,2521,2524,256B,244F,467C,4B5C,386C,%
+ 4A38,3B7A,2472,345E,245F,245E,2439%
+ }\do{%
+ \kansujichar1=\jis"\pxhy@x\relax
+ \xdef\pxhy@jacomment{\pxhy@jacomment\kansuji1}%
+ }
+\endgroup
+
+%% attach a hook
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname ReadBookmarks\endcsname\relax\else
+ \g@addto@macro\ReadBookmarks{%
+ \if@filesw
+ \ifx\@outlinefile\@undefined\else
+ \immediate\write\@outlinefile{%
+ \@percentchar\pxhy@jacomment.}%
+ \fi
+ \fi
+ }
+\fi
+
+\fi
+%--------------------------------------- All done
+\endinput
+%% EOF
diff --git a/language/japanese/pxjahyper/pxjahyper.tex b/language/japanese/pxjahyper/pxjahyper.tex
new file mode 100644
index 0000000000..41b1b1c7f5
--- /dev/null
+++ b/language/japanese/pxjahyper/pxjahyper.tex
@@ -0,0 +1,136 @@
+% 文字コードは UTF-8
+% platex で組版する
+\documentclass[a4paper]{jsarticle}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{0.3e}
+\newcommand{\PkgDate}{2019/06/20}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{~:\quad}
+\providecommand{\pTeX}{p\TeX}
+\providecommand{\upTeX}{u\pTeX}
+\providecommand{\pLaTeX}{p\LaTeX}
+\providecommand{\upLaTeX}{u\pLaTeX}
+%-----------------------------------------------------------
+\begin{document}
+\title{\Pkg{pxjahyper} パッケージ}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion\quad[\PkgDate]}
+\maketitle
+
+%===========================================================
+\section{概要}
+
+(u){\pLaTeX} + hyperref + dvipdfmxの組み合わせで
+日本語を含む「しおり」をもつPDF文書を作成する
+場合に必要となる機能を提供する。
+\begin{itemize}
+\item dvipdfmx用の「tounicode special」について、
+ 内部漢字コードに応じて適切なものを出力する。
+\item PDF文字列の中でLICR(|\"a| や |\textsection| 等の
+ 文字出力の命令)が正しく機能するようにする。
+ ただし、エンジンが {\pTeX} の場合は、out2uni を利用
+ する場合を除き、JIS~X~0208にない文字は出力できない
+ (hyperrefの警告が出る)。
+\item {\TeX} の版面拡大機能が使われている
+ (|\mag| が1000でない;典型的には\Pkg{jsclasses}の
+ 文書クラスで基底フォントサイズが10\,pt以外である)
+ 場合に、\Pkg{hyperref}が出力するpapersize specialの
+ 紙面サイズの値が不正になるが、この場合に |\mag| 値を
+ 考慮して求めた正しいサイズによるpapersize specialを
+ 改めて出力する。
+\end{itemize}
+
+%===========================================================
+\section{パッケージの読込}
+
+|\usepackage| で読み込む。
+\begin{quote}\small\begin{verbatim}
+\usepackage[オプション,...]{pxjahyper}
+\end{verbatim}\end{quote}
+
+使用可能なオプションは以下の通り。
+\begin{itemize}
+\item |tounicode|(既定)\Means
+ dvipdfmx用の「tounicode special」を出力する。
+\item |notounicode|\Means
+ |tounicode| の否定。
+\item |out2uni|\Means
+ out2uniフィルタ(角藤氏製作)を使うことを前提にした
+ 出力を行う。
+ (|tounicode| が無効になる。)
+ {\upLaTeX} では使用不可。
+\item |noout2uni|(既定)\Means
+ |out2uni| の否定。
+\item |bigcode|(既定)\Means
+ {\upTeX}でのToUnicode CMapとして既定のUTF8-UCSの代わりに\
+ UTF8-UTF16を用いる。
+ (当該のファイルが存在する必要がある。)
+\item |nobigcode|\Means
+ |bigcode| の否定。
+ \Note 0.3a版より既定を |bigcode| に変更した。
+\item |dvipdfmx|\Means
+ dvipdfmxを前提とした動作を行う。
+\item |nodriver|/|none|\Means
+ dvipdfmxを前提とした動作を抑止する。
+ 現状では、この場合には本パッケージは実質的に何の動作も行わない。
+\item |auto|(既定)\Means
+ \Pkg{hyperref}のドライバがdvipdfmx用ならば |dvipdfmx|、
+ それ以外は |none| の動作。
+\end{itemize}
+
+%===========================================================
+\section{機能}
+
+「概要」で述べた機能は(オプション設定に応じて)
+自動的に実施される。
+
+\paragraph{Unicode符号値による入力}
+PDF文字列入力中で、|\Ux| が以下の意味になる。
+PDF文字列以外では |\Ux| は以前の定義(または未定義)に戻る。
+
+\begin{itemize}
+\item |\Ux{|Unicode符号値|}|\Means
+ その符号値の文字を出力する。
+\end{itemize}
+
+符号値は16進数で指定する。
+
+なお、\Pkg{OTF}パッケージの |\UTF| 命令は、PDF文字列中では
+out2uni用の出力を行うように設計されているが、
+本パッケージを {\upLaTeX} で用いた場合は、
+|\UTF| も(PDF文字列中では)|\Ux| と同じ動作
+(つまりtounicode用の出力)になるように変更される。
+
+\paragraph{PDF文字列用の文字命令の定義}
+以下の命令が提供される。(プリアンブルでのみ使用可能。)
+
+\begin{itemize}
+\item |\pxDeclarePdfTextCommand{\制御綴}{|\Meta{JIS符号値}|}{|\Meta
+{Unicode符号値}|}|\Means
+ PDF文字列中の |\制御綴| の動作として、
+ 指定した符号値の文字を出力することを指定する。
+\item |\pxDeclarePdfTextComposite{\制御綴}{|\Meta{引数}|}{|\Meta
+{JIS符号値}|}{|\Meta{Unicode符号値}|}|\Means
+ PDF文字列中の |\制御綴|(アクセント命令)+ \Meta{引数}の
+ 動作として、指定した符号値の文字を出力することを指定する。
+\end{itemize}
+
+これらの命令において、符号値は16進数で指定する。
+「JIS符号値」は {\upLaTeX} では使われないので省略して
+(空にして)もよい
+(或いはそもそも JIS~X~0208 にない文字の場合は省略する)。
+逆に「Unicode符号値」は {\pLaTeX} の動作でかつ「JIS符号値」が
+指定されている場合は省略してよい。
+
+例えば、以下のように定義しておくと、
+PDF文字列中で |\textschwa|(schwa記号)や |\d{t}|(\d{t})が
+使えるようになる。
+\begin{quote}\small\begin{verbatim}
+\pxDeclarePdfTextCommand{\textschwa}{}{0259}
+\pxDeclarePdfTextComposite{\d}{t}{}{1E6D}
+\end{verbatim}\end{quote}
+
+\end{document}
diff --git a/language/japanese/pxjodel/LICENSE b/language/japanese/pxjodel/LICENSE
new file mode 100644
index 0000000000..534324b756
--- /dev/null
+++ b/language/japanese/pxjodel/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2019 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/pxjodel/README.md b/language/japanese/pxjodel/README.md
new file mode 100644
index 0000000000..9de5e388bd
--- /dev/null
+++ b/language/japanese/pxjodel/README.md
@@ -0,0 +1,81 @@
+PXjodel Package
+===============
+
+LaTeX: To help change metrics of the fonts of japanese-otf package
+
+This package changes the setup of the japanese-otf package, so that the
+TFMs for direct input are all replaced by new ones with prefixed names;
+for exmaple, `nmlminr-h` will be replaced by `foo--nmlminr-h`, where
+`foo` is the prefix specified by the user.
+
+This function will assist the users who want to use japamese-otf package
+together with tailored TFMs of Japanese fonts.
+
+Note: The “jodel” part of the package name stands for “**j**apanese-**o**tf
+**del**uxe”. Here “deluxe” is the name of japanese-otf’s option for
+employing multi-weight Japanese font families. This option is probably the
+most likely reason for using japanese-otf. So this package is really about
+japanese-otf’s “deluxe” option, hence the name. It is not related to
+yodel singing, although some sense of word-play is intended.
+
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: pTeX / upTeX (including its derivatives).
+ * DVI drivers: Anything that supports JFMs and VFs.
+ * Dependent packages:
+ - japanese-otf
+ - ifptex
+ - xkeyval
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/platex/pxjodel/
+ - `tfm/*.tfm` → $TEXMF/fonts/tfm/public/pxjodel/
+ - `vf/*.vf` → $TEXMF/fonts/vf/public/pxjodel/
+
+### License
+
+This package is distributed under the MIT License.
+
+
+The pxjodel Package ― main
+---------------------------
+
+Note: The manual [pxjodel.pdf] (in Japanese) describes how to utilize this
+package to customize the metrics of the fonts of japanese-otf package.
+
+### Package Loading
+
+ \usepackage[<option>,...]{pxjodel}
+
+Available options are:
+
+ * `prefix=<string>`: Specifies the prefix for new TFM names, actually
+ the prefix `<string>--` will be prepended to names; `prefix=foo` will
+ replace `nmlminr-h` with `foo--nmlminr-h`.
+ * All other options are passed to japanese-otf. Note that if you use
+ this mechanism, you must not load japanese-otf before this package.
+
+When this package is loaded, japanese-otf will be automatically loaded
+unless it is already loaded. Once the package is loaded, the NFSS settings
+for the fonts of japanese-otf will be redeclared.
+
+### Usage
+
+For present, this package has no public commands. All the settings are
+done through the package option.
+
+
+Revision History
+----------------
+
+ * Version 0.2a 〈2019/02/12〉
+ - Remove unnecessaty files.
+ * Version 0.2 〈2019/02/02〉
+ - The first public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/pxjodel/pxjodel.pdf b/language/japanese/pxjodel/pxjodel.pdf
new file mode 100644
index 0000000000..147a621040
--- /dev/null
+++ b/language/japanese/pxjodel/pxjodel.pdf
Binary files differ
diff --git a/language/japanese/pxjodel/pxjodel.sty b/language/japanese/pxjodel/pxjodel.sty
new file mode 100644
index 0000000000..b5ba40b71f
--- /dev/null
+++ b/language/japanese/pxjodel/pxjodel.sty
@@ -0,0 +1,188 @@
+%%
+%% This is file 'pxjodel.sty'.
+%%
+%% Copyright (c) 2019 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxjodel}[2019/02/12 v0.2a]
+\def\pxjo@pkgname{pxjodel}
+%
+\providecommand\bxDebug[1]{}
+
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{xkeyval}
+\RequirePackage{ifuptex}
+
+%% unique tokens
+\def\pxjo@end{\pxjo@end@}
+\def\pxjo@mt{\pxjo@mt@}
+
+%--------------------------------------- options
+
+%% variables
+\let\pxjo@prefix\@empty
+\@onlypreamble\pxjo@thru
+\let\pxjo@thru\@empty
+
+%% prefix=...
+\define@cmdkey{pxjo}[pxjo@]{prefix}{}
+%% dispatch
+\edef\next{%
+ \noexpand\setkeys*{pxjo}{\@nameuse{opt@\@currname.\@currext}}%
+}\next
+\AtEndOfPackage{\let\@unprocessedoptions\relax}%
+% other options are passed to otf
+\let\pxjo@thru\XKV@rm
+
+%% check
+\ifx\pxjo@prefix\@empty
+ \PackageError\pxjo@pkgname
+ {Option 'prefix' is not given}%
+ {\@ehc}
+\expandafter\endinput\fi\relax
+
+%% load 'otf' package
+\@ifpackageloaded{otf}{%
+ \ifx\pxjo@thru\@empty\else
+ \PackageError\pxjo@pkgname
+ {Package 'otf' is already loaded; the extra options\MessageBreak
+ (\pxjo@thru)\MessageBreak
+ cannot be passed}
+ {\@ehc}
+ \fi
+}{%else
+ \edef\next{%
+ \noexpand\RequirePackage[\pxjo@thru]{otf}%
+ }\next
+}
+
+%=======================================
+% All the code below is executed in a big group.
+\begingroup
+%--------------------------------------- helpers
+
+%% variables
+\let\pxjo@pre\relax
+\let\pxjo@post\relax
+
+%% \pxjo@split{<at>}{<target>}
+\def\pxjo@split#1#2{%
+ \edef\pxjo@tmpx{{#1}{#2}}%
+ \expandafter\pxjo@split@a\pxjo@tmpx}
+\def\pxjo@split@a#1#2{%
+ \def\pxjo@tmpx##1#1##2\pxjo@end{\pxjo@split@b{##1}{##2}}%
+ \pxjo@tmpx#2\pxjo@mt#1\pxjo@end}
+\def\pxjo@split@b#1#2{%
+ \let\pxjo@pre\relax \let\pxjo@post\relax
+ \ifx\pxjo@end#2\pxjo@end\else
+ \pxjo@split@c#2\pxjo@end{#1}%
+ \fi}
+\def\pxjo@split@c#1\pxjo@mt#2\pxjo@end#3{%
+ \def\pxjo@pre{#3}\def\pxjo@post{#1}}
+
+%% \pxjo@JY/\pxjo@JT
+\ifNativeupTeX
+\def\pxjo@JY{JY2}\def\pxjo@JT{JT2}
+\else
+\def\pxjo@JY{JY1}\def\pxjo@JT{JT1}
+\fi
+
+%% \pxjo@reset@size
+\def\pxjo@reset@size{10}
+\ifdim\f@size\p@=10\p@\else
+ \edef\pxjo@reset@size{\pxjo@reset@size,\f@size}
+\fi
+\ifx\jsc@JYn\@undefined\else %jsclasses
+ \begingroup
+ \footnotesize \xdef\@gtempa{\f@size}
+ \endgroup
+ \edef\pxjo@reset@size{\pxjo@reset@size,\@gtempa}
+\fi
+\bxDebug{jodel:reset@size=\pxjo@reset@size}
+
+%--------------------------------------- main process
+
+%% variables
+\let\pxjo@scale\relax
+\let\pxjo@tfm\relax
+\let\pxjo@newtfm\relax
+
+%% \pxjo@parse@spec{E/F/S/S}
+% Sets \pxjo@scale and \pxjo@tfm.
+\edef\pxjo@tmpb{%
+ {\expandafter\string\csname<->s\endcsname*[}{]}{$}}
+\def\pxjo@tmpa#1#2#3{%
+ \def\pxjo@parse@spec##1{%
+ \let\pxjo@scale\relax\let\pxjo@tfm\relax
+ \expandafter\expandafter\expandafter\pxjo@parse@spec@a
+ \csname##1\endcsname}%
+ \def\pxjo@parse@spec@a##1{%
+ \expandafter\pxjo@parse@spec@b\string##1#3#1#2#3\pxjo@end}
+ \def\pxjo@parse@spec@b##1#1##2#2##3#3##4\pxjo@end{%
+ \ifx\pxjo@mt##4\pxjo@mt\else
+ \def\pxjo@scale{##2}\def\pxjo@tfm{##3}%
+ \ifx\pxjodelReplaceExpertTfm\@undefined\else
+ \pxjo@change@tfm
+ \fi
+ \fi}%
+}\expandafter\pxjo@tmpa\pxjo@tmpb
+
+%% \pxjo@change@tfm
+\def\pxjo@tmpb#1/#2/#3/#4\pxjo@end{%
+ \def\pxjo@change@tfm{%
+ \pxjo@change@tfm@a{#2}{#4}%
+ \pxjo@change@tfm@a{#3}{#4}}
+}\def\pxjo@tmpa{/exp/ruby/nml}
+\expandafter\pxjo@tmpb\meaning\pxjo@tmpa\pxjo@end
+\def\pxjo@change@tfm@a#1#2{%
+ \pxjo@split{#1}\pxjo@tfm\ifx\pxjo@pre\relax\else
+ \edef\pxjo@tfm{\pxjo@pre#2\pxjo@post}%
+ \fi}
+
+%% \pxjo@@zu
+\def\pxjo@tmpb#1/#2\pxjo@end{%
+ \def\pxjo@@zu{#2}%
+}\def\pxjo@tmpa{/zu-}
+\expandafter\pxjo@tmpb\meaning\pxjo@tmpa\pxjo@end
+
+%% \pxjo@process@one
+\def\pxjo@process@one#1#2#3#4#5{%
+\bxDebug{jodel:process(#1;#2/#3/#4/#5)}%
+ \pxjo@parse@spec{#2/#3/#4/#5}%
+ \ifx\pxjo@tfm\relax\else
+ \pxjo@split{\pxjo@@zu}{\pxjo@tfm}%
+ \ifx\pxjo@pre\@empty
+ \edef\pxjo@newtfm{\pxjo@@zu\pxjo@prefix--\pxjo@post}%
+ \else
+ \edef\pxjo@newtfm{\pxjo@prefix--\pxjo@tfm}%
+ \fi
+\bxDebug{spec=\pxjo@scale:\pxjo@tfm:\pxjo@newtfm}%
+ \DeclareFontShape{#2}{#3}{#4}{#5}{<->s*[\pxjo@scale]\pxjo@newtfm}{}%
+ \if t#1%
+ \@for\pxjo@tmpa:=\pxjo@reset@size\do{%
+ \global\expandafter\let\csname#2/#3/#4/#5/\pxjo@tmpa
+ \endcsname\relax}%
+ \fi
+ \fi}
+
+%% process
+\@for\pxjo@w:={\pxjo@JY,\pxjo@JT}\do{%
+ \@for\pxjo@x:={hmc,hgt,mg,ruby,rubyg,rubymg}\do{%
+ \@for\pxjo@y:={l,m,bx,eb}\do{%
+ \expandafter\ifx\csname\pxjo@w/\pxjo@x/\pxjo@y/n\endcsname\relax\else
+ \expandafter\let\csname pxjo@DF/\pxjo@x\endcsname=t%
+ \pxjo@process@one{t}\pxjo@w\pxjo@x\pxjo@y{n}%
+ \fi}}}
+
+%--------------------------------------- all done
+\endgroup
+\endinput
+%% EOF
diff --git a/language/japanese/pxjodel/pxjodel.tex b/language/japanese/pxjodel/pxjodel.tex
new file mode 100644
index 0000000000..4090b27543
--- /dev/null
+++ b/language/japanese/pxjodel/pxjodel.tex
@@ -0,0 +1,227 @@
+% 文字コードは UTF-8
+% uplatex で組版する
+\documentclass[uplatex,dvipdfmx,a4paper]{jsarticle}
+\usepackage{color}
+\definecolor{myblue}{rgb}{0,0,0.75}
+\definecolor{mygreen}{rgb}{0,0.45,0}
+\usepackage[colorlinks,hyperfootnotes=false]{hyperref}
+\usepackage{pxjahyper}
+\hypersetup{linkcolor=myblue,urlcolor=mygreen}
+\usepackage{bxtexlogo}
+\bxtexlogoimport{*}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{0.2a}
+\newcommand{\PkgDate}{2019/02/12}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{:\ }
+\newcommand{\Strong}[1]{\textbf{#1}}
+%-----------------------------------------------------------
+\begin{document}
+\title{\Pkg{pxjodel} パッケージ}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion\quad[\PkgDate]}
+\maketitle
+
+\begin{abstract}
+本パッケージは\Pkg{japanese-otf}パッケージの
+和文フォント設定に対して
+「直接入力に対するTFMを特定の接頭辞を付けた名前のものに変更する」
+という変更を加える。
+例えば、ユーザが指定した接頭辞が|foo|である場合、
+|nmlminr-h|というTFMは|foo--nmlminr-h|に置き換えられる。
+\end{abstract}
+
+%\tableofcontents
+
+%===========================================================
+\section{前提環境}
+\label{sec:Requirement}
+
+\begin{itemize}
+\item {\TeX}フォーマット\Means {\LaTeX}
+\item {\TeX}エンジン\Means {\pTeX}/{\upTeX}(派生も含む)
+\item DVIウェア\Means 和文TFMとVFをサポートするもの
+\item 前提パッケージ\Means
+ \begin{itemize}
+ \item \Pkg{japanese-otf}パッケージ
+ \item \Pkg{ifptex}パッケージ
+ \item \Pkg{xkeyval}パッケージ
+ \end{itemize}
+\end{itemize}
+
+%===========================================================
+\section{何がしたいのか}
+\label{sec:Objective}
+
+{\pLaTeX}の文書作成において、カスタムのメトリックをもった独自の
+和文VFを用いていたとする。
+
+\begin{itemize}
+\item 横組・明朝体(|JY1/mc/m/n|): |hoge-h|
+\item 縦組・明朝体(|JT1/mc/m/n|): |hoge-v|
+\item 横組・ゴシック体(|JY1/gt/m/n|): |hogeg-h|
+\item 縦組・ゴシック体(|JT1/gt/m/n|): |hogeg-v|
+\end{itemize}
+
+\Note これらのVFは{\pTeX}の原メトリックTFM(|rml|/|gbm|)を
+参照しているものとする。
+
+ここで、以下のような理由で\Pkg{japanese-otf}パッケージを
+使いたくなったとする。
+\begin{enumerate}
+\item 今の設定は単ウェイトであるが、多ウェイトの和文フォントの
+設定(太明朝など)を使いたい。\label{itm:mw}
+\item \Pkg{japanese-otf}パッケージのもつ豊富な文字入力機能
+(|\CID|や|\ajMaru|など)を使いたい。\label{itm:ajm}
+\end{enumerate}
+しかし、単純に\Pkg{japanese-otf}パッケージを読みこんだのでは、
+和文VFが\Pkg{japanese-otf}のものに置き換わっってしまうため、
+カスタムのメトリックが維持されない。
+どうすればいいだろうか。
+
+\medskip
+
+もし\Pkg{japanese-otf}を使う目的が\ref{itm:ajm}だけであるなら、
+\Pkg{japanese-otf}の|noreplace|を使えば済む。
+目的が\ref{itm:mw}だけで場合については、
+「元の|hoge|などのVFを用意できる」人であれば追加のVFを作って
+対応できるであろう。
+(そうでないと対応は困難である。)
+しかし、\ref{itm:mw}と\ref{itm:ajm}の両方を満たす必要がある場合は、
+追加のVFの作製はもっと困難になる。
+\Pkg{japanese-otf}の複雑なVFの内部設計に合わせる必要があるからである。
+
+\medskip
+
+本パッケージは、\Pkg{japanese-otf}のVFを置き換えるための和文VFの
+作成を支援するものである。具体的には
+\begin{quote}
+カスタムのメトリックをもった横組・縦組の和文VFの組があるときに、
+\Pkg{japanese-otf}をそのメトリックで使えるような設定を作り出す
+\end{quote}
+ための作業を容易にする。
+
+%===========================================================
+\section{実際の手順}
+\label{sec:Procedure}
+
+実際に、前述の例に従って、|hoge-h|と|hoge-v|のVFの組
+\footnote{代わりに|hogeg-h|と|hogeg-v|のVFの組を使ってもよい。
+ とにかく入力として使うVFの組みは1つであり、
+ そのメトリックが全部の書体(ウェイト)に対して適用される。}%
+から、そのメトリックを継承した新しい\Pkg{japanese-otf}の
+和文フォント設定を作成するための手順を示す。
+
+使うソフトウェアは次の2つ。
+
+\begin{itemize}
+\item \Pkg{pxjodel}パッケージ(本パッケージ)。
+\item \Pkg{jfmutil}パッケージが提供する|jfmutil|コマンド。
+\end{itemize}
+
+\paragraph{手順}
+最初に一度だけ行う準備作業。
+
+\begin{enumerate}
+\item 入力となる和文VFのファイル
+ (|hoge-h.tfm|、|hoge-h.vf|、|hoge-v.tfm|、|hoge-v.vf|)
+ を{\TeX}から見える場所(カレントディレクトリでもよい)に置く。
+ これらのVFが{\TeX}で使えている状態であれば、
+ 既にそうなっているはずである。
+\item 今作ろうとしている設定に対する名前を用意する。
+ これは生成されるVFの名前の接頭辞として使われるので、
+ \Strong{接頭辞}と呼ぶことにする。
+ ここでは“|hoge|”を使うことにする。
+\item 次のコマンドを実行する。
+\begin{quote}\small\begin{verbatim}
+jfmutil jodel hoge-h hoge
+jfmutil jodel hoge-v hoge
+\end{verbatim}\end{quote}
+ \Note 最後の引数は「接頭辞」である。
+
+ これで|hoge--|で始まる名前のVF(|*.tfm|と|*.vf|ファイル)が
+ 大量に生成される。
+\item 生成されたVFのファイルを{\TeX}から見える場所に配置する。
+ 例えば\Means
+ \begin{itemize}
+ \item |*.tfm| → |$TEXMFHOME/fonts/tfm/public/jodel-hoge/|
+ \item |*.vf| → |$TEXMFHOME/fonts/vf/public/jodel-hoge/|
+ \end{itemize}
+ \Note 末尾のディレクトリの名前は何でもよい。
+ \Note 必要に応じて |mktexlsr|。
+\end{enumerate}
+
+ここで作製した新しい\Pkg{japanese-otf}の設定を
+{\pLaTeX}文書を適用するための手順。
+
+\begin{enumerate}
+\item プレアンブルで\Pkg{japanese-otf}%
+ ({\LaTeX}パッケージ名は|otf|)を読みこんだ後
+ (直後が望ましい)に、\Pkg{pxjodel}パッケージを
+ |prefix=hoge|のオプションを付けて読み込む。
+ 例えば以下のようになる。
+\begin{quote}\small\begin{verbatim}
+\usepackage[deluxe,jis2004]{otf}
+\usepackage[prefix=hoge]{pxjodel}
+\end{verbatim}\end{quote}
+ \Note もちろんこの|hoge|は「接頭辞」である。
+ \Note あるいは次のように2つのパッケージの読込をまとめられる。
+\begin{quote}\small\begin{verbatim}
+\usepackage[deluxe,jis2004,prefix=hoge]{pxjodel}
+\end{verbatim}\end{quote}
+\end{enumerate}
+
+%===========================================================
+\section{注意事項}
+\label{sec:Notice}
+
+\begin{itemize}
+\item 先の例では{\pTeX}のVFを用いたが、{\upTeX}のVFを用いる場合
+ でも手順は全く音字である。
+\item 入力とする和文VFは「{\pTeX}または{\upTeX}の標準の日本語用
+ 原メトリックTFM」(すなわち
+ |rml|(|v|)、|gbm|(|v|)、
+ uprml-\{|h|,|hq|,|v|\}、upgbm-\{|h|,|hq|,|v|\}
+ の何れか)のみを参照するものでなければならない。
+ \Note ただしこれらのTFMを間接的に(別のVFを挟んで)
+ 参照していてもよい。
+\item |jfmutil jodel|の実行において、入力のVFのエンジン種別
+ および書字方向は自動的に判定され、
+ 出力のVFの種別もそれに応じたものになる。
+ \begin{itemize}
+ \item 例えば、入力のVFが「{\pTeX}横組用」であれば、出力は
+ |hoge--nmlminr-h|のようになり、
+ 入力のVFが「{\upTeX}縦組用」であれば、出力は
+ |hoge--upnmlminr-v|のようになる。
+ \item ただし、参照先のTFMのエンジン種別が混在している場合は、
+ 入力のVFは{\pTeX}用と見なされる。
+ ここで{\upTeX}用として扱いたい場合は
+ |jfmutil jodel|に|--uptex|を付ける必要がある。
+ \end{itemize}
+\item |jfmutil jodel|に|--unicode|を付けることで、
+ 「\Pkg{pxufont}パッケージを併用した場合の和文VF」
+ を作製できる。
+ この場合は|zu-hoge--upnmlminr-h|のような名前のVFが衆力される。
+ ただし入力のVFは{\upTeX}用に限られ、またその参照先のTFMは
+ 全て{\upTeX}用のものでなければならない。
+\item |jfmutil jodel|を使う場合は、\Pkg{japanese-otf}の|expert|指定に
+ 対応する和文VFは作られないため、|expert|を用いることはできない。
+ \Note \Pkg{pxjodel}自体は対応しているので、
+ 自力で|hoge--expminr-h|などのVFを作れば、
+ それを適用させることはできる。
+\end{itemize}
+
+%===========================================================
+\section{ところでjodelって何}
+\label{sec:Jodel}
+
+多分、“\underline{j}apanese \underline{o}tf \underline{del}uxe”
+の略、のはず。
+“yodel”ではないことに注意。
+
+%===========================================================
+\end{document}
+%% EOF
diff --git a/language/japanese/pxjodel/tfm/jodhgothb-hq.tfm b/language/japanese/pxjodel/tfm/jodhgothb-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/jodhgothb-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/jodhgotheb-hq.tfm b/language/japanese/pxjodel/tfm/jodhgotheb-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/jodhgotheb-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/jodhgothr-hq.tfm b/language/japanese/pxjodel/tfm/jodhgothr-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/jodhgothr-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/jodhmgothe-hq.tfm b/language/japanese/pxjodel/tfm/jodhmgothe-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/jodhmgothe-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/jodhminb-hq.tfm b/language/japanese/pxjodel/tfm/jodhminb-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/jodhminb-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/jodhminl-hq.tfm b/language/japanese/pxjodel/tfm/jodhminl-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/jodhminl-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/jodhminr-hq.tfm b/language/japanese/pxjodel/tfm/jodhminr-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/jodhminr-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/zu-jodhgothb-hq.tfm b/language/japanese/pxjodel/tfm/zu-jodhgothb-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/zu-jodhgothb-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/zu-jodhgotheb-hq.tfm b/language/japanese/pxjodel/tfm/zu-jodhgotheb-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/zu-jodhgotheb-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/zu-jodhgothr-hq.tfm b/language/japanese/pxjodel/tfm/zu-jodhgothr-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/zu-jodhgothr-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/zu-jodhmgothe-hq.tfm b/language/japanese/pxjodel/tfm/zu-jodhmgothe-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/zu-jodhmgothe-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/zu-jodhminb-hq.tfm b/language/japanese/pxjodel/tfm/zu-jodhminb-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/zu-jodhminb-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/zu-jodhminl-hq.tfm b/language/japanese/pxjodel/tfm/zu-jodhminl-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/zu-jodhminl-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/tfm/zu-jodhminr-hq.tfm b/language/japanese/pxjodel/tfm/zu-jodhminr-hq.tfm
new file mode 100644
index 0000000000..5b12b8e04f
--- /dev/null
+++ b/language/japanese/pxjodel/tfm/zu-jodhminr-hq.tfm
Binary files differ
diff --git a/language/japanese/pxjodel/vf/jodhgothb-hq.vf b/language/japanese/pxjodel/vf/jodhgothb-hq.vf
new file mode 100644
index 0000000000..910c5ce795
--- /dev/null
+++ b/language/japanese/pxjodel/vf/jodhgothb-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/jodhgotheb-hq.vf b/language/japanese/pxjodel/vf/jodhgotheb-hq.vf
new file mode 100644
index 0000000000..96f737c2e6
--- /dev/null
+++ b/language/japanese/pxjodel/vf/jodhgotheb-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/jodhgothr-hq.vf b/language/japanese/pxjodel/vf/jodhgothr-hq.vf
new file mode 100644
index 0000000000..afc49817e3
--- /dev/null
+++ b/language/japanese/pxjodel/vf/jodhgothr-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/jodhmgothe-hq.vf b/language/japanese/pxjodel/vf/jodhmgothe-hq.vf
new file mode 100644
index 0000000000..9ef80bfe0a
--- /dev/null
+++ b/language/japanese/pxjodel/vf/jodhmgothe-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/jodhminb-hq.vf b/language/japanese/pxjodel/vf/jodhminb-hq.vf
new file mode 100644
index 0000000000..901c137d14
--- /dev/null
+++ b/language/japanese/pxjodel/vf/jodhminb-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/jodhminl-hq.vf b/language/japanese/pxjodel/vf/jodhminl-hq.vf
new file mode 100644
index 0000000000..68831aee78
--- /dev/null
+++ b/language/japanese/pxjodel/vf/jodhminl-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/jodhminr-hq.vf b/language/japanese/pxjodel/vf/jodhminr-hq.vf
new file mode 100644
index 0000000000..a2678235c1
--- /dev/null
+++ b/language/japanese/pxjodel/vf/jodhminr-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/zu-jodhgothb-hq.vf b/language/japanese/pxjodel/vf/zu-jodhgothb-hq.vf
new file mode 100644
index 0000000000..2f02af9ddb
--- /dev/null
+++ b/language/japanese/pxjodel/vf/zu-jodhgothb-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/zu-jodhgotheb-hq.vf b/language/japanese/pxjodel/vf/zu-jodhgotheb-hq.vf
new file mode 100644
index 0000000000..a45cdc6b1b
--- /dev/null
+++ b/language/japanese/pxjodel/vf/zu-jodhgotheb-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/zu-jodhgothr-hq.vf b/language/japanese/pxjodel/vf/zu-jodhgothr-hq.vf
new file mode 100644
index 0000000000..bd147ae68c
--- /dev/null
+++ b/language/japanese/pxjodel/vf/zu-jodhgothr-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/zu-jodhmgothe-hq.vf b/language/japanese/pxjodel/vf/zu-jodhmgothe-hq.vf
new file mode 100644
index 0000000000..a292da6356
--- /dev/null
+++ b/language/japanese/pxjodel/vf/zu-jodhmgothe-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/zu-jodhminb-hq.vf b/language/japanese/pxjodel/vf/zu-jodhminb-hq.vf
new file mode 100644
index 0000000000..f96768e4e6
--- /dev/null
+++ b/language/japanese/pxjodel/vf/zu-jodhminb-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/zu-jodhminl-hq.vf b/language/japanese/pxjodel/vf/zu-jodhminl-hq.vf
new file mode 100644
index 0000000000..01524ad51a
--- /dev/null
+++ b/language/japanese/pxjodel/vf/zu-jodhminl-hq.vf
Binary files differ
diff --git a/language/japanese/pxjodel/vf/zu-jodhminr-hq.vf b/language/japanese/pxjodel/vf/zu-jodhminr-hq.vf
new file mode 100644
index 0000000000..53bf677a74
--- /dev/null
+++ b/language/japanese/pxjodel/vf/zu-jodhminr-hq.vf
Binary files differ
diff --git a/language/japanese/pxrubrica/LICENSE b/language/japanese/pxrubrica/LICENSE
new file mode 100644
index 0000000000..fbe40a0146
--- /dev/null
+++ b/language/japanese/pxrubrica/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/pxrubrica/README-ja.md b/language/japanese/pxrubrica/README-ja.md
new file mode 100644
index 0000000000..eb1c9cc341
--- /dev/null
+++ b/language/japanese/pxrubrica/README-ja.md
@@ -0,0 +1,74 @@
+PXrubrica パッケージ
+====================
+
+LaTeX: 日本の慣習に従ったルビ(振り仮名)出力
+
+JIS 規格「JIS X 4051」および W3C 技術ノート「[日本語組版処理の要件]」
+で述べられているような、日本において一般的な様式に従ってルビを付ける
+機能を提供する。
+
+1.3 版より、圏点出力機能が追加された。
+
+[日本語組版処理の要件]: <http://www.w3.org/TR/jlreq/ja/>
+
+### 前提環境
+
+ * フォーマット: LaTeX
+ * エンジン: pTeX/upTeX/LuaTeX/XeTeX
+ * DVI ウェア(DVI 出力時): pTeX 対応のもの
+
+### 構成物
+
+ * `pxrubrica.pdf`: 説明書
+ * `pxrubrica.dtx`: DocStrip ソースファイル
+ * `pxrubrica.ins`: DocStrip インストーラファイル
+ * `pxrubrica-en.pdf`: 英語版の説明書
+ * `pxrubrica-en.tex`: 英語版の説明書(ソース)
+ * `sample/*.tex`: サンプル文書
+
+### インストール
+
+アーカイブにパッケージファイル(`*.sty`)が含まれていない場合は、
+以下のコマンドを実行して生成する。
+
+ ptex -kanji=jis pxrubrica.ins
+
+その後、各ファイルを次の場所に移動する。
+(TDS 1.1 に従ったシステムの場合。)
+
+ - `*.sty` → $TEXMF/tex/platex/pxrubrica/
+ - `*.dtx`/`*.ins` → $TEXMF/source/platex/pxrubrica/
+ - `*.pdf`/`*.tex` → $TEXMF/doc/platex/pxrubrica/
+
+### ライセンス
+
+MITライセンスの下で配布される。
+
+更新履歴
+--------
+
+ * Version 1.3b 〈2017/11/19〉
+ - バグ修正
+ * Version 1.3a 〈2017/05/05〉
+ - 縦数式組方向のための調整。
+ - バグ修正
+ * Version 1.3 〈2017/04/27〉
+ - 圏点出力機能(ルビ圏点同時付加を含む)。
+ - 和文ゴースト処理の改良。
+ - hyperref の PDF 文字列に対する対策。
+ * Version 1.2 〈2017/04/20〉
+ - 自動切換のモノルビ・熟語ルビ。
+ - 安全モード。
+ - LuaTeX-ja の縦組のサポート。
+ * Version 1.1 〈2017/04/10〉
+ - XeTeX/LuaTeX のサポート。
+ - 両側ルビの処理を改良。
+ - バグ修正
+ * Version 1.0a 〈2014/12/23〉
+ - バグ修正
+ * Version 1.0 〈2012/04/30〉
+ - 最初の公開版
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/pxrubrica/README.md b/language/japanese/pxrubrica/README.md
new file mode 100644
index 0000000000..7ea187e848
--- /dev/null
+++ b/language/japanese/pxrubrica/README.md
@@ -0,0 +1,77 @@
+PXrubrica Package
+=================
+
+LaTeX: Ruby annotations according to JIS X 4051
+
+This package provides function to add ruby annotation (furigana) that
+follows the style conventional in Japanese typography, as described in
+the W3C technical note “Requirements for Japanese Text Layout” ([JLREQ])
+and the JIS specification JIS X 4051.
+
+Starting with version 1.3, this package also provides function to add
+kenten (emphasis marks) to Japanese text.
+
+[JLREQ]: <http://www.w3.org/TR/jlreq/>
+
+### SYSTEM REQUIREMENTS
+
+ * TeX format: LaTeX.
+ * TeX engine: pTeX, upTeX, LuaTeX, XeTeX.
+ * DVI driver (in DVI output): Anything that supports pTeX DVI.
+
+### CONTENT
+
+ * `pxrubrica.pdf`: the manual in Japanese
+ * `pxrubrica.dtx`: DocStrip source file
+ * `pxrubrica.ins`: DocStrip installer file
+ * `pxrubrica-en.pdf`: the brief manual in English
+ * `pxrubrica-en.tex`: the brief manual in English (source)
+ * `sample/*.tex`: sample documents
+
+### INSTALLATION
+
+If the archive does not contain the packge file (`*.sty`), then you
+must run the command to create it:
+
+ ptex -kanji=jis pxrubrica.ins
+
+Then move the files as follows (in a system compliant to TDS 1.1):
+
+ - `*.sty` → $TEXMF/tex/platex/pxrubrica/
+ - `*.dtx`/`*.ins` → $TEXMF/source/platex/pxrubrica/
+ - `*.pdf`/`*.tex` → $TEXMF/doc/platex/pxrubrica/
+
+And rehash your TEXMF trees if necessary.
+
+### LICENSE
+
+This package is distributed under the MIT License.
+
+Revision History
+----------------
+
+ * Version 1.3b 〈2017/11/19〉
+ - Bug fix.
+ * Version 1.3a 〈2017/05/05〉
+ - Adjust for tate math direction.
+ - Bug fix.
+ * Version 1.3 〈2017/04/27〉
+ - Kenten function.
+ - Improve Japanese-text ghost insertion.
+ - Support the use in PDF strings.
+ * Version 1.2 〈2017/04/20〉
+ - Mono-ruby and jukugo-ruby with switching.
+ - Safe mode.
+ - Support for vertical writing in LuaTeX-ja.
+ * Version 1.1 〈2017/04/10〉
+ - Support for XeTeX/LuaTeX.
+ - Improve the process of two-side ruby.
+ - Bug fix.
+ * Version 1.0a <2014/12/23>
+ - Bug hix.
+ * Version 1.0 <2012/04/30>
+ - First public release.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/pxrubrica/pxrubrica-en.pdf b/language/japanese/pxrubrica/pxrubrica-en.pdf
new file mode 100644
index 0000000000..a31e19cdfa
--- /dev/null
+++ b/language/japanese/pxrubrica/pxrubrica-en.pdf
Binary files differ
diff --git a/language/japanese/pxrubrica/pxrubrica-en.tex b/language/japanese/pxrubrica/pxrubrica-en.tex
new file mode 100644
index 0000000000..5de5b15f04
--- /dev/null
+++ b/language/japanese/pxrubrica/pxrubrica-en.tex
@@ -0,0 +1,159 @@
+\documentclass[a4paper]{article}
+\usepackage[scale=0.8]{geometry}
+\usepackage{setspace}
+\usepackage{pxrubrica}
+\newcommand*{\vb}{\symbol{`\|}}
+\newcommand*{\Opt}[1]{\texttt{#1}}
+\newcommand*{\PKN}[1]{\textsf{#1}}
+\newcommand*{\Eg}{E.\,g.\mbox{}}
+\newcommand*{\eg}{e.\,g.\mbox{}}
+\newcommand*{\ie}{i.\,e.\mbox{}}
+\newcommand*{\myfileversion}{1.3c}
+\newcommand*{\myfiledate}{2018/08/16}
+\newsavebox{\myexample}
+\begin{document}
+
+\title{The \PKN{pxrubrica} package}
+\author{Takayuki YATO\quad (aka ``ZR'')}
+\date{v\myfileversion \quad[\myfiledate]}
+\maketitle
+
+\setstretch{1.5}
+
+\section{Package Loading}
+
+There is no options available.
+
+\begin{quote}\small\begin{verbatim}
+\usepackage{pxrubrica}
+\end{verbatim}\end{quote}
+
+\section{Basic Usage}
+
+\subsection{Very Basic}
+
+\begin{itemize}
+\item Mono ruby (\Opt{m} option): one ruby block per one kanji.\\
+\Eg\quad
+\verb+\ruby[m]{$BBk(B}{$B$?$+(B}+ $\rightarrow$ \ruby[m]{$BBk(B}{$B$?$+(B}\quad
+\verb+\ruby[m]{$Brt(B}{$B$&$0$$$9(B}+ $\rightarrow$ \ruby[m]{$Brt(B}{$B$&$0$$$9(B}
+\item Group ruby (\Opt{g} option): one ruby block per kanji sequence.\\
+\Eg\quad
+\verb+\ruby[g]{$B1@?}(B}{$B$R$P$j(B}+ $\rightarrow$ \ruby[g]{$B1@?}(B}{$B$R$P$j(B}\quad
+\verb+\ruby[g]{$BITG!5"(B}{$B$[$H$H$.$9(B}+ $\rightarrow$ \ruby[g]{$BITG!5"(B}{$B$[$H$H$.$9(B}
+\item Jukugo ruby (\Opt{j} option): one ruby block per kanji, but read as whole.\\
+\Eg\quad
+\verb+\ruby[j]{$B9&?}(B}{$B$/(B|$B$8$c$/(B}+ $\rightarrow$ \ruby[j]{$B9&?}(B}{$B$/(B|$B$8$c$/(B}\quad
+\verb+\ruby[j]{$B<7LLD;(B}{$B$7$A(B|$B$a$s(B|$B$A$g$&(B}+ $\rightarrow$ \ruby[j]{$B<7LLD;(B}{$B$7$A(B|$B$a$s(B|$B$A$g$&(B}\\
+The current implementation uses the following strategy:
+if none of the ruby string per a kanji causes protrusion,
+then the whole is typeset as mono-ruby;
+otherwise, the whole is typeset as group-ruby,
+ignoring the ruby grouping.
+
+\item A \verb+|+ symbol in a ruby string denotes the boundary of reading for each kanji
+(\ie\ $B9&(B = $B$/(B and $B?}(B = $B$8$c$/(B).
+It is not needed in group ruby.
+\item Comparison of typeset results:
+\begin{quote}\begin{tabular}{ll@{\ }l@{\ }c*3{@{\quad}c}}
+Mono & (\verb+\ruby[m]{$B>.H7(B}{$B$3(B|$B$P$H(B}+) & $\rightarrow$
+ & \ruby[m]{$B>.H7(B}{$B$3(B|$B$P$H(B}
+ & \ruby[m]{$Bs5ry(B}{$B$;$-(B|$B$l$$(B}
+ & \ruby[m]{$BMkD;(B}{$B$i$$(B|$B$A$g$&(B}
+ & \ruby[m]{$B1m(B}{$B$D$P$a(B}
+\\
+Group & (\verb+\ruby[g]{$B>.H7(B}{$B$3$P$H(B}+) & $\rightarrow$
+ & \ruby[g]{$B>.H7(B}{$B$3$P$H(B}
+ & \ruby[g]{$Bs5ry(B}{$B$;$-$l$$(B}
+ & \ruby[g]{$BMkD;(B}{$B$i$$$A$g$&(B}
+ & \ruby[g]{$B1m(B}{$B$D$P$a(B}
+\\
+Jukugo & (\verb+\ruby[j]{$B>.H7(B}{$B$3(B|$B$P$H(B}+) & $\rightarrow$
+ & \ruby[j]{$B>.H7(B}{$B$3(B|$B$P$H(B}
+ & \ruby[j]{$Bs5ry(B}{$B$;$-(B|$B$l$$(B}
+ & \ruby[j]{$BMkD;(B}{$B$i$$(B|$B$A$g$&(B}
+ & \ruby[j]{$B1m(B}{$B$D$P$a(B}
+\end{tabular}\end{quote}
+Usually When a jukugo has per-character reading then jukugo ruby
+(\Opt{j}) is preferred, otherwise (\Opt{g}) is.
+If you particularly intend to show the per-character reading
+for a jukugo, you might use the \Opt{m} option.
+Note that all of \Opt{m}, \Opt{g} and \Opt{j} lead to
+the same result for ruby to a single kanji.
+\item You can give a default value of option
+using the \verb+\rubysetup+ command;
+\verb+\rubysetup{g}\ruby{$B737\(B}{$B$7$c$b(B}+ is
+equivalent to \verb+\ruby[g]{$B737\(B}{$B$7$c$b(B}+.
+The ``default of default'' is \Opt{|cjPeF|}.
+\end{itemize}
+
+\subsection{Intrusion/Protrusion}
+
+\begin{itemize}
+\item Control of ruby intrusion:
+\begin{center}\begin{tabular}{ll@{\ }l@{\ }c*2{@{\quad}c}}
+No intrusion & \verb+$B$3$N(B\ruby[|-|]{$Bs'(B}{$B$+$5$5$.(B}$B$N(B+ & $\rightarrow$
+ & $B$3$N(B\ruby[|-|]{$Bs'(B}{$B$+$5$5$.(B}$B$N(B
+ & $B$3$N(B\ruby[|-|]{$BsA(B}{$B$3$&$N$H$j(B}$B$N(B
+ & $B$3$N(B\ruby[|-|]{$B1-(B}{$B$&(B}$B$N(B
+\\
+Small intrusion & \verb+$B$3$N(B\ruby[(-)]{$Bs'(B}{$B$+$5$5$.(B}$B$N(B+ & $\rightarrow$
+ & $B$3$N(B\ruby[(-)]{$Bs'(B}{$B$+$5$5$.(B}$B$N(B
+ & $B$3$N(B\ruby[(-)]{$BsA(B}{$B$3$&$N$H$j(B}$B$N(B
+ & $B$3$N(B\ruby[(-)]{$B1-(B}{$B$&(B}$B$N(B
+\\
+Big intrusion & \verb+$B$3$N(B\ruby[<->]{$Bs'(B}{$B$+$5$5$.(B}$B$N(B+ & $\rightarrow$
+ & $B$3$N(B\ruby[<->]{$Bs'(B}{$B$+$5$5$.(B}$B$N(B
+ & $B$3$N(B\ruby[<->]{$BsA(B}{$B$3$&$N$H$j(B}$B$N(B
+ & $B$3$N(B\ruby[<->]{$B1-(B}{$B$&(B}$B$N(B
+\end{tabular}\end{center}
+\item If you require ``ruby output may intrude to kana but not to kanji,''
+then you might want to do ``\verb+$B$3$N(B\ruby[<-|]{$Bs'(B}{$B$+$5$5$.(B}$BEy(B+''
+to get ``$B$3$N(B\ruby[<-|]{$Bs'(B}{$B$+$5$5$.(B}$BEy(B.''
+\item To specify a basic mode (\Opt{m}/\Opt{g}/\Opt{j})
+and intrusion at a time, you can use option strings
+such as \Opt{|g|} and \Opt{|m>}.
+In fact, the symbol \Opt{-} works as placeholder
+for basic mode and means the use of default value.
+\item Control of ruby protrusion:
+the string \Opt{||} supresses the protrusion.
+\begin{quote}
+\begin{lrbox}{\myexample}
+\small$\leftarrow$ \verb+\ruby[||->]{$B?}(B}{$B$9$:$a(B}+
+\end{lrbox}
+\fbox{\parbox{.42\linewidth}{%
+\ruby[||->]{$B?}(B}{$B$9$:$a(B}$B$N!D(B
+\quad \usebox{\myexample}%
+\rule{0pt}{12pt}\\
+$B%$%s%3$N(B
+}}\quad vs.\quad
+\begin{lrbox}{\myexample}
+\small$\leftarrow$ \verb+\ruby[|->]{$B?}(B}{$B$9$:$a(B}+
+\end{lrbox}
+\fbox{\parbox{.42\linewidth}{%
+\ruby[|->]{$B?}(B}{$B$9$:$a(B}$B$N!D(B
+\quad \usebox{\myexample}%
+\rule{0pt}{12pt}\\
+$B%$%s%3$N(B
+}}
+\end{quote}
+\end{itemize}
+
+\subsection{More Commands}
+
+\begin{itemize}
+\item \verb+\aruby+: attaches ruby to an alphabet (non-CJK) string.
+\par\noindent\Eg\quad
+\verb+\aruby{Get out}{$B%2%i%&%C(B}!+ $\rightarrow$
+ \aruby{Get out}{$B%2%i%&%C(B}!
+\item \verb+\rubyfontsetup+: specifies the font used for ruby output.
+For example, when you want to attach mincho-font ruby
+to gothic-font kanji string you can do as follows:
+\par\noindent
+{\small
+\verb+\rubyfontsetup{\mcfamily}$B$3$N(B{\gtfamily \ruby[j]{$BL@D+BN(B}{$B$_$s(B|$B$A$g$&(B|$B$?$$(B}}+}
+$\rightarrow$
+{\rubyfontsetup{\mcfamily}$B$3$N(B{\gtfamily \ruby[j]{$BL@D+BN(B}{$B$_$s(B|$B$A$g$&(B|$B$?$$(B}}}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/pxrubrica/pxrubrica.dtx b/language/japanese/pxrubrica/pxrubrica.dtx
new file mode 100644
index 0000000000..354a64cab3
--- /dev/null
+++ b/language/japanese/pxrubrica/pxrubrica.dtx
@@ -0,0 +1,7467 @@
+% ^^A -*- japanese-latex -*-
+% \iffalse meta-comment
+%
+% This is file 'pxrubrica.dtx'.
+%
+% Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+% GitHub: https://github.com/zr-tex8r
+% Twitter: @zr_tex8r
+%
+% This package is distributed under the MIT License.
+%
+% \fi
+% \CheckSum{0}
+%
+% \iffalse
+%
+% \begin{macrocode}
+%<!driver>\NeedsTeXFormat{LaTeX2e}
+%<!driver>\ProvidesPackage{pxrubrica}
+%<*driver>
+\ProvidesFile{pxrubrica.dtx}
+%</driver>
+ [2018/08/16 v1.3c PX Japanese-style ruby]
+%<*driver>
+\documentclass[uplatex]{jsarticle}
+\usepackage{doc}
+\addtolength{\textwidth}{-1in}
+\addtolength{\evensidemargin}{1in}
+\addtolength{\oddsidemargin}{1in}
+\addtolength{\marginparwidth}{1in}
+\setlength\marginparpush{0pt}
+% \OnlyDescription
+\DisableCrossrefs
+\setcounter{StandardModuleDepth}{1}
+\GetFileInfo{pxrubrica.dtx}
+\CodelineNumbered
+\DeclareRobustCommand\jmeta[1]{%
+ \ensuremath\langle\mbox{}%
+ {\rmfamily#1}\mbox{}%
+ \ensuremath\rangle
+}
+\newcommand*{\vb}{\symbol{`\|}}
+\newcommand*{\PKN}[1]{\textsf{#1}}
+\newcommand*{\pad}{\hspace{0pt plus 10pt}\linebreak[0]}
+\newcommand*{\Means}{$B!'(B\ }
+\newcommand*{\Note}{\par\noindent $B"((B\ }
+\providecommand*{\pTeX}{p\TeX}
+\providecommand*{\upTeX}{u\pTeX}
+\providecommand*{\pdfTeX}{pdf\/\TeX}
+\providecommand*{\XeTeX}{XeTeX}
+\providecommand*{\LuaTeX}{Lua\TeX}
+\inhibitxspcode`$B!?(B=0
+\begin{document}
+ \DocInput{pxrubrica.dtx}
+\end{document}
+%</driver>
+% \end{macrocode}
+%
+% \fi
+%
+% \title{\PKN{pxrubrica} $B%Q%C%1!<%8(B}
+% \author{$BH,EP(B $B?rG7(B\quad(Takayuki YATO; aka ``ZR'')}
+% \date{\fileversion \quad[\filedate]}
+% \maketitle
+%
+% \begin{abstract}
+% JIS$B5,3J!V(BJIS X~4051$B!W$*$h$S(BW3C$B5;=Q%N!<%H!VF|K\8lAHHG=hM}$NMW7o!W(B
+% $B$G=R$Y$i$l$F$$$k$h$&$J!"(B
+% $BF|K\$K$*$$$F0lHLE*$JMM<0$K=>$C$F%k%S$*$h$S7wE@$rIU$1$k5!G=$rDs6!$9$k!#(B
+% \end{abstract}
+%
+% \MakeShortVerb{\|}
+%
+% \setcounter{tocdepth}{3}
+% \tableofcontents
+%
+%^^A------------------------------------
+% \section{$B%Q%C%1!<%8FI9~(B}
+%
+% |\usepackage| $BL?Na$rMQ$$$FFI$_9~$`!#(B
+% $B%*%W%7%g%s$OB8:_$7$J$$!#(B
+%\begin{quote}\begin{verbatim}
+%\usepackage{pxrubrica}
+%\end{verbatim}\end{quote}
+%
+%^^A------------------------------------
+% \section{$B%k%S5!G=(B}
+%
+% \subsection{$BMQ8l=8(B}
+%
+% $BK\%Q%C%1!<%8$GFH<+$N0UL#$r$b$DC18l$r5s$2$k!#(B
+% \begin{itemize}
+% \item $BFM=P!'(B $B%k%SJ8;z=PNO$NC<$,?FJ8;z$h$j$b30B&$K=P$k$3$H!#(B
+% \item $B?JF~!'(B $B%k%SJ8;z=PNO$,?FJ8;z$KNY@\$9$kJ8;z$NNN0h(B
+% $B!J?eJ?J}8~$K8+$?>l9g!K$KG[CV$5$l$k$3$H!#(B
+% \item $BOBJ8%k%S!'(B $B?FJ8;z$,OBJ8J8;z$G$"$k$3$H$rA[Dj$7$F=hM}$5$l$k%k%S!#(B
+% \item $B2$J8%k%S!'(B $B?FJ8;z$,2$J8J8;z$G$"$k$3$H$rA[Dj$7$F=hM}$5$l$k%k%S!#(B
+% \item $B%0%k!<%W!'(B $B%f!<%6$K$h$j;XDj$5$l$?!"?FJ8;zNs!&%k%SJ8;zNs$N=hM}C10L!#(B
+% \item $B%/%i%9%?!'(B $BF~NOJ8;zNsCf$N(B |{ }| $B$G0O$C$?ItJ,$N$3$H!#(B
+% \footnote{$BK\Mh$N(B{\LaTeX}$B$NMQ8l$G$O!V%0%k!<%W!W$H8F$V$,!"$3$3$G$O(B
+% $B!V%0%k!<%W!W$,JL$N0UL#$r$b$D$N$GJL$NMQ8l$rEv$F$?!#(B}
+% \item $B!TJ8;z!U!'(B $B6QEy3d$j$K$*$$$FIT2DJ,$H$J$kC10L$N$3$H!#(B
+% $BK\Mh$N0UL#$G$NJ8;z$NB>!"%/%i%9%?$b!TJ8;z!U$H07$o$l$k!#(B
+% \item $B%V%m%C%/!'(B $BJ#?t$N?FJ8;z!&%k%SJ8;z$N=8$^$j$G!"Bg0hE*$JG[CV7hDj$N(B
+% $B=hM}$NCf$GFbIt$NAjBP0LCV$,8GDj$5$l$F$$$k$b$N!#(B
+% \end{itemize}
+%
+% $B<!$NMQ8l$K$D$$$F$O!"!XF|K\8lAHHG$NMW7o!Y(B%
+% \footnote{|http://www.w3.org/TR/jlreq/ja/|}%
+% $B$K=>$&!#(B
+% \begin{quote}
+% $B%k%S!"?FJ8;z!"CfIU$-!"8*IU$-!"%b%N%k%S!"%0%k!<%W%k%S!"=O8l%k%S!"7wE@(B
+% \end{quote}
+%
+% \subsection{$B%k%SMQL?Na(B}
+%
+% \begin{itemize}
+% \item |\ruby[|\jmeta{$B%*%W%7%g%s(B}|]{|\jmeta{$B?FJ8;z(B}^^A
+% |}{|\jmeta{$B%k%SJ8;z(B}|}|
+%
+% $BOBJ8%k%S$NL?Na!#(B
+% $B$9$J$o$A!"OBJ8J8;zNs$N>eB&!J2#AH!K!?1&B&!J=DAH!K$K%k%S$rIU$9(B
+% $B!J%*%W%7%g%s$G5UB&$K$b$G$-$k!K!#(B
+%
+% $B$3$3$G!"(B\jmeta{$B%*%W%7%g%s(B}$B$O0J2<$N7A<0$r$b$D!#(B
+% \begin{quote}
+% \jmeta{$BA0?JF~@_Dj(B}\jmeta{$BA0Jd=u@_Dj(B}^^A
+% \jmeta{$B%b!<%I(B}\jmeta{$B8eJd=u@_Dj(B}\jmeta{$B8e?JF~@_Dj(B}
+% \end{quote}
+% \jmeta{$BA0Jd=u@_Dj(B}$B!&(B\jmeta{$B%b!<%I(B}$B!&(B\jmeta{$B8eJd=u@_Dj(B}$B$O(B
+% $BJ#?t;XDj2DG=$G!"GSB>$J;XDj$,J;B8$7$?>l9g$O(B
+% $B8e$N$b$N$,M-8z$K$J$k!#(B
+% $B$^$?!"$I$NMWAG$b>JN,2DG=$G!"$=$N>l9g$O(B |\rubysetup| $B$G;XDj$5$l$?(B
+% $B4{DjCM$,MQ$$$i$l$k!#(B
+% $B$?$@$7!"9=J8>e[#Kf$J;XDj$r9T$C$?>l9g$N7k2L$OJ]>Z$5$l$J$$!#(B
+% $BNc$($P!"!VA0?JF~L5$7!W$N$_;XDj$9$k>l9g$O(B \texttt{\vb} $B$G$O(B
+% $B$J$/(B \texttt{\vb-} $B$H$9$kI,MW$,$"$k!#(B
+%
+% \jmeta{$BA0?JF~@_Dj(B}$B$O0J2<$NCM$N2?$l$+!#(B
+% \begin{quote}
+% \begin{tabular}[t]{ll}
+% \texttt{\vb\vb} & $BA0FM=P6X;_(B\\
+% \texttt{\vb} & $BA0?JF~L5$7(B\\
+% \end{tabular}\qquad
+% \begin{tabular}[t]{ll}
+% \texttt{<} & $BA0?JF~Bg(B\\
+% \texttt{(} & $BA0?JF~>.(B
+% \end{tabular}
+% \end{quote}
+%
+% \jmeta{$BA0Jd=u@_Dj(B}$B$O0J2<$NCM$N2?$l$+!JJ#?t;XDj2D!K!#(B
+% \begin{quote}
+% \begin{tabular}[t]{ll}
+% \texttt{:} & $BOB2$J84V6uGrA^F~(B \\
+% \texttt{.} & $B6uGrA^F~$J$7(B
+% \end{tabular}\qquad
+% \begin{tabular}[t]{ll}
+% \texttt{*} & $B9TJ,3d6X;_(B \\
+% \texttt{!} & $BCJMnF,$G?JF~5v2D(B
+% \end{tabular}
+% \end{quote}
+%
+% \begin{itemize}
+% \item $B6uGrA^F~NL$N4{DjCM$OOBJ84V6uGr$G$"$k!#(B
+% \item |*| $BL5;XDj$N>l9g$N9TJ,3d$N2DH]$O(B {p\LaTeX} $B$NI8=`$N(B
+% $BF0:n$K=>$&!#(B
+% \item |!| $BL5;XDj$N>l9g!"CJMnKAF,$G$O(B\jmeta{$BA0?JF~@_Dj(B}$B$N@_Dj$K(B
+% $B4X$o$i$:?JF~$,M^;_$5$l$k!#(B
+% \item $B%4!<%9%H=hM}$,M-8z$N>l9g$O$3$3$N@_Dj$OL5;k$5$l$k!#(B
+% \end{itemize}
+%
+% \jmeta{$B%b!<%I(B}$B$O0J2<$NCM$N2?$l$+!JJ#?t;XDj2D!K!#(B
+% \begin{quote}
+% \newcommand*\fro[1]{{\scriptsize($<$\,\textit{#1})}}
+% \begin{tabular}[t]{l@{ }ll}
+% \texttt{-} & &$B!JL5;XDj!K(B\\
+% \texttt{c} & \fro{center} & $BCfIU$-(B\\
+% \texttt{h} & \fro{head} & $B8*IU$-(B\\
+% \texttt{H} & & $B3HD%8*IU$-(B\\
+% \texttt{m} & \fro{mono} & $B%b%N%k%S(B\\
+% \texttt{g} & \fro{group} & $B%0%k!<%W%k%S(B\\
+% \texttt{j} & \fro{jukugo} & $B=O8l%k%S(B\\
+% \texttt{M} & & $B<+F0@ZBX%b%N%k%S(B\\
+% \texttt{J} & & $B<+F0@ZBX=O8l%k%S(B
+% \end{tabular}\qquad
+% \begin{tabular}[t]{l@{ }ll}
+% \texttt{P} & \fro{primary} & $B>eB&G[CV(B\\
+% \texttt{S} & \fro{secondary} & $B2<B&G[CV(B\\
+% \texttt{e} & \fro{even-space} & $B?FJ8;z6QEy3d$jM-8z(B \\
+% \texttt{E} & & $B?FJ8;z6QEy3d$jL58z(B \\
+% \texttt{f} & \fro{full-size} & $B>.=q$-J8;zJQ49M-8z(B \\
+% \texttt{F} & & $B>.=q$-J8;zJQ49L58z(B
+% \end{tabular}
+% \end{quote}
+%
+% \begin{itemize}
+% \item $B8*IU$-!J(B|h|$B!K$N>l9g!"%k%S$,C;$$>l9g$K$N$_!"%k%SJ8;zNs$H?FJ8;zNs(B
+% $B$NF,$rB7$($FG[CV$5$l$k!#(B
+% $B3HD%8*IU$-!J(B|H|$B!K$N>l9g!">o$KF,$rB7$($FG[CV$5$l$k!#(B
+% \item |P| $B$O?FJ8;zNs$N>eB&!J2#AH!K!?1&B&!J=DAH!K!"(B
+% |S| $B$O?FJ8;zNs$N2<B&!J2#AH!K!?:8B&!J=DAH!K$K%k%S$rIU$9;XDj!#(B
+% \item |e| $B;XDj;~$O!"%k%S$,D9$$>l9g$K?FJ8;zNs$r%k%S$ND9$5$K9g$o$;$F(B
+% $B6QEy3d$j$GG[CV$9$k!#(B
+% |E| $B;XDj;~$O!"6u$-$rF~$l$:$KCf1{B7$($GG[CV$9$k!#(B
+% $B$J$*!"%k%S$,C;$$>l9g$N%k%SJ8;zNs$N6QEy3d$j$O>o$KM-8z$G$"$k!#(B
+% \item |f| $B;XDj;~$O!"%k%SJ8;zNsCf$N!J(B|{ }| $B$N30$K$"$k!K>.=q$-2>L>(B
+% $B!J$!(B\,$B$#(B\,$B$%(B\,$B$'(B\,$B$)(B\,$B$C(B\,$B$c(B\,$B$e(B\,$B$g(B\,$B$n!"(B
+% $B$*$h$S$=$NJR2>L>!K$rBP1~$NHs>.=q$-2>L>(B
+% $B$KJQ49$9$k!#(B
+% |F| $B;XDj$O$3$N5!G=$rL58z$K$9$k!#(B
+% \item |M| $B$*$h$S(B |J| $B$N;XDj$O(B
+% $B!V%0%k!<%W%k%S$H%b%N!&=O8l%k%S$N4V$G<+F0E*$K@Z$jBX$($k!W(B
+% $B@_Dj$G$"$k!#(B
+% $B6qBNE*$K$O!"%k%S$N%0%k!<%W$,(B1$B$D$7$+$J$$>l9g$O(B |g|$B!"(B
+% $BJ#?t$"$k>l9g$O(B |m| $B$*$h$S(B |j| $B$HEy2A$K$J$k!#(B
+% \end{itemize}
+%
+% \jmeta{$B8eJd=u@_Dj(B}$B$O0J2<$NCM$N2?$l$+!JJ#?t;XDj2D!K!#(B
+% \begin{quote}
+% \begin{tabular}[t]{ll}
+% \texttt{:} & $BOB2$J84V6uGrA^F~(B \\
+% \texttt{.} & $B6uGrA^F~$J$7(B
+% \end{tabular}\qquad
+% \begin{tabular}[t]{ll}
+% \texttt{*} & $B9TJ,3d6X;_(B \\
+% \texttt{!} & $BCJMnKv$G?JF~5v2D(B
+% \end{tabular}
+% \end{quote}
+%
+% \begin{itemize}
+% \item $B6uGrA^F~NL$N4{DjCM$OOBJ84V6uGr$G$"$k!#(B
+% \item |*| $BL5;XDj$N>l9g$N9TJ,3d$N2DH]$O(B {p\LaTeX} $B$N(B
+% $BI8=`$NF0:n$K=>$&$N$,86B'$@$,!"D>8e$K$"$k$b$N$,J8;z$G$J$$>l9g!"(B
+% $B@5$7$/F0:n$7$J$$!J6XB'$,GK$l$k!K2DG=@-$,$"$k!#(B
+% $B=>$C$F!"ITE,@Z$J9TJ,3d$,5/$3$j$&$k>l9g$OE,59(B |*| $B$r;XDj$9$k(B
+% $BI,MW$,$"$k!J$J$*!"CJMnKvHx$G(B |*| $B$r;XDj$7$F$O$J$i$J$$!K!#(B
+% \item |!| $BL5;XDj$N>l9g!"CJMnKvHx$G$O?JF~$,M^;_$5$l$k!#(B
+% \item $B%4!<%9%H=hM}$,M-8z$N>l9g$O$3$3$N@_Dj$OL5;k$5$l$k!#(B
+% \end{itemize}
+%
+% \jmeta{$B8e?JF~@_Dj(B}$B$O0J2<$NCM!#(B
+% \begin{quote}
+% \begin{tabular}[t]{ll}
+% \texttt{\vb\vb} & $B8eFM=P6X;_(B\\
+% \texttt{\vb} & $B8e?JF~L5$7(B\\
+% \end{tabular}\qquad
+% \begin{tabular}[t]{ll}
+% \texttt{>} & $B8e?JF~Bg(B\\
+% \texttt{)} & $B8e?JF~>.(B
+% \end{tabular}
+% \end{quote}
+%
+% \item |\jruby[|\jmeta{$B%*%W%7%g%s(B}|]{|\jmeta{$B?FJ8;z(B}^^A
+% |}{|\jmeta{$B%k%SJ8;z(B}|}|
+%
+% |\ruby| $BL?Na$NJLL>!#(B
+% |\ruby| $B$H$$$&L?NaL>$OB>$N%Q%C%1!<%8$H$N>WFM$N2DG=@-$,(B
+% $B9b$$$N$G!"(B{\LaTeX}$BJ8=q$NK\J83+;O;~!J(B|\begin{document}|$B!K$K(B
+% $BL$Dj5A$G$"$k>l9g$K$N$_Dj5A$5$l$k!#(B
+% $B$3$l$KBP$7$F(B |\jruby| $B$O>o$KDj5A$5$l$k!#(B
+% $B$J$*!"(B|\ruby| $B0J30$NL?Na!J(B|\jruby| $B$r4^$`!K$,Dj5A:Q$G$"$C$?(B
+% $B!JL?NaL>$,>WFM$7$?!K>l9g$K$O%(%i!<$H$J$k!#(B
+%
+% \item |\aruby[|\jmeta{$B%*%W%7%g%s(B}|]{|\jmeta{$B?FJ8;z(B}^^A
+% |}{|\jmeta{$B%k%SJ8;z(B}|}|
+%
+% $B2$J8%k%S$NL?Na!#(B
+% $B$9$J$o$A!"2$J8J8;zNs$N>eB&!J2#AH!K!?1&B&!J=DAH!K$K%k%S$rIU$9!#(B
+%
+% $B2$J8%k%S$OOBJ8%k%S$HHf$Y$F0J2<$NE@$,0[$J$k!#(B
+% \begin{itemize}
+% \item $B>o$K%0%k!<%W%k%S$H07$o$l$k!#(B
+% $B!J(B|m|$B!"(B|g|$B!"(B|j| $B$N;XDj$OL58z!#!K(B
+% \item $B?FJ8;zNs$N6QEy3d$j$O>o$KL58z$G$"$k!#(B
+% $B!J(B|e| $B;XDj$OL58z!#!K(B
+% \item $B%k%SIU$-J8;z$HA08e$NJ8;z$H$N4V$N6u$-D4@0$d9TJ,3d2DH]$O(B
+% $BN><T$,$H$b$K2$J8$G$"$k$H$$$&A[Dj$G9T$o$l$k!#(B
+% $B=>$C$F!"4{Dj$G$O6u$-D4@0NL$O%<%m!"9TJ,3d$O6X;_$H$J$k!#(B
+% \item $B6u$-D4@0$rOB2$J84V6uGr!J(B|:|$B!K$K$7$?>l9g$O!"(B
+% |*| $B$,;XDj$5$l$k$"$k$$$O<+F0$N6XB'=hM}$,F/$/$N$G$J$$8B$j!"(B
+% $B9TJ,3d$,5v2D$5$l$k!#(B
+% \end{itemize}
+%
+% \item |\truby[|\jmeta{$B%*%W%7%g%s(B}|]{|\jmeta{$B?FJ8;z(B}^^A
+% |}{|\jmeta{$B>eB&%k%SJ8;z(B}|}{|\jmeta{$B2<B&%k%SJ8;z(B}|}|
+%
+% $BOBJ8N>B&%k%S$NL?Na!#(B
+% $B2#AH$N>l9g!"?FJ8;zNs$N>eB&$H2<B&$K%k%S$rIU$9!#(B
+% $B=DAH$N>l9g!"?FJ8;zNs$N1&B&$H:8B&$K%k%S$rIU$9!#(B
+%
+% $BN>B&%k%S$G=O8l%k%S$r;H$&$3$H$O$G$-$J$$!#(B
+% $B$9$J$o$A!"(B\jmeta{$B%*%W%7%g%s(B}$BCf$G(B |j|$B!"(B|J| $B$O;XDj$G$-$J$$!#(B
+%
+% \Note 1.1$BHG0JA0$G$O>o$K%0%k!<%W%k%S$N07$$$G$"$C$?!#(B
+% $B5lHG$H$N8_49$N$?$a!"N>B&%k%S$N>l9g$K$O<+F0@ZBX%b%N%k%S!J(B|M|$B!K$r(B
+% $B4{DjCM$H$9$k!#(B
+% \footnote{$B$D$^$j!"5lMh$N;HMQ$G$O%0%k!<%W%k%S$H07$o$l$k$?$a!"(B
+% $B%k%S$N%0%k!<%W$O(B1$B$D$K$7$F$$$k$O$:$G!"$3$l$O?7HG$G$b$=$N$^$^(B
+% $B%0%k!<%W%k%S$H07$o$l$k!#(B
+% $B0lJ}$G!"%b%N%k%S$r;H$$$?$$>l9g$O%0%k!<%W$rJ#?t$K$9$k$O$:$G!"(B
+% $B$3$N;~$O<+F0E*$K%b%N%k%S$K$J$k!#(B
+% $B$J$N$G7k6I!"4pDl%b!<%I!J(B\texttt{g}$B!"(B\texttt{m}$B!K$r;XDj$9$k(B
+% $BI,MW$OL5$$$3$H$K$J$k!#(B}
+%
+% \item |\atruby[|\jmeta{$B%*%W%7%g%s(B}|]{|\jmeta{$B?FJ8;z(B}^^A
+% |}{|\jmeta{$B>eB&%k%SJ8;z(B}|}{|\jmeta{$B2<B&%k%SJ8;z(B}|}|
+%
+% $B2$J8N>B&%k%S$NL?Na!#(B
+% $B2$J8%k%S$G$"$k$3$H$r=|$-(B |\truby| $B$HF1$8!#(B
+%
+% \end{itemize}
+%
+% \subsection{$B%k%SL?Na$NF~NOJ8;zNs$NF~NO5,B'(B}
+%
+% $B%k%S$N=hM}$G$OF~NOJ8;zNs!J?FJ8;zNs!&%k%SJ8;zNs!K$r(B
+% $BJ8;zKh$KJ,2r$9$kI,MW$,$"$k!#(B
+% $B$3$N$?$a!"%k%SL?Na$NF~NOJ8;zNs$O0lDj$N5,B'$K=>$C$F(B
+% $B=q$+$l$kI,MW$,$"$k!#(B
+%
+% $B%k%SL?Na$NF~NOJ8;zNs$K$O0J2<$N$b$N$r4^$a$k$3$H$,$G$-$k!#(B
+%
+% \begin{itemize}
+% \item \texttt{\vb}\Means $B%0%k!<%W$N6h@Z$j$rI=$9!#(B
+% \begin{itemize}
+% \item $B8=:_$NHG$G$O!"?FJ8;zNs$G%0%k!<%W6h@Z$j$rMxMQ$9$k5!G=$O$J$$!#(B
+% \footnote{$B>-Mh$N5!G=3HD%$K$*$$$F!"?FJ8;zNs$,J#?t%0%k!<%W$r$b$D$h$&$J(B
+% $B;HMQK!$,A[Dj$5$l$F$$$k!#(B}%
+% $B=>$C$F!"?FJ8;zNsCf$K(B \texttt{\vb} $B$,$"$k$H>o$K%(%i!<$K$J$k!#(B
+% \item $B%k%SJ8;zNsCf$G$O!"0l$D$N%0%k!<%W$,0l$D$N?FJ8;z$KBP1~$9$k(B
+% $BHO0O$rI=$9!J%b%N%k%S!&=O8l%k%S$N>l9g!K!#(B
+% \end{itemize}
+%
+% \item $BDL>oJ8;z(B\Means {\LaTeX}$B$NL?Na$dFC<lJ8;z$d2$J86uGr(B
+% $B$d(B \texttt{\vb} $B$G$J$$!"2$J8$^$?$OOBJ8$NJ8;z$r;X$9!#(B
+% $B$3$l$O0l$D$N!TJ8;z!U$H8+$J$5$l$k!#(B
+% \begin{itemize}
+% \item $BOBJ8%k%SL?Na$N?FJ8;zNs$K2$J8J8;z$r4^$a$?>l9g!"(B
+% $B$=$NJ8;z$OAHHG>e!HOBJ8J8;z$N$h$&$K!I?6Iq$&!#(B
+% \end{itemize}
+%
+% \item $B%/%i%9%?(B\Means $B$9$J$o$A!"(B|{ }| $B$K0O$^$l$?%F%-%9%H!#(B
+% $BA4BN$,0l$D$N!TJ8;z!U$H8+$J$5$l$k!#(B
+% \begin{itemize}
+% \item $B%/%i%9%?$NCf$G$OG$0U$N(B{\LaTeX}$B$N!H%$%s%i%$%s(B\mbox{$B!I(B}%
+% \footnote{$B!V6/@)2~9T$d2~CJMn$r4^$^$J$$!W$H$$$&$3$H!#(B
+% {\LaTeX}$B$NMQ8l$G$O!V(BLR$B%b!<%I!W$H8F$V!#(B}%
+% $B$NL?Na$,;H$($k!#(B
+%\begin{quote}\begin{verbatim}
+%\ruby[j]{{\CID{7652}}$B>~6h(B}{$B$+$D(B|$B$7(B{\color{red}{$B$+(B}}|$B$/(B}
+%\end{verbatim}\end{quote}
+% \item $B%/%i%9%?Cf$N(B \texttt{\vb} $B$ODL>oJ8;z$H$7$F07$o$l$k!#(B
+% \end{itemize}
+%
+% \Note $BNc30E*$K!"2$J8%k%S$N?FJ8;zNs$O!"$"$?$+$b$=$lA4BN$,(B
+% $B0l$D$N%/%i%9%?$G$"$k$h$&$K?6Iq$&!#(B
+% $B$D$^$j!"G$0U$N!H%$%s%i%$%s!I$NL?Na$,;H$($F!"(B
+% $BA4BN$G0l$D$N2$J8J8;z$G$"$k$N$HF1MM$K?6Iq$&!#(B
+%
+% \end{itemize}
+%
+% \subsection{$B%k%SJ8;zNs$N%0%k!<%W$N;XDj(B}
+%
+% $B%k%SJ8;zNs$N(B \texttt{\vb} $B$O%0%k!<%W$N6h@Z$j$rI=$9!#(B
+% $BNc$($P!"%k%SJ8;zNs(B
+%\begin{quote}\begin{verbatim}
+%$B$8$f$/(B|$B$4(B
+%\end{verbatim}\end{quote}
+% $B$O(B2$B$D$N%0%k!<%W$+$i$J$j!":G=i$N$b$N$O(B3$BJ8;z!"8e$N$b$N$O(B
+% 1$BJ8;z$+$i$J$k!#(B
+%
+% $BD9$5$r9g$o$;$k$?$a$K6QEy3d$j$r9T$&>l9g!"$=$NJ,3d$NC10L$O(B
+% $B!TJ8;z!U!JDL>oJ8;z$^$?$O%/%i%9%?!K$H$J$k!#(B
+% $BNc$($P(B
+%\begin{quote}\begin{verbatim}
+%$B%Y%/%?(B{\<$B!J!<!K(B\<}
+%\end{verbatim}\end{quote}
+% $B$O(B1$B$D$N%0%k!<%W$+$i$J$j!"$=$l$O(B4$B$D$N!TJ8;z!U$+$i$J$k!#(B
+%
+% $B%0%k!<%W$d!TJ8;z!U$N;XDj$O%k%S$NIU$-J}$K1F6A$9$k!#(B
+% \begin{itemize}
+% \item $B%b%N%k%S!&=O8l%k%S$G$O?FJ8;zNs$N(B1$B$D$N!TJ8;z!U$K%k%SJ8;zNs$N(B
+% 1$B$D$N%0%k!<%W$,BP1~$9$k!#(B
+% $BNc$($P!"(B
+%\begin{quote}\begin{verbatim}
+%\ruby[m]{$B=O8l(B}{$B$8$f$/(B|$B$4(B}
+%\end{verbatim}\end{quote}
+% $B$O!"!V=O(B+$B$8$f$/!W!V8l(B+$B$4!W$N(B2$B$D$N%V%m%C%/$+$i$J$k!#(B
+% \item $B!JC1=c!K%0%k!<%W%k%S$G$O%k%SJ8;zNs$N%0%k!<%W$b(B1$B$D$K8B$i$l!"(B
+% $B?FJ8;z$H%k%SJ8;z$NM#0l$N%0%k!<%W$,BP1~$9$k!#(B
+% $BNc$($P!"(B
+%\begin{quote}\begin{verbatim}
+%\ruby[g]{$B8^7n1+(B}{$B$5$_$@$l(B}
+%\end{verbatim}\end{quote}
+% $B$O!"!V8^7n1+(B+$B$5$_$@$l!W$N(B1$B$D$N%V%m%C%/$+$i$J$k!#(B
+% \end{itemize}
+%
+% \subsection{$B%4!<%9%H=hM}(B}
+%
+% $B!VOBJ8%4!<%9%H=hM}!W$H$O0J2<$N$h$&$J$b$N$G$"$k!'(B
+% \begin{quote}
+% $BOBJ8%k%S$N?FJ8;zNs=PNO$NA08e$KA43Q6uGrJ8;z$rA^F~$9$k(B
+% $B!J$?$@$7$=$N6u$-$rBG$A>C$9$h$&$KIi$N6u$-$rF1;~$KF~$l$k!K(B
+% $B$3$H$G!"?FJ8;zNsA4BN$,!"$=$N30B&$+$i8+$?$H$-$K!"(B
+% $BA43Q6uGrJ8;z!JBgDq$N(BJFM$B$G$O$3$l$O4A;z$HF1$807$$$K$J$k!K(B
+% $B$HF1MM$K07$o$l$k$h$&$K$9$k!#(B
+% $BNc$($P!"A0$K2$J8J8;z$,$"$k>l9g$K$O<+F0E*$KOB2$J84V6uGr$,(B
+% $BA^F~$5$l$k!#(B
+% \end{quote}
+%
+% $B!V2$J8%4!<%9%H=hM}!W$bBP>]$,2$J8$G$"$k$3$H$H=|$$$FF1$8$G$"$k!#(B
+% $B!J$3$A$i$O!"!VJ#9g8l5-9f!J(Bcompound word mark$B!K!W$H$$$&%<%mI}(B
+% $BIT2D;k$N2$J8J8;z$rMQ$$$k!#(B
+% $B%k%SIUJ8;zNsA4BN$,C10l2$J8J8;z$N$h$&$K07$o$l$k!#!K(B
+% $B$J$*!"!V%4!<%9%H!J(Bghost$B!K!W$H$$$&$N$O(BOmega$B$NMQ8l$G!"(B
+% $B!VIT2D;k$G$"$k$,!J2?$i$+$N@-<A$K$*$$$F!KFCDj$N2D;k$NJ8;z$H(B
+% $BF1Ey$NLr3d$r$b$D%*%V%8%'%/%H!W$N$3$H$G$"$k!#(B
+%
+% $B%4!<%9%H=hM}$rM-8z$K$9$k$H<!$N$h$&$J%a%j%C%H$,$"$k!#(B
+%
+% \begin{itemize}
+% \item $BOB2$J84V6uGr$,<+F0E*$KA^F~$5$l$k!#(B
+% \item $B9TJ,3d6X;_!J6XB'=hM}!K$,>o$K@5$7$/5!G=$9$k!#(B
+% \item $BFC<l$J>u67!JNc$($PCJMnKv!K$G$b0[>oF0:n$r5/$3$7$K$/$$!#(B
+% \item $B!J<BAu$,C1=c2=$5$l!"%P%0:.F~$NM>CO$,>/$J$/$J$k!#!K(B
+% \end{itemize}
+%
+% $B$?$@$7!"<!$N$h$&$J=EMW$J%G%a%j%C%H$,$"$k!#(B
+%
+% \begin{itemize}
+% \item {p\TeX}$B%(%s%8%s$N;EMM>e$N@)Ls$K$h$j!"%k%S=PNO$N(B
+% $B?JF~$H6&B8$G$-$J$$!#(B
+% $B!J=>$C$F6&B8$9$k$h$&$J@_Dj$r;n$_$k$H%(%i!<$K$J$k!#!K(B
+% \end{itemize}
+%
+% $B$3$N$?$a!"4{Dj$G$O%4!<%9%H=hM}$OL58z$K$J$C$F$$$k!#(B
+% $BM-8z$K$9$k$K$O!"(B|\rubyusejghost|$B!JOBJ8!K(B
+% $B!?(B|\rubyuseaghost|$B!J2$J8!K$r<B9T$9$k!#(B
+%
+% $B$J$*!"(B\jmeta{$BA0Jd=u@_Dj(B}$B!?(B\jmeta{$B8eJd=u@_Dj(B}$B$G;XDj$5$l$k5!G=$O!"(B
+% $B%4!<%9%H=hM}$,M-8z$N>l9g$K$OL58z2=$5$l$k!#(B
+% $B$3$l$i$N5!G=$NL\E*$,<+F0=hM}$,<:GT$9$k$N$rJd=<$9$k$?$a$@$+$i$G$"$k!#(B
+%
+% \subsection{$B%Q%i%a%?@_DjL?Na(B}
+%
+% $B4pK\E*@_Dj!#(B
+%
+% \begin{itemize}
+%
+% \item |\rubysetup{|\jmeta{$B%*%W%7%g%s(B}|}|
+%
+% $B%*%W%7%g%s$N4{DjCM@_Dj!#(B
+% $B!N4{Dj(B = \texttt{\vb cjPeF\vb}$B!O(B
+% \begin{itemize}
+% \item $B$3$l<+BN$N4{DjCM$O(B
+% $B!VFM=P5v2D!"?JF~L5$7!"CfIU$-!"=O8l%k%S!">eB&G[CV!"(B
+% $B?FJ8;z6QEy3d$jM-8z!">.=q$-J8;zJQ49L58z!W$G$"$k!#(B
+% \item \jmeta{$BA0Jd=u@_Dj(B}$B!?(B\jmeta{$B8eJd=u@_Dj(B}$B$N4{DjCM$OJQ99(B
+% $B$G$-$J$$!#(B
+% |\rubysetup| $B$G$3$l$i$N%*%W%7%g%sJ8;z$r;XDj$7$F$b(B
+% $BL5;k$5$l$k!#(B
+% \item |\rubysetup| $B$G$N@_Dj$ON_@Q$9$k!#(B
+% $BNc$($P!"=i4|>uBV$+$i!"(B|\rubysetup{hmf}| $B$H(B |\rubysetup{<->}| $B$r(B
+% $B<B9T$7$?>l9g!"4{DjCM@_Dj$O(B |<hmPef>| $B$H$J$k!#(B
+% \item $B$3$N@_Dj$K4X$o$i$:!"N>B&%k%S$G$O!V<+F0@ZBX%b%N%k%S!J(B|M|$B!K!W(B
+% $B$,4{Dj$H$7$F;XDj$5$l$k!#(B
+% \end{itemize}
+%
+% \item |\rubyfontsetup{|\jmeta{$BL?Na(B}|}|
+%
+% $B%k%SMQ$N%U%)%s%H@ZBXL?Na$r@_Dj$9$k!#(B
+% $BNc$($P!"%k%S$OI,$:L@D+BN$G=PNO$7$?$$$H$$$&>l9g$O!"(B
+% $B0J2<$NL?Na$r<B9T$9$l$P$h$$!#(B
+%\begin{quote}\begin{verbatim}
+%\rubyfontsetup{\mcfamily}
+%\end{verbatim}\end{quote}
+%
+% \item |\rubybigintrusion{|\jmeta{$B<B?t(B}|}|
+%
+% $B!VBg!W$N?JF~NL!J%k%SA43QC10L!K!#(B
+% $B!N4{Dj(B = 1$B!O(B
+%
+% \item |\rubysmallintrusion{|\jmeta{$B<B?t(B}|}|
+%
+% $B!V>.!W$N?JF~NL!J%k%SA43QC10L!K!#(B
+% $B!N4{Dj(B = 0.5$B!O(B
+%
+% \item |\rubymaxmargin{|\jmeta{$B<B?t(B}|}|
+%
+% $B%k%SJ8;zNs$NJ}$,C;$$>l9g$N!"%k%SJ8;zNs$NC<$N?FJ8;zNs$NC<(B
+% $B$+$i$N5wN%$N>e8BCM!J?FJ8;zA43QC10L!K!#(B
+% $B!N4{Dj(B = 0.75$B!O(B
+%
+% \item |\rubyintergap{|\jmeta{$B<B?t(B}|}|
+%
+% $B%k%S$H?FJ8;z$N4V$N6u$-!J?FJ8;zA43QC10L!K!#(B
+% $B!N4{Dj(B = 0$B!O(B
+%
+% \item |\rubyusejghost|$B!?(B|\rubynousejghost|
+%
+% $BOBJ8%4!<%9%H=hM}$r9T$&!?9T$o$J$$!#(B
+% $B!N4{Dj(B = $B9T$o$J$$!O(B
+%
+% \item |\rubyuseaghost|$B!?(B|\rubynouseaghost|
+%
+% $B2$J8%4!<%9%H=hM}$r9T$&!?9T$o$J$$!#(B
+% $B!N4{Dj(B = $B9T$o$J$$!O(B
+%
+% \end{itemize}
+%
+% $B>\:Y@_Dj!#(B
+% $BDL>o$O$3$l$i$N4{DjCM$rJQ$($kI,MW$O$J$$$@$m$&!#(B
+%
+% \begin{itemize}
+%
+% \item |\rubysafemode|$B!?(B|\rubynosafemode|
+%
+% $B0BA4%b!<%I$rM-8z!?L58z$K$9$k!#(B
+% $B!N4{Dj(B = $BL58z!O(B
+% \begin{itemize}
+% \item $BK\%Q%C%1!<%8$,%5%]!<%H$9$k%(%s%8%s$O(B
+% (u){\pTeX}$B!"(B{\XeTeX}$B!"(B{\LuaTeX}$B$G$"$k!#(B
+% $B!V0BA4%b!<%I!W$H$O!"$3$l$i$N%(%s%8%s$rI,MW$H$9$k0lIt$N5!G=(B
+% \footnote{$B0BA4%b!<%I$G$O!"6/@)E*$K%0%k!<%W%k%S$K@Z$jBX$o$k!#(B
+% $B$^$?!"?FJ8;z!&%k%S$NN>J}$N6QEy3d$jIU$1!"$*$h$S!"(B
+% $B>.=q$-J8;z<+F0JQ49$,L58z$K$J$k!#(B}%
+% $B$rL58z2=$7$?%b!<%I$G$"$k!#(B
+% $B$D$^$j!"0BA4%b!<%I$K@Z$jBX$($k$3$H$G!"!H%5%]!<%HBP>]!I$G$J$$(B
+% $B%(%s%8%s!J(B{\pdfTeX}$BEy!K$G$bK\%Q%C%1!<%8$N0lIt$N5!G=$,(B
+% $B;H$($k2DG=@-$,$"$k!#(B
+% \item $B;HMQCf$N%(%s%8%s$,(B{\pdfTeX}$B$G$"$k>l9g!"4{Dj$G0BA4%b!<%I(B
+% $B$,M-8z$K$J$k!#(B
+% \end{itemize}
+%
+% \item |\rubysizeratio{|\jmeta{$B<B?t(B}|}|
+%
+% $B%k%S%5%$%:$N?FJ8;z%5%$%:$KBP$9$k3d9g!#(B
+% $B!N4{Dj(B = 0.5$B!O(B
+%
+% \item |\rubystretchprop{|\meta{X}|}{|\meta{Y}|}{|\meta{Z}|}|
+%
+% $B%k%SMQ6QEy3d$j$NHfN($N;XDj!#(B
+% $B!N4{Dj(B = 1, 2, 1$B!O(B
+%
+% \item |\rubystretchprophead{|\meta{Y}|}{|\meta{Z}|}|
+%
+% $BA0FM=P6X;_;~$N6QEy3d$j$NHfN($N;XDj!#(B
+% $B!N4{Dj(B = 1, 1$B!O(B
+%
+% \item |\rubystretchpropend{|\meta{X}|}{|\meta{Y}|}|
+%
+% $B8eFM=P6X;_;~$N6QEy3d$j$NHfN($N;XDj!#(B
+% $B!N4{Dj(B = 1, 1$B!O(B
+%
+% \item |\rubyyheightratio{|\jmeta{$B<B?t(B}|}|
+%
+% $B2#AHOBJ8$N9b$5$N=DI}$KBP$9$k3d9g!#(B
+% $B!N4{Dj(B = 0.88$B!O(B
+%
+% \item |\rubytheightratio{|\jmeta{$B<B?t(B}|}|
+%
+% $B=DAHOBJ8$N!V9b$5!W$N!V=DI}!W$KBP$9$k3d9g(B
+% $B!J(B{p\TeX}$B$N=DAH$G$O!V=D!W$H!V2#!W$,<B:]$N5U$K$J$k!K!#(B
+% $B!N4{Dj(B = 0.5$B!O(B
+%
+% \end{itemize}
+%
+%^^A------------------------------------
+% \section{$B7wE@5!G=(B}
+%
+% \subsection{$B7wE@MQL?Na(B}
+%
+% \begin{itemize}
+% \item |\kenten[|\jmeta{$B%*%W%7%g%s(B}|]{|\jmeta{$B?FJ8;z(B}|}|
+%
+% $BOBJ8J8;zNs$N>eB&!J2#AH!K!?1&B&!J=DAH!K$K7wE@$rIU$9(B
+% $B!J%*%W%7%g%s$G5UB&$K$b$G$-$k!K!#(B
+%
+% \jmeta{$B%*%W%7%g%s(B}$B$OJ#?t;XDj2DG=$G!"GSB>$J;XDj$,J;B8$7$?>l9g$O(B
+% $B8e$N$b$N$,M-8z$K$J$k!#(B
+% $B$^$?!">JN,$5$l$?;XDj$K$D$$$F$O(B |\kentensetup| $B$G;XDj$5$l$?(B
+% $B4{DjCM$,MQ$$$i$l$k!#(B
+%
+% $B%*%W%7%g%s$K;XDj$G$-$kCM$O0J2<$NDL$j!#(B
+% \begin{quote}
+% \newcommand*\fro[1]{{\scriptsize($<$\,\textit{#1})}}
+% \begin{tabular}[t]{l@{ }ll}
+% \texttt{p} & \fro{primary} & $B<g%^!<%/(B\\
+% \texttt{s} & \fro{seconday} & $BI{%^!<%/(B\\
+% \texttt{f} & \fro{full} & $BA4J8;zIU2CM-8z(B\\
+% \texttt{F} & & $BA4J8;zIU2CL58z(B
+% \end{tabular}\qquad
+% \begin{tabular}[t]{l@{ }ll}
+% \texttt{P} & \fro{primary} & $B>eB&G[CV(B\\
+% \texttt{S} & \fro{secondary} & $B2<B&G[CV(B
+% \end{tabular}
+% \end{quote}
+%
+% \begin{itemize}
+% \item |p|$B!"(B|s| $B$OIU2C$9$k7wE@$N<oN`$rI=$9!#(B
+% $B2#AH$G$O<g%^!<%/!J(B|p|$B!K$O9uCfE@!"I{%^!<%/!J(B|s|$B!K$O9u%4%^E@$,(B
+% $BMQ$$$i$l!"=DAH$G$O5U$K<g%^!<%/$,9u%4%^E@!"I{%^!<%/$,9uCfE@$H$J$k!#(B
+% $B$?$@$7@_DjL?Na$K$h$j7wE@$N<oN`$OJQ99$G$-$k!#(B
+% \item |P| $B$O?FJ8;zNs$N>eB&!J2#AH!K!?1&B&!J=DAH!K!"(B
+% |S| $B$O?FJ8;zNs$N2<B&!J2#AH!K!?:8B&!J=DAH!K$K7wE@$rIU$9;XDj!#(B
+% \item |f| $B;XDj;~$O!"?FJ8;zNs$K4^$^$l$k!HDL>oJ8;z!I$NA4$F$K7wE@$rIU2C$9$k!#(B
+% |F| $B;XDj;~$O!"LsJ*$G$"$k!HDL>oJ8;z!I$K$O7wE@$rIU2C$7$J$$!#(B
+% \end{itemize}
+%
+% \end{itemize}
+%
+% \subsection{$B7wE@L?Na$N?FJ8;zNs$NF~NO5,B'(B}
+%
+% $B7wE@IU2C$N=hM}$G$O?FJ8;zNs$rJ8;zKh$KJ,2r$9$kI,MW$,$"$k!#(B
+% $B$3$N$?$a!"7wE@L?Na$N?FJ8;zNs$O0lDj$N5,B'$K=>$C$F(B
+% $B=q$+$l$kI,MW$,$"$k!#(B
+%
+% $B7wE@L?Na$N?FJ8;zNs$K$O0J2<$N$b$N$r4^$a$k$3$H$,$G$-$k!#(B
+%
+% \begin{itemize}
+% \item $BDL>oJ8;z(B\Means {\LaTeX}$B$NL?Na$dFC<lJ8;z$d2$J86uGr$G$J$$!"(B
+% $B2$J8$^$?$OOBJ8$NJ8;z$r;X$9!#(B
+% $BDL>oJ8;z$K$O0l$D$N7wE@$,IU2C$5$l$k!#(B
+% \begin{itemize}
+% \item |F| $B%*%W%7%g%s$r;XDj$7$?>l9g!"LsJ*!J6gFIE@Ey!K$NJ8;z$K$O(B
+% $B7wE@$,IU2C$5$l$J$$!#(B
+% \item $B2$J8J8;z$K7wE@$rIU$1$?>l9g!"$=$NJ8;z$OAHHG>e(B
+% $B!HOBJ8J8;z$N$h$&$K!I?6Iq$&!#(B
+% \end{itemize}
+% \item {\LaTeX}$B$NL?Na$*$h$S2$J86uGr(B\Means $B$3$l$i$K$O(B
+% $B7wE@$,IU2C$5$l$J$$!#(B
+% \begin{itemize}
+% \item $B<g$K(B |\,| $B$d(B |\quad| $B$N$h$&$J6uGrMQ$NL?Na$N;HMQ$r(B
+% $B0U?^$7$F$$$k!#(B
+% \item |\hspace{1zw}| $B$N$h$&$J0z?t$r<h$kL?Na$r$=$N$^$^=q$/$3$H$O(B
+% $B$G$-$J$$!#(B
+% $B$3$N>l9g$O!"0J9_$K<($92?$l$+$N=q<0$rMxMQ$9$kI,MW$,$"$k!#(B
+% \footnote{$BA43Q6uGr!J(B\verb|\hspace{1zw}|$B!K$dOB2$J84V6uGr(B
+% $B!J(B\verb|\hspace{\kanjiskip}|$B!K$r=PNO$9$k@lMQ$N%^%/%m$rMQ0U$7$F(B
+% $B$*$/$HJXMx$+$b$7$l$J$$!#(B}
+% \end{itemize}
+% \item $B%/%i%9%?(B\Means $B$9$J$o$A!"(B|{ }| $B$K0O$^$l$?G$0U$N%F%-%9%H!#(B
+% $B%k%SL?Na$N%/%i%9%?$HF1MM$K!"0l$D$N!TJ8;z!U$H$7$F07$o$l!"(B
+% $BA4BN$KBP$7$F0l$D$N7wE@$,IU2C$5$l$k!#(B
+% \begin{itemize}
+% \item \PKN{japanese-otf}$B%Q%C%1!<%8$N(B |\CID| $BL?Na$N$h$&$J!"(B
+% $B!VFC<l$JOBJ8J8;z$r=PNO$9$kL?Na!W$N;HMQ$r0U?^$7$F$$$k!#(B
+% \end{itemize}
+% \item |\kspan{|\jmeta{$B%F%-%9%H(B}|}|\Means $B$3$l$O!"(B
+% $B=PNO$5$l$k%F%-%9%H$NI}$K1~$8$?8D?t$N7wE@$,IU2C$5$l$k!#(B
+% \begin{itemize}
+% \item $BNc$($P!"!H$/$N;zE@!I$K7wE@$rIU$9>l9g$K;H$($k!#(B
+% \item $B$"$k$$$O!"!J>/!9<jH4$-$G$"$k$,(B
+% \footnote{$BK\Mh$O!"(B\verb|\textgt| $B$NCf$G2~$a$F(B \verb|\kenten|
+% $B$r;H$&$Y$-$G$"$k!#(B}%
+% $B!K(B|\kenten{$B$3$N(B\kspan{\textgt{$BJ8;z(B}}$B$@(B}| $B$_$?$$$J;H$$J}$b(B
+% $B9M$($i$l$k!#(B
+% \end{itemize}
+% \item |\kspan*{|\jmeta{$B%F%-%9%H(B}|}|\Means $B$3$l$O(B
+% $B7wE@$rIU$5$:$K%F%-%9%H$r$=$N$^$^=PNO$9$k!#(B
+% \item $B%k%SL?Na!J(B|\ruby| $BEy!K(B\Means $BNc$($P(B
+%\begin{quote}\begin{verbatim}
+%\kenten{$B$3$l$,(B\ruby[|j|]{$B7wE@(B}{$B$1$s(B|$B$F$s(B}$B$G$9(B}$B!#(B
+%\end{verbatim}\end{quote}
+% $B$N$h$&$K!"%k%SL?Na$O$=$N$^$^=q$/$3$H$,$G$-$k!#(B
+% \begin{itemize}
+% \item |\kentenrubycombination| $B$N@_Dj$K$h$C$F$O!"%k%S$H7wE@$NN>J}$,(B
+% $BIU2C$5$l$k!#(B
+% \item $B<BAu>e$N@)8B(B
+% \footnote{$B7wE@L?Na$O>o$K%4!<%9%H=hM}$rH<$&$?$a!"@h=R$N(B
+% $B!V%4!<%9%H=hM}$H?JF~$O6&B8$7$J$$!W$H$$$&@)8B$K0z$C$+$+$k$N$G$"$k!#(B}%
+% $B$N$?$a!"7wE@L?Na$N@hF,$K%k%SL?Na$,$"$k>l9g!"(B
+% $B%k%S$NA0B&$N?JF~$,L58z$K$J$k!#(B
+% $BF1MM$K!"7wE@L?Na$NKvHx$K%k%SL?Na$,$"$k>l9g!"(B
+% $B%k%S$N8eB&$N?JF~$,L58z$K$J$k!#(B
+% \item $B7wE@L?NaCf$N%k%S$N=hM}$ODL>o$N>l9g$HHf$Y$F!HJ#;(!I$G$"$k$?$a!"(B
+% $B<+F0E*$J6XB'=hM}$,F/$+$J$$2DG=@-$,9b$$!#(B
+% $B=>$C$F!"I,MW$K1~$8$FJd=u@_Dj$GJ,3d6X;_!J(B|*|$B!K$r;XDj$9$kI,MW$,$"$k!#(B
+% \item $B5U$K%k%SL?Na$NF~NO$K7wE@L?Na$r$=$N$^$^=q$/$3$H$O$G$-$J$$!#(B
+%\begin{quote}\begin{verbatim}
+%\ruby[|j|]{\kenten{$B7wE@(B}}{$B$1$s(B|$B$F$s(B}% $BIT2D(B
+%\end{verbatim}\end{quote}
+% |{ }| $B$G0O$C$?!TJ8;z!U$NCf$G$O;H$($k$,!"$3$N>l9g$OF1;~IU2C$H$O(B
+% $B8+$J$5$l$:!"FHN)$KF0:n$9$k$3$H$K$J$k!#(B
+% \end{itemize}
+% \end{itemize}
+%
+% \subsection{$B%4!<%9%H=hM}(B}
+%
+% $B7wE@=PNO$G$O%k%S$H0[$J$j?JF~$N=hM}$,ITMW$G$"$k!#(B
+% $B$3$N$?$a!"8=>u$G$O!"7wE@L?Na$K$D$$$F$O(B
+% \textgt{$B>o$K(B}$BOBJ8%4!<%9%H=hM}$rE,MQ$9$k!#(B
+%
+% \Note $BHsI8=`$NOBJ8%a%H%j%C%/!J(BJFM$B!K$,;H$o$l$F$$$kEy$NM}M3$G!"(B
+% $BOBJ8%4!<%9%H=hM}$,@5>o$K5!G=$7$J$$>l9g$,B8:_$9$k!#(B
+% $B$3$N$?$a!">-MhE*$K!"7wE@L?Na$K$D$$$F$bOBJ8%4!<%9%H=hM}$r(B
+% $B9T$o$J$$!J%k%SL?Na$HF1MM$NJd=u@_Dj$rE,MQ$9$k!K@_Dj$r(B
+% $BMQ0U$9$kM=Dj$G$"$k!#(B
+%
+% \subsection{$B%Q%i%a%?@_DjL?Na(B}
+%
+% \begin{itemize}
+%
+% \item |\kentensetup{|\jmeta{$B%*%W%7%g%s(B}|}|
+%
+% $B%*%W%7%g%s$N4{DjCM@_Dj!#(B
+% $B!N4{Dj(B = \texttt{pPF}$B!O(B
+%
+% \item |\kentenmarkinyoko{|\jmeta{$BL>A0$^$?$O%F%-%9%H(B}|}|
+%
+% $B2#AH;~$N<g%^!<%/!J(B|p| $B;XDj;~!K$H$7$F;H$o$l$k7wE@$r;XDj$9$k!#(B
+% $B!N4{Dj(B = |bullet*|$B!O(B
+%
+% $B%Q%C%1!<%8$GM=$aMQ0U$5$l$F$$$k7wE@<oJL$K$D$$$F$OL>A0$G;XDj$G$-$k!#(B
+% \begin{quote}
+% \newcommand*\Us[1]{\symbol{"#1}}
+% \newcommand*\Ucomp{{\small \<$B!J9g@.!K(B\<}}
+% \newcommand*\U[1]{\texttt{#1}}
+% \begin{tabular}[t]{ll@{ }ll}
+% \texttt{bullet*} & {$B!&(B} & \Ucomp & $B9uCfE@(B\\
+% \texttt{bullet} & {$B!&(B} & \U{2022*}& $B9uCfE@(B\\
+% \texttt{Bullet} & \Us{25E6} & \U{25E6*}& $BGrCfE@(B\\
+% \texttt{sesame*} & \Us{FE45} & \Ucomp & $B9u%4%^E@(B\\
+% \texttt{sesame} & \Us{FE45} & \U{FE45*}& $B9u%4%^E@(B\\
+% \texttt{Sesame} & \Us{FE46} & \U{FE46*}& $BGr%4%^E@(B
+% \end{tabular}\qquad
+% \begin{tabular}[t]{ll@{ }ll}
+% \texttt{triangle} & \Us{25B2} & \U{25B2} & $B9u;03Q(B\\
+% \texttt{Triangle} & \Us{25B3} & \U{25B3} & $BGr;03Q(B\\
+% \texttt{circle} & \Us{25CF} & \U{25CF} & $B9u4](B\\
+% \texttt{Circle} & \Us{25CB} & \U{25CB} & $BGr4](B\\
+% \texttt{bullseye} & \Us{25CE} & \U{25CE} & $BFs=E4](B\\
+% \texttt{fisheye} & \Us{25C9} & \U{25C9*}& $B<X$NL\E@(B
+% \end{tabular}
+% \end{quote}
+% \begin{itemize}
+% \item $B$3$l$i$N7wE@<oJL$N$&$A!"(B
+% |bullet*| $B$OCf9u!H(B{$B!&(B}$B!I!J(BU+30FB$B!K!"(B
+% |sesame*| $B$OFIE@!H(B{$B!"(B}$B!I!J(BU+3001$B!K$N(B
+% $B;z7A$r2C9)$7$?$b$N$rMxMQ$9$k!#(B
+% $B$3$l$i$O$I$s$JF|K\8l%U%)%s%H$G$b%5%]!<%H$5$l$F$$$k$N$G!"(B
+% $B3N<B$K;HMQ$G$-$k!#(B
+% \item $B$=$l0J30$N7wE@<oJL$O!"5-:\$NJ8;z%3!<%I$r$b$D(B
+% Unicode$BJ8;z$r=PNO$9$k!#(B
+% $B;HMQ$9$k%U%)%s%H$K$h$C$F$O!";z7A$r;}$C$F$$$J$$$?$a2?$b=PNO$5$l$J$$!"(B
+% $B$"$k$$$O;z7A$,A43QI}$G$J$$$?$a@5>o$K=PNO$5$l$J$$!"(B
+% $B$H$$$&2DG=@-$,$"$k!#(B
+% \item $BJ8;z%3!<%ICM$K(B |*| $B$rIU$1$?$b$N$O!"$=$NJ8;z$,(B
+% JIS~X~0208$B$K$J$$$3$H$rI=$9!#(B
+% {\pLaTeX}$B$G$3$l$i$N7wE@<oJL$rMxMQ$9$k$?$a$K$O(B
+% \PKN{japanese-otf}$B%Q%C%1!<%8$rFI$_9~$`I,MW$,$"$k!#(B
+% \end{itemize}
+%
+% $B$"$k$$$O!"L>A0$NBe$o$j$KG$0U$N(B{\LaTeX}$B$N%F%-%9%H$r=q$/$3$H$,$G$-$k!#(B
+% \footnote{$B$?$@$7!"0z?t$N@hF,$NJ8;z$,(BASCII$B1Q;z$G$"$k>l9g$O(B
+% $BL>A0$N;XDj$H8+$J$5$l$k$?$a!"%F%-%9%H$H$7$F07$$$?$$>l9g$O(B
+% $BE,59(B \verb|{ }| $B$rJd$&Ey$NA<CV$,I,MW$G$"$k!#(B}%
+%\begin{quote}\begin{verbatim}
+%\kentenmarkinyoko{$B"((B}
+%\end{verbatim}\end{quote}
+%
+% \item |\kentensubmarkinyoko{|\jmeta{$BL>A0$^$?$O%F%-%9%H(B}|}|
+%
+% $B2#AH;~$NI{%^!<%/!J(B|s| $B;XDj;~!K$H$7$F;H$o$l$k7wE@$r;XDj$9$k!#(B
+% $B!N4{Dj(B = |sesame*|$B!O(B
+%
+% \item |\kentenmarkintate{|\jmeta{$BL>A0$^$?$O%F%-%9%H(B}|}|
+%
+% $B=DAH;~$N<g%^!<%/!J(B|p| $B;XDj;~!K$H$7$F;H$o$l$k7wE@$r;XDj$9$k!#(B
+% $B!N4{Dj(B = |sesame*|$B!O(B
+%
+% \item |\kentensubmarkintate{|\jmeta{$BL>A0$^$?$O%F%-%9%H(B}|}|
+%
+% $B=DAH;~$NI{%^!<%/!J(B|s| $B;XDj;~!K$H$7$F;H$o$l$k7wE@$r;XDj$9$k!#(B
+% $B!N4{Dj(B = |bullet*|$B!O(B
+%
+% \item |\kentenfontsetup{|\jmeta{$BL?Na(B}|}|
+%
+% $B7wE@MQ$N%U%)%s%H@ZBXL?Na$r@_Dj$9$k!#(B
+%
+% \item |\kentenintergap{|\jmeta{$B<B?t(B}|}|
+%
+% $B7wE@$H?FJ8;z$N4V$N6u$-!J?FJ8;zA43QC10L!K!#(B
+% $B!N4{Dj(B = 0$B!O(B
+%
+% \item |\kentensizeratio{|\jmeta{$B<B?t(B}|}|
+%
+% $B7wE@%5%$%:$N?FJ8;z%5%$%:$KBP$9$k3d9g!#(B
+% $B!N4{Dj(B = 0.5$B!O(B
+%
+% \end{itemize}
+%
+% $B7wE@$H%k%S$NF1;~IU2C$K4X$9$k@_Dj!#(B
+%
+% \begin{itemize}
+%
+% \item |\kentenrubycombination{|\jmeta{$BCM(B}|}|
+% $B7wE@L?Na$N?FJ8;zCf$G%k%SL?Na$,;H$o$l$?;~$N5sF0$r;XDj$9$k!#(B
+% $B!N4{Dj(B = |both|$B!O(B
+% \begin{itemize}
+% \item |ruby|$B!'(B $B%k%S$N$_$r=PNO$9$k!#(B
+% \item |both|$B!'(B $B%k%S$N30B&$K7wE@$r=PNO$9$k!#(B
+% \end{itemize}
+%
+% \item |\kentenrubyintergap{|\jmeta{$B<B?t(B}|}|
+%
+% $B7wE@$H%k%S$,F1$8B&$KIU$$$?;~$N4V$N6u$-!J?FJ8;zA43QC10L!K!#(B
+% $B!N4{Dj(B = 0$B!O(B
+%
+% \end{itemize}
+%
+%^^A------------------------------------
+%\iffalse
+% \section{$B>-Mh$N3HD%5!G=(B\<$B!JL$<BAu!K(B}
+%
+% $B!J$3$N@a$G$O!"$^$@<BAu$5$l$F$$$J$$$,!"(B
+% $B<B8=$G$-$l$P$h$$$H9M$($F$$$k5!G=$K$D$$$F=R$Y$k!#!K(B
+%
+% $B!V9TJ,3d$NM-L5$K$h$j?FJ8;z$H%k%SJ8;z$NAjBP0LCV$,JQ2=$9$k!W(B
+% $B$h$&$J=hM}$O!"(B{\TeX}$B$G$N<B8=$OHs>o$KFq$7$$!#(B
+% $B$3$l$r(B{$\varepsilon$-p\TeX}$B$N3HD%5!G=$rMQ$$$F2?$H$+(B
+% $B<B8=$7$?$$!#(B
+%
+% \begin{itemize}
+%
+% \item $B2DF0%0%k!<%W%k%S5!G=(B\Means
+% $BNc$($P!"(B
+%\begin{quote}\begin{verbatim}
+%\ruby[g]{$B2f;W$&(B|$B8N$K(B|$B2fM-$j(B}{$B%3%.%H!&(B|$B%(%k%4!&(B|$B%9%`(B}
+%\end{verbatim}\end{quote}
+% $B$N$h$&$K%0%k!<%W%k%S$GJ#?t%0%k!<%W$r;XDj$9$k$H!"(B
+% $BDL>o$O!V2f;W$&8N$K2fM-$j(B+$B%3%.%H!&%(%k%4!&%9%`!W$N(B1$B%V%m%C%/$K(B
+% $B$J$k$,!"%0%k!<%W$N6h@Z$j$G9TJ,3d2DG=$H$J$j!"Nc$($P:G=i$N%0%k!<%W(B
+% $B$N8e$G9TJ,3d$5$l$?>l9g$O!"<+F0E*$K(B
+% $B!V2f;W$&(B+$B%3%.%H!&!W$H!V8N$K2fM-$j(B+$B%(%k%4!&%9%`!W$N(B2$B%V%m%C%/$G$N(B
+% $BAHHG$KJQ2=$9$k!#(B
+% \item $B9TF,!&9TKv$G$NFM=P$N<+F0Jd@5(B\Means
+% $B9TF,!J9TKv!K$KG[CV$5$l$?%k%SIU$-J8;zNs$G$O!"<+F0E*$K(B
+% $BA0!J8e!KFM=P$r6X;_$9$k!#(B
+% \item $B=O8l%k%S$NESCf$G$N9TJ,3d$N5v2D(B\Means
+% $BNc$($P!"(B
+%\begin{quote}\begin{verbatim}
+%\ruby[j]{$B=O8l(B}{$B$8$f$/(B|$B$4(B}
+%\end{verbatim}\end{quote}
+% $B$N>l9g!"7k2L$O%0%k!<%W%k%S=hM}$N!V=O8l(B+$B$8$f$/$4!W(B
+% $B$H$J$k$,!"ESCf$G$N9TJ,3d$,2DG=$G!"$=$N>l9g!"(B
+% $B!V=O(B+$B$8$f$/!W!V8l(B+$B$4!W$N(B2$B%V%m%C%/$G=PNO$5$l$k!#(B
+%
+% \end{itemize}
+%
+% \subsection{$B3HD%5!G=@_Dj$NL?Na(B}
+%
+% \begin{itemize}
+%
+% \item |\rubyuseextra{|\jmeta{$B@0?t(B}|}|
+%
+% $B3HD%5!G=$N<BAuJ}K!!#(B
+% $B!N4{Dj(B = 0$B!O(B
+% \begin{itemize}
+% \item 0$B!'(B $B3HD%5!G=$rL58z$K$9$k!#(B
+% \item 1$B!'(B $B$^$@$h$/$o$+$i$J$$$J$K$+!JL$<BAu!K!#(B
+% \end{itemize}
+%
+% \item |\rubyadjustatlineedge|$B!?(B|\rubynoadjustatlineedge|
+%
+% $B9TF,!&9TKv$G$NFM=P$N<+F0Jd@5$r9T$&!?9T$o$J$$!#(B
+% $B!N4{Dj(B = $B9T$o$J$$!O(B
+%
+% \item |\rubybreakjukugo|$B!?(B|\rubynobreakjukugo|
+%
+% $B%b%N%k%S=hM}$K$J$i$J$$=O8l%k%S$GCf4V$N9TJ,3d$r5v$9!?5v$5$J$$!#(B
+% $B!N4{Dj(B = $B5v$5$J$$!O(B
+%
+% \end{itemize}
+%\fi
+%^^A========================================================
+% \StopEventually
+% \newpage
+% \setlength{\parindent}{0pt}
+% \newcommand*{\cs}[1]{\texttt{\symbol{`\\}#1}}
+%
+%^^A------------------------------------
+% \section{$B<BAu!J%k%S4XO"!K(B}
+%
+% \subsection{$BA0Ds%Q%C%1!<%8(B}
+%
+% \PKN{keyval}$B$r;H$&M=Dj!J$^$@;H$C$F$$$J$$!K!#(B
+% \begin{macrocode}
+\RequirePackage{keyval}
+% \end{macrocode}
+%
+% \subsection{$B%(%i!<%a%C%;!<%8(B}
+%
+% \begin{macro}{\pxrr@error}
+% \begin{macro}{\pxrr@warn}
+% $B%(%i!<=PNOL?Na!#(B
+% \begin{macrocode}
+\def\pxrr@pkgname{pxrubrica}
+\def\pxrr@error{%
+ \PackageError\pxrr@pkgname
+}
+\def\pxrr@warn{%
+ \PackageWarning\pxrr@pkgname
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@fatal@error}
+% $BCWL?E*%(%i!<$,H/@8$7$?$+!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@fatal@error
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fatal@error}
+% $BCWL?E*%(%i!<$N%U%i%0$rN)$F$F!"%(%i!<$rI=<($9$k!#(B
+% \begin{macrocode}
+\def\pxrr@fatal@error{%
+ \pxrr@fatal@errortrue
+ \pxrr@error
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@eh@fatal}
+% $BCWL?E*%(%i!<$N%X%k%W!#(B
+% \begin{macrocode}
+\def\pxrr@eh@fatal{%
+ The whole ruby input was ignored.\MessageBreak
+ \@ehc
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fatal@not@supported}
+% $BL$<BAu$N5!G=$r8F$S=P$7$?>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@fatal@not@supported#1{%
+ \pxrr@fatal@error{Not yet supported: #1}%
+ \pxrr@eh@fatal
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@err@inv@value}
+% $B0z?t$KL58z$JCM$,;XDj$5$l$?>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@err@inv@value#1{%
+ \pxrr@error{Invalud value (#1)}%
+ \@ehc
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fatal@unx@letter}
+% $B%*%W%7%g%sCf$KITB,$NJ8;z$,8=$l$?>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@fatal@unx@letter#1{%
+ \pxrr@fatal@error{Unexpected letter '#1' found}%
+ \pxrr@eh@fatal
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@warn@bad@athead}
+% $B%b%N%k%S0J30!"$"$k$$$O2#AH$_$G8*IU$-;XDj$,9T$o$l$?>l9g!#(B
+% $B6/@)E*$KCfIU$-$KJQ99$5$l$k!#(B
+% \begin{macrocode}
+\def\pxrr@warn@bad@athead{%
+ \pxrr@warn{Position 'h' not allowed here}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@warn@must@group}
+% $B2$J8%k%S$G%0%k!<%W%k%S0J30$N;XDj$,9T$o$l$?>l9g!#(B
+% $B6/@)E*$K%0%k!<%W%k%S$KJQ99$5$l$k!#(B
+% \begin{macrocode}
+\def\pxrr@warn@must@group{%
+ \pxrr@warn{Only group ruby is allowed here}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@warn@bad@jukugo}
+% $BN>B&%k%S$G=O8l%k%S$N;XDj$,9T$o$l$?>l9g!#(B
+% $B6/@)E*$KA*BrE*%b%N%k%S!J(B|M|$B!K$KJQ99$5$l$k!#(B
+% \begin{macrocode}
+\def\pxrr@warn@bad@jukugo{%
+ \pxrr@warn{Jukugo ruby is not allowed here}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fatal@bad@intr}
+% $B%4!<%9%H=hM}$,M-8z$G?JF~M-$j$r@_Dj$7$?>l9g!#(B
+% $B!JCWL?E*%(%i!<!K!#(B
+% \begin{macrocode}
+\def\pxrr@fatal@bad@intr{%
+ \pxrr@fatal@error{%
+ Intrusion disallowed when ghost is enabled%
+ }\pxrr@eh@fatal
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fatal@bad@no@protr}
+% $BA0$H8e$NN>J}$GFM=P6X;_$r@_Dj$7$?>l9g!#(B
+% $B!JCWL?E*%(%i!<!K!#(B
+% \begin{macrocode}
+\def\pxrr@fatal@bad@no@protr{%
+ \pxrr@fatal@error{%
+ Protrusion must be allowed for either end%
+ }\pxrr@eh@fatal
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fatal@bad@length}
+% $B?FJ8;zNs$H%k%SJ8;zNs$G%0%k!<%W$N8D?t$,?)$$0c$&>l9g!#(B
+% $B!J%b%N%k%S!&=O8l%k%S$N>l9g!"?FJ8;z$N%0%k!<%W?t$O<B:]$K$O(B
+% $B!TJ8;z!U?t$N$3$H!#!K(B
+% \begin{macrocode}
+\def\pxrr@fatal@bad@length#1#2{%
+ \pxrr@fatal@error{%
+ Group count mismatch between the ruby and\MessageBreak
+ the body (#1 <> #2)%
+ }\pxrr@eh@fatal
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fatal@bad@mono}
+% $B%b%N%k%S!&=O8l%k%S$N?FJ8;zNs$,(B2$B$D0J>e$N%0%k!<%W$r;}$D>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@fatal@bad@mono{%
+ \pxrr@fatal@error{%
+ Mono-ruby body must have a single group%
+ }\pxrr@eh@fatal
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fatal@bad@switching}
+% $BA*BrE*%k%S$N?FJ8;zNs$,(B2$B$D0J>e$N%0%k!<%W$r;}$D>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@fatal@bad@switching{%
+ \pxrr@fatal@error{%
+ The body of Switching-ruby (M/J) must\MessageBreak
+ have a single group%
+ }\pxrr@eh@fatal
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fatal@bad@movable}
+% $B2$J8%k%S!JI,$:%0%k!<%W%k%S$H$J$k!K$G(B
+% $B%k%SJ8;zNs$,(B2$B$D0J>e$N%0%k!<%W$r;}$D>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@fatal@bad@movable{%
+ \pxrr@fatal@error{%
+ Movable group ruby is not allowed here%
+ }\pxrr@eh@fatal
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fatal@na@movable}
+% $B%0%k!<%W%k%S$G%k%SJ8;zNs$,(B2$B$D0J>e$N%0%k!<%W$r;}$D(B
+% $B!J$D$^$j2DF0%0%k!<%W%k%S$G$"$k!K$,!"3HD%5!G=$,L58z$G$"$k$?$a(B
+% $B<B8=$G$-$J$$>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@fatal@na@movable{%
+ \pxrr@fatal@error{%
+ Feature of movable group ruby is disabled%
+ }\pxrr@eh@fatal
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@warn@load@order}
+% Unicode {\TeX}$BMQ$NF|K\8lAHHG%Q%C%1!<%8!J(BLua{\TeX}-ja$BEy!K$O(B
+% $B$3$N%Q%C%1!<%8$h$jA0$KFI$_9~$`$Y$-$@$,!"8e$GFI$_9~$^$l$F$$$k(B
+% $B$3$H$,H=L@$7$?>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@warn@load@order#1{%
+ \pxrr@warn{%
+ This package should be loaded after '#1'%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@interror}
+% $BFbIt%(%i!<!#(B
+% $B$3$l$,=P$F$O$$$1$J$$!#(B{\small\texttt{:-)}}
+% \begin{macrocode}
+\def\pxrr@interror#1{%
+ \pxrr@fatal@error{INTERNAL ERROR (#1)}%
+ \pxrr@eh@fatal
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrrDebug}
+% $B%G%P%C%0%b!<%I;XDj!#(B
+% \begin{macrocode}
+\newif\ifpxrrDebug
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%Q%i%a%?(B}
+%
+% \subsubsection{$BA4HL@_Dj(B}
+%
+% \begin{macro}{\pxrr@ruby@font}
+% $B%k%SMQ%U%)%s%H@ZBXL?Na!#(B
+% \begin{macrocode}
+\let\pxrr@ruby@font\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@big@intr}
+% \begin{macro}{\pxrr@small@intr}
+% $B!VBg!W$H!V>.!W$N?JF~NL(B
+% $B!J(B|\rubybigintrusion|$B!?(B|\rubysmallintrusion|$B!K!#(B
+% $B<B?tCM%^%/%m!J?t;zNs$KE83+$5$l$k!K!#(B
+% \begin{macrocode}
+\def\pxrr@big@intr{1}
+\def\pxrr@small@intr{0.5}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+% \begin{macro}{\pxrr@size@ratio}
+% $B%k%SJ8;z%5%$%:(B
+% $B!J(B|\rubysizeratio|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@size@ratio{0.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@sprop@x}
+% \begin{macro}{\pxrr@sprop@y}
+% \begin{macro}{\pxrr@sprop@z}
+% $B?-=LG[CVHfN((B
+% $B!J(B|\rubystretchprop|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@sprop@x{1}
+\def\pxrr@sprop@y{2}
+\def\pxrr@sprop@z{1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@sprop@hy}
+% \begin{macro}{\pxrr@sprop@hz}
+% $B?-=LG[CVHfN((B
+% $B!J(B|\rubystretchprophead|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@sprop@hy{1}
+\def\pxrr@sprop@hz{1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@sprop@ex}
+% \begin{macro}{\pxrr@sprop@ey}
+% $B?-=LG[CVHfN((B
+% $B!J(B|\rubystretchpropend|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@sprop@ex{1}
+\def\pxrr@sprop@ey{1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@maxmargin}
+% $B%k%SJ8;zNs$N:GBg%^!<%8%s(B
+% $B!J(B|\rubymaxmargin|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@maxmargin{0.75}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@yhtratio}
+% $B2#AHOBJ8$N9b$5$N=DI}$KBP$9$k3d9g(B
+% $B!J(B|\rubyyheightratio|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@yhtratio{0.88}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@thtratio}
+% $B=DAHOBJ8$N9b$5$N=DI}$KBP$9$k3d9g(B
+% $B!J(B|\rubytheightratio|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@thtratio{0.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@extra}
+% $B3HD%5!G=<BAuJ}K!(B
+% $B!J(B|\rubyuseextra|$B!K!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@extra=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@jghost}
+% $BOBJ8%4!<%9%H=hM}$r9T$&$+(B
+% $B!J(B|\ruby[no]usejghost|$B!K!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@jghost \pxrr@jghostfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@aghost}
+% $B2$J8%4!<%9%H=hM}$r9T$&$+(B
+% $B!J(B|\ruby[no]useaghost|$B!K!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@aghost \pxrr@aghostfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@inter@gap}
+% $B%k%S$H?FJ8;z$N4V$N6u$-(B
+% $B!J(B|\rubyintergap|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@inter@gap{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@edge@adjust}
+% $B9TF,!&9TKv$G$NFM=P$N<+F0Jd@5$r9T$&$+(B
+% $B!J(B|\ruby[no]adjustatlineedge|$B!K!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@edge@adjust \pxrr@edge@adjustfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@break@jukugo}
+% $B=O8l%k%S$GCf4V$N9TJ,3d$r5v$9$+(B
+% $B!J(B|\ruby[no]breakjukugo|$B!K!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@break@jukugo \pxrr@break@jukugofalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@safe@mode}
+% $B0BA4%b!<%I$G$"$k$+!#(B
+% $B!J(B|\ruby[no]safemode|$B!K!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@safe@mode \pxrr@safe@modefalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@d@bprotr}
+% \begin{macro}{\ifpxrr@d@aprotr}
+% $BFM=P$r5v$9$+H]$+!#(B
+% |\rubysetup| $B$N(B\jmeta{$BA0@_Dj(B}$B!?(B\jmeta{$B8e@_Dj(B}$B$KM3Mh$9$k!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@d@bprotr \pxrr@d@bprotrtrue
+\newif\ifpxrr@d@aprotr \pxrr@d@aprotrtrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@d@bintr}
+% \begin{macro}{\pxrr@d@aintr}
+% $B?JF~NL!#(B
+% |\rubysetup| $B$N(B\jmeta{$BA0@_Dj(B}$B!?(B\jmeta{$B8e@_Dj(B}$B$KM3Mh$9$k!#(B
+% |\pxrr@XXX@intr| $B$^$?$O6u!J?JF~L5$7!K$KE83+$5$l$k%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@d@bintr{}
+\def\pxrr@d@aintr{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@d@athead}
+% $B8*IU$-!?CfIU$-$N@_Dj!#(B
+% |\rubysetup| $B$N(B |c|$B!?(B|h|$B!?(B|H| $B$N@_Dj!#(B
+% 0 = $BCfIU$-!J(B|c|$B!K!((B
+% 1 = $B8*IU$-!J(B|h|$B!K!((B2 = $B3HD%8*IU$-!J(B|H|$B!K!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@d@athead=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@d@mode}
+% $B%b%N%k%S!J(B|m|$B!K!&%0%k!<%W%k%S!J(B|g|$B!K!&=O8l%k%S!J(B|j|$B!K(B
+% $B$N$$$:$l$+!#(B
+% |\rubysetup| $B$N@_DjCM!#(B
+% $B%*%W%7%g%sJ8;z$X$N0EL[$N!J(B|\let| $B$5$l$?!KJ8;z%H!<%/%s!#(B
+% \begin{macrocode}
+\let\pxrr@d@mode=j
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@d@side}
+% $B%k%S$r?FJ8;z$N>e2<$N$I$A$i$KIU$9$+!#(B
+% 0 = $B>eB&!((B1 = $B2<B&!#(B
+% |\rubysetup| $B$N(B |P|$B!?(B|S| $B$N@_Dj!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@d@side=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@d@evensp}
+% $B?FJ8;zNs6QEy3d$j$N@_Dj!#(B
+% 0 = $BL58z!((B1 = $BM-8z!#(B
+% |\rubysetup| $B$N(B |e|$B!?(B|E| $B$N@_Dj!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@d@evensp=1
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@d@fullsize}
+% $B>.=q$-J8;zJQ49$N@_Dj!#(B
+% 0 = $BL58z!((B1 = $BM-8z!#(B
+% |\rubysetup| $B$N(B |f|$B!?(B|F| $B$N@_Dj!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@d@fullsize=0
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B8F=P;~%Q%i%a%?!&JQ?t(B}
+%
+% $B0lHLE*$K!"FCDj$N%k%S!&7wE@L?Na$N8F=P$K8GM-$G$"$k(B
+% $B!J$D$^$j$=$NFbB&$K%M%9%H$5$l$?%k%S!&7wE@L?Na$K7Q>5$9$Y$-$G$J$$!K(B
+% $B%Q%i%a%?$O!"8F=P;~$NCM$rJL$KJ];}$7$F$*$/$Y$-$G$"$k!#(B
+%
+% \begin{macro}{\ifpxrr@bprotr}
+% \begin{macro}{\ifpxrr@aprotr}
+% $BFM=P$r5v$9$+H]$+!#(B
+% |\ruby| $B$N(B\jmeta{$BA0@_Dj(B}$B!?(B\jmeta{$B8e@_Dj(B}$B$KM3Mh$9$k!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@bprotr \pxrr@bprotrfalse
+\newif\ifpxrr@aprotr \pxrr@aprotrfalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@bintr}
+% \begin{macro}{\pxrr@aintr}
+% $B?JF~NL!#(B
+% |\ruby| $B$N(B\jmeta{$BA0@_Dj(B}$B!?(B\jmeta{$B8e@_Dj(B}$B$KM3Mh$9$k!#(B
+% $B@#K!CM$KE83+$5$l$k%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@bintr{}
+\def\pxrr@aintr{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@bscomp}
+% \begin{macro}{\pxrr@ascomp}
+% $B6u$-Jd@5@_Dj!#(B
+% |\ruby| $B$N(B |:| $B;XDj$KM3Mh$9$k!#(B
+% $B0EL[$NJ8;z%H!<%/%s!JL5;XDj$O(B |\relax|$B!K!#(B
+% \Note $B4{DjCM@_Dj!J(B|\rubysetup|$B!K$G$3$l$KBP1~$9$k$b$N$O$J$$!#(B
+% \begin{macrocode}
+\let\pxrr@bscomp\relax
+\let\pxrr@ascomp\relax
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@bnobr}
+% \begin{macro}{\ifpxrr@anobr}
+% $B%k%SIUJ8;z$ND>A0!?D>8e$G9TJ,3d$r5v$9$+!#(B
+% |\ruby| $B$N(B |*| $B;XDj$KM3Mh$9$k!#(B
+% $B%9%$%C%A!#(B
+% \Note $B4{DjCM@_Dj!J(B|\rubysetup|$B!K$G$3$l$KBP1~$9$k$b$N$O$J$$!#(B
+% \begin{macrocode}
+\newif\ifpxrr@bnobr \pxrr@bnobrfalse
+\newif\ifpxrr@anobr \pxrr@anobrfalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@bfintr}
+% \begin{macro}{\ifpxrr@afintr}
+% $BCJMnKAF,!?KvHx$G?JF~$r5v2D$9$k$+!#(B
+% |\ruby| $B$N(B |!| $B;XDj$KM3Mh$9$k!#(B
+% $B%9%$%C%A!#(B
+% \Note $B4{DjCM@_Dj!J(B|\rubysetup|$B!K$G$3$l$KBP1~$9$k$b$N$O$J$$!#(B
+% \begin{macrocode}
+\newif\ifpxrr@bfintr \pxrr@bfintrfalse
+\newif\ifpxrr@afintr \pxrr@afintrfalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@athead}
+% $B8*IU$-!?CfIU$-$N@_Dj!#(B
+% |\ruby| $B$N(B |c|$B!?(B|h|$B!?(B|H| $B$N@_Dj!#(B
+% $BCM$N0UL#$O(B |\pxrr@d@athead| $B$HF1$8!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@athead=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@athead@iven}
+% $B8*IU$-!?CfIU$-$N@_Dj$,L@<(E*$G$"$k$+!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@athead@given \pxrr@athead@givenfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@mode}
+% $B%b%N%k%S!J(B|m|$B!K!&%0%k!<%W%k%S!J(B|g|$B!K!&=O8l%k%S!J(B|j|$B!K$N$$$:$l$+!#(B
+% |\ruby| $B$N%*%W%7%g%s$N@_DjCM!#(B
+% $B%*%W%7%g%sJ8;z$X$N0EL[J8;z%H!<%/%s!#(B
+% \begin{macrocode}
+\let\pxrr@mode=\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@mode@given}
+% $B4pK\%b!<%I$N@_Dj$,L@<(E*$G$"$k$+!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@mode@given \pxrr@mode@givenfalse
+\newif\ifpxrr@afintr \pxrr@afintrfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@abody}
+% $B%k%S$,(B |\aruby|$B!J2$J8?FJ8;zMQ!K$G$"$k$+!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@abody
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@side}
+% $B%k%S$r?FJ8;z$N>e2<$N$I$A$i$KIU$9$+!#(B
+% 0 = $B>eB&!((B1 = $B2<B&!((B2 = $BN>B&!#(B
+% |\ruby| $B$N(B |P|$B!?(B|S| $B$,(B 0$B!?(B1 $B$KBP1~$7!"(B
+% |\truby| $B$G$O(B 2 $B$,;HMQ$5$l$k!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@side=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@evensp}
+% $B?FJ8;zNs6QEy3d$j$N@_Dj!#(B
+% 0 = $BL58z!((B1 = $BM-8z!#(B
+% |\ruby| $B$N(B |e|$B!?(B|E| $B$N@_Dj!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@evensp=1
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@revensp}
+% $B%k%SJ8;zNs6QEy3d$j$N@_Dj!#(B
+% 0 = $BL58z!((B1 = $BM-8z!#(B
+% $B@0?tDj?t!#(B
+% \Note $BDL>o$OM-8z$@$,!"0BA4%b!<%I$G$OL58z$K$J$k!#(B
+% \begin{macrocode}
+\chardef\pxrr@revensp=1
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fullsize}
+% $B>.=q$-J8;zJQ49$N@_Dj!#(B
+% 0 = $BL58z!((B1 = $BM-8z!#(B
+% |\ruby| $B$N(B |f|$B!?(B|F| $B$N@_Dj!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@fullsize=1
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@c@ruby@font}
+% \begin{macro}{\pxrr@c@size@ratio}
+% \begin{macro}{\pxrr@c@inter@gap}
+% $B0J2<$O!H%*%W%7%g%s$G;XDj$9$k!I0J30$N%Q%i%a%?$KBP1~$9$k$b$N!#(B
+% \begin{macrocode}
+\let\pxrr@c@ruby@font\@undefined
+\let\pxrr@c@size@ratio\@undefined
+\let\pxrr@c@inter@gap\@undefined
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{$B$=$NB>$NJQ?t(B}
+%
+% \begin{macro}{\pxrr@body@list}
+% $B?FJ8;zNs$N$?$a$K;H$&%j%9%H!#(B
+% \begin{macrocode}
+\let\pxrr@body@list\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@body@count}
+% |\pxrr@body@list| $B$ND9$5!#(B
+% $B@0?tCM%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@body@count\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@list}
+% $B%k%SJ8;zNs$N$?$a$K;H$&%j%9%H!#(B
+% \begin{macrocode}
+\let\pxrr@ruby@list\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@count}
+% |\pxrr@ruby@list| $B$ND9$5!#(B
+% $B@0?tCM%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@ruby@count\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@sruby@list}
+% 2$B$DL\$N%k%SJ8;zNs$N$?$a$K;H$&%j%9%H!#(B
+% \begin{macrocode}
+\let\pxrr@sruby@list\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@sruby@count}
+% |\pxrr@sruby@list| $B$ND9$5!#(B
+% $B@0?tCM%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@sruby@count\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@whole@list}
+% $B?FJ8;z$H%k%S$N%j%9%H$r(Bzip$B$7$?%j%9%H!#(B
+% \begin{macrocode}
+\let\pxrr@whole@list\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@bspace}
+% $B%k%S$,?FJ8;z$+$iA0B&$K$O$_$@$9D9$5!#(B
+% $B@#K!CM%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@bspace\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@aspace}
+% $B%k%S$,?FJ8;z$+$i8eB&$K$O$_$@$9D9$5!#(B
+% $B@#K!CM%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@aspace\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@natwd}
+% |\pxrr@evenspace@int| $B$N%Q%i%a%?!#(B
+% $B@#K!CM%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@natwd\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@all@input}
+% $BN>B&%k%S$N=hM}$G;H$o$l$k0l;~JQ?t!#(B
+% \begin{macrocode}
+\let\pxrr@all@input\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$BJd=u<jB3(B}
+%
+% \subsubsection{$B;(B?$JDj5A(B}
+%
+% \begin{macro}{\ifpxrr@ok}
+% $BHFMQ%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@ok
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@cnta}
+% $BHFMQ$N@0?t%l%8%9%?!#(B
+% \begin{macrocode}
+\newcount\pxrr@cnta
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@cntr}
+% $B7k2L$r3JG<$9$k@0?t%l%8%9%?!#(B
+% \begin{macrocode}
+\newcount\pxrr@cntr
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@dima}
+% $BHFMQ$N@#K!%l%8%9%?!#(B
+% \begin{macrocode}
+\newdimen\pxrr@dima
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@boxa}
+% \begin{macro}{\pxrr@boxb}
+% $BHFMQ$N%\%C%/%9%l%8%9%?!#(B
+% \begin{macrocode}
+\newbox\pxrr@boxa
+\newbox\pxrr@boxb
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@boxr}
+% $B7k2L$r3JG<$9$k%\%C%/%9%l%8%9%?!#(B
+% \begin{macrocode}
+\newbox\pxrr@boxr
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@token}
+% |\futurelet| $BMQ$N0l;~JQ?t!#(B
+% \Note if-$B%H!<%/%s$J$I$N!H4m81!I$J%H!<%/%s$K$J$j$&$k$N$G;H$$2s$5$J$$!#(B
+% \begin{macrocode}
+\let\pxrr@token\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@zero}
+% $B@0?tDj?t$N%<%m!#(B
+% |\z@| $B$H0[$J$j!"!VC10LIU@#K!!W$N78?t$H$7$F;HMQ2DG=!#(B
+% \begin{macrocode}
+\chardef\pxrr@zero=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@zeropt}
+% $B!V(B|0pt|$B!W$H$$$&J8;zNs!#(B
+% $B@#K!CM%^%/%m$X$NBeF~$KMQ$$$k!#(B
+% \begin{macrocode}
+\def\pxrr@zeropt{0pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@hfilx}
+% |\pxrr@hfilx{|\jmeta{$B<B?t(B}|}|\Means
+% $B!V(B\jmeta{$B<B?t(B}\texttt{fil}$B!W$N%0%k!=$rCV$/!#(B
+% \begin{macrocode}
+\def\pxrr@hfilx#1{%
+ \hskip\z@\@plus #1fil\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@res}
+% $B7k2L$r3JG<$9$k%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@res\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ifx}
+% |\pxrr@ifx{|\jmeta{$B0z?t(B}|}|\jmeta{$B??(B}|}{|\jmeta{$B56(B}|}|\Means
+% |\ifx|\jmeta{$B0z?t(B} $B$r9T$&%F%9%H!#(B
+% \begin{macrocode}
+\def\pxrr@ifx#1{%
+ \ifx#1\expandafter\@firstoftwo
+ \else\expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@cond}
+% |\pxrr@cond\ifXXX...\fi{|\jmeta{$B??(B}|}{|\jmeta{$B56(B}|}|\Means
+% $B0lHL$N(B{\TeX}$B$N(Bif$BJ8(B |\ifXXX...| $B$r9T$&%F%9%H!#(B
+% \Note |\fi| $B$rIU$1$F$$$k$N$O!"(Bif-$BIT6Q9U$rHr$1$k$?$a!#(B
+% \begin{macrocode}
+\@gobbletwo\if\if \def\pxrr@cond#1\fi{%
+ #1\expandafter\@firstoftwo
+ \else\expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@cslet}
+% \begin{macro}{\pxrr@letcs}
+% \begin{macro}{\pxrr@csletcs}
+% |\pxrr@cslet{NAMEa}\CSb|\Means
+% |\NAMEa| $B$K(B |\CSb| $B$r(B |\let| $B$9$k!#(B
+%
+% |\pxrr@letcs\CSa{NAMEb}|\Means
+% |\CSa| $B$K(B |\NAMEb| $B$r(B |\let| $B$9$k!#(B
+%
+% |\pxrr@csletcs{NAMEa}{NAMEb}|\Means
+% |\NAMEa| $B$K(B |\NAMEb| $B$r(B |\let| $B$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@cslet#1{%
+ \expandafter\let\csname#1\endcsname
+}
+\def\pxrr@letcs#1#2{%
+ \expandafter\let\expandafter#1\csname#2\endcsname
+}
+\def\pxrr@csletcs#1#2{%
+ \expandafter\let\csname#1\expandafter\endcsname
+ \csname#2\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@setok}
+% |\pxrr@setok{|\jmeta{$B%F%9%H(B}|}|\Means
+% $B%F%9%H$N7k2L$r(B |\ifpxrr@ok| $B$KJV$9!#(B
+% \begin{macrocode}
+\def\pxrr@setok#1{%
+ #1{\pxrr@oktrue}{\pxrr@okfalse}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pxrr@appto}
+% |\pxrr@appto\CS{|\jmeta{$B%F%-%9%H(B}|}|\Means
+% $BL50z?t%^%/%m$NCV49%F%-%9%H$KDI2C$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@appto#1#2{%
+ \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@nil}
+% \begin{macro}{\pxrr@end}
+% $B%f%K!<%/%H!<%/%s!#(B
+% \begin{macrocode}
+\def\pxrr@nil{\noexpand\pxrr@nil}
+\def\pxrr@end{\noexpand\pxrr@end}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@without@macro@trace}
+% |\pxrr@without@macro@trace{|\jmeta{$B%F%-%9%H(B}|}|\Means
+% $B%^%/%mE83+$N%H%l!<%9$rL58z$K$7$?>uBV$G(B\jmeta{$B%F%-%9%H(B}$B$r<B9T$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@without@macro@trace#1{%
+ \chardef\pxrr@tracingmacros@save=\tracingmacros
+ \tracingmacros\z@
+ #1%
+ \tracingmacros\pxrr@tracingmacros@save
+}
+\chardef\pxrr@tracingmacros@save=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@hbox}
+% \begin{macro}{\pxrr@hbox@to}
+% color $B%Q%C%1!<%8BP1~$N(B |\hbox| $B$H(B |\hb@xt@|$B!J(B= |\hbox| |to|$B!K!#(B
+% \begin{macrocode}
+\def\pxrr@hbox#1{%
+ \hbox{%
+ \color@begingroup
+ #1%
+ \color@endgroup
+ }%
+}
+\def\pxrr@hbox@to#1#{%
+ \pxrr@hbox@to@a{#1}%
+}
+\def\pxrr@hbox@to@a#1#2{%
+ \hbox to#1{%
+ \color@begingroup
+ #2%
+ \color@endgroup
+ }%
+}
+% \end{macrocode}
+% color $B%Q%C%1!<%8IT;HMQ$N>l9g$O!"(B
+% $BK\Mh$N(B |\hbox| $B$H(B |\hb@xt@| $B$KLa$7$F$*$/!#(B
+% $B$3$l$HF14|$7$F(B |\pxrr@takeout@any@protr| $B$NF0:n$bJQ99$9$k!#(B
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ifx\color@begingroup\relax
+ \ifx\color@endgroup\relax
+ \let\pxrr@hbox\hbox
+ \let\pxrr@hbox@to\hb@xt@
+ \let\pxrr@takeout@any@protr\pxrr@takeout@any@protr@nocolor
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{$B?tCM7W;;(B}
+%
+% \begin{macro}{\pxrr@invscale}
+% |\pxrr@invscale{|\jmeta{$B@#K!%l%8%9%?(B}|}{|\jmeta{$B<B?t(B}|}|\Means
+% $B8=:_$N(B\jmeta{$B@#K!%l%8%9%?(B}$B$NCM$r(B\jmeta{$B<B?t(B}$B$G(B
+% $B=|;;$7$?CM$K99?7$9$k!#(B
+% $B$9$J$o$A!"(B\jmeta{$B@#K!%l%8%9%?(B}|=|\jmeta{$B<B?t(B}^^A
+% \jmeta{$B@#K!%l%8%9%?(B}$B$N5U$N1i;;$r9T$&!#(B
+% \begin{macrocode}
+\mathchardef\pxrr@invscale@ca=259
+\def\pxrr@invscale#1#2{%
+ \begingroup
+ \@tempdima=#1\relax
+ \@tempdimb#2\p@\relax
+ \@tempcnta\@tempdima
+ \multiply\@tempcnta\@cclvi
+ \divide\@tempcnta\@tempdimb
+ \multiply\@tempcnta\@cclvi
+ \@tempcntb\p@
+ \divide\@tempcntb\@tempdimb
+ \advance\@tempcnta-\@tempcntb
+ \advance\@tempcnta-\tw@
+ \@tempdimb\@tempcnta\@ne
+ \advance\@tempcnta\@tempcntb
+ \advance\@tempcnta\@tempcntb
+ \advance\@tempcnta\pxrr@invscale@ca
+ \@tempdimc\@tempcnta\@ne
+ \@whiledim\@tempdimb<\@tempdimc\do{%
+ \@tempcntb\@tempdimb
+ \advance\@tempcntb\@tempdimc
+ \advance\@tempcntb\@ne
+ \divide\@tempcntb\tw@
+ \ifdim #2\@tempcntb>\@tempdima
+ \advance\@tempcntb\m@ne
+ \@tempdimc=\@tempcntb\@ne
+ \else
+ \@tempdimb=\@tempcntb\@ne
+ \fi}%
+ \xdef\pxrr@gtempa{\the\@tempdimb}%
+ \endgroup
+ #1=\pxrr@gtempa\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@interpolate}
+% |\pxrr@interpolate{|\jmeta{$BF~NOC10L(B}|}|\pad^^A
+% |{|\jmeta{$B=PNOC10L(B}|}|\pad^^A
+% |{|\jmeta{$B@#K!%l%8%9%?(B}|}|\pad^^A
+% |{(|$\mathrm{X}_1$|,|$\mathrm{Y}_1$|)|\pad^^A
+% |(|$\mathrm{X}_2$|,|$\mathrm{Y}_2$|)|$\cdots$\pad^^A
+% |(|$\mathrm{X}_n$|,|$\mathrm{Y}_n$|)}|\Means
+% $B@~7AJd4V$r9T$&!#(B
+% $B$9$J$o$A!"L@<(CM(B
+% \[
+% f(0\,\mathrm{pt}) = 0\,\mathrm{pt},\
+% f(\mathrm{X}_1\,\mathrm{iu})=\mathrm{Y}_1\,\mathrm{ou},\
+% \ldots,\
+% f(\mathrm{X}_n\,\mathrm{iu})=\mathrm{Y}_n\,\mathrm{ou}
+% \]
+% $B!J$?$@$7(B\
+% $(0,\mathrm{pt}< \mathrm{X}_1\,\mathrm{iu} < \cdots
+% < \mathrm{X}_n\,\mathrm{iu})$$B!((B
+% $B$3$3$G(B $\mathrm{iu}$ $B$O(B\jmeta{$BF~NOC10L(B}$B!"(B
+% $\mathrm{ou}$ $B$O(B\jmeta{$B=PNOC10L(B}$B$K;XDj$5$l$?$b$N!K(B
+% $B$r@~7AJd4V$7$FDj5A$5$l$k4X?t(B $f(\cdot)$ $B$K$D$$$F!"(B
+% $f(\mbox{\jmeta{$B@#K!(B}})$ $B$NCM$r(B\jmeta{$B@#K!%l%8%9%?(B}$B$K(B
+% $BBeF~$9$k!#(B
+% \Note $[0\,\mathrm{pt}, \mathrm{X}_n\,\mathrm{iu}]$ $B$NHO0O30$G$O(B
+% $BN>C<$N(B2$BE@$K$h$k30A^$r9T$&!#(B
+% \begin{macrocode}
+\def\pxrr@interpolate#1#2#3#4#5{%
+ \edef\pxrr@tempa{#1}%
+ \edef\pxrr@tempb{#2}%
+ \def\pxrr@tempd{#3}%
+ \setlength{\@tempdima}{#4}%
+ \edef\pxrr@tempc{(0,0)#5(*,*)}%
+ \expandafter\pxrr@interpolate@a\pxrr@tempc\@nil
+}
+\def\pxrr@interpolate@a(#1,#2)(#3,#4)(#5,#6){%
+ \if*#5%
+ \def\pxrr@tempc{\pxrr@interpolate@b{#1}{#2}{#3}{#4}}%
+ \else\ifdim\@tempdima<#3\pxrr@tempa
+ \def\pxrr@tempc{\pxrr@interpolate@b{#1}{#2}{#3}{#4}}%
+ \else
+ \def\pxrr@tempc{\pxrr@interpolate@a(#3,#4)(#5,#6)}%
+ \fi\fi
+ \pxrr@tempc
+}
+\def\pxrr@interpolate@b#1#2#3#4#5\@nil{%
+ \@tempdimb=-#1\pxrr@tempa
+ \advance\@tempdima\@tempdimb
+ \advance\@tempdimb#3\pxrr@tempa
+ \edef\pxrr@tempc{\strip@pt\@tempdimb}%
+ \pxrr@invscale\@tempdima\pxrr@tempc
+ \edef\pxrr@tempc{\strip@pt\@tempdima}%
+ \@tempdima=#4\pxrr@tempb
+ \@tempdimb=#2\pxrr@tempb
+ \advance\@tempdima-\@tempdimb
+ \@tempdima=\pxrr@tempc\@tempdima
+ \advance\@tempdima\@tempdimb
+ \pxrr@tempd=\@tempdima
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B%j%9%HJ,2r(B}
+%
+% \begin{macro}{\pxrr@decompose}
+% |\pxrr@decompose{|\jmeta{$BMWAG(B1}$\cdots$\jmeta{$BMWAG(Bn}|}|\Means
+% $B$3$3$G3F(B\jmeta{$BMWAG(B}$B$OC10l%H!<%/%s$^$?$O%0%k!<%W(B
+% $B!J(B|{...}| $B$G0O$^$l$?$b$N!K$H$9$k!#(B
+% $B$3$N>l9g!"(B|\pxrr@res| $B$r0J2<$N%H!<%/%sNs$KDj5A$9$k!#(B
+% \begin{quote}
+% |\pxrr@pre{|\jmeta{$BMWAG(B1}|}\pxrr@inter{|\jmeta{$BMWAG(B2}|}|$\cdots$\\
+% |\pxrr@inter{|\jmeta{$BMWAG(Bn}|}\pxrr@post|
+% \end{quote}
+% $B$=$7$F!"(B|\pxrr@cntr| $B$r(B n $B$K@_Dj$9$k!#(B
+% \Note
+% \jmeta{$BMWAG(B}$B$K4^$^$l$k%0%k!<%T%s%0$O40A4$KJ]B8$5$l$k(B
+% $B!J:G30$N(B |{...}| $B$,30$l$?$j$7$J$$!K!#(B
+% \begin{macrocode}
+\def\pxrr@decompose#1{%
+ \let\pxrr@res\@empty
+ \pxrr@cntr=\z@
+ \pxrr@decompose@loopa#1\pxrr@end
+}
+\def\pxrr@decompose@loopa{%
+ \futurelet\pxrr@token\pxrr@decompose@loopb
+}
+\def\pxrr@decompose@loopb{%
+ \pxrr@ifx{\pxrr@token\pxrr@end}{%
+ \pxrr@appto\pxrr@res{\pxrr@post}%
+ }{%
+ \pxrr@setok{\pxrr@ifx{\pxrr@token\bgroup}}%
+ \pxrr@decompose@loopc
+ }%
+}
+\def\pxrr@decompose@loopc#1{%
+ \ifx\pxrr@res\@empty
+ \def\pxrr@res{\pxrr@pre}%
+ \else
+ \pxrr@appto\pxrr@res{\pxrr@inter}%
+ \fi
+ \ifpxrr@ok
+ \pxrr@appto\pxrr@res{{{#1}}}%
+ \else
+ \pxrr@appto\pxrr@res{{#1}}%
+ \fi
+ \advance\pxrr@cntr\@ne
+ \pxrr@decompose@loopa
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@decompbar}
+% |\pxrr@decompbar{|\jmeta{$BMWAG(B1}\texttt{\vb}$\cdots$^^A
+% $\cdots$\texttt{\vb}\jmeta{$BMWAG(Bn}|}|\Means
+% $B$?$@$7!"3F(B\jmeta{$BMWAG(B}$B$O%0%k!<%T%s%0$N30$N(B \texttt{\vb} $B$r(B
+% $B4^$^$J$$$H$9$k!#(B
+% $BF~NO$N7A<0$H(B\jmeta{$BMWAG(B}$B$N9=@.>r7o$,0[$J$k$3$H$r=|$$$F!"(B
+% |\pxrr@decompose| $B$HF1$8F0:n$r$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@decompbar#1{%
+ \let\pxrr@res\@empty
+ \pxrr@cntr=\z@
+ \pxrr@decompbar@loopa\pxrr@nil#1|\pxrr@end|%
+}
+\def\pxrr@decompbar@loopa#1|{%
+ \expandafter\pxrr@decompbar@loopb\expandafter{\@gobble#1}%
+}
+\def\pxrr@decompbar@loopb#1{%
+ \pxrr@decompbar@loopc#1\relax\pxrr@nil{#1}%
+}
+\def\pxrr@decompbar@loopc#1#2\pxrr@nil#3{%
+ \pxrr@ifx{#1\pxrr@end}{%
+ \pxrr@appto\pxrr@res{\pxrr@post}%
+ }{%
+ \ifx\pxrr@res\@empty
+ \def\pxrr@res{\pxrr@pre}%
+ \else
+ \pxrr@appto\pxrr@res{\pxrr@inter}%
+ \fi
+ \pxrr@appto\pxrr@res{{#3}}%
+ \advance\pxrr@cntr\@ne
+ \pxrr@decompbar@loopa\pxrr@nil
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@zip@list}
+% |\pxrr@zip@list\CSa\CSb|\Means
+% |\CSa| $B$H(B |\CSb| $B$,0J2<$N$h$&$KE83+$5$l$k%^%/%m$H$9$k!'(B
+% \begin{quote}\small
+% |\CSa| = |\pxrr@pre{|\jmeta{X1}|}\pxrr@inter{|\jmeta{X2}|}|^^A
+% $\cdots$|\pxrr@inter{|\jmeta{Xn}|}\pxrr@post|\\
+% |\CSb| = |\pxrr@pre{|\jmeta{Y1}|}\pxrr@inter{|\jmeta{Y2}|}|^^A
+% $\cdots$|\pxrr@inter{|\jmeta{Yn}|}\pxrr@post|
+% \end{quote}
+% $B$3$NL?Na$O(B |\pxrr@res| $B$r0J2<$NFbMF$KDj5A$9$k!#(B
+% \begin{quote}\small
+% |\pxrr@pre{|\jmeta{X1}|}{|\jmeta{Y1}|}|^^A
+% |\pxrr@inter{|\jmeta{X2}|}{|\jmeta{Y2}|}|^^A
+% $\cdots$\\
+% |\pxrr@inter{|\jmeta{Xn}|}{|\jmeta{Yn}|}|^^A
+% |\pxrr@post|
+% \end{quote}
+% \begin{macrocode}
+\def\pxrr@zip@list#1#2{%
+ \let\pxrr@res\@empty
+ \let\pxrr@post\relax
+ \let\pxrr@tempa#1\pxrr@appto\pxrr@tempa{{}}%
+ \let\pxrr@tempb#2\pxrr@appto\pxrr@tempb{{}}%
+ \pxrr@zip@list@loopa
+}
+\def\pxrr@zip@list@loopa{%
+ \expandafter\pxrr@zip@list@loopb\pxrr@tempa\pxrr@end
+}
+\def\pxrr@zip@list@loopb#1#2#3\pxrr@end{%
+ \pxrr@ifx{#1\relax}{%
+ \pxrr@zip@list@exit
+ }{%
+ \pxrr@appto\pxrr@res{#1{#2}}%
+ \def\pxrr@tempa{#3}%
+ \expandafter\pxrr@zip@list@loopc\pxrr@tempb\pxrr@end
+ }%
+}
+\def\pxrr@zip@list@loopc#1#2#3\pxrr@end{%
+ \pxrr@ifx{#1\relax}{%
+ \pxrr@interror{zip}%
+ \pxrr@appto\pxrr@res{{}}%
+ \pxrr@zip@list@exit
+ }{%
+ \pxrr@appto\pxrr@res{{#2}}%
+ \def\pxrr@tempb{#3}%
+ \pxrr@zip@list@loopa
+ }%
+}
+\def\pxrr@zip@list@exit{%
+ \pxrr@appto\pxrr@res{\pxrr@post}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@tzip@list}
+% |\pxrr@tzip@list\CSa\CSb\CSc|\Means
+% |\CSa|$B!"(B|\CSb|$B!"(B|\CSc| $B$,0J2<$N$h$&$KE83+$5$l$k%^%/%m$H$9$k!'(B
+% \begin{quote}\small
+% |\CSa| = |\pxrr@pre{|\jmeta{X1}|}\pxrr@inter{|\jmeta{X2}|}|^^A
+% $\cdots$|\pxrr@inter{|\jmeta{Xn}|}\pxrr@post|\\
+% |\CSb| = |\pxrr@pre{|\jmeta{Y1}|}\pxrr@inter{|\jmeta{Y2}|}|^^A
+% $\cdots$|\pxrr@inter{|\jmeta{Yn}|}\pxrr@post|\\
+% |\CSc| = |\pxrr@pre{|\jmeta{Z1}|}\pxrr@inter{|\jmeta{Z2}|}|^^A
+% $\cdots$|\pxrr@inter{|\jmeta{Zn}|}\pxrr@post|
+% \end{quote}
+% $B$3$NL?Na$O(B |\pxrr@res| $B$r0J2<$NFbMF$KDj5A$9$k!#(B
+% \begin{quote}\small
+% |\pxrr@pre{|\jmeta{X1}|}{|\jmeta{Y1}|}{|\jmeta{Z1}|}|^^A
+% |\pxrr@inter{|\jmeta{X2}|}{|\jmeta{Y2}|}{|\jmeta{Z2}|}|^^A
+% $\cdots$\\
+% |\pxrr@inter{|\jmeta{Xn}|}{|\jmeta{Yn}|}{|\jmeta{Zn}|}|^^A
+% |\pxrr@post|
+% \end{quote}
+% \begin{macrocode}
+\def\pxrr@tzip@list#1#2#3{%
+ \let\pxrr@res\@empty
+ \let\pxrr@post\relax
+ \let\pxrr@tempa#1\pxrr@appto\pxrr@tempa{{}}%
+ \let\pxrr@tempb#2\pxrr@appto\pxrr@tempb{{}}%
+ \let\pxrr@tempc#3\pxrr@appto\pxrr@tempc{{}}%
+ \pxrr@tzip@list@loopa
+}
+\def\pxrr@tzip@list@loopa{%
+ \expandafter\pxrr@tzip@list@loopb\pxrr@tempa\pxrr@end
+}
+\def\pxrr@tzip@list@loopb#1#2#3\pxrr@end{%
+ \pxrr@ifx{#1\relax}{%
+ \pxrr@tzip@list@exit
+ }{%
+ \pxrr@appto\pxrr@res{#1{#2}}%
+ \def\pxrr@tempa{#3}%
+ \expandafter\pxrr@tzip@list@loopc\pxrr@tempb\pxrr@end
+ }%
+}
+\def\pxrr@tzip@list@loopc#1#2#3\pxrr@end{%
+ \pxrr@ifx{#1\relax}{%
+ \pxrr@interror{tzip}%
+ \pxrr@appto\pxrr@res{{}}%
+ \pxrr@tzip@list@exit
+ }{%
+ \pxrr@appto\pxrr@res{{#2}}%
+ \def\pxrr@tempb{#3}%
+ \expandafter\pxrr@tzip@list@loopd\pxrr@tempc\pxrr@end
+ }%
+}
+\def\pxrr@tzip@list@loopd#1#2#3\pxrr@end{%
+ \pxrr@ifx{#1\relax}{%
+ \pxrr@interror{tzip}%
+ \pxrr@appto\pxrr@res{{}}%
+ \pxrr@tzip@list@exit
+ }{%
+ \pxrr@appto\pxrr@res{{#2}}%
+ \def\pxrr@tempc{#3}%
+ \pxrr@tzip@list@loopa
+ }%
+}
+\def\pxrr@tzip@list@exit{%
+ \pxrr@appto\pxrr@res{\pxrr@post}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@concat@list}
+% |\pxrr@concat@list\CS|\Means
+% $B%j%9%H$NMWAG$rO"7k$9$k!#(B
+% $B$9$J$o$A!"(B|\CS| $B$,(B
+% \begin{quote}\small
+% |\CSa| = |\pxrr@pre{|\jmeta{X1}|}\pxrr@inter{|\jmeta{X2}|}|^^A
+% $\cdots$|\pxrr@inter{|\jmeta{Xn}|}\pxrr@post|
+% \end{quote}
+% $B$N;~$K!"(B|\pxrr@res| $B$r0J2<$NFbMF$KDj5A$9$k!#(B
+% \begin{quote}\small
+% \jmeta{X1}\jmeta{X2}$\cdots$\jmeta{Xn}
+% \end{quote}
+% \begin{macrocode}
+\def\pxrr@concat@list#1{%
+ \let\pxrr@res\@empty
+ \def\pxrr@pre##1{%
+ \pxrr@appto\pxrr@res{##1}%
+ }%
+ \let\pxrr@inter\pxrr@pre
+ \let\pxrr@post\relax
+ #1%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@unite@group}
+% |\pxrr@unite@group\CS|\Means
+% $B%j%9%H$NMWAG$rO"7k$7$F(B1$BMWAG$N%j%9%H$KAH$_D>$9!#(B
+% $B$9$J$o$A!"(B|\CS| $B$,(B
+% \begin{quote}\small
+% |\CS| = |\pxrr@pre{|\jmeta{X1}|}\pxrr@inter{|\jmeta{X2}|}|^^A
+% $\cdots$|\pxrr@inter{|\jmeta{Xn}|}\pxrr@post|
+% \end{quote}
+% $B$N;~$K!"(B|\CS| $B$r0J2<$NFbMF$GCV$-49$($k!#(B
+% \begin{quote}\small
+% |\pxrr@pre{|\jmeta{X1}\jmeta{X2}$\cdots$\jmeta{Xn}|}\pxrr@post|
+% \end{quote}
+% \begin{macrocode}
+\def\pxrr@unite@group#1{%
+ \expandafter\pxrr@concat@list\expandafter{#1}%
+ \expandafter\pxrr@unite@group@a\pxrr@res\pxrr@end#1%
+}
+\def\pxrr@unite@group@a#1\pxrr@end#2{%
+ \def#2{\pxrr@pre{#1}\pxrr@post}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@zip@single}
+% |\pxrr@zip@single\CSa\CSb|\Means
+% \begin{quote}\small
+% |\CSa| = \jmeta{X}; |\CSb| = \jmeta{Y}
+% \end{quote}
+% $B$N;~$K!"(B|\pxrr@res| $B$r0J2<$NFbMF$KDj5A$9$k!#(B
+% \begin{quote}\small
+% |\pxrr@pre{|\jmeta{X}|}{|\jmeta{Y}|}\pxrr@post|
+% \end{quote}
+% \begin{macrocode}
+\def\pxrr@zip@single#1#2{%
+ \expandafter\pxrr@zip@single@a\expandafter#1#2\pxrr@end
+}
+\def\pxrr@zip@single@a#1{%
+ \expandafter\pxrr@zip@single@b#1\pxrr@end
+}
+\def\pxrr@zip@single@b#1\pxrr@end#2\pxrr@end{%
+ \def\pxrr@res{\pxrr@pre{#1}{#2}\pxrr@post}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@tzip@single}
+% |\pxrr@tzip@single\CSa\CSb\CSc|\Means
+% \begin{quote}\small
+% |\CSa| = \jmeta{X}; |\CSb| = \jmeta{Y}; |\CSc| = \jmeta{Z}
+% \end{quote}
+% $B$N;~$K!"(B|\pxrr@res| $B$r0J2<$NFbMF$KDj5A$9$k!#(B
+% \begin{quote}\small
+% |\pxrr@pre{|\jmeta{X}|}{|\jmeta{Y}|}{|\jmeta{Z}|}\pxrr@post|
+% \end{quote}
+% \begin{macrocode}
+\def\pxrr@tzip@single#1#2#3{%
+ \expandafter\pxrr@tzip@single@a\expandafter#1\expandafter#2#3\pxrr@end
+}
+\def\pxrr@tzip@single@a#1#2{%
+ \expandafter\pxrr@tzip@single@b\expandafter#1#2\pxrr@end
+}
+\def\pxrr@tzip@single@b#1{%
+ \expandafter\pxrr@tzip@single@c#1\pxrr@end
+}
+\def\pxrr@tzip@single@c#1\pxrr@end#2\pxrr@end#3\pxrr@end{%
+ \def\pxrr@res{\pxrr@pre{#1}{#2}{#3}\pxrr@post}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%(%s%8%s0MB8=hM}(B}
+%
+% $B$3$N>.@a$N%^%/%mFb$G;H$o$l$kJQ?t!#(B
+% \begin{macrocode}
+\let\pxrr@x@tempa\@empty
+\let\pxrr@x@tempb\@empty
+\let\pxrr@x@gtempa\@empty
+\newif\ifpxrr@x@swa
+% \end{macrocode}
+%
+% \begin{macro}{\pxrr@ifprimitive}
+% |\pxrr@ifprimitive\CS{|\jmeta{$B??(B}|}{|\jmeta{$B56(B}|}|\Means
+% |\CS| $B$N8=:_$NDj5A$,F1L>$N%W%j%_%F%#%V$G$"$k$+$r%F%9%H$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@ifprimitive#1{%
+ \edef\pxrr@x@tempa{\string#1}%
+ \edef\pxrr@x@tempb{\meaning#1}%
+ \ifx\pxrr@x@tempa\pxrr@x@tempb \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@in@ptex}
+% $B%(%s%8%s$,(B{\pTeX}$B7O!J(B{\upTeX}$B7O$r4^$`!K$G$"$k$+!#(B
+% |\kansuji| $B$N%W%j%_%F%#%V%F%9%H$GH=Dj$9$k!#(B
+% \begin{macrocode}
+\pxrr@ifprimitive\kansuji{%
+ \pxrr@csletcs{ifpxrr@in@ptex}{iftrue}%
+}{%
+ \pxrr@csletcs{ifpxrr@in@ptex}{iffalse}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@in@uptex}
+% $B%(%s%8%s$,(B{\upTeX}$B7O$G$"$k$+!#(B
+% |\enablecjktoken| $B$N%W%j%_%F%#%V%F%9%H$GH=Dj$9$k!#(B
+% \begin{macrocode}
+\pxrr@ifprimitive\enablecjktoken{%
+ \pxrr@csletcs{ifpxrr@in@uptex}{iftrue}%
+}{%
+ \pxrr@csletcs{ifpxrr@in@uptex}{iffalse}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@in@xetex}
+% $B%(%s%8%s$,(B{\XeTeX}$B7O$G$"$k$+!#(B
+% |\XeTeXrevision| $B$N%W%j%_%F%#%V%F%9%H$GH=Dj$9$k!#(B
+% \begin{macrocode}
+\pxrr@ifprimitive\XeTeXrevision{%
+ \pxrr@csletcs{ifpxrr@in@xetex}{iftrue}%
+}{%
+ \pxrr@csletcs{ifpxrr@in@xetex}{iffalse}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@in@xecjk}
+% \PKN{xeCJK}$B%Q%C%1!<%8$,;HMQ$5$l$F$$$k$+!#(B
+% \begin{macrocode}
+\@ifpackageloaded{xeCJK}{%
+ \pxrr@csletcs{ifpxrr@in@xecjk}{iftrue}%
+}{%
+ \pxrr@csletcs{ifpxrr@in@xecjk}{iffalse}%
+% \end{macrocode}
+% $B$3$3$GL$FI9~$G$+$D%W%j%"%s%V%kKvHx$GFI$_9~$^$l$F$$$k>l9g$O7Y9p$9$k!#(B
+% \begin{macrocode}
+ \AtBeginDocument{%
+ \@ifpackageloaded{xeCJK}{%
+ \pxrr@warn@load@order{xeCJK}%
+ }{}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@in@luatex}
+% $B%(%s%8%s$,(B{\LuaTeX}$B7O$G$"$k$+!#(B
+% |\luatexrevision| $B$N%W%j%_%F%#%V%F%9%H$GH=Dj$9$k!#(B
+% \begin{macrocode}
+\pxrr@ifprimitive\luatexrevision{%
+ \pxrr@csletcs{ifpxrr@in@luatex}{iftrue}%
+}{%
+ \pxrr@csletcs{ifpxrr@in@luatex}{iffalse}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% {\LuaTeX}$B%(%s%8%s$N>l9g!"K\%Q%C%1!<%8MQ$N(BLua$B%b%8%e!<%k(B |pxrubtica|
+% $B$r:n@.$7$F$*$/!#(B
+% \begin{macrocode}
+\ifpxrr@in@luatex
+ \directlua{ pxrubrica = {} }
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\ifpxrr@in@luatexja}
+% \PKN{LuaTeX-ja}$B%Q%C%1!<%8$,;HMQ$5$l$F$$$k$+!#(B
+% \begin{macrocode}
+\@ifpackageloaded{luatexja-core}{%
+ \pxrr@csletcs{ifpxrr@in@luatexja}{iftrue}%
+}{%
+ \pxrr@csletcs{ifpxrr@in@luatexja}{iffalse}%
+ \AtBeginDocument{%
+ \@ifpackageloaded{luatexja-core}{%
+ \pxrr@warn@load@order{LuaTeX-ja}%
+ }{}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\ifpxrr@in@xetex
+\else\ifpxrr@in@luatex
+\else\ifpxrr@in@ptex
+\else
+ \pxrr@ifprimitive\pdftexrevision{%
+ \pxrr@warn{%
+ The engine in use seems to be pdfTeX,\MessageBreak
+ so safe mode is turned on%
+ }%
+ \AtEndOfPackage{%
+ \rubysafemode
+ }%
+ }
+\fi\fi\fi
+% \end{macrocode}
+%
+% \begin{macro}{\ifpxrr@in@unicode}
+% $B!VOBJ8!WFbIt%3!<%I$,(BUnicode$B$G$"$k$+!#(B
+% \begin{macrocode}
+\ifpxrr@in@xetex
+ \pxrr@csletcs{ifpxrr@in@unicode}{iftrue}%
+\else\ifpxrr@in@luatex
+ \pxrr@csletcs{ifpxrr@in@unicode}{iftrue}%
+\else\ifpxrr@in@uptex
+ \pxrr@csletcs{ifpxrr@in@unicode}{iftrue}%
+\else
+ \pxrr@csletcs{ifpxrr@in@unicode}{iffalse}%
+\fi\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@jc}
+% $BOBJ8$N!VJ#9g%3!<%I!W$rFbIt%3!<%I$KJQ49$9$k!JE83+2DG=!K!#(B
+% $B!VJ#9g%3!<%I!W$O(B
+% $B!V(B\jmeta{JIS$B%3!<%I(B16$B?J(B4$B7e(B}|:|\jmeta{Unicode\,16$B?J(B4$B7e(B}$B!W(B
+% $B$N7A<0!#(B
+% \begin{macrocode}
+\def\pxrr@jc#1{%
+ \pxrr@jc@a#1\pxrr@nil
+}
+\ifpxrr@in@unicode
+ \def\pxrr@jc@a#1:#2\pxrr@nil{%
+ "#2\space
+ }
+\else\ifpxrr@in@ptex
+ \def\pxrr@jc@a#1:#2\pxrr@nil{%
+ \jis"#1\space\space
+ }
+\else
+ \def\pxrr@jc@a#1:#2\pxrr@nil{%
+ `?\space
+ }
+\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@jchardef}
+% $BOBJ8MQ$N(B |\chardef|$B!#(B
+% \begin{macrocode}
+\ifpxrr@in@uptex
+ \let\pxrr@jchardef\kchardef
+\else
+ \let\pxrr@jchardef\chardef
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@if@in@tate}
+% |\pxrr@if@in@tate{|\jmeta{$B??(B}|}{|\jmeta{$B56(B}|}|\Means
+% $B=DAH$G$"$k$+!#(B
+% \begin{macrocode}
+\ifpxrr@in@ptex
+% \end{macrocode}
+% {p\TeX}$B7O$N>l9g!"(B|\iftdir| $B%W%j%_%F%#%V$rMxMQ$9$k!#(B
+% \Note |\iftdir| $B$,L$Dj5A$N$H$-$K(Bif$B$,IT6Q9U$K$J$k$N$rKI$0!#(B
+% \Note $BK\%Q%C%1!<%8$N=hM}$NHO0O$G$O!"=D?t<0AHJ}8~$O(B
+% $BC1$K!V=DAH$G$J$$!W$HH=Dj$9$k!#(B
+% $B!J(B|\ifmdir| $B$O?t<0AHJ}8~$rH=Dj$9$k%W%j%_%F%#%V!#!K(B
+% \begin{macrocode}
+ \begingroup \catcode`\|=0
+ \gdef\pxrr@if@in@tate{%
+ \pxrr@cond{\if
+ |iftdir|ifmdir F|else T|fi|else F|fi
+ T}\fi
+ }
+ \endgroup
+\else\ifpxrr@in@luatexja
+% \end{macrocode}
+% {\LuaTeX-ja}$BMxMQ$N>l9g!"(B|direction| $B%Q%i%a%?$rMxMQ$9$k!#(B
+% \Note $B=DAHBP1~!J(B|\ltj@curtfnt| $B$,Dj5A:Q!K$G$J$$8E$$(B{\LuaTeX-ja}$B$N(B
+% $B>l9g$O>o$K2#AH$H8+$J$9!#(B
+% \begin{macrocode}
+ \ifx\ltj@curtfnt\@undefined
+ \let\pxrr@if@in@tate\@secondoftwo
+ \else
+ \def\pxrr@if@in@tate{%
+ \pxrr@cond\ifnum\ltjgetparameter{direction}=\thr@@\fi
+ }
+ \fi
+\else
+% \end{macrocode}
+% $B$=$l0J30$O>o$K2#AH$H8+$J$9!#(B
+% \begin{macrocode}
+ \let\pxrr@if@in@tate\@secondoftwo
+\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@get@jchar@token}
+% |\pxrr@get@jchar@token\CS{|\jmeta{$B@0?t(B}|}|\Means
+% $BFbItJ8;z%3!<%I$,(B\jmeta{$B@0?t(B}$B$G$"$kOBJ8J8;z$N%H!<%/%s$rF@$k!#(B
+% \Note |.sty|$B%U%!%$%k$O40A4$K(BASCII$BJ8;z$@$1$K$9$kJ}?K$N$?$a!"(B
+% $BOBJ8J8;z$,I,MW$J>l9g$O$3$NJd=u%^%/%m$d(B |\pxrr@jchardef| $B$r(B
+% $BMxMQ$7$FJ#9g%3!<%ICM$+$i:n$j=P$9$3$H$K$J$k!#(B
+%
+% {\pTeX}$B7O$N>l9g!#(B|\kansuji| $B%H%j%C%/$rMxMQ$9$k!#(B
+% \begin{macrocode}
+\ifpxrr@in@ptex
+ \def\pxrr@get@jchar@token#1#2{%
+ \begingroup
+ \kansujichar\@ne=#2\relax
+ \xdef\pxrr@x@gtempa{\kansuji\@ne}%
+ \endgroup
+ \let#1\pxrr@x@gtempa
+ }
+% \end{macrocode}
+% Unicode$BBP1~(B{\TeX}$B$N>l9g!#(B|\lowercase| $B%H%j%C%/$rMxMQ$9$k!#(B
+% \begin{macrocode}
+\else\ifpxrr@in@unicode
+ \def\pxrr@get@jchar@token#1#2{%
+ \begingroup
+ \lccode`\?=#2\relax
+ \lowercase{\xdef\pxrr@x@gtempa{?}}%
+ \endgroup
+ \let#1\pxrr@x@gtempa
+ }
+% \end{macrocode}
+% $B$=$l0J30$G$O%@%_!<Dj5A!#(B
+% \begin{macrocode}
+\else
+ \def\pxrr@get@jchar@token#1#2{%
+ \def#1{?}%
+ }
+\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@zspace}
+% $BA43Q6uGrJ8;z!#(B
+% $BJ8;z$=$N$b$N$r%U%!%$%k$K4^$^$;$?$/$J$$$N$G(Bchardef$B$K$9$k!#(B
+% \begin{macrocode}
+\pxrr@jchardef\pxrr@zspace=\pxrr@jc{2121:3000}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@jghost@char}
+% $BOBJ8%4!<%9%H=hM}$KMxMQ$9$kJ8;z!#(B
+% $B;z7A$,6u$G$"$j!"$+$D0lHL$N4A;z$HF1$85sF0$r<($9I,MW$,$"$k!#(B
+% $B<B:]$N%4!<%9%H=hM}$G$O;zI}$rAj;&$9$k=hM}$rF~$l$k0Y!"(B
+% $B;zI}$,%<%m$G$"$kI,MW$O$J$$!#(B
+%
+% $B$[$H$s$I$N>l9g!"A43Q6uGrJ8;z$G9=$o$J$$$,!"A43Q6uGrJ8;z$,(B
+% $BJ8;z%?%$%W(B0$B$G$J$$(BJFM$B$,;H$o$l$F$$$k>l9g$OLdBj$K$J$k!#(B
+%
+% {\upTeX}$B$N>l9g!"!H3HD%Id9f6u4V!I$NJ8;z%3!<%I$r;H$&!#(B
+% $B$9$J$o$A!"J8;z%3!<%I(B |"113000| $B$NJ8;z$O(BDVI$B$G$OJ8;z%3!<%I(B |"3000| $B$H(B
+% $B07$o$l$k$,!"!H(BBMP$B30!I$K$"$k$?$aI,$:J8;z%?%$%W(B0$B$K$J$k!#(B
+% \begin{macrocode}
+\ifpxrr@in@uptex
+ \kchardef\pxrr@jghost@char="113000
+% \end{macrocode}
+% {\LuaTeX}-ja$B$N>l9g!#(B
+% $BJ8=q@hF,$G!HA43Q6uGrJ8;z$,;H$($k$+!I$r8!::$7$F!"<:GT$7$?>l9g$O(B
+% $B!VOBJ8$N(BU+00A0$B!W$rBe$o$j$KMxMQ$9$k$3$H$K$9$k!#(B
+% \begin{macrocode}
+\else\ifpxrr@in@luatexja
+ \let\pxrr@jghost@char\pxrr@zspace
+ \def\pxrr@jghost@check{%
+ \begingroup
+% \ltjsetparameter{jaxspmode={\pxrr@zspace,3}}%
+% \ltjsetparameter{xkanjiskip=\p@}%
+% \ltjsetparameter{autoxspacing=false}%
+ \setbox\z@\hbox{\char"3001\char"3000}%
+% \ltjsetparameter{autoxspacing=true}%
+ \setbox\tw@\hbox{\char"3001\inhibitglue\char"3000}%
+ \ifdim\wd\tw@=\wd\z@
+ \global\chardef\pxrr@jghost@char@="00A0
+ \gdef\pxrr@jghost@char{\ltjjachar\pxrr@jghost@char@}%
+ \fi
+ \endgroup
+ }
+ \AtBeginDocument{%
+ \pxrr@jghost@check
+ }
+% \end{macrocode}
+% $B$=$l0J30$N>l9g$O!J;EJ}$,L5$$$N$G!KA43Q6uGr$rMQ$$$k!#(B
+% \begin{macrocode}
+\else
+ \let\pxrr@jghost@char\pxrr@zspace
+\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@x@K}
+% $BE,Ev$J4A;z!J<B:]$O!R0l!S!K$N%H!<%/%s!#(B
+% \begin{macrocode}
+\pxrr@jchardef\pxrr@x@K=\pxrr@jc{306C:4E00}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@get@iiskip}
+% |\pxrr@get@iiskip\CS|\Means
+% $B8=:_$N<B8z$NOBJ84V6uGr$NNL$r<hF@$9$k!#(B
+%
+% {\pTeX}$B7O$N>l9g!#(B
+% \begin{macrocode}
+\ifpxrr@in@ptex
+ \def\pxrr@get@iiskip#1{%
+% \end{macrocode}
+% $B0J2<$G$O(B |\kanjiskip| $BA^F~$,M-8z$G$"$k$+$r8!::$7$F$$$k!#(B
+% \begin{macrocode}
+ \pxrr@x@swafalse
+ \begingroup
+ \inhibitxspcode\pxrr@x@K\thr@@
+ \kanjiskip\p@
+ \setbox\z@\hbox{\noautospacing\pxrr@x@K\pxrr@x@K}%
+ \setbox\tw@\hbox{\pxrr@x@K\pxrr@x@K}%
+ \ifdim\wd\tw@>\wd\z@
+ \aftergroup\pxrr@x@swatrue
+ \fi
+ \endgroup
+% \end{macrocode}
+% $B0J2<$G$O(B |\kanjiskip| $BA^F~$,M-8z$J$i$P(B |\kanjiskip| $B$NCM!"(B
+% $BL58z$J$i$P%<%m$rJV$9!#(B
+% \begin{macrocode}
+ \edef#1{%
+ \ifpxrr@x@swa \the\kanjiskip
+ \else \pxrr@zeropt
+ \fi
+ }%
+ }
+% \end{macrocode}
+%
+% \PKN{LuaTeX-ja}$B;HMQ$N>l9g!#(B
+% \begin{macrocode}
+\else\ifpxrr@in@luatexja
+ \def\pxrr@get@iiskip#1{%
+ \ifnum\ltjgetparameter{autospacing}=\@ne
+ \xdef\pxrr@x@gtempa{\ltjgetparameter{kanjiskip}}%
+ \ifdim\glueexpr\pxrr@x@gtempa=\maxdimen
+% \end{macrocode}
+% |kanjiskip|$B%Q%i%a%?$NCM$,(B |\maxdimen| $B$N>l9g!"(BJFM$B$N%Q%i%a%?$K(B
+% $B$h$jOB2$J84V6uGr$NNL$,7hDj$5$l$k!#(B
+% $B$3$NCM$rFI$_=P$98x<0$N%$%s%?%U%'!<%9$OB8:_$7$J$$$?$a!"(B
+% $B<B:]$NAHHG7k2L$+$i?dDj$9$k!#(B
+% $B!JCM$O(B |\pxrr@x@gtempa| $B$KJV$k!#!K(B
+% \begin{macrocode}
+ \pxrr@get@interchar@glue{\pxrr@x@K\pxrr@x@K}%
+ \ifdim\glueexpr\pxrr@x@gtempa=\maxdimen
+% \end{macrocode}
+% $B?dDj$,<:GT$7$?>l9g!#(B
+% $B7Y9p$r!J0lEY$@$1!K=P$7$?>e$G!"CM$r%<%m$H$7$F07$&!#(B
+% \begin{macrocode}
+ \pxrr@warn@unknown@iiskip
+ \global\let\pxrr@x@gtempa\pxrr@zeropt
+ \fi
+ \fi
+ \let#1\pxrr@x@gtempa
+ \else
+ \let#1\pxrr@zeropt
+ \fi
+ }
+% \end{macrocode}
+% $BOBJ84V6uGr$N?dDj$K<:GT$7$?>l9g$N7Y9p!#(B
+% \begin{macrocode}
+ \def\pxrr@warn@unknown@iiskip{%
+ \global\let\pxrr@warn@unknown@iiskip\relax
+ \pxrr@warn{Cannot find the kanjiskip value}%
+ }
+% \end{macrocode}
+% $B%F%-%9%H(B |#1| $B$rAHHG$7$??eJ?%\%C%/%9$NCf$K$"$k!"(B
+% $B!HJ8;z4V%0%k!<!I$NCM$r(B |\pxrr@g@tempa| $B$KJV$9!#(B
+% \begin{macrocode}
+ \def\pxrr@get@interchar@glue#1{%
+ \begingroup
+ \setbox\z@\hbox{#1}%
+% \end{macrocode}
+% Lua$B$NJd=u4X?t$O=jK>$NCM$r(B |\skip0| $B$KJV$9!#(B
+% $B<:GT;~$N8!=P$N$?$a!"$3$N%l%8%9%?$r(B |\maxdimen| $B$G=i4|2=$9$k!#(B
+% \begin{macrocode}
+ \skip\z@\maxdimen\relax
+ \directlua{%
+ pcall(pxrubrica._get_interchar_glue)
+ }%
+ \xdef\pxrr@x@gtempa{\the\skip\z@}%
+ \endgroup
+ }
+ \begingroup
+ \endlinechar=10 \directlua{%
+ local node, tex = node, tex
+ local id_glyph, id_glue = node.id("glyph"), node.id("glue")
+ local id_hlist = node.id("hlist")
+% \end{macrocode}
+% |_get_interchar_glue()| $B$O(B |\box0| $B$N!HJ8;z4V%0%k!<!I$NNL$r(B
+% $B<hF@$7!"(B|\skip0| $B$KBeF~$9$k!#(B
+% $B<B:]$K$O!"!V:G=i$N(B glyph $B%N!<%I$N8e$K$"$k:G=i$N(B glue $B%N!<%I$r(B
+% $B!HJ8;z4V%0%k!<!I$HH=CG$7!"$=$NNL$rFI$_=P$9!#(B
+% \begin{macrocode}
+ function pxrubrica._get_interchar_glue()
+ local c, n = false, tex.box[0].head
+ while n do
+% \end{macrocode}
+% \Note 2014$BG/:"$N(B{\LuaTeX-ja}$B$G$OJ8;z$NItJ,$,(Bhlist$B%N!<%I$K$J$C$F$$$k!#(B
+% \begin{macrocode}
+ if n.id == id_glyph or n.id == id_hlist then
+ c = true
+ elseif c and n.id == id_glue then
+% \end{macrocode}
+% $B$3$3$G$N(B |n| $B$,!HJ8;z4V%0%k!<!I$N%N!<%I$G$"$k!#(B
+% \Note 0.85$BHG0J9_$N(B{\LuaTeX}$B$G$O!"(Bglue$B%N!<%I$KD>@\CM!J(B|n.width| $BEy!K(B
+% $B$,F~$C$F$$$k!#(B
+% $B$=$l$h$j8E$$HG$G$O!"(B|glue_spec| $B%G!<%?$r2p$7$?%$%s%?%U%'!<%9$K(B
+% $B$J$C$F$$$k!#(B
+% \begin{macrocode}
+ if n.width then
+ tex.setglue(0, n.width, n.stretch, n.shrink,
+ n.stretch_order, n.shrink_order)
+ elseif n.spec then
+ tex.setskip(0, node.copy(n.spec))
+ end
+ break
+ end
+ n = n.next
+ end
+ end
+ }%
+ \endgroup%
+% \end{macrocode}
+%
+% $B$=$l0J30$N>l9g$O%<%m$H$9$k!#(B
+% \begin{macrocode}
+\else
+ \def\pxrr@get@iiskip#1{%
+ \let#1\pxrr@zeropt
+ }
+\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@get@iaiskip}
+% |\pxrr@get@iaiskip\CS|\Means
+% $B8=:_$N<B8z$NOB2$J84V6uGr$NNL$r<hF@$9$k!#(B
+%
+% {\pTeX}$B7O$N>l9g!#(B
+% \begin{macrocode}
+\ifpxrr@in@ptex
+ \def\pxrr@get@iaiskip#1{%
+ \pxrr@x@swafalse
+ \begingroup
+ \inhibitxspcode\pxrr@x@K\thr@@ \xspcode`X=\thr@@
+ \xkanjiskip\p@
+ \setbox\z@\hbox{\noautoxspacing\pxrr@x@K X}%
+ \setbox\tw@\hbox{\pxrr@x@K X}%
+ \ifdim\wd\tw@>\wd\z@
+ \aftergroup\pxrr@x@swatrue
+ \fi
+ \endgroup
+ \edef#1{%
+ \ifpxrr@x@swa \the\xkanjiskip
+ \else \pxrr@zeropt
+ \fi
+ }%
+ }
+% \end{macrocode}
+%
+% \PKN{LuaTeX-ja}$B;HMQ$N>l9g!#(B
+% $B=hM}$NN.$l$OOBJ84V6uGr$N>l9g$HF1$8!#(B
+% \begin{macrocode}
+\else\ifpxrr@in@luatexja
+ \def\pxrr@get@iaiskip#1{%
+ \ifnum\ltjgetparameter{autoxspacing}=\@ne
+ \xdef\pxrr@x@gtempa{\ltjgetparameter{xkanjiskip}}%
+ \ifdim\glueexpr\pxrr@x@gtempa=\maxdimen
+% \end{macrocode}
+% $BH=DjMQ$N%\%C%/%9$O2$J8!&OBJ8$NAH$H$9$k!#(B
+% \begin{macrocode}
+ \pxrr@get@interchar@glue{A\pxrr@x@K}%
+ \ifdim\glueexpr\pxrr@x@gtempa=\maxdimen
+ \pxrr@warn@unknown@iaiskip
+ \global\let\pxrr@x@gtempa\pxrr@zeropt
+ \fi
+ \fi
+ \let#1\pxrr@x@gtempa
+ \else
+ \let#1\pxrr@zeropt
+ \fi
+ }
+% \end{macrocode}
+% $BOB2$J84V6uGr$N?dDj$K<:GT$7$?>l9g$N7Y9p!#(B
+% \begin{macrocode}
+ \def\pxrr@warn@unknown@iaiskip{%
+ \global\let\pxrr@warn@unknown@iaiskip\relax
+ \pxrr@warn{Cannot find the xkanjiskip value}%
+ }
+% \end{macrocode}
+%
+% $B$=$l0J30$N>l9g$O<B:]$NAHHG7k2L$+$iH=CG$9$k!#(B
+% \begin{macrocode}
+\else
+ \def\pxrr@get@iaiskip#1{%
+ \begingroup
+ \setbox\z@\hbox{M\pxrr@x@K}%
+ \setbox\tw@\hbox{M\vrule\@width\z@\relax\pxrr@x@K}%
+ \@tempdima\wd\z@ \advance\@tempdima-\wd\tw@
+ \@tempdimb\@tempdima \divide\@tempdimb\thr@@
+ \xdef\pxrr@x@gtempa{\the\@tempdima\space minus \the\@tempdimb}%
+ \endgroup
+ \let#1=\pxrr@x@gtempa
+ }%
+\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@get@zwidth}
+% |\pxrr@get@zwidth\CS|\Means
+% $B8=:_$NOBJ8%U%)%s%H$NA43QI}$r<hF@$9$k!#(B
+%
+% {\pTeX}$B$N>l9g!"(B|1zw| $B$G$h$$!#(B
+% \begin{macrocode}
+\ifpxrr@in@ptex
+ \def\pxrr@get@zwidth#1{%
+ \@tempdima=1zw\relax
+ \edef#1{\the\@tempdima}%
+ }
+% \end{macrocode}
+%
+% |\zw| $B$,Dj5A$5$l$F$$$k>l9g$O(B |1\zw| $B$H$9$k!#(B
+% \begin{macrocode}
+\else\if\ifx\zw\@undefined T\else F\fi F% if defined
+ \def\pxrr@get@zwidth#1{%
+ \@tempdima=1\zw\relax
+ \edef#1{\the\@tempdima}%
+ }
+% \end{macrocode}
+%
+% |\jsZw| $B$,Dj5A$5$l$F$$$k>l9g$O(B |1\jsZw| $B$H$9$k!#(B
+% \begin{macrocode}
+\else\if\ifx\jsZw\@undefined T\else F\fi F% if defined
+ \def\pxrr@get@zwidth#1{%
+ \@tempdima=1\jsZw\relax
+ \edef#1{\the\@tempdima}%
+ }
+% \end{macrocode}
+%
+% $B$=$l0J30$G!"(B|\pxrr@x@K| $B$,M-8z$J>l9g$O<B:]$NAHHG7k2L$+$iH=CG$9$k!#(B
+% \begin{macrocode}
+\else\ifnum\pxrr@x@K>\@cclv
+ \def\pxrr@get@zwidth#1{%
+ \setbox\tw@\hbox{\pxrr@x@K}%
+ \@tempdima\wd\tw@
+ \ifdim\@tempdima>\z@\else \@tempdima\f@size\p@ \fi
+ \edef#1{\the\@tempdima}%
+ }
+% \end{macrocode}
+%
+% $B$=$l0J30$N>l9g$OMW5a%5%$%:$HEy$7$$$H$9$k!#(B
+% \begin{macrocode}
+\else
+ \def\pxrr@get@zwidth#1{%
+ \@tempdima\f@size\p@\relax
+ \edef#1{\the\@tempdima}%
+ }
+\fi\fi\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@get@prebreakpenalty}
+% |\pxrr@get@prebreakpenalty\CS{|\jmeta{$BJ8;z%3!<%I(B}|}|\Means
+% $BJ8;z$N8e6XB'%Z%J%k%F%#CM$r@0?t%l%8%9%?$KBeF~$9$k!#(B
+%
+% {\pTeX}$B$N>l9g!"(B|\prebreakpenalty| $B$r;H$&!#(B
+% \begin{macrocode}
+\ifpxrr@in@ptex
+ \def\pxrr@get@prebreakpenalty#1#2{%
+ #1=\prebreakpenalty#2\relax
+ }
+% \end{macrocode}
+%
+% \PKN{LuaTeX-ja}$B;HMQ;~$O!"(Bprebreakpenalty $B%W%m%Q%F%#$rFI$_=P$9!#(B
+% \begin{macrocode}
+\else\ifpxrr@in@luatexja
+ \def\pxrr@get@prebreakpenalty#1#2{%
+ #1=\ltjgetparameter{prebreakpenalty}{#2}\relax
+ }
+% \end{macrocode}
+%
+% $B$=$l0J30$N>l9g$O%<%m$H$7$F07$&!#(B
+% \begin{macrocode}
+\else
+ \def\pxrr@get@prebreakpenalty#1#2{%
+ #1=\z@
+ }
+\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@get@postbreakpenalty}
+% |\pxrr@get@postbreakpenalty\CS{|\jmeta{$BJ8;z%3!<%I(B}|}|\Means
+% $BJ8;z$NA06XB'%Z%J%k%F%#CM$r@0?t%l%8%9%?$KBeF~$9$k!#(B
+%
+% {\pTeX}$B$N>l9g!"(B|\postbreakpenalty| $B$r;H$&!#(B
+% \begin{macrocode}
+\ifpxrr@in@ptex
+ \def\pxrr@get@postbreakpenalty#1#2{%
+ #1=\postbreakpenalty#2\relax
+ }
+% \end{macrocode}
+%
+% \PKN{LuaTeX-ja}$B;HMQ;~$O!"(Bpostbreakpenalty $B%W%m%Q%F%#$rFI$_=P$9!#(B
+% \begin{macrocode}
+\else\ifpxrr@in@luatexja
+ \def\pxrr@get@postbreakpenalty#1#2{%
+ #1=\ltjgetparameter{postbreakpenalty}{#2}\relax
+ }
+% \end{macrocode}
+%
+% $B$=$l0J30$N>l9g$O%<%m$H$7$F07$&!#(B
+% \begin{macrocode}
+\else
+ \def\pxrr@get@postbreakpenalty#1#2{%
+ #1=\z@
+ }
+\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@check@punct@char}
+% |\pxrr@check@punct@char{|\jmeta{$BJ8;z%3!<%I(B}|}{|\jmeta{$BOBJ8%U%i%0(B}|}|\Means
+% $B;XDj$NJ8;z%3!<%I$NJ8;z$,!HLsJ*$G$"$k$+!I$rD4$Y$F!"(B
+% $B7k2L$r(B |\ifpxrr@ok| $B$KJV$9!#(B
+% \jmeta{$BOBJ8%U%i%0(B}$B$O!HBP>]$,(B{\pTeX}$B$NOBJ8$G$"$k!I>l9g$K(B1$B!"(B
+% $B$=$l0J30$O(B0$B!#(B
+%
+% {\pTeX}$B$N>l9g!"2$J8$J$i(B |\xspcode|$B!"OBJ8$J$i(B |\inhibitxspcode| $B$N(B
+% $BCM$r8+$F!"$=$l$,(B3$B0J30$J$iLsJ*$H8+$J$9!#(B
+% \begin{macrocode}
+\ifpxrr@in@ptex
+ \def\pxrr@check@punct@char#1#2{%
+ \pxrr@okfalse
+ \ifcase#2\relax
+ \ifnum\xspcode#1=\thr@@\else
+ \pxrr@oktrue
+ \fi
+ \else
+ \ifnum\inhibitxspcode#1=\thr@@\else
+ \pxrr@oktrue
+ \fi
+ \fi
+ }
+% \end{macrocode}
+%
+% \PKN{LuaTeX-ja}$B;HMQ;~$b4pK\E*$K(B{\pTeX}$B$HF1$8%m%8%C%/$r;H$&!#(B
+% $B$?$@$7(B\PKN{LuaTeX-ja}$B$G$O!VJ8;z%H!<%/%s$NOBJ8$H2$J8$N6hJL!W$H$$$&(B
+% $B35G0$,B8:_$7$J$$$?$a!"(B\jmeta{$BOBJ8%U%i%0(B}$B$OI,$:(B0$B$H$J$k!#(B
+% $B$=$7$F!"(B|\xspcode|$B!?(B|\inhibitxspcode| $B$KAjEv$9$k%Q%i%a%?$H$7$F$O!"(B
+% $B2$J8MQ$N(Balxspmode$B$HOBJ8MQ$N(Bjaxspmode$B$,0l1~$"$k$,!"(B
+% $B<B:]$K$OOBJ8$H2$J8$N6hJL$O$J$/$3$NN><T$OF15A$K$J$C$F$$$k!#(B
+% $B=>$C$F!"!V(Bjaxspmode$B$,(B3$B0J30$+!W$rD4$Y$k$3$H$K$9$k!#(B
+% \begin{macrocode}
+\else\ifpxrr@in@luatexja
+ \def\pxrr@check@punct@char#1#2{%
+ \ifnum\ltjgetparameter{jaxspmode}{#1}=\thr@@
+ \pxrr@okfalse
+ \else
+ \pxrr@oktrue
+ \fi
+ }
+% \end{macrocode}
+%
+% $B$=$l0J30$N>l9g$O>o$K56$H$7$F07$&!#(B
+% \begin{macrocode}
+\else
+ \def\pxrr@check@punct@char#1#2{%
+ \pxrr@okfalse
+ }
+\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@force@nonpunct@achar}
+% |\pxrr@force@nonpunct@achar{|\jmeta{$BJ8;z%3!<%I(B}|}|\Means
+% $B;XDj$NJ8;z%3!<%I$N2$J8J8;z$r!HLsJ*$G$J$$!I$b$N$H07$&!#(B
+% $B!HLsJ*$G$"$k!I$N0UL#$O(B |\pxrr@check@punct@char| $B$N>l9g$HF1$8!#(B
+%
+% {\pTeX}$B$N>l9g!#(B
+% \begin{macrocode}
+\ifpxrr@in@ptex
+ \def\pxrr@force@nonpunct@achar#1{%
+ \global\xspcode#1=\thr@@
+ }
+% \end{macrocode}
+% \PKN{LuaTeX-ja}$B;HMQ$N>l9g!#(B
+% \begin{macrocode}
+\else\ifpxrr@in@luatexja
+ \def\pxrr@force@nonpunct@achar#1{%
+ \ltjglobalsetparameter{jaxspmode={#1,3}}%
+ }
+% \end{macrocode}
+% $B$=$l0J30$N>l9g$O2?$b$7$J$$!#(B
+% \begin{macrocode}
+\else
+ \def\pxrr@force@nonpunct@achar#1{}
+\fi\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@inhibitglue}
+% |\inhibitglue| $B$,Dj5A$5$l$F$$$k$J$i<B9T$9$k!#(B
+% \begin{macrocode}
+\ifx\inhibitglue\@undefined
+ \let\pxrr@inhibitglue\relax
+\else
+ \let\pxrr@inhibitglue\inhibitglue
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%Q%i%a%?@_Dj8x3+L?Na(B}
+%
+% \begin{macro}{\ifpxrr@in@setup}
+% |\pxrr@parse@option| $B$,(B |\rubysetup| $B$NCf$G8F$P$l$?$+!#(B
+% $B??$N>l9g$O7Y9p=hM}$r9T$o$J$$!#(B
+% \begin{macrocode}
+\newif\ifpxrr@in@setup \pxrr@in@setupfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rubysetup}
+% |\pxrr@parse@option| $B$G2r@O$7$?8e!"@_DjCM$rA4HL@_Dj$K(B
+% $B%3%T!<$9$k!#(B
+% \begin{macrocode}
+\newcommand*\rubysetup[1]{%
+ \pxrr@in@setuptrue
+ \pxrr@fatal@errorfalse
+ \pxrr@parse@option{#1}%
+ \ifpxrr@fatal@error\else
+ \pxrr@csletcs{ifpxrr@d@bprotr}{ifpxrr@bprotr}%
+ \pxrr@csletcs{ifpxrr@d@aprotr}{ifpxrr@aprotr}%
+ \let\pxrr@d@bintr\pxrr@bintr@
+ \let\pxrr@d@aintr\pxrr@aintr@
+ \let\pxrr@d@athead\pxrr@athead
+ \let\pxrr@d@mode\pxrr@mode
+ \let\pxrr@d@side\pxrr@side
+ \let\pxrr@d@evensp\pxrr@evensp
+ \let\pxrr@d@fullsize\pxrr@fullsize
+ \fi
+% \end{macrocode}
+% |\ifpxrr@in@setup| $B$r56$KLa$9!#(B
+% $B$?$@$7(B |\ifpxrr@fatal@error| $B$O=q$-49$($i$l$?$^$^$G$"$k$3$H$KCm0U!#(B
+% \begin{macrocode}
+ \pxrr@in@setupfalse
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rubyfontsetup}
+% $BBP1~$9$k%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\rubyfontsetup{}
+\def\rubyfontsetup#{%
+ \def\pxrr@ruby@font
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rubybigintrusion}
+% \begin{macro}{\rubysmallintrusion}
+% \begin{macro}{\rubymaxmargin}
+% \begin{macro}{\rubyintergap}
+% \begin{macro}{\rubysizeratio}
+% $BBP1~$9$k%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\rubybigintrusion[1]{%
+ \edef\pxrr@big@intr{#1}%
+}
+\newcommand*\rubysmallintrusion[1]{%
+ \edef\pxrr@small@intr{#1}%
+}
+\newcommand*\rubymaxmargin[1]{%
+ \edef\pxrr@maxmargin{#1}%
+}
+\newcommand*\rubyintergap[1]{%
+ \edef\pxrr@inter@gap{#1}%
+}
+\newcommand*\rubysizeratio[1]{%
+ \edef\pxrr@size@ratio{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\rubyusejghost}
+% \begin{macro}{\rubynousejghost}
+% $BBP1~$9$k%9%$%C%A$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\rubyusejghost{%
+ \pxrr@jghosttrue
+}
+\newcommand*\rubynousejghost{%
+ \pxrr@jghostfalse
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\rubyuseaghost}
+% \begin{macro}{\rubynouseaghost}
+% $BBP1~$9$k%9%$%C%A$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\rubyuseaghost{%
+ \pxrr@aghosttrue
+ \pxrr@setup@aghost
+}
+\newcommand*\rubynouseaghost{%
+ \pxrr@aghostfalse
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\rubyadjustatlineedge}
+% \begin{macro}{\rubynoadjustatlineedge}
+% $BBP1~$9$k%9%$%C%A$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\rubyadjustatlineedge{%
+ \pxrr@edge@adjusttrue
+}
+\newcommand*\rubynoadjustatlineedge{%
+ \pxrr@edge@adjustfalse
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\rubybreakjukugo}
+% \begin{macro}{\rubynobreakjukugo}
+% $BBP1~$9$k%9%$%C%A$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\rubybreakjukugo{%
+ \pxrr@break@jukugotrue
+}
+\newcommand*\rubynobreakjukugo{%
+ \pxrr@break@jukugofalse
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\rubysafemode}
+% \begin{macro}{\rubynosafemode}
+% $BBP1~$9$k%9%$%C%A$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\rubysafemode{%
+ \pxrr@safe@modetrue
+}
+\newcommand*\rubynosafemode{%
+ \pxrr@safe@modefalse
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\rubystretchprop}
+% \begin{macro}{\rubystretchprophead}
+% \begin{macro}{\rubystretchpropend}
+% $BBP1~$9$k%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\rubystretchprop[3]{%
+ \edef\pxrr@sprop@x{#1}%
+ \edef\pxrr@sprop@y{#2}%
+ \edef\pxrr@sprop@z{#3}%
+}
+\newcommand*\rubystretchprophead[2]{%
+ \edef\pxrr@sprop@hy{#1}%
+ \edef\pxrr@sprop@hz{#2}%
+}
+\newcommand*\rubystretchpropend[2]{%
+ \edef\pxrr@sprop@ex{#1}%
+ \edef\pxrr@sprop@ey{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\rubyuseextra}
+% $B;DG0$J$,$i:#$N$H$3$m$O;HMQIT2D!#(B
+% \begin{macrocode}
+\newcommand*\rubyuseextra[1]{%
+ \pxrr@cnta=#1\relax
+ \ifnum\pxrr@cnta=\z@
+ \chardef\pxrr@extra\pxrr@cnta
+ \else
+ \pxrr@err@inv@value{\the\pxrr@cnta}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%k%S%*%W%7%g%s2r@O(B}
+%
+% \begin{macro}{\pxrr@bintr@}
+% \begin{macro}{\pxrr@aintr@}
+% $B%*%W%7%g%s2r@OCf$K$N$_;H$o$l!"?JF~$NCM$r(B |\pxrr@d@?intr|
+% $B$HF1$87A<0$GJ];}$9$k!#(B
+% $B!J(B|\pxrr@?intr| $B$O7A<0$,0[$J$k$3$H$KCm0U!#!K(B
+% \begin{macrocode}
+\let\pxrr@bintr@\@empty
+\let\pxrr@aintr@\@empty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@doublebar}
+% |\pxrr@parse@option| $BCf$G;HMQ$5$l$k!#(B
+% \begin{macrocode}
+\def\pxrr@doublebar{||}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@parse@option}
+% |\pxrr@parse@option{|\jmeta{$B%*%W%7%g%s(B}|}|\Means
+% \jmeta{$B%*%W%7%g%s(B}$B$r2r@O$7!"(B|\pxrr@athead| $B$d(B\
+% |\pxrr@mode| $BEy$N%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@parse@option#1{%
+% \end{macrocode}
+% $BF~NO$,!V(B\texttt{\vb\vb}$B!W$N>l9g$O!"!V(B\texttt{\vb-\vb}$B!W(B
+% $B$KCV$-49$($k!#(B
+% \begin{macrocode}
+ \edef\pxrr@tempa{#1}%
+ \ifx\pxrr@tempa\pxrr@doublebar
+ \def\pxrr@tempa{|-|}%
+ \fi
+% \end{macrocode}
+% $B3F%Q%i%a%?$NCM$rA4HL@_Dj$N$b$N$G=i4|2=$9$k!#(B
+% \begin{macrocode}
+ \pxrr@csletcs{ifpxrr@bprotr}{ifpxrr@d@bprotr}%
+ \pxrr@csletcs{ifpxrr@aprotr}{ifpxrr@d@aprotr}%
+ \let\pxrr@bintr@\pxrr@d@bintr
+ \let\pxrr@aintr@\pxrr@d@aintr
+ \let\pxrr@athead\pxrr@d@athead
+ \let\pxrr@mode\pxrr@d@mode
+ \let\pxrr@side\pxrr@d@side
+ \let\pxrr@evensp\pxrr@d@evensp
+ \let\pxrr@fullsize\pxrr@d@fullsize
+% \end{macrocode}
+% $B0J2<$N%Q%i%a%?$N4{DjCM$O8GDj$5$l$F$$$k!#(B
+% \begin{macrocode}
+ \let\pxrr@bscomp\relax
+ \let\pxrr@ascomp\relax
+ \pxrr@bnobrfalse
+ \pxrr@anobrfalse
+ \pxrr@bfintrfalse
+ \pxrr@afintrfalse
+% \end{macrocode}
+% $BL@<(%U%i%0$r56$K$9$k!#(B
+% \begin{macrocode}
+ \pxrr@mode@givenfalse
+ \pxrr@athead@givenfalse
+% \end{macrocode}
+% $BN>B&%k%S$N>l9g!"4pK\%b!<%I4{DjCM$,(B |M| $B$K8GDj$5$l$k!#(B
+% \begin{macrocode}
+ \ifpxrr@truby
+ \let\pxrr@mode=M%
+ \fi
+% \end{macrocode}
+% $BM-8B>uBV5!3#$r3+;O$5$;$k!#(B
+% $BF~NO$NKvHx$K(B |@| $B$r2C$($F$$$k!#(B
+% |\pxrr@end| $B$O%(%i!<;~$NC&=P$KMQ$$$k!#(B
+% \begin{macrocode}
+ \def\pxrr@po@FS{bi}%
+ \expandafter\pxrr@parse@option@loop\pxrr@tempa @\pxrr@end
+}
+% \end{macrocode}
+%
+% $BM-8B>uBV5!3#$N%k!<%W!#(B
+% \begin{macrocode}
+\def\pxrr@parse@option@loop#1{%
+\ifpxrrDebug
+\typeout{\pxrr@po@FS/#1[\@nameuse{pxrr@po@C@#1}]}%
+\fi
+ \csname pxrr@po@PR@#1\endcsname
+ \expandafter\ifx\csname pxrr@po@C@#1\endcsname\relax
+ \let\pxrr@po@FS\relax
+ \else
+ \pxrr@letcs\pxrr@po@FS
+ {pxrr@po@TR@\pxrr@po@FS @\@nameuse{pxrr@po@C@#1}}%
+ \fi
+\ifpxrrDebug
+\typeout{->\pxrr@po@FS}%
+\fi
+ \pxrr@ifx{\pxrr@po@FS\relax}{%
+ \pxrr@fatal@unx@letter{#1}%
+ \pxrr@parse@option@exit
+ }{%
+ \pxrr@parse@option@loop
+ }%
+}
+% \end{macrocode}
+%
+% $B8e=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@parse@option@exit#1\pxrr@end{%
+% \end{macrocode}
+% $B4{DjCM@_Dj!J(B|\rubysetup|$B!K$G$"$k>l9g2?$b$7$J$$!#(B
+% \begin{macrocode}
+ \ifpxrr@in@setup\else
+% \end{macrocode}
+% $BN>B&%k%SL?Na$N>l9g$O!"(B|\pxrr@side| $B$NCM$rJQ99$9$k!#(B
+% \begin{macrocode}
+ \ifpxrr@truby
+ \chardef\pxrr@side\tw@
+ \fi
+% \end{macrocode}
+% $B@09g@-8!::$r9T$&!#(B
+% \begin{macrocode}
+ \pxrr@check@option
+% \end{macrocode}
+% |\pxrr@?intr| $B$NCM$r@_Dj$9$k!#(B
+% \begin{macrocode}
+ \@tempdima=\pxrr@ruby@zw\relax
+ \@tempdimb=\pxrr@or@zero\pxrr@bintr@\@tempdima
+ \edef\pxrr@bintr{\the\@tempdimb}%
+ \@tempdimb=\pxrr@or@zero\pxrr@aintr@\@tempdima
+ \edef\pxrr@aintr{\the\@tempdimb}%
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macro}{\pxrr@or@zero}
+% |\pxrr@or@zero\pxrr@?intr@| $B$H$9$k$H!"(B|\pxrr@?intr@| $B$,(B
+% $B6u$N;~$KBe$o$j$K%<%m$H07$&!#(B
+% \begin{macrocode}
+\def\pxrr@or@zero#1{%
+ \ifx#1\@empty \pxrr@zero
+ \else #1%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% $B0J2<$O%*%W%7%g%s2r@O$NM-8B>uBV5!3#$NDj5A!#(B
+%
+% $B5-9f$N%/%i%9$N@_Dj!#(B
+% \begin{macrocode}
+\def\pxrr@po@C@@{F}
+\@namedef{pxrr@po@C@|}{V}
+\@namedef{pxrr@po@C@:}{S}
+\@namedef{pxrr@po@C@.}{S}
+\@namedef{pxrr@po@C@*}{S}
+\@namedef{pxrr@po@C@!}{S}
+\@namedef{pxrr@po@C@<}{B}
+\@namedef{pxrr@po@C@(}{B}
+\@namedef{pxrr@po@C@>}{A}
+\@namedef{pxrr@po@C@)}{A}
+\@namedef{pxrr@po@C@-}{M}
+\def\pxrr@po@C@c{M}
+\def\pxrr@po@C@h{M}
+\def\pxrr@po@C@H{M}
+\def\pxrr@po@C@m{M}
+\def\pxrr@po@C@g{M}
+\def\pxrr@po@C@j{M}
+\def\pxrr@po@C@M{M}
+\def\pxrr@po@C@J{M}
+\def\pxrr@po@C@P{M}
+\def\pxrr@po@C@S{M}
+\def\pxrr@po@C@e{M}
+\def\pxrr@po@C@E{M}
+\def\pxrr@po@C@f{M}
+\def\pxrr@po@C@F{M}
+% \end{macrocode}
+%
+% $B5!G=%W%m%;%9!#(B
+% \begin{macrocode}
+\def\pxrr@po@PR@@{%
+ \pxrr@parse@option@exit
+}
+\@namedef{pxrr@po@PR@|}{%
+ \csname pxrr@po@PRbar@\pxrr@po@FS\endcsname
+}
+\def\pxrr@po@PRbar@bi{%
+ \def\pxrr@bintr@{}\pxrr@bprotrtrue
+}
+\def\pxrr@po@PRbar@bb{%
+ \pxrr@bprotrfalse
+}
+\def\pxrr@po@PRbar@bs{%
+ \def\pxrr@aintr@{}\pxrr@aprotrtrue
+}
+\let\pxrr@po@PRbar@mi\pxrr@po@PRbar@bs
+\let\pxrr@po@PRbar@as\pxrr@po@PRbar@bs
+\let\pxrr@po@PRbar@ai\pxrr@po@PRbar@bs
+\def\pxrr@po@PRbar@ab{%
+ \pxrr@aprotrfalse
+}
+\@namedef{pxrr@po@PR@:}{%
+ \csname pxrr@po@PRcolon@\pxrr@po@FS\endcsname
+}
+\def\pxrr@po@PRcolon@bi{%
+ \let\pxrr@bscomp=:\relax
+}
+\let\pxrr@po@PRcolon@bb\pxrr@po@PRcolon@bi
+\let\pxrr@po@PRcolon@bs\pxrr@po@PRcolon@bi
+\def\pxrr@po@PRcolon@mi{%
+ \let\pxrr@ascomp=:\relax
+}
+\let\pxrr@po@PRcolon@as\pxrr@po@PRcolon@mi
+\@namedef{pxrr@po@PR@.}{%
+ \csname pxrr@po@PRdot@\pxrr@po@FS\endcsname
+}
+\def\pxrr@po@PRdot@bi{%
+ \let\pxrr@bscomp=.\relax
+}
+\let\pxrr@po@PRdot@bb\pxrr@po@PRdot@bi
+\let\pxrr@po@PRdot@bs\pxrr@po@PRdot@bi
+\def\pxrr@po@PRdot@mi{%
+ \let\pxrr@ascomp=.\relax
+}
+\let\pxrr@po@PRdot@as\pxrr@po@PRdot@mi
+\@namedef{pxrr@po@PR@*}{%
+ \csname pxrr@po@PRstar@\pxrr@po@FS\endcsname
+}
+\def\pxrr@po@PRstar@bi{%
+ \pxrr@bnobrtrue
+}
+\let\pxrr@po@PRstar@bb\pxrr@po@PRstar@bi
+\let\pxrr@po@PRstar@bs\pxrr@po@PRstar@bi
+\def\pxrr@po@PRstar@mi{%
+ \pxrr@anobrtrue
+}
+\let\pxrr@po@PRstar@as\pxrr@po@PRstar@mi
+\@namedef{pxrr@po@PR@!}{%
+ \csname pxrr@po@PRbang@\pxrr@po@FS\endcsname
+}
+\def\pxrr@po@PRbang@bi{%
+ \pxrr@bfintrtrue
+}
+\let\pxrr@po@PRbang@bb\pxrr@po@PRbang@bi
+\let\pxrr@po@PRbang@bs\pxrr@po@PRbang@bi
+\def\pxrr@po@PRbang@mi{%
+ \pxrr@afintrtrue
+}
+\let\pxrr@po@PRbang@as\pxrr@po@PRbang@mi
+\@namedef{pxrr@po@PR@<}{%
+ \def\pxrr@bintr@{\pxrr@big@intr}\pxrr@bprotrtrue
+}
+\@namedef{pxrr@po@PR@(}{%
+ \def\pxrr@bintr@{\pxrr@small@intr}\pxrr@bprotrtrue
+}
+\@namedef{pxrr@po@PR@>}{%
+ \def\pxrr@aintr@{\pxrr@big@intr}\pxrr@aprotrtrue
+}
+\@namedef{pxrr@po@PR@)}{%
+ \def\pxrr@aintr@{\pxrr@small@intr}\pxrr@aprotrtrue
+}
+\def\pxrr@po@PR@c{%
+ \chardef\pxrr@athead\z@
+ \pxrr@athead@giventrue
+}
+\def\pxrr@po@PR@h{%
+ \chardef\pxrr@athead\@ne
+ \pxrr@athead@giventrue
+}
+\def\pxrr@po@PR@H{%
+ \chardef\pxrr@athead\tw@
+ \pxrr@athead@giventrue
+}
+\def\pxrr@po@PR@m{%
+ \let\pxrr@mode=m%
+ \pxrr@mode@giventrue
+}
+\def\pxrr@po@PR@g{%
+ \let\pxrr@mode=g%
+ \pxrr@mode@giventrue
+}
+\def\pxrr@po@PR@j{%
+ \let\pxrr@mode=j%
+ \pxrr@mode@giventrue
+}
+\def\pxrr@po@PR@M{%
+ \let\pxrr@mode=M%
+ \pxrr@mode@giventrue
+}
+\def\pxrr@po@PR@J{%
+ \let\pxrr@mode=J%
+ \pxrr@mode@giventrue
+}
+\def\pxrr@po@PR@P{%
+ \chardef\pxrr@side\z@
+}
+\def\pxrr@po@PR@S{%
+ \chardef\pxrr@side\@ne
+}
+\def\pxrr@po@PR@E{%
+ \chardef\pxrr@evensp\z@
+}
+\def\pxrr@po@PR@e{%
+ \chardef\pxrr@evensp\@ne
+}
+\def\pxrr@po@PR@F{%
+ \chardef\pxrr@fullsize\z@
+}
+\def\pxrr@po@PR@f{%
+ \chardef\pxrr@fullsize\@ne
+}
+% \end{macrocode}
+%
+% $BA+0\I=!#(B
+% \begin{macrocode}
+\def\pxrr@po@TR@bi@F{fi}
+\def\pxrr@po@TR@bb@F{fi}
+\def\pxrr@po@TR@bs@F{fi}
+\def\pxrr@po@TR@mi@F{fi}
+\def\pxrr@po@TR@as@F{fi}
+\def\pxrr@po@TR@ai@F{fi}
+\def\pxrr@po@TR@ab@F{fi}
+\def\pxrr@po@TR@fi@F{fi}
+\def\pxrr@po@TR@bi@V{bb}
+\def\pxrr@po@TR@bb@V{bs}
+\def\pxrr@po@TR@bs@V{ab}
+\def\pxrr@po@TR@mi@V{ab}
+\def\pxrr@po@TR@as@V{ab}
+\def\pxrr@po@TR@ai@V{ab}
+\def\pxrr@po@TR@ab@V{fi}
+\def\pxrr@po@TR@bi@S{bs}
+\def\pxrr@po@TR@bb@S{bs}
+\def\pxrr@po@TR@bs@S{bs}
+\def\pxrr@po@TR@mi@S{as}
+\def\pxrr@po@TR@as@S{as}
+\def\pxrr@po@TR@bi@B{bs}
+\def\pxrr@po@TR@bi@M{mi}
+\def\pxrr@po@TR@bb@M{mi}
+\def\pxrr@po@TR@bs@M{mi}
+\def\pxrr@po@TR@mi@M{mi}
+\def\pxrr@po@TR@bi@A{fi}
+\def\pxrr@po@TR@bb@A{fi}
+\def\pxrr@po@TR@bs@A{fi}
+\def\pxrr@po@TR@mi@A{fi}
+\def\pxrr@po@TR@as@A{fi}
+\def\pxrr@po@TR@ai@A{fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%*%W%7%g%s@09g@-8!::(B}
+%
+% \begin{macro}{\pxrr@mode@grand}
+% $B4pK\%b!<%I$N!HBgJ,N`!I!#(B
+% $B%b%N!J(B|m|$B!K!&=O8l!J(B|j|$B!K!&%0%k!<%W!J(B|g|$B!K$N2?$l$+!#(B
+% $B$D$^$j!HA*BrE*!I@_Dj$N(B |M|$B!&(B|J| $B$r(B |m|$B!&(B|j| $B$K4s$;$k!#(B
+% \Note $B40A4E83+2DG=$G$"$k$,!"!H@hF,40A4E83+2DG=!I$G$J$$$3$H$KCm0U!#(B
+% \begin{macrocode}
+\def\pxrr@mode@grand{%
+ \if m\pxrr@mode m%
+ \else\if M\pxrr@mode m%
+ \else\if j\pxrr@mode j%
+ \else\if J\pxrr@mode j%
+ \else\if g\pxrr@mode g%
+ \else ?%
+ \fi\fi\fi\fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@check@option}
+% |\pxrr@parse@option| $B$N7k2L$G$"$k%*%W%7%g%s@_DjCM$N@09g@-$r8!::$7!"(B
+% $BI,MW$K1~$8$F!"CWL?E*%(%i!<$r=P$7$?$j!"7Y9p$r=P$7$FE,@Z$JCM$K(B
+% $BJQ99$7$?$j$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@check@option{%
+% \end{macrocode}
+% $BA0$H8e$NN>J}$GFM=P$,6X;_$5$l$?>l9g$OCWL?E*%(%i!<$H$9$k!#(B
+% \begin{macrocode}
+ \ifpxrr@bprotr\else
+ \ifpxrr@aprotr\else
+ \pxrr@fatal@bad@no@protr
+ \fi
+ \fi
+% \end{macrocode}
+% $B%4!<%9%H=hM}M-8z$G?JF~M-$j$N>l9g$OCWL?E*%(%i!<$H$9$k!#(B
+% \begin{macrocode}
+ \pxrr@oktrue
+ \ifx\pxrr@bintr@\@empty\else
+ \pxrr@okfalse
+ \fi
+ \ifx\pxrr@aintr@\@empty\else
+ \pxrr@okfalse
+ \fi
+ \ifpxrr@ghost\else
+ \pxrr@oktrue
+ \fi
+ \ifpxrr@ok\else
+ \pxrr@fatal@bad@intr
+ \fi
+% \end{macrocode}
+% $B2$J8%k%S$G$O%b%N%k%S!J(B|m|$B!K!&=O8l%k%S!J(B|j|$B!K$O;XDjIT2D$J$N$G!"(B
+% $B%0%k!<%W%k%S$KJQ99$9$k!#(B
+% $B$3$N;~$KL@<(;XDj$G$"$k>l9g$O7Y9p$r=P$9!#(B
+% \begin{macrocode}
+ \if g\pxrr@mode\else
+ \ifpxrr@abody
+ \let\pxrr@mode=g\relax
+ \ifpxrr@mode@given
+ \pxrr@warn@must@group
+ \fi
+ \fi
+ \fi
+% \end{macrocode}
+% $BN>B&%k%S$G$O=O8l%k%S!J(B|j|$B!K$O;XDjIT2D$J$N$G!"(B
+% $B%0%k!<%W%k%S$KJQ99$9$k!#(B
+% $B$3$N;~$KL@<(;XDj$G$"$k>l9g$O7Y9p$r=P$9!#(B
+% \begin{macrocode}
+ \if \pxrr@mode@grand j%
+ \ifnum\pxrr@side=\tw@
+ \let\pxrr@mode=g\relax
+ \ifpxrr@mode@given
+ \pxrr@warn@bad@jukugo
+ \fi
+ \fi
+ \fi
+% \end{macrocode}
+% $B8*IU$-;XDj!J(B|h|$B!K$K4X$9$k8!::!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@athead>\z@
+% \end{macrocode}
+% $B2#AH$_$G$OIT2D$J$N$GCfIU$-$KJQ99$9$k!#(B
+% \begin{macrocode}
+ \pxrr@if@in@tate{}{%else
+ \chardef\pxrr@athead\z@
+ }%
+% \end{macrocode}
+% $B%0%k!<%W%k%S$G$OIT2D$J$N$GCfIU$-$KJQ99$9$k!#(B
+% \begin{macrocode}
+ \if g\pxrr@mode
+ \chardef\pxrr@athead\z@
+ \fi
+% \end{macrocode}
+% $B0J>e$N(B2$B$D$N>l9g$K$D$$$F!"L@<(;XDj$G$"$l$P7Y9p$r=P$9!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@athead=\z@
+ \ifpxrr@athead@given
+ \pxrr@warn@bad@athead
+ \fi
+ \fi
+ \fi
+% \end{macrocode}
+% $B?FJ8;zNs6QEy3d$jM^;_!J(B|E|$B!K$N:F@_Dj!J%(%i!<!&7Y9p$J$7!K!#(B
+%
+% $B2$J8%k%S$N>l9g$O!"6QEy3d$j$r>o$KL58z$K$9$k!#(B
+% \begin{macrocode}
+ \ifpxrr@abody
+ \chardef\pxrr@evensp\z@
+ \fi
+% \end{macrocode}
+% $B%0%k!<%W%k%S0J30$G$O!"6QEy3d$j$rM-8z$K$9$k!#(B
+% $B!J$3$N>l9g!"?FJ8;zNs$O0lJ8;zKh$KJ,2r$5$l$k$N$G!"0UL#$O$b$?$J$$!#(B
+% $B6QEy3d$jM^;_$NJ}$,FC<l$J=hM}$J$N$G!"DL>o$N=hM}$K9g$o$;$k!#!K(B
+% \begin{macrocode}
+ \if g\pxrr@mode\else
+ \chardef\pxrr@evensp\@ne
+ \fi
+% \end{macrocode}
+% $B7wE@%k%SF1;~IU2C$N>l9g$ND4@0!#(B
+% \begin{macrocode}
+ \ifpxrr@combo
+ \pxrr@ck@check@option
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%U%)%s%H%5%$%:(B}
+%
+% \begin{macro}{\pxrr@ruby@fsize}
+% $B%k%SJ8;z$N8x>N%5%$%:!#(B
+% $B@#K!CM%^%/%m!#(B
+% $B%k%SL?Na8F=P;~$K(B |\f@size|$B!J?FJ8;z$N8x>N%5%$%:!K(B
+% $B$N(B |\pxrr@size@ratio| $BG\$K@_Dj$5$l$k!#(B
+% \begin{macrocode}
+\let\pxrr@ruby@fsize\pxrr@zeropt
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@body@zw}
+% \begin{macro}{\pxrr@ruby@zw}
+% $B$=$l$>$l!"?FJ8;z$H%k%SJ8;z$NA43QI}!J<B:]$N(B1\,zw$B$N@#K!!K!#(B
+% $B@#K!CM%^%/%m!#(B
+% {p\TeX}$B$G$OOBJ8$H2$J8$N%P%i%s%9$r@0$($k$?$a$KOBJ8$r=L>.$9$k(B
+% $B$3$H$,B?$/!"$=$N>l9g!VA43QI}!W$O!V8x>N%5%$%:!W$h$j>.$5$/$J$k!#(B
+% $B$J$*!"$3$N%Q%C%1!<%8$G$O4A;z$NI}$,(B1\,zw$B$G$"$k$3$H$rA[Dj$9$k!#(B
+% $B$3$l$i$b%k%SL?Na8F=P;~$K@5$7$$CM$K@_Dj$5$l$k!#(B
+% \begin{macrocode}
+\let\pxrr@body@zw\pxrr@zeropt
+\let\pxrr@ruby@zw\pxrr@zeropt
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@raise}
+% $B%k%SJ8;z$KBP$9$k?bD>J}8~$N0\F0NL!#(B
+% \begin{macrocode}
+\let\pxrr@ruby@raise\pxrr@zeropt
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@lower}
+% $B%k%SJ8;z$KBP$9$k?bD>J}8~$N0\F0NL!J2<B&%k%S!K!#(B
+% \begin{macrocode}
+\let\pxrr@ruby@lower\pxrr@zeropt
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@htratio}
+% $B8=:_$NAHJ}8~$K$h$j!"(B|\pxrr@yhtratio| $B$H(B |\pxrr@thtratio| $B$N$$$:$l$+(B
+% $B0lJ}$K@_Dj$5$l$k!#(B
+% \begin{macrocode}
+\def\pxrr@htratio{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@iiskip}
+% \begin{macro}{\pxrr@iaiskip}
+% $BOBJ84V6uGr$*$h$SOB2$J84V6uGr$NNL!#(B
+% \begin{macrocode}
+\let\pxrr@iiskip\pxrr@zeropt
+\let\pxrr@iaiskip\pxrr@zeropt
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@assign@fsize}
+% $B>e5-$NJQ?t!J%^%/%m!K$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@assign@fsize{%
+ \@tempdima=\f@size\p@
+ \@tempdima\pxrr@c@size@ratio\@tempdima
+ \edef\pxrr@ruby@fsize{\the\@tempdima}%
+ \pxrr@get@zwidth\pxrr@body@zw
+ \begingroup
+ \pxrr@use@ruby@font
+ \pxrr@get@zwidth\pxrr@ruby@zw
+ \global\let\pxrr@gtempa\pxrr@ruby@zw
+ \endgroup
+ \let\pxrr@ruby@zw\pxrr@gtempa
+ \pxrr@get@iiskip\pxrr@iiskip
+ \pxrr@get@iaiskip\pxrr@iaiskip
+% \end{macrocode}
+% |\pxrr@htratio| $B$NCM$r@_Dj$9$k!#(B
+% \begin{macrocode}
+ \pxrr@if@in@tate{%
+ \let\pxrr@htratio\pxrr@thtratio
+ }{%
+ \let\pxrr@htratio\pxrr@yhtratio
+ }%
+% \end{macrocode}
+% |\pxrr@ruby@raise| $B$NCM$r7W;;$9$k!#(B
+% \begin{macrocode}
+ \@tempdima\pxrr@body@zw\relax
+ \@tempdima\pxrr@htratio\@tempdima
+ \@tempdimb\pxrr@ruby@zw\relax
+ \advance\@tempdimb-\pxrr@htratio\@tempdimb
+ \advance\@tempdima\@tempdimb
+ \@tempdimb\pxrr@body@zw\relax
+ \advance\@tempdima\pxrr@c@inter@gap\@tempdimb
+ \edef\pxrr@ruby@raise{\the\@tempdima}%
+% \end{macrocode}
+% |\pxrr@ruby@lower| $B$NCM$r7W;;$9$k!#(B
+% \begin{macrocode}
+ \@tempdima\pxrr@body@zw\relax
+ \advance\@tempdima-\pxrr@htratio\@tempdima
+ \@tempdimb\pxrr@ruby@zw\relax
+ \@tempdimb\pxrr@htratio\@tempdimb
+ \advance\@tempdima\@tempdimb
+ \@tempdimb\pxrr@body@zw\relax
+ \advance\@tempdima\pxrr@c@inter@gap\@tempdimb
+ \edef\pxrr@ruby@lower{\the\@tempdima}%
+% \end{macrocode}
+% $B7wE@%k%SF1;~IU2C$N@_Dj!#(B
+% \begin{macrocode}
+ \ifpxrr@combo
+ \pxrr@ck@assign@fsize
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@use@ruby@font}
+% $B%k%SMQ$N%U%)%s%H$K@Z$jBX$($k!#(B
+% \begin{macrocode}
+\def\pxrr@use@ruby@font{%
+ \pxrr@without@macro@trace{%
+ \let\rubyfontsize\pxrr@ruby@fsize
+ \fontsize{\pxrr@ruby@fsize}{\z@}\selectfont
+ \pxrr@c@ruby@font
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%k%SMQ6QEy3d$j(B}
+%
+% \begin{macro}{\pxrr@locate@inner}
+% \begin{macro}{\pxrr@locate@head}
+% \begin{macro}{\pxrr@locate@end}
+% $B%k%SG[CV%Q%?!<%s!J9TF,!?9TCf!?9TKv!K$rI=$9Dj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@locate@inner=1
+\chardef\pxrr@locate@head=0
+\chardef\pxrr@locate@end=2
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@evenspace}
+% \begin{macro}{\pxrr@evenspace@int}
+% \begin{macro}{\pxrr@makebox@res}
+% |\pxrr@evenspace{|\jmeta{$B%Q%?!<%s(B}|}\CS{|\jmeta{$B%U%)%s%H(B}|}|^^A
+% |{|\jmeta{$BI}(B}|}{|\jmeta{$B%F%-%9%H(B}|}|\Means
+% \jmeta{$B%F%-%9%H(B}$B$r;XDj$N(B\jmeta{$BI}(B}$B$KBP$9$k(B
+% \jmeta{$B%Q%?!<%s(B}$B!J9TF,!?9TCf!?9TKv!K$N(B
+% $B!V9TCf%k%SMQ6QEy3d$j!W$GG[CV$7!"(B
+% $B7k2L$r%\%C%/%9%l%8%9%?(B |\CS| $B$KBeF~$9$k!#(B
+% $B6QEy3d$j$NMWAGJ,3d$O(B |\pxrr@decompose| $B$rMQ$$$F9T$o$l$k$N$G!"(B
+% $BMWAG?t$,(B |\pxrr@cntr| $B$KJV$k!#(B
+% $B$^$?!"@hF,$HKvHx$N6u$-$NNL$r$=$l$>$l(B\
+% |\pxrr@bspace| $B$H(B |\pxrr@aspace| $B$KBeF~$9$k!#(B
+%
+% |\pxrr@evenspace@int{|\jmeta{$B%Q%?!<%s(B}|}\CS{|\jmeta{$B%U%)%s%H(B}|}|^^A
+% |{|\jmeta{$BI}(B}|}|\Means
+% |\pxrr@evenspace| $B$N<B9T$r!"(B
+% \begin{quote}
+% |\pxrr@res| $B$H(B |\pxrr@cntr| $B$K%F%-%9%H$N(B |\pxrr@decompose| $B$N7k2L$,(B
+% $BF~$C$F$$$F!"%F%-%9%H$N<+A3D9$,%^%/%m(B |\pxrr@natwd| $B$K(B
+% $BF~$C$F$$$k(B
+% \end{quote}
+% $B$H$$$&>uBV$G!"ESCf$+$i3+;O$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@evenspace#1#2#3#4#5{%
+% \end{macrocode}
+% \jmeta{$B%F%-%9%H(B}$B$N<+A3D9$r7WB,$7!"(B|\pxrr@natwd| $B$K3JG<$9$k!#(B
+% \begin{macrocode}
+ \setbox#2\pxrr@hbox{#5}\@tempdima\wd#2%
+ \edef\pxrr@natwd{\the\@tempdima}%
+% \end{macrocode}
+% \jmeta{$B%F%-%9%H(B}$B$r%j%9%H2r@O$9$k(B
+% $B!J(B|\pxrr@cntr| $B$KMWAG?t$,F~$k!K!#(B
+% |\pxrr@evenspace@int| $B$K0z$-7Q$0!#(B
+% \begin{macrocode}
+ \pxrr@decompose{#5}%
+ \pxrr@evenspace@int{#1}{#2}{#3}{#4}%
+}
+% \end{macrocode}
+% $B$3$3$+$i<B9T$r3+;O$9$k$3$H$b$"$k!#(B
+% \begin{macrocode}
+\def\pxrr@evenspace@int#1#2#3#4{%
+% \end{macrocode}
+% $BHfN(%Q%i%a%?$N@_Dj!#(B
+% \begin{macrocode}
+ \pxrr@save@listproc
+ \ifcase#1%
+ \pxrr@evenspace@param\pxrr@zero\pxrr@sprop@hy\pxrr@sprop@hz
+ \or
+ \pxrr@evenspace@param\pxrr@sprop@x\pxrr@sprop@y\pxrr@sprop@z
+ \or
+ \pxrr@evenspace@param\pxrr@sprop@ex\pxrr@sprop@ey\pxrr@zero
+ \fi
+% \end{macrocode}
+% $BA^F~$5$l$k(B |fil| $B$N78?t$r5a$a!"$3$l$,%<%m$N>l9g(B
+% $B!J$3$N;~(B $\mbox{X}=\mbox{Z}=0$ $B$G$"$k!K$O!"(B
+% $B%"%s%@!<%U%kKI;_$N$?$a!"(B$\mbox{X}=\mbox{Z}=1$
+% $B$KJQ99$9$k!#(B
+% \begin{macrocode}
+ \pxrr@dima=\pxrr@cntr\p@
+ \advance\pxrr@dima-\p@
+ \pxrr@dima=\pxrr@sprop@y@\pxrr@dima
+ \advance\pxrr@dima\pxrr@sprop@x@\p@
+ \advance\pxrr@dima\pxrr@sprop@z@\p@
+ \ifdim\pxrr@dima>\z@\else
+ \ifnum#1>\z@
+ \let\pxrr@sprop@x@\@ne
+ \advance\pxrr@dima\p@
+ \fi
+ \ifnum#1<\tw@
+ \let\pxrr@sprop@z@\@ne
+ \advance\pxrr@dima\p@
+ \fi
+ \fi
+ \edef\pxrr@tempa{\strip@pt\pxrr@dima}%
+\ifpxrrDebug
+\typeout{\number\pxrr@sprop@x@:\number\pxrr@sprop@z@:\pxrr@tempa}%
+\fi
+% \end{macrocode}
+% |\pxrr@pre/inter/post| $B$K%0%k!=$r@_Dj$7$F!"(B
+% |\pxrr@res| $B$rAHHG$9$k!#(B
+% $B$J$*!"(B|\setbox...| $B$r0lC6%^%/%m(B |\pxrr@makebox@res| $B$KDj5A(B
+% $B$7$F$$$k$N$O!"8e$G(B |\pxrr@adjust@margin| $B$G:FEY8F$S=P$;$k$h$&$K(B
+% $B$9$k$?$a!#(B
+% \begin{macrocode}
+ \def\pxrr@pre##1{\pxrr@hfilx\pxrr@sprop@x@ ##1}%
+ \def\pxrr@inter##1{\pxrr@hfilx\pxrr@sprop@y@ ##1}%
+ \def\pxrr@post{\pxrr@hfilx\pxrr@sprop@z@}%
+ \def\pxrr@makebox@res{%
+ \setbox#2=\pxrr@hbox@to#4{#3\pxrr@res}%
+ }%
+ \pxrr@makebox@res
+% \end{macrocode}
+% $BA08e$N6uGr$NNL$r5a$a$k!#(B
+% \begin{macrocode}
+ \pxrr@dima\wd#2%
+ \advance\pxrr@dima-\pxrr@natwd\relax
+ \pxrr@invscale\pxrr@dima\pxrr@tempa
+ \@tempdima\pxrr@sprop@x@\pxrr@dima
+ \edef\pxrr@bspace{\the\@tempdima}%
+ \@tempdima\pxrr@sprop@z@\pxrr@dima
+ \edef\pxrr@aspace{\the\@tempdima}%
+ \pxrr@restore@listproc
+\ifpxrrDebug
+\typeout{\pxrr@bspace:\pxrr@aspace}%
+\fi
+}
+\def\pxrr@evenspace@param#1#2#3{%
+ \let\pxrr@sprop@x@#1%
+ \let\pxrr@sprop@y@#2%
+ \let\pxrr@sprop@z@#3%
+}
+\let\pxrr@makebox@res\@undefined
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@adjust@margin}
+% |\pxrr@adjust@margin|\Means
+% |\pxrr@evenspace(@int)| $B$r8F$S=P$7$?D>8e$K8F$VI,MW$,$"$k!#(B
+% $B@hF,$HKvHx$N3F!9$K$D$$$F!"6u$-$NNL$,(B |\pxrr@maxmargin|
+% $B$K$h$j7h$^$k>e8BCM$rD6$($k>l9g$K!"6u$-$r>e8BCM$KM^$($k(B
+% $B$h$&$K:FD4@0$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@adjust@margin{%
+ \pxrr@save@listproc
+ \@tempdima\pxrr@body@zw\relax
+ \@tempdima\pxrr@maxmargin\@tempdima
+% \end{macrocode}
+% $B:FD4@0$,I,MW$+$r(B |\if@tempswa| $B$K5-O?$9$k!#(B
+% 1$BJ8;z$7$+$J$$>l9g$OD4@0ITG=$@$+$i8!::$rHt$P$9!#(B
+% \begin{macrocode}
+ \@tempswafalse
+ \def\pxrr@pre##1{\pxrr@hfilx\pxrr@sprop@x@ ##1}%
+ \def\pxrr@inter##1{\pxrr@hfilx\pxrr@sprop@y@ ##1}%
+ \def\pxrr@post{\pxrr@hfilx\pxrr@sprop@z@}%
+ \ifnum\pxrr@cntr>\@ne
+ \ifdim\pxrr@bspace>\@tempdima
+ \edef\pxrr@bspace{\the\@tempdima}%
+ \def\pxrr@pre##1{\hskip\pxrr@bspace\relax ##1}%
+ \@tempswatrue
+ \fi
+ \ifdim\pxrr@aspace>\@tempdima
+ \edef\pxrr@aspace{\the\@tempdima}%
+ \def\pxrr@post{\hskip\pxrr@aspace\relax}%
+ \@tempswatrue
+ \fi
+ \fi
+% \end{macrocode}
+% $BI,MW$K1~$8$F:FD4@0$r9T$&!#(B
+% \begin{macrocode}
+ \if@tempswa
+ \pxrr@makebox@res
+ \fi
+ \pxrr@restore@listproc
+\ifpxrrDebug
+\typeout{\pxrr@bspace:\pxrr@aspace}%
+\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@save@listproc}
+% |\pxrr@pre/inter/post| $B$NDj5A$rB`Hr$9$k!#(B
+% \Note
+% $BB`Hr$N%M%9%H$O$G$-$J$$!#(B
+% \begin{macrocode}
+\def\pxrr@save@listproc{%
+ \let\pxrr@pre@save\pxrr@pre
+ \let\pxrr@inter@save\pxrr@inter
+ \let\pxrr@post@save\pxrr@post
+}
+\let\pxrr@pre@save\@undefined
+\let\pxrr@inter@save\@undefined
+\let\pxrr@post@save\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@restore@listproc}
+% |\pxrr@pre/inter/post| $B$NDj5A$rI|5"$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@restore@listproc{%
+ \let\pxrr@pre\pxrr@pre@save
+ \let\pxrr@inter\pxrr@inter@save
+ \let\pxrr@post\pxrr@post@save
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B>.=q$-2>L>$NJQ49(B}
+%
+% \begin{macro}{\pxrr@trans@res}
+% |\pxrr@transform@kana| $BFb$GJQ497k2L$rJ];}$9$k%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@trans@res\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@transform@kana}
+% |\pxrr@transform@kana\CS|\Means
+% $B%^%/%m(B |\CS| $B$NE83+%F%-%9%H$NCf$G%0%k!<%W$K4^$^$l$J$$>.=q$-2>L>$r(B
+% $BBP1~$9$kHs>.=q$-2>L>$KJQ49$7!"(B|\CS| $B$r>e=q$-$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@transform@kana#1{%
+ \let\pxrr@trans@res\@empty
+ \def\pxrr@transform@kana@end\pxrr@end{%
+ \let#1\pxrr@trans@res
+ }%
+ \expandafter\pxrr@transform@kana@loop@a#1\pxrr@end
+}
+\def\pxrr@transform@kana@loop@a{%
+ \futurelet\pxrr@token\pxrr@transform@kana@loop@b
+}
+\def\pxrr@transform@kana@loop@b{%
+ \ifx\pxrr@token\pxrr@end
+ \let\pxrr@tempb\pxrr@transform@kana@end
+ \else\ifx\pxrr@token\bgroup
+ \let\pxrr@tempb\pxrr@transform@kana@loop@c
+ \else\ifx\pxrr@token\@sptoken
+ \let\pxrr@tempb\pxrr@transform@kana@loop@d
+ \else
+ \let\pxrr@tempb\pxrr@transform@kana@loop@e
+ \fi\fi\fi
+ \pxrr@tempb
+}
+\def\pxrr@transform@kana@loop@c#1{%
+ \pxrr@appto\pxrr@trans@res{{#1}}%
+ \pxrr@transform@kana@loop@a
+}
+\expandafter\def\expandafter\pxrr@transform@kana@loop@d\space{%
+ \pxrr@appto\pxrr@trans@res{ }%
+ \pxrr@transform@kana@loop@a
+}
+\def\pxrr@transform@kana@loop@e#1{%
+ \expandafter\pxrr@transform@kana@loop@f\string#1\pxrr@nil#1%
+}
+\def\pxrr@transform@kana@loop@f#1#2\pxrr@nil#3{%
+ \@tempswafalse
+ \ifnum`#1>\@cclv
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname pxrr@nonsmall/#3\endcsname\relax\else
+ \@tempswatrue
+ \fi
+ \fi
+ \if@tempswa
+ \edef\pxrr@tempa{%
+ \noexpand\pxrr@appto\noexpand\pxrr@trans@res
+ {\csname pxrr@nonsmall/#3\endcsname}%
+ }%
+ \pxrr@tempa
+ \else
+ \pxrr@appto\pxrr@trans@res{#3}%
+ \fi
+ \pxrr@transform@kana@loop@a
+}
+\def\pxrr@assign@nonsmall#1/#2\pxrr@nil{%
+ \pxrr@get@jchar@token\pxrr@tempa{\pxrr@jc{#1}}%
+ \pxrr@get@jchar@token\pxrr@tempb{\pxrr@jc{#2}}%
+ \expandafter\edef\csname pxrr@nonsmall/\pxrr@tempa\endcsname
+ {\pxrr@tempb}%
+}
+\@tfor\pxrr@tempc:=%
+ {2421:3041/2422:3042}{2423:3043/2424:3044}%
+ {2425:3045/2426:3046}{2427:3047/2428:3048}%
+ {2429:3049/242A:304A}{2443:3063/2444:3064}%
+ {2463:3083/2464:3084}{2465:3085/2466:3086}%
+ {2467:3087/2468:3088}{246E:308E/246F:308F}%
+ {2521:30A1/2522:30A2}{2523:30A3/2524:30A4}%
+ {2525:30A5/2526:30A6}{2527:30A7/2528:30A8}%
+ {2529:30A9/252A:30AA}{2543:30C3/2544:30C4}%
+ {2563:30E3/2564:30E4}{2565:30E5/2566:30E6}%
+ {2567:30E7/2568:30E8}{256E:30EE/256F:30EF}%
+ \do{%
+ \expandafter\pxrr@assign@nonsmall\pxrr@tempc\pxrr@nil
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%V%m%C%/Kh$NAHHG(B}
+%
+% \begin{macro}{\ifpxrr@protr}
+% $B%k%SJ8;zNs$NFM=P$,$"$k$+!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@protr
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@any@protr}
+% $BJ#?t%V%m%C%/$N=hM}$G!"$$$:$l$+$N%V%m%C%/$K%k%SJ8;zNs$NFM=P$,$"$k$+!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@any@protr
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@locate@temp}
+% |\pxrr@compose@*side@block@do| $B$G;H$o$l$k0l;~JQ?t!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\let\pxrr@locate@temp\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@epsilon}
+% $B%k%SJ8;zNs$H?FJ8;zNs$N<+A3D9$N:9$,$3$NCM0J2<$N>l9g$O!"(B
+% $B:9$O$J$$$b$N$H$_$J$9!J1i;;8m:9BP:v!K!#(B
+% \begin{macrocode}
+\def\pxrr@epsilon{0.01pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@compose@block}
+% |\pxrr@compose@block{|\jmeta{$B%Q%?!<%s(B}|}{|^^A
+% \jmeta{$B?FJ8;z%V%m%C%/(B}|}{|\jmeta{$B%k%SJ8;z%V%m%C%/(B}|}|\Means
+% 1$B$D$N%V%m%C%/$NAHHG=hM}!#(B
+% \jmeta{$B%Q%?!<%s(B}$B$O(B |\pxrr@evenspace| $B$HF1$80UL#!#(B
+% $BFM=P$,$"$k$+$r(B |\ifpxrr@protr| $B$KJV$7!"A0$H8e$NFM=P$NNL$r(B
+% $B$=$l$>$l(B |\pxrr@bspace| $B$H(B |\pxrr@aspace| $B$KJV$9!#(B
+% \begin{macrocode}
+\def\pxrr@compose@block#1#2#3{%
+% \end{macrocode}
+% $BK\BN$NA0$K2C9)=hM}$r2pF~$5$;$k!#(B
+% \Note |\pxrr@compose@block@pre| $B$O(B2$B$D$N%k%S0z?t$r<h$k!#(B
+% |\pxrr@compose@block@do| $B$KK\BN%^%/%m$r(B |\let| $B$9$k!#(B
+% \begin{macrocode}
+ \let\pxrr@compose@block@do\pxrr@compose@oneside@block@do
+ \pxrr@compose@block@pre{#1}{#2}{#3}{}%
+}
+% \end{macrocode}
+% $B$3$A$i$,K\BN!#(B
+% \begin{macrocode}
+% #4$B$O6u(B
+\def\pxrr@compose@oneside@block@do#1#2#3#4{%
+ \setbox\pxrr@boxa\pxrr@hbox{#2}%
+ \edef\pxrr@ck@body@natwd{\the\wd\pxrr@boxa}%
+ \let\pxrr@ck@locate\pxrr@locate@inner
+ \setbox\pxrr@boxr\pxrr@hbox{%
+ \pxrr@use@ruby@font
+ #3%
+ }%
+ \@tempdima\wd\pxrr@boxr
+ \advance\@tempdima-\wd\pxrr@boxa
+ \ifdim\pxrr@epsilon<\@tempdima
+% \end{macrocode}
+% $B%k%SJ8;zNs$NJ}$,D9$$>l9g!#(B
+% $B?FJ8;zNs$r%k%SJ8;zNs$ND9$5$K9g$o$;$F6QEy3d$j$GAH$_D>$9!#(B
+% |\pxrr@?space| $B$O(B |\pxrr@evenspace@int| $B$,JV$9CM$N$^$^$G$h$$!#(B
+% $B!V3HD%8*IU$-!W;XDj$N>l9g!"A0B&$NFM=P$rM^;_$9$k!#(B
+% \begin{macrocode}
+ \pxrr@protrtrue
+ \let\pxrr@locate@temp#1%
+ \ifnum\pxrr@athead>\@ne
+ \ifnum\pxrr@locate@temp=\pxrr@locate@inner
+ \let\pxrr@locate@temp\pxrr@locate@head
+ \fi
+ \fi
+ \let\pxrr@ck@locate\pxrr@locate@temp
+ \pxrr@decompose{#2}%
+ \edef\pxrr@natwd{\the\wd\pxrr@boxa}%
+ \pxrr@evenspace@int\pxrr@locate@temp\pxrr@boxa\relax
+ {\wd\pxrr@boxr}%
+ \else\ifdim-\pxrr@epsilon>\@tempdima
+% \end{macrocode}
+% $B%k%SJ8;zNs$NJ}$,C;$$>l9g!#(B
+% $B%k%SJ8;zNs$r?FJ8;zNs$ND9$5$K9g$o$;$F6QEy3d$j$GAH$_D>$9!#(B
+% $B$3$N>l9g!"(B|\pxrr@maxmargin| $B$r9MN8$9$kI,MW$,$"$k!#(B
+% $B$?$@$78*IU$-%k%S$N>l9g$OAH$_D>$7$r9T$o$J$$!#(B
+% |\pxrr@?space| $B$O%<%m$K@_Dj$9$k!#(B
+% \begin{macrocode}
+ \pxrr@protrfalse
+ \ifnum\pxrr@athead=\z@
+ \pxrr@decompose{#3}%
+ \edef\pxrr@natwd{\the\wd\pxrr@boxr}%
+ \pxrr@evenspace@int{#1}\pxrr@boxr
+ \pxrr@use@ruby@font{\wd\pxrr@boxa}%
+ \pxrr@adjust@margin
+ \fi
+ \let\pxrr@bspace\pxrr@zeropt
+ \let\pxrr@aspace\pxrr@zeropt
+ \else
+% \end{macrocode}
+% $BN><T$ND9$5$,Ey$7$$!J$H$_$J$9!K>l9g!#(B
+% $BFM=P%U%i%0$O>o$K56$K$9$k!J<B:]$K$O%k%S$NJ}$,6O$+$@$1D9$$$+$b(B
+% $BCN$l$J$$$,!K!#(B
+% \begin{macrocode}
+ \pxrr@protrfalse
+ \let\pxrr@bspace\pxrr@zeropt
+ \let\pxrr@aspace\pxrr@zeropt
+ \fi\fi
+% \end{macrocode}
+% $B<B:]$KAHHG$r9T$&!#(B
+% \begin{macrocode}
+ \setbox\z@\hbox{%
+ \ifnum\pxrr@side=\z@
+ \raise\pxrr@ruby@raise\box\pxrr@boxr
+ \else
+ \lower\pxrr@ruby@lower\box\pxrr@boxr
+ \fi
+ }%
+ \ifnum \ifpxrr@combo\pxrr@ck@ruby@combo\else\z@\fi >\z@
+ \pxrr@ck@compose{#2}%
+ \fi
+ \ht\z@\z@ \dp\z@\z@
+ \@tempdima\wd\z@
+ \setbox\pxrr@boxr\hbox{%
+ \box\z@
+ \kern-\@tempdima
+ \box\pxrr@boxa
+ }%
+% \end{macrocode}
+% |\ifpxrr@any@protr| $B$r@_Dj$9$k!#(B
+% \begin{macrocode}
+ \ifpxrr@protr
+ \pxrr@any@protrtrue
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@compose@twoside@block}
+% $BN>B&%k%SMQ$N%V%m%C%/9=@.!#(B
+% \begin{macrocode}
+\def\pxrr@compose@twoside@block{%
+ \let\pxrr@compose@block@do\pxrr@compose@twoside@block@do
+ \pxrr@compose@block@pre
+}
+\def\pxrr@compose@twoside@block@do#1#2#3#4{%
+% \end{macrocode}
+% |\pxrr@boxa| $B$K?FJ8;z!"(B|\pxrr@boxr| $B$K>eB&%k%S!"(B
+% |\pxrr@boxb| $B$K2<B&%k%S$N=PNO$rJ];}$9$k!#(B
+% \begin{macrocode}
+ \setbox\pxrr@boxa\pxrr@hbox{#2}%
+ \edef\pxrr@ck@body@natwd{\the\wd\pxrr@boxa}%
+ \let\pxrr@ck@locate\pxrr@locate@inner
+ \setbox\pxrr@boxr\pxrr@hbox{%
+ \pxrr@use@ruby@font
+ #3%
+ }%
+ \setbox\pxrr@boxb\pxrr@hbox{%
+ \pxrr@use@ruby@font
+ #4%
+ }%
+% \end{macrocode}
+% $B!V2?$l$+$N%k%S$,?FJ8;zNs$h$jD9$$$+!W$r8!::$9$k!#(B
+% \begin{macrocode}
+ \@tempswafalse
+ \@tempdima\wd\pxrr@boxr
+ \advance\@tempdima-\wd\pxrr@boxa
+ \ifdim\pxrr@epsilon<\@tempdima \@tempswatrue \fi
+ \@tempdima\wd\pxrr@boxb
+ \advance\@tempdima-\wd\pxrr@boxa
+ \ifdim\pxrr@epsilon<\@tempdima \@tempswatrue \fi
+% \end{macrocode}
+% $B?FJ8;z$h$jD9$$%k%S$,B8:_$9$k>l9g!#(B
+% $BD9$$J}$N%k%SJ8;zNs$ND9$5$K9g$o$;$F!"?FJ8;zNs$H(B
+% $BB>J}$N%k%SJ8;zNs$rAH$_D>$9!#(B
+% $B!J<B:]$N=hM}$O(B |\pxrr@compose@twoside@block@sub| $B$G9T$&!#!K(B
+% \begin{macrocode}
+ \if@tempswa
+ \pxrr@protrtrue
+% \end{macrocode}
+% $B!V3HD%8*IU$-!W;XDj$N>l9g!"A0B&$NFM=P$rM^;_$9$k!#(B
+% \begin{macrocode}
+ \let\pxrr@locate@temp#1%
+ \ifnum\pxrr@athead>\@ne
+ \ifnum\pxrr@locate@temp=\pxrr@locate@inner
+ \let\pxrr@locate@temp\pxrr@locate@head
+ \fi
+ \fi
+ \let\pxrr@ck@locate\pxrr@locate@temp
+% \end{macrocode}
+% $B>eB&$H2<B&$N$I$A$i$N%k%S$,D9$$$+$K1~$8$F0z?t$rJQ$($F!"(B
+% |\pxrr@compose@twoside@block@sub| $B$r8F$S=P$9!#(B
+% \begin{macrocode}
+ \ifdim\wd\pxrr@boxr<\wd\pxrr@boxb
+ \pxrr@compose@twoside@block@sub{#2}{#3}%
+ \pxrr@boxr\pxrr@boxb
+ \else
+ \pxrr@compose@twoside@block@sub{#2}{#4}%
+ \pxrr@boxb\pxrr@boxr
+ \fi
+% \end{macrocode}
+% $B?FJ8;z$NJ}$,D9$$>l9g!#(B
+% $B?FJ8;zNs$ND9$5$K9g$o$;$F!"N>J}$N%k%S$r!JJRB&$N>l9g$HF1MM$N!K(B
+% $B6QEy3d$j$GAH$_D>$9!#(B
+% \begin{macrocode}
+ \else
+ \pxrr@protrfalse
+% \end{macrocode}
+% $B8*IU$-%k%S$N>l9g$OAH$_D>$7$r9T$o$J$$!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@athead=\z@
+ \@tempdima\wd\pxrr@boxa
+ \advance\@tempdima-\wd\pxrr@boxr
+ \ifdim\pxrr@epsilon<\@tempdima
+ \pxrr@decompose{#3}%
+ \edef\pxrr@natwd{\the\wd\pxrr@boxr}%
+ \pxrr@evenspace@int{#1}\pxrr@boxr
+ \pxrr@use@ruby@font{\wd\pxrr@boxa}%
+ \pxrr@adjust@margin
+ \fi
+ \@tempdima\wd\pxrr@boxa
+ \advance\@tempdima-\wd\pxrr@boxb
+ \ifdim\pxrr@epsilon<\@tempdima
+ \pxrr@decompose{#4}%
+ \edef\pxrr@natwd{\the\wd\pxrr@boxb}%
+ \pxrr@evenspace@int{#1}\pxrr@boxb
+ \pxrr@use@ruby@font{\wd\pxrr@boxa}%
+ \pxrr@adjust@margin
+ \fi
+ \fi
+% \end{macrocode}
+% |\pxrr@?space| $B$O%<%m$K@_Dj$9$k!#(B
+% \begin{macrocode}
+ \let\pxrr@bspace\pxrr@zeropt
+ \let\pxrr@aspace\pxrr@zeropt
+ \fi
+% \end{macrocode}
+% $B<B:]$KAHHG$r9T$&!#(B
+% \begin{macrocode}
+ \setbox\z@\hbox{%
+ \@tempdima\wd\pxrr@boxr
+ \raise\pxrr@ruby@raise\box\pxrr@boxr
+ \kern-\@tempdima
+ \lower\pxrr@ruby@lower\box\pxrr@boxb
+ }%
+ \ifnum \ifpxrr@combo\pxrr@ck@ruby@combo\else\z@\fi >\z@
+ \pxrr@ck@compose{#2}%
+ \fi
+ \ht\z@\z@ \dp\z@\z@
+ \@tempdima\wd\z@
+ \setbox\pxrr@boxr\hbox{%
+ \box\z@
+ \kern-\@tempdima
+ \box\pxrr@boxa
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@body@wd}
+% |\pxrr@compose@twoside@block@sub| $B$NFbIt$GMQ$$$i$l$kJQ?t$G!"(B
+% $B!H?FJ8;zNs$N<B:]$ND9$5!I!J6QEy3d$j$GF~$C$?Cf4V$N6u$-$rF~$l$k$,(B
+% $BN>C<$N6u$-$rF~$l$J$$!K$rI=$9!#(B
+% $B@#K!CM%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@body@wd\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@compose@twoside@block@sub}
+% |\pxrr@compose@twoside@block@sub| $B$NFbIt$GMQ$$$i$l$k%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@restore@margin@values\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@compose@twoside@block@sub}
+% |\pxrr@compose@twoside@block@sub{|^^A
+% \jmeta{$B?FJ8;z(B}|}{|\jmeta{$BC;$$J}$N%k%SJ8;z(B}|}\CSa\CSb|\Means
+% $BN>B&%k%S$G?FJ8;zNs$h$jD9$$%k%SJ8;zNs$,B8:_$9$k>l9g$N(B
+% $BAH$_D>$7$N=hM}$r9T$&!#(B
+% $B$3$N%^%/%m$N8F=P;~!">eB&%k%S$N=PNO7k2L$,(B |\pxrr@boxr|$B!"(B
+% $B2<B&%k%S$N=PNO7k2L$,(B |\pxrr@boxb| $B$KF~$C$F$$$k$,!"(B
+% $B$3$N(B2$B$D$N%\%C%/%9$N$&$A!"C;$$%k%S$NJ}$,(B |\CSa|$B!"(B
+% $BD9$$%k%S$NJ}$,(B |\CSb| $B$H$7$FEO$5$l$F$$$k!#(B
+% \begin{macrocode}
+\def\pxrr@compose@twoside@block@sub#1#2#3#4{%
+ \pxrr@decompose{#1}%
+ \edef\pxrr@natwd{\the\wd\pxrr@boxa}%
+ \pxrr@evenspace@int\pxrr@locate@temp\pxrr@boxa\relax{\wd#4}%
+ \@tempdima\wd#4%
+ \advance\@tempdima-\pxrr@bspace\relax
+ \advance\@tempdima-\pxrr@aspace\relax
+ \edef\pxrr@body@wd{\the\@tempdima}%
+ \advance\@tempdima-\wd#3%
+ \ifdim\pxrr@epsilon<\@tempdima
+ \edef\pxrr@restore@margin@values{%
+ \edef\noexpand\pxrr@bspace{\pxrr@bspace}%
+ \edef\noexpand\pxrr@aspace{\pxrr@aspace}%
+ }%
+ \pxrr@decompose{#2}%
+ \edef\pxrr@natwd{\the\wd#3}%
+ \pxrr@evenspace@int\pxrr@locate@temp#3%
+ \pxrr@use@ruby@font{\pxrr@body@wd}%
+ \pxrr@adjust@margin
+ \pxrr@restore@margin@values
+ \setbox#3\hbox{%
+ \kern\pxrr@bspace\relax
+ \box#3%
+ }%
+ \else
+ \ifnum\pxrr@locate@temp=\pxrr@locate@head
+ \@tempdima\z@
+ \else\ifnum\pxrr@locate@temp=\pxrr@locate@inner
+ \@tempdima.5\@tempdima
+ \fi\fi
+ \advance\@tempdima\pxrr@bspace\relax
+ \setbox#3\hbox{%
+ \kern\@tempdima
+ \box#3%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@compose@block@pre}
+% |\pxrr@compose@block@pre{|\jmeta{$B%Q%?!<%s(B}|}{|^^A
+%r \jmeta{$B?FJ8;z(B}|}{|\jmeta{$B%k%S(B1}|}{|\jmeta{$B%k%S(B2}|}|\Means
+% $B?FJ8;zNs!&%k%SJ8;zNs$N2C9)$r9T$&!#(B
+% \Note $BN>B&%k%SBP1~$N$?$a!"%k%SMQ0z?t$,(B2$B$D$"$k!#(B
+% \begin{macrocode}
+\def\pxrr@compose@block@pre{%
+% \end{macrocode}
+% |f| $B;XDj;~$O>.=q$-2>L>$NJQ49$r;\$9!#(B
+% \begin{macrocode}
+ \pxrr@cond\ifnum\pxrr@fullsize>\z@\fi{%
+ \pxrr@compose@block@pre@a
+ }{%
+ \pxrr@compose@block@pre@d
+ }%
+}
+% {$B%Q%?!<%s(B}{$B?FJ8;z(B}{$B%k%S(B1}{$B%k%S(B2}
+\def\pxrr@compose@block@pre@a#1#2#3#4{%
+ \def\pxrr@compose@block@tempa{#4}%
+ \pxrr@transform@kana\pxrr@compose@block@tempa
+ \expandafter\pxrr@compose@block@pre@b
+ \expandafter{\pxrr@compose@block@tempa}{#1}{#2}{#3}%
+}
+% {$B%k%S(B2}{$B%Q%?!<%s(B}{$B?FJ8;z(B}{$B%k%S(B1}
+\def\pxrr@compose@block@pre@b#1#2#3#4{%
+ \def\pxrr@compose@block@tempa{#4}%
+ \pxrr@transform@kana\pxrr@compose@block@tempa
+ \expandafter\pxrr@compose@block@pre@c
+ \expandafter{\pxrr@compose@block@tempa}{#1}{#2}{#3}%
+}
+% {$B%k%S(B1}{$B%k%S(B2}{$B%Q%?!<%s(B}{$B?FJ8;z(B}
+\def\pxrr@compose@block@pre@c#1#2#3#4{%
+ \pxrr@compose@block@pre@d{#3}{#4}{#1}{#2}%
+}
+\def\pxrr@compose@block@pre@d{%
+ \pxrr@cond\ifnum\pxrr@evensp=\z@\fi{%
+ \pxrr@compose@block@pre@e
+ }{%
+ \pxrr@compose@block@pre@f
+ }%
+}
+% {$B%Q%?!<%s(B}{$B?FJ8;z(B}
+\def\pxrr@compose@block@pre@e#1#2{%
+ \pxrr@compose@block@pre@f{#1}{{#2}}%
+}
+\def\pxrr@compose@block@pre@f{%
+ \pxrr@cond\ifnum\pxrr@revensp=\z@\fi{%
+ \pxrr@compose@block@pre@g
+ }{%
+ \pxrr@compose@block@do
+ }%
+}
+% {$B%Q%?!<%s(B}{$B?FJ8;z(B}{$B%k%S(B1}{$B%k%S(B2}
+\def\pxrr@compose@block@pre@g#1#2#3#4{%
+ \pxrr@compose@block@do{#1}{#2}{{#3}}{{#4}}%
+}
+\let\pxrr@compose@block@tempa\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$BL?Na$N4h6/2=(B}
+%
+% \begin{macro}{\pxrr@add@protect}
+% |\pxrr@add@protect\CS|\Means
+% $BL?Na(B |\CS| $B$K(B |\protect| $B$r;\$7$F4h6/$J$b$N$KJQ$($k!#(B
+% |\CS| $B$O:G=i$+$i(B |\DeclareRobustCommand| $B$GDj5A$5$l$?4h6/$JL?Na$H(B
+% $B$[$\F1$8$h$&$K?6Iq$&(B
+% $B!=!=Nc$($P!"(B|\CS| $B$NDj5A$NK\BN$O(B \verb*+\CS + $B$H$$$&@)8fDV$K(B
+% $B0\$5$l$k!#(B
+% $BM#0l$NAj0cE@$O!"!VAHHGCf!W(B
+% $B!J$9$J$o$A(B |\protect|$\;=\;$|\@typeset@protect|$B!K$N>l9g$O!"(B
+% |\CS| $B$O(B \verb*+\protect\CS + $B$G$O$J$/!"C1$J$k(B \verb*+\CS + $B$K(B
+% $BE83+$5$l$k$3$H$G$"$k!#(B
+% $BAHHGCf$O(B |\protect| $B$O7k6I(B |\relax| $B$G$"$k$N$G!"(B
+% |\DeclareRobustCommand| $BDj5A$NL?Na$N>l9g!"(B|\relax| $B$,!V<B9T!W(B
+% $B$5$l$k$3$H$K$J$k$,!"(B{p\TeX}$B$G$O$3$l$,%a%H%j%C%/%0%k!=$NA^F~$K(B
+% $B43>D$9$k$N$G!"$3$N%Q%C%1!<%8$NL\E*$K1h$o$J$$$N$G$"$k!#(B
+% \Note
+% |\CS| $B$O!V@)8f8l!W!J@)8f5-9f$G$J$/!K$G$"$kI,MW$,$"$k!#(B
+% \begin{macrocode}
+\def\pxrr@add@protect#1{%
+ \expandafter\pxrr@add@protect@a
+ \csname\expandafter\@gobble\string#1\space\endcsname#1%
+}
+\def\pxrr@add@protect@a#1#2{%
+ \let#1=#2%
+ \def#2{\pxrr@check@protect\protect#1}%
+}
+\def\pxrr@check@protect{%
+ \ifx\protect\@typeset@protect
+ \expandafter\@gobble
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$BCWL?E*%(%i!<BP:v(B}
+%
+% $BCWL?E*%(%i!<$,5/$3$C$?>l9g$O!"%k%SF~NO$rJ|4~$7$F(B
+% $BC1$K?FJ8;zNs$r=PNO$9$k$3$H$K$9$k!#(B
+%
+% \begin{macro}{\pxrr@body@input}
+% $BF~NO$5$l$??FJ8;zNs!#(B
+% \begin{macrocode}
+\let\pxrr@body@input\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@prepare@fallback}
+% |\pxrr@prepare@fallback{|\jmeta{$B?FJ8;zNs(B}|}|\Means
+% \begin{macrocode}
+\def\pxrr@prepare@fallback#1{%
+ \pxrr@fatal@errorfalse
+ \def\pxrr@body@input{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@fallback}
+% $BCWL?E*%(%i!<;~$K=PNO$H$J$k$b$N!#(B
+% $BC1$K?FJ8;zNs$r=PNO$9$k$3$H$K$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@fallback{%
+ \pxrr@body@input
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@if@alive}
+% |\pxrr@if@alive{|\jmeta{$B%3!<%I(B}|}|\Means
+% $BCWL?E*%(%i!<$,L$H/@8$N>l9g$K8B$j!"(B\jmeta{$B%3!<%I(B}$B$KE83+$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@if@alive{%
+ \ifpxrr@fatal@error \expandafter\@gobble
+ \else \expandafter\@firstofone
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B@hFI$_=hM}(B}
+%
+% $B%4!<%9%H=hM}$,L58z$N>l9g$K8e$mB&$N6XB'=hM}$r9T$&$?$a!"(B
+% $B%k%SL?Na$ND>8e$KB3$/%H!<%/%s$r<hF@$7$F!"(B
+% $B$=$NA06XB'%Z%J%k%F%#!J(B|\prebreakpenalty|$B!K$NCM$rJ]B8$9$k!#(B
+% $B?.Mj@-$NDc$$J}K!$J$N$G!"%4!<%9%H=hM}$,2DG=$J>l9g$O$=$A$i$r(B
+% $BMxMQ$9$k$Y$-$G$"$k!#(B
+%
+% \begin{macro}{\pxrr@end@kinsoku}
+% $B%k%SL?NaD>8e$NJ8;z$NA06XB'%Z%J%k%F%#CM$H$_$J$9CM!#(B
+% \begin{macrocode}
+\def\pxrr@end@kinsoku{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@scan}
+% $BJRB&%k%SMQ$N@hFI$_=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@scan#1#2{%
+% \end{macrocode}
+% |\pxrr@check@kinsoku| $B$NB3$-$N=hM}!#(B
+% |\pxrr@cntr| $B$NCM$r(B |\pxrr@end@kinsoku| $B$KJ]B8$7$F!"(B
+% $B%k%S=hM}K\BN$r8F$S=P$9!#(B
+% \begin{macrocode}
+ \def\pxrr@tempc{%
+ \edef\pxrr@end@kinsoku{\the\pxrr@cntr}%
+ \pxrr@do@proc{#1}{#2}%
+ }%
+ \pxrr@check@kinsoku\pxrr@tempc
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@truby@scan}
+% $BN>B&%k%SMQ$N@hFI$_=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@truby@scan#1#2#3{%
+ \def\pxrr@tempc{%
+ \edef\pxrr@end@kinsoku{\the\pxrr@cntr}%
+ \pxrr@do@proc{#1}{#2}{#3}%
+ }%
+ \pxrr@check@kinsoku\pxrr@tempc
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@check@kinsoku}
+% |\pxrr@check@kinsoku\CS|\Means
+% |\CS| $B$ND>8e$KB3$/%H!<%/%s$K$D$$$F!"(B
+% $B$=$l$,!VDL>oJ8;z!W(B
+% $B!JOBJ8J8;z%H!<%/%s$^$?$O%+%F%4%j%3!<%I(B11$B!"(B12$B$N2$J8J8;z%H!<%/%s!K(B
+% $B$G$"$k>l9g$K$O$=$NA06XB'%Z%J%k%F%#!J(B|\prebreakpenalty|$B!K$NCM$r!"(B
+% $B$=$&$G$J$$>l9g$O%<%m$r(B |\pxrr@cntr| $B$KBeF~$9$k!#(B
+% $B$=$N8e!"(B|\CS| $B$r<B9T!JE83+!K$9$k!#(B
+% \Note $B$?$@$7!"2$J8%k%S$N>l9g!"2$J8J8;z$NA06XB'%Z%J%k%F%#$O(B 20000
+% $B$H$7$F07$&!#(B
+% \begin{macrocode}
+\def\pxrr@check@kinsoku#1{%
+ \let\pxrr@tempb#1%
+ \futurelet\pxrr@token\pxrr@check@kinsoku@a
+}
+\def\pxrr@check@kinsoku@a{%
+ \pxrr@check@char\pxrr@token
+% \end{macrocode}
+% $BOBJ8%k%S$N>l9g$O!"2$J8DL>oJ8;z$bOBJ8DL>oJ8;z$HF1$807$$$K$9$k!#(B
+% \begin{macrocode}
+ \ifpxrr@abody\else
+ \ifnum\pxrr@cntr=\@ne
+ \pxrr@cntr\tw@
+ \fi
+ \fi
+ \ifcase\pxrr@cntr
+ \pxrr@cntr\z@
+ \expandafter\pxrr@tempb
+ \or
+ \pxrr@cntr\@MM
+ \expandafter\pxrr@tempb
+ \else
+ \expandafter\pxrr@check@kinsoku@b
+ \fi
+}
+% \end{macrocode}
+% |\let| $B$5$l$?%H!<%/%s$N$^$^$G$OId9f0LCV$rF@$k$3$H$,$G$-$J$$(B
+% $B$?$a!"2~$a$F%^%/%m$N0z?t$H$7$F<u$1<h$j!"J#@=$7$?>e$G(B
+% $BJRJ}$r8e$N=hM}$K;H$&!#(B
+% $B4{$K8eB3%H!<%/%s$O!VDL>oJ8;z!W$G$"$k(B
+% $B!J$D$^$j6uGr$d(B |{| $B$G$O$J$$!K$3$H$,H=L@$7$F$$$k$3$H$KCm0U!#(B
+% \begin{macrocode}
+\def\pxrr@check@kinsoku@b#1{%
+ \pxrr@check@kinsoku@c#1#1%
+}
+\def\pxrr@check@kinsoku@c#1{%
+ \pxrr@get@prebreakpenalty\pxrr@cntr{`#1}%
+ \pxrr@tempb
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@check@char}
+% |\pxrr@check@char\CS|\Means
+% $B%H!<%/%s(B |\CS| $B$,!VDL>oJ8;z!W$G$"$k$+$rD4$Y!"0J2<$NCM$r(B |\pxrr@cntr|
+% $B$KJV$9!'(B 0 = $BDL>oJ8;z$G$J$$!((B1 = $B2$J8DL>oJ8;z!((B2 = $BOBJ8DL>oJ8;z!#(B
+%
+% $BDj5AK\BN$NCf$G%+%F%4%j%3!<%I(B12$B$N(B |kanji| $B$H$$$&%H!<%/%sNs$,(B
+% $BI,MW$J$N$G!">/!9FC<l$J=hCV$r$7$F$$$k!#(B
+% $B$^$:(B |\pxrr@check@char| $B$rDj5A$9$k$?$a$N%^%/%m$rMQ0U$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@tempa#1#2\pxrr@nil{%
+% \end{macrocode}
+% $B<B:]$K8F$S=P$5$l$k;~$K$O(B |#2| $B$O%+%F%4%j%3!<%I(B12$B$N(B |kanji| $B$K(B
+% $BCV$-49$o$k!#(B
+% $B!JITMW$J(B |\| $B$r(B |#1| $B$K<u$1<h$i$;$F$$$k!#!K(B
+% \begin{macrocode}
+ \def\pxrr@check@char##1{%
+% \end{macrocode}
+% $B$^$:@)8fDV$H%+%F%4%j%3!<%I(B11$B!"(B12$B!"(B13$B$r<jAa$/(B |\ifcat| $B$G(B
+% $BH=Dj$9$k!#(B
+% \begin{macrocode}
+ \ifcat\noexpand##1\relax
+ \pxrr@cntr\z@
+ \else\ifcat\noexpand##1\noexpand~%
+ \pxrr@cntr\z@
+ \else\ifcat\noexpand##1A%
+ \pxrr@cntr\@ne
+ \else\ifcat\noexpand##10%
+ \pxrr@cntr\@ne
+ \else
+% \end{macrocode}
+% $B$=$l0J30$N>l9g!#(B
+% $BOBJ8J8;z%H!<%/%s$G$"$k$+$r(B |\meaning| $B%F%9%H$GD4$Y$k!#(B
+% $B!JOBJ8J8;z$N(B |\ifcat| $BH=Dj$O?'!9$HLLE]$JE@$,$"$k$N$GHr$1$k!#!K(B
+% \begin{macrocode}
+ \pxrr@cntr\z@
+ \expandafter\pxrr@check@char@a\meaning##1#2\pxrr@nil
+ \fi\fi\fi\fi
+ }%
+ \def\pxrr@check@char@a##1#2##2\pxrr@nil{%
+ \ifcat @##1@%
+ \pxrr@cntr\tw@
+ \fi
+ }%
+}
+% \end{macrocode}
+% $B5,Dj$N0z?t$rMQ0U$7$F!VDj5A%^%/%m!W$r8F$V!#(B
+% \begin{macrocode}
+\expandafter\pxrr@tempa\string\kanji\pxrr@nil
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B?JF~=hM}(B}
+%
+% \begin{macro}{\pxrr@auto@penalty}
+% $B<+F0A^F~$5$l$k%Z%J%k%F%#!#(B
+% $B!J@0?tDj?t$X$N(B |\let|$B!#!K(B
+% \begin{macrocode}
+\let\pxrr@auto@penalty\z@
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@auto@icspace}
+% $BJ8;z4V$N6u$-!#(B
+% $B@#K!CM%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@auto@icspace\pxrr@zeropt
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@intr@amount}
+% $B?JF~$NI}!#(B
+% $B@#K!CM%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@intr@amount\pxrr@zeropt
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@intrude@setauto@j}
+% $BOBJ8$N>l9g$N(B |\pxrr@auto@*| $B$N@_Dj!#(B
+% \begin{macrocode}
+\def\pxrr@intrude@setauto@j{%
+% \end{macrocode}
+% $B9TJ,3d6X;_!J(B|*|$B!K$N>l9g!"(B
+% $B%Z%J%k%F%#$r(B 20000 $B$H$7!";z4V6u$-$O%<%m$K$9$k!#(B
+% \begin{macrocode}
+ \ifpxrr@bnobr
+ \let\pxrr@auto@penalty\@MM
+ \let\pxrr@auto@icspace\pxrr@zeropt
+% \end{macrocode}
+% $B$=$l0J30$N>l9g$O!"%Z%J%k%F%#$O%<%m$G!"(B
+% |\pxrr@bspace| $B$N@_Dj$r3h$+$9!#(B
+% \begin{macrocode}
+ \else
+ \let\pxrr@auto@penalty\z@
+ \if :\pxrr@bscomp
+ \let\pxrr@auto@icspace\pxrr@iaiskip
+ \else\if .\pxrr@bscomp
+ \let\pxrr@auto@icspace\pxrr@zeropt
+ \else
+ \let\pxrr@auto@icspace\pxrr@iiskip
+ \fi\fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@intrude@setauto@a}
+% $B2$J8$N>l9g$N(B |\pxrr@auto@*| $B$N@_Dj!#(B
+% \begin{macrocode}
+\def\pxrr@intrude@setauto@a{%
+% \end{macrocode}
+% $B2$J8$N>l9g!"OB2$J84V6uGrA^F~;XDj!J(B|:|$B!K$G$J$$>l9g$O!"(B
+% $B!J2$J8F1;N$H8+Pv$7$F!K9TJ,3d6X;_$K$9$k!#(B
+% \begin{macrocode}
+ \if :\pxrr@bscomp\else
+ \pxrr@bnobrtrue
+ \fi
+ \ifpxrr@bnobr
+ \let\pxrr@auto@penalty\@MM
+ \let\pxrr@auto@icspace\pxrr@zeropt
+ \else
+% \end{macrocode}
+% $B$3$NJ,4t$OOB2$J84V6uGrA^F~;XDj!J(B|:|$B!K$K8B$k!#(B
+% \begin{macrocode}
+ \let\pxrr@auto@penalty\z@
+ \let\pxrr@auto@icspace\pxrr@iaiskip
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$BA0B&?JF~=hM}(B}
+%
+% \begin{macro}{\pxrr@intrude@head}
+% $BA0B&$N?JF~=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@intrude@head{%
+% \end{macrocode}
+% $B%4!<%9%H=hM}$,M-8z$J>l9g$O?JF~=hM}$r9T$o$J$$!#(B
+% $B!J$@$+$i?JF~$,07$($J$$!#!K(B
+% \begin{macrocode}
+ \ifpxrr@ghost\else
+% \end{macrocode}
+% $B<B8z$N?JF~I}$O(B |\pxrr@bintr| $B$H(B |\pxrr@bspace| $B$N>.$5$$J}!#(B
+% \begin{macrocode}
+ \let\pxrr@intr@amount\pxrr@bspace
+ \ifdim\pxrr@bintr<\pxrr@intr@amount\relax
+ \let\pxrr@intr@amount\pxrr@bintr
+ \fi
+% \end{macrocode}
+% |\pxrr@auto@*| $B$N@_DjK!$OOBJ8%k%S$H2$J8%k%S$G=hM}$,0[$J$k!#(B
+% \begin{macrocode}
+ \ifpxrr@abody
+ \pxrr@intrude@setauto@a
+ \else
+ \pxrr@intrude@setauto@j
+ \fi
+% \end{macrocode}
+% $B<B:]$K9`L\$N=PNO$r9T$&!#(B
+%
+% $BCJMnKAF,$N>l9g!"(B|!| $B;XDj!J(B|pxrr@bfintr| $B$,??!K$J$i$P?JF~$N$?$a$N(B
+% $BIi$N%0%k!=$rF~$l$k!JB>$N9`L\$OF~$l$J$$!K!#(B
+% \begin{macrocode}
+ \ifpxrr@par@head
+ \ifpxrr@bfintr
+ \hskip-\pxrr@intr@amount\relax
+ \fi
+% \end{macrocode}
+% $BCJMnKAF,$G$J$$>l9g!";z4V6u$-$N%0%k!=!"?JF~MQ$N%0%k!=$r(B
+% $B=gHV$KF~$l$k!#(B
+% \Note $B%Z%J%k%F%#$O(B |\pxrr@put@head@penalty| $B$G4{$KF~$l$F$$$k!#(B
+% \begin{macrocode}
+ \else
+% \penalty\pxrr@auto@penalty\relax
+ \hskip-\pxrr@intr@amount\relax
+ \hskip\pxrr@auto@icspace\relax
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@put@head@penalty}
+% $BA0B&$KJd=u;XDj$GDj$a$i$l$?CM$N%Z%J%k%F%#$rCV$/!#(B
+% $B8=:_0LCV$K4{$K%Z%J%k%F%#$,$"$k>l9g$O9g;;$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@put@head@penalty{%
+ \ifpxrr@ghost\else \ifpxrr@par@head\else
+ \ifpxrr@abody
+ \pxrr@intrude@setauto@a
+ \else
+ \pxrr@intrude@setauto@j
+ \fi
+ \ifnum\pxrr@auto@penalty=\z@\else
+ \pxrr@cnta\lastpenalty \unpenalty
+ \advance\pxrr@cnta\pxrr@auto@penalty\relax
+ \penalty\pxrr@cnta
+ \fi
+ \fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B8eB&?JF~=hM}(B}
+%
+% \begin{macro}{\pxrr@intrude@end}
+% $BKvHx$G$N?JF~=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@intrude@end{%
+ \ifpxrr@ghost\else
+% \end{macrocode}
+% $B<B8z$N?JF~I}$O(B |\pxrr@aintr| $B$H(B |\pxrr@aspace| $B$N>.$5$$J}!#(B
+% \begin{macrocode}
+ \let\pxrr@intr@amount\pxrr@aspace
+ \ifdim\pxrr@aintr<\pxrr@intr@amount\relax
+ \let\pxrr@intr@amount\pxrr@aintr
+ \fi
+% \end{macrocode}
+% |\pxrr@auto@*| $B$N@_DjK!$OOBJ8%k%S$H2$J8%k%S$G=hM}$,0[$J$k!#(B
+% \begin{macrocode}
+ \pxrr@csletcs{ifpxrr@bnobr}{ifpxrr@anobr}%
+ \let\pxrr@bscomp\pxrr@ascomp
+ \ifpxrr@abody
+ \pxrr@intrude@setauto@a
+ \else
+ \pxrr@intrude@setauto@j
+ \fi
+% \end{macrocode}
+% $BD>8e$NJ8;z$NA06XB'%Z%J%k%F%#$,!"A^F~$5$l$k%0%k!<$NA0$K(B
+% $BF~$k$h$&$K$9$k!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@auto@penalty=\z@
+ \let\pxrr@auto@penalty\pxrr@end@kinsoku
+ \fi
+ \ifpxrr@afintr
+% \end{macrocode}
+% $BCJMnKvHx$G$N?JF~$r5v$9>l9g!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@auto@penalty=\z@\else
+ \penalty\pxrr@auto@penalty\relax
+ \fi
+ \kern-\pxrr@intr@amount\relax
+% \end{macrocode}
+% $BCJMnKvHx$G$O<!$N%0%k!=$r>CLG$5$;$k!JA0$N%+!<%s$O;D$k!K!#(B
+% $B$=$N$?$a!"6XB'%Z%J%k%F%#$,$"$k!JCJMnKvHx$G$O$"$jF@$J$$!K>l9g$K$N$_(B
+% $B$=$N<!$N%Z%J%k%F%#(B20000$B$rCV$/!#(B
+% $BK\J*$N6XB'%Z%J%k%F%#$O$3$l$K2C;;$5$l$k$,!"9g7WCM$O(B 10000 $B0J>e$K$J$k(B
+% $B$N$G$3$N0LCV$G$N9TJ,3d$,6X;_$5$l$k!#(B
+% \begin{macrocode}
+ \hskip\pxrr@auto@icspace\relax
+ \ifnum\pxrr@auto@penalty=\z@\else
+ \penalty\@MM
+ \fi
+ \else
+% \end{macrocode}
+% $BCJMnKvHx$G$N?JF~$r5v$5$J$$>l9g!#(B
+% \begin{macrocode}
+ \@tempskipa-\pxrr@intr@amount\relax
+ \advance\@tempskipa\pxrr@auto@icspace\relax
+ \ifnum\pxrr@auto@penalty=\z@\else
+ \penalty\pxrr@auto@penalty\relax
+ \fi
+ \hskip\@tempskipa
+ \ifnum\pxrr@auto@penalty=\z@\else
+ \penalty\@MM
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%a%$%s$G$9(B}
+%
+% \subsubsection{$B%(%s%H%j!<%]%$%s%H(B}
+%
+% \begin{macro}{\ruby}
+% \begin{macro}{\jruby}
+% $BOBJ8%k%S$N8x3+L?Na!#(B
+% |\jruby| $B$r4h6/$JL?Na$H$7$FDj5A$7$?>e$G!"(B|\ruby| $B$O$=$l$K(B
+% $BE83+$5$l$k%^%/%m$K!JL$Dj5A$J$i$P!KDj5A$9$k!#(B
+% \begin{macrocode}
+\AtBeginDocument{%
+ \providecommand*{\ruby}{\jruby}%
+}
+\newcommand*{\jruby}{%
+ \pxrr@jprologue
+ \pxrr@trubyfalse
+ \pxrr@ruby
+}
+% \end{macrocode}
+% $B4h6/$K$9$k$?$a$K!"@h$KDj5A$7$?(B |\pxrr@add@protect| $B$rMQ$$$k!#(B
+% \begin{macrocode}
+\pxrr@add@protect\jruby
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\aruby}
+% $B2$J8%k%S$N8x3+L?Na!#(B
+% $B$3$A$i$b4h6/$JL?Na$K$9$k!#(B
+% \begin{macrocode}
+\newcommand*{\aruby}{%
+ \pxrr@aprologue
+ \pxrr@trubyfalse
+ \pxrr@ruby
+}
+\pxrr@add@protect\aruby
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\truby}
+% $BOBJ8N>B&%k%S$N8x3+L?Na!#(B
+% \begin{macrocode}
+\newcommand*{\truby}{%
+ \pxrr@jprologue
+ \pxrr@trubytrue
+ \pxrr@ruby
+}
+\pxrr@add@protect\truby
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\atruby}
+% $B2$J8N>B&%k%S$N8x3+L?Na!#(B
+% \begin{macrocode}
+\newcommand*{\atruby}{%
+ \pxrr@aprologue
+ \pxrr@trubytrue
+ \pxrr@ruby
+}
+\pxrr@add@protect\atruby
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@truby}
+% $BN>B&%k%S$G$"$k$+!#(B
+% $B%9%$%C%A!#(B
+% |\pxrr@parse@option| $B$G(B |\pxrr@side| $B$rE,@Z$K@_Dj$9$k(B
+% $B$?$a$K;H$o$l$k!#(B
+% \begin{macrocode}
+\newif\ifpxrr@truby
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@option}
+% \begin{macro}{\pxrr@exoption}
+% $B%*%W%7%g%s$*$h$SBh(B2$B%*%W%7%g%s$r3JG<$9$k%^%/%m!#(B
+% \begin{macrocode}
+\let\pxrr@option\@empty
+\let\pxrr@exoption\@empty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@do@proc}
+% \begin{macro}{\pxrr@do@scan}
+% |\pxrr@ruby| $B$N=hM}Cf$K;H$o$l$k!#(B
+% \begin{macrocode}
+\let\pxrr@do@proc\@empty
+\let\pxrr@do@scan\@empty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby}
+% |\ruby| $B$*$h$S(B |\aruby| $B$N6&DL$N2<@A$1!#(B
+% $B%*%W%7%g%s$N=hM}$r9T$&!#(B
+%
+% $B%*%W%7%g%s$rFI$_%^%/%m$K3JG<$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@ruby{%
+ \@testopt\pxrr@ruby@a{}%
+}
+\def\pxrr@ruby@a[#1]{%
+ \def\pxrr@option{#1}%
+ \@testopt\pxrr@ruby@b{}%
+}
+\def\pxrr@ruby@b[#1]{%
+ \def\pxrr@exoption{#1}%
+ \ifpxrr@truby
+ \let\pxrr@do@proc\pxrr@truby@proc
+ \let\pxrr@do@scan\pxrr@truby@scan
+ \else
+ \let\pxrr@do@proc\pxrr@ruby@proc
+ \let\pxrr@do@scan\pxrr@ruby@scan
+ \fi
+ \pxrr@ruby@c
+}
+\def\pxrr@ruby@c{%
+ \ifpxrr@ghost
+ \expandafter\pxrr@do@proc
+ \else
+ \expandafter\pxrr@do@scan
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@mode@is@switching}
+% |\if\pxrr@mode@is@switching{|\jmeta{$B4pK\%b!<%I(B}|}| $B$N7A$N(B
+% if$BJ8$H$7$F;H$&!#(B
+% $B%b!<%I$,!HA*BrE*!I!J(B|M|$B!&(B|J|$B!K$G$"$k$+!#(B
+% \begin{macrocode}
+\def\pxrr@mode@is@switching{%
+ \if M\pxrr@mode T%
+ \else\if J\pxrr@mode T%
+ \else F%
+ \fi\fi T%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@bind@param}
+% $B!H8F=P;~JQ?t!I$X$N%3%T!<$r9T$&!#(B
+% \begin{macrocode}
+\def\pxrr@bind@param{%
+% \end{macrocode}
+% $B7wE@%k%SF1;~IU2C%U%i%0$N=hM}!#(B
+% $B7wE@B&$,;XDj$7$?(B |apply@combo| $B$NCM$r!H8F=P;~%Q%i%a%?!I$N(B |pxrr@combo| $B$K(B
+% $B0\F0$5$;$k!#(B
+% \begin{macrocode}
+ \ifpxrr@apply@combo
+ \pxrr@apply@combofalse
+ \pxrr@combotrue
+ \pxrr@ck@bind@param
+ \else
+ \pxrr@combofalse
+ \fi
+ \let\pxrr@c@ruby@font\pxrr@ruby@font
+ \let\pxrr@c@size@ratio\pxrr@size@ratio
+ \let\pxrr@c@inter@gap\pxrr@inter@gap
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@proc}
+% |\pxrr@ruby@proc{|\jmeta{$B?FJ8;zNs(B}|}{|\jmeta{$B%k%SJ8;zNs(B}|}|\Means
+% $B$3$l$,<jB3$NK\BN$H$J$k!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@proc#1#2{%
+ \pxrr@prepare@fallback{#1}%
+% \end{macrocode}
+% $B%U%)%s%H%5%$%:$NJQ?t$r@_Dj$7$F!"(B
+% \begin{macrocode}
+ \pxrr@bind@param
+ \pxrr@assign@fsize
+% \end{macrocode}
+% $B%*%W%7%g%s$r2r@O$9$k!#(B
+% \begin{macrocode}
+ \pxrr@parse@option\pxrr@option
+% \end{macrocode}
+% $B%k%SJ8;zF~NO$r%0%k!<%WNs$KJ,2r$9$k!#(B
+% \begin{macrocode}
+ \pxrr@decompbar{#2}%
+ \let\pxrr@ruby@list\pxrr@res
+ \edef\pxrr@ruby@count{\the\pxrr@cntr}%
+ \let\pxrr@sruby@list\relax
+% \end{macrocode}
+% $B?FJ8;zF~NO$r%0%k!<%WNs$KJ,2r$9$k!#(B
+% \begin{macrocode}
+ \pxrr@decompbar{#1}%
+ \let\pxrr@body@list\pxrr@res
+ \edef\pxrr@body@count{\the\pxrr@cntr}%
+% \end{macrocode}
+% $B0BA4%b!<%I$K4X$9$k=hM}$r9T$&!#(B
+% \begin{macrocode}
+ \ifpxrr@safe@mode
+ \pxrr@setup@safe@mode
+ \fi
+% \end{macrocode}
+% $B%b!<%I$,!HA*BrE*!I$G$"$k>l9g!"!HIaDL$N!I%b!<%I(B
+% $B!J(B|m|$B!&(B|j|$B!&(B|g|$B!K$K5"Ce$5$;$k!#(B
+% \begin{macrocode}
+ \if\pxrr@mode@is@switching
+ \pxrr@resolve@mode
+ \fi
+\ifpxrrDebug
+ \pxrr@debug@show@input
+\fi
+% \end{macrocode}
+% $BF~NO8!::$r9T$$!"%Q%9$7$?>l9g$OAHHG=hM}$K?J$`!#(B
+% \begin{macrocode}
+ \pxrr@if@alive{%
+ \if g\pxrr@mode
+ \pxrr@ruby@check@g
+ \pxrr@if@alive{%
+ \ifnum\pxrr@body@count>\@ne
+ \pxrr@ruby@main@mg
+ \else
+ \pxrr@ruby@main@g
+ \fi
+ }%
+ \else
+ \pxrr@ruby@check@m
+ \pxrr@if@alive{\pxrr@ruby@main@m}%
+ \fi
+ }%
+% \end{macrocode}
+% $B8e=hM}$r9T$&!#(B
+% \begin{macrocode}
+ \pxrr@ruby@exit
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@truby@proc}
+% |\pxrr@ruby@proc{|\jmeta{$B?FJ8;zNs(B}|}{|\jmeta{$B>eB&%k%SJ8;zNs(B}^^A
+% |}{|\jmeta{$B2<B&%k%SJ8;zNs(B}|}|\Means
+% $BN>B&%k%S$N>l9g$N<jB3$NK\BN!#(B
+% \begin{macrocode}
+\def\pxrr@truby@proc#1#2#3{%
+ \pxrr@prepare@fallback{#1}%
+% \end{macrocode}
+% $B%U%)%s%H%5%$%:$NJQ?t$r@_Dj$7$F!"(B
+% \begin{macrocode}
+ \pxrr@bind@param
+ \pxrr@assign@fsize
+% \end{macrocode}
+% $B%*%W%7%g%s$r2r@O$9$k!#(B
+% \begin{macrocode}
+ \pxrr@parse@option\pxrr@option
+% \end{macrocode}
+% $BN>B&$N%0%k!<%W%k%S$G$O(B |pxrr@all@input| $B$rMxMQ$9$k$N$G!"(B
+% $BF~NOJ8;zNs$r@_Dj$9$k!#(B
+% \begin{macrocode}
+ \def\pxrr@all@input{{#1}{#2}{#3}}%
+% \end{macrocode}
+% $BF~NOJ8;zNs$N%0%k!<%WJ,2r$r9T$&!#(B
+% \begin{macrocode}
+ \pxrr@decompbar{#3}%
+ \let\pxrr@sruby@list\pxrr@res
+ \edef\pxrr@sruby@count{\the\pxrr@cntr}%
+ \pxrr@decompbar{#2}%
+ \let\pxrr@ruby@list\pxrr@res
+ \edef\pxrr@ruby@count{\the\pxrr@cntr}%
+ \pxrr@decompbar{#1}%
+ \let\pxrr@body@list\pxrr@res
+ \edef\pxrr@body@count{\the\pxrr@cntr}%
+% \end{macrocode}
+% $B0BA4%b!<%I$K4X$9$k=hM}$r9T$&!#(B
+% \begin{macrocode}
+ \ifpxrr@safe@mode
+ \pxrr@setup@safe@mode
+ \fi
+ \if\pxrr@mode@is@switching
+ \pxrr@resolve@mode
+ \fi
+\ifpxrrDebug
+ \pxrr@debug@show@input
+\fi
+% \end{macrocode}
+% $BF~NO8!::$r9T$$!"%Q%9$7$?>l9g$OAHHG=hM}$K?J$`!#(B
+% \begin{macrocode}
+ \pxrr@if@alive{%
+ \if g\pxrr@mode
+ \pxrr@ruby@check@tg
+ \pxrr@if@alive{\pxrr@ruby@main@tg}%
+ \else
+ \pxrr@ruby@check@tm
+ \pxrr@if@alive{\pxrr@ruby@main@tm}%
+ \fi
+ }%
+% \end{macrocode}
+% $B8e=hM}$r9T$&!#(B
+% \begin{macrocode}
+ \pxrr@ruby@exit
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@setup@safe@mode}
+% $B0BA4%b!<%IMQ$N@_Dj!#(B
+% \begin{macrocode}
+\def\pxrr@setup@safe@mode{%
+% \end{macrocode}
+% $BC1=c%0%k!<%W%k%S$K6/@)E*$KJQ99$9$k!#(B
+% $B$3$l$K1~$8$F!"?FJ8;zNs$H%k%SJ8;zNs$N%0%k!<%W$r(B1$B$D$K=8@.$9$k!#(B
+% \begin{macrocode}
+ \let\pxrr@mode=g\relax
+ \pxrr@unite@group\pxrr@body@list
+ \def\pxrr@body@count{1}%
+ \pxrr@unite@group\pxrr@ruby@list
+ \def\pxrr@ruby@count{1}%
+ \ifx\pxrr@sruby@list\relax\else
+ \pxrr@unite@group\pxrr@sruby@list
+ \def\pxrr@sruby@count{1}%
+ \fi
+% \end{macrocode}
+% $B!HJ8;zC10L$N%9%-%c%s!I$,I,MW$J5!G=$rL58z$K$9$k!#(B
+% \begin{macrocode}
+ \chardef\pxrr@evensp\z@
+ \chardef\pxrr@revensp\z@
+ \chardef\pxrr@fullsize\z@
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@resolve@mode}
+% $B4pK\%b!<%I$,!HA*BrE*!I!J(B|M|$B!&(B|J|$B!K$G$"$k>l9g$K!">u67$K1~$8$F(B
+% $BE,@Z$JDL>o$N%b!<%I$K@Z$jBX$($k!#(B
+% \begin{macrocode}
+\def\pxrr@resolve@mode{%
+ \ifnum\pxrr@body@count=\@ne
+% \end{macrocode}
+% $B%k%S%0%k!<%W$,(B1$B$D$G?FJ8;z$,J#?t$"$k>l9g$K$O%0%k!<%W%k%S$rA*Br$7!"(B
+% \begin{macrocode}
+ \ifnum\pxrr@ruby@count=\@ne
+ \let\pxrr@pre\pxrr@decompose
+ \let\pxrr@post\relax
+ \pxrr@body@list
+ \ifnum\pxrr@cntr=\@ne\else
+ \let\pxrr@mode=g%
+ \fi
+ \fi
+% \end{macrocode}
+% $B$=$l0J30$O%b%N%k%S!&=O8l%k%S$rA*Br$9$k!#(B
+% \begin{macrocode}
+ \if M\pxrr@mode \let\pxrr@mode=m\fi
+ \if J\pxrr@mode \let\pxrr@mode=j\fi
+\ifpxrrDebug
+ \pxrr@debug@show@resolve@mode
+\fi
+% \end{macrocode}
+% |\pxrr@check@option| $B$G9T$C$F$$$kD4@0$r$d$jD>$9!#(B
+% \begin{macrocode}
+ \if g\pxrr@mode
+ \chardef\pxrr@athead\z@
+ \fi
+ \if g\pxrr@mode\else
+ \chardef\pxrr@evensp\@ne
+ \fi
+ \else
+ \pxrr@fatal@bad@switching
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$BF~NO8!::(B}
+%
+% $B%0%k!<%W!&J8;z$N8D?t$N8!::$r9T$&<jB3!#(B
+%
+% \begin{macro}{\pxrr@ruby@check@g}
+% $B%0%k!<%W%k%S$N>l9g!"%k%SJ8;z%0%k!<%W$H?FJ8;z%0%k!<%W$N8D?t$,(B
+% $B0lCW$9$kI,MW$,$"$k!#(B
+% $B$5$i$K!"%0%k!<%W$,J#?t!J2DF0%0%k!<%W%k%S!K$K$G$-$k$N$O!"(B
+% $BOBJ8%k%S$G$"$j!"(B
+% $B$7$+$b3HD%5!G=$,M-8z$G$"$k>l9g$K8B$i$l$k!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@check@g{%
+ \ifnum\pxrr@body@count=\pxrr@ruby@count\relax
+ \ifnum\pxrr@body@count=\@ne\else
+ \ifpxrr@abody
+ \pxrr@fatal@bad@movable
+ \else\ifnum\pxrr@extra=\z@
+ \pxrr@fatal@na@movable
+ \fi\fi
+ \fi
+ \else
+ \pxrr@fatal@bad@length\pxrr@body@count\pxrr@ruby@count
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@check@m}
+% $B%b%N%k%S!&=O8l%k%S$N>l9g!"?FJ8;zNs$OC10l$N%0%k!<%W$+$i$J$k(B
+% $BI,MW$,$"$k!#(B
+% $B$5$i$K!"?FJ8;zNs$N!TJ8;z!U$N8D?t$H%k%SJ8;zNs$N%0%k!<%W$N8D?t$,(B
+% $B0lCW$9$kI,MW$,$"$k!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@check@m{%
+ \ifnum\pxrr@body@count=\@ne
+% \end{macrocode}
+% $B$3$3$G(B |\pxrr@body@list|$B!?(B|count| $B$rJ8;z$4$H$NJ,2r$KCV$-49$($k!#(B
+% \begin{macrocode}
+ \let\pxrr@pre\pxrr@decompose
+ \let\pxrr@post\relax
+ \pxrr@body@list
+ \let\pxrr@body@list\pxrr@res
+ \edef\pxrr@body@count{\the\pxrr@cntr}%
+ \ifnum\pxrr@body@count=\pxrr@ruby@count\relax\else
+ \pxrr@fatal@bad@length\pxrr@body@count\pxrr@ruby@count
+ \fi
+ \else
+ \pxrr@fatal@bad@mono
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@check@tg}
+% $BN>B&$N%0%k!<%W%k%S$N>l9g!#(B
+% $B%k%S$,(B2$B$D$"$k$3$H$r=|$-!"JRB&$N>l9g$HF1$8!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@check@tg{%
+ \ifnum\pxrr@body@count=\pxrr@ruby@count\relax\else
+ \pxrr@fatal@bad@length\pxrr@body@count\pxrr@ruby@count
+ \fi
+ \ifnum\pxrr@body@count=\pxrr@sruby@count\relax\else
+ \pxrr@fatal@bad@length\pxrr@body@count\pxrr@sruby@count
+ \fi
+ \pxrr@if@alive{%
+ \ifnum\pxrr@body@count=\@ne\else
+ \ifpxrr@abody
+ \pxrr@fatal@bad@movable
+ \else\ifnum\pxrr@extra=\z@
+ \pxrr@fatal@na@movable
+ \fi\fi
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@check@tm}
+% $BN>B&$N%b%N%k%S$N>l9g!#(B
+% $B%k%S$,(B2$B$D$"$k$3$H$r=|$-!"JRB&$N>l9g$HF1$8!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@check@tm{%
+ \ifnum\pxrr@body@count=\@ne
+ \let\pxrr@pre\pxrr@decompose
+ \let\pxrr@post\relax
+ \pxrr@body@list
+ \let\pxrr@body@list\pxrr@res
+ \edef\pxrr@body@count{\the\pxrr@cntr}%
+ \ifnum\pxrr@body@count=\pxrr@ruby@count\relax\else
+ \pxrr@fatal@bad@length\pxrr@body@count\pxrr@ruby@count
+ \fi
+ \ifnum\pxrr@body@count=\pxrr@sruby@count\relax\else
+ \pxrr@fatal@bad@length\pxrr@body@count\pxrr@sruby@count
+ \fi
+ \else
+ \pxrr@fatal@bad@mono
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B%k%SAHHG=hM}(B}
+%
+% \begin{macro}{\ifpxrr@par@head}
+% $B%k%SIUJ8;zNs$N=PNO0LCV$,CJMn$N@hF,$G$"$k$+!#(B
+% \begin{macrocode}
+\newif\ifpxrr@par@head
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@check@par@head}
+% $B8=:_$N0LCV$K4p$E$$$F(B |\ifpxrr@par@head| $B$NCM$r@_Dj$9$k!#(B
+% $BEvA3!"2?$i$+$N=PNO$r9T$&A0$K8F$VI,MW$,$"$k!#(B
+% \begin{macrocode}
+\def\pxrr@check@par@head{%
+ \ifvmode
+ \pxrr@par@headtrue
+ \else
+ \pxrr@par@headfalse
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@if@last}
+% |\pxrr@if@last{|\jmeta{$B??(B}|}{|\jmeta{$B56(B}|}|\Means
+% |\pxrr@pre/inter| $B$NK\BN$H$7$F;H$$!"$=$l$,:G8e$N(B |\pxrr@pre/inter|
+% $B$G$"$k!J(B|\pxrr@post| $B$ND>A0$K$"$k!K>l9g$K(B\jmeta{$B??(B}$B!"$J$$>l9g$K(B
+% \jmeta{$B56(B}$B$KE83+$5$l$k!#(B
+% $B$3$N%^%/%m$N8F=P$O(B |\pxrr@preinterpre| $B$NK\BN$NKvHx$G$J$1$l$P$J$i$J$$!#(B
+% \begin{macrocode}
+\def\pxrr@if@last#1#2#3{%
+ \ifx#3\pxrr@post #1%
+ \else #2%
+ \fi
+ #3%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@inter@mono}
+% $B%b%N%k%S$N%V%m%C%/4V$KA^F~$5$l$k6u$-!#(B
+% $BOBJ84V6uGr$H$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@inter@mono{%
+ \hskip\pxrr@iiskip\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@takeout@any@protr}
+% |\ifpxrr@any@protr| $B$NCM$r(B |\pxrr@hbox| $B$N30$K=P$9!#(B
+% \Note
+% color $BIT;HMQ;~$O(B |\hbox| $B$K$h$k(B 1 $BCJ$N%0%k!<%W$@$1=hM}$9$l$P(B
+% $B$h$$$,!"(Bcolor $B;HMQ;~$O(B |\color@begingroup|$B!A(B|\color@endgroup|
+% $B$K$h$k%0%k!<%W$,@8$8$k$N$G!"(B2 $BCJJ,$N=hM}$,I,MW!#(B
+%
+% color $BIT;HMQ;~$NDj5A!#(B
+% \begin{macrocode}
+\def\pxrr@takeout@any@protr@nocolor{%
+ \ifpxrr@any@protr
+ \aftergroup\pxrr@any@protrtrue
+ \fi
+}
+% \end{macrocode}
+% color $B;HMQ;~$NDj5A!#(B
+% \begin{macrocode}
+\def\pxrr@takeout@any@protr{%
+ \ifpxrr@any@protr
+ \aftergroup\pxrr@takeout@any@protr@a
+ \fi
+}
+\def\pxrr@takeout@any@protr@a{%
+ \aftergroup\pxrr@any@protrtrue
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@main@m}
+% $B%b%N%k%S!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@main@m{%
+ \pxrr@zip@list\pxrr@body@list\pxrr@ruby@list
+ \let\pxrr@whole@list\pxrr@res
+ \pxrr@check@par@head
+ \pxrr@put@head@penalty
+ \pxrr@any@protrfalse
+\ifpxrrDebug
+\pxrr@debug@show@recomp
+\fi
+% \end{macrocode}
+% |\ifpxrr@?intr| $B$NCM$K1~$8$F(B |\pxrr@locate@*@| $B$NCM$r7hDj$9$k!#(B
+% $B$J$*!"N>B&$GFM=P$r6X;_$9$k$N$OIT2D$G$"$k$3$H$KCm0U!#(B
+% \begin{macrocode}
+ \let\pxrr@locate@head@\pxrr@locate@inner
+ \let\pxrr@locate@end@\pxrr@locate@inner
+ \let\pxrr@locate@sing@\pxrr@locate@inner
+ \ifpxrr@aprotr\else
+ \let\pxrr@locate@end@\pxrr@locate@end
+ \let\pxrr@locate@sing@\pxrr@locate@end
+ \fi
+ \ifpxrr@bprotr\else
+ \let\pxrr@locate@head@\pxrr@locate@head
+ \let\pxrr@locate@sing@\pxrr@locate@head
+ \fi
+ \def\pxrr@pre##1##2{%
+ \pxrr@if@last{%
+% \end{macrocode}
+% $BC1FH%V%m%C%/$N>l9g!#(B
+% \begin{macrocode}
+ \pxrr@compose@block\pxrr@locate@sing@{##1}{##2}%
+ \pxrr@intrude@head
+ \unhbox\pxrr@boxr
+ \pxrr@intrude@end
+ \pxrr@takeout@any@protr
+ }{%
+% \end{macrocode}
+% $B@hF,%V%m%C%/$N>l9g!#(B
+% \begin{macrocode}
+ \pxrr@compose@block\pxrr@locate@head@{##1}{##2}%
+ \pxrr@intrude@head
+ \unhbox\pxrr@boxr
+ }%
+ }%
+ \def\pxrr@inter##1##2{%
+ \pxrr@if@last{%
+% \end{macrocode}
+% $BKvHx%V%m%C%/$N>l9g!#(B
+% \begin{macrocode}
+ \pxrr@compose@block\pxrr@locate@end@{##1}{##2}%
+ \pxrr@inter@mono
+ \unhbox\pxrr@boxr
+ \pxrr@intrude@end
+ \pxrr@takeout@any@protr
+ }{%
+% \end{macrocode}
+% $BCf4V%V%m%C%/$N>l9g!#(B
+% \begin{macrocode}
+ \pxrr@compose@block\pxrr@locate@inner{##1}{##2}%
+ \pxrr@inter@mono
+ \unhbox\pxrr@boxr
+ }%
+ }%
+ \let\pxrr@post\@empty
+ \setbox\pxrr@boxr\pxrr@hbox{\pxrr@whole@list}%
+% \end{macrocode}
+% $B=O8l%k%S;XDj$N>l9g!"(B|\ifpxrr@any@protr| $B$,??$G$"$k>l9g$O:FD4@0$9$k!#(B
+% \begin{macrocode}
+ \if j\pxrr@mode
+ \ifpxrr@any@protr
+ \pxrr@ruby@redo@j
+ \fi
+ \fi
+ \unhbox\pxrr@boxr
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@redo@j}
+% $B%b%N%k%S=hM}$G$-$J$$!J%k%S$,D9$/$J$k%V%m%C%/$,$"$k!K=O8l%k%S$r(B
+% $BE,@Z$KAH$_$J$*$9!#(B
+% $B8=>u$G$O!"C1=c$K%0%k!<%W%k%S$NAH$_J}$K$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@redo@j{%
+ \pxrr@concat@list\pxrr@body@list
+ \let\pxrr@body@list\pxrr@res
+ \pxrr@concat@list\pxrr@ruby@list
+ \let\pxrr@ruby@list\pxrr@res
+ \pxrr@zip@single\pxrr@body@list\pxrr@ruby@list
+ \let\pxrr@whole@list\pxrr@res
+\ifpxrrDebug
+\pxrr@debug@show@concat
+\fi
+ \let\pxrr@locate@sing@\pxrr@locate@inner
+ \ifpxrr@aprotr\else
+ \let\pxrr@locate@sing@\pxrr@locate@end
+ \fi
+ \ifpxrr@bprotr\else
+ \let\pxrr@locate@sing@\pxrr@locate@head
+ \fi
+ \def\pxrr@pre##1##2{%
+ \pxrr@compose@block\pxrr@locate@sing@{##1}{##2}%
+ \pxrr@intrude@head
+ \unhbox\pxrr@boxr
+ \pxrr@intrude@end
+ }%
+ \let\pxrr@inter\@undefined
+ \let\pxrr@post\@empty
+ \setbox\pxrr@boxr\pxrr@hbox{\pxrr@whole@list}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@main@g}
+% $BC1=c%0%k!<%W%k%S$N>l9g!#(B
+%
+% $B%0%k!<%W$,(B1$B$D$7$+$J$$A0Ds$J$N$GB?>/>iD9$H$J$k$,!"(B
+% $B4pK\E*$K(B |\pxrr@ruby@main@m| $B$N=hM}$rF'=1$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@main@g{%
+ \pxrr@zip@list\pxrr@body@list\pxrr@ruby@list
+ \let\pxrr@whole@list\pxrr@res
+ \pxrr@check@par@head
+ \pxrr@put@head@penalty
+\ifpxrrDebug
+\pxrr@debug@show@recomp
+\fi
+ \let\pxrr@locate@sing@\pxrr@locate@inner
+ \ifpxrr@aprotr\else
+ \let\pxrr@locate@sing@\pxrr@locate@end
+ \fi
+ \ifpxrr@bprotr\else
+ \let\pxrr@locate@sing@\pxrr@locate@head
+ \fi
+ \def\pxrr@pre##1##2{%
+ \pxrr@compose@block\pxrr@locate@sing@{##1}{##2}%
+ \pxrr@intrude@head
+ \unhbox\pxrr@boxr
+ \pxrr@intrude@end
+ }%
+ \let\pxrr@inter\@undefined
+ \let\pxrr@post\@empty
+% \end{macrocode}
+% $B%0%k!<%W%k%S$O(B |\ifpxrr@any@protr| $B$NH=Dj$,ITMW$J$N$GD>@\=PNO$9$k!#(B
+% \begin{macrocode}
+ \pxrr@whole@list
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@main@tm}
+% $BN>B&$N%b%N%k%S$N>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@main@tm{%
+ \pxrr@tzip@list\pxrr@body@list\pxrr@ruby@list\pxrr@sruby@list
+ \let\pxrr@whole@list\pxrr@res
+ \pxrr@check@par@head
+ \pxrr@any@protrfalse
+\ifpxrrDebug
+\pxrr@debug@show@recomp
+\fi
+ \let\pxrr@locate@head@\pxrr@locate@inner
+ \let\pxrr@locate@end@\pxrr@locate@inner
+ \let\pxrr@locate@sing@\pxrr@locate@inner
+ \ifpxrr@aprotr\else
+ \let\pxrr@locate@end@\pxrr@locate@end
+ \let\pxrr@locate@sing@\pxrr@locate@end
+ \fi
+ \ifpxrr@bprotr\else
+ \let\pxrr@locate@head@\pxrr@locate@head
+ \let\pxrr@locate@sing@\pxrr@locate@head
+ \fi
+ \def\pxrr@pre##1##2##3{%
+ \pxrr@if@last{%
+ \pxrr@compose@twoside@block\pxrr@locate@sing@
+ {##1}{##2}{##3}%
+ \pxrr@intrude@head
+ \unhbox\pxrr@boxr
+ \pxrr@intrude@end
+ \pxrr@takeout@any@protr
+ }{%
+ \pxrr@compose@twoside@block\pxrr@locate@head@
+ {##1}{##2}{##3}%
+ \pxrr@intrude@head
+ \unhbox\pxrr@boxr
+ }%
+ }%
+ \def\pxrr@inter##1##2##3{%
+ \pxrr@if@last{%
+ \pxrr@compose@twoside@block\pxrr@locate@end@
+ {##1}{##2}{##3}%
+ \pxrr@inter@mono
+ \unhbox\pxrr@boxr
+ \pxrr@intrude@end
+ \pxrr@takeout@any@protr
+ }{%
+ \pxrr@compose@twoside@block\pxrr@locate@inner
+ {##1}{##2}{##3}%
+ \pxrr@inter@mono
+ \unhbox\pxrr@boxr
+ }%
+ }%
+ \let\pxrr@post\@empty
+ \setbox\pxrr@boxr\pxrr@hbox{\pxrr@whole@list}%
+ \unhbox\pxrr@boxr
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@main@tg}
+% $BN>B&$NC1=c%0%k!<%W%k%S$N>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@main@tg{%
+ \pxrr@check@par@head
+ \pxrr@put@head@penalty
+ \let\pxrr@locate@sing@\pxrr@locate@inner
+ \ifpxrr@aprotr\else
+ \let\pxrr@locate@sing@\pxrr@locate@end
+ \fi
+ \ifpxrr@bprotr\else
+ \let\pxrr@locate@sing@\pxrr@locate@head
+ \fi
+ \expandafter\pxrr@compose@twoside@block\expandafter\pxrr@locate@sing@
+ \pxrr@all@input
+ \pxrr@intrude@head
+ \unhbox\pxrr@boxr
+ \pxrr@intrude@end
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ruby@main@mg}
+% $BL$<BAu!J8F=P$b$J$$!K!#(B
+% \begin{macrocode}
+\let\pxrr@ruby@main@mg\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$BA0=hM}(B}
+%
+% $B%4!<%9%H=hM}$9$k!#$=$N$?$a!"E83+ITG=L?Na$,!D!#(B
+%
+% \begin{macro}{\ifpxrr@ghost}
+% $B<B9TCf$N%k%SL?Na$G%4!<%9%H=hM}$,M-8z$+!#(B
+% \begin{macrocode}
+\newif\ifpxrr@ghost
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@jprologue}
+% $BOBJ8%k%SMQ$N3+;O=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@jprologue{%
+% \end{macrocode}
+% $B%4!<%9%H=hM}$r9T$&>l9g!"0lHV:G=i$K8=$l$kE83+ITG=%H!<%/%s$,(B
+% $B%4!<%9%HJ8;z!JA43Q6uGr!K$G$"$k$3$H$,4NMW$G$"$k!#(B
+% \begin{macrocode}
+ \ifpxrr@jghost
+ \pxrr@jghost@char
+ \pxrr@inhibitglue
+ \fi
+% \end{macrocode}
+% $B%k%S$N=hM}$NK\BN$OA4$F$3$N%0%k!<%W$NCf$G9T$o$l$k!#(B
+% \begin{macrocode}
+ \begingroup
+ \pxrr@abodyfalse
+ \pxrr@csletcs{ifpxrr@ghost}{ifpxrr@jghost}%
+% \end{macrocode}
+% $B=PNO$7$?A43Q6uGr$NI}$@$1La$7$F$*$/!#(B
+% \begin{macrocode}
+ \ifpxrr@jghost
+ \setbox\pxrr@boxa\hbox{\pxrr@jghost@char}%
+ \kern-\wd\pxrr@boxa
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@aghost}
+% $B2$J8MQ$N%4!<%9%HJ8;z$NDj5A!#(B
+% $B9g@.8l5-9f$O(BT1$B%(%s%3!<%G%#%s%0$N0LCV(B23$B$K$"$k!#(B
+% $B=>$C$F!"(BT1$B$N%U%)%s%H$,I,MW$K$J$k$,!"$3$3$G$O(B
+% Latin Modern Roman$B$r(B2.5\,pt$B$N%5%$%:$GMQ$$$k!#(B
+% $B6K>.$N%5%$%:$K$7$F$$$k$N$O!"9g@.8l5-9f$N9b$5$,1F6A$9$k2DG=@-$r(B
+% $BHr$1$k$?$a$G$"$k!#(B
+% LM$B%U%)%s%H$N(B{\TeX}$B%U%)%s%HL>$OHG$K$h$j0[$J$k$h$&$J$N$G!"(B
+% NFSS$B$rDL$7$FL\E*$N%U%)%s%H$N(Bfontdef$B$rF@$F$$$k!#(B
+% $B!J%0%k!<%WFb$G(B |\usefont{T1}{lmr}{m}{n}| $B$r8F$s$G$*$/$H!"(B
+% $BBg0hE*$K(B |\T1/lmr/m/n/2.5| $B$,Dj5A$5$l$k!#!K(B
+% \begin{macrocode}
+\chardef\pxrr@aghostchar=23 % compwordmark
+\let\pxrr@aghost\relax
+\let\pxrr@aghostfont\relax
+\def\pxrr@setup@aghost{%
+ \global\let\pxrr@setup@aghost\relax
+ \IfFileExists{t1lmr.fd}{%
+ \begingroup
+ \fontsize{2.5}{0}\usefont{T1}{lmr}{m}{n}%
+ \endgroup
+ \global\pxrr@letcs\pxrr@aghostfont{T1/lmr/m/n/2.5}%
+ \gdef\pxrr@aghost{{\pxrr@aghostfont\pxrr@aghostchar}}%
+ \pxrr@force@nonpunct@achar{\pxrr@aghostchar}%
+ }{%else
+ \pxrr@warn{Ghost embedding for \string\aruby\space
+ is disabled,\MessageBreak
+ since package lmodern is missing}%
+ \global\pxrr@aghostfalse
+ \global\let\pxrr@aghosttrue\relax
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@aprologue}
+% $B2$J8%k%SMQ$N3+;O=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@aprologue{%
+ \ifpxrr@aghost
+ \pxrr@aghost
+ \fi
+ \begingroup
+ \pxrr@abodytrue
+ \pxrr@csletcs{ifpxrr@ghost}{ifpxrr@aghost}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B8e=hM}(B}
+%
+% $B%4!<%9%H=hM}$9$k!#(B
+%
+% \begin{macro}{\pxrr@ruby@exit}
+% $B=PNO$r=*$($F!":G8e$K8F$P$l$k%^%/%m!#(B
+% $BCWL?E*%(%i!<$,5/$3$C$?>l9g$O%U%)!<%k%P%C%/=hM}$r9T$&!#(B
+% $B$=$N8e$O!"OBJ8%k%S$H2$J8%k%S$G=hM}$,0[$J$k!#(B
+% \begin{macrocode}
+\def\pxrr@ruby@exit{%
+ \ifpxrr@fatal@error
+ \pxrr@fallback
+ \fi
+ \ifpxrr@abody
+ \expandafter\pxrr@aepilogue
+ \else
+ \expandafter\pxrr@jepilogue
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@jepilogue}
+% $BOBJ8$N>l9g$N=*N;=hM}!#(B
+% $B3+;O=hM}$HF1MM!"A43Q6uGr$r%4!<%9%HJ8;z$KMQ$$$k!#(B
+% \begin{macrocode}
+\def\pxrr@jepilogue{%
+ \ifpxrr@jghost
+ \setbox\pxrr@boxa\hbox{\pxrr@jghost@char}%
+ \kern-\wd\pxrr@boxa
+ \fi
+% \end{macrocode}
+% |\pxrr@?prologue| $B$NCf$N(B |\begingroup| $B$G;O$^$k%0%k!<%W$rJD$8$k!#(B
+% \begin{macrocode}
+ \endgroup
+ \ifpxrr@jghost
+ \pxrr@inhibitglue
+ \pxrr@jghost@char
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@aepilogue}
+% $B2$J8$N>l9g$N=*N;=hM}!#(B
+% $B9g@.8l5-9f$r%4!<%9%HJ8;z$KMQ$$$k!#(B
+% \begin{macrocode}
+\def\pxrr@aepilogue{%
+ \endgroup
+ \ifpxrr@aghost
+ \pxrr@aghost
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%G%P%C%0MQ=PNO(B}
+%
+% \begin{macrocode}
+\def\pxrr@debug@show@input{%
+ \typeout{----\pxrr@pkgname\space input:^^J%
+ ifpxrr@abody = \meaning\ifpxrr@abody^^J%
+ ifpxrr@truby = \meaning\ifpxrr@truby^^J%
+ pxrr@ruby@fsize = \pxrr@ruby@fsize^^J%
+ pxrr@body@zw = \pxrr@body@zw^^J%
+ pxrr@ruby@zw = \pxrr@ruby@zw^^J%
+ pxrr@iiskip = \pxrr@iiskip^^J%
+ pxrr@iaiskip = \pxrr@iaiskip^^J%
+ pxrr@htratio = \pxrr@htratio^^J%
+ pxrr@ruby@raise = \pxrr@ruby@raise^^J%
+ pxrr@ruby@lower = \pxrr@ruby@lower^^J%
+ ifpxrr@bprotr = \meaning\ifpxrr@bprotr^^J%
+ ifpxrr@aprotr = \meaning\ifpxrr@aprotr^^J%
+ pxrr@side = \the\pxrr@side^^J%
+ pxrr@evensp = \the\pxrr@evensp^^J%
+ pxrr@fullsize = \the\pxrr@fullsize^^J%
+ pxrr@bscomp = \meaning\pxrr@bscomp^^J%
+ pxrr@ascomp = \meaning\pxrr@ascomp^^J%
+ ifpxrr@bnobr = \meaning\ifpxrr@bnobr^^J%
+ ifpxrr@anobr = \meaning\ifpxrr@anobr^^J%
+ ifpxrr@bfintr = \meaning\ifpxrr@bfintr^^J%
+ ifpxrr@afintr = \meaning\ifpxrr@afintr^^J%
+ pxrr@bintr = \pxrr@bintr^^J%
+ pxrr@aintr = \pxrr@aintr^^J%
+ pxrr@athead = \the\pxrr@athead^^J%
+ pxrr@mode = \meaning\pxrr@mode^^J%
+ ifpxrr@athead@given = \meaning\ifpxrr@athead@given^^J%
+ ifpxrr@mode@given = \meaning\ifpxrr@mode@given^^J%
+ pxrr@body@list = \meaning\pxrr@body@list^^J%
+ pxrr@body@count = \@nameuse{pxrr@body@count}^^J%
+ pxrr@ruby@list = \meaning\pxrr@ruby@list^^J%
+ pxrr@ruby@count = \@nameuse{pxrr@ruby@count}^^J%
+ pxrr@end@kinsoku = \pxrr@end@kinsoku^^J%
+ ----
+ }%
+}
+\def\pxrr@debug@show@recomp{%
+ \typeout{----\pxrr@pkgname\space recomp:^^J%
+ pxrr@body@list = \meaning\pxrr@body@list^^J%
+ pxrr@body@count = \pxrr@body@count^^J%
+ pxrr@ruby@list = \meaning\pxrr@ruby@list^^J%
+ pxrr@ruby@count = \pxrr@ruby@count^^J%
+ pxrr@res = \meaning\pxrr@res^^J%
+ ----
+ }%
+}
+\def\pxrr@debug@show@concat{%
+ \typeout{----\pxrr@pkgname\space concat:^^J%
+ pxrr@body@list = \meaning\pxrr@body@list^^J%
+ pxrr@ruby@list = \meaning\pxrr@ruby@list^^J%
+ pxrr@whole@list = \meaning\pxrr@whole@list^^J%
+ ----
+ }%
+}
+\def\pxrr@debug@show@resolve@mode{%
+ \typeout{----\pxrr@pkgname\space resolve-mode:
+ \meaning\pxrr@mode}%
+}
+% \end{macrocode}
+%
+%^^A------------------------------------
+% \section{$B<BAu!J7wE@4XO"!K(B}
+%
+% \subsection{$B%(%i!<%a%C%;!<%8(B}
+%
+% $B;XDj$NL>A0$N7wE@J8;z$,L$EPO?$N>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@warn@na@kmark#1{%
+ \pxrr@warn{Unavailable kenten mark '#1'}%
+}
+% \end{macrocode}
+%
+% $B%Q%i%a%?@_DjL?Na$GL58z$JCM$,;XDj$5$l$?>l9g!#(B
+% \begin{macrocode}
+\def\pxrr@err@invalid@value#1{%
+ \pxrr@error{Invalid value '#1'}%
+ {\@eha}%
+}
+% \end{macrocode}
+%
+% \subsection{$B%Q%i%a%?(B}
+%
+% \subsubsection{$BA4HL@_Dj(B}
+%
+% \begin{macro}{\pxrr@k@ymark}
+% $B2#AH$N<g$N7wE@%^!<%/$N%3!<%I!#(B
+% \begin{macrocode}
+\let\pxrr@k@ymark\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@ysmark}
+% $B2#AH$NI{$N7wE@%^!<%/$N%3!<%I!#(B
+% \begin{macrocode}
+\let\pxrr@k@ysmark\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@tmark}
+% $B=DAH$N<g$N7wE@%^!<%/$N%3!<%I!#(B
+% \begin{macrocode}
+\let\pxrr@k@tmark\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@tsmark}
+% $B=DAH$NI~$N7wE@%^!<%/$N%3!<%I!#(B
+% \begin{macrocode}
+\let\pxrr@k@tsmark\@undefined
+% \end{macrocode}
+% \end{macro}
+%
+% $B7wE@%^!<%/$N=i4|CM$N@_Dj!#(B
+% \begin{macrocode}
+\AtEndOfPackage{%
+ \pxrr@k@get@mark\pxrr@k@ymark{bullet*}%
+ \pxrr@k@get@mark\pxrr@k@ysmark{sesame*}%
+ \pxrr@k@get@mark\pxrr@k@tmark{sesame*}%
+ \pxrr@k@get@mark\pxrr@k@tsmark{bullet*}%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\pxrr@k@ruby@font}
+% $B7wE@MQ%U%)%s%H@ZBXL?Na!#(B
+% \begin{macrocode}
+\let\pxrr@k@ruby@font\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@size@ratio}
+% $B7wE@J8;z%5%$%:!#(B
+% $B!J(B|\kentensizeratio|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@k@size@ratio{0.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@k@ghost}
+% $B%4!<%9%H=hM}$r9T$&$+!#(B
+% $B%9%$%C%A!#(B
+% \Note $B7wE@$G$OOBJ8%4!<%9%H=hM}$rI,$:9T$&!#(B
+% \begin{macrocode}
+\newif\ifpxrr@k@ghost \pxrr@k@ghosttrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@inter@gap}
+% $B7wE@$H?FJ8;z$N4V$N6u$-(B
+% $B!J(B|\kentenintergap|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@k@inter@gap{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@ruby@inter@gap}
+% $B7wE@$H%k%S$N4V$N6u$-(B
+% $B!J(B|\kentenrubyintergap|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@k@ruby@inter@gap{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@d@side}
+% $B7wE@$r?FJ8;z$N>e2<$N$I$A$i$KIU$9$+!#(B
+% 0 = $B>eB&!((B1 = $B2<B&!#(B
+% |\kentensetup| $B$N(B |P|$B!?(B|S| $B$N@_Dj!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@k@d@side=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@d@mark}
+% $B7wE@%^!<%/$N<oN`!#(B
+% 0 = $B<g!((B1 = $BI{!#(B
+% |\kentensetup| $B$N(B |p|$B!?(B|s| $B$N@_Dj!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@k@d@mark=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@ruby@combo}
+% $B%k%S$H7wE@$,F1;~$KE,MQ$5$l$?>l9g$N5sF0!#(B
+% 0 = $B%k%S$@$1=PNO!((B1 = $B%k%S$N>e$K7wE@!JF1;~IU2C!K!#(B
+% |\kentenrubycombination| $B$N@_DjCM$KBP1~$9$k!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@k@ruby@combo=1
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@d@full}
+% $BLsJ*$K$b7wE@$rIU2C$9$k$+!#(B
+% 0 = $BL58z!((B1 = $BM-8z!#(B
+% |\kentensetup| $B$N(B |f|$B!?(B|F| $B$N@_Dj!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@k@d@full=0
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B8F=P;~$N@_Dj(B}
+%
+% |\kenten| $B$N(B |P|$B!?(B|S| $B$N@_Dj$O!"(B|\pxrr@side| $B$r%k%S$H6&MQ$9$k!#(B
+%
+% \begin{macro}{\pxrr@k@mark}
+% $B7wE@%^!<%/$N<oN`!#(B
+% 0 = $B<g!((B1 = $BI{!#(B
+% |\kenten| $B$N(B |p|$B!?(B|s| $B$N@_Dj!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@k@mark=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@full}
+% $BLsJ*$K$b7wE@$rIU2C$9$k$+!#(B
+% 0 = $BL58z!((B1 = $BM-8z!#(B
+% |\kenten| $B$N(B |f|$B!?(B|F| $B$N@_Dj!#(B
+% $B@0?tDj?t!#(B
+% \begin{macrocode}
+\chardef\pxrr@k@full=0
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@the@mark}
+% $BE,MQ$5$l$k7wE@%^!<%/$NL?Na!#(B
+% \begin{macrocode}
+\let\pxrr@k@the@mark\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$BJd=u<jB3(B}
+%
+% \subsubsection{\cs{UTF}$BL?NaBP1~(B}
+%
+% \begin{macro}{\ifpxrr@avail@UTF}
+% |\UTF| $BL?Na$,MxMQ$G$-$k$+!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@avail@UTF
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@decide@avail@UTF}
+% |\ifpxrr@avail@UTF| $B$NCM$r3NDj$5$;$k!#(B
+% \begin{macrocode}
+\def\pxrr@decide@avail@UTF{%
+ \global\let\pxrr@decide@avail@UTF\relax
+ \ifx\UTF\@undefined \global\pxrr@avail@UTFfalse
+ \else \global\pxrr@avail@UTFtrue
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B%j%9%HJ,2r(B}
+%
+% \begin{macro}{\pxrr@k@decompose}
+% |\pxrr@k@decompose{|\jmeta{$B%F%-%9%H(B}|}|\Means
+% $B%F%-%9%H!J7wE@L?Na$N0z?t!K$rJ,2r$7$?7k2L$N7wE@9`L\%j%9%H(B
+% $B$r(B |\pxrr@res| $B$KJV$9!#(B
+% \Note $B7wE@9`L\%j%9%H$N7A<0(B\Means\par
+% |\pxrr@entry|[|@XXX|]|{|\jmeta{$B0z?t(B}|}|$B!D!D(B
+% |\pxrr@entry|[|@XXX|]|{|\jmeta{$B0z?t(B}|}||\pxrr@post|
+% \begin{macrocode}
+\def\pxrr@k@decompose#1{%
+ \let\pxrr@res\@empty
+ \pxrr@cntr=\z@
+ \pxrr@k@decompose@loopa#1\pxrr@end
+}
+\def\pxrr@k@decompose@loopa{%
+ \futurelet\pxrr@token\pxrr@k@decompose@loopb
+}
+\def\pxrr@k@decompose@loopb{%
+ \pxrr@cond\ifx\pxrr@token\pxrr@end\fi{%
+ \pxrr@appto\pxrr@res{\pxrr@post}%
+ }{\pxrr@if@kspan@cmd\pxrr@token{%
+ \pxrr@k@decompose@special\pxrr@k@decompose@kspan
+ }{\pxrr@if@ruby@cmd\pxrr@token{%
+ \pxrr@k@decompose@special\pxrr@k@decompose@ruby
+ }{\pxrr@if@truby@cmd\pxrr@token{%
+ \pxrr@k@decompose@special\pxrr@k@decompose@truby
+ }{\pxrr@if@kenten@cmd\pxrr@token{%
+ \pxrr@k@decompose@special\pxrr@k@decompose@kenten
+ }{\pxrr@cond\ifx\pxrr@token\@sptoken\fi{%
+ \pxrr@k@decompose@loope
+ }{%
+ \pxrr@setok{\pxrr@ifx{\pxrr@token\bgroup}}%
+ \pxrr@k@decompose@loopc
+ }}}}}}%
+}
+\def\pxrr@k@decompose@loopc#1{%
+ \pxrr@appto\pxrr@res{\pxrr@entry}%
+ \ifpxrr@ok
+ \pxrr@appto\pxrr@res{{{#1}}}%
+ \else
+ \pxrr@appto\pxrr@res{{#1}}%
+ \fi
+ \pxrr@k@decompose@loopd
+}
+\def\pxrr@k@decompose@loopd{%
+ \advance\pxrr@cntr\@ne
+ \pxrr@k@decompose@loopa
+}
+\expandafter\def\expandafter\pxrr@k@decompose@loope\space{%
+ \pxrr@okfalse
+ \pxrr@k@decompose@loopc{ }%
+}
+\def\pxrr@k@decompose@special#1#2#{%
+ #1{#2}%
+}
+\def\pxrr@k@decompose@kspan#1#2{%
+ \pxrr@appto\pxrr@res{\pxrr@entry@kspan{#1{#2}}}%
+ \pxrr@k@decompose@loopd
+}
+\def\pxrr@k@decompose@ruby#1#2#3{%
+ \pxrr@appto\pxrr@res{\pxrr@entry@ruby{#1{#2}{#3}}}%
+ \pxrr@k@decompose@loopd
+}
+\def\pxrr@k@decompose@truby#1#2#3#4{%
+ \pxrr@appto\pxrr@res{\pxrr@entry@ruby{#1{#2}{#3}{#4}}}%
+ \pxrr@k@decompose@loopd
+}
+\def\pxrr@k@decompose@kenten#1#2{%
+ \pxrr@appto\pxrr@res{\pxrr@entry@kenten{#1{#2}}}%
+ \pxrr@k@decompose@loopd
+}
+\def\pxrr@cmd@ruby{\jruby}
+\def\pxrr@cmd@kenten{\jkenten}
+\def\pxrr@if@ruby@cmd#1{%
+ \if \ifcat\noexpand#1\relax
+ \ifx#1\pxrr@cmd@ruby T%
+ \else\ifx#1\jruby T%
+ \else\ifx#1\aruby T%
+ \else F%
+ \fi\fi\fi
+ \else F%
+ \fi T\expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi
+}
+\def\pxrr@if@truby@cmd#1{%
+ \if \ifcat\noexpand#1\relax
+ \ifx#1\truby T%
+ \else\ifx#1\atruby T%
+ \else F%
+ \fi\fi
+ \else F%
+ \fi T\expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi
+}
+\def\pxrr@if@kspan@cmd#1{%
+ \pxrr@cond\ifx#1\kspan\fi
+}
+\def\pxrr@if@kenten@cmd#1{%
+ \if \ifcat\noexpand#1\relax
+ \ifx#1\pxrr@cmd@kenten T%
+ \else\ifx#1\jkenten T%
+ \else F%
+ \fi\fi
+ \else F%
+ \fi T\expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%Q%i%a%?@_Dj8x3+L?Na(B}
+%
+% \begin{macro}{\kentensetup}
+% |\pxrr@k@parse@option| $B$G2r@O$7$?8e!"@_DjCM$rA4HL@_Dj$K(B
+% $B%3%T!<$9$k!#(B
+% \begin{macrocode}
+\newcommand*\kentensetup[1]{%
+ \pxrr@in@setuptrue
+ \pxrr@fatal@errorfalse
+ \pxrr@k@parse@option{#1}%
+ \ifpxrr@fatal@error\else
+ \let\pxrr@k@d@side\pxrr@side
+ \let\pxrr@k@d@mark\pxrr@k@mark
+ \let\pxrr@k@d@full\pxrr@k@full
+ \fi
+% \end{macrocode}
+% |\ifpxrr@in@setup| $B$r56$KLa$9!#(B
+% $B$?$@$7(B |\ifpxrr@fatal@error| $B$O=q$-49$($i$l$?$^$^$G$"$k$3$H$KCm0U!#(B
+% \begin{macrocode}
+ \pxrr@in@setupfalse
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kentenfontsetup}
+% $BBP1~$9$k%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\kentenfontsetup{}
+\def\kentenfontsetup#{%
+ \def\pxrr@k@ruby@font
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kentensizeratio}
+% $BBP1~$9$k%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\kentensizeratio[1]{%
+ \edef\pxrr@k@size@ratio{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kentenintergap}
+% $BBP1~$9$k%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\kentenintergap[1]{%
+ \edef\pxrr@k@inter@gap{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kentenrubyintergap}
+% $BBP1~$9$k%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\kentenrubyintergap[1]{%
+ \edef\pxrr@k@ruby@inter@gap{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kentenmarkinyoko}
+% \begin{macro}{\kentensubmarkinyoko}
+% \begin{macro}{\kentenmarkintate}
+% \begin{macro}{\kentensubmarkintate}
+% $BBP1~$9$k%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\newcommand*\kentenmarkinyoko[1]{%
+ \pxrr@k@get@mark\pxrr@k@ymark{#1}%
+}
+\newcommand*\kentensubmarkinyoko[1]{%
+ \pxrr@k@get@mark\pxrr@k@ysmark{#1}%
+}
+\newcommand*\kentenmarkintate[1]{%
+ \pxrr@k@get@mark\pxrr@k@tmark{#1}%
+}
+\newcommand*\kentensubmarkintate[1]{%
+ \pxrr@k@get@mark\pxrr@k@tsmark{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\kentenrubycombination}
+% $BBP1~$9$k%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\chardef\pxrr@k@ruby@combo@ruby=0
+\chardef\pxrr@k@ruby@combo@both=1
+\newcommand*\kentenrubycombination[1]{%
+ \pxrr@letcs\pxrr@tempa{pxrr@k@ruby@combo@#1}%
+ \ifx\pxrr@tempa\relax
+ \pxrr@err@invalid@value{#1}%
+ \else
+ \let\pxrr@k@ruby@combo\pxrr@tempa
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B7wE@J8;z(B}
+%
+% \begin{macro}{\pxrr@k@declare@mark}
+% |\pxrr@k@declare@mark{|\jmeta{$BL>A0(B}|}{|\jmeta{$BK\BN(B}|}|\Means
+% $B7wE@%^!<%/L?Na$rDj5A$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@k@declare@mark#1{%
+ \global\@namedef{pxrr@k@mark@@#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@let@mark}
+% |\pxrr@k@declare@mark{|\jmeta{$BL>A0(B}|}\CS|\Means
+% $B7wE@%^!<%/L?Na$r(B |\let| $B$GDj5A$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@k@let@mark#1{%
+ \global\pxrr@cslet{pxrr@k@mark@@#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@get@mark}
+% |\pxrr@k@get@mark\CS{|\jmeta{$BL>A0$^$?$ODj5AK\BN(B}|}|\Means
+% $B;XDj$N7wE@%^!<%/L?Na$r(B |\CS| $B$KBeF~$9$k!#(B
+% $BBh(B2$B0z?t$N@hF,%H!<%/%s$,(BASCII$B1Q;z$N>l9g$OL>A0$H8+$J$7!"(B
+% $B$=$l0J30$ODj5AK\BN$N%3!<%I$H8+$J$9!#(B
+% \begin{macrocode}
+\def\pxrr@k@get@mark#1#2{%
+ \futurelet\pxrr@token\pxrr@k@get@mark@a#2\pxrr@nil#1%
+}
+\def\pxrr@k@get@mark@a{%
+ \pxrr@cond\ifcat A\noexpand\pxrr@token\fi{%
+ \pxrr@k@get@mark@c
+ }{%else
+ \pxrr@k@get@mark@b
+ }%
+}
+\def\pxrr@k@get@mark@b#1\pxrr@nil#2{%
+ \def#2{#1}%
+}
+\def\pxrr@k@get@mark@c#1#2\pxrr@nil#3{%
+ \ifnum`#1<128
+ \pxrr@letcs\pxrr@tempa{pxrr@k@mark@@#1#2}%
+ \ifx\pxrr@tempa\relax
+ \pxrr@warn@na@kmark{#1#2}%
+ \else
+ \let#3\pxrr@tempa
+ \fi
+ \else
+ \pxrr@k@get@mark@b#1#2\pxrr@nil#3%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@declare@mark@char}
+% |\pxrr@k@declare@mark@char\CS{|\jmeta{$BFs=E%3!<%I(B}|}|\Means
+% $B;XDj$N%3!<%ICM$NJ8;z$N!JOBJ8!K(Bchardef$B$r(B |\CS| $B$KBeF~$9$k!#(B
+% $B$?$@$7(B{\pTeX}$B$G(BJIS$B$KL5$$J8;z(B
+% $B!JJX59E*$KOBJ86uGr$N(BJIS$B%3!<%ICM(B|2121|$B$GI=$9!K(B
+% $B$N>l9g$OBe$o$j$K(B |\pxrr@k@char@UTF| $B$rMxMQ$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@k@declare@mark@char#1#2{%
+ \pxrr@k@declare@mark@char@a{#1}#2\pxrr@end
+}
+\def\pxrr@k@declare@mark@char@a#1#2:#3\pxrr@end{%
+ \pxrr@jchardef\pxrr@tempa\pxrr@jc{#2:#3}%
+ \ifnum\pxrr@tempa=\pxrr@zspace
+% \end{macrocode}
+% $B%(%s%8%s$,(B{\pTeX}$B$G$+$D(BJIS$B$KL5$$J8;z$G$"$k>l9g!#(B
+% \begin{macrocode}
+ \pxrr@k@declare@mark{#1}{\pxrr@k@char@UTF{#1}{#3}}%
+ \else
+ \pxrr@k@let@mark{#1}\pxrr@tempa
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@char@UTF}
+% |\pxrr@k@char@UTF{|\jmeta{$BL>A0(B}|}{|\jmeta{Unicode$BCM(B}|}|\Means
+% |\UTF{|\jmeta{Unicode$BCM(B}|}| $B$r<B9T$9$k$,!"(B
+% |\UTF| $B$,MxMQIT2D$N>l9g$O!"(B
+% $B!J:G=i$N(B1$B2s$@$1!K7Y9p$7$?>e$G2?$b=PNO$7$J$$!#(B
+% \begin{macrocode}
+\def\pxrr@k@char@UTF#1#2{%
+ \pxrr@decide@avail@UTF
+ \ifpxrr@avail@UTF
+ \pxrr@k@declare@mark{#1}{\UTF{#2}}%
+ \UTF{#2}%
+ \else
+ \pxrr@k@let@mark{#1}\@empty
+ \pxrr@warn@na@kmark{#1}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% $BI8=`%5%]!<%H$N7wE@%^!<%/$NDj5A!#(B
+% \begin{macrocode}
+\pxrr@k@declare@mark@char{bullet} {2121:2022}
+\pxrr@k@declare@mark@char{triangle}{2225:25B2}
+\pxrr@k@declare@mark@char{Triangle}{2224:25B3}
+\pxrr@k@declare@mark@char{fisheye} {2121:25C9}
+\pxrr@k@declare@mark@char{Circle} {217B:25CB}
+\pxrr@k@declare@mark@char{bullseye}{217D:25CE}
+\pxrr@k@declare@mark@char{circle} {217C:25CF}
+\pxrr@k@declare@mark@char{Bullet} {2121:25E6}
+\pxrr@k@declare@mark@char{sesame} {2121:FE45}
+\pxrr@k@declare@mark@char{Sesame} {2121:FE46}
+\pxrr@jchardef\pxrr@ja@dot=\pxrr@jc{2126:30FB}
+\pxrr@jchardef\pxrr@ja@comma=\pxrr@jc{2122:3001}
+\pxrr@k@declare@mark{bullet*}{%
+ \pxrr@dima=\pxrr@ruby@zw\relax
+ \hb@xt@\pxrr@dima{%
+ \kern-.5\pxrr@dima
+ \pxrr@if@in@tate{}{\lower.38\pxrr@dima}%
+ \hb@xt@2\pxrr@dima{%
+ \pxrr@dima=\f@size\p@
+ \fontsize{2\pxrr@dima}{\z@}\selectfont
+ \hss
+ \pxrr@ja@dot
+ \hss
+ }%
+ \hss
+ }%
+}
+\pxrr@k@declare@mark{sesame*}{%
+ \pxrr@dima=\pxrr@ruby@zw\relax
+ \hb@xt@\pxrr@dima{%
+ \pxrr@if@in@tate{\kern.1\pxrr@dima}{\kern.05\pxrr@dima}%
+ \pxrr@if@in@tate{\lower.85\pxrr@dima}{\raise.3\pxrr@dima}%
+ \hbox{%
+ \pxrr@dima=\f@size\p@
+ \fontsize{2.4\pxrr@dima}{\z@}\selectfont
+ \pxrr@ja@comma
+ }%
+ \hss
+ }%
+}
+% \end{macrocode}
+%
+% \subsection{$B7wE@%*%W%7%g%s2r@O(B}
+%
+% \begin{macro}{\pxrr@k@parse@option}
+% |\pxrr@k@parse@option{|\jmeta{$B%*%W%7%g%s(B}|}|\Means
+% \jmeta{$B%*%W%7%g%s(B}$B$r2r@O$7!"(B
+% |\pxrr@side| $B$d(B |\pxrr@k@mark| $BEy$N%Q%i%a%?$r@_Dj$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@k@parse@option#1{%
+ \edef\pxrr@tempa{#1}%
+ \let\pxrr@side\pxrr@k@d@side
+ \let\pxrr@k@mark\pxrr@k@d@mark
+ \let\pxrr@k@full\pxrr@k@d@full
+ \expandafter\pxrr@k@parse@option@loop\pxrr@tempa @\pxrr@end
+}
+\def\pxrr@k@parse@option@loop#1{%
+% \end{macrocode}
+% $B7wE@%*%W%7%g%s$N2r@O4o$O!HM-8B>uBV!I$r;}$?$J$$$N$G(B
+% $BHs>o$KC1=c$G$"$k!#(B
+% \begin{macrocode}
+ \pxrr@letcs\pxrr@tempa{pxrr@k@po@PR@#1}%
+ \pxrr@cond\ifx\pxrr@tempa\relax\fi{%
+ \pxrr@fatal@knx@letter{#1}%
+ \pxrr@k@parse@option@exit
+ }{%
+ \pxrr@tempa
+ \pxrr@k@parse@option@loop
+ }%
+}
+\def\pxrr@k@parse@option@exit#1\pxrr@end{%
+ \ifpxrr@in@setup\else
+ \pxrr@k@check@option
+% \end{macrocode}
+% $B$3$3$G(B |\pxrr@k@the@mark| $B$rE,@Z$KDj5A$9$k!#(B
+% \begin{macrocode}
+ \pxrr@if@in@tate{%
+ \ifcase\pxrr@k@mark \let\pxrr@k@the@mark\pxrr@k@tmark
+ \or \let\pxrr@k@the@mark\pxrr@k@tsmark
+ \fi
+ }{%
+ \ifcase\pxrr@k@mark \let\pxrr@k@the@mark\pxrr@k@ymark
+ \or \let\pxrr@k@the@mark\pxrr@k@ysmark
+ \fi
+ }%
+ \fi
+}
+\def\pxrr@k@po@PR@@{%
+ \pxrr@k@parse@option@exit
+}
+\def\pxrr@k@po@PR@P{%
+ \chardef\pxrr@side\z@
+}
+\def\pxrr@k@po@PR@S{%
+ \chardef\pxrr@side\@ne
+}
+\def\pxrr@k@po@PR@p{%
+ \chardef\pxrr@k@mark\z@
+}
+\def\pxrr@k@po@PR@s{%
+ \chardef\pxrr@k@mark\@ne
+}
+\def\pxrr@k@po@PR@F{%
+ \chardef\pxrr@k@full\z@
+}
+\def\pxrr@k@po@PR@f{%
+ \chardef\pxrr@k@full\@ne
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%*%W%7%g%s@09g@-8!::(B}
+%
+% $B:#$N$H$3$m8!::$9$Y$-E@$,$J$$!#(B
+% \begin{macrocode}
+\def\pxrr@k@check@option{%
+}
+% \end{macrocode}
+%
+% \subsection{$B%V%m%C%/Kh$NAHHG(B}
+%
+% \begin{macro}{\pxrr@k@compose@block}
+% |\pxrr@k@compose@block{|\jmeta{$B?FJ8;z%V%m%C%/(B}|}|^^A
+% |{|\jmeta{$B7wE@$N8D?t(B}|}|\Means
+% 1$B$D$N%V%m%C%/$NAHHG=hM}!#(B
+% $B%\%C%/%9(B |\pxrr@boxb| $B$K7wE@(B1$B$D$rAHHG$7$?$b$N$,F~$C$F$$$k(B
+% $BI,MW$,$"$k!#(B
+% $B$J$*!"7wE@$O%<%mI}$KDY$7$?7A$G07$&A0Ds$N$?$a!"(B
+% |\pxrr@boxb| $B$NI}$O%<%m$G$J$$$H$$$1$J$$!#(B
+%
+% $B4pK\E*$K!"%k%SMQ$N(B |\pxrr@compose@oneside@block| $B$rHs>o$K4JN,2=(B
+% $B$7$?=hM}$K$J$C$F$$$k!#(B
+% \begin{macrocode}
+\def\pxrr@k@compose@block#1#2{%
+ \setbox\pxrr@boxa\pxrr@hbox{#1}%
+% \end{macrocode}
+% |\pxrr@evenspace@int| $B$r;H$&$?$a$KDTjm$r9g$o$;$k!#(B
+% $B$9$J$o$A!"(B|\copy\pxrr@boxb| $B$r7wE@8D?tJ,$@$1H?I|$7$?(B
+% $B%j%9%H$r(B |\pxrr@res| $B$KF~$l$F!"!H7wE@$N<+A3D9!I$K(B
+% $BEv$?$k(B |\pxrr@natwd| $B$r%<%m$H$9$k!#(B
+% \begin{macrocode}
+ \pxrr@k@make@rep@list{\copy\pxrr@boxb}{#2}%
+ \let\pxrr@natwd\pxrr@zeropt
+ \pxrr@evenspace@int\pxrr@locate@inner\pxrr@boxr
+ \relax{\wd\pxrr@boxa}%
+ \setbox\z@\hbox{%
+ \ifnum\pxrr@side=\z@
+ \raise\pxrr@ruby@raise\box\pxrr@boxr
+ \else
+ \lower\pxrr@ruby@lower\box\pxrr@boxr
+ \fi
+ }%
+ \ht\z@\z@ \dp\z@\z@
+ \@tempdima\wd\z@
+ \setbox\pxrr@boxr\hbox{%
+ \box\z@
+ \kern-\@tempdima
+ \box\pxrr@boxa
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@make@rep@list}
+% |\pxrr@k@make@rep@list{|\jmeta{$BMWAG(B}|}{|\jmeta{$B2s?t(B}|}|\Means
+% $BMWAG$r;XDj$N2s?t$@$1H?I|$7$?%j%9%H$r(B |\pxrr@res| $B$KBeF~$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@k@make@rep@list#1#2{%
+ \def\pxrr@res{\pxrr@pre{#1}}%
+ \pxrr@cntr=#2\relax
+ \ifnum\pxrr@cntr>\@ne
+ \@tempcnta\pxrr@cntr \advance\@tempcnta\m@ne
+ \@whilenum{\@tempcnta>\z@}\do{%
+ \pxrr@appto\pxrr@res{\pxrr@inter{#1}}%
+ \advance\@tempcnta\m@ne
+ }%
+ \fi
+ \pxrr@appto\pxrr@res{\pxrr@post}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B7wE@9`L\(B}
+%
+% \begin{itemize}
+% \item $B7wE@9`L\%j%9%H(B\Means
+% $B%F%-%9%H$r(B |\pxrr@k@decompose| $B$GJ,2r$7$?7k2L$N%j%9%H!#(B
+% \item $B7wE@9`L\(B\Means
+% $B7wE@%j%9%H$K4^$^$l$k(B |\pxrr@entry|[|@XXX|]|{...}| $B$H$$$&7A<0$N$3$H!#(B
+% $B7wE@9`L\$OD>@\$K<B9T$9$k!J=PNO$9$k!K$3$H$,$G$-$k!#(B
+% \item $B7wE@%V%m%C%/(B\Means
+% $B0l$D$N!TJ8;z!U$K7wE@$rIU2C$7$F=PNO$7$?$b$N!#(B
+% \item $B;2>HJ8;z%3!<%I(B\Means
+% $B7wE@9`L\$N=PNO$NA08e$N6XB'%Z%J%k%F%#$N07$$$K$*$$$F!"(B
+% $B!V$"$kJ8;z$HF1Ey!W$H07$&>l9g$N!"$=$NJ8;z$NJ8;z%3!<%I!#(B
+% \end{itemize}
+%
+% $B"(8=>u$G$O!"$^$:(B |\pxrr@kenten@entry@XXX| $B$H$$$&%^%/%m$rDj5A$7$F(B
+% $B7wE@L?Na$N<B9T;~$K$=$l$r(B |\pxrr@entry@XXX| $B$K%3%T!<$9$k!"$H$$$&(B
+% $B<jB3$-$r:N$C$F$$$k!#(B
+% $B!J$?$@$=$&$9$k0UL#$,A4$/L5$$5$$,$9$k!#!K(B
+%
+% \begin{macro}{\ifpxrr@k@first@entry}
+% $B@hF,$N9`L\$G$"$k$+!#(B
+% \begin{macrocode}
+\newif\ifpxrr@k@first@entry
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@k@last@entry}
+% $BKvHx$N9`L\$G$"$k$+!#(B
+% \begin{macrocode}
+\newif\ifpxrr@k@last@entry
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@k@prev@is@block}
+% $BD>A0$N9`L\$N7k2L$,7wE@%V%m%C%/$G$"$C$?$+!#(B
+% \begin{macrocode}
+\newif\ifpxrr@k@prev@is@block
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@accum@res}
+% $BN_@Q$ND>@\=PNO!#(B
+% \begin{macrocode}
+\let\pxrr@k@accum@res\relax
+% \end{macrocode}
+% \end{macro}
+%
+% $B0J2<$N(B3$B$D$NJQ?t$O!H9`L\$N2<@A$1%^%/%m!I$,CM$rJV$9$Y$-$b$N!#(B
+% $B$3$l$i$K2C$($F!"(B|\pxrr@res| $B$H(B |\pxrr@boxr| $B$N0lJ}$K(B
+% $B!JAHHG$N!K7k2L$rJV$9I,MW$,$"$k!#(B
+%
+% \begin{macro}{\pxrr@k@prebreakpenalty}
+% $B7wE@9`L\$NA06XB'%Z%J%k%F%#!#(B
+% \begin{macrocode}
+\mathchardef\pxrr@k@prebreakpenalty\z@
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@postbreakpenalty}
+% $B7wE@9`L\$N8e6XB'%Z%J%k%F%#!#(B
+% \begin{macrocode}
+\mathchardef\pxrr@k@postbreakpenalty\z@
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@entry@res@type}
+% $B9`L\$N=PNO$N%?%$%W!#(B
+% 0=$BD>@\=PNO!((B1=$B%\%C%/%9=PNO!((B2=$B7wE@%V%m%C%/!#(B
+% 0$B$N>l9g!"=PNO$O(B |\pxrr@res| $B$K$"$j!"$=$l0J30$O!"(B
+% $B=PNO$O(B |\pxrr@boxr| $B$K$"$k!#(B
+% \begin{macrocode}
+\chardef\pxrr@k@entry@res@type\z@
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@list@pre}
+% $B7wE@9`L\%j%9%H$N=PNO$N3+;O;~$K9T$&=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@k@list@pre{%
+ \pxrr@k@first@entrytrue
+ \pxrr@k@last@entryfalse
+ \pxrr@k@prev@is@blockfalse
+ \let\pxrr@k@accum@res\@empty
+ \chardef\pxrr@k@block@seq@state\z@
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@entry@with}
+% $BJd=u%^%/%m!#(B
+% $B3F<o7wE@9`L\$N6&DL$N=hM}$r9T$&!#(B
+% \Note |#1| $B$O3F7wE@9`L\L?Na$N2<@A$1$N%^%/%m$G!"(B|#2| $B$O(B
+% $B7wE@9`L\$N0z?t!#(B
+% \begin{macrocode}
+\def\pxrr@k@entry@with#1#2{%
+ \pxrr@if@last{%
+ \pxrr@k@last@entrytrue
+ \pxrr@k@entry@with@a#1{#2}%
+ }{%
+ \pxrr@k@entry@with@a#1{#2}%
+ }%
+}
+\def\pxrr@k@entry@with@a#1#2{%
+ \mathchardef\pxrr@k@prebreakpenalty\z@
+ \mathchardef\pxrr@k@postbreakpenalty\z@
+% \end{macrocode}
+% $B2<@A$1%^%/%m$r<B9T$7$F7k2L$rF@$k!#(B
+% \begin{macrocode}
+ #1{#2}%
+%\typeout{%
+%first=\meaning\ifpxrr@k@first@entry^^J%
+%last=\meaning\ifpxrr@k@last@entry^^J%
+%prev=\meaning\ifpxrr@k@prev@is@block^^J%
+%res=\meaning\pxrr@res^^J%
+%type=\meaning\pxrr@k@entry@res@type^^J%
+%prepen=\the\pxrr@k@prebreakpenalty^^J%
+%postpen=\the\pxrr@k@postbreakpenalty}%
+% \end{macrocode}
+% $BN_@QD>@\=PNO$N=hM}!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@k@entry@res@type=\z@
+ \expandafter\pxrr@appto\expandafter\pxrr@k@accum@res
+ \expandafter{\pxrr@res}%
+ \else
+ \pxrr@k@accum@res
+ \let\pxrr@k@accum@res\@empty
+ \fi
+% \end{macrocode}
+% $BA06XB'%Z%J%k%F%#$rF~$l$k!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@k@prebreakpenalty>\z@
+ \@tempcntb\lastpenalty \unpenalty
+ \advance\@tempcntb\pxrr@k@prebreakpenalty
+ \penalty\@tempcntb
+ \fi
+% \end{macrocode}
+% $B7wE@%V%m%C%/$,O"B3$9$k>l9g$OOBJ84V6uGr$rF~$l$k!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@k@entry@res@type=\tw@
+ \ifpxrr@k@prev@is@block
+ \pxrr@inter@mono
+ \fi
+ \pxrr@k@prev@is@blocktrue
+ \else
+ \pxrr@k@prev@is@blockfalse
+ \fi
+% \end{macrocode}
+% $B%\%C%/%9$N7k2L$r<B:]$K=PNO$9$k!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@k@entry@res@type>\z@
+ \unhbox\pxrr@boxr
+ \fi
+% \end{macrocode}
+% $B8e6XB'%Z%J%k%F%#$rF~$l$k!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@k@postbreakpenalty>\z@
+ \penalty\pxrr@k@postbreakpenalty
+ \fi
+% \end{macrocode}
+% $B<!$N9`L\$K?J$`!#(B
+% \begin{macrocode}
+ \pxrr@k@first@entryfalse
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@list@post}
+% $B7wE@9`L\%j%9%H$N=PNO$N:G8e$K9T$&=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@k@list@post{%
+ \pxrr@k@accum@res
+ \let\pxrr@k@accum@res\@empty
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@kenten@entry}
+% $B0lHL$N!TJ8;z!U$rI=$97wE@9`L\(B |\pxrr@entry{|\jmeta{$BJ8;z(B}|}| $B$N=hM}!#(B
+% $B7wE@$r(B1$B$DIU$1$F=PNO$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@kenten@entry{%
+ \pxrr@k@entry@with\pxrr@kenten@entry@
+}
+\def\pxrr@kenten@entry@#1{%
+ \pxrr@k@check@char{#1}%
+ \ifpxrr@ok
+ \pxrr@k@compose@block{#1}\@ne
+ \chardef\pxrr@k@entry@res@type=\tw@
+ \else
+ \def\pxrr@res{#1}%
+ \chardef\pxrr@k@entry@res@type=\z@
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@kenten@entry@kspan}
+% |\kspan| $BL?Na$rI=$97wE@9`L\(B\
+% |\pxrr@entry@kspan{\kspan{|\jmeta{$B%F%-%9%H(B}|}}| $B$N=hM}!#(B
+% $B%F%-%9%H$NI}$,!H$*$h$=(B$n$$BA43Q!I$G$"$k>l9g$K!"(B
+% $n$$B8D$N7wE@$r%k%S6QEy3d$j$GG[CV$7$F=PNO$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@kenten@entry@kspan{%
+ \pxrr@k@entry@with\pxrr@kenten@entry@kspan@
+}
+\def\pxrr@kenten@entry@kspan@#1{%
+ \pxrr@kenten@entry@kspan@a#1%
+}
+\def\pxrr@kenten@entry@kspan@a#1{%
+% \end{macrocode}
+% |\kspan|$B!J(B=\,|#1|$B!K$,(B |*| $BIU$+$rD4$Y$k!#(B
+% \begin{macrocode}
+ \@ifstar{%
+ \@testopt\pxrr@kenten@entry@kspan@c{}%
+ }{%
+ \@testopt\pxrr@kenten@entry@kspan@b{}%
+ }%
+}
+\def\pxrr@kenten@entry@kspan@b[#1]#2{%
+% \end{macrocode}
+% ($n-1/4$)zw$B0J>e(B($n+3/4$)zw$BL$K~$N;~$K!H$*$h$=(B$n$$BA43Q!I$H8+$J$9!#(B
+% \begin{macrocode}
+ \setbox\z@\pxrr@hbox{#2}%
+ \@tempdima\pxrr@body@zw\relax
+ \@tempdimb\wd\z@ \advance\@tempdimb.25\@tempdima
+ \divide\@tempdimb\@tempdima
+ \edef\pxrr@kenten@entry@tempa{\number\@tempdimb}%
+ \pxrr@k@compose@block{#2}\pxrr@kenten@entry@tempa
+ \chardef\pxrr@k@entry@res@type=\tw@
+}
+\def\pxrr@kenten@entry@kspan@c[#1]#2{%
+% \end{macrocode}
+% |\kspan*| $B$H$J$C$F$$$k>l9g!#(B
+% $B$3$N;~$O7wE@$rIU2C$;$:D>@\=PNO$9$k!#(B
+% \begin{macrocode}
+ \def\pxrr@res{#2}%
+ \chardef\pxrr@k@entry@res@type=\z@
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@kenten@entry@kenten}
+% $B%M%9%H$7$?(B |\kenten| $BL?Na$N7wE@9`L\!#(B
+% $BC1=c$K$=$N(B |\kenten| $B$r<B9T$7$?$b$N$r=PNO$H$9$k!#(B
+% $B$9$J$o$A!"FbB&$N7wE@$N@_Dj$N$_$,@8$-$k!#(B
+% \begin{macrocode}
+\def\pxrr@kenten@entry@kenten{%
+ \pxrr@k@entry@with\pxrr@kenten@entry@kenten@
+}
+\def\pxrr@kenten@entry@kenten@#1{%
+% \end{macrocode}
+% $B$3$N>l9g$O7wE@%V%m%C%/$H$O8+$J$5$J$$$3$H$KCm0U!#(B
+% \begin{macrocode}
+ \setbox\pxrr@boxr\hbox{#1}%
+ \chardef\pxrr@k@entry@res@type=\@ne
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@kenten@entry@ruby}
+% $B%k%SL?Na$N7wE@9`L\!#(B
+% \begin{macrocode}
+\def\pxrr@kenten@entry@ruby{%
+ \pxrr@k@entry@with\pxrr@kenten@entry@ruby@
+}
+\def\pxrr@kenten@entry@ruby@#1{%
+ \pxrr@apply@combotrue
+ \setbox\pxrr@boxr\hbox{#1}%
+ \chardef\pxrr@k@entry@res@type=\@ne
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{\cs{kspan}$BL?Na(B}
+%
+% \begin{macro}{\kspan}
+% $B%F%-%9%H$NI}$KAj1~$7$?8D?t$N7wE@$rIU$1$kL?Na!#(B
+% |\kenten| $B$N0z?t$N%F%-%9%H$NCf$G;H$&!#(B
+%
+% |\kenten| $B$N30$G;H$o$l$?>l9g$OC1=c$K0z?t$r=PNO$9$k$@$1!#(B
+%
+% \Note $B=hM}$NET9g>e!"%*%W%7%g%s0z?t$r;}$?$;$F$$$k$,!"(B
+% $B<B:]$K$O!J8=:_$O!K$3$l$O;H$o$l$J$$!#(B
+% \begin{macrocode}
+\newcommand*\kspan{%
+ \@ifstar{%
+ \@testopt\pxrr@kspan@a{}%
+ }{%
+ \@testopt\pxrr@kspan@a{}%
+ }%
+}
+\pxrr@add@protect\kspan
+\def\pxrr@kspan@a[#1]#2{%
+ \begingroup
+ #2%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B<+F0M^;_$N8!::(B}
+%
+% \begin{macro}{\pxrr@k@check@char}
+% $BDL>o9`L\!J(B|\pxrr@entry|$B!K$N0z?t$r8!::$7$F!"(B
+% $B7wE@$rIU2C$9$Y$-$+H]$+$r%9%$%C%A(B |pxrr@ok| $B$KJV$9!#(B
+% $B$^$?!"9`L\$NA06XB'!&8e6XB'%Z%J%k%F%#$r@_Dj$9$k!#(B
+%
+% $B0z?t$,!JC10l$N!KDL>oJ8;z$G$"$k;~$O$=$NJ8;z!"(B
+% $B0z?t$,%0%k!<%W$N>l9g$OOBJ86uGr$NFbItJ8;z%3!<%I$r(B |\pxrr@cntr| $B$K(B
+% $BJV$9!J6XB'%Z%J%k%F%#$r8e$G8+$i$l$k$h$&$K!K!#(B
+% \begin{macrocode}
+\def\pxrr@k@check@char#1{%
+ \futurelet\pxrr@token\pxrr@k@check@char@a#1\pxrr@end
+}
+\def\pxrr@k@check@char@a#1\pxrr@end{%
+ \pxrr@cond\ifx\pxrr@token\bgroup\fi{%
+% \end{macrocode}
+% $B%0%k!<%W$K$O7wE@$rIU$1$k!#(B
+% \begin{macrocode}
+ \pxrr@oktrue
+ }{\pxrr@cond\ifx\pxrr@token\@sptoken\fi{%
+% \end{macrocode}
+% $B2$J86uGr$K$O7wE@$rIU$1$J$$!#(B
+% \begin{macrocode}
+ \pxrr@okfalse
+ }{%
+ \pxrr@check@char\pxrr@token
+ \ifcase\pxrr@cntr
+% \end{macrocode}
+% $BDL>oJ8;z$G$J$$$N$G7wE@$rIU$1$J$$!#(B
+% \begin{macrocode}
+ \pxrr@okfalse
+ \or
+% \end{macrocode}
+% $B2$J8$NDL>oJ8;z!#7wE@$rIU$1$k!#(B
+% \begin{macrocode}
+ \pxrr@oktrue
+ \chardef\pxrr@check@char@temp\z@
+ \or
+% \end{macrocode}
+% $BOBJ8$NDL>oJ8;z!#7wE@$rIU$1$k!#(B
+% \begin{macrocode}
+ \pxrr@oktrue
+ \chardef\pxrr@check@char@temp\@ne
+ \fi
+% \end{macrocode}
+% $BLsJ*$N7wE@IU2C$,L58z$N>l9g$O!"0z?t$NJ8;z$,LsJ*$G$"$k$+8!::$7!"(B
+% $B$=$&$G$"$k>l9g$O7wE@$rIU$1$J$$!#(B
+% \begin{macrocode}
+ \ifnum\pxrr@k@full=\z@\ifpxrr@ok
+ \pxrr@check@punct@char{`#1}\pxrr@check@char@temp
+ \ifpxrr@ok \pxrr@okfalse
+ \else \pxrr@oktrue
+ \fi
+ \fi\fi
+ \ifpxrr@ok
+ \pxrr@get@prebreakpenalty\@tempcnta{`#1}%
+ \mathchardef\pxrr@k@prebreakpenalty\@tempcnta
+ \pxrr@get@postbreakpenalty\@tempcnta{`#1}%
+ \mathchardef\pxrr@k@postbreakpenalty\@tempcnta
+ \fi
+ }}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%a%$%s$G$9(B}
+%
+% \subsubsection{$B%(%s%H%j!<%]%$%s%H(B}
+%
+% \begin{macro}{\kenten}
+% \begin{macro}{\jkenten}
+% $B7wE@$N8x3+L?Na!#(B
+% |\jkenten| $B$r4h6/$JL?Na$H$7$FDj5A$7$?>e$G!"(B|\kenten| $B$O$=$l$K(B
+% $BE83+$5$l$k%^%/%m$K!JL$Dj5A$J$i$P!KDj5A$9$k!#(B
+% \begin{macrocode}
+\AtBeginDocument{%
+ \providecommand*{\kenten}{\jkenten}%
+}
+\newcommand*{\jkenten}{%
+ \pxrr@k@prologue
+ \pxrr@kenten
+}
+\pxrr@add@protect\jkenten
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@kenten}
+% $B%*%W%7%g%s$N=hM}$r9T$&!#(B
+% \begin{macrocode}
+\def\pxrr@kenten{%
+ \@testopt\pxrr@kenten@a{}%
+}
+\def\pxrr@kenten@a[#1]{%
+ \def\pxrr@option{#1}%
+ \ifpxrr@safe@mode
+% \end{macrocode}
+% $B0BA4%b!<%I$G$O7wE@5!G=$OL58z$J$N$G!"%U%)!<%k%P%C%/$H$7$F(B
+% $B0z?t$N%F%-%9%H$r$=$N$^$^=PNO$9$k!#(B
+% \begin{macrocode}
+ \expandafter\@firstofone
+ \else
+ \expandafter\pxrr@kenten@proc
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@k@bind@param}
+% $B!H8F=P;~JQ?t!I$X$N%3%T!<$r9T$&!#(B
+% \begin{macrocode}
+\def\pxrr@k@bind@param{%
+ \let\pxrr@c@ruby@font\pxrr@k@ruby@font
+ \let\pxrr@c@size@ratio\pxrr@k@size@ratio
+ \let\pxrr@c@inter@gap\pxrr@k@inter@gap
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@kenten@proc}
+% |\pxrr@kenten@proc{|\jmeta{$B?FJ8;zNs(B}|}|\Means
+% $B$3$l$,<jB3$NK\BN$H$J$k!#(B
+% \begin{macrocode}
+\def\pxrr@kenten@proc#1{%
+ \pxrr@prepare@fallback{#1}%
+ \pxrr@k@bind@param
+ \pxrr@assign@fsize
+ \pxrr@k@parse@option\pxrr@option
+ \pxrr@if@alive{%
+ \pxrr@k@decompose{#1}%
+ \let\pxrr@body@list\pxrr@res
+ \pxrr@kenten@main
+ }%
+ \pxrr@kenten@exit
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$BAHHG=hM}(B}
+%
+% \begin{macro}{\pxrr@kenten@main}
+% $B7wE@$NAHHG=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@kenten@main{%
+ \setbox\pxrr@boxb\pxrr@hbox@to\z@{%
+ \pxrr@use@ruby@font
+ \hss\pxrr@k@the@mark\hss
+ }%
+ \let\pxrr@entry\pxrr@kenten@entry
+ \let\pxrr@entry@kspan\pxrr@kenten@entry@kspan
+ \let\pxrr@entry@ruby\pxrr@kenten@entry@ruby
+ \let\pxrr@entry@kenten\pxrr@kenten@entry@kenten
+ \let\pxrr@post\pxrr@k@list@post
+ \pxrr@k@list@pre
+ \pxrr@body@list
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$BA0=hM}(B}
+%
+% \begin{macro}{\pxrr@jprologue}
+% $B7wE@MQ$N3+;O=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@k@prologue{%
+ \ifpxrr@k@ghost
+ \pxrr@jghost@char
+ \pxrr@inhibitglue
+ \fi
+ \begingroup
+ \ifpxrr@k@ghost
+ \setbox\pxrr@boxa\hbox{\pxrr@jghost@char}%
+ \kern-\wd\pxrr@boxa
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B8e=hM}(B}
+%
+% \begin{macro}{\pxrr@kenten@exit}
+% $B=PNO$r=*$($F!":G8e$K8F$P$l$k%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@kenten@exit{%
+ \ifpxrr@fatal@error
+ \pxrr@fallback
+ \fi
+ \pxrr@k@epilogue
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@jepilogue}
+% $B=*N;=hM}!#(B
+% \begin{macrocode}
+\def\pxrr@k@epilogue{%
+ \ifpxrr@k@ghost
+ \setbox\pxrr@boxa\hbox{\pxrr@jghost@char}%
+ \kern-\wd\pxrr@boxa
+ \fi
+ \endgroup
+ \ifpxrr@k@ghost
+ \pxrr@inhibitglue
+ \pxrr@jghost@char
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%G%P%C%0MQ=PNO(B}
+%
+% \begin{macrocode}
+\def\pxrr@debug@show@kenten@input{%
+ \typeout{%
+pxrr@k@the@mark=\meaning\pxrr@k@the@mark^^J%
+pxrr@side=\meaning\pxrr@side^^J%
+pxrr@body@list=\meaning\pxrr@body@list^^J%
+ }%
+}
+% \end{macrocode}
+%
+%^^A------------------------------------
+% \section{$B<BAu!J7wE@%k%SF1;~IU2C!K(B}
+%
+% $B%3%s%\!*(B
+%
+% \subsection{$B8F=P;~%Q%i%a%?(B}
+%
+% \begin{macro}{\ifpxrr@apply@combo}
+% $BD>8e$K<B9T$9$k%k%SL?Na$K$D$$$FF1;~IU2C$r9T$&$+!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@apply@combo
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@combo}
+% $B8=:_<B9TCf$N%k%SL?Na$K$D$$$FF1;~IU2C$r9T$&$+!#(B
+% $B%9%$%C%A!#(B
+% \begin{macrocode}
+\newif\ifpxrr@combo
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ck@ruby@font}
+% \begin{macro}{\pxrr@ck@size@ratio}
+% \begin{macro}{\pxrr@ck@inter@gap}
+% \begin{macro}{\pxrr@ck@ruby@inter@gap}
+% \begin{macro}{\pxrr@ck@side}
+% \begin{macro}{\pxrr@ck@the@mark}
+% \begin{macro}{\pxrr@ck@ruby@combo}
+% $BF1;~IU2C;~$N7wE@B&$N8F=P;~%Q%i%a%?$NCM!#(B
+% \begin{macrocode}
+\let\pxrr@ck@ruby@font\relax
+\let\pxrr@ck@size@ratio\relax
+\let\pxrr@ck@inter@gap\relax
+\let\pxrr@ck@ruby@inter@gap\relax
+\let\pxrr@ck@side\relax
+\let\pxrr@ck@the@mark\relax
+\let\pxrr@ck@ruby@combo\relax
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@ck@kenten@head}
+% $BEv3:$N%k%SL?Na$,!"7wE@L?Na$N0z?t$N@hF,$K$"$k$+!#(B
+% \begin{macrocode}
+\newif\ifpxrr@ck@kenten@head
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr@ck@kenten@end}
+% $BEv3:$N%k%SL?Na$,!"7wE@L?Na$N0z?t$N@hF,$K$"$k$+!#(B
+% \begin{macrocode}
+\newif\ifpxrr@ck@kenten@end
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ck@bind@param}
+% $B!H8F=P;~JQ?t!I$X$N%3%T!<$r9T$&!#(B
+% \begin{macrocode}
+\def\pxrr@ck@bind@param{%
+ \let\pxrr@ck@ruby@font\pxrr@c@ruby@font
+ \let\pxrr@ck@size@ratio\pxrr@c@size@ratio
+ \let\pxrr@ck@inter@gap\pxrr@c@inter@gap
+ \let\pxrr@ck@ruby@inter@gap\pxrr@k@ruby@inter@gap
+ \let\pxrr@ck@side\pxrr@side
+ \let\pxrr@ck@the@mark\pxrr@k@the@mark
+ \let\pxrr@ck@ruby@combo\pxrr@k@ruby@combo
+ \pxrr@csletcs{ifpxrr@ck@kenten@head}{ifpxrr@k@first@entry}%
+ \pxrr@csletcs{ifpxrr@ck@kenten@end}{ifpxrr@k@last@entry}%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \subsection{$B$=$NB>$NJQ?t(B}
+%
+% \begin{macro}{\pxrr@ck@zw}
+% $B7wE@$NA43QI}!#(B
+% \begin{macrocode}
+\let\pxrr@ck@zw\relax
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pxrr@ck@raise@P}
+% $B%k%SB&$,(B |P| $B$G$"$k>l9g$N!"7wE@$N?bD>J}8~$N0\F0NL!#(B
+% \Note $B7wE@B&$,(B |S| $B$G$"$k>l9g$OIiCM$K$J$k!#(B
+% \begin{macrocode}
+\let\pxrr@ck@raise@P\relax
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pxrr@ck@raise@S}
+% $B%k%SB&$,(B |S| $B$G$"$k>l9g$N!"7wE@$N?bD>J}8~$N0\F0NL!#(B
+% \begin{macrocode}
+\let\pxrr@ck@raise@S\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ck@raise@t}
+% $B%k%SB&$,N>B&%k%S$G$"$k>l9g$N!"7wE@$N?bD>J}8~$N0\F0NL!#(B
+% \begin{macrocode}
+\let\pxrr@ck@raise@t\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%*%W%7%g%s@09g@-8!::(B}
+%
+% \begin{macro}{\pxrr@ck@check@option}
+% $BF1;~IU2C$N$?$a$N8F=P;~%Q%i%a%?$ND4@0!#(B
+% \begin{macrocode}
+\def\pxrr@ck@check@option{%
+ \ifpxrr@ck@kenten@head
+ \let\pxrr@bintr@\@empty
+ \let\pxrr@bscomp=.\relax
+ \pxrr@bnobrtrue
+ \fi
+ \ifpxrr@ck@kenten@end
+ \let\pxrr@aintr@\@empty
+ \let\pxrr@ascomp=.\relax
+ \pxrr@anobrtrue
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%U%)%s%H%5%$%:(B}
+%
+% \begin{macro}{\pxrr@ck@assign@fsize}
+% $B%U%)%s%H$K4XO"$9$k@_Dj!#(B
+% \begin{macrocode}
+\def\pxrr@ck@assign@fsize{%
+% \end{macrocode}
+% |\pxrr@ck@zw| $B$NCM$r5a$a$k!#(B
+% \begin{macrocode}
+ \begingroup
+ \@tempdima=\f@size\p@
+ \@tempdima\pxrr@ck@size@ratio\@tempdima
+ \edef\pxrr@ruby@fsize{\the\@tempdima}%
+ \let\pxrr@c@ruby@font\pxrr@ck@ruby@font
+ \pxrr@use@ruby@font
+ \pxrr@get@zwidth\pxrr@ck@zw
+ \global\let\pxrr@gtempa\pxrr@ck@zw
+ \endgroup
+ \let\pxrr@ck@zw\pxrr@gtempa
+% \end{macrocode}
+% |\pxrr@ck@raise@P|$B!"(B|\pxrr@ck@raise@S| $B$NCM$r7W;;$9$k!#(B
+% \begin{macrocode}
+ \ifcase\pxrr@ck@side
+% \end{macrocode}
+% $B7wE@B&$,(B |P| $B$N>l9g!#(B
+% \begin{macrocode}
+ \@tempdimc\pxrr@ck@zw
+ \advance\@tempdimc-\pxrr@htratio\@tempdimc
+ \@tempdima\pxrr@ruby@raise\relax
+ \@tempdimb\pxrr@ruby@zw\relax
+ \advance\@tempdima\pxrr@htratio\@tempdimb
+ \@tempdimb\pxrr@body@zw\relax
+ \advance\@tempdima\pxrr@ck@ruby@inter@gap\@tempdimb
+ \advance\@tempdima\@tempdimc
+ \edef\pxrr@ck@raise@P{\the\@tempdima}%
+ \@tempdima\pxrr@body@zw\relax
+ \@tempdima\pxrr@htratio\@tempdima
+ \@tempdimb\pxrr@body@zw\relax
+ \advance\@tempdima\pxrr@ck@inter@gap\@tempdimb
+ \advance\@tempdima\@tempdimc
+ \edef\pxrr@ck@raise@S{\the\@tempdima}%
+ \let\pxrr@ck@raise@t\pxrr@ck@raise@P
+ \or
+% \end{macrocode}
+% $B7wE@B&$,(B |S| $B$N>l9g!#(B
+% \begin{macrocode}
+ \@tempdimc\pxrr@ck@zw
+ \@tempdimc\pxrr@htratio\@tempdimc
+ \@tempdima-\pxrr@ruby@lower\relax
+ \@tempdimb\pxrr@ruby@zw\relax
+ \advance\@tempdimb-\pxrr@htratio\@tempdimb
+ \advance\@tempdima-\@tempdimb
+ \@tempdimb\pxrr@body@zw\relax
+ \advance\@tempdima-\pxrr@ck@ruby@inter@gap\@tempdimb
+ \advance\@tempdima-\@tempdimc
+ \edef\pxrr@ck@raise@S{\the\@tempdima}%
+ \@tempdima-\pxrr@body@zw\relax
+ \advance\@tempdima-\pxrr@htratio\@tempdima
+ \@tempdimb\pxrr@body@zw\relax
+ \advance\@tempdima-\pxrr@ck@inter@gap\@tempdimb
+ \advance\@tempdima-\@tempdimc
+ \edef\pxrr@ck@raise@P{\the\@tempdima}%
+ \let\pxrr@ck@raise@t\pxrr@ck@raise@S
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%V%m%C%/Kh$NAHHG(B}
+%
+% \begin{macro}{\pxrr@ck@body@natwd}
+% $B?FJ8;zNs$N<+A3D9!#(B
+% \begin{macrocode}
+\let\pxrr@ck@body@natwd\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ck@locate}
+% $B7wE@Ns$N%Q%?!<%s;XDj!#(B
+% \begin{macrocode}
+\let\pxrr@ck@locate\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ck@kenten@list}
+% $B7wE@Ns$N%j%9%H!#(B
+% \begin{macrocode}
+\let\pxrr@ck@kenten@list\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@ck@compose}
+% |#1| $B$K?FJ8;z%F%-%9%H!"(B|\pxrr@ck@body@natwd| $B$K?FJ8;z$N<+A3D9!"(B
+% $B%\%C%/%9(B0$B$K%k%S=PNO!"(B|\pxrr@boxa| $B$K?FJ8;z=PNO!"(B
+% |\pxrr@ck@locate| $B$K%Q%?!<%s$,F~$C$F$$$kA0Ds$G!"(B
+% $B%\%C%/%9(B0$B$K7wE@$rDI2C$9$k!#(B
+%
+% \begin{macrocode}
+\def\pxrr@ck@compose#1{%
+% \end{macrocode}
+% $B7wE@$rAH$s$@%\%C%/%9$r:n$k!#(B
+% \begin{macrocode}
+ \setbox\tw@\pxrr@hbox@to\z@{%
+ \@tempdima=\f@size\p@
+ \@tempdima\pxrr@ck@size@ratio\@tempdima
+ \edef\pxrr@ruby@fsize{\the\@tempdima}%
+ \let\pxrr@c@ruby@font\pxrr@ck@ruby@font
+ \pxrr@use@ruby@font
+ \hss\pxrr@ck@the@mark\hss
+ }%
+% \end{macrocode}
+% $B?FJ8;z%F%-%9%H$rJ,2r$7$?8e!"%j%9%H(B |\pxrr@res| $B$r(B
+% $B7wE@$N%j%9%H$KCV$-49$($k!#(B
+% \begin{macrocode}
+ \pxrr@save@listproc
+ \pxrr@decompose{#1}%
+ \def\pxrr@pre{%
+ \let\pxrr@res\@empty
+ \pxrr@ck@compose@entry\pxrr@pre
+ }%
+ \def\pxrr@inter{%
+ \pxrr@ck@compose@entry\pxrr@inter
+ }%
+ \def\pxrr@post{%
+ \pxrr@appto\pxrr@res{\pxrr@post}%
+ }%
+ \pxrr@res
+ \pxrr@restore@listproc
+ \let\pxrr@natwd\pxrr@ck@body@natwd
+% \end{macrocode}
+% $B7wE@%j%9%H$r6QEyG[CV$9$k!#(B
+% \begin{macrocode}
+ \pxrr@evenspace@int\pxrr@ck@locate\pxrr@boxb\relax
+ {\wd\pxrr@boxa}%
+% \end{macrocode}
+% $B9g@.=hM}!#(B
+% \begin{macrocode}
+ \setbox\z@\hbox{%
+ \unhcopy\z@
+ \kern-\wd\z@
+ \ifcase\pxrr@side
+ \raise\pxrr@ck@raise@P
+ \or
+ \raise\pxrr@ck@raise@S
+ \or
+ \raise\pxrr@ck@raise@t
+ \fi
+ \hb@xt@\wd\pxrr@boxa{\hss\copy\pxrr@boxb\hss}%
+ }%
+}
+\def\pxrr@ck@compose@entry#1#2{%
+ \setbox\pxrr@boxb\pxrr@hbox{#2}%
+ \edef\pxrr@tempa{%
+ \noexpand\pxrr@appto\noexpand\pxrr@res{\noexpand#1{%
+ \hb@xt@\the\wd\pxrr@boxb{\hss\copy\tw@\hss}}}%
+ }\pxrr@tempa
+}
+% \end{macrocode}
+% \end{macro}
+%
+%^^A------------------------------------
+% \section{$B<BAu!'(Bhyperref$BBP:v(B}
+%
+% PDF$BJ8;zNsCf$G$O%k%SL?Na$d7wE@L?Na$,!HL5Fq$J=PNO!I$r$9$k$h$&$K$9$k!#(B
+% $B8=>u$G$O!"%k%S!&7wE@$H$b$K?FJ8;z$N$_$r=PNO$9$k$3$H$K$9$k!#(B
+%
+% \begin{macro}{\pxrr@dumb@sub}
+% $B%*%W%7%g%sItJ,$rFI$_Ht$P$9Jd=u%^%/%m!#(B
+% \begin{macrocode}
+\def\pxrr@dumb@sub#1#2#{#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@dumb@ruby}
+% $BL5Fq$J%k%SL?Na!#(B
+% \begin{macrocode}
+\def\pxrr@dumb@ruby{%
+ \pxrr@dumb@sub\pxrr@dumb@ruby@
+}
+\def\pxrr@dumb@ruby@#1#2{#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@dumb@truby}
+% $BL5Fq$JN>B&%k%SL?Na!#(B
+% \begin{macrocode}
+\def\pxrr@dumb@truby{%
+ \pxrr@dumb@sub\pxrr@dumb@truby@
+}
+\def\pxrr@dumb@truby@#1#2#3{#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr@dumb@tkenten}
+% $BL5Fq$J7wE@L?Na!#(B
+% \Note |\kspan| $B$b$3$NDj5A$rMxMQ$9$k!#(B
+% \begin{macrocode}
+\def\pxrr@dumb@kenten{%
+ \pxrr@dumb@sub\pxrr@dumb@kenten@
+}
+\def\pxrr@dumb@kenten@#1{#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \PKN{hyperref}$B$N(B |\pdfstringdef| $BMQ$N%U%C%/(B |\pdfstringdefPreHook|
+% $B$K>e=q$-=hM}$rDI5-$9$k!#(B
+% \begin{macrocode}
+\providecommand*\pdfstringdefPreHook{}
+\g@addto@macro\pdfstringdefPreHook{%
+% \end{macrocode}
+% |\ruby| $B$H(B |\kenten| $B$O!VK\%Q%C%1!<%8$NL?Na$G$"$k$+!W$N8!::$,I,MW!#(B
+% \begin{macrocode}
+ \ifx\pxrr@cmd@ruby\ruby
+ \let\ruby\pxrr@dumb@ruby
+ \fi
+ \let\jruby\pxrr@dumb@ruby
+ \let\aruby\pxrr@dumb@ruby
+ \let\truby\pxrr@dumb@truby
+ \let\atruby\pxrr@dumb@truby
+ \ifx\pxrr@cmd@kenten\kenten
+ \let\kenten\pxrr@dumb@kenten
+ \fi
+ \let\kspan\pxrr@dumb@kenten
+}
+% \end{macrocode}
+%
+%^^A------------------------------------
+% \Finale
+%
+\endinput
diff --git a/language/japanese/pxrubrica/pxrubrica.ins b/language/japanese/pxrubrica/pxrubrica.ins
new file mode 100644
index 0000000000..2df9a87744
--- /dev/null
+++ b/language/japanese/pxrubrica/pxrubrica.ins
@@ -0,0 +1,4 @@
+\def\batchfile{pxrubrica.ins}
+\input docstrip.tex
+\keepsilent
+\generateFile{pxrubrica.sty}{f}{\from{pxrubrica.dtx}{}}
diff --git a/language/japanese/pxrubrica/pxrubrica.pdf b/language/japanese/pxrubrica/pxrubrica.pdf
new file mode 100644
index 0000000000..dffd46d9e5
--- /dev/null
+++ b/language/japanese/pxrubrica/pxrubrica.pdf
Binary files differ
diff --git a/language/japanese/pxrubrica/sample/test-jlreq.pdf b/language/japanese/pxrubrica/sample/test-jlreq.pdf
new file mode 100644
index 0000000000..419f582dce
--- /dev/null
+++ b/language/japanese/pxrubrica/sample/test-jlreq.pdf
Binary files differ
diff --git a/language/japanese/pxrubrica/sample/test-jlreq.tex b/language/japanese/pxrubrica/sample/test-jlreq.tex
new file mode 100644
index 0000000000..0bc0275418
--- /dev/null
+++ b/language/japanese/pxrubrica/sample/test-jlreq.tex
@@ -0,0 +1,109 @@
+\documentclass{jsarticle}
+\usepackage{otf}
+\usepackage{plext}
+\usepackage{pxrubrica}
+\rubysetup{<j>} % nꃋrŁAאڕɔp܂ł̂‚̂Ƃ
+ % \rubysetup ̂(pbP[W)l |cj| ł
+\rubyintergap{0.04} % rƐe̊Ԃ̋(l 0)
+\begin{document}
+
+\begin{center}
+%======================================= cg
+\begin{minipage}<t>{20zw}
+%--------------------------------------- 3.3.1
+\ruby{Nq}{|}\ruby{a}{}\ruby{}{ǂ}B\par
+%%%% mr(IvV=m)
+ % e \CID{7674} (qrّ̎)ꕶƈ { } Kv
+\ruby[m]{l}{Ђ}\ruby[m]{q}{}\ruby[m]{{\CID{7674}}}{}܂\par
+\ruby[m]{S}{|}\ruby[m]{p}{ق|}\ruby[m]{Î}{悤|}B\par
+%%%% nꃋr(IvV=j)
+\ruby[j]{S}{|}\ruby[j]{p}{ق|}\ruby[j]{Î}{悤|}B\par
+\ruby[j]{꒬}{||悤}\quad
+ % ׂ̕ɐiĂ͂ȂɁq|r
+\ruby[j|]{}{|}\ruby[|j]{}{悤}\par
+%%%% O[vr(IvV=g)
+\ruby[g]{z}{}\quad \ruby[g]{}{‚}\quad \ruby[g]{c}{Ȃ}\par
+\rubysetup{g} % lO[vrɕύX
+\ruby{E}{C^[tG[X}\quad \ruby{}{AW[}\quad
+\ruby{ڋq}{NCAg}\quad \ruby{͌^}{f}\par
+\ruby{ҏW}{{editor}}\quad \ruby{{editor}}{GfB^[}\par
+\rubysetup{j} % lnꃋrɖ߂
+%--------------------------------------- 3.3.3
+\ruby{}{̂ڂ}\quad \ruby{ҎO}{|ւ||}\par
+ % Or͖Ή
+\begin{quote} % 傫ȕTCYł̗
+ \LARGE\rubysizeratio{0.375} % kύX(0.5)
+ \ruby{ҎO}{|ւ||}
+\end{quote}
+%--------------------------------------- 3.3.4
+%%%% r(\truby ) (O[vr̂)
+\truby{}{ƂȂ}{‚}
+\par\medskip % r͖̍̂ł̂܂܂ƎsƏdȂ
+\rubysetup{m} %------------------------- 3.3.5
+\ruby{}{₭}\par
+%%%% t(IvV=c)͊
+Ŗʂ\ruby{n}{}\quad
+%%%% t(IvV=h)
+Ŗʂ\ruby[h]{n}{}\par
+\ruby{}{Ƃ}\par
+ % q||r̒[悤ɂȂG q|rƂ̈Ⴂɒ
+\ruby[||-]{{}{}\quad \ruby[-||]{{}{}\par
+\ruby[||-]{{}{}\quad \ruby[|-|]{{}{}\par
+\rubysetup{g} %------------------------- 3.3.6
+\ruby{q}{R[fcNX}\par
+\rubysetup{j} %------------------------- 3.3.7
+\ruby{XJ}{|䂤}\quad \ruby{ؕ|}{|}\par
+\ruby[h]{XJ}{|䂤}\quad \ruby[h]{ؕ|}{|}\par
+\ruby{V}{䂤|}\quad \ruby{}{|悤}\quad \ruby{A}{悤|}\par
+\ruby{}{|悤}\quad \ruby{ے}{悤|悤}\par
+% un̍\l@v͔Ή
+% nꃋrŝ́uvcc
+\end{minipage}
+\par %================================== g
+%--------------------------------------- 3.3.1
+\ruby{Nq}{|}\ruby{a}{}\ruby{}{ǂ}B\par
+\ruby[g]{ҏW}{{editor}}\quad \ruby[g]{{editor}}{GfB^[}\par
+\rubysetup{m} %------------------------- 3.3.5
+Ŗʂ\ruby{n}{}\par % gł [h] ͎gps
+\ruby{}{Ƃ}\par
+\rubysetup{g} %------------------------- 3.3.6
+\ruby{q}{R[fcNX}\par
+\ruby{͌^}{f}\quad \ruby{p}{CZX}\par
+{\rubystretchprop{0}{1}{0}% 擪E𑵂
+\ruby{͌^}{f}\quad \ruby{p}{CZX}}\par
+\ruby{Ȃ̐ꑜ}{rG^}\par % Iɒ
+\ruby{ڋq}{NCAg}\quad \ruby{E}{C^[tG[X}\par
+{\rubystretchprop{0}{1}{0}% 擪E𑵂
+\ruby{ڋq}{NCAg}\quad \ruby{E}{C^[tG[X}}\par
+\rubysetup{j} %------------------------- 3.3.7
+\ruby{XJ}{|䂤}\quad \ruby{ؕ|}{|}\par
+\end{center}
+%
+\pagebreak
+%
+\begin{center}
+%======================================= cg
+\begin{minipage}<t>{20zw}
+%--------------------------------------- 3.3.8
+\rubysetup{<->} % rSp܂ł̂̂lƂ
+\ruby{l}{Ђ}\ruby{}{}\ruby{}{}\ruby{c}{̂}\par
+̕ɂ\ruby{}{ւ}E\ruby{}{ނ}E\ruby{r}{₭}E\ruby{}{‚}\par
+̕ɂ\ruby{}{ւ}A\ruby{}{ނ}A\ruby{r}{₭}A\ruby{}{‚}\par
+\newcommand*{\\}{\CID{7642}} % \CID{...} }Nɂ { } svɂȂ
+\ruby{\\}{킳}̍DȐl\ruby{}{ӂƂ}悭A\ruby{w}{Ђ̂}\par
+̕ɂ́u\ruby{}{ւ}vu\ruby{}{ނ}vu\ruby{r}{₭}vu\ruby{}{‚}v\par
+\ruby[-|]{\\}{킳}DȐl\ruby[-|]{}{ӂƂ}悭A\ruby[-|]{w}{Ђ̂}ނ\par
+\rubysetup{(-)} % rp܂ł̂̂lƂ
+\ruby{\\}{킳}̍DȐl\ruby{}{ӂƂ}悭A\ruby{w}{Ђ̂}\par
+\ruby{\\}{킳}DȐl\ruby{}{ӂƂ}悭A\ruby{w}{Ђ̂}ނ\par
+\rubysetup{<->} % rSp܂łɖ߂
+\ruby{a}{݂}RSTUVWXOPQRSTUVWX
+PQRSTUiWBjPQRSTUVWX\ruby{a}{݂}PQRcc\par
+{\gtfamily $\downarrow$ ͏C`LĂ܂}\par
+ % ‚܂\ߍsEsɗ邱Ƃzē͂ςĂ
+\ruby[||g|]{}{ANZT[}TUVWXOPQRSTUVWXO
+PQRSTUVWXOPQRSTU\ruby[|g||]{}{ANZT[}PQRcc\par
+\end{minipage}
+\end{center}
+
+\end{document}
diff --git a/language/japanese/pxrubrica/sample/test-sample.pdf b/language/japanese/pxrubrica/sample/test-sample.pdf
new file mode 100644
index 0000000000..8c295a0915
--- /dev/null
+++ b/language/japanese/pxrubrica/sample/test-sample.pdf
Binary files differ
diff --git a/language/japanese/pxrubrica/sample/test-sample.tex b/language/japanese/pxrubrica/sample/test-sample.tex
new file mode 100644
index 0000000000..667848d4c7
--- /dev/null
+++ b/language/japanese/pxrubrica/sample/test-sample.tex
@@ -0,0 +1,136 @@
+\documentclass[autodetect-engine,dvi=dvipdfmx,ja=standard,
+ a4paper]{bxjsarticle}
+\usepackage{setspace}
+\usepackage{pxrubrica}
+\newcommand*{\vb}{\symbol{`\|}}
+\newcommand*{\Opt}[1]{\texttt{#1}}
+\newcommand*{\PKN}[1]{\textsf{#1}}
+\newsavebox{\myexample}
+\rubysetup{f}
+\begin{document}
+
+\title{\PKN{pxrubrica}パッケージサンプル}
+\author{某ZR}
+\date{コンパイル日付: \today}
+\maketitle
+
+\section{サンプル}
+
+\subsection{基本的な用法}
+
+\begin{itemize}
+\item モノルビ(\Opt{m}オプション):各漢字に一つのルビブロック\\
+例:\quad
+\verb+\ruby[m]{鷹}{たか}+ → \ruby[m]{鷹}{たか}\quad
+\verb+\ruby[m]{鶯}{うぐいす}+ → \ruby[m]{鶯}{うぐいす}
+\item グループルビ(\Opt{m}オプション):漢字列全体に一つのルビブロック\\
+例:\quad
+\verb+\ruby[g]{雲雀}{ひばり}+ → \ruby[g]{雲雀}{ひばり}\quad
+\verb+\ruby[g]{不如帰}{ほととぎす}+ → \ruby[g]{不如帰}{ほととぎす}
+\item 熟語ルビ(\Opt{j}オプション):各漢字にルビを対応させるが熟語として読む\\
+例:\quad
+\verb+\ruby[j]{孔雀}{く|じゃく}+ → \ruby[j]{孔雀}{く|じゃく}\quad
+\verb+\ruby[j]{七面鳥}{しち|めん|ちょう}+ → \ruby[j]{七面鳥}{しち|めん|ちょう}
+\item ルビ文字列中の \verb+|+ は各漢字の読みの境界を示す。
+(孔=く、雀=じゃく)。
+グループルビでは不要である。
+\item 組版結果の比較:
+\begin{quote}\begin{tabular}{ll@{\ }l@{\ }c*3{@{\quad}c}}
+モノルビ & (\verb+\ruby[m]{小鳩}{こ|ばと}+) & →
+ & \ruby[m]{小鳩}{こ|ばと}
+ & \ruby[m]{鶺鴒}{せき|れい}
+ & \ruby[m]{雷鳥}{らい|ちょう}
+ & \ruby[m]{燕}{つばめ}
+\\
+グループルビ & (\verb+\ruby[g]{小鳩}{こばと}+) & →
+ & \ruby[g]{小鳩}{こばと}
+ & \ruby[g]{鶺鴒}{せきれい}
+ & \ruby[g]{雷鳥}{らいちょう}
+ & \ruby[g]{燕}{つばめ}
+\\
+熟語ルビ & (\verb+\ruby[j]{小鳩}{こ|ばと}+) & →
+ & \ruby[j]{小鳩}{こ|ばと}
+ & \ruby[j]{鶺鴒}{せき|れい}
+ & \ruby[j]{雷鳥}{らい|ちょう}
+ & \ruby[j]{燕}{つばめ}
+\end{tabular}\end{quote}
+熟語の各漢字とルビが対応する場合は、熟語ルビ(\Opt{j})を使い、
+そうでない(熟字訓の)場合はグループルビ(\Opt{g})を使うのが通例である。
+特に熟語の各漢字ごとの読みを明示したい場合は
+モノルビ(\Opt{m})を使うとよい。
+なお、漢字一文字に対するルビの場合は、
+\Opt{m}、\Opt{g}、\Opt{j}の何れも同じ結果になる。
+\item オプションの既定値を \verb+\rubysetup+ 命令で設定できる。
+例えば、\verb+\rubysetup{g}\ruby{軍鶏}{しゃも}+
+は \verb+\ruby[g]{軍鶏}{しゃも}+ と等価になる。
+“既定値の既定値”は\Opt{|cjPeF|}である。
+\end{itemize}
+
+\subsection{進入・突出}
+
+\begin{itemize}
+\item ルビの進入の制御:
+\begin{center}\begin{tabular}{ll@{\ }l@{\ }c*2{@{\quad}c}}
+進入無し & \verb+この\ruby[|-|]{鵲}{かささぎ}の+ & →
+ & この\ruby[|-|]{鵲}{かささぎ}の
+ & この\ruby[|-|]{鸛}{こうのとり}の
+ & この\ruby[|-|]{鵜}{う}の
+\\
+進入量小 & \verb+この\ruby[(-)]{鵲}{かささぎ}の+ & →
+ & この\ruby[(-)]{鵲}{かささぎ}の
+ & この\ruby[(-)]{鸛}{こうのとり}の
+ & この\ruby[(-)]{鵜}{う}の
+\\
+進入量大 & \verb+この\ruby[<->]{鵲}{かささぎ}の+ & →
+ & この\ruby[<->]{鵲}{かささぎ}の
+ & この\ruby[<->]{鸛}{こうのとり}の
+ & この\ruby[<->]{鵜}{う}の
+\end{tabular}\end{center}
+\item もし「ルビは仮名にはかけてよいが漢字はダメ」という場合は、
+“\verb+この\ruby[<-|]{鵲}{かささぎ}等+”
+と書くと「この\ruby[<-|]{鵲}{かささぎ}等」の出力が得られる。
+\item 基本モード(\Opt{m}/\Opt{g}/\Opt{j})と進入を同時に指定したい場合は、
+オプション文字列を \Opt{|g|} や \Opt{|m>} のようにする。
+ここで、“\Opt{-}”は「基本モードは既定値を用いる」ことを意味する。
+\item 突出の制御:
+オプション \Opt{||} で突出が抑止される。
+\begin{quote}
+\begin{lrbox}{\myexample}
+\small$\leftarrow$ \verb+\ruby[||->]{雀}{すずめ}+
+\end{lrbox}
+\fbox{\parbox{.42\linewidth}{%
+\ruby[||->]{雀}{すずめ}の…
+\quad \usebox{\myexample}%
+\rule{0pt}{12pt}\\
+インコの
+}}\quad vs.\quad
+\begin{lrbox}{\myexample}
+\small$\leftarrow$ \verb+\ruby[|->]{雀}{すずめ}+
+\end{lrbox}
+\fbox{\parbox{.42\linewidth}{%
+\ruby[|->]{雀}{すずめ}の…
+\quad \usebox{\myexample}%
+\rule{0pt}{12pt}\\
+インコの
+}}
+\end{quote}
+\end{itemize}
+
+\subsection{発展的な用法}
+
+\begin{itemize}
+\item \verb+\aruby+:欧文に対してルビを付ける:
+\par\noindent 例:\quad
+\verb+\aruby{Get out}{ゲラウッ}!+ →\
+ \aruby{Get out}{ゲラウッ}!
+\item \verb+\rubyfontsetup+:ルビ出力のためのフォントを指定する。
+例えば、ゴシック体の漢字列に対して明朝体のルビを振りたい場合は、
+次のようにする:
+\par\noindent
+{\small
+\verb+\rubyfontsetup{\mcfamily}この{\gtfamily \ruby[j]{明朝体}{みん|ちょう|たい}}+}
+→\
+{\rubyfontsetup{\mcfamily}この{\gtfamily \ruby[j]{明朝体}{みん|ちょう|たい}}}
+\end{itemize}
+
+\end{document}
diff --git a/language/japanese/pxrubrica/sample/test-sf.pdf b/language/japanese/pxrubrica/sample/test-sf.pdf
new file mode 100644
index 0000000000..dd272273a7
--- /dev/null
+++ b/language/japanese/pxrubrica/sample/test-sf.pdf
Binary files differ
diff --git a/language/japanese/pxrubrica/sample/test-sf.tex b/language/japanese/pxrubrica/sample/test-sf.tex
new file mode 100644
index 0000000000..697340b140
--- /dev/null
+++ b/language/japanese/pxrubrica/sample/test-sf.tex
@@ -0,0 +1,116 @@
+\documentclass{jsarticle}
+\usepackage{otf}
+\usepackage{plext}
+\usepackage{pxrubrica}
+\rubysetup{<->} % i
+% \rubyintergap 0 ̂܂
+\begin{document}
+
+\begin{center}
+\begin{minipage}<t>{20zw}
+%--------------------------------------- 10.1
+%% tr
+\rubysetup{j}% nꃋrɂ
+ckA\ruby{R}{䂤|䂤}Ac\quad
+cA\ruby[|-|]{}{ق}\ruby[|-]{}{܂}ɁAc\par
+% 炭Oɂ͐io悢낤
+cA\ruby[-|]{}{ق}\ruby[|-]{}{܂}ɁAc\par
+% mr
+\ruby[m]{H}{ق|Ƃ}\quad \ruby[m]{}{Ƃ|҂}\quad \ruby[m]{}{Ђ|}\par
+%--------------------------------------- 10.2
+%% tr
+\rubysetup{hm}% tmrɂ
+% {pbP[Wł́Aut(h)v́ur̕Zvꍇɂ̂݉eB
+% urv̓ˏo̐́q||rōsB
+ckA\ruby[||-]{R}{䂤|䂤}Ac\quad
+cA\ruby[||-|]{}{ق}\ruby[|-]{}{܂}ɁAc\par
+% V݂ꂽugt(H)v[h𗘗p
+\rubysetup{H}% gt
+ckA\ruby{R}{䂤|䂤}Ac\quad
+cA\ruby[-|]{}{ق}\ruby{}{܂}ɁAc\par
+% nꃋr vs mr
+\rubysetup{cj}% tnꃋrɂ
+\ruby[||-]{R}{䂤|䂤}\quad
+\ruby[||m]{R}{䂤|䂤}\par
+%--------------------------------------- 10.3
+\ruby{b}{|₤||}\quad
+\ruby[m]{b}{|₤||}\par
+% {pbP[Wł̗͖͂NȂ
+\ruby[g]{b}{ƁS}\par
+% uFv̂悤ȏnꃋrzuɂ͔ΉȂ̂ŁA
+% Oˏo֎~KXpđΏ邵Ȃ
+\ruby[|m|]{R}{|}\ruby[||m>]{}{₤}\quad
+\ruby[|m|]{R}{|}\ruby[||m)]{}{₤}\par
+\ruby[|m|]{R}{|}\ruby[||m|]{}{₤}\quad
+\ruby[<->]{R}{||₤}\par
+% ̏ꍇAugtvłł
+\ruby[Hm>]{R}{||₤}\quad
+\ruby[Hm)]{R}{||₤}\par
+% eϓ}~(E)pΏ@
+\ruby[||gE>]{R}{܂₤}\quad
+\ruby[||gE)]{R}{܂₤}\par
+%--------------------------------------- 10.4
+\begin{flushleft} % jsarticle Ȃ̂ŘaXP[͖ 0.925
+\fontsize{20}{25}\selectfont % e 20pt
+\rubysizeratio{0.25}\ruby{R}{䂤|䂤}\quad % r 5pt
+\rubysizeratio{0.5}\ruby{R}{䂤|䂤}\quad % r 10pt
+\rubysizeratio{0.45}\ruby{R}{䂤|䂤}\par % r 9pt
+% r̃TCYOɂ wvxł́uOrvł͂Ȃ
+\rubysizeratio{0.333}\ruby{R}{䂤|䂤}\quad % r 6.66pt
+\end{flushleft}
+\end{minipage}
+\par
+\begin{minipage}<t>{20zw}
+%--------------------------------------- 11.1
+% {pbP[Wł͏Ƀr͍Ȃ̂Ƃ
+\frame{\parbox{19zw}{%
+\ruby{{}{|ڂ}\ruby{׉}{|}\ruby{O}{˂|Ԃ}
+\ruby{i}{Ԃ|}\ruby{}{}A\ruby{@}{ɂ|}%
+\ruby[|-]{l}{₤|ɂ}A͂߂ꂯB
+}}
+\par\medskip
+%--------------------------------------- 11.2
+\frame{\parbox{19zw}{%
+\rubysetup{h}%
+\ruby{}{}Ƃ\ruby{x}{||Ƃ}\ruby{H}{|}ƂA
+\ruby{l}{܂|т}\ruby{h}{}\ruby{}{|}
+\ruby{o}{}\ruby{}{}肯ƂȂB
+\ruby{}{}\ruby{}{܂}\ruby{}{}ɁAƂ\ruby{}{}䂭
+قǂɁA\ruby{}{ӂ}Ђ낰邪Ƃ\ruby{L}{|Ђ}ɂȂʁB
+}}
+\par\medskip
+%--------------------------------------- 11.3(s̒tr)
+\frame{\parbox{15zw}{%
+PQRSTUVWXOPQRST\par
+% i̒̏ꍇ
+\setlength{\parindent}{1zw} % iLɂ
+% ! w肷ƒiłiLɂȂ
+% ! ̂Ȃ <m |m ƓʂɂȂ
+\ruby[<!m]{}{͂܂||}̕ς͖́c\par
+\ruby[|m]{}{͂܂||}̕ς͖́c\par
+}}\par
+% s̒̏ꍇ
+% pIɂ͍sŔʂłKv邪͓̎
+\frame{\parbox{10zw}{%
+PQRSTUVWXO
+\ruby[<m>]{}{͂܂}͕ľÏӂXO %+ ̏ꍇAO
+\ruby[(m)]{}{͂܂}͕ľÏӂXO %+ <, (, | ̂ǂɂĂ
+\ruby[|m|]{}{͂܂}͕ľÏӂXO %+ iłȂ̂ ! ֌W
+\ruby[||m>]{}{͂܂}͕ľÏӂXO
+\ruby[||m)]{}{͂܂}͕ľÏӂXO
+\ruby[||m|]{}{͂܂}͕ľÏӂXO
+% s킹̒̂ߋ󂫗ʂROĂ邱Ƃɒ
+}}\par
+%--------------------------------------- 11.4(s̃r)
+\frame{\parbox{10zw}{%
+PQRSTUVWXO
+iPQRST\ruby[<m>]{}{͂܂}%
+PQRST\ruby[(m)]{}{͂܂}%
+PQRST\ruby[|m|]{}{͂܂}%
+PQRST\ruby[<m||]{}{͂܂}%
+PQRST\ruby[(m||]{}{͂܂}%
+PQRST\ruby[|m||]{}{͂܂}%
+}}\par
+\end{minipage}
+\end{center}
+\end{document}
diff --git a/language/japanese/pxrubrica/sample/test-toc.pdf b/language/japanese/pxrubrica/sample/test-toc.pdf
new file mode 100644
index 0000000000..f4963e3381
--- /dev/null
+++ b/language/japanese/pxrubrica/sample/test-toc.pdf
Binary files differ
diff --git a/language/japanese/pxrubrica/sample/test-toc.tex b/language/japanese/pxrubrica/sample/test-toc.tex
new file mode 100644
index 0000000000..49e224f3ff
--- /dev/null
+++ b/language/japanese/pxrubrica/sample/test-toc.tex
@@ -0,0 +1,19 @@
+\documentclass{jsarticle}
+\usepackage{pxrubrica}
+\rubysetup{<j>}
+\begin{document}
+
+\tableofcontents
+
+\section{\ruby[-|]{{}{|ق|}\ruby[|-|]{@}{|ۂ}\ruby[|-]{O}{|Ԃ}}
+ % óupvłȂ̂ŌォȂÂł ;-)
+
+\ruby[-|]{{}{|ق}\ruby[|-]{}{|݂}́A\ruby{}{|}\ruby{I}{|}ꂽ\ruby{}{|킢}ɂ\ruby{\}{|ւ|}\ruby{}{‚}\ruby{s}{|ǂ}AƂ\ruby{q}{|}̂߂ɁA\ruby{}{||݂}Ƃ\ruby{a}{|}ɂ\ruby{}{|}ƁA킪\ruby{}{}\ruby{Sy}{|}ɂ킽\ruby{R}{|}̂炷\ruby{b}{|}\ruby{m}{|}A\ruby{{}{|}\ruby{s}{|}ɂ\ruby{}{ӂ}\ruby{푈}{|}\ruby{S}{|}\ruby{N}{}邱Ƃ̂Ȃ₤ɂ邱Ƃ\ruby{}{|}A\ruby{匠}{|}\ruby{}{|݂}\ruby{}{}邱Ƃ\ruby{錾}{|}A\ruby{@}{|ς}\ruby{m}{|Ă}B\ruby{}{|}́A\ruby{}{|݂}\ruby{l}{|䂭}\ruby{M}{|}ɂ̂łāA\ruby{}{|}\ruby{}{|݂}\ruby{R}{|炢}A\ruby{}{|悭}\ruby{}{|݂}\ruby{\}{|ւ|}\ruby{sg}{|}A\ruby{}{ӂ|}\ruby{}{|݂}\ruby{}{₤|}B\ruby[-|]{l}{|邢}\ruby[|-]{}{|ւ}\ruby{}{|}łA\ruby{@}{|ς}́A\ruby{}{|}\ruby{}{Ƃ}̂łB́A\ruby{}{͂}\ruby{}{|}\ruby{@}{|ς}A\ruby[-|]{@}{͂|ꂢ}\ruby[|-]{y}{}\ruby{ْ}{|悭}\ruby{r}{͂|}B
+
+\ruby[-|]{{}{|ق}\ruby[|-]{}{|݂}́A\ruby{Pv}{|}\ruby{a}{ւ|}\ruby{O}{˂|}A\ruby[-|]{l}{ɂ|}\ruby[|-]{}{|}\ruby{֌W}{|}\ruby{xz}{|͂}\ruby{}{|}\ruby{z}{|}\ruby{[}{ӂ}\ruby{o}{|}̂łāA\ruby{a}{ւ|}\ruby{}{}\ruby{}{||݂}\ruby{}{|}\ruby{M`}{|}\ruby{M}{|炢}āA\ruby{S}{|}\ruby{}{|}\ruby{ێ}{|}悤\ruby{}{|}B́A\ruby{a}{ւ|}\ruby{ێ}{|}A\ruby{ꐧ}{|}\ruby{]}{ꂢ|䂤}A\ruby{}{|ς}\ruby{΋}{ւ|}\ruby{n}{|₤}\ruby{i}{|}\ruby{}{|}悤\ruby{w}{‚}߂Ă\ruby[-|]{}{|}\ruby[|-]{Љ}{|킢}ɂāA\ruby{_}{߂|}\ruby{n}{|}\ruby{}{}߂\ruby{v}{}ӁB́A\ruby{SE}{||}\ruby{}{|݂}AЂƂ\ruby{|}{悤|}\ruby{R}{|ڂ}\ruby{}{܂ʂ}A\ruby{a}{ւ|}̂\ruby{}{|}\ruby{}{|}\ruby{L}{}邱Ƃ\ruby{mF}{|ɂ}B
+
+́AÂ\ruby{}{|}A\ruby{}{|}̂Ƃ݂̂\ruby{O}{|˂}\ruby{}{|}\ruby{}{|}Ă͂ȂȂ̂łāA\ruby[-|]{}{|}\ruby[|-]{}{|Ƃ}\ruby{@}{͂|}́A\ruby{ՓI}{|ւ|Ă}Ȃ̂łA\ruby{@}{͂|}\ruby{]}{}ӂƂ́A\ruby{}{|}\ruby{匠}{|}\ruby{ێ}{|}A\ruby{}{|}\ruby[-|]{Γ}{|Ƃ}\ruby[|-]{֌W}{|}\ruby{}{}Ƃ\ruby{e}{|}\ruby{Ӗ}{|}ł\ruby{M}{}B
+
+\ruby[-|]{{}{|ق}\ruby[|-]{}{|݂}́A\ruby{}{|}\ruby{_}{߂|}ɂA\ruby{S}{|悭}Ă\ruby{}{|}\ruby{z}{|}\ruby{ړI}{|Ă}\ruby{B}{|}邱Ƃ\ruby{}{}ӁB
+
+\end{document}
diff --git a/language/japanese/pxufont/LICENSE b/language/japanese/pxufont/LICENSE
new file mode 100644
index 0000000000..139b5e5aed
--- /dev/null
+++ b/language/japanese/pxufont/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2017-2019 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/pxufont/README.md b/language/japanese/pxufont/README.md
new file mode 100644
index 0000000000..9c0cc70cfa
--- /dev/null
+++ b/language/japanese/pxufont/README.md
@@ -0,0 +1,95 @@
+PXufont Package
+===============
+
+LaTeX: To emulate non-Unicode Japanese fonts using Unicode fonts
+
+The set of the Japanese logical fonts (JFMs) that are used as standard
+fonts in pTeX and upTeX contains both Unicode JFMs and non-Unicode JFMs.
+This bundle provides an alternative set of non-Unicode JFMs that are tied
+to the virtual fonts (VFs) that refer to the glyphs in the Unicode JFMs.
+Moreover it provides a LaTeX package that redefines the NFSS settings of
+the Japanese fonts of (u)pLaTeX so that the new set of non-Unicode JFMs
+will be employed. As a whole, this bundle allows users to dispense with
+the mapping setup on non-Unicode JFMs.
+
+Such setup is useful in particular when users want to use such OpenType
+fonts (such as Source Han Serif) that have a glyph encoding different from
+Adobe-Japan1, because mapping setup from non-Unicode JFMs to such physical
+fonts are difficult to prepare.
+
+### System requirement
+
+ * TeX format: LaTeX.
+ * TeX engine: pTeX / upTeX.
+ * DVI drivers: Anything that supports JFMs and VFs.
+ * Dependent packages:
+ - ifptex
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/platex/pxufont/
+ - `tfm/*.tfm` → $TEXMF/fonts/tfm/public/pxufont/
+ - `vf/*.vf` → $TEXMF/fonts/vf/public/pxufont/
+
+### License
+
+This package is distributed under the MIT License.
+
+
+The pxufont Package
+-------------------
+
+### Package Loading
+
+ \usepackage{pxufont}
+
+There are no package options available. Once the package is loaded, the
+NFSS settings for the standard Japanese fonts will be redeclared.
+
+Note: When you use both this package and the japanese-otf package, then
+you must load japanese-otf earlier.
+
+### Usage
+
+For present, this package has no public commands. All the settings are
+done through the package option.
+
+
+The pxufont-ruby Package
+------------------------
+
+This package is an alternative to the pxufont package. The difference
+between the two is the way the “ruby notation fonts” of the japanese-otf
+package are handled; pxufont disables the ruby fonts and substitutes then
+with ordinary fonts, whereas pxufont-ruby supports also the ruby fonts.
+This feature however requires extra settings of font mapping.
+
+### Package Loading
+
+ \usepackage{pxufont-ruby}
+
+Note that pxufont and pxufont-ruby are mutually exclusive; when both
+packages are loaded, then the one loaded earlier will be effective.
+
+NB. Developers can test whether pxufont-ruby is effective by testing
+whether `\pxufontUseRubyFont` is defined.
+
+
+Revision History
+----------------
+
+ * Version 0.5 〈2019/02/28〉
+ - Support for the fonts of ruby notation forms.
+
+ * Version 0.4 〈2019/02/15〉
+ - Support for the fonts of `min10` series.
+ - Fix erroneous `zu-jisg.vf`.
+
+ * Version 0.3 〈2017/07/07〉
+ - Emulate also some Unicode fonts which VFs map to non-Unicode fonts.
+ * Version 0.2 〈2017/06/28〉
+ - The first public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/pxufont/pxufont-ruby.sty b/language/japanese/pxufont/pxufont-ruby.sty
new file mode 100644
index 0000000000..a97c4b9f3e
--- /dev/null
+++ b/language/japanese/pxufont/pxufont-ruby.sty
@@ -0,0 +1,25 @@
+%%
+%% This is file 'pxufont-ruby.sty'.
+%%
+%% Copyright (c) 2017-2019 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxufont-ruby}[2019/02/28 v0.5]
+\def\pxuf@rb@pkgname{pxufont-ruby}
+
+%--------------------------------------- main
+
+\@ifpackageloaded{pxufont}{}{%else
+ \let\pxufontUseRubyFont=t
+ \RequirePackage{pxufont}\relax
+}
+
+%--------------------------------------- done
+\endinput
+%% EOF
diff --git a/language/japanese/pxufont/pxufont.sty b/language/japanese/pxufont/pxufont.sty
new file mode 100644
index 0000000000..1604315f08
--- /dev/null
+++ b/language/japanese/pxufont/pxufont.sty
@@ -0,0 +1,186 @@
+%%
+%% This is file 'pxufont.sty'.
+%%
+%% Copyright (c) 2017-2019 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxufont}[2019/02/28 v0.5]
+\def\pxuf@pkgname{pxufont}
+%
+\providecommand\bxDebug[1]{}
+
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{ifuptex}
+
+%% unique tokens
+\def\pxuf@end{\pxuf@end@}
+\def\pxuf@mt{\pxuf@mt@}
+
+%% switch 'pxuf@use@ruby'
+\newif\ifpxuf@use@ruby
+\ifx t\pxufontUseRubyFont
+ \pxuf@use@rubytrue
+\fi
+
+%% \pxuf@split{<at>}{<target>}
+\def\pxuf@split#1#2{%
+ \edef\pxuf@tmpx{{#1}{#2}}%
+ \expandafter\pxuf@split@a\pxuf@tmpx}
+\def\pxuf@split@a#1#2{%
+ \def\pxuf@tmpx##1#1##2\pxuf@end{\pxuf@split@b{##1}{##2}}%
+ \pxuf@tmpx#2\pxuf@mt#1\pxuf@end}
+\def\pxuf@split@b#1#2{%
+ \let\pxuf@pre\relax \let\pxuf@post\relax
+ \ifx\pxuf@end#2\pxuf@end\else
+ \pxuf@split@c#2\pxuf@end{#1}%
+ \fi}
+\def\pxuf@split@c#1\pxuf@mt#2\pxuf@end#3{%
+ \def\pxuf@pre{#3}\def\pxuf@post{#1}}
+
+%% swutch 'pxuf@otf@used'
+\newif\ifpxuf@otf@used
+\@ifpackageloaded{otf}{%
+ \pxuf@otf@usedtrue
+}{%else
+ \AtBeginDocument{%
+ \@ifpackageloaded{otf}{%
+ \PackageError\pxuf@pkgname
+ {You must load this package after 'otf'}\@ehc
+ }{}}%
+}
+
+%% \pxuf@JY/\pxuf@JT
+\ifNativeupTeX
+\def\pxuf@JY{JY2}\def\pxuf@JT{JT2}
+\else
+\def\pxuf@JY{JY1}\def\pxuf@JT{JT1}
+\fi
+
+%% \pxuf@edef@detokenized\CS{<body>}
+\def\pxuf@edef@detokenized#1{%
+ \def\pxuf@tmpx{%
+ \expandafter\pxuf@edef@detokenized@a\meaning#1\pxuf@end#1}%
+ \afterassignment\pxuf@tmpx\edef#1}
+\def\pxuf@edef@detokenized@a#1>#2\pxuf@end#3{%
+ \def#3{#2}}
+
+%--------------------------------------- general
+\begingroup
+
+%% variables
+% \pxuf@scale
+% \pxuf@tfm
+
+%% \pxuf@reset@size
+\def\pxuf@reset@size{10}
+\ifdim\f@size\p@=10\p@\else
+ \edef\pxuf@reset@size{\pxuf@reset@size,\f@size}
+\fi
+\ifx\jsc@JYn\@undefined\else %jsclasses
+ \begingroup
+ \footnotesize \xdef\@gtempa{\f@size}
+ \endgroup
+ \edef\pxuf@reset@size{\pxuf@reset@size,\@gtempa}
+\fi
+\bxDebug{ufont:reset@size=\pxuf@reset@size}
+
+%% \pxuf@parse@spec{E/F/S/S}
+% Sets \pxuf@scale and \pxuf@tfm.
+\def\pxuf@parse@spec#1{%
+ \let\pxuf@scale\relax \let\pxuf@tfm\relax
+ \expandafter\expandafter\expandafter\pxuf@parse@spec@a
+ \csname#1\endcsname}%
+\def\pxuf@parse@spec@a#1{%
+\bxDebug{ufont:\string#1}%
+ \expandafter\pxuf@parse@spec@b\string#1<-><$}
+\def\pxuf@parse@spec@b#1<->#2<#3${%
+ \pxuf@parse@spec@c#2**$}% #2=font-info for <->
+\def\pxuf@parse@spec@c#1*#2*#3${%
+ \ifx\pxuf@mt#3\pxuf@mt % no * in font-info
+ \pxuf@parse@spec@d#1*$% #1=x-fontarg
+ \else \def\pxuf@tmpb{#1}% #1=size-func
+ \ifx\pxuf@tmpb\pxuf@@s \let\pxuf@tmpb\@empty \fi
+ \ifx\pxuf@tmpb\@empty
+ \pxuf@parse@spec@d#2*$% #2=x-fontarg
+ \fi
+ \fi}
+\def\pxuf@parse@spec@d#1#2${%
+ \ifx*#1% then no-op
+ \else\ifx[#1\pxuf@parse@spec@e#2$%
+ \else \pxuf@parse@spec@e1]#1#2$%
+ \fi\fi}
+\def\pxuf@parse@spec@e#1]#2*#3${%
+ \def\pxuf@scale{#1}\def\pxuf@tfm{#2}%
+ \pxuf@change@tfm}
+\pxuf@edef@detokenized\pxuf@@s{s}
+
+%% \pxuf@change@tfm
+\pxuf@edef@detokenized\pxuf@tmpa{exp/ruby/nml}
+\def\pxuf@tmpb#1/#2/#3\pxuf@end{%
+ \def\pxuf@change@tfm{%
+ \pxuf@change@tfm@a{#1}{#3}%
+ \ifpxuf@use@ruby\else
+ \pxuf@change@tfm@a{#2}{#3}
+ \fi}
+}\expandafter\pxuf@tmpb\pxuf@tmpa\pxuf@end
+\def\pxuf@change@tfm@a#1#2{%
+ \pxuf@split{#1}\pxuf@tfm\ifx\pxuf@pre\relax\else
+ \edef\pxuf@tfm{\pxuf@pre#2\pxuf@post}%
+ \fi}
+
+%% \pxuf@process@one
+\def\pxuf@process@one#1#2#3#4#5{%
+\bxDebug{ufont:process(#1;#2/#3/#4/#5)}%
+ \pxuf@parse@spec{#2/#3/#4/#5}%
+ \ifx\pxuf@tfm\relax\else
+\bxDebug{ufont:spec=\pxuf@scale:\pxuf@tfm}%
+ \DeclareFontShape{#2}{#3}{#4}{#5}{<->%
+ \ifdim\pxuf@scale\p@=\p@\else s*[\pxuf@scale]\fi
+ zu-\pxuf@tfm}{}%
+ \if t#1%
+ \@for\pxuf@tmpa:=\pxuf@reset@size\do{%
+ \global\expandafter\let\csname#2/#3/#4/#5/\pxuf@tmpa
+ \endcsname\relax}%
+ \fi
+ \fi}
+
+%% process
+\ifpxuf@otf@used
+ \@for\pxuf@w:={\pxuf@JY,\pxuf@JT}\do{%
+ \@for\pxuf@x:={hmc,hgt,mg,ruby,rubyg,rubymg}\do{%
+ \@for\pxuf@y:={l,m,bx,eb}\do{%
+ \expandafter\ifx\csname\pxuf@w/\pxuf@x/\pxuf@y/n\endcsname\relax\else
+ \expandafter\let\csname pxuf@DF/\pxuf@w/\pxuf@x\endcsname=t%
+ \pxuf@process@one{t}\pxuf@w\pxuf@x\pxuf@y{n}%
+ \fi}}}
+ \@for\pxuf@w:={\pxuf@JY,\pxuf@JT}\do{%
+ \@for\pxuf@x:={cidj,cidjg,cidjmg}\do{%
+ \@for\pxuf@y:={l,m,bx,eb}\do{%
+ \expandafter\ifx\csname\pxuf@w/\pxuf@x/\pxuf@y/0\endcsname\relax\else
+ \@tfor\pxuf@z:=012345\do{%
+ \pxuf@process@one{f}\pxuf@w\pxuf@x\pxuf@y\pxuf@z}%
+ \fi}}}
+\fi
+\ifNativeupTeX\else
+ \@for\pxuf@w:={\pxuf@JY,\pxuf@JT}\do{%
+ \@for\pxuf@x:={\mcdefault,\gtdefault,mc,gt}\do{%
+ \expandafter\ifx\csname pxuf@DF/\pxuf@w/\pxuf@x\endcsname\relax
+ \expandafter\ifx\csname\pxuf@w/\pxuf@x/m/n\endcsname\relax\else
+ \expandafter\let\csname pxuf@DF/\pxuf@w/\pxuf@x\endcsname=t%
+ \pxuf@process@one{t}\pxuf@w\pxuf@x{m}{n}%
+ \fi
+ \fi}}
+\fi
+
+\endgroup
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgothb-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgothb-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgothb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgothb-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgothb-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgothb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgothbn-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgothbn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgothbn-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgothbn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgotheb-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgotheb-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgotheb-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgotheb-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgothebn-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgothebn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgothebn-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgothebn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgothr-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgothr-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgothr-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgothr-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgothrn-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgothrn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlgothrn-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlgothrn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlmgothr-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlmgothr-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlmgothr-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlmgothr-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlmgothrn-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlmgothrn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlmgothrn-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlmgothrn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminb-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminb-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminb-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminb-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminbn-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminbn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminbn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminbn-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminbn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminbn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminl-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminl-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminl-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminl-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminl-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminl-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminln-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminln-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminln-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminln-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminln-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminln-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminr-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminr-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminr-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminr-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminrn-h.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminrn-h.tfm
new file mode 100644
index 0000000000..073be79a02
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-brsgnmlminrn-v.tfm b/language/japanese/pxufont/tfm/zu-brsgnmlminrn-v.tfm
new file mode 100644
index 0000000000..dfcb9dc605
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-brsgnmlminrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb0-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgb0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb0-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb0-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgb0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb0-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb1-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgb1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb1-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb1-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgb1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb1-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb2-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgb2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb2-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb2-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgb2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb2-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb3-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgb3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb3-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb3-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgb3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb3-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb4-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgb4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb4-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb4-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgb4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb4-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb5-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgb5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb5-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgb5-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgb5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgb5-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge0-h.tfm b/language/japanese/pxufont/tfm/zu-cidjge0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge0-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge0-v.tfm b/language/japanese/pxufont/tfm/zu-cidjge0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge0-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge1-h.tfm b/language/japanese/pxufont/tfm/zu-cidjge1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge1-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge1-v.tfm b/language/japanese/pxufont/tfm/zu-cidjge1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge1-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge2-h.tfm b/language/japanese/pxufont/tfm/zu-cidjge2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge2-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge2-v.tfm b/language/japanese/pxufont/tfm/zu-cidjge2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge2-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge3-h.tfm b/language/japanese/pxufont/tfm/zu-cidjge3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge3-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge3-v.tfm b/language/japanese/pxufont/tfm/zu-cidjge3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge3-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge4-h.tfm b/language/japanese/pxufont/tfm/zu-cidjge4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge4-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge4-v.tfm b/language/japanese/pxufont/tfm/zu-cidjge4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge4-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge5-h.tfm b/language/japanese/pxufont/tfm/zu-cidjge5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge5-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjge5-v.tfm b/language/japanese/pxufont/tfm/zu-cidjge5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjge5-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr0-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgr0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr0-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr0-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr0-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr1-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr1-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr1-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr1-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr2-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgr2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr2-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr2-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgr2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr2-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr3-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr3-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr3-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgr3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr3-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr4-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr4-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr4-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr4-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr5-h.tfm b/language/japanese/pxufont/tfm/zu-cidjgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr5-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjgr5-v.tfm b/language/japanese/pxufont/tfm/zu-cidjgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjgr5-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb0-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmb0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb0-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb0-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmb0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb0-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb1-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmb1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb1-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb1-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmb1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb1-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb2-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmb2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb2-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb2-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmb2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb2-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb3-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmb3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb3-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb3-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmb3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb3-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb4-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmb4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb4-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb4-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmb4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb4-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb5-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmb5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb5-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmb5-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmb5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmb5-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr0-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr0-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr0-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr0-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr1-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr1-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr1-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr1-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr2-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr2-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr2-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr2-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr3-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr3-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr3-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr3-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr4-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr4-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr4-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr4-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr5-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr5-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmgr5-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmgr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmgr5-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml0-h.tfm b/language/japanese/pxufont/tfm/zu-cidjml0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml0-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml0-v.tfm b/language/japanese/pxufont/tfm/zu-cidjml0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml0-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml1-h.tfm b/language/japanese/pxufont/tfm/zu-cidjml1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml1-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml1-v.tfm b/language/japanese/pxufont/tfm/zu-cidjml1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml1-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml2-h.tfm b/language/japanese/pxufont/tfm/zu-cidjml2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml2-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml2-v.tfm b/language/japanese/pxufont/tfm/zu-cidjml2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml2-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml3-h.tfm b/language/japanese/pxufont/tfm/zu-cidjml3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml3-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml3-v.tfm b/language/japanese/pxufont/tfm/zu-cidjml3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml3-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml4-h.tfm b/language/japanese/pxufont/tfm/zu-cidjml4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml4-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml4-v.tfm b/language/japanese/pxufont/tfm/zu-cidjml4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml4-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml5-h.tfm b/language/japanese/pxufont/tfm/zu-cidjml5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml5-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjml5-v.tfm b/language/japanese/pxufont/tfm/zu-cidjml5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjml5-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr0-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmr0-h.tfm
new file mode 100644
index 0000000000..a5d9581359
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr0-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr0-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmr0-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr0-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr1-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmr1-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr1-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr1-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmr1-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr1-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr2-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmr2-h.tfm
new file mode 100644
index 0000000000..10b20f4760
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr2-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr2-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmr2-v.tfm
new file mode 100644
index 0000000000..0ac6fb58a4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr2-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr3-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmr3-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr3-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr3-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmr3-v.tfm
new file mode 100644
index 0000000000..7c76c0c3d3
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr3-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr4-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmr4-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr4-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr4-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmr4-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr4-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr5-h.tfm b/language/japanese/pxufont/tfm/zu-cidjmr5-h.tfm
new file mode 100644
index 0000000000..29cb2cd42d
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr5-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-cidjmr5-v.tfm b/language/japanese/pxufont/tfm/zu-cidjmr5-v.tfm
new file mode 100644
index 0000000000..00f00ca892
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-cidjmr5-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-goth10.tfm b/language/japanese/pxufont/tfm/zu-goth10.tfm
new file mode 100644
index 0000000000..92b72a3fa2
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-goth10.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-jis-v.tfm b/language/japanese/pxufont/tfm/zu-jis-v.tfm
new file mode 100644
index 0000000000..b3727e8e47
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-jis-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-jis.tfm b/language/japanese/pxufont/tfm/zu-jis.tfm
new file mode 100644
index 0000000000..701106d78e
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-jis.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-jisg-v.tfm b/language/japanese/pxufont/tfm/zu-jisg-v.tfm
new file mode 100644
index 0000000000..b3727e8e47
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-jisg-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-jisg.tfm b/language/japanese/pxufont/tfm/zu-jisg.tfm
new file mode 100644
index 0000000000..701106d78e
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-jisg.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-min10.tfm b/language/japanese/pxufont/tfm/zu-min10.tfm
new file mode 100644
index 0000000000..1bf04b7ac3
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-min10.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgothb-h.tfm b/language/japanese/pxufont/tfm/zu-nmlgothb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgothb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgothb-v.tfm b/language/japanese/pxufont/tfm/zu-nmlgothb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgothb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgothbn-h.tfm b/language/japanese/pxufont/tfm/zu-nmlgothbn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgothbn-v.tfm b/language/japanese/pxufont/tfm/zu-nmlgothbn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgotheb-h.tfm b/language/japanese/pxufont/tfm/zu-nmlgotheb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgotheb-v.tfm b/language/japanese/pxufont/tfm/zu-nmlgotheb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgothebn-h.tfm b/language/japanese/pxufont/tfm/zu-nmlgothebn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgothebn-v.tfm b/language/japanese/pxufont/tfm/zu-nmlgothebn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgothr-h.tfm b/language/japanese/pxufont/tfm/zu-nmlgothr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgothr-v.tfm b/language/japanese/pxufont/tfm/zu-nmlgothr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgothrn-h.tfm b/language/japanese/pxufont/tfm/zu-nmlgothrn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlgothrn-v.tfm b/language/japanese/pxufont/tfm/zu-nmlgothrn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlmgothr-h.tfm b/language/japanese/pxufont/tfm/zu-nmlmgothr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlmgothr-v.tfm b/language/japanese/pxufont/tfm/zu-nmlmgothr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlmgothrn-h.tfm b/language/japanese/pxufont/tfm/zu-nmlmgothrn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlmgothrn-v.tfm b/language/japanese/pxufont/tfm/zu-nmlmgothrn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminb-h.tfm b/language/japanese/pxufont/tfm/zu-nmlminb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminb-v.tfm b/language/japanese/pxufont/tfm/zu-nmlminb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminbn-h.tfm b/language/japanese/pxufont/tfm/zu-nmlminbn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminbn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminbn-v.tfm b/language/japanese/pxufont/tfm/zu-nmlminbn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminbn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminl-h.tfm b/language/japanese/pxufont/tfm/zu-nmlminl-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminl-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminl-v.tfm b/language/japanese/pxufont/tfm/zu-nmlminl-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminl-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminln-h.tfm b/language/japanese/pxufont/tfm/zu-nmlminln-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminln-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminln-v.tfm b/language/japanese/pxufont/tfm/zu-nmlminln-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminln-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminr-h.tfm b/language/japanese/pxufont/tfm/zu-nmlminr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminr-v.tfm b/language/japanese/pxufont/tfm/zu-nmlminr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminrn-h.tfm b/language/japanese/pxufont/tfm/zu-nmlminrn-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-nmlminrn-v.tfm b/language/japanese/pxufont/tfm/zu-nmlminrn-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-nmlminrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubygothb-h.tfm b/language/japanese/pxufont/tfm/zu-rubygothb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubygothb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubygothb-v.tfm b/language/japanese/pxufont/tfm/zu-rubygothb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubygothb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubygotheb-h.tfm b/language/japanese/pxufont/tfm/zu-rubygotheb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubygotheb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubygotheb-v.tfm b/language/japanese/pxufont/tfm/zu-rubygotheb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubygotheb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubygothr-h.tfm b/language/japanese/pxufont/tfm/zu-rubygothr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubygothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubygothr-v.tfm b/language/japanese/pxufont/tfm/zu-rubygothr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubygothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubymgothr-h.tfm b/language/japanese/pxufont/tfm/zu-rubymgothr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubymgothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubymgothr-v.tfm b/language/japanese/pxufont/tfm/zu-rubymgothr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubymgothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubyminb-h.tfm b/language/japanese/pxufont/tfm/zu-rubyminb-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubyminb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubyminb-v.tfm b/language/japanese/pxufont/tfm/zu-rubyminb-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubyminb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubyminl-h.tfm b/language/japanese/pxufont/tfm/zu-rubyminl-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubyminl-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubyminl-v.tfm b/language/japanese/pxufont/tfm/zu-rubyminl-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubyminl-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubyminr-h.tfm b/language/japanese/pxufont/tfm/zu-rubyminr-h.tfm
new file mode 100644
index 0000000000..b36ca02102
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubyminr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-rubyminr-v.tfm b/language/japanese/pxufont/tfm/zu-rubyminr-v.tfm
new file mode 100644
index 0000000000..c557e9104f
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-rubyminr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-tgoth10.tfm b/language/japanese/pxufont/tfm/zu-tgoth10.tfm
new file mode 100644
index 0000000000..7f9e9f91de
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-tgoth10.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-tmin10.tfm b/language/japanese/pxufont/tfm/zu-tmin10.tfm
new file mode 100644
index 0000000000..a54690f565
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-tmin10.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgothb-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothb-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgothb-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothb-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgothbn-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothbn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgothbn-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothbn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgotheb-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgotheb-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgotheb-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgotheb-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgothebn-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothebn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgothebn-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothebn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgothr-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothr-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgothr-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothr-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgothrn-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothrn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlgothrn-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothrn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothr-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothr-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothr-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothr-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothrn-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothrn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothrn-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothrn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminb-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminb-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminb-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminb-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminbn-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminbn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminbn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminbn-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminbn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminbn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminl-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminl-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminl-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminl-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminl-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminl-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminln-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminln-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminln-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminln-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminln-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminln-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminr-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminr-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminr-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminr-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminrn-h.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminrn-h.tfm
new file mode 100644
index 0000000000..03141ee738
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upbrsgnmlminrn-v.tfm b/language/japanese/pxufont/tfm/zu-upbrsgnmlminrn-v.tfm
new file mode 100644
index 0000000000..d3c90b3701
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upbrsgnmlminrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgothb-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlgothb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgothb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgothb-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlgothb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgothb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgothbn-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlgothbn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgothbn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgothbn-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlgothbn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgothbn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgotheb-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlgotheb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgotheb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgotheb-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlgotheb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgotheb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgothebn-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlgothebn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgothebn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgothebn-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlgothebn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgothebn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgothr-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlgothr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgothr-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlgothr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgothrn-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlgothrn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlgothrn-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlgothrn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlmgothr-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlmgothr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlmgothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlmgothr-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlmgothr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlmgothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlmgothrn-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlmgothrn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlmgothrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlmgothrn-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlmgothrn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlmgothrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminb-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlminb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminb-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlminb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminbn-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlminbn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminbn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminbn-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlminbn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminbn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminl-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlminl-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminl-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminl-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlminl-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminl-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminln-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlminln-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminln-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminln-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlminln-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminln-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminr-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlminr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminr-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlminr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminrn-h.tfm b/language/japanese/pxufont/tfm/zu-upnmlminrn-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminrn-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-upnmlminrn-v.tfm b/language/japanese/pxufont/tfm/zu-upnmlminrn-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-upnmlminrn-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubygothb-h.tfm b/language/japanese/pxufont/tfm/zu-uprubygothb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubygothb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubygothb-v.tfm b/language/japanese/pxufont/tfm/zu-uprubygothb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubygothb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubygotheb-h.tfm b/language/japanese/pxufont/tfm/zu-uprubygotheb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubygotheb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubygotheb-v.tfm b/language/japanese/pxufont/tfm/zu-uprubygotheb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubygotheb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubygothr-h.tfm b/language/japanese/pxufont/tfm/zu-uprubygothr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubygothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubygothr-v.tfm b/language/japanese/pxufont/tfm/zu-uprubygothr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubygothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubymgothr-h.tfm b/language/japanese/pxufont/tfm/zu-uprubymgothr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubymgothr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubymgothr-v.tfm b/language/japanese/pxufont/tfm/zu-uprubymgothr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubymgothr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubyminb-h.tfm b/language/japanese/pxufont/tfm/zu-uprubyminb-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubyminb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubyminb-v.tfm b/language/japanese/pxufont/tfm/zu-uprubyminb-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubyminb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubyminl-h.tfm b/language/japanese/pxufont/tfm/zu-uprubyminl-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubyminl-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubyminl-v.tfm b/language/japanese/pxufont/tfm/zu-uprubyminl-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubyminl-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubyminr-h.tfm b/language/japanese/pxufont/tfm/zu-uprubyminr-h.tfm
new file mode 100644
index 0000000000..1cafb877f4
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubyminr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zu-uprubyminr-v.tfm b/language/japanese/pxufont/tfm/zu-uprubyminr-v.tfm
new file mode 100644
index 0000000000..cc9084c2b6
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zu-uprubyminr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjgb-h.tfm b/language/japanese/pxufont/tfm/zur-gjgb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjgb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjgb-v.tfm b/language/japanese/pxufont/tfm/zur-gjgb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjgb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjge-h.tfm b/language/japanese/pxufont/tfm/zur-gjge-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjge-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjge-v.tfm b/language/japanese/pxufont/tfm/zur-gjge-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjge-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjgr-h.tfm b/language/japanese/pxufont/tfm/zur-gjgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjgr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjgr-v.tfm b/language/japanese/pxufont/tfm/zur-gjgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjgr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjmb-h.tfm b/language/japanese/pxufont/tfm/zur-gjmb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjmb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjmb-v.tfm b/language/japanese/pxufont/tfm/zur-gjmb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjmb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjmgr-h.tfm b/language/japanese/pxufont/tfm/zur-gjmgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjmgr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjmgr-v.tfm b/language/japanese/pxufont/tfm/zur-gjmgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjmgr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjml-h.tfm b/language/japanese/pxufont/tfm/zur-gjml-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjml-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjml-v.tfm b/language/japanese/pxufont/tfm/zur-gjml-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjml-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjmr-h.tfm b/language/japanese/pxufont/tfm/zur-gjmr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjmr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-gjmr-v.tfm b/language/japanese/pxufont/tfm/zur-gjmr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-gjmr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjgb-h.tfm b/language/japanese/pxufont/tfm/zur-rjgb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjgb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjgb-v.tfm b/language/japanese/pxufont/tfm/zur-rjgb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjgb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjge-h.tfm b/language/japanese/pxufont/tfm/zur-rjge-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjge-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjge-v.tfm b/language/japanese/pxufont/tfm/zur-rjge-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjge-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjgr-h.tfm b/language/japanese/pxufont/tfm/zur-rjgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjgr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjgr-v.tfm b/language/japanese/pxufont/tfm/zur-rjgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjgr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjmb-h.tfm b/language/japanese/pxufont/tfm/zur-rjmb-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjmb-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjmb-v.tfm b/language/japanese/pxufont/tfm/zur-rjmb-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjmb-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjmgr-h.tfm b/language/japanese/pxufont/tfm/zur-rjmgr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjmgr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjmgr-v.tfm b/language/japanese/pxufont/tfm/zur-rjmgr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjmgr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjml-h.tfm b/language/japanese/pxufont/tfm/zur-rjml-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjml-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjml-v.tfm b/language/japanese/pxufont/tfm/zur-rjml-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjml-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjmr-h.tfm b/language/japanese/pxufont/tfm/zur-rjmr-h.tfm
new file mode 100644
index 0000000000..1db09ae81c
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjmr-h.tfm
Binary files differ
diff --git a/language/japanese/pxufont/tfm/zur-rjmr-v.tfm b/language/japanese/pxufont/tfm/zur-rjmr-v.tfm
new file mode 100644
index 0000000000..dddd977640
--- /dev/null
+++ b/language/japanese/pxufont/tfm/zur-rjmr-v.tfm
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgothb-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlgothb-h.vf
new file mode 100644
index 0000000000..467db18aec
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgothb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgothb-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlgothb-v.vf
new file mode 100644
index 0000000000..a605edf508
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgothb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgothbn-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlgothbn-h.vf
new file mode 100644
index 0000000000..d5ab645367
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgothbn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgothbn-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlgothbn-v.vf
new file mode 100644
index 0000000000..0d81176e1b
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgothbn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgotheb-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlgotheb-h.vf
new file mode 100644
index 0000000000..048e201af5
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgotheb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgotheb-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlgotheb-v.vf
new file mode 100644
index 0000000000..8f02c3d0e3
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgotheb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgothebn-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlgothebn-h.vf
new file mode 100644
index 0000000000..f8b7d5b290
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgothebn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgothebn-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlgothebn-v.vf
new file mode 100644
index 0000000000..5ebc49dea8
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgothebn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgothr-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlgothr-h.vf
new file mode 100644
index 0000000000..b789417ff9
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgothr-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlgothr-v.vf
new file mode 100644
index 0000000000..05b0a25fbd
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgothrn-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlgothrn-h.vf
new file mode 100644
index 0000000000..5119038d86
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgothrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlgothrn-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlgothrn-v.vf
new file mode 100644
index 0000000000..9b91fdda1f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlgothrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlmgothr-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlmgothr-h.vf
new file mode 100644
index 0000000000..f23d12e112
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlmgothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlmgothr-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlmgothr-v.vf
new file mode 100644
index 0000000000..43854acfe0
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlmgothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlmgothrn-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlmgothrn-h.vf
new file mode 100644
index 0000000000..265fe13e4f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlmgothrn-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlmgothrn-v.vf
new file mode 100644
index 0000000000..c8a8f186ac
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminb-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlminb-h.vf
new file mode 100644
index 0000000000..f81fd328bb
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminb-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlminb-v.vf
new file mode 100644
index 0000000000..10ecbbad13
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminbn-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlminbn-h.vf
new file mode 100644
index 0000000000..f74b6b5d32
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminbn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminbn-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlminbn-v.vf
new file mode 100644
index 0000000000..0e1cc16d8c
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminbn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminl-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlminl-h.vf
new file mode 100644
index 0000000000..15b1c882fb
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminl-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminl-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlminl-v.vf
new file mode 100644
index 0000000000..1b82b9dc79
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminl-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminln-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlminln-h.vf
new file mode 100644
index 0000000000..36d0c06c0d
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminln-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminln-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlminln-v.vf
new file mode 100644
index 0000000000..f10fef3f7e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminln-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminr-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlminr-h.vf
new file mode 100644
index 0000000000..2a01b42de2
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminr-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlminr-v.vf
new file mode 100644
index 0000000000..ebc3ad5f36
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminrn-h.vf b/language/japanese/pxufont/vf/zu-brsgnmlminrn-h.vf
new file mode 100644
index 0000000000..71690144fa
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-brsgnmlminrn-v.vf b/language/japanese/pxufont/vf/zu-brsgnmlminrn-v.vf
new file mode 100644
index 0000000000..c32ae04e7f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-brsgnmlminrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb0-h.vf b/language/japanese/pxufont/vf/zu-cidjgb0-h.vf
new file mode 100644
index 0000000000..4afb039d73
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb0-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb0-v.vf b/language/japanese/pxufont/vf/zu-cidjgb0-v.vf
new file mode 100644
index 0000000000..859bcdf119
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb0-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb1-h.vf b/language/japanese/pxufont/vf/zu-cidjgb1-h.vf
new file mode 100644
index 0000000000..9c0373e3fd
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb1-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb1-v.vf b/language/japanese/pxufont/vf/zu-cidjgb1-v.vf
new file mode 100644
index 0000000000..f50452d161
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb1-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb2-h.vf b/language/japanese/pxufont/vf/zu-cidjgb2-h.vf
new file mode 100644
index 0000000000..8c18e13277
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb2-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb2-v.vf b/language/japanese/pxufont/vf/zu-cidjgb2-v.vf
new file mode 100644
index 0000000000..742dcabc14
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb2-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb3-h.vf b/language/japanese/pxufont/vf/zu-cidjgb3-h.vf
new file mode 100644
index 0000000000..073269a731
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb3-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb3-v.vf b/language/japanese/pxufont/vf/zu-cidjgb3-v.vf
new file mode 100644
index 0000000000..a9222e0e29
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb3-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb4-h.vf b/language/japanese/pxufont/vf/zu-cidjgb4-h.vf
new file mode 100644
index 0000000000..ba55054646
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb4-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb4-v.vf b/language/japanese/pxufont/vf/zu-cidjgb4-v.vf
new file mode 100644
index 0000000000..352c6cc09d
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb4-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb5-h.vf b/language/japanese/pxufont/vf/zu-cidjgb5-h.vf
new file mode 100644
index 0000000000..69d03d620c
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb5-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgb5-v.vf b/language/japanese/pxufont/vf/zu-cidjgb5-v.vf
new file mode 100644
index 0000000000..e44be2a762
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgb5-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge0-h.vf b/language/japanese/pxufont/vf/zu-cidjge0-h.vf
new file mode 100644
index 0000000000..fdd5a9c130
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge0-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge0-v.vf b/language/japanese/pxufont/vf/zu-cidjge0-v.vf
new file mode 100644
index 0000000000..762b462132
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge0-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge1-h.vf b/language/japanese/pxufont/vf/zu-cidjge1-h.vf
new file mode 100644
index 0000000000..d8c0b788cd
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge1-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge1-v.vf b/language/japanese/pxufont/vf/zu-cidjge1-v.vf
new file mode 100644
index 0000000000..b341312c7b
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge1-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge2-h.vf b/language/japanese/pxufont/vf/zu-cidjge2-h.vf
new file mode 100644
index 0000000000..826942be49
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge2-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge2-v.vf b/language/japanese/pxufont/vf/zu-cidjge2-v.vf
new file mode 100644
index 0000000000..c9da3cca5e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge2-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge3-h.vf b/language/japanese/pxufont/vf/zu-cidjge3-h.vf
new file mode 100644
index 0000000000..0fa509d2c9
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge3-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge3-v.vf b/language/japanese/pxufont/vf/zu-cidjge3-v.vf
new file mode 100644
index 0000000000..1467f41563
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge3-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge4-h.vf b/language/japanese/pxufont/vf/zu-cidjge4-h.vf
new file mode 100644
index 0000000000..b902e3339f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge4-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge4-v.vf b/language/japanese/pxufont/vf/zu-cidjge4-v.vf
new file mode 100644
index 0000000000..185e2da0bc
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge4-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge5-h.vf b/language/japanese/pxufont/vf/zu-cidjge5-h.vf
new file mode 100644
index 0000000000..81f78e8060
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge5-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjge5-v.vf b/language/japanese/pxufont/vf/zu-cidjge5-v.vf
new file mode 100644
index 0000000000..e9c403d6cc
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjge5-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr0-h.vf b/language/japanese/pxufont/vf/zu-cidjgr0-h.vf
new file mode 100644
index 0000000000..a2a22760f3
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr0-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr0-v.vf b/language/japanese/pxufont/vf/zu-cidjgr0-v.vf
new file mode 100644
index 0000000000..e2afdbeb95
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr0-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr1-h.vf b/language/japanese/pxufont/vf/zu-cidjgr1-h.vf
new file mode 100644
index 0000000000..8bf6f9c98e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr1-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr1-v.vf b/language/japanese/pxufont/vf/zu-cidjgr1-v.vf
new file mode 100644
index 0000000000..ee09d54f10
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr1-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr2-h.vf b/language/japanese/pxufont/vf/zu-cidjgr2-h.vf
new file mode 100644
index 0000000000..8e59e55691
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr2-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr2-v.vf b/language/japanese/pxufont/vf/zu-cidjgr2-v.vf
new file mode 100644
index 0000000000..fc4abd1208
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr2-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr3-h.vf b/language/japanese/pxufont/vf/zu-cidjgr3-h.vf
new file mode 100644
index 0000000000..d8b85871d7
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr3-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr3-v.vf b/language/japanese/pxufont/vf/zu-cidjgr3-v.vf
new file mode 100644
index 0000000000..d2604bbd58
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr3-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr4-h.vf b/language/japanese/pxufont/vf/zu-cidjgr4-h.vf
new file mode 100644
index 0000000000..da4356bbb0
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr4-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr4-v.vf b/language/japanese/pxufont/vf/zu-cidjgr4-v.vf
new file mode 100644
index 0000000000..9f72ad2b67
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr4-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr5-h.vf b/language/japanese/pxufont/vf/zu-cidjgr5-h.vf
new file mode 100644
index 0000000000..24cab77031
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr5-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjgr5-v.vf b/language/japanese/pxufont/vf/zu-cidjgr5-v.vf
new file mode 100644
index 0000000000..fb23691183
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjgr5-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb0-h.vf b/language/japanese/pxufont/vf/zu-cidjmb0-h.vf
new file mode 100644
index 0000000000..9ae679a380
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb0-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb0-v.vf b/language/japanese/pxufont/vf/zu-cidjmb0-v.vf
new file mode 100644
index 0000000000..f7eccde0e7
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb0-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb1-h.vf b/language/japanese/pxufont/vf/zu-cidjmb1-h.vf
new file mode 100644
index 0000000000..f913dd82ae
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb1-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb1-v.vf b/language/japanese/pxufont/vf/zu-cidjmb1-v.vf
new file mode 100644
index 0000000000..df2a39f57c
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb1-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb2-h.vf b/language/japanese/pxufont/vf/zu-cidjmb2-h.vf
new file mode 100644
index 0000000000..e79360c69b
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb2-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb2-v.vf b/language/japanese/pxufont/vf/zu-cidjmb2-v.vf
new file mode 100644
index 0000000000..4bbce0e8a3
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb2-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb3-h.vf b/language/japanese/pxufont/vf/zu-cidjmb3-h.vf
new file mode 100644
index 0000000000..299593c77c
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb3-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb3-v.vf b/language/japanese/pxufont/vf/zu-cidjmb3-v.vf
new file mode 100644
index 0000000000..fe46f208fe
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb3-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb4-h.vf b/language/japanese/pxufont/vf/zu-cidjmb4-h.vf
new file mode 100644
index 0000000000..93e7df25a5
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb4-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb4-v.vf b/language/japanese/pxufont/vf/zu-cidjmb4-v.vf
new file mode 100644
index 0000000000..62cea3ff16
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb4-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb5-h.vf b/language/japanese/pxufont/vf/zu-cidjmb5-h.vf
new file mode 100644
index 0000000000..aac611e594
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb5-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmb5-v.vf b/language/japanese/pxufont/vf/zu-cidjmb5-v.vf
new file mode 100644
index 0000000000..ceb15035f8
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmb5-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr0-h.vf b/language/japanese/pxufont/vf/zu-cidjmgr0-h.vf
new file mode 100644
index 0000000000..a241686608
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr0-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr0-v.vf b/language/japanese/pxufont/vf/zu-cidjmgr0-v.vf
new file mode 100644
index 0000000000..d28461e894
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr0-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr1-h.vf b/language/japanese/pxufont/vf/zu-cidjmgr1-h.vf
new file mode 100644
index 0000000000..6201429d7b
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr1-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr1-v.vf b/language/japanese/pxufont/vf/zu-cidjmgr1-v.vf
new file mode 100644
index 0000000000..b9873202cb
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr1-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr2-h.vf b/language/japanese/pxufont/vf/zu-cidjmgr2-h.vf
new file mode 100644
index 0000000000..064578d69e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr2-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr2-v.vf b/language/japanese/pxufont/vf/zu-cidjmgr2-v.vf
new file mode 100644
index 0000000000..af2b3e01ca
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr2-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr3-h.vf b/language/japanese/pxufont/vf/zu-cidjmgr3-h.vf
new file mode 100644
index 0000000000..c32bca74a4
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr3-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr3-v.vf b/language/japanese/pxufont/vf/zu-cidjmgr3-v.vf
new file mode 100644
index 0000000000..0ef6a95745
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr3-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr4-h.vf b/language/japanese/pxufont/vf/zu-cidjmgr4-h.vf
new file mode 100644
index 0000000000..fab0a7fc80
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr4-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr4-v.vf b/language/japanese/pxufont/vf/zu-cidjmgr4-v.vf
new file mode 100644
index 0000000000..3d51dd31d0
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr4-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr5-h.vf b/language/japanese/pxufont/vf/zu-cidjmgr5-h.vf
new file mode 100644
index 0000000000..7fd512c5e5
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr5-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmgr5-v.vf b/language/japanese/pxufont/vf/zu-cidjmgr5-v.vf
new file mode 100644
index 0000000000..35506aaff7
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmgr5-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml0-h.vf b/language/japanese/pxufont/vf/zu-cidjml0-h.vf
new file mode 100644
index 0000000000..b7b2c728ed
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml0-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml0-v.vf b/language/japanese/pxufont/vf/zu-cidjml0-v.vf
new file mode 100644
index 0000000000..231cfcf0f3
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml0-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml1-h.vf b/language/japanese/pxufont/vf/zu-cidjml1-h.vf
new file mode 100644
index 0000000000..10deae8e17
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml1-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml1-v.vf b/language/japanese/pxufont/vf/zu-cidjml1-v.vf
new file mode 100644
index 0000000000..2decbfa44b
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml1-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml2-h.vf b/language/japanese/pxufont/vf/zu-cidjml2-h.vf
new file mode 100644
index 0000000000..bf6805fbc1
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml2-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml2-v.vf b/language/japanese/pxufont/vf/zu-cidjml2-v.vf
new file mode 100644
index 0000000000..180a7456a4
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml2-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml3-h.vf b/language/japanese/pxufont/vf/zu-cidjml3-h.vf
new file mode 100644
index 0000000000..413fc1166e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml3-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml3-v.vf b/language/japanese/pxufont/vf/zu-cidjml3-v.vf
new file mode 100644
index 0000000000..ee217f193c
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml3-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml4-h.vf b/language/japanese/pxufont/vf/zu-cidjml4-h.vf
new file mode 100644
index 0000000000..3ed0ced666
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml4-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml4-v.vf b/language/japanese/pxufont/vf/zu-cidjml4-v.vf
new file mode 100644
index 0000000000..da3b83e71b
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml4-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml5-h.vf b/language/japanese/pxufont/vf/zu-cidjml5-h.vf
new file mode 100644
index 0000000000..c50d9b96f9
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml5-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjml5-v.vf b/language/japanese/pxufont/vf/zu-cidjml5-v.vf
new file mode 100644
index 0000000000..43b51f6a82
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjml5-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr0-h.vf b/language/japanese/pxufont/vf/zu-cidjmr0-h.vf
new file mode 100644
index 0000000000..606aa6471f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr0-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr0-v.vf b/language/japanese/pxufont/vf/zu-cidjmr0-v.vf
new file mode 100644
index 0000000000..3d975f0f2d
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr0-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr1-h.vf b/language/japanese/pxufont/vf/zu-cidjmr1-h.vf
new file mode 100644
index 0000000000..ab1160eb83
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr1-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr1-v.vf b/language/japanese/pxufont/vf/zu-cidjmr1-v.vf
new file mode 100644
index 0000000000..ea968864c8
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr1-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr2-h.vf b/language/japanese/pxufont/vf/zu-cidjmr2-h.vf
new file mode 100644
index 0000000000..51fc2bdf84
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr2-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr2-v.vf b/language/japanese/pxufont/vf/zu-cidjmr2-v.vf
new file mode 100644
index 0000000000..7859a62aa5
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr2-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr3-h.vf b/language/japanese/pxufont/vf/zu-cidjmr3-h.vf
new file mode 100644
index 0000000000..d3175a3ad1
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr3-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr3-v.vf b/language/japanese/pxufont/vf/zu-cidjmr3-v.vf
new file mode 100644
index 0000000000..bb14e30b6c
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr3-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr4-h.vf b/language/japanese/pxufont/vf/zu-cidjmr4-h.vf
new file mode 100644
index 0000000000..e1d04f6e30
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr4-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr4-v.vf b/language/japanese/pxufont/vf/zu-cidjmr4-v.vf
new file mode 100644
index 0000000000..ca33dd8c5e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr4-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr5-h.vf b/language/japanese/pxufont/vf/zu-cidjmr5-h.vf
new file mode 100644
index 0000000000..254c84af98
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr5-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-cidjmr5-v.vf b/language/japanese/pxufont/vf/zu-cidjmr5-v.vf
new file mode 100644
index 0000000000..e48e78e8b6
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-cidjmr5-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-goth10.vf b/language/japanese/pxufont/vf/zu-goth10.vf
new file mode 100644
index 0000000000..7f3de5b8a4
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-goth10.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-jis-v.vf b/language/japanese/pxufont/vf/zu-jis-v.vf
new file mode 100644
index 0000000000..b13c04f018
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-jis-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-jis.vf b/language/japanese/pxufont/vf/zu-jis.vf
new file mode 100644
index 0000000000..b1c214550a
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-jis.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-jisg-v.vf b/language/japanese/pxufont/vf/zu-jisg-v.vf
new file mode 100644
index 0000000000..575f09ab7f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-jisg-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-jisg.vf b/language/japanese/pxufont/vf/zu-jisg.vf
new file mode 100644
index 0000000000..2ac916a0cb
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-jisg.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-min10.vf b/language/japanese/pxufont/vf/zu-min10.vf
new file mode 100644
index 0000000000..04ff8bfed3
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-min10.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgothb-h.vf b/language/japanese/pxufont/vf/zu-nmlgothb-h.vf
new file mode 100644
index 0000000000..b9dadb8025
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgothb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgothb-v.vf b/language/japanese/pxufont/vf/zu-nmlgothb-v.vf
new file mode 100644
index 0000000000..3d1106386d
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgothb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgothbn-h.vf b/language/japanese/pxufont/vf/zu-nmlgothbn-h.vf
new file mode 100644
index 0000000000..ab1844a07a
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgothbn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgothbn-v.vf b/language/japanese/pxufont/vf/zu-nmlgothbn-v.vf
new file mode 100644
index 0000000000..33d29030e1
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgothbn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgotheb-h.vf b/language/japanese/pxufont/vf/zu-nmlgotheb-h.vf
new file mode 100644
index 0000000000..236ec98545
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgotheb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgotheb-v.vf b/language/japanese/pxufont/vf/zu-nmlgotheb-v.vf
new file mode 100644
index 0000000000..5870e3e646
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgotheb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgothebn-h.vf b/language/japanese/pxufont/vf/zu-nmlgothebn-h.vf
new file mode 100644
index 0000000000..41688601cd
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgothebn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgothebn-v.vf b/language/japanese/pxufont/vf/zu-nmlgothebn-v.vf
new file mode 100644
index 0000000000..68c707843f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgothebn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgothr-h.vf b/language/japanese/pxufont/vf/zu-nmlgothr-h.vf
new file mode 100644
index 0000000000..4865e3e34f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgothr-v.vf b/language/japanese/pxufont/vf/zu-nmlgothr-v.vf
new file mode 100644
index 0000000000..75bf2c0884
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgothrn-h.vf b/language/japanese/pxufont/vf/zu-nmlgothrn-h.vf
new file mode 100644
index 0000000000..3c0877fc9e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgothrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlgothrn-v.vf b/language/japanese/pxufont/vf/zu-nmlgothrn-v.vf
new file mode 100644
index 0000000000..1b51d3a82e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlgothrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlmgothr-h.vf b/language/japanese/pxufont/vf/zu-nmlmgothr-h.vf
new file mode 100644
index 0000000000..c3ea46a9b2
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlmgothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlmgothr-v.vf b/language/japanese/pxufont/vf/zu-nmlmgothr-v.vf
new file mode 100644
index 0000000000..941c1d37f7
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlmgothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlmgothrn-h.vf b/language/japanese/pxufont/vf/zu-nmlmgothrn-h.vf
new file mode 100644
index 0000000000..f5177ac620
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlmgothrn-v.vf b/language/japanese/pxufont/vf/zu-nmlmgothrn-v.vf
new file mode 100644
index 0000000000..b19094f65f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminb-h.vf b/language/japanese/pxufont/vf/zu-nmlminb-h.vf
new file mode 100644
index 0000000000..ef7151f4ab
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminb-v.vf b/language/japanese/pxufont/vf/zu-nmlminb-v.vf
new file mode 100644
index 0000000000..1abd3693cb
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminbn-h.vf b/language/japanese/pxufont/vf/zu-nmlminbn-h.vf
new file mode 100644
index 0000000000..ce9f840be9
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminbn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminbn-v.vf b/language/japanese/pxufont/vf/zu-nmlminbn-v.vf
new file mode 100644
index 0000000000..2a0ad0b4f7
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminbn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminl-h.vf b/language/japanese/pxufont/vf/zu-nmlminl-h.vf
new file mode 100644
index 0000000000..45470e4a5e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminl-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminl-v.vf b/language/japanese/pxufont/vf/zu-nmlminl-v.vf
new file mode 100644
index 0000000000..3c2763d3f9
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminl-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminln-h.vf b/language/japanese/pxufont/vf/zu-nmlminln-h.vf
new file mode 100644
index 0000000000..80a23cf1c8
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminln-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminln-v.vf b/language/japanese/pxufont/vf/zu-nmlminln-v.vf
new file mode 100644
index 0000000000..18f02ad08d
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminln-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminr-h.vf b/language/japanese/pxufont/vf/zu-nmlminr-h.vf
new file mode 100644
index 0000000000..d0dd08d523
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminr-v.vf b/language/japanese/pxufont/vf/zu-nmlminr-v.vf
new file mode 100644
index 0000000000..9c8e350b65
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminrn-h.vf b/language/japanese/pxufont/vf/zu-nmlminrn-h.vf
new file mode 100644
index 0000000000..113ac7746f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-nmlminrn-v.vf b/language/japanese/pxufont/vf/zu-nmlminrn-v.vf
new file mode 100644
index 0000000000..07da5f22ea
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-nmlminrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubygothb-h.vf b/language/japanese/pxufont/vf/zu-rubygothb-h.vf
new file mode 100644
index 0000000000..0621126db4
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubygothb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubygothb-v.vf b/language/japanese/pxufont/vf/zu-rubygothb-v.vf
new file mode 100644
index 0000000000..ee42a47fdb
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubygothb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubygotheb-h.vf b/language/japanese/pxufont/vf/zu-rubygotheb-h.vf
new file mode 100644
index 0000000000..5ac3e301f6
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubygotheb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubygotheb-v.vf b/language/japanese/pxufont/vf/zu-rubygotheb-v.vf
new file mode 100644
index 0000000000..2c0ec961f7
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubygotheb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubygothr-h.vf b/language/japanese/pxufont/vf/zu-rubygothr-h.vf
new file mode 100644
index 0000000000..84d0ada06e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubygothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubygothr-v.vf b/language/japanese/pxufont/vf/zu-rubygothr-v.vf
new file mode 100644
index 0000000000..e0cfcf9332
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubygothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubymgothr-h.vf b/language/japanese/pxufont/vf/zu-rubymgothr-h.vf
new file mode 100644
index 0000000000..2084943f48
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubymgothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubymgothr-v.vf b/language/japanese/pxufont/vf/zu-rubymgothr-v.vf
new file mode 100644
index 0000000000..02d5118f85
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubymgothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubyminb-h.vf b/language/japanese/pxufont/vf/zu-rubyminb-h.vf
new file mode 100644
index 0000000000..be95bfffc3
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubyminb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubyminb-v.vf b/language/japanese/pxufont/vf/zu-rubyminb-v.vf
new file mode 100644
index 0000000000..1ebf55aabc
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubyminb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubyminl-h.vf b/language/japanese/pxufont/vf/zu-rubyminl-h.vf
new file mode 100644
index 0000000000..cffe815da6
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubyminl-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubyminl-v.vf b/language/japanese/pxufont/vf/zu-rubyminl-v.vf
new file mode 100644
index 0000000000..814a409cb2
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubyminl-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubyminr-h.vf b/language/japanese/pxufont/vf/zu-rubyminr-h.vf
new file mode 100644
index 0000000000..e0f5ad3ce2
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubyminr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-rubyminr-v.vf b/language/japanese/pxufont/vf/zu-rubyminr-v.vf
new file mode 100644
index 0000000000..4a56f2e6ed
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-rubyminr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-tgoth10.vf b/language/japanese/pxufont/vf/zu-tgoth10.vf
new file mode 100644
index 0000000000..32c7ebeb4b
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-tgoth10.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-tmin10.vf b/language/japanese/pxufont/vf/zu-tmin10.vf
new file mode 100644
index 0000000000..ff89ccb3d4
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-tmin10.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgothb-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgothb-h.vf
new file mode 100644
index 0000000000..4d25ea58db
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgothb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgothb-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgothb-v.vf
new file mode 100644
index 0000000000..b7b3b7ac08
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgothb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgothbn-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgothbn-h.vf
new file mode 100644
index 0000000000..f0c55c0909
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgothbn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgothbn-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgothbn-v.vf
new file mode 100644
index 0000000000..5562a81aa5
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgothbn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgotheb-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgotheb-h.vf
new file mode 100644
index 0000000000..005754339c
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgotheb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgotheb-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgotheb-v.vf
new file mode 100644
index 0000000000..abd3468350
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgotheb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgothebn-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgothebn-h.vf
new file mode 100644
index 0000000000..f5bc91f2eb
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgothebn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgothebn-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgothebn-v.vf
new file mode 100644
index 0000000000..7f40eeedfd
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgothebn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgothr-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgothr-h.vf
new file mode 100644
index 0000000000..b2a48be57d
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgothr-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgothr-v.vf
new file mode 100644
index 0000000000..463b81de7d
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgothrn-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgothrn-h.vf
new file mode 100644
index 0000000000..1e2ab101c1
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgothrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlgothrn-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlgothrn-v.vf
new file mode 100644
index 0000000000..5dac93a15a
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlgothrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlmgothr-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlmgothr-h.vf
new file mode 100644
index 0000000000..d0b59f6735
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlmgothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlmgothr-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlmgothr-v.vf
new file mode 100644
index 0000000000..445aba7ac8
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlmgothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlmgothrn-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlmgothrn-h.vf
new file mode 100644
index 0000000000..f95ad6788a
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlmgothrn-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlmgothrn-v.vf
new file mode 100644
index 0000000000..0097aaeb9c
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminb-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminb-h.vf
new file mode 100644
index 0000000000..e615016b1f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminb-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminb-v.vf
new file mode 100644
index 0000000000..54ec3ee539
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminbn-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminbn-h.vf
new file mode 100644
index 0000000000..02d1e3f354
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminbn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminbn-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminbn-v.vf
new file mode 100644
index 0000000000..8e015003ab
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminbn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminl-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminl-h.vf
new file mode 100644
index 0000000000..bb2a59ea80
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminl-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminl-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminl-v.vf
new file mode 100644
index 0000000000..4467f6c297
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminl-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminln-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminln-h.vf
new file mode 100644
index 0000000000..374bff3cde
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminln-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminln-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminln-v.vf
new file mode 100644
index 0000000000..832e594975
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminln-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminr-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminr-h.vf
new file mode 100644
index 0000000000..2d2380c207
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminr-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminr-v.vf
new file mode 100644
index 0000000000..d3a9cb4369
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminrn-h.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminrn-h.vf
new file mode 100644
index 0000000000..c151b1198a
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upbrsgnmlminrn-v.vf b/language/japanese/pxufont/vf/zu-upbrsgnmlminrn-v.vf
new file mode 100644
index 0000000000..59ffef131f
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upbrsgnmlminrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgothb-h.vf b/language/japanese/pxufont/vf/zu-upnmlgothb-h.vf
new file mode 100644
index 0000000000..7f061d4cef
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgothb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgothb-v.vf b/language/japanese/pxufont/vf/zu-upnmlgothb-v.vf
new file mode 100644
index 0000000000..5ff744be38
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgothb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgothbn-h.vf b/language/japanese/pxufont/vf/zu-upnmlgothbn-h.vf
new file mode 100644
index 0000000000..aab2ecd74c
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgothbn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgothbn-v.vf b/language/japanese/pxufont/vf/zu-upnmlgothbn-v.vf
new file mode 100644
index 0000000000..3910648551
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgothbn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgotheb-h.vf b/language/japanese/pxufont/vf/zu-upnmlgotheb-h.vf
new file mode 100644
index 0000000000..c55637112d
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgotheb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgotheb-v.vf b/language/japanese/pxufont/vf/zu-upnmlgotheb-v.vf
new file mode 100644
index 0000000000..4c5ed84b44
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgotheb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgothebn-h.vf b/language/japanese/pxufont/vf/zu-upnmlgothebn-h.vf
new file mode 100644
index 0000000000..0ecdebb239
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgothebn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgothebn-v.vf b/language/japanese/pxufont/vf/zu-upnmlgothebn-v.vf
new file mode 100644
index 0000000000..9e5abc3bf5
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgothebn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgothr-h.vf b/language/japanese/pxufont/vf/zu-upnmlgothr-h.vf
new file mode 100644
index 0000000000..17898c95bc
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgothr-v.vf b/language/japanese/pxufont/vf/zu-upnmlgothr-v.vf
new file mode 100644
index 0000000000..ae72f17c21
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgothrn-h.vf b/language/japanese/pxufont/vf/zu-upnmlgothrn-h.vf
new file mode 100644
index 0000000000..f57a25b2b2
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgothrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlgothrn-v.vf b/language/japanese/pxufont/vf/zu-upnmlgothrn-v.vf
new file mode 100644
index 0000000000..10af9d103d
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlgothrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlmgothr-h.vf b/language/japanese/pxufont/vf/zu-upnmlmgothr-h.vf
new file mode 100644
index 0000000000..ae7492e2a0
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlmgothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlmgothr-v.vf b/language/japanese/pxufont/vf/zu-upnmlmgothr-v.vf
new file mode 100644
index 0000000000..23a9653fda
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlmgothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlmgothrn-h.vf b/language/japanese/pxufont/vf/zu-upnmlmgothrn-h.vf
new file mode 100644
index 0000000000..e252284d6b
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlmgothrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlmgothrn-v.vf b/language/japanese/pxufont/vf/zu-upnmlmgothrn-v.vf
new file mode 100644
index 0000000000..2cd01a6520
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlmgothrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminb-h.vf b/language/japanese/pxufont/vf/zu-upnmlminb-h.vf
new file mode 100644
index 0000000000..22933c0371
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminb-v.vf b/language/japanese/pxufont/vf/zu-upnmlminb-v.vf
new file mode 100644
index 0000000000..7617749f72
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminbn-h.vf b/language/japanese/pxufont/vf/zu-upnmlminbn-h.vf
new file mode 100644
index 0000000000..661fc4fe61
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminbn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminbn-v.vf b/language/japanese/pxufont/vf/zu-upnmlminbn-v.vf
new file mode 100644
index 0000000000..4385c72267
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminbn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminl-h.vf b/language/japanese/pxufont/vf/zu-upnmlminl-h.vf
new file mode 100644
index 0000000000..88931683eb
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminl-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminl-v.vf b/language/japanese/pxufont/vf/zu-upnmlminl-v.vf
new file mode 100644
index 0000000000..d53fdf940e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminl-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminln-h.vf b/language/japanese/pxufont/vf/zu-upnmlminln-h.vf
new file mode 100644
index 0000000000..6001cede67
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminln-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminln-v.vf b/language/japanese/pxufont/vf/zu-upnmlminln-v.vf
new file mode 100644
index 0000000000..3da468d7b7
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminln-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminr-h.vf b/language/japanese/pxufont/vf/zu-upnmlminr-h.vf
new file mode 100644
index 0000000000..760c876a1e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminr-v.vf b/language/japanese/pxufont/vf/zu-upnmlminr-v.vf
new file mode 100644
index 0000000000..69c9cdd720
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminrn-h.vf b/language/japanese/pxufont/vf/zu-upnmlminrn-h.vf
new file mode 100644
index 0000000000..e480161fab
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminrn-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-upnmlminrn-v.vf b/language/japanese/pxufont/vf/zu-upnmlminrn-v.vf
new file mode 100644
index 0000000000..390bcfa211
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-upnmlminrn-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubygothb-h.vf b/language/japanese/pxufont/vf/zu-uprubygothb-h.vf
new file mode 100644
index 0000000000..5d9dbeb567
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubygothb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubygothb-v.vf b/language/japanese/pxufont/vf/zu-uprubygothb-v.vf
new file mode 100644
index 0000000000..31acf53e6a
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubygothb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubygotheb-h.vf b/language/japanese/pxufont/vf/zu-uprubygotheb-h.vf
new file mode 100644
index 0000000000..4c7bf7cec9
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubygotheb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubygotheb-v.vf b/language/japanese/pxufont/vf/zu-uprubygotheb-v.vf
new file mode 100644
index 0000000000..d67bd6b7d1
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubygotheb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubygothr-h.vf b/language/japanese/pxufont/vf/zu-uprubygothr-h.vf
new file mode 100644
index 0000000000..b90d7c93e8
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubygothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubygothr-v.vf b/language/japanese/pxufont/vf/zu-uprubygothr-v.vf
new file mode 100644
index 0000000000..74bbf0e367
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubygothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubymgothr-h.vf b/language/japanese/pxufont/vf/zu-uprubymgothr-h.vf
new file mode 100644
index 0000000000..bafbd3d50e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubymgothr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubymgothr-v.vf b/language/japanese/pxufont/vf/zu-uprubymgothr-v.vf
new file mode 100644
index 0000000000..d7e2fa3e22
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubymgothr-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubyminb-h.vf b/language/japanese/pxufont/vf/zu-uprubyminb-h.vf
new file mode 100644
index 0000000000..84082d6e40
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubyminb-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubyminb-v.vf b/language/japanese/pxufont/vf/zu-uprubyminb-v.vf
new file mode 100644
index 0000000000..c10bcb7c9c
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubyminb-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubyminl-h.vf b/language/japanese/pxufont/vf/zu-uprubyminl-h.vf
new file mode 100644
index 0000000000..25d9dd68e7
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubyminl-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubyminl-v.vf b/language/japanese/pxufont/vf/zu-uprubyminl-v.vf
new file mode 100644
index 0000000000..ef443a8a91
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubyminl-v.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubyminr-h.vf b/language/japanese/pxufont/vf/zu-uprubyminr-h.vf
new file mode 100644
index 0000000000..6a7210342e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubyminr-h.vf
Binary files differ
diff --git a/language/japanese/pxufont/vf/zu-uprubyminr-v.vf b/language/japanese/pxufont/vf/zu-uprubyminr-v.vf
new file mode 100644
index 0000000000..cfd984350e
--- /dev/null
+++ b/language/japanese/pxufont/vf/zu-uprubyminr-v.vf
Binary files differ
diff --git a/language/japanese/uplatex/LICENSE b/language/japanese/uplatex/LICENSE
new file mode 100644
index 0000000000..fa08676706
--- /dev/null
+++ b/language/japanese/uplatex/LICENSE
@@ -0,0 +1,29 @@
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016 Takuji Tanaka
+Copyright (c) 2016-2019 Japanese TeX Development Community
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/uplatex/Makefile b/language/japanese/uplatex/Makefile
new file mode 100644
index 0000000000..92d1388fa4
--- /dev/null
+++ b/language/japanese/uplatex/Makefile
@@ -0,0 +1,124 @@
+STRIPTARGET = uplatex.ltx ujarticle.cls
+DOCTARGET = uplatex upldoc \
+ uplatex-en #upldoc-en
+PDFTARGET = $(addsuffix .pdf,$(DOCTARGET))
+DVITARGET = $(addsuffix .dvi,$(DOCTARGET))
+KANJI = -kanji=utf8
+FONTMAP = -f ipaex.map -f uptex-ipaex.map
+TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
+
+default: $(STRIPTARGET) $(DVITARGET)
+strip: $(STRIPTARGET)
+all: $(STRIPTARGET) $(PDFTARGET)
+
+PLFMT = uplatex.ltx uplcore.ltx ukinsoku.tex upldefs.ltx \
+ jy2mc.fd jy2gt.fd jt2mc.fd jt2gt.fd uptrace.sty
+
+PLFMT_SRC = uplatex.dtx uplvers.dtx uplfonts.dtx ukinsoku.dtx
+
+PLCLS = ujarticle.cls ujreport.cls ujbook.cls ujsize10.clo \
+ ujsize11.clo ujsize12.clo ujbk10.clo ujbk11.clo ujbk12.clo \
+ utarticle.cls utreport.cls utbook.cls utsize10.clo \
+ utsize11.clo utsize12.clo utbk10.clo utbk11.clo utbk12.clo
+
+PLCLS_SRC = ujclasses.dtx
+
+INTRODOC_SRC = uplatex.dtx
+
+PLDOC_SRC = uplatex.dtx uplvers.dtx uplfonts.dtx \
+ ukinsoku.dtx ujclasses.dtx
+
+uplatex.ltx: $(PLFMT_SRC)
+ rm -f $(PLFMT)
+ uplatex $(KANJI) uplfmt.ins
+ rm uplfmt.log
+
+ujarticle.cls: $(PLCLS_SRC)
+ rm -f $(PLCLS)
+ uplatex $(KANJI) uplcls.ins
+ rm uplcls.log
+
+uplatex.dvi: $(INTRODOC_SRC)
+ rm -f uplatex.cfg
+ uplatex $(KANJI) uplatex.dtx
+ mendex -U -f -s gglo.ist -o uplatex.gls uplatex.glo
+ uplatex $(KANJI) uplatex.dtx
+ rm uplatex.aux uplatex.log
+ rm uplatex.glo uplatex.gls uplatex.ilg
+
+upldoc.dvi: $(PLDOC_SRC)
+ rm -f uplatex.cfg
+ rm -f upldoc.tex Xins.ins
+ uplatex $(KANJI) upldocs.ins
+ rm -f mkpldoc*.sh #dstcheck.pl
+ uplatex $(KANJI) Xins.ins
+ sh mkpldoc.sh
+ rm *.aux *.log upldoc.toc upldoc.idx upldoc.ind upldoc.ilg
+ rm upldoc.glo upldoc.gls upldoc.tex Xins.ins
+ rm ltxdoc.cfg upldoc.dic mkpldoc*.sh #dstcheck.pl
+
+uplatex-en.dvi: $(INTRODOC_SRC)
+ # built-in echo in shell is troublesome, so use perl instead
+ perl -e "print \"\\\\newif\\\\ifJAPANESE\\n"\" >uplatex.cfg
+ uplatex -jobname=uplatex-en $(KANJI) uplatex.dtx
+ mendex -U -f -s gglo.ist -o uplatex-en.gls uplatex-en.glo
+ uplatex -jobname=uplatex-en $(KANJI) uplatex.dtx
+ rm uplatex-en.aux uplatex-en.log
+ rm uplatex-en.glo uplatex-en.gls uplatex-en.ilg
+ rm uplatex.cfg
+
+upldoc-en.dvi: $(PLDOC_SRC)
+ # built-in echo in shell is troublesome, so use perl instead
+ perl -e "print \"\\\\newif\\\\ifJAPANESE\\n"\" >uplatex.cfg
+ rm -f upldoc.tex Xins.ins
+ uplatex $(KANJI) upldocs.ins
+ rm -f mkpldoc*.sh #dstcheck.pl
+ uplatex $(KANJI) Xins.ins
+ sh mkpldoc-en.sh
+ rm *.aux *.log upldoc-en.toc upldoc-en.idx upldoc-en.ind upldoc-en.ilg
+ rm upldoc-en.glo upldoc-en.gls upldoc.tex Xins.ins
+ rm ltxdoc.cfg upldoc.dic mkpldoc*.sh #dstcheck.pl
+ rm uplatex.cfg
+
+uplatex.pdf: uplatex.dvi
+ dvipdfmx $(FONTMAP) $<
+upldoc.pdf: upldoc.dvi
+ dvipdfmx $(FONTMAP) $<
+uplatex-en.pdf: uplatex-en.dvi
+ dvipdfmx $(FONTMAP) $<
+upldoc-en.pdf: upldoc-en.dvi
+ dvipdfmx $(FONTMAP) $<
+
+.PHONY: install clean cleanstrip cleanall cleandoc
+install:
+ mkdir -p ${TEXMF}/doc/uplatex/base
+ cp ./LICENSE ${TEXMF}/doc/uplatex/base/
+ cp ./README.md ${TEXMF}/doc/uplatex/base/
+ cp ./*.pdf ${TEXMF}/doc/uplatex/base/
+ #cp ./*.txt ${TEXMF}/doc/uplatex/base/
+ mkdir -p ${TEXMF}/source/uplatex/base
+ cp ./Makefile ${TEXMF}/source/uplatex/base/
+ cp ./*.dtx ${TEXMF}/source/uplatex/base/
+ cp ./*.ins ${TEXMF}/source/uplatex/base/
+ mkdir -p ${TEXMF}/tex/uplatex/base
+ cp ./ukinsoku.tex ${TEXMF}/tex/uplatex/base/
+ cp ./*.clo ${TEXMF}/tex/uplatex/base/
+ cp ./*.cls ${TEXMF}/tex/uplatex/base/
+ cp ./*.fd ${TEXMF}/tex/uplatex/base/
+ cp ./*.ltx ${TEXMF}/tex/uplatex/base/
+ cp ./*.sty ${TEXMF}/tex/uplatex/base/
+ mkdir -p ${TEXMF}/tex/uplatex/config
+ cp ./uplatex.ini ${TEXMF}/tex/uplatex/config/
+clean:
+ rm -f $(PLFMT) $(PLCLS) \
+ $(DVITARGET) \
+ upldoc.tex Xins.ins
+cleanstrip:
+ rm -f $(PLFMT) $(PLCLS) \
+ upldoc.tex Xins.ins
+cleanall:
+ rm -f $(PLFMT) $(PLCLS) \
+ $(DVITARGET) $(PDFTARGET) \
+ upldoc.tex Xins.ins
+cleandoc:
+ rm -f $(DVITARGET) $(PDFTARGET)
diff --git a/language/japanese/uplatex/README.md b/language/japanese/uplatex/README.md
new file mode 100644
index 0000000000..db8d4a571e
--- /dev/null
+++ b/language/japanese/uplatex/README.md
@@ -0,0 +1,22 @@
+# uplatex
+
+The bundle provides pLaTeX2e macros for [upTeX by Takuji Tanaka](http://www.t-lab.opal.ne.jp/tex/uptex_en.html).
+This is a community edition syncing with [platex](https://github.com/texjporg/platex).
+
+## Repository
+
+The bundle is maintained on GitHub:
+https://github.com/texjporg/uplatex
+
+If you have issues, please let us know from the above page.
+
+## License
+
+The bundle may be distributed and/or modified under the terms of
+the 3-clause BSD license (see [LICENSE](./LICENSE)).
+
+## Release Date
+
+2019-05-22
+
+Japanese TeX Development Community
diff --git a/language/japanese/uplatex/README_uplatex.txt b/language/japanese/uplatex/README_uplatex.txt
new file mode 100644
index 0000000000..ec866e7749
--- /dev/null
+++ b/language/japanese/uplatex/README_uplatex.txt
@@ -0,0 +1,57 @@
+upLaTeX standard format files and class files
+
+
+#### Contents
+## ins files
+ uplfmt.ins: "uptex uplfmt.ins" generates
+ uplatex.ltx, uplcore.ltx, upldefs.ltx,
+ jy2{mc,gt}.fd, jt2{mc,gt}.fd, uptrace.sty, ukinsoku.tex
+ from uplatex.dtx, uplvers.dtx, uplfonts.dtx, ukinsoku.dtx
+ uplcls.ins: "uptex uplcls.ins" generates
+ ujarticle.cls, ujreport.cls, ujbook.cls, ujsize{10,11,12}.clo, ujbk{10,11,12}.clo,
+ utarticle.cls, utreport.cls, utbook.cls, utsize{10,11,12}.clo, utbk{10,11,12}.clo
+ from ujclasses.dtx
+## dtx files
+ uplatex.dtx, uplvers.dtx: for format files.
+ uplfonts.dtx: for font files.
+ ukinsoku.dtx: for kinsoku file.
+ ujclasses.dtx: for class files.
+ Document (*.dvi) ganeration has not been checked yet.
+## fd files, cls files, sty files, tex files
+ these are generated by uptex and above sources.
+
+
+#### Copyright
+
+See a file LICENSE.
+
+
+#### ChangeLog
+
+Since 2016-04-17, upLaTeX is maintained by Japanese TeX Development Community.
+See https://github.com/texjporg/uplatex/releases for recent changes.
+
+uptex-1.20 [2014/12/29] TTK
+ * re-package for upTeX/upLaTeX Ver.1.20 distribution.
+
+uptex-1.10 [2012/04/29] TTK
+ * Update config/uplatex.ini to Tono-san's style.
+ Ref. http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/31691.html
+
+uptex-1.00 [2012/01/15] TTK
+ * re-package for upTeX/upLaTeX Ver.1.00 distribution.
+
+v20110507a [2011/05/07] TTK
+ * re-package for upTeX/upLaTeX based on uptex-0.30 distribution
+ and ptex-texmf-2.5.tar.gz .
+ * reset version number for upTeX/upLaTeX.
+ - uplvers.dtx [2011/05/07 v1.0q_u00], \pfmtversion{2011/05/07u00}
+ - uplpatch.ltx \pfmtversion{2011/05/07u00}
+ - ujclasses.dtx [2011/05/07 v1.6_u00]
+ - uplatex.dtx [2011/05/07 v1.0c_u00]
+ - uplfonts.dtx [2011/05/07 v1.5_u00]
+ - ukinsoku.dtx [2011/05/07 v1.0_u00]
+ * rename plpatch.ltx to uplpatch.ltx .
+ * rename pldefs.cfg to updefs.cfg .
+ * add ujbk{10,11,12}.clo .
+ * converte files to UTF-8 encoding.
diff --git a/language/japanese/uplatex/ujclasses.dtx b/language/japanese/uplatex/ujclasses.dtx
new file mode 100644
index 0000000000..693c91f915
--- /dev/null
+++ b/language/japanese/uplatex/ujclasses.dtx
@@ -0,0 +1,4538 @@
+% \iffalse meta-comment
+%% File: ujclasses.dtx
+%
+% pLaTeX class files:
+% Copyright 1995-2001 ASCII Corporation.
+% and modified for upLaTeX
+%
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016 Takuji Tanaka
+% Copyright (c) 2016-2019 Japanese TeX Development Community
+%
+% This file is part of the upLaTeX2e system (community edition).
+% --------------------------------------------------------------
+%
+% \fi
+%
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.0}{1995/04/19}{first edition}
+% \changes{v1.0a}{1995/08/30}{ページスタイル部分の調整}
+% \changes{v1.0b}{1995/11/08}{ページスタイル部分の調整}
+% \changes{v1.0c}{1996/01/30}{\LaTeX\ \texttt{!<1995/12/01!>}での修正を反映}
+% \changes{v1.0d}{1996/02/29}{デフォルトページスタイルの修正}
+% \changes{v1.0e}{1996/03/14}{itemize, enumerate環境の修正}
+% \changes{v1.0f}{1996/07/10}{面付けオプションを追加}
+% \changes{v1.0g}{1996/09/03}{トンボの横に作成日時を出力するようにした}
+% \changes{v1.1}{1997/01/16}{\LaTeX\ \texttt{!<1996/06/01!>}版に対応}
+% \changes{v1.1a}{1997/01/23}{\LaTeX\ \texttt{!<1996/12/01!>}版に対応}
+% \changes{v1.1a}{1997/01/25}{互換モードでp\LaTeX~2.09のa4jなどの
+% 用紙オプションに対応}
+% \changes{v1.1b}{1997/01/28}{日本語ファミリの宣言を再度、実装}
+% \changes{v1.1d}{1997/01/29}{2eモードでa4jなどのオプションに対応}
+% \changes{v1.1e}{1997/04/08}{トップマージンの値を修正}
+% \changes{v1.1f}{1997/07/08}{縦組クラスでベースラインがおかしいのを修正}
+% \changes{v1.1g}{1997/08/25}{片面印刷のとき、sectionレベルが出力されない
+% のを修正}
+% \changes{v1.1h}{1997/09/03}{landscape指定時の値を修正}
+% \changes{v1.1i}{1997/12/12}{report, bookクラスで片面印刷時に、
+% bothstyleスタイルにすると、コンパイルエラーになるのを修正}
+% \changes{v1.1j}{1998/02/03}{互換モード時のa5pのトップマージンを0.7in増加}
+% \changes{v1.1k}{1998/03/23}{reportとbookクラスで番号を付けない見出しの
+% ペナルティが\cs{M@}だったのを\cs{@M}に修正}
+% \changes{v1.1m}{1998/04/07}{\cs{today}の計算手順を変更}
+% \changes{v1.1n}{1998/10/13}{report,bookクラスの表番号が
+% 見出しレベルに関係なくchapter番号が出力されてしまうのを修正}
+% \changes{v1.1n}{1998/10/13}{mentukeオプションがエラーになっていたのを修正}
+% \changes{v1.1o}{1998/12/24}{secnumdepthカウンタを$-1$以下にすると、
+% 見出し文字列も消えてしまうのを修正}
+% \changes{v1.1p}{1999/1/6}{\cs{oddsidemargin}のポイントへの変換を後ろに}
+% \changes{v1.1q}{1999/05/18}{縦組時のみに設定するようにした}
+% \changes{v1.1r}{1999/08/09}{トップマージンの計算式を修正}
+% \changes{v1.2}{2001/09/04}{\cs{chapter}の出力位置がアスタリスク形式と
+% そうでないときと違うのを修正(ありがとう、鈴木@津さん)}
+% \changes{v1.3}{2001/10/04}{目次のページ番号の書体を\cs{rmfamily}から
+% \cs{normalfont}に変更(ありがとう、鈴木た@MILNさん)}
+% \changes{v1.4}{2002/04/09}{縦組スタイルで\cs{flushbottom}しないようにした}
+% \changes{v1.5}{2004/01/15}{\cs{part},\cs{chapter}の\cs{@afterindentfalse}を
+% \cs{@afterindenttrue}に変更。
+% \cs{section},\cs{subsection},\cs{subsubsection}の前後空きの伸縮幅を修正。
+% (ありがとうございます、鈴木た@MILNさん)}
+% \changes{v1.6}{2006/06/27}{フォントコマンドを修正。ありがとう、ymtさん。}
+% \changes{v1.6-u00}{2011/05/07}{p\LaTeX{}用からup\LaTeX{}用に修正。}
+% \changes{v1.7}{2016/11/12}{ドキュメントに反して\cs{@maketitle}が
+% 空になっていなかったのを修正}
+% \changes{v1.7}{2016/11/12}{use \cs{@width} (sync with classes.dtx v1.3a)}
+% \changes{v1.7}{2016/11/12}{Replaced all \cs{hbox to} by
+% \cs{hb@xt@} (sync with classes.dtx v1.3a)}
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+% arg (sync with classes.dtx v1.4c)}
+% \changes{v1.7}{2016/11/12}{\cs{columnsep}と\cs{columnseprule}の
+% 変更を後ろに移動(sync with classes.dtx v1.4f)}
+% \changes{v1.7a}{2016/11/16}{Check \texttt{@noskipsec} switch and
+% possibly force horizontal mode (sync with classes.dtx v1.4a)}
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \changes{v1.7a}{2016/11/16}{Added \cs{nobreak} for
+% latex/2343 (sync with ltsect.dtx v1.0z)}
+% \changes{v1.7a}{2016/11/16}{Use \cs{expandafter}
+% (sync with ltlists.dtx v1.0j)}
+% \changes{v1.7b}{2016/11/22}{補足ドキュメントを追加}
+% \changes{v1.7b-u00}{2016/11/22}{p\LaTeX{}用に追随}
+% \changes{v1.7c}{2016/12/18}{Only add empty page after part if
+% twoside and openright (sync with classes.dtx v1.4b)}
+% \changes{v1.7c}{2016/12/18}{奇妙なarticleガードとコードを削除して
+% ドキュメントを追加}
+% \changes{v1.7c-u00}{2016/12/18}{p\LaTeX{}用に追随}
+% \changes{v1.7d}{2017/02/15}{\cs{if@openleft}スイッチ追加}
+% \changes{v1.7d}{2017/02/15}{openleftオプション追加}
+% \changes{v1.7d}{2017/02/15}{\cs{cleardoublepage}の代用となる命令群を追加}
+% \changes{v1.7d}{2017/02/15}{bookクラスでtitlepageを必ず奇数ページ
+% に送るように変更}
+% \changes{v1.7d}{2017/02/15}{titlepageのページ番号を奇数ならば1に、
+% 偶数ならば0にリセットするように変更}
+% \changes{v1.7d}{2017/02/15}{縦組クラスの所属表示の番号を直立にした}
+% \changes{v1.7d-u00}{2017/02/15}{p\LaTeX{}用に追随}
+% \changes{v1.7e}{2017/03/05}{トンボに表示するジョブ情報の書式を変更}
+% \changes{v1.7e}{2017/03/05}{\cs{frontmatter}と\cs{mainmatter}を
+% 奇数ページに送るように変更}
+% \changes{v1.7e-u00}{2017/03/05}{p\LaTeX{}用に追随}
+% \changes{v1.7f}{2017/08/31}{和文書体の基準を全角空白から「漢」に変更}
+% \changes{v1.7g}{2017/09/19}{内部処理で使ったボックス0を空にした}
+% \changes{v1.7g-u00}{2017/09/19}{p\LaTeX{}用に追随}
+% \changes{v1.7h}{2018/02/04}{和文スケール値\cs{Cjascale}を定義}
+% \changes{v1.7h-u00}{2018/02/04}{p\LaTeX{}用に追随}
+% \changes{v1.8}{2018/07/03}{\cs{today}のデフォルトを和暦から西暦に変更}
+% \changes{v1.8-u00}{2018/07/03}{p\LaTeX{}用に追随}
+% \changes{v1.8a}{2018/10/25}{ファイル書き出し時の行末文字対策
+% (sync with ltsect.dtx 2018/09/26 v1.1c)}
+% \changes{v1.8a-u00}{2018/10/25}{p\LaTeX{}用に追随}
+% \changes{v1.8b}{2019/04/02}{新元号対応}
+% \changes{v1.8b-u00}{2019/04/02}{p\LaTeX{}用に追随}
+% \fi
+%
+% \iffalse
+\NeedsTeXFormat{pLaTeX2e}
+%<*driver>
+\ProvidesFile{ujclasses.dtx}
+%</driver>
+%<*yoko>
+%<article>\ProvidesClass{ujarticle}
+%<report>\ProvidesClass{ujreport}
+%<book>\ProvidesClass{ujbook}
+%<10pt&!bk>\ProvidesFile{ujsize10.clo}
+%<11pt&!bk>\ProvidesFile{ujsize11.clo}
+%<12pt&!bk>\ProvidesFile{ujsize12.clo}
+%<10pt&bk>\ProvidesFile{ujbk10.clo}
+%<11pt&bk>\ProvidesFile{ujbk11.clo}
+%<12pt&bk>\ProvidesFile{ujbk12.clo}
+%</yoko>
+%<*tate>
+%<article>\ProvidesClass{utarticle}
+%<report>\ProvidesClass{utreport}
+%<book>\ProvidesClass{utbook}
+%<10pt&!bk>\ProvidesFile{utsize10.clo}
+%<11pt&!bk>\ProvidesFile{utsize11.clo}
+%<12pt&!bk>\ProvidesFile{utsize12.clo}
+%<10pt&bk>\ProvidesFile{utbk10.clo}
+%<11pt&bk>\ProvidesFile{utbk11.clo}
+%<12pt&bk>\ProvidesFile{utbk12.clo}
+%</tate>
+ [2019/04/02 v1.8b-u00
+%<article|report|book> Standard upLaTeX class]
+%<10pt|11pt|12pt> Standard upLaTeX file (size option)]
+%<*driver>
+]
+\documentclass{jltxdoc}
+\GetFileInfo{jclasses.dtx}
+\title{up\LaTeXe{}の標準クラス\space\fileversion}
+\author{Ken Nakano \& TTK}
+\date{作成日:\filedate}
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% このファイルは、up\LaTeXe{}の標準クラスファイルです。
+% p\LaTeXe{}の標準クラスファイルをup\LaTeXe{}用に修正したものです。
+% \dst{}プログラムによって、横組用のクラスファイルと縦組用のクラスファイル
+% を作成することができます。
+%
+% 次に\dst{}プログラムのためのオプションを示します。
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{l|l}
+% \emph{オプション} & \emph{意味}\\\hline
+% article & articleクラスを生成\\
+% report & reportクラスを生成\\
+% book & bookクラスを生成\\
+% 10pt & 10ptサイズの設定を生成\\
+% 11pt & 11ptサイズの設定を生成\\
+% 12pt & 12ptサイズの設定を生成\\
+% bk & bookクラス用のサイズの設定を生成\\
+% tate & 縦組用の設定を生成\\
+% yoko & 横組用の設定を生成\\
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+%
+% \section{オプションスイッチ}
+% ここでは、後ほど使用するいくつかのコマンドやスイッチを定義しています。
+%
+% \begin{macro}{\c@@paper}
+% 用紙サイズを示すために使います。
+% A4, A5, B4, B5用紙はそれぞれ、1, 2, 3, 4として表されます。
+% \begin{macrocode}
+%<*article|report|book>
+\newcounter{@paper}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@landscape}
+% 用紙を横向きにするかどうかのスイッチです。デフォルトは、縦向きです。
+% \begin{macrocode}
+\newif\if@landscape \@landscapefalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@ptsize}
+% 組版をするポイント数の一の位を保存するために使います。
+% 0, 1, 2のいずれかです。
+% \begin{macrocode}
+\newcommand{\@ptsize}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@restonecol}
+% 二段組時に用いるテンポラリスイッチです。
+% \begin{macrocode}
+\newif\if@restonecol
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@titlepage}
+% タイトルページやアブストラクト(概要)を
+% 独立したページにするかどうかのスイッチです。
+% reportとbookスタイルのデフォルトでは、独立したページになります。
+% \begin{macrocode}
+\newif\if@titlepage
+%<article>\@titlepagefalse
+%<report|book>\@titlepagetrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openright}
+% chapterレベルを右ページからはじめるかどうかのスイッチです。
+% 横組では奇数ページ、縦組では偶数ページから始まることになります。
+% reportクラスのデフォルトは、``no''です。
+% bookクラスのデフォルトは、``yes''です。
+% \begin{macrocode}
+%<!article>\newif\if@openright
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@openleft}
+% chapterレベルを左ページからはじめるかどうかのスイッチです。
+% 日本語\TeX{}開発コミュニティ版で新たに追加されました。
+% 横組では偶数ページ、縦組では奇数ページから始まることになります。
+% reportクラスとbookクラスの両方で、デフォルトは``no''です。
+% \changes{v1.7d}{2017/02/15}{\cs{if@openleft}スイッチ追加}
+% \begin{macrocode}
+%<!article>\newif\if@openleft
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.0c}{1995/12/25}{Macro \cs{if@openbib} removed}
+%
+% \begin{macro}{\if@mainmatter}
+% スイッチ|\@mainmatter|が真の場合、本文を処理しています。
+% このスイッチが偽の場合は、|\chapter|コマンドは見出し番号を出力しません。
+% \begin{macrocode}
+%<book>\newif\if@mainmatter \@mainmattertrue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hour}
+% \begin{macro}{\minute}
+% \begin{macrocode}
+\hour\time \divide\hour by 60\relax
+\@tempcnta\hour \multiply\@tempcnta 60\relax
+\minute\time \advance\minute-\@tempcnta
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@stysize}
+% \changes{v1.1a}{1997/01/25}{Add \cs{if@stysize}.}
+% p\LaTeXe~2.09互換モードで、スタイルオプションにa4j,a5pなどが指定された
+% ときの動作をエミュレートするためのフラグです。
+% \begin{macrocode}
+\newif\if@stysize \@stysizefalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@enablejfam}
+% \changes{v1.1b}{1997/01/28}{\break Add \cs{if@enablejfam}}
+% 日本語ファミリを宣言するために用いるフラグです。
+% \begin{macrocode}
+\newif\if@enablejfam \@enablejfamtrue
+% \end{macrocode}
+% 和欧文両対応の数式文字コマンドを有効にするときに用いるフラグです。
+% マクロの展開順序が複雑になるのを避けるため、
+% デフォルトではfalseとしてあります。
+% \begin{macrocode}
+\newif\if@mathrmmc \@mathrmmcfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \section{オプションの宣言}
+% ここでは、クラスオプションの宣言を行なっています。
+%
+% \subsection{用紙オプション}
+% 用紙サイズを指定するオプションです。
+% \begin{macrocode}
+\DeclareOption{a4paper}{\setcounter{@paper}{1}%
+ \setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{a5paper}{\setcounter{@paper}{2}%
+ \setlength\paperheight {210mm}
+ \setlength\paperwidth {148mm}}
+\DeclareOption{b4paper}{\setcounter{@paper}{3}%
+ \setlength\paperheight {364mm}
+ \setlength\paperwidth {257mm}}
+\DeclareOption{b5paper}{\setcounter{@paper}{4}%
+ \setlength\paperheight {257mm}
+ \setlength\paperwidth {182mm}}
+% \end{macrocode}
+% \changes{v1.0a}{1995/09/26}{Change b4paper width/height 352x250 to 364x257}
+% \changes{v1.0a}{1995/09/26}{Change b5paper width/height 250x176 to 257x182}
+% ドキュメントクラスに、以下のオプションを指定すると、通常よりもテキストを
+% 組み立てる領域の広いスタイルとすることができます。
+% \begin{macrocode}
+%
+\DeclareOption{a4j}{\setcounter{@paper}{1}\@stysizetrue
+ \setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{a5j}{\setcounter{@paper}{2}\@stysizetrue
+ \setlength\paperheight {210mm}
+ \setlength\paperwidth {148mm}}
+\DeclareOption{b4j}{\setcounter{@paper}{3}\@stysizetrue
+ \setlength\paperheight {364mm}
+ \setlength\paperwidth {257mm}}
+\DeclareOption{b5j}{\setcounter{@paper}{4}\@stysizetrue
+ \setlength\paperheight {257mm}
+ \setlength\paperwidth {182mm}}
+%
+\DeclareOption{a4p}{\setcounter{@paper}{1}\@stysizetrue
+ \setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{a5p}{\setcounter{@paper}{2}\@stysizetrue
+ \setlength\paperheight {210mm}
+ \setlength\paperwidth {148mm}}
+\DeclareOption{b4p}{\setcounter{@paper}{3}\@stysizetrue
+ \setlength\paperheight {364mm}
+ \setlength\paperwidth {257mm}}
+\DeclareOption{b5p}{\setcounter{@paper}{4}\@stysizetrue
+ \setlength\paperheight {257mm}
+ \setlength\paperwidth {182mm}}
+% \end{macrocode}
+%
+% \subsection{サイズオプション}
+% 基準となるフォントの大きさを指定するオプションです。
+% \begin{macrocode}
+\if@compatibility
+ \renewcommand{\@ptsize}{0}
+\else
+ \DeclareOption{10pt}{\renewcommand{\@ptsize}{0}}
+\fi
+\DeclareOption{11pt}{\renewcommand{\@ptsize}{1}}
+\DeclareOption{12pt}{\renewcommand{\@ptsize}{2}}
+% \end{macrocode}
+%
+% \subsection{横置きオプション}
+% このオプションが指定されると、用紙の縦と横の長さを入れ換えます。
+% \changes{v1.1h}{1997/09/03}{オプションの処理時に縦横の値を交換}
+% \changes{v1.1h}{1997/09/03}{landscapeオプションを互換モードでも有効に}
+% \begin{macrocode}
+\DeclareOption{landscape}{\@landscapetrue
+ \setlength\@tempdima{\paperheight}%
+ \setlength\paperheight{\paperwidth}%
+ \setlength\paperwidth{\@tempdima}}
+% \end{macrocode}
+%
+% \subsection{トンボオプション}
+% |tombow|オプションが指定されると、用紙サイズに合わせてトンボを出力します。
+% このとき、トンボの脇にDVIを作成した日付が出力されます。
+% 作成日付の出力を抑制するには、|tombow|ではなく、|tombo|と指定をします。
+%
+% ジョブ情報の書式は元々|filename : 2017/3/5(13:3)|のような書式でしたが、
+% jsclassesにあわせて桁数固定の|filename (2017-03-05 13:03)|に直しました。
+% \changes{v1.0g}{1996/09/03}{Add to \cs{@bannertoken}.}
+% \changes{v1.1a}{1997/01/23}{日付出力オプション}
+% \changes{v1.7e}{2017/03/05}{トンボに表示するジョブ情報の書式を変更}
+% \begin{macrocode}
+\DeclareOption{tombow}{%
+ \tombowtrue \tombowdatetrue
+ \setlength{\@tombowwidth}{.1\p@}%
+ \@bannertoken{%
+ \jobname\space(\number\year-\two@digits\month-\two@digits\day
+ \space\two@digits\hour:\two@digits\minute)}%
+ \maketombowbox}
+\DeclareOption{tombo}{%
+ \tombowtrue \tombowdatefalse
+ \setlength{\@tombowwidth}{.1\p@}%
+ \maketombowbox}
+% \end{macrocode}
+%
+% \subsection{面付けオプション}
+% このオプションが指定されると、トンボオプションを指定したときと同じ
+% 位置に文章を出力します。作成したDVIをフィルムに面付け出力する場合など
+% に指定をします。
+% \changes{v1.0f}{1996/07/10}{面付けオプションを追加}
+% \changes{v1.1n}{1998/10/13}
+% {動作していなかったのを修正。ありがとう、刀祢さん}
+% \begin{macrocode}
+\DeclareOption{mentuke}{%
+ \tombowtrue \tombowdatefalse
+ \setlength{\@tombowwidth}{\z@}%
+ \maketombowbox}
+% \end{macrocode}
+%
+% \subsection{組方向オプション}
+% このオプションが指定されると、縦組で組版をします。
+% \changes{v1.0g}{1997/01/25}{Insert \cs{hbox}, to switch tate-mode.}
+% \changes{v1.1d}{1997/02/05}{開始ページがおかしくなるのを修正}
+% \changes{v1.1f}{1997/07/08}{縦組時にベースラインがおかしくなるのを修正}
+% \begin{macrocode}
+\DeclareOption{tate}{%
+ \AtBeginDocument{\tate\message{《縦組モード》}%
+ \adjustbaseline}%
+}
+% \end{macrocode}
+%
+% \subsection{両面、片面オプション}
+% twosideオプションが指定されると、両面印字出力に適した整形を行ないます。
+% \begin{macrocode}
+\DeclareOption{oneside}{\@twosidefalse}
+\DeclareOption{twoside}{\@twosidetrue}
+% \end{macrocode}
+%
+% \subsection{二段組オプション}
+% 二段組にするかどうかのオプションです。
+% \begin{macrocode}
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+% \end{macrocode}
+%
+% \subsection{表題ページオプション}
+% |@titlepage|が真の場合、表題を独立したページに出力します。
+% \begin{macrocode}
+\DeclareOption{titlepage}{\@titlepagetrue}
+\DeclareOption{notitlepage}{\@titlepagefalse}
+% \end{macrocode}
+%
+% \subsection{右左起こしオプション}
+% chapterを右ページあるいは左ページから
+% はじめるかどうかを指定するオプションです。
+% |openleft|オプションは日本語\TeX{}開発コミュニティによって追加されました。
+% \changes{v1.7d}{2017/02/15}{openleftオプション追加}
+% \begin{macrocode}
+%<!article>\if@compatibility
+%<book>\@openrighttrue
+%<!article>\else
+%<!article>\DeclareOption{openright}{\@openrighttrue\@openleftfalse}
+%<!article>\DeclareOption{openleft}{\@openlefttrue\@openrightfalse}
+%<!article>\DeclareOption{openany}{\@openrightfalse\@openleftfalse}
+%<!article>\fi
+% \end{macrocode}
+%
+% \subsection{数式のオプション}
+% \Lopt{leqno}を指定すると、数式番号を数式の左側に出力します。
+% \Lopt{fleqn}を指定するとディスプレイ数式を左揃えで出力します。
+% \begin{macrocode}
+\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+% \end{macrocode}
+%
+% \subsection{参考文献のオプション}
+% 参考文献一覧を``オープンスタイル''の書式で出力します。
+% これは各ブロックが改行で区切られ、|\bibindent|のインデントが付く書式です。
+% \changes{v1.0c}{1995/12/25}{openbibオプションを再実装}
+% \begin{macrocode}
+\DeclareOption{openbib}{%
+% \end{macrocode}
+% 参考文献環境内の最初のいくつかのフックを満たします。
+% \begin{macrocode}
+ \AtEndOfPackage{%
+ \renewcommand\@openbib@code{%
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ }%
+% \end{macrocode}
+% そして、|\newblock|を再定義します。
+% \begin{macrocode}
+ \renewcommand\newblock{\par}}}
+% \end{macrocode}
+%
+% \subsection{日本語ファミリ宣言の抑制、和欧文両対応の数式文字}
+% p\LaTeXe{}は、このあと、数式モードで直接、日本語を記述できるように
+% 数式ファミリを宣言します。しかし、\TeX{}で扱える数式ファミリの数が
+% 16個なので、その他のパッケージと組み合わせた場合、
+% 数式ファミリを宣言する領域を超えてしまう場合があるかもしれません。
+% そのときには、残念ですが、そのパッケージか、数式内に直接、
+% 日本語を記述するのか、どちらかを断念しなければなりません。
+% このクラスオプションは、
+% 数式内に日本語を記述するのをあきらめる場合に用います。
+%
+% |disablejfam|オプションを指定しても|\textmc|や|\textgt|などを用いて、
+% 数式内に日本語を記述することは可能です。
+%
+% \noindent\emph{日本語\TeX{}開発コミュニティによる補足}:
+% コミュニティ版p\LaTeX{}の2016/11/29以降の版では、e-p\TeX{}の拡張機能
+% (通称「旧FAM256パッチ」)が利用可能な場合に、\LaTeX{}の機能で宣言
+% できる数式ファミリ(数式アルファベット)の上限を256個に増やしています。
+% したがって、新しい環境では|disablejfam|を指定しなくても上限を超える
+% ことが起きにくくなっています。
+%
+% |mathrmmc|オプションは、
+% |\mathrm|と|\mathbf|を和欧文両対応にするためのクラスオプションです。
+% \changes{v1.1d}{1992/02/04}{disablejfamの判断を間違えてたのを修正}
+% \begin{macrocode}
+\if@compatibility
+ \@mathrmmctrue
+\else
+ \DeclareOption{disablejfam}{\@enablejfamfalse}
+ \DeclareOption{mathrmmc}{\@mathrmmctrue}
+\fi
+% \end{macrocode}
+%
+%
+% \subsection{ドラフトオプション}
+% |draft|オプションを指定すると、オーバフルボックスの起きた箇所に、
+% 5ptの罫線が引かれます。
+% \begin{macrocode}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+%</article|report|book>
+% \end{macrocode}
+%
+% \subsection{オプションの実行}
+% オプションの実行、およびサイズクラスのロードを行ないます。
+% \begin{macrocode}
+%<*article|report|book>
+%<*article>
+%<tate>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,tate}
+%<yoko>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final}
+%</article>
+%<*report>
+%<tate>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany,tate}
+%<yoko>\ExecuteOptions{a4paper,10pt,oneside,onecolumn,final,openany}
+%</report>
+%<*book>
+%<tate>\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright,tate}
+%<yoko>\ExecuteOptions{a4paper,10pt,twoside,onecolumn,final,openright}
+%</book>
+\ProcessOptions\relax
+%<book&tate>\input{utbk1\@ptsize.clo}
+%<!book&tate>\input{utsize1\@ptsize.clo}
+%<book&yoko>\input{ujbk1\@ptsize.clo}
+%<!book&yoko>\input{ujsize1\@ptsize.clo}
+% \end{macrocode}
+% 縦組用クラスファイルの場合は、ここで\file{plext.sty}も読み込みます。
+% \changes{v1.0e}{1996/03/21}{\cs{usepackage} to \cs{RequirePackage}}
+% \begin{macrocode}
+%<tate>\RequirePackage{plext}
+%</article|report|book>
+% \end{macrocode}
+%
+% \section{フォント}
+%
+% ここでは、\LaTeX{}のフォントサイズコマンドの定義をしています。
+% フォントサイズコマンドの定義は、次のコマンドを用います。
+%
+% |\@setfontsize||\size|\meta{font-size}\meta{baselineskip}
+%
+% \begin{description}
+% \item[\meta{font-size}] これから使用する、フォントの実際の大きさです。
+% \item[\meta{baselineskip}] 選択されるフォントサイズ用の通常の
+% |\baselineskip|の値です(実際は、|\baselinestretch| * \meta{baselineskip}
+% の値です)。
+% \end{description}
+%
+% 数値コマンドは、次のように\LaTeX{}カーネルで定義されています。
+% \begin{center}
+% \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
+% \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
+% \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
+% \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
+% ...
+% \end{tabular}
+% \end{center}
+%
+% \begin{macro}{\normalsize}
+% \begin{macro}{\@normalsize}
+% 基本サイズとするユーザレベルのコマンドは|\normalsize|です。
+% \LaTeX{}の内部では|\@normalsize|を使用します。
+%
+% |\normalsize|マクロは、|\abovedisplayskip|と
+% |\abovedisplayshortskip|、および|\belowdisplayshortskip|の値も設定をします。
+% |\belowdisplayskip|は、つねに|\abovedisplayskip|と同値です。
+%
+% また、リスト環境のトップレベルのパラメータは、つねに|\@listI|で与えられます。
+% \begin{macrocode}
+%<*10pt|11pt|12pt>
+\renewcommand{\normalsize}{%
+%<10pt&yoko> \@setfontsize\normalsize\@xpt{15}%
+%<11pt&yoko> \@setfontsize\normalsize\@xipt{15.5}%
+%<12pt&yoko> \@setfontsize\normalsize\@xiipt{16.5}%
+%<10pt&tate> \@setfontsize\normalsize\@xpt{17}%
+%<11pt&tate> \@setfontsize\normalsize\@xipt{17}%
+%<12pt&tate> \@setfontsize\normalsize\@xiipt{18}%
+%<*10pt>
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+%</10pt>
+%<*11pt>
+ \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+%</11pt>
+%<*12pt>
+ \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+%</12pt>
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}
+% \end{macrocode}
+%
+% ここで、ノーマルフォントを選択し、初期化をします。
+% このとき、縦組モードならば、デフォルトのエンコードを変更します。
+% \begin{macrocode}
+%<tate>\def\kanjiencodingdefault{JT2}%
+%<tate>\kanjiencoding{\kanjiencodingdefault}%
+\normalsize
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Cht}
+% \begin{macro}{\Cdp}
+% \begin{macro}{\Cwd}
+% \begin{macro}{\Cvs}
+% \begin{macro}{\Chs}
+% 基準となる長さの設定をします。これらのパラメータは\file{uplfonts.dtx}で定義
+% されています。基準とする文字を「全角空白」(EUCコード\texttt{0xA1A1})から
+% 「漢」(JISコード\texttt{0x3441})へ変更しました。
+% \changes{v1.7f}{2017/08/31}{和文書体の基準を全角空白から「漢」に変更}
+% \changes{v1.7g}{2017/09/19}{内部処理で使ったボックス0を空にした}
+% \begin{macrocode}
+\setbox0\hbox{\char\jis"3441}%
+\setlength\Cht{\ht0}
+\setlength\Cdp{\dp0}
+\setlength\Cwd{\wd0}
+\setlength\Cvs{\baselineskip}
+\setlength\Chs{\wd0}
+\setbox0=\box\voidb@x
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\small}
+% |\small|コマンドの定義は、|\normalsize|に似ています。
+% \begin{macrocode}
+\newcommand{\small}{%
+%<*10pt>
+ \@setfontsize\small\@ixpt{11}%
+ \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus2\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+%</10pt>
+%<*11pt>
+ \@setfontsize\small\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@
+ \parsep 3\p@ \@plus2\p@ \@minus\p@
+ \itemsep \parsep}%
+%</11pt>
+%<*12pt>
+ \@setfontsize\small\@xipt{13.6}%
+ \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 9\p@ \@plus3\p@ \@minus5\p@
+ \parsep 4.5\p@ \@plus2\p@ \@minus\p@
+ \itemsep \parsep}%
+%</12pt>
+ \belowdisplayskip \abovedisplayskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footnotesize}
+% |\footnotesize|コマンドの定義は、|\normalsize|に似ています。
+% \begin{macrocode}
+\newcommand{\footnotesize}{%
+%<*10pt>
+ \@setfontsize\footnotesize\@viiipt{9.5}%
+ \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 3\p@ \@plus\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+%</10pt>
+%<*11pt>
+ \@setfontsize\footnotesize\@ixpt{11}%
+ \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+%</11pt>
+%<*12pt>
+ \@setfontsize\footnotesize\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@
+ \parsep 3\p@ \@plus2\p@ \@minus\p@
+ \itemsep \parsep}%
+%</12pt>
+ \belowdisplayskip \abovedisplayskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scriptsize}
+% \begin{macro}{\tiny}
+% \begin{macro}{\large}
+% \begin{macro}{\Large}
+% \begin{macro}{\LARGE}
+% \begin{macro}{\huge}
+% \begin{macro}{\Huge}
+% これらは先ほどのマクロよりも簡単です。これらはフォントサイズを変更する
+% だけで、リスト環境とディスプレイ数式のパラメータは変更しません。
+% \begin{macrocode}
+%<*10pt>
+\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
+\newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt}
+\newcommand{\large}{\@setfontsize\large\@xiipt{17}}
+\newcommand{\Large}{\@setfontsize\Large\@xivpt{21}}
+\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{25}}
+\newcommand{\huge}{\@setfontsize\huge\@xxpt{28}}
+\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{33}}
+%</10pt>
+%<*11pt>
+\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}}
+\newcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
+\newcommand{\large}{\@setfontsize\large\@xiipt{17}}
+\newcommand{\Large}{\@setfontsize\Large\@xivpt{21}}
+\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{25}}
+\newcommand{\huge}{\@setfontsize\huge\@xxpt{28}}
+\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{33}}
+%</11pt>
+%<*12pt>
+\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}}
+\newcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
+\newcommand{\large}{\@setfontsize\large\@xivpt{21}}
+\newcommand{\Large}{\@setfontsize\Large\@xviipt{25}}
+\newcommand{\LARGE}{\@setfontsize\LARGE\@xxpt{28}}
+\newcommand{\huge}{\@setfontsize\huge\@xxvpt{33}}
+\let\Huge=\huge
+%</12pt>
+%</10pt|11pt|12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Cjascale}
+% このクラスファイルが意図する和文スケール値
+% ($1\,\mathrm{zw} \div \textmc{要求サイズ}$)を
+% 表す実数値マクロ|\Cjascale|を定義します。
+% このup\LaTeXe{}の標準クラスでは、フォーマット作成時に読み込まれた
+% フォント定義ファイル(\file{jy2mc.fd} / \file{jy2gt.fd} /
+% \file{jt2mc.fd} / \file{jt2gt.fd})での和文スケール値がそのまま
+% 有効ですので、これは0.962216です。
+% \changes{v1.7h}{2018/02/04}{和文スケール値\cs{Cjascale}を定義}
+% \begin{macrocode}
+%<*article|report|book>
+\def\Cjascale{0.962216}
+%</article|report|book>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \section{レイアウト}
+%
+% \subsection{用紙サイズの決定}
+%
+% \begin{macro}{\columnsep}
+% \begin{macro}{\columnseprule}
+% |\columnsep|は、二段組のときの、左右(あるいは上下)の段間の幅です。
+% このスペースの中央に|\columnseprule|の幅の罫線が引かれます。
+% \changes{v1.0g}{1997/01/25}{\cs{columnsep}: 10pt to 3\cs{Cwd} or 2\cs{Cwd}.}
+% \begin{macrocode}
+%<*article|report|book>
+\if@stysize
+%<tate> \setlength\columnsep{3\Cwd}
+%<yoko> \setlength\columnsep{2\Cwd}
+\else
+ \setlength\columnsep{10\p@}
+\fi
+\setlength\columnseprule{0\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{段落の形}
+%
+% \begin{macro}{\lineskip}
+% \begin{macro}{\normallineskip}
+% これらの値は、行が近付き過ぎたときの\TeX の動作を制御します。
+% \begin{macrocode}
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\baselinestretch}
+% これは、|\baselineskip|の倍率を示すために使います。
+% デフォルトでは、\emph{何もしません}。このコマンドが``empty''でない場合、
+% |\baselineskip|の指定の\texttt{plus}や\texttt{minus}部分は無視される
+% ことに注意してください。
+% \begin{macrocode}
+\renewcommand{\baselinestretch}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\parskip}
+% \begin{macro}{\parindent}
+% |\parskip|は段落間に挿入される、縦方向の追加スペースです。
+% |\parindent|は段落の先頭の字下げ幅です。
+% \begin{macrocode}
+\setlength\parskip{0\p@ \@plus \p@}
+\setlength\parindent{1\Cwd}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\smallskipamount}
+% \begin{macro}{\medskipamount}
+% \begin{macro}{\bigskipamount}
+% これら3つのパラメータの値は、\LaTeX{}カーネルの中で設定されています。
+% これらはおそらく、サイズオプションの指定によって変えるべきです。
+% しかし、\LaTeX~2.09や\LaTeXe{}の以前のリリースの両方との互換性を保つために、
+% これらはまだ同じ値としています。
+% \begin{macrocode}
+%<*10pt|11pt|12pt>
+\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@}
+\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@}
+%</10pt|11pt|12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@lowpenalty}
+% \begin{macro}{\@medpenalty}
+% \begin{macro}{\@highpenalty}
+% |\nopagebreak|と|\nolinebreak|コマンドは、これらのコマンドが置かれた場所に、
+% ペナルティを起いて、分割を制御します。
+% 置かれるペナルティは、コマンドの引数によって、
+% |\@lowpenalty|, |\@medpenalty|, |\@highpenalty|のいずれかが使われます。
+% \begin{macrocode}
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+%</article|report|book>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{ページレイアウト}
+%
+% \subsubsection{縦方向のスペース}
+%
+% \begin{macro}{\headheight}
+% \begin{macro}{\headsep}
+% \begin{macro}{\topskip}
+% |\headheight|は、ヘッダが入るボックスの高さです。
+% |\headsep|は、ヘッダの下端と本文領域との間の距離です。
+% |\topskip|は、本文領域の上端と1行目のテキストのベースラインとの距離です。
+% \begin{macrocode}
+%<*10pt|11pt|12pt>
+\setlength\headheight{12\p@}
+%<*tate>
+\if@stysize
+ \ifnum\c@@paper=2 % A5
+ \setlength\headsep{6mm}
+ \else % A4, B4, B5 and other
+ \setlength\headsep{8mm}
+ \fi
+\else
+ \setlength\headsep{8mm}
+\fi
+%</tate>
+%<*yoko>
+%<!bk>\setlength\headsep{25\p@}
+%<10pt&bk>\setlength\headsep{.25in}
+%<11pt&bk>\setlength\headsep{.275in}
+%<12pt&bk>\setlength\headsep{.275in}
+%</yoko>
+\setlength\topskip{1\Cht}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\footskip}
+% |\footskip|は、本文領域の下端とフッタの下端との距離です。
+% フッタのボックスの高さを示す、|\footheight|は削除されました。
+% \begin{macrocode}
+%<tate>\setlength\footskip{14mm}
+%<*yoko>
+%<!bk>\setlength\footskip{30\p@}
+%<10pt&bk>\setlength\footskip{.35in}
+%<11pt&bk>\setlength\footskip{.38in}
+%<12pt&bk>\setlength\footskip{30\p@}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maxdepth}
+% \changes{v1.1c}{1995/12/25}{\cs{@maxdepth}の設定を除外した}
+% \TeX のプリミティブレジスタ|\maxdepth|は、|\topskip|と同じような
+% 働きをします。|\@maxdepth|レジスタは、つねに|\maxdepth|のコピーでなくては
+% いけません。これは|\begin{document}|の内部で設定されます。
+% \TeX{}と\LaTeX~2.09では、|\maxdepth|は\texttt{4pt}に固定です。
+% \LaTeXe{}では、|\maxdepth|$+$|\topskip|を基本サイズの1.5倍にしたいので、
+% |\maxdepth|を|\topskip|の半分の値で設定します。
+% \begin{macrocode}
+\if@compatibility
+ \setlength\maxdepth{4\p@}
+\else
+ \setlength\maxdepth{.5\topskip}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{本文領域}
+% |\textheight|と|\textwidth|は、本文領域の通常の高さと幅を示します。
+% 縦組でも横組でも、``高さ''は行数を、``幅''は字詰めを意味します。
+% 後ほど、これらの長さに|\topskip|の値が加えられます。
+%
+% \begin{macro}{\textwidth}
+% 基本組の字詰めです。
+%
+% 互換モードの場合:
+% \begin{macrocode}
+\if@compatibility
+% \end{macrocode}
+% \changes{v1.1a}{1997/01/25}{Add paper option with compatibility mode.}
+% \changes{v1.1h}{1997/09/03}{landscapeでの指定を追加}
+% 互換モード:|a4j|や|b5j|のクラスオプションが指定された場合の設定:
+% \begin{macrocode}
+ \if@stysize
+ \ifnum\c@@paper=2 % A5
+ \if@landscape
+%<10pt&yoko> \setlength\textwidth{47\Cwd}
+%<11pt&yoko> \setlength\textwidth{42\Cwd}
+%<12pt&yoko> \setlength\textwidth{40\Cwd}
+%<10pt&tate> \setlength\textwidth{27\Cwd}
+%<11pt&tate> \setlength\textwidth{25\Cwd}
+%<12pt&tate> \setlength\textwidth{23\Cwd}
+ \else
+%<10pt&yoko> \setlength\textwidth{28\Cwd}
+%<11pt&yoko> \setlength\textwidth{25\Cwd}
+%<12pt&yoko> \setlength\textwidth{24\Cwd}
+%<10pt&tate> \setlength\textwidth{46\Cwd}
+%<11pt&tate> \setlength\textwidth{42\Cwd}
+%<12pt&tate> \setlength\textwidth{38\Cwd}
+ \fi
+ \else\ifnum\c@@paper=3 % B4
+ \if@landscape
+%<10pt&yoko> \setlength\textwidth{75\Cwd}
+%<11pt&yoko> \setlength\textwidth{69\Cwd}
+%<12pt&yoko> \setlength\textwidth{63\Cwd}
+%<10pt&tate> \setlength\textwidth{53\Cwd}
+%<11pt&tate> \setlength\textwidth{49\Cwd}
+%<12pt&tate> \setlength\textwidth{44\Cwd}
+ \else
+%<10pt&yoko> \setlength\textwidth{60\Cwd}
+%<11pt&yoko> \setlength\textwidth{55\Cwd}
+%<12pt&yoko> \setlength\textwidth{50\Cwd}
+%<10pt&tate> \setlength\textwidth{85\Cwd}
+%<11pt&tate> \setlength\textwidth{76\Cwd}
+%<12pt&tate> \setlength\textwidth{69\Cwd}
+ \fi
+ \else\ifnum\c@@paper=4 % B5
+ \if@landscape
+%<10pt&yoko> \setlength\textwidth{60\Cwd}
+%<11pt&yoko> \setlength\textwidth{55\Cwd}
+%<12pt&yoko> \setlength\textwidth{50\Cwd}
+%<10pt&tate> \setlength\textwidth{34\Cwd}
+%<11pt&tate> \setlength\textwidth{31\Cwd}
+%<12pt&tate> \setlength\textwidth{28\Cwd}
+ \else
+%<10pt&yoko> \setlength\textwidth{37\Cwd}
+%<11pt&yoko> \setlength\textwidth{34\Cwd}
+%<12pt&yoko> \setlength\textwidth{31\Cwd}
+%<10pt&tate> \setlength\textwidth{55\Cwd}
+%<11pt&tate> \setlength\textwidth{51\Cwd}
+%<12pt&tate> \setlength\textwidth{47\Cwd}
+ \fi
+ \else % A4 ant other
+ \if@landscape
+%<10pt&yoko> \setlength\textwidth{73\Cwd}
+%<11pt&yoko> \setlength\textwidth{68\Cwd}
+%<12pt&yoko> \setlength\textwidth{61\Cwd}
+%<10pt&tate> \setlength\textwidth{41\Cwd}
+%<11pt&tate> \setlength\textwidth{38\Cwd}
+%<12pt&tate> \setlength\textwidth{35\Cwd}
+ \else
+%<10pt&yoko> \setlength\textwidth{47\Cwd}
+%<11pt&yoko> \setlength\textwidth{43\Cwd}
+%<12pt&yoko> \setlength\textwidth{40\Cwd}
+%<10pt&tate> \setlength\textwidth{67\Cwd}
+%<11pt&tate> \setlength\textwidth{61\Cwd}
+%<12pt&tate> \setlength\textwidth{57\Cwd}
+ \fi
+ \fi\fi\fi
+ \else
+% \end{macrocode}
+% 互換モード:デフォルト設定
+% \begin{macrocode}
+ \if@twocolumn
+ \setlength\textwidth{52\Cwd}
+ \else
+%<10pt&!bk&yoko> \setlength\textwidth{327\p@}
+%<11pt&!bk&yoko> \setlength\textwidth{342\p@}
+%<12pt&!bk&yoko> \setlength\textwidth{372\p@}
+%<10pt&bk&yoko> \setlength\textwidth{4.3in}
+%<11pt&bk&yoko> \setlength\textwidth{4.8in}
+%<12pt&bk&yoko> \setlength\textwidth{4.8in}
+%<10pt&tate> \setlength\textwidth{67\Cwd}
+%<11pt&tate> \setlength\textwidth{61\Cwd}
+%<12pt&tate> \setlength\textwidth{57\Cwd}
+ \fi
+ \fi
+% \end{macrocode}
+% 2eモードの場合:
+% \begin{macrocode}
+\else
+% \end{macrocode}
+% 2eモード:|a4j|や|b5j|のクラスオプションが指定された場合の設定:
+% 二段組では用紙サイズの8割、一段組では用紙サイズの7割を版面の幅として
+% 設定します。
+% \begin{macrocode}
+ \if@stysize
+ \if@twocolumn
+%<yoko> \setlength\textwidth{.8\paperwidth}
+%<tate> \setlength\textwidth{.8\paperheight}
+ \else
+%<yoko> \setlength\textwidth{.7\paperwidth}
+%<tate> \setlength\textwidth{.7\paperheight}
+ \fi
+ \else
+% \end{macrocode}
+% 2eモード:デフォルト設定
+% \begin{macrocode}
+%<tate> \setlength\@tempdima{\paperheight}
+%<yoko> \setlength\@tempdima{\paperwidth}
+ \addtolength\@tempdima{-2in}
+%<tate> \addtolength\@tempdima{-1.3in}
+%<yoko&10pt> \setlength\@tempdimb{327\p@}
+%<yoko&11pt> \setlength\@tempdimb{342\p@}
+%<yoko&12pt> \setlength\@tempdimb{372\p@}
+%<tate&10pt> \setlength\@tempdimb{67\Cwd}
+%<tate&11pt> \setlength\@tempdimb{61\Cwd}
+%<tate&12pt> \setlength\@tempdimb{57\Cwd}
+ \if@twocolumn
+ \ifdim\@tempdima>2\@tempdimb\relax
+ \setlength\textwidth{2\@tempdimb}
+ \else
+ \setlength\textwidth{\@tempdima}
+ \fi
+ \else
+ \ifdim\@tempdima>\@tempdimb\relax
+ \setlength\textwidth{\@tempdimb}
+ \else
+ \setlength\textwidth{\@tempdima}
+ \fi
+ \fi
+ \fi
+\fi
+\@settopoint\textwidth
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textheight}
+% 基本組の行数です。
+%
+% 互換モードの場合:
+% \begin{macrocode}
+\if@compatibility
+% \end{macrocode}
+% \changes{v1.1a}{1997/01/25}{Add paper option with compatibility mode.}
+% \changes{v1.1f}{1997/09/03}{landscapeでの指定を追加}
+% 互換モード:|a4j|や|b5j|のクラスオプションが指定された場合の設定:
+% \begin{macrocode}
+ \if@stysize
+ \ifnum\c@@paper=2 % A5
+ \if@landscape
+%<10pt&yoko> \setlength\textheight{17\Cvs}
+%<11pt&yoko> \setlength\textheight{17\Cvs}
+%<12pt&yoko> \setlength\textheight{16\Cvs}
+%<10pt&tate> \setlength\textheight{26\Cvs}
+%<11pt&tate> \setlength\textheight{26\Cvs}
+%<12pt&tate> \setlength\textheight{25\Cvs}
+ \else
+%<10pt&yoko> \setlength\textheight{28\Cvs}
+%<11pt&yoko> \setlength\textheight{25\Cvs}
+%<12pt&yoko> \setlength\textheight{24\Cvs}
+%<10pt&tate> \setlength\textheight{16\Cvs}
+%<11pt&tate> \setlength\textheight{16\Cvs}
+%<12pt&tate> \setlength\textheight{15\Cvs}
+ \fi
+ \else\ifnum\c@@paper=3 % B4
+ \if@landscape
+%<10pt&yoko> \setlength\textheight{38\Cvs}
+%<11pt&yoko> \setlength\textheight{36\Cvs}
+%<12pt&yoko> \setlength\textheight{34\Cvs}
+%<10pt&tate> \setlength\textheight{48\Cvs}
+%<11pt&tate> \setlength\textheight{48\Cvs}
+%<12pt&tate> \setlength\textheight{45\Cvs}
+ \else
+%<10pt&yoko> \setlength\textheight{57\Cvs}
+%<11pt&yoko> \setlength\textheight{55\Cvs}
+%<12pt&yoko> \setlength\textheight{52\Cvs}
+%<10pt&tate> \setlength\textheight{33\Cvs}
+%<11pt&tate> \setlength\textheight{33\Cvs}
+%<12pt&tate> \setlength\textheight{31\Cvs}
+ \fi
+ \else\ifnum\c@@paper=4 % B5
+ \if@landscape
+%<10pt&yoko> \setlength\textheight{22\Cvs}
+%<11pt&yoko> \setlength\textheight{21\Cvs}
+%<12pt&yoko> \setlength\textheight{20\Cvs}
+%<10pt&tate> \setlength\textheight{34\Cvs}
+%<11pt&tate> \setlength\textheight{34\Cvs}
+%<12pt&tate> \setlength\textheight{32\Cvs}
+ \else
+%<10pt&yoko> \setlength\textheight{35\Cvs}
+%<11pt&yoko> \setlength\textheight{34\Cvs}
+%<12pt&yoko> \setlength\textheight{32\Cvs}
+%<10pt&tate> \setlength\textheight{21\Cvs}
+%<11pt&tate> \setlength\textheight{21\Cvs}
+%<12pt&tate> \setlength\textheight{20\Cvs}
+ \fi
+ \else % A4 and other
+ \if@landscape
+%<10pt&yoko> \setlength\textheight{27\Cvs}
+%<11pt&yoko> \setlength\textheight{26\Cvs}
+%<12pt&yoko> \setlength\textheight{25\Cvs}
+%<10pt&tate> \setlength\textheight{41\Cvs}
+%<11pt&tate> \setlength\textheight{41\Cvs}
+%<12pt&tate> \setlength\textheight{38\Cvs}
+ \else
+%<10pt&yoko> \setlength\textheight{43\Cvs}
+%<11pt&yoko> \setlength\textheight{42\Cvs}
+%<12pt&yoko> \setlength\textheight{39\Cvs}
+%<10pt&tate> \setlength\textheight{26\Cvs}
+%<11pt&tate> \setlength\textheight{26\Cvs}
+%<12pt&tate> \setlength\textheight{22\Cvs}
+ \fi
+ \fi\fi\fi
+%<yoko> \addtolength\textheight{\topskip}
+%<bk&yoko> \addtolength\textheight{\baselineskip}
+%<tate> \addtolength\textheight{\Cht}
+%<tate> \addtolength\textheight{\Cdp}
+% \end{macrocode}
+% 互換モード:デフォルト設定
+% \begin{macrocode}
+ \else
+%<10pt&!bk&yoko> \setlength\textheight{578\p@}
+%<10pt&bk&yoko> \setlength\textheight{554\p@}
+%<11pt&yoko> \setlength\textheight{580.4\p@}
+%<12pt&yoko> \setlength\textheight{586.5\p@}
+%<10pt&tate> \setlength\textheight{26\Cvs}
+%<11pt&tate> \setlength\textheight{25\Cvs}
+%<12pt&tate> \setlength\textheight{24\Cvs}
+ \fi
+% \end{macrocode}
+% 2eモードの場合:
+% \begin{macrocode}
+\else
+% \end{macrocode}
+% 2eモード:|a4j|や|b5j|のクラスオプションが指定された場合の設定:
+% 縦組では用紙サイズの70\%(book)か78\%(ariticle,report)、
+% 横組では70\%(book)か75\%(article,report)を版面の高さに設定します。
+% \begin{macrocode}
+ \if@stysize
+%<tate&bk> \setlength\textheight{.75\paperwidth}
+%<tate&!bk> \setlength\textheight{.78\paperwidth}
+%<yoko&bk> \setlength\textheight{.70\paperheight}
+%<yoko&!bk> \setlength\textheight{.75\paperheight}
+% \end{macrocode}
+% 2eモード:デフォルト値
+% \begin{macrocode}
+ \else
+%<tate> \setlength\@tempdima{\paperwidth}
+%<yoko> \setlength\@tempdima{\paperheight}
+ \addtolength\@tempdima{-2in}
+%<yoko> \addtolength\@tempdima{-1.5in}
+ \divide\@tempdima\baselineskip
+ \@tempcnta\@tempdima
+ \setlength\textheight{\@tempcnta\baselineskip}
+ \fi
+\fi
+% \end{macrocode}
+% 最後に、|\textheight|に|\topskip|の値を加えます。
+% \begin{macrocode}
+\addtolength\textheight{\topskip}
+\@settopoint\textheight
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{マージン}
+%
+% \begin{macro}{\topmargin}
+% |\topmargin|は、``印字可能領域''---用紙の上端から1インチ内側---%
+% の上端からヘッダ部分の上端までの距離です。
+%
+% 2.09互換モードの場合:
+% \begin{macrocode}
+\if@compatibility
+%<*yoko>
+ \if@stysize
+ \setlength\topmargin{-.3in}
+ \else
+%<!bk> \setlength\topmargin{27\p@}
+%<10pt&bk> \setlength\topmargin{.75in}
+%<11pt&bk> \setlength\topmargin{.73in}
+%<12pt&bk> \setlength\topmargin{.73in}
+ \fi
+%</yoko>
+%<*tate>
+ \if@stysize
+ \ifnum\c@@paper=2 % A5
+ \setlength\topmargin{.8in}
+ \else % A4, B4, B5 and other
+ \setlength\topmargin{32mm}
+ \fi
+ \else
+ \setlength\topmargin{32mm}
+ \fi
+ \addtolength\topmargin{-1in}
+ \addtolength\topmargin{-\headheight}
+ \addtolength\topmargin{-\headsep}
+%</tate>
+% \end{macrocode}
+% 2eモードの場合:
+% \begin{macrocode}
+\else
+ \setlength\topmargin{\paperheight}
+ \addtolength\topmargin{-\headheight}
+ \addtolength\topmargin{-\headsep}
+%<tate> \addtolength\topmargin{-\textwidth}
+%<yoko> \addtolength\topmargin{-\textheight}
+ \addtolength\topmargin{-\footskip}
+% \end{macrocode}
+% \changes{v1.1e}{1997/04/08}{横組クラスでの調整量を
+% -2.4インチから-2.0インチにした。}
+% \changes{v1.1j}{1998/02/03}{互換モード時のa5pのトップマージンを0.7in増加}
+% \begin{macrocode}
+ \if@stysize
+ \ifnum\c@@paper=2 % A5
+ \addtolength\topmargin{-1.3in}
+ \else
+ \addtolength\topmargin{-2.0in}
+ \fi
+ \else
+%<yoko> \addtolength\topmargin{-2.0in}
+%<tate> \addtolength\topmargin{-2.8in}
+ \fi
+% \end{macrocode}
+% \changes{v1.1d}{1997/02/05}{\cs{tompargin}を半分にするのはアキ領域の計算後}
+% \changes{v1.1r}{1999/08/09}{\cs{if@stysize}フラグに限らず半分にする}
+% \begin{macrocode}
+ \addtolength\topmargin{-.5\topmargin}
+\fi
+\@settopoint\topmargin
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\marginparsep}
+% \begin{macro}{\marginparpush}
+% |\marginparsep|は、本文と傍注の間にあけるスペースの幅です。
+% 横組では本文の左(右)端と傍注、
+% 縦組では本文の下(上)端と傍注の間になります。
+% |\marginparpush|は、傍注と傍注との間のスペースの幅です。
+% \begin{macrocode}
+\if@twocolumn
+ \setlength\marginparsep{10\p@}
+\else
+%<tate> \setlength\marginparsep{15\p@}
+%<yoko> \setlength\marginparsep{10\p@}
+\fi
+%<tate>\setlength\marginparpush{7\p@}
+%<*yoko>
+%<10pt>\setlength\marginparpush{5\p@}
+%<11pt>\setlength\marginparpush{5\p@}
+%<12pt>\setlength\marginparpush{7\p@}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\oddsidemargin}
+% \begin{macro}{\evensidemargin}
+% \begin{macro}{\marginparwidth}
+% まず、互換モードでの長さを示します。
+%
+% 互換モード、縦組の場合:
+% \begin{macrocode}
+\if@compatibility
+%<tate> \setlength\oddsidemargin{0\p@}
+%<tate> \setlength\evensidemargin{0\p@}
+% \end{macrocode}
+% 互換モード、横組、bookクラスの場合:
+% \begin{macrocode}
+%<*yoko>
+%<*bk>
+%<10pt> \setlength\oddsidemargin {.5in}
+%<11pt> \setlength\oddsidemargin {.25in}
+%<12pt> \setlength\oddsidemargin {.25in}
+%<10pt> \setlength\evensidemargin {1.5in}
+%<11pt> \setlength\evensidemargin {1.25in}
+%<12pt> \setlength\evensidemargin {1.25in}
+%<10pt> \setlength\marginparwidth {.75in}
+%<11pt> \setlength\marginparwidth {1in}
+%<12pt> \setlength\marginparwidth {1in}
+%</bk>
+% \end{macrocode}
+% 互換モード、横組、reportとarticleクラスの場合:
+% \begin{macrocode}
+%<*!bk>
+ \if@twoside
+%<10pt> \setlength\oddsidemargin {44\p@}
+%<11pt> \setlength\oddsidemargin {36\p@}
+%<12pt> \setlength\oddsidemargin {21\p@}
+%<10pt> \setlength\evensidemargin {82\p@}
+%<11pt> \setlength\evensidemargin {74\p@}
+%<12pt> \setlength\evensidemargin {59\p@}
+%<10pt> \setlength\marginparwidth {107\p@}
+%<11pt> \setlength\marginparwidth {100\p@}
+%<12pt> \setlength\marginparwidth {85\p@}
+ \else
+%<10pt> \setlength\oddsidemargin {60\p@}
+%<11pt> \setlength\oddsidemargin {54\p@}
+%<12pt> \setlength\oddsidemargin {39.5\p@}
+%<10pt> \setlength\evensidemargin {60\p@}
+%<11pt> \setlength\evensidemargin {54\p@}
+%<12pt> \setlength\evensidemargin {39.5\p@}
+%<10pt> \setlength\marginparwidth {90\p@}
+%<11pt> \setlength\marginparwidth {83\p@}
+%<12pt> \setlength\marginparwidth {68\p@}
+ \fi
+%</!bk>
+% \end{macrocode}
+% 互換モード、横組、二段組の場合:
+% \begin{macrocode}
+ \if@twocolumn
+ \setlength\oddsidemargin {30\p@}
+ \setlength\evensidemargin {30\p@}
+ \setlength\marginparwidth {48\p@}
+ \fi
+%</yoko>
+% \end{macrocode}
+% 縦組、横組にかかわらず、スタイルオプション設定ではゼロです。
+% \changes{v1.0g}{1997/01/25}{\cs{oddsidemargin}, \cs{evensidemagin}:
+% 0pt if specified papersize at \cs{documentstyle} option.}
+% \begin{macrocode}
+ \if@stysize
+ \if@twocolumn\else
+ \setlength\oddsidemargin{0\p@}
+ \setlength\evensidemargin{0\p@}
+ \fi
+ \fi
+% \end{macrocode}
+%
+% 互換モードでない場合:
+% \begin{macrocode}
+\else
+ \setlength\@tempdima{\paperwidth}
+%<tate> \addtolength\@tempdima{-\textheight}
+%<yoko> \addtolength\@tempdima{-\textwidth}
+% \end{macrocode}
+%
+% |\oddsidemargin|を計算します。
+% \begin{macrocode}
+ \if@twoside
+%<tate> \setlength\oddsidemargin{.6\@tempdima}
+%<yoko> \setlength\oddsidemargin{.4\@tempdima}
+ \else
+ \setlength\oddsidemargin{.5\@tempdima}
+ \fi
+ \addtolength\oddsidemargin{-1in}
+% \end{macrocode}
+% \changes{v1.1p}{1999/1/6}{\cs{oddsidemargin}のポイントへの変換を後ろに}
+% |\evensidemargin|を計算します。
+% \begin{macrocode}
+ \setlength\evensidemargin{\paperwidth}
+ \addtolength\evensidemargin{-2in}
+%<tate> \addtolength\evensidemargin{-\textheight}
+%<yoko> \addtolength\evensidemargin{-\textwidth}
+ \addtolength\evensidemargin{-\oddsidemargin}
+ \@settopoint\oddsidemargin % 1999.1.6
+ \@settopoint\evensidemargin
+% \end{macrocode}
+% |\marginparwidth|を計算します。
+% ここで、|\@tempdima|の値は、\linebreak
+% |\paperwidth| $-$ |\textwidth|です。
+% \changes{v1.1d}{1995/11/24}{\break typo: \cs{marginmarwidth} to \cs{marginparwidth}}
+% \begin{macrocode}
+%<*yoko>
+ \if@twoside
+ \setlength\marginparwidth{.6\@tempdima}
+ \addtolength\marginparwidth{-.4in}
+ \else
+ \setlength\marginparwidth{.5\@tempdima}
+ \addtolength\marginparwidth{-.4in}
+ \fi
+ \ifdim \marginparwidth >2in
+ \setlength\marginparwidth{2in}
+ \fi
+%</yoko>
+% \end{macrocode}
+%
+% 縦組の場合は、少し複雑です。
+% \begin{macrocode}
+%<*tate>
+ \setlength\@tempdima{\paperheight}
+ \addtolength\@tempdima{-\textwidth}
+ \addtolength\@tempdima{-\topmargin}
+ \addtolength\@tempdima{-\headheight}
+ \addtolength\@tempdima{-\headsep}
+ \addtolength\@tempdima{-\footskip}
+ \setlength\marginparwidth{.5\@tempdima}
+%</tate>
+ \@settopoint\marginparwidth
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{脚注}
+%
+% \begin{macro}{\footnotesep}
+% |\footnotesep|は、それぞれの脚注の先頭に置かれる``支柱''の高さです。
+% このクラスでは、通常の|\footnotesize|の支柱と同じ長さですので、
+% 脚注間に余計な空白は入りません。
+% \begin{macrocode}
+%<10pt>\setlength\footnotesep{6.65\p@}
+%<11pt>\setlength\footnotesep{7.7\p@}
+%<12pt>\setlength\footnotesep{8.4\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footins}
+% |\skip\footins|は、本文の最終行と最初の脚注との間の距離です。
+% \begin{macrocode}
+%<10pt>\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
+%<11pt>\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@}
+%<12pt>\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{フロート}
+% すべてのフロートパラメータは、\LaTeX{}のカーネルでデフォルトが定義
+% されています。そのため、カウンタ以外のパラメータは|\renewcommand|で
+% 設定する必要があります。
+%
+% \subsubsection{フロートパラメータ}
+%
+% \begin{macro}{\floatsep}
+% \begin{macro}{\textfloatsep}
+% \begin{macro}{\intextsep}
+% フロートオブジェクトが本文のあるページに置かれるとき、
+% フロートとそのページにある別のオブジェクトの距離は、
+% これらのパラメータで制御されます。これらのパラメータは、一段組モードと
+% 二段組モードの段抜きでないフロートの両方で使われます。
+%
+% |\floatsep|は、ページ上部あるいは下部のフロート間の距離です。
+%
+% |\textfloatsep|は、ページ上部あるいは下部のフロートと本文との距離です。
+%
+% |\intextsep|は、本文の途中に出力されるフロートと本文との距離です。
+% \begin{macrocode}
+%<*10pt>
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+%</10pt>
+%<*11pt>
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+%</11pt>
+%<*12pt>
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@}
+%</12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatsep}
+% \begin{macro}{\dbltextfloatsep}
+% 二段組モードで、|\textwidth|の幅を持つ、段抜きのフロートオブジェクトが
+% 本文と同じページに置かれるとき、本文とフロートとの距離は、
+% |\dblfloatsep|と|\dbltextfloatsep|によって制御されます。
+%
+% |\dblfloatsep|は、ページ上部あるいは下部のフロートと本文との距離です。
+%
+% |\dbltextfloatsep|は、ページ上部あるいは下部のフロート間の距離です。
+% \begin{macrocode}
+%<*10pt>
+\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+%</10pt>
+%<*11pt>
+\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+%</11pt>
+%<*12pt>
+\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+%</12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@fptop}
+% \begin{macro}{\@fpsep}
+% \begin{macro}{\@fpbot}
+% フロートオブジェクトが、独立したページに置かれるとき、
+% このページのレイアウトは、次のパラメータで制御されます。
+% これらのパラメータは、一段組モードか、二段組モードでの一段出力の
+% フロートオブジェクトに対して使われます。
+%
+% ページ上部では、|\@fptop|の伸縮長が挿入されます。
+% ページ下部では、|\@fpbot|の伸縮長が挿入されます。
+% フロート間には|\@fpsep|が挿入されます。
+%
+% なお、そのページを空白で満たすために、|\@fptop|と|\@fpbot|の
+% 少なくともどちらか一方に、|plus ...fil|を含めてください。
+% \begin{macrocode}
+%<*10pt>
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{8\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+%</10pt>
+%<*11pt>
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{8\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+%</11pt>
+%<*12pt>
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{10\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+%</12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dblfptop}
+% \begin{macro}{\@dblfpsep}
+% \begin{macro}{\@dblfpbot}
+% 二段組モードでの二段抜きのフロートに対しては、
+% これらのパラメータが使われます。
+% \begin{macrocode}
+%<*10pt>
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{8\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+%</10pt>
+%<*11pt>
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{8\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+%</11pt>
+%<*12pt>
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{10\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+%</12pt>
+%</10pt|11pt|12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{フロートオブジェクトの上限値}
+%
+% \begin{macro}{\c@topnumber}
+% \Lcount{topnumber}は、本文ページの上部に出力できるフロートの最大数です。
+% \begin{macrocode}
+%<*article|report|book>
+\setcounter{topnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@bottomnumber}
+% \Lcount{bottomnumber}は、本文ページの下部に出力できるフロートの最大数です。
+% \begin{macrocode}
+\setcounter{bottomnumber}{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@totalnumber}
+% \Lcount{totalnumber}は、本文ページに出力できるフロートの最大数です。
+% \begin{macrocode}
+\setcounter{totalnumber}{3}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@dbltopnumber}
+% \Lcount{dbltopnumber}は、二段組時における、本文ページの上部に出力できる
+% 段抜きのフロートの最大数です。
+% \begin{macrocode}
+\setcounter{dbltopnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\topfraction}
+% これは、本文ページの上部に出力されるフロートが占有できる最大の割り合いです。
+% \begin{macrocode}
+\renewcommand{\topfraction}{.7}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bottomfraction}
+% これは、本文ページの下部に出力されるフロートが占有できる最大の割り合いです。
+% \begin{macrocode}
+\renewcommand{\bottomfraction}{.3}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textfraction}
+% これは、本文ページに最低限、入らなくてはならない本文の割り合いです。
+% \begin{macrocode}
+\renewcommand{\textfraction}{.2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\floatpagefraction}
+% これは、フロートだけのページで最低限、入らなくてはならない
+% フロートの割り合いです。
+% \begin{macrocode}
+\renewcommand{\floatpagefraction}{.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbltopfraction}
+% これは、2段組時における本文ページに、
+% 2段抜きのフロートが占めることができる最大の割り合いです。
+% \begin{macrocode}
+\renewcommand{\dbltopfraction}{.7}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatpagefraction}
+% これは、2段組時におけるフロートだけのページに最低限、
+% 入らなくてはならない2段抜きのフロートの割り合いです。
+% \begin{macrocode}
+\renewcommand{\dblfloatpagefraction}{.5}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{改ページ(日本語\TeX{}開発コミュニティ版のみ)}\label{sec:cleardoublepage}
+%
+% \begin{macro}{\pltx@cleartorightpage}
+% \begin{macro}{\pltx@cleartoleftpage}
+% \begin{macro}{\pltx@cleartooddpage}
+% \begin{macro}{\pltx@cleartoevenpage}
+% |\cleardoublepage|命令は、\LaTeX{}カーネルでは「奇数ページになるまでページを
+% 繰る命令」として定義されています。しかしp\LaTeX{}カーネルでは、アスキーの方針
+% により「横組では奇数ページになるまで、縦組では偶数ページになるまでページを
+% 繰る命令」に再定義されています。すなわち、p\LaTeX{}では縦組でも横組でも
+% 右ページになるまでページを繰ることになります。
+%
+% p\LaTeX{}標準クラスのbookは、横組も縦組も|openright|がデフォルトになっていて、
+% これは従来p\LaTeX{}カーネルで定義された|\cleardoublepage|を利用していました。
+% しかし、縦組で奇数ページ始まりの文書を作りたい場合もあるでしょうから、
+% コミュニティ版クラスでは以下の(非ユーザ向け)命令を追加します。
+% \begin{enumerate}
+% \item|\pltx@cleartorightpage|:右ページになるまでページを繰る命令
+% \item|\pltx@cleartoleftpage|:左ページになるまでページを繰る命令
+% \item|\pltx@cleartooddpage|:奇数ページになるまでページを繰る命令
+% \item|\pltx@cleartoevenpage|:偶数ページになるまでページを繰る命令
+% \end{enumerate}
+% \changes{v1.7d}{2017/02/15}{\cs{cleardoublepage}の代用となる命令群を追加}
+% \begin{macrocode}
+\def\pltx@cleartorightpage{\clearpage\if@twoside
+ \ifodd\c@page
+ \iftdir
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+ \else
+ \ifydir
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+ \fi\fi}
+\def\pltx@cleartoleftpage{\clearpage\if@twoside
+ \ifodd\c@page
+ \ifydir
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+ \else
+ \iftdir
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi
+ \fi\fi}
+% \end{macrocode}
+%
+% |\pltx@cleartooddpage|は\LaTeX{}の|\cleardoublepage|に似ていますが、
+% 上の2つに合わせるため|\thispagestyle{empty}|を追加してあります。
+% \begin{macrocode}
+\def\pltx@cleartooddpage{\clearpage\if@twoside
+ \ifodd\c@page\else
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi\fi}
+\def\pltx@cleartoevenpage{\clearpage\if@twoside
+ \ifodd\c@page
+ \hbox{}\thispagestyle{empty}\newpage
+ \if@twocolumn\hbox{}\newpage\fi
+ \fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cleardoublepage}
+% そしてreportとbookクラスの場合は、ユーザ向け命令である|\cleardoublepage|を、
+% |openright|オプションが指定されている場合は|\pltx@cleartorightpage|に、
+% |openleft|オプションが指定されている場合は|\pltx@cleartoleftpage|に、
+% それぞれ|\let|します。|openany|の場合はp\LaTeX{}カーネルの定義のままです。
+% \begin{macrocode}
+%<*!article>
+\if@openleft
+ \let\cleardoublepage\pltx@cleartoleftpage
+\else\if@openright
+ \let\cleardoublepage\pltx@cleartorightpage
+\fi\fi
+%</!article>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \section{ページスタイル}\label{sec:pagestyle}
+% p\LaTeXe{}では、つぎの6種類のページスタイルを使用できます。
+% \pstyle{empty}は\file{ltpage.dtx}で定義されています。
+%
+% \begin{tabular}{ll}
+% empty & ヘッダにもフッタにも出力しない\\
+% plain & フッタにページ番号のみを出力する\\
+% headnombre & ヘッダにページ番号のみを出力する\\
+% footnombre & フッタにページ番号のみを出力する\\
+% headings & ヘッダに見出しとページ番号を出力する\\
+% bothstyle & ヘッダに見出し、フッタにページ番号を出力する\\
+% \end{tabular}
+%
+% ページスタイル\pstyle{foo}は、|\ps@foo|コマンドとして定義されます。
+%
+% \begin{macro}{\@evenhead}
+% \begin{macro}{\@oddhead}
+% \begin{macro}{\@evenfoot}
+% \begin{macro}{\@oddfoot}
+% これらは|\ps@...|から呼び出され、ヘッダとフッタを出力するマクロです。
+%
+% \DeleteShortVerb{\|}
+% \begin{tabular}{ll}
+% \cs{@oddhead} & 奇数ページのヘッダを出力\\
+% \cs{@oddfoot} & 奇数ページのフッタを出力\\
+% \cs{@evenhead} & 偶数ページのヘッダを出力\\
+% \cs{@evenfoot} & 偶数ページのフッタを出力\\
+% \end{tabular}
+% \MakeShortVerb{\|}
+%
+% これらの内容は、横組の場合は|\textwidth|の幅を持つ|\hbox|に入れられ、
+% 縦組の場合は|\textheight|の幅を持つ|\hbox|に入れられます。
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{マークについて}
+% ヘッダに入る章番号や章見出しは、見出しコマンドで実行されるマークコマンドで
+% 決定されます。ここでは、実行されるマークコマンドの定義を行なっています。
+% これらのマークコマンドは、\TeX{}の|\mark|機能を用いて、
+% `left'と`right'の2種類のマークを生成するように定義しています。
+%
+% \begin{flushleft}
+% |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: 両方のマークに追加します。
+%
+% |\markright{|\meta{RIGHT}|}|: `右'マークに追加します。
+%
+% |\leftmark|: |\@oddhead|, |\@oddfoot|, |\@evenhead|, |\@evenfoot|マクロで
+% 使われ、現在の``左''マークを出力します。
+% |\leftmark|は\TeX{}の|\botmark|コマンドのような働きをします。
+% 初期値は空でなくてはいけません。
+%
+% |\rightmark|: |\@oddhead|, |\@oddfoot|, |\@evenhead|, |\@evenfoot|マクロで
+% 使われ、現在の``右''マークを出力します。
+% |\rightmark|は\TeX{}の|\firstmark|コマンドのような働きをします。
+% 初期値は空でなくてはいけません。
+% \end{flushleft}
+%
+% マークコマンドの動作は、左マークの`範囲内の'右マークのために
+% 合理的になっています。たとえば、左マークは|\chapter|コマンドによって
+% 変更されます。そして右マークは|\section|コマンドによって変更されます。
+% しかし、同一ページに複数の|\markboth|コマンドが現れたとき、
+% おかしな結果となることがあります。
+%
+% |\tableofcontents|のようなコマンドは、|\@mkboth|コマンドを用いて、
+% あるページスタイルの中でマークを設定しなくてはなりません。
+% |\@mkboth|は、|\ps@...|コマンドによって、|\markboth|(ヘッダを設定する)か、
+% |\@gobbletwo|(何もしない)に|\let|されます。
+%
+% \changes{v1.0a}{1995/08/30}{柱の書体がノンブルに影響するバグの修正}
+%
+% \subsection{plainページスタイル}
+%
+% \begin{macro}{\ps@plain}
+% \pstyle{jpl@in}に|\let|するために、ここで定義をします。
+% \begin{macrocode}
+\def\ps@plain{\let\@mkboth\@gobbletwo
+ \let\ps@jpl@in\ps@plain
+ \let\@oddhead\@empty
+ \def\@oddfoot{\reset@font\hfil\thepage\hfil}%
+ \let\@evenhead\@empty
+ \let\@evenfoot\@oddfoot}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{jpl@inページスタイル}
+%
+% \begin{macro}{\ps@jpl@in}
+% \changes{v1.0d}{1996/02/29}{\pstyle{jpl@in}の初期値を定義}
+%
+% \pstyle{jpl@in}スタイルは、クラスファイル内部で使用するものです。
+% \LaTeX{}では、bookクラスを\pstyle{headings}としています。
+% しかし、\cs{tableofcontents}コマンドの内部では\pstyle{plain}として
+% 設定されるため、一つの文書でのページ番号の位置が上下に出力される
+% ことになります。
+%
+% そこで、p\LaTeXe{}では、\cs{tableofcontents}や\cs{theindex}のページスタイル
+% を\pstyle{jpl@in}にし、実際に出力される形式は、ほかのページスタイル
+% で|\let|をしています。したがって、\pstyle{headings}のとき、目次ページの
+% ページ番号はヘッダ位置に出力され、\pstyle{plain}のときには、フッタ位置に
+% 出力されます。
+%
+% ここで、定義をしているのは、その初期値です。
+% \begin{macrocode}
+\let\ps@jpl@in\ps@plain
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{headnombreページスタイル}
+%
+% \begin{macro}{\ps@headnombre}
+% \pstyle{headnombre}スタイルは、ヘッダにページ番号のみを出力します。
+% \begin{macrocode}
+\def\ps@headnombre{\let\@mkboth\@gobbletwo
+ \let\ps@jpl@in\ps@headnombre
+%<yoko> \def\@evenhead{\thepage\hfil}%
+%<yoko> \def\@oddhead{\hfil\thepage}%
+%<tate> \def\@evenhead{\hfil\thepage}%
+%<tate> \def\@oddhead{\thepage\hfil}%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{footnombreページスタイル}
+%
+% \begin{macro}{\ps@footnombre}
+% \pstyle{footnombre}スタイルは、フッタにページ番号のみを出力します。
+% \begin{macrocode}
+\def\ps@footnombre{\let\@mkboth\@gobbletwo
+ \let\ps@jpl@in\ps@footnombre
+%<yoko> \def\@evenfoot{\thepage\hfil}%
+%<yoko> \def\@oddfoot{\hfil\thepage}%
+%<tate> \def\@evenfoot{\hfil\thepage}%
+%<tate> \def\@oddfoot{\thepage\hfil}%
+ \let\@oddhead\@empty\let\@evenhead\@empty}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{headingsスタイル}
+% \pstyle{headings}スタイルは、ヘッダに見出しとページ番号を出力します。
+%
+% \begin{macro}{\ps@headings}
+% このスタイルは、両面印刷と片面印刷とで形式が異なります。
+% \begin{macrocode}
+\if@twoside
+% \end{macrocode}
+% 横組の場合は、奇数ページが右に、偶数ページが左にきます。
+% 縦組の場合は、奇数ページが左に、偶数ページが右にきます。
+% \begin{macrocode}
+ \def\ps@headings{\let\ps@jpl@in\ps@headnombre
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+%<yoko> \def\@evenhead{\thepage\hfil\leftmark}%
+%<yoko> \def\@oddhead{{\rightmark}\hfil\thepage}%
+%<tate> \def\@evenhead{{\leftmark}\hfil\thepage}%
+%<tate> \def\@oddhead{\thepage\hfil\rightmark}%
+ \let\@mkboth\markboth
+%<*article>
+ \def\sectionmark##1{\markboth{%
+ \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
+ ##1}{}}%
+ \def\subsectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\@ne \thesubsection.\hskip1zw\fi
+ ##1}}%
+%</article>
+%<*report|book>
+ \def\chaptermark##1{\markboth{%
+ \ifnum \c@secnumdepth >\m@ne
+%<book> \if@mainmatter
+ \@chapapp\thechapter\@chappos\hskip1zw
+%<book> \fi
+ \fi
+ ##1}{}}%
+ \def\sectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
+ ##1}}%
+%</report|book>
+ }
+% \end{macrocode}
+% 片面印刷の場合:
+% \changes{v1.1g}{1997/08/25}{片面印刷のとき、sectionレベルが出力されない
+% のを修正}
+% \begin{macrocode}
+\else % if not twoside
+ \def\ps@headings{\let\ps@jpl@in\ps@headnombre
+ \let\@oddfoot\@empty
+%<yoko> \def\@oddhead{{\rightmark}\hfil\thepage}%
+%<tate> \def\@oddhead{\thepage\hfil\rightmark}%
+ \let\@mkboth\markboth
+%<*article>
+ \def\sectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\m@ne \thesection.\hskip1zw\fi
+ ##1}}%
+%</article>
+%<*report|book>
+\def\chaptermark##1{\markright{%
+ \ifnum \c@secnumdepth >\m@ne
+%<book> \if@mainmatter
+ \@chapapp\thechapter\@chappos\hskip1zw
+%<book> \fi
+ \fi
+ ##1}}%
+%</report|book>
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{bothstyleスタイル}
+%
+% \begin{macro}{\ps@bothstyle}
+% \pstyle{bothstyle}スタイルは、
+% ヘッダに見出しを、フッタにページ番号を出力します。
+%
+% このスタイルは、両面印刷と片面印刷とで形式が異なります。
+% \changes{v1.0d}{1995/08/23}{横組のevenfootが中央揃えになっていたのを修正}
+% \changes{v1.0d}{1996/03/05}{横組で偶数ページと奇数ページの設定が逆なのを修正}
+% \begin{macrocode}
+\if@twoside
+ \def\ps@bothstyle{\let\ps@jpl@in\ps@footnombre
+%<*yoko>
+ \def\@evenhead{\leftmark\hfil}% right page
+ \def\@evenfoot{\thepage\hfil}% right page
+ \def\@oddhead{\hfil\rightmark}% left page
+ \def\@oddfoot{\hfil\thepage}% left page
+%</yoko>
+%<*tate>
+ \def\@evenhead{\hfil\leftmark}% right page
+ \def\@evenfoot{\hfil\thepage}% right page
+ \def\@oddhead{\rightmark\hfil}% left page
+ \def\@oddfoot{\thepage\hfil}% left page
+%</tate>
+ \let\@mkboth\markboth
+%<*article>
+ \def\sectionmark##1{\markboth{%
+ \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
+ ##1}{}}%
+ \def\subsectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\@ne \thesubsection.\hskip1zw\fi
+ ##1}}%
+%</article>
+%<*report|book>
+\def\chaptermark##1{\markboth{%
+ \ifnum \c@secnumdepth >\m@ne
+%<book> \if@mainmatter
+ \@chapapp\thechapter\@chappos\hskip1zw
+%<book> \fi
+ \fi
+ ##1}{}}%
+ \def\sectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
+ ##1}}%
+%</report|book>
+ }
+% \end{macrocode}
+% \changes{v1.1g}{1997/08/25}{片面印刷のとき、sectionレベルが出力されない
+% のを修正}
+% \changes{v1.1i}{1997/12/12}{report, bookクラスで片面印刷時に、
+% bothstyleスタイルにすると、コンパイルエラーになるのを修正}
+% \begin{macrocode}
+\else % if one column
+ \def\ps@bothstyle{\let\ps@jpl@in\ps@footnombre
+%<yoko> \def\@oddhead{\hfil\rightmark}%
+%<yoko> \def\@oddfoot{\hfil\thepage}%
+%<tate> \def\@oddhead{\rightmark\hfil}%
+%<tate> \def\@oddfoot{\thepage\hfil}%
+ \let\@mkboth\markboth
+%<*article>
+ \def\sectionmark##1{\markright{%
+ \ifnum \c@secnumdepth >\m@ne \thesection.\hskip1zw\fi
+ ##1}}%
+%</article>
+%<*report|book>
+ \def\chaptermark##1{\markright{%
+ \ifnum \c@secnumdepth >\m@ne
+%<book> \if@mainmatter
+ \@chapapp\thechapter\@chappos\hskip1zw
+%<book> \fi
+ \fi
+ ##1}}%
+%</report|book>
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{myheadingスタイル}
+%
+% \begin{macro}{\ps@myheadings}
+% \changes{v1.0d}{1995/08/23}{横組モードの左右が逆であったのを修正}
+% \pstyle{myheadings}ページスタイルは簡潔に定義されています。
+% ユーザがページスタイルを設計するときのヒナ型として使用することができます。
+% \begin{macrocode}
+\def\ps@myheadings{\let\ps@jpl@in\ps@plain%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+%<yoko> \def\@evenhead{\thepage\hfil\leftmark}%
+%<yoko> \def\@oddhead{{\rightmark}\hfil\thepage}%
+%<tate> \def\@evenhead{{\leftmark}\hfil\thepage}%
+%<tate> \def\@oddhead{\thepage\hfil\rightmark}%
+ \let\@mkboth\@gobbletwo
+%<!article> \let\chaptermark\@gobble
+ \let\sectionmark\@gobble
+%<article> \let\subsectionmark\@gobble
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{文書コマンド}
+%
+% \subsection{表題}
+%
+% \begin{macro}{\title}
+% \begin{macro}{\author}
+% \begin{macro}{\date}
+% 文書のタイトル、著者、日付の情報のための、
+% これらの3つのコマンドは\file{ltsect.dtx}で提供されています。
+% これらのコマンドは次のように定義されています。
+% \begin{macrocode}
+%\newcommand*{\title}[1]{\gdef\@title{#1}}
+%\newcommand*{\author}[1]{\gdef\@author{#1}}
+%\newcommand*{\date}[1]{\gdef\@date{#1}}
+% \end{macrocode}
+% |\date|マクロのデフォルトは、今日の日付です。
+% \begin{macrocode}
+%\date{\today}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{titlepage}
+% 通常の環境では、ページの最初と最後を除き、タイトルページ環境は何もしません。
+% また、ページ番号の出力を抑制します。レポートスタイルでは、
+% ページ番号を1にリセットし、そして最後で1に戻します。
+% 互換モードでは、ページ番号はゼロに設定されますが、
+% 右起こしページ用のページパラメータでは誤った結果になります。
+% 二段組スタイルでも一段組のページが作られます。
+%
+% \noindent\emph{日本語\TeX{}開発コミュニティによる変更}:
+% 上にあるのはアスキー版の説明です。改めてアスキー版の挙動を整理すると、
+% 以下のようになります。
+% \begin{enumerate}
+% \item アスキー版では、タイトルページの番号を必ず1にリセットしていましたが、
+% これは正しくありません。これは、タイトルページが奇数ページ目か偶数ページ目
+% かにかかわらず、レイアウトだけ奇数ページ用が適用されてしまうからです。
+% さらに、タイトルの次のページも偶数のページ番号を持ってしまうため、両面印刷
+% で奇数ページと偶数ページが交互に出なくなるという問題もあります。
+% \item アスキー版bookクラスは、タイトルページを必ず|\cleardoublepage|で始めて
+% いました。p\LaTeX{}カーネルでの|\cleardoublepage|の定義から、縦組の既定では
+% タイトルが偶数ページ目に出ることになります。これ自体が正しくないと断定する
+% ことはできませんが、タイトルのページ番号を1にリセットすることと合わさって、
+% 偶数ページに送ったタイトルに奇数ページ用レイアウトが適用されてしまうという
+% 結果は正しくありません。
+% \end{enumerate}
+% そこで、コミュニティ版ではタイトルのレイアウトが必ず奇数ページ用になるという
+% 挙動を支持し、bookクラスではタイトルページを奇数ページ目に送ることにしました。
+% これでタイトルページが表紙らしく見えるようになります。また、reportクラスの
+% ようなタイトルが成り行きに従って出る場合には
+% \begin{itemize}
+% \item 奇数ページ目に出る場合、ページ番号を1(奇数)にリセット
+% \item 偶数ページ目に出る場合、ページ番号を0(偶数)にリセット
+% \end{itemize}
+% としました。
+%
+% 一つめの例を考えます。
+%\begin{verbatim}
+% \documentclass{tbook}
+% \title{タイトル}\author{著者}
+% \begin{document}
+% \maketitle
+% \chapter{チャプター}
+% \end{document}
+%\end{verbatim}
+% アスキー版tbookクラスでの結果は
+%\begin{verbatim}
+% 1ページ目:空白(ページ番号1は非表示)
+% 2ページ目:タイトル(奇数レイアウト、ページ番号1は非表示)
+% 3ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% ですが、仮に最初の空白ページさえなければ
+%\begin{verbatim}
+% 1ページ目:タイトルすなわち表紙(奇数レイアウト、ページ番号1は非表示)
+% 2ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% とみなせるため、コミュニティ版では空白ページを発生させないようにしました。
+%
+% 二つめの例を考えます。
+%\begin{verbatim}
+% \documentclass{tbook}
+% \title{タイトル}\author{著者}
+% \begin{document}
+% テスト文章
+% \maketitle
+% \chapter{チャプター}
+% \end{document}
+%\end{verbatim}
+% アスキー版tbookクラスでの結果は
+%\begin{verbatim}
+% 1ページ目:テスト文章(奇数レイアウト、ページ番号1)
+% 2ページ目:タイトル(奇数レイアウト、ページ番号1は非表示)
+% 3ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% ですが、これでは奇数と偶数のページ番号が交互になっていないので正しく
+% ありません。そこで、コミュニティ版では
+%\begin{verbatim}
+% 1ページ目:テスト文章(奇数レイアウト、ページ番号1)
+% 2ページ目:空白ページ(ページ番号2は非表示)
+% 3ページ目:タイトル(奇数レイアウト、ページ番号1は非表示)
+% 4ページ目:チャプター(偶数レイアウト、ページ番号2)
+%\end{verbatim}
+% と直しました。
+%
+% なお、p\LaTeX~2.09互換モードはアスキー版のまま、すなわち「ページ番号をゼロに
+% 設定」としてあります。これは、横組の右起こしの挙動としては誤りですが、縦組の
+% 右起こしの挙動としては一応正しくなっているといえます。
+%
+% 最初に互換モードの定義を作ります。
+% \begin{macrocode}
+\if@compatibility
+\newenvironment{titlepage}
+ {%
+%<book> \cleardoublepage
+ \if@twocolumn\@restonecoltrue\onecolumn
+ \else\@restonecolfalse\newpage\fi
+ \thispagestyle{empty}%
+ \setcounter{page}\z@
+ }%
+ {\if@restonecol\twocolumn\else\newpage\fi
+ }
+% \end{macrocode}
+%
+% そして、\LaTeX{}ネイティブのための定義です。
+% \changes{v1.7d}{2017/02/15}{bookクラスでtitlepageを必ず奇数ページ
+% に送るように変更}
+% \changes{v1.7d}{2017/02/15}{titlepageのページ番号を奇数ならば1に、
+% 偶数ならば0にリセットするように変更}
+% \begin{macrocode}
+\else
+\newenvironment{titlepage}
+ {%
+%<book> \pltx@cleartooddpage %% 2017/02/15
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \ifodd\c@page\setcounter{page}\@ne\else\setcounter{page}\z@\fi %% 2017/02/15
+ }%
+ {\if@restonecol\twocolumn \else \newpage \fi
+% \end{macrocode}
+% 両面モードでなければ、タイトルページの直後のページのページ番号も1に
+% します。
+% \begin{macrocode}
+ \if@twoside\else
+ \setcounter{page}\@ne
+ \fi
+ }
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\maketitle}
+% このコマンドは、表題を作成し、出力します。
+% 表題ページを独立させるかどうかによって定義が異なります。
+% reportとbookクラスのデフォルトは独立した表題です。
+% articleクラスはオプションで独立させることができます。
+%
+% \begin{macro}{\p@thanks}
+% 縦組のときは、|\thanks|コマンドを|\p@thanks|に|\let|します。
+% このコマンドは|\footnotetext|を使わず、直接、文字を|\@thanks|に格納
+% していきます。
+%
+% 著者名の脇に表示される合印は直立した数字、注釈側は横に寝た数字となっていまし
+% たが、不自然なので|\hbox{\yoko ...}|を追加し、両方とも直立するようにしました。
+% \changes{v1.7d}{2017/02/15}{縦組クラスの所属表示の番号を直立にした}
+% \begin{macrocode}
+\def\p@thanks#1{\footnotemark
+ \protected@xdef\@thanks{\@thanks
+ \protect{\noindent\hbox{\yoko$\m@th^\thefootnote$}#1\protect\par}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\if@titlepage
+ \newcommand{\maketitle}{\begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+%<tate> \let\thanks\p@thanks
+ \let\footnote\thanks
+% \end{macrocode}
+% \changes{v1.1d}{1997/02/12}{縦組クラスの表紙を縦書きにするようにした}
+% \begin{macrocode}
+%<tate> \vbox to\textheight\bgroup\tate\hsize\textwidth
+ \null\vfil
+ \vskip 60\p@
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip 3em%
+ {\Large
+ \lineskip .75em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1.5em%
+ {\large \@date \par}% % Set date in \large size.
+ \end{center}\par
+%<tate> \vfil{\centering\@thanks}\vfil\null
+%<tate> \egroup
+%<yoko> \@thanks\vfil\null
+ \end{titlepage}%
+% \end{macrocode}
+% \Lcount{footnote}カウンタをリセットし、|\thanks|と|\maketitle|コマンドを
+% 無効にし、いくつかの内部マクロを空にして格納領域を節約します。
+% \begin{macrocode}
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\p@thanks\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+% \end{macrocode}
+% タイトルが組版されたら、|\title|コマンドなどの宣言を無効にできます。
+% |\and|の定義は、|\author|の引数でのみ使用しますので、破棄します。
+% \begin{macrocode}
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ }%
+\else
+ \newcommand{\maketitle}{\par
+ \begingroup
+ \renewcommand{\thefootnote}{\fnsymbol{footnote}}%
+ \def\@makefnmark{\hbox{\ifydir $\m@th^{\@thefnmark}$
+ \else\hbox{\yoko$\m@th^{\@thefnmark}$}\fi}}%
+%<*tate>
+ \long\def\@makefntext##1{\parindent 1zw\noindent
+ \hb@xt@ 2zw{\hss\@makefnmark}##1}%
+%</tate>
+%<*yoko>
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hb@xt@1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
+%</yoko>
+ \if@twocolumn
+ \ifnum \col@number=\@ne \@maketitle
+ \else \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle
+ \fi
+ \thispagestyle{jpl@in}\@thanks
+% \end{macrocode}
+% ここでグループを閉じ、\Lcount{footnote}カウンタをリセットし、
+% |\thanks|, |\maketitle|, |\@maketitle|を無効にし、
+% いくつかの内部マクロを空にして格納領域を節約します。
+% \changes{v1.7}{2016/11/12}{ドキュメントに反して\cs{@maketitle}が
+% 空になっていなかったのを修正}
+% \begin{macrocode}
+ \endgroup
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@maketitle\relax
+ \global\let\p@thanks\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@maketitle}
+% 独立した表題ページを作らない場合の、表題の出力形式です。
+% \begin{macrocode}
+ \def\@maketitle{%
+ \newpage\null
+ \vskip 2em%
+ \begin{center}%
+%<yoko> \let\footnote\thanks
+%<tate> \let\footnote\p@thanks
+ {\LARGE \@title \par}%
+ \vskip 1.5em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large \@date}%
+ \end{center}%
+ \par\vskip 1.5em}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{概要}
+%
+% \begin{environment}{abstract}
+% 要約文のための環境です。bookクラスでは使えません。
+% reportスタイルと、|titlepage|オプションを指定したarticleスタイルでは、
+% 独立したページに出力されます。
+% \begin{macrocode}
+%<*article|report>
+\if@titlepage
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \@beginparpenalty\@lowpenalty
+ \begin{center}%
+ {\bfseries\abstractname}%
+ \@endparpenalty\@M
+ \end{center}}%
+ {\par\vfil\null\endtitlepage}
+\else
+ \newenvironment{abstract}{%
+ \if@twocolumn
+ \section*{\abstractname}%
+ \else
+ \small
+ \begin{center}%
+ {\bfseries\abstractname\vspace{-.5em}\vspace{\z@}}%
+ \end{center}%
+ \quotation
+ \fi}{\if@twocolumn\else\endquotation\fi}
+\fi
+%</article|report>
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \subsection{章見出し}
+%
+% \subsubsection{マークコマンド}
+%
+% \begin{macro}{\chaptermark}
+% \begin{macro}{\sectionmark}
+% \begin{macro}{\subsectionmark}
+% \begin{macro}{\subsubsectionmark}
+% \begin{macro}{\paragraphmark}
+% \begin{macro}{\subparagraphmark}
+% |\...mark|コマンドを初期化します。これらのコマンドはページスタイルの
+% 定義で使われます(第\ref{sec:pagestyle}節参照)。
+% これらのたいていのコマンドは\file{ltsect.dtx}ですでに定義されています。
+% \begin{macrocode}
+%<!article>\newcommand*{\chaptermark}[1]{}
+%\newcommand*{\sectionmark}[1]{}
+%\newcommand*{\subsectionmark}[1]{}
+%\newcommand*{\subsubsectionmark}[1]{}
+%\newcommand*{\paragraphmark}[1]{}
+%\newcommand*{\subparagraphmark}[1]{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{カウンタの定義}
+%
+% \begin{macro}{\c@secnumdepth}
+% \Lcount{secnumdepth}には、番号を付ける、見出しコマンドのレベルを設定します。
+% \begin{macrocode}
+%<article>\setcounter{secnumdepth}{3}
+%<!article>\setcounter{secnumdepth}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@chapter}
+% \begin{macro}{\c@section}
+% \begin{macro}{\c@subsection}
+% \begin{macro}{\c@subsubsection}
+% \begin{macro}{\c@paragraph}
+% \begin{macro}{\c@subparagraph}
+% これらのカウンタは見出し番号に使われます。
+% 最初の引数は、二番目の引数が増加するたびにリセットされます。
+% 二番目のカウンタはすでに定義されているものでなくてはいけません。
+% \begin{macrocode}
+\newcounter{part}
+%<*book|report>
+\newcounter{chapter}
+\newcounter{section}[chapter]
+%</book|report>
+%<article>\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\newcounter{subparagraph}[paragraph]
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\thepart}
+% \begin{macro}{\thechapter}
+% \begin{macro}{\thesection}
+% \begin{macro}{\thesubsection}
+% \begin{macro}{\thesubsubsection}
+% \begin{macro}{\theparagraph}
+% \begin{macro}{\thesubparagraph}
+% |\theCTR|が実際に出力される形式の定義です。
+%
+% |\arabic{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
+% 算用数字で出力します。
+%
+% |\roman{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
+% 小文字のローマ数字で出力します。
+%
+% |\Roman{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
+% 大文字のローマ数字で出力します。
+%
+% |\alph{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
+% $1=$~a, $2=$~b のようにして出力します。
+%
+% |\Alph{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
+% $1=$~A, $2=$~B のようにして出力します。
+%
+% |\Kanji{|\Lcount{COUNTER}|}|は、\Lcount{COUNTER}の値を
+% 漢数字で出力します。
+%
+% |\rensuji{|\meta{obj}|}|は、\meta{obj}を横に並べて出力します。
+% したがって、横組のときには、何も影響しません。
+%
+% \begin{macrocode}
+%<*tate>
+\renewcommand{\thepart}{\rensuji{\@Roman\c@part}}
+%<article>\renewcommand{\thesection}{\rensuji{\@arabic\c@section}}
+%<*report|book>
+\renewcommand{\thechapter}{\rensuji{\@arabic\c@chapter}}
+\renewcommand{\thesection}{\thechapter{}・\rensuji{\@arabic\c@section}}
+%</report|book>
+\renewcommand{\thesubsection}{\thesection{}・\rensuji{\@arabic\c@subsection}}
+\renewcommand{\thesubsubsection}{%
+ \thesubsection{}・\rensuji{\@arabic\c@subsubsection}}
+\renewcommand{\theparagraph}{%
+ \thesubsubsection{}・\rensuji{\@arabic\c@paragraph}}
+\renewcommand{\thesubparagraph}{%
+ \theparagraph{}・\rensuji{\@arabic\c@subparagraph}}
+%</tate>
+%<*yoko>
+\renewcommand{\thepart}{\@Roman\c@part}
+%<article>\renewcommand{\thesection}{\@arabic\c@section}
+%<*report|book>
+\renewcommand{\thechapter}{\@arabic\c@chapter}
+\renewcommand{\thesection}{\thechapter.\@arabic\c@section}
+%</report|book>
+\renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection}
+\renewcommand{\thesubsubsection}{%
+ \thesubsection.\@arabic\c@subsubsection}
+\renewcommand{\theparagraph}{%
+ \thesubsubsection.\@arabic\c@paragraph}
+\renewcommand{\thesubparagraph}{%
+ \theparagraph.\@arabic\c@subparagraph}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@chapapp}
+% \begin{macro}{\@chappos}
+% |\@chapapp|の初期値は`|\prechaptername|'です。
+%
+% |\@chappos|の初期値は`|\postchaptername|'です。
+%
+% |\appendix|コマンドは|\@chapapp|を`|\appendixname|'に、
+% |\@chappos|を空に再定義します。
+% \begin{macrocode}
+%<*report|book>
+\newcommand{\@chapapp}{\prechaptername}
+\newcommand{\@chappos}{\postchaptername}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{前付け、本文、後付け}
+%
+% \begin{macro}{\frontmatter}
+% \begin{macro}{\mainmatter}
+% \begin{macro}{\backmatter}
+% \changes{v1.1}{1997/01/15}{\cs{frontmatter}, \cs{mainmatter}, \cs{backmatter}
+% を\LaTeX{}の定義に修正}
+% 一冊の本は論理的に3つに分割されます。
+% 表題や目次や「はじめに」あるいは権利などの前付け、
+% そして本文、それから用語集や索引や奥付けなどの後付けです。
+%
+% \emph{日本語\TeX{}開発コミュニティによる補足}:
+% \LaTeX{}のclasses.dtxは、1996/05/26 (v1.3r)と1998/05/05 (v1.3y)の
+% 計2回、|\frontmatter|と|\mainmatter|の定義を修正しています。一回目は
+% これらの命令を|openany|オプションに応じて切り替え、二回目はそれを
+% 元に戻しています。アスキーによるjclasses.dtxは、1997/01/15に
+% 一回目の修正に追随しましたが、二回目の修正には追随していません。
+% コミュニティ版では、一旦はアスキーによる仕様を維持しようと考え
+% ました(2016/11/22)が、以下の理由により二回目の修正にも追随する
+% ことにしました(2017/03/05)。
+%
+% アスキー版での|\frontmatter|と|\mainmatter|の改ページ挙動は
+%\begin{quote}
+% |openright|なら|\cleardoublepage|、|openany|なら|\clearpage|を実行
+%\end{quote}
+% というものでした。しかし、|\frontmatter|及び|\mainmatter|はノンブルを
+% 1にリセットしますから、改ページの結果が偶数ページ目になる場合
+% \footnote{縦tbookのデフォルト(openright)が該当するほか、横jbookと
+% 縦tbookのopenanyのときには成り行き次第で該当する可能性があります。}に
+% ノンブルが偶奇逆転してしまいました。このままでは|openany|の場合に両面
+% 印刷がうまくいかないため、新しいコミュニティ版では
+%\begin{quote}
+% 必ず|\pltx@cleartooddpage|を実行
+%\end{quote}
+% としました。これは両面印刷(twoside)の場合は奇数ページに送り、
+% 片面印刷(oneside)の場合は単に改ページとなります。(参考:latex/2754)
+% \changes{v1.7b}{2016/11/22}{補足ドキュメントを追加}
+% \changes{v1.7e}{2017/03/05}{\cs{frontmatter}と\cs{mainmatter}を
+% 奇数ページに送るように変更}
+% \begin{macrocode}
+%<*book>
+\newcommand{\frontmatter}{%
+ \pltx@cleartooddpage
+ \@mainmatterfalse\pagenumbering{roman}}
+\newcommand{\mainmatter}{%
+ \pltx@cleartooddpage
+ \@mainmattertrue\pagenumbering{arabic}}
+\newcommand{\backmatter}{%
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
+ \@mainmatterfalse}
+%</book>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{ボックスの組み立て}
+% クラスファイル定義の、この部分では、|\@startsection|と|\secdef|の
+% 二つの内部マクロを使います。これらの構文を次に示します。
+%
+% |\@startsection|マクロは6つの引数と1つのオプション引数`*'を取ります。
+%
+% |\@startsection|\meta{name}\meta{level}\meta{indent}^^A
+% \meta{beforeskip}\meta{afterskip}\meta{style}
+% optional *\\
+% \null\hphantom{\bslash @startsection}^^A
+% |[|\meta{altheading}|]|\meta{heading}
+%
+% それぞれの引数の意味は、次のとおりです。
+%
+% \begin{description}
+% \item[\meta{name}] レベルコマンドの名前です(例:section)。
+% \item[\meta{level}] 見出しの深さを示す数値です(chapter=1, section=2,
+% $\ldots$)。``\meta{level}$<=$カウンタ\Lcount{secnumdepth}の値''のとき、
+% 見出し番号が出力されます。
+% \item[\meta{indent}] 見出しに対する、左マージンからのインデント量です。
+% \item[\meta{beforeskip}] 見出しの上に置かれる空白の絶対値です。
+% 負の場合は、見出しに続くテキストのインデントを抑制します。
+% \item[\meta{afterskip}] 正のとき、見出しの後の垂直方向のスペースとなります。
+% 負の場合は、見出しの後の水平方向のスペースとなります。
+% \item[\meta{style}] 見出しのスタイルを設定するコマンドです。
+% \item[\meta{$*$}] 見出し番号を付けないとき、対応するカウンタは増加します。
+% \item[\meta{heading}] 新しい見出しの文字列です。
+% \end{description}
+%
+% 見出しコマンドは通常、|\@startsection|と6つの引数で定義されています。
+%
+% |\secdef|マクロは、
+% 見出しコマンドを|\@startsection|を用いないで定義するときに使います。
+% このマクロは、2つの引数を持ちます。
+%
+% |\secdef|\meta{unstarcmds}\meta{starcmds}
+%
+% \begin{description}
+% \item[\meta{unstarcmds}] 見出しコマンドの普通の形式で使われます。
+% \item[\meta{starcmds}] $*$形式の見出しコマンドで使われます。
+% \end{description}
+%
+% |\secdef|は次のようにして使うことができます。
+%\begin{verbatim}
+% \def\chapter {... \secdef \CMDA \CMDB }
+% \def\CMDA [#1]#2{....} % \chapter[...]{...} の定義
+% \def\CMDB #1{....} % \chapter*{...} の定義
+%\end{verbatim}
+%
+%
+% \subsubsection{partレベル}
+%
+% \begin{macro}{\part}
+% このコマンドは、新しいパート(部)をはじめます。
+%
+% articleクラスの場合は、簡単です。
+%
+% 新しい段落を開始し、小さな空白を入れ、段落後のインデントを行い、
+% |\secdef|で作成します。(アスキーによる元のドキュメントには
+% 「段落後のインデントをしないようにし」と書かれていましたが、
+% 実際のコードでは段落後のインデントを行っていました。そこで
+% 日本語\TeX{}開発コミュニティは、ドキュメントをコードに合わせて
+% 「段落後のインデントを行い」へと修正しました。)
+% \changes{v1.7a}{2016/11/16}{Check \texttt{@noskipsec} switch and
+% possibly force horizontal mode (sync with classes.dtx v1.4a)}
+% \begin{macrocode}
+%<*article>
+\newcommand{\part}{%
+ \if@noskipsec \leavevmode \fi
+ \par\addvspace{4ex}%
+ \@afterindenttrue
+ \secdef\@part\@spart}
+%</article>
+% \end{macrocode}
+% reportとbookスタイルの場合は、少し複雑です。
+%
+% まず、右ページからはじまるように改ページをします。
+% そして、部扉のページスタイルを\pstyle{empty}にします。
+% 2段組の場合でも、1段組で作成しますが、後ほど2段組に戻すために、
+% |\@restonecol|スイッチを使います。
+% \changes{v1.1}{1997/01/15}{\cs{part}を\LaTeX\ の定義に修正}
+% \begin{macrocode}
+%<*report|book>
+\newcommand{\part}{%
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
+ \thispagestyle{empty}%
+ \if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi
+ \null\vfil
+ \secdef\@part\@spart}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@part}
+% このマクロが実際に部レベルの見出しを作成します。
+% このマクロも文書クラスによって定義が異なります。
+%
+% articleクラスの場合は、\Lcount{secnumdepth}が$-1$よりも大きいとき、
+% 見出し番号を付けます。このカウンタが$-1$以下の場合には付けません。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+%<*article>
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{%
+ \prepartname\thepart\postpartname\hspace{1zw}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\parindent\z@\raggedright
+ \interlinepenalty\@M\normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \Large\bfseries\prepartname\thepart\postpartname
+ \par\nobreak
+ \fi
+ \huge\bfseries#2\par}%
+ \nobreak\vskip3ex\@afterheading}
+%</article>
+% \end{macrocode}
+%
+% reportとbookクラスの場合は、\Lcount{secnumdepth}が$-2$よりも大きいときに、
+% 見出し番号を付けます。$-2$以下では付けません。
+%
+% \begin{macrocode}
+%<*report|book>
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{%
+ \prepartname\thepart\postpartname\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty\@M\normalfont
+ \ifnum \c@secnumdepth >-2\relax
+ \huge\bfseries\prepartname\thepart\postpartname
+ \par\vskip20\p@
+ \fi
+ \Huge\bfseries#2\par}%
+ \@endpart}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@spart}
+% このマクロは、番号を付けないときの体裁です。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+%<*article>
+\def\@spart#1{{%
+ \parindent\z@\raggedright
+ \interlinepenalty\@M\normalfont
+ \huge\bfseries#1\par}%
+ \nobreak\vskip3ex\@afterheading}
+%</article>
+% \end{macrocode}
+% \changes{v1.1k}{1998/03/23}{reportとbookクラスで番号を付けない見出しの
+% ペナルティが\cs{M@}だったのを\cs{@M}に修正}
+% \begin{macrocode}
+%<*report|book>
+\def\@spart#1{{%
+ \centering
+ \interlinepenalty\@M\normalfont
+ \Huge\bfseries#1\par}%
+ \@endpart}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@endpart}
+% |\@part|と|\@spart|の最後で実行されるマクロです。
+% 両面印刷モードのときは、白ページを追加します。
+% 二段組モードのときには、これ以降のページを二段組に戻します。
+% 2016年12月から、|openany| のときに白ページを追加するのをやめました。
+% このバグは\LaTeX{}ではclasses.dtx v1.4b (2000/05/19)で修正されていました。
+% (参考:latex/3155、texjporg/jsclasses\#48)
+% \changes{v1.7c}{2016/12/18}{Only add empty page after part if
+% twoside and openright (sync with classes.dtx v1.4b)}
+% \begin{macrocode}
+%<*report|book>
+\def\@endpart{\vfil\newpage
+ \if@twoside
+ \if@openleft %% \if@openleft added (2017/02/15)
+ \null\thispagestyle{empty}\newpage
+ \else\if@openright %% \if@openright added (2016/12/18)
+ \null\thispagestyle{empty}\newpage
+ \fi\fi %% added (2016/12/18, 2017/02/15)
+ \fi
+% \end{macrocode}
+% 二段組文書のとき、スイッチを二段組モードに戻す必要があります。
+% \begin{macrocode}
+ \if@tempswa\twocolumn\fi}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{chapterレベル}
+%
+% \begin{macro}{chapter}
+% 章レベルは、必ずページの先頭から開始します。
+% |openright|オプションが指定されている場合は、右ページからはじまる
+% ように|\cleardoublepage|を呼び出します。
+% そうでなければ、|\clearpage|を呼び出します。
+% なお、縦組の場合でも右ページからはじまるように、
+% フォーマットファイルで|\clerdoublepage|が定義されています。
+%
+% \emph{日本語\TeX{}開発コミュニティによる補足}:コミュニティ版の実装では、
+% |openright|と|openleft|の場合に|\cleardoublepage|をクラスファイルの中で
+% 再々定義しています。\ref{sec:cleardoublepage}を参照してください。
+%
+% 章見出しが出力されるページのスタイルは、\pstyle{jpl@in}になります。
+% \pstyle{jpl@in}は、\pstyle{headnomble}か\pstyle{footnomble}のいずれかです。
+% 詳細は、第\ref{sec:pagestyle}節を参照してください。
+%
+% また、|\@topnum|をゼロにして、
+% 章見出しの上にトップフロートが置かれないようにしています。
+% \begin{macrocode}
+%<*report|book>
+\newcommand{\chapter}{%
+ \if@openleft \cleardoublepage \else
+ \if@openright \cleardoublepage \else \clearpage \fi \fi
+ \thispagestyle{jpl@in}%
+ \global\@topnum\z@
+ \@afterindenttrue
+ \secdef\@chapter\@schapter}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chapter}
+% このマクロは、章見出しに番号を付けるときに呼び出されます。
+% \Lcount{secnumdepth}が$-1$よりも大きく、
+% |\@mainmatter|が真(bookクラスの場合)のときに、番号を出力します。
+%
+% \emph{日本語\TeX{}開発コミュニティによる補足}:本家\LaTeX{}の
+% \file{classes}では、二段組のときチャプタータイトルは一段組に戻され
+% ますが、アスキーによる\file{jclasses}では二段組のままにされています。
+% したがって、チャプタータイトルより高い位置に右カラムの始点が来るという
+% 挙動になっていますが、コミュニティ版でもアスキー版の挙動を維持しています。
+% \begin{macrocode}
+\def\@chapter[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+%<book> \if@mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter\space\@chappos}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\@chapapp\thechapter\@chappos}#1}%
+%<book> \else\addcontentsline{toc}{chapter}{#1}\fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \@makechapterhead{#2}\@afterheading}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makechapterhead}
+% このマクロが実際に章見出しを組み立てます。
+% \changes{v1.1o}{1998/12/24}{secnumdepthカウンタを$-1$以下にすると、
+% 見出し文字列も消えてしまうのを修正}
+% \changes{v1.2}{2001/09/04}{\cs{chapter}の出力位置がアスタリスク形式と
+% そうでないときと違うのを修正(ありがとう、鈴木@津さん)}
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\def\@makechapterhead#1{\hbox{}%
+ \vskip2\Cvs
+ {\parindent\z@
+ \raggedright
+ \normalfont\huge\bfseries
+ \leavevmode
+ \ifnum \c@secnumdepth >\m@ne
+ \setlength\@tempdima{\linewidth}%
+%<book> \if@mainmatter
+ \setbox\z@\hbox{\@chapapp\thechapter\@chappos\hskip1zw}%
+ \addtolength\@tempdima{-\wd\z@}%
+ \unhbox\z@\nobreak
+%<book> \fi
+ \vtop{\hsize\@tempdima#1}%
+ \else
+ #1\relax
+ \fi}\nobreak\vskip3\Cvs}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@schapter}
+% このマクロは、章見出しに番号を付けないときに呼び出されます。
+%
+% \emph{日本語\TeX{}開発コミュニティによる補足}:やはり二段組でチャプター
+% タイトルより高い位置に右カラムの始点が来るという挙動を維持してあります。
+% \changes{v1.7c}{2016/12/18}{奇妙なarticleガードとコードを削除して
+% ドキュメントを追加}
+% \begin{macrocode}
+\def\@schapter#1{%
+ \@makeschapterhead{#1}\@afterheading
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makeschapterhead}
+% 番号を付けない場合の形式です。
+% \changes{v1.2}{2001/09/04}{\cs{chapter}の出力位置がアスタリスク形式と
+% そうでないときと違うのを修正(ありがとう、鈴木@津さん)}
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\def\@makeschapterhead#1{\hbox{}%
+ \vskip2\Cvs
+ {\parindent\z@
+ \raggedright
+ \normalfont\huge\bfseries
+ \leavevmode
+ \setlength\@tempdima{\linewidth}%
+ \vtop{\hsize\@tempdima#1}}\vskip3\Cvs}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{下位レベルの見出し}
+%
+% \begin{macro}{\section}
+% 見出しの前後に空白を付け、|\Large\bfseries|で出力をします。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\newcommand{\section}{\@startsection{section}{1}{\z@}%
+ {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
+ {.5\Cvs \@plus.3\Cvs}%
+ {\normalfont\Large\bfseries}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\subsection}
+% 見出しの前後に空白を付け、|\large\bfseries|で出力をします。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\newcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
+ {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
+ {.5\Cvs \@plus.3\Cvs}%
+ {\normalfont\large\bfseries}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\subsubsection}
+% 見出しの前後に空白を付け、|\normalsize\bfseries|で出力をします。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\newcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
+ {1.5\Cvs \@plus.5\Cvs \@minus.2\Cvs}%
+ {.5\Cvs \@plus.3\Cvs}%
+ {\normalfont\normalsize\bfseries}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\paragraph}
+% 見出しの前に空白を付け、|\normalsize\bfseries|で出力をします。
+% 見出しの後ろで改行されません。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus 1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\subparagraph}
+% 見出しの前に空白を付け、|\normalsize\bfseries|で出力をします。
+% 見出しの後ろで改行されません。
+% \changes{v1.7a}{2016/11/16}{replace \cs{reset@font} with
+% \cs{normalfont} (sync with classes.dtx v1.3c)}
+% \begin{macrocode}
+\newcommand{\subparagraph}{\@startsection{subparagraph}{5}{\z@}%
+ {3.25ex \@plus 1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{付録}
+%
+% \begin{macro}{\appendix}
+% articleクラスの場合、|\appendix|コマンドは次のことを行ないます。
+%
+% \begin{itemize}
+% \item \Lcount{section}と\Lcount{subsection}カウンタをリセットする。
+% \item |\thesection|を英小文字で出力するように再定義する。
+% \end{itemize}
+%
+% \begin{macrocode}
+%<*article>
+\newcommand{\appendix}{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+%<tate> \renewcommand{\thesection}{\rensuji{\@Alph\c@section}}}
+%<yoko> \renewcommand{\thesection}{\@Alph\c@section}}
+%</article>
+% \end{macrocode}
+%
+% reportとbookクラスの場合、|\appendix|コマンドは次のことを行ないます。
+%
+% \begin{itemize}
+% \item \Lcount{chapter}と\Lcount{section}カウンタをリセットする。
+% \item |\@chapapp|を|\appendixname|に設定する。
+% \item |\@chappos|を空にする。
+% \item |\thechapter|を英小文字で出力するように再定義する。
+% \end{itemize}
+%
+% \begin{macrocode}
+%<*report|book>
+\newcommand{\appendix}{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \renewcommand{\@chapapp}{\appendixname}%
+ \renewcommand{\@chappos}\space%
+%<tate> \renewcommand{\thechapter}{\rensuji{\@Alph\c@chapter}}}
+%<yoko> \renewcommand{\thechapter}{\@Alph\c@chapter}}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{リスト環境}
+% ここではリスト環境について説明をしています。
+%
+% リスト環境のデフォルトは次のように設定されます。
+%
+% まず、|\rigtmargin|, |\listparindent|, |\itemindent|をゼロにします。
+% そして、K番目のレベルのリストは|\@listK|で示されるマクロが呼び出されます。
+% ここで`K'は小文字のローマ数字で示されます。たとえば、3番目のレベルのリスト
+% として|\@listiii|が呼び出されます。
+% |\@listK|は|\leftmargin|を|\leftmarginK|に設定します。
+%
+% \begin{macro}{\leftmargin}
+% \begin{macro}{\leftmargini}
+% \begin{macro}{\leftmarginii}
+% \begin{macro}{\leftmarginiii}
+% \begin{macro}{\leftmarginiv}
+% \begin{macro}{\leftmarginv}
+% \begin{macro}{\leftmarginvi}
+% 二段組モードのマージンは少しだけ小さく設定してあります。
+% \begin{macrocode}
+\if@twocolumn
+ \setlength\leftmargini {2em}
+\else
+ \setlength\leftmargini {2.5em}
+\fi
+% \end{macrocode}
+% 次の3つの値は、|\labelsep|とデフォルトラベル(`(m)', `vii.', `M.')の
+% 幅の合計よりも大きくしてあります。
+% \begin{macrocode}
+\setlength\leftmarginii {2.2em}
+\setlength\leftmarginiii {1.87em}
+\setlength\leftmarginiv {1.7em}
+\if@twocolumn
+ \setlength\leftmarginv {.5em}
+ \setlength\leftmarginvi{.5em}
+\else
+ \setlength\leftmarginv {1em}
+ \setlength\leftmarginvi{1em}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelsep}
+% \begin{macro}{\labelwidth}
+% |\labelsep|はラベルとテキストの項目の間の距離です。
+% |\labelwidth|はラベルの幅です。
+% \begin{macrocode}
+\setlength \labelsep {.5em}
+\setlength \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@beginparpenalty}
+% \begin{macro}{\@endparpenalty}
+% これらのペナルティは、リストや段落環境の前後に挿入されます。
+% \begin{macro}{\@itempenalty}
+% このペナルティは、リスト項目の間に挿入されます。
+% \begin{macrocode}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+%</article|report|book>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\partopsep}
+% リスト環境の前に空行がある場合、|\parskip|と|\topsep|に|\partopsep|が
+% 加えられた値の縦方向の空白が取られます。
+% \begin{macrocode}
+%<10pt>\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
+%<11pt>\setlength\partopsep{3\p@ \@plus 1\p@ \@minus 1\p@}
+%<12pt>\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@listi}
+% \begin{macro}{\@listI}
+% |\@listi|は、|\leftmargin|, |\parsep|, |\topsep|, |\itemsep|などの
+% トップレベルの定義をします。
+% この定義は、フォントサイズコマンドによって変更されます(たとえば、
+% |\small|の中では``小さい''リストパラメータになります)。
+%
+% このため、|\normalsize|がすべてのパラメータを戻せるように、
+% |\@listI|は|\@listi|のコピーを保存するように定義されています。
+% \begin{macrocode}
+%<*10pt|11pt|12pt>
+\def\@listi{\leftmargin\leftmargini
+%<*10pt>
+ \parsep 4\p@ \@plus2\p@ \@minus\p@
+ \topsep 8\p@ \@plus2\p@ \@minus4\p@
+ \itemsep4\p@ \@plus2\p@ \@minus\p@}
+%</10pt>
+%<*11pt>
+ \parsep 4.5\p@ \@plus2\p@ \@minus\p@
+ \topsep 9\p@ \@plus3\p@ \@minus5\p@
+ \itemsep4.5\p@ \@plus2\p@ \@minus\p@}
+%</11pt>
+%<*12pt>
+ \parsep 5\p@ \@plus2.5\p@ \@minus\p@
+ \topsep 10\p@ \@plus4\p@ \@minus6\p@
+ \itemsep5\p@ \@plus2.5\p@ \@minus\p@}
+%</12pt>
+\let\@listI\@listi
+% \end{macrocode}
+% ここで、パラメータを初期化しますが、厳密には必要ありません。
+% \begin{macrocode}
+\@listi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@listii}
+% \begin{macro}{\@listiii}
+% \begin{macro}{\@listiv}
+% \begin{macro}{\@listv}
+% \begin{macro}{\@listvi}
+% 下位レベルのリスト環境のパラメータの設定です。
+% これらは保存用のバージョンを持たないことと、
+% フォントサイズコマンドによって変更されないことに注意をしてください。
+% 言い換えれば、このクラスは、本文サイズが
+% |\normalsize|で現れるリストの入れ子についてだけ考えています。
+% \begin{macrocode}
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+%<*10pt>
+ \topsep 4\p@ \@plus2\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+%</10pt>
+%<*11pt>
+ \topsep 4.5\p@ \@plus2\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+%</11pt>
+%<*12pt>
+ \topsep 5\p@ \@plus2.5\p@ \@minus\p@
+ \parsep 2.5\p@ \@plus\p@ \@minus\p@
+%</12pt>
+ \itemsep\parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii \advance\labelwidth-\labelsep
+%<10pt> \topsep 2\p@ \@plus\p@\@minus\p@
+%<11pt> \topsep 2\p@ \@plus\p@\@minus\p@
+%<12pt> \topsep 2.5\p@\@plus\p@\@minus\p@
+ \parsep\z@
+ \partopsep \p@ \@plus\z@ \@minus\p@
+ \itemsep\topsep}
+\def\@listiv {\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep}
+\def\@listv {\leftmargin\leftmarginv
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep}
+\def\@listvi {\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep}
+%</10pt|11pt|12pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{enumerate環境}
+% enumerate環境は、カウンタ\Lcount{enumi}, \Lcount{enumii}, \Lcount{enumiii},
+% \Lcount{enumiv}を使います。\Lcount{enumN}はN番目のレベルの番号を制御します。
+%
+% \begin{macro}{\theenumi}
+% \begin{macro}{\theenumii}
+% \begin{macro}{\theenumiii}
+% \begin{macro}{\theenumiv}
+% 出力する番号の書式を設定します。
+% これらは、すでに\file{ltlists.dtx}で定義されています。
+% \begin{macrocode}
+%<*article|report|book>
+%<*tate>
+\renewcommand{\theenumi}{\rensuji{\@arabic\c@enumi}}
+\renewcommand{\theenumii}{\rensuji{(\@alph\c@enumii)}}
+\renewcommand{\theenumiii}{\rensuji{\@roman\c@enumiii}}
+\renewcommand{\theenumiv}{\rensuji{\@Alph\c@enumiv}}
+%</tate>
+%<*yoko>
+\renewcommand{\theenumi}{\@arabic\c@enumi}
+\renewcommand{\theenumii}{\@alph\c@enumii}
+\renewcommand{\theenumiii}{\@roman\c@enumiii}
+\renewcommand{\theenumiv}{\@Alph\c@enumiv}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelenumi}
+% \begin{macro}{\labelenumii}
+% \begin{macro}{\labelenumiii}
+% \begin{macro}{\labelenumiv}
+% enumerate環境のそれぞれの項目のラベルは、
+% |\labelenumi| \ldots\ |\labelenumiv|で生成されます。
+% \begin{macrocode}
+%<*tate>
+\newcommand{\labelenumi}{\theenumi}
+\newcommand{\labelenumii}{\theenumii}
+\newcommand{\labelenumiii}{\theenumiii}
+\newcommand{\labelenumiv}{\theenumiv}
+%</tate>
+%<*yoko>
+\newcommand{\labelenumi}{\theenumi.}
+\newcommand{\labelenumii}{(\theenumii)}
+\newcommand{\labelenumiii}{\theenumiii.}
+\newcommand{\labelenumiv}{\theenumiv.}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\p@enumii}
+% \begin{macro}{\p@enumiii}
+% \begin{macro}{\p@enumiv}
+% |\ref|コマンドによって、
+% enumerate環境のN番目のリスト項目が参照されるときの書式です。
+% \begin{macrocode}
+\renewcommand{\p@enumii}{\theenumi}
+\renewcommand{\p@enumiii}{\theenumi(\theenumii)}
+\renewcommand{\p@enumiv}{\p@enumiii\theenumiii}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{enumerate}
+% \changes{v1.1q}{1999/05/18}{縦組時のみに設定するようにした}
+% トップレベルで使われたときに、最初と最後に半行分のスペースを開けるように、
+% 変更します。この環境は、\file{ltlists.dtx}で定義されています。
+% \changes{v1.7a}{2016/11/16}{Use \cs{expandafter}
+% (sync with ltlists.dtx v1.0j)}
+%
+% \begin{macrocode}
+\renewenvironment{enumerate}
+ {\ifnum \@enumdepth >\thr@@\@toodeep\else
+ \advance\@enumdepth\@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \expandafter \list \csname label\@enumctr\endcsname{%
+ \iftdir
+ \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
+ \else\topsep\z@\fi
+ \parskip\z@ \itemsep\z@ \parsep\z@
+ \labelwidth1zw \labelsep.3zw
+ \ifnum \@enumdepth=\@ne \leftmargin1zw\relax
+ \else\leftmargin\leftskip\fi
+ \advance\leftmargin 1zw
+ \fi
+ \usecounter{\@enumctr}%
+ \def\makelabel##1{\hss\llap{##1}}}%
+ \fi}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \subsubsection{itemize環境}
+%
+% \begin{macro}{\labelitemi}
+% \begin{macro}{\labelitemii}
+% \begin{macro}{\labelitemiii}
+% \begin{macro}{\labelitemiv}
+% itemize環境のそれぞれの項目のラベルは、
+% |\labelenumi| \ldots\ |\labelenumiv|で生成されます。
+% \changes{v1.1a}{1997/01/28}{Bug fix: \cs{labelitemii}.}
+% \begin{macrocode}
+\newcommand{\labelitemi}{\textbullet}
+\newcommand{\labelitemii}{%
+ \iftdir
+ {\textcircled{~}}
+ \else
+ {\normalfont\bfseries\textendash}
+ \fi
+}
+\newcommand{\labelitemiii}{\textasteriskcentered}
+\newcommand{\labelitemiv}{\textperiodcentered}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{itemize}
+% \changes{v1.0e}{1996/03/14}{縦組時のみに設定するようにした}
+% トップレベルで使われたときに、最初と最後に半行分のスペースを開けるように、
+% 変更します。この環境は、\file{ltlists.dtx}で定義されています。
+% \changes{v1.7a}{2016/11/16}{Use \cs{expandafter}
+% (sync with ltlists.dtx v1.0j)}
+% \begin{macrocode}
+\renewenvironment{itemize}
+ {\ifnum \@itemdepth >\thr@@\@toodeep\else
+ \advance\@itemdepth\@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \expandafter \list \csname \@itemitem\endcsname{%
+ \iftdir
+ \ifnum \@listdepth=\@ne \topsep.5\normalbaselineskip
+ \else\topsep\z@\fi
+ \parskip\z@ \itemsep\z@ \parsep\z@
+ \labelwidth1zw \labelsep.3zw
+ \ifnum \@itemdepth =\@ne \leftmargin1zw\relax
+ \else\leftmargin\leftskip\fi
+ \advance\leftmargin 1zw
+ \fi
+ \def\makelabel##1{\hss\llap{##1}}}%
+ \fi}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \subsubsection{description環境}
+%
+% \begin{environment}{description}
+% \changes{v1.0e}{1996/03/14}{\cs{topskip}や\cs{parkip}などの値を縦組時のみに
+% 設定するようにした}
+% description環境を定義します。
+% 縦組時には、インデントが3字分だけ深くなります。
+% \begin{macrocode}
+\newenvironment{description}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \iftdir
+ \leftmargin\leftskip \advance\leftmargin3\Cwd
+ \rightmargin\rightskip
+ \labelsep=1zw \itemsep\z@
+ \listparindent\z@ \topskip\z@ \parskip\z@ \partopsep\z@
+ \fi
+ \let\makelabel\descriptionlabel}}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\descriptionlabel}
+% ラベルの形式を変更する必要がある場合は、|\descriptionlabel|を
+% 再定義してください。
+% \begin{macrocode}
+\newcommand{\descriptionlabel}[1]{%
+ \hspace\labelsep\normalfont\bfseries #1}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{verse環境}
+%
+% \begin{environment}{verse}
+% verse環境は、リスト環境のパラメータを使って定義されています。
+% 改行をするには|\\|を用います。|\\|は|\@centercr|に|\let|されています。
+% \begin{macrocode}
+\newenvironment{verse}
+ {\let\\\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em%
+ \listparindent\itemindent
+ \rightmargin\leftmargin \advance\leftmargin 1.5em}%
+ \item\relax}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{quotation環境}
+%
+% \begin{environment}{quotation}
+% quotation環境もまた、list環境のパラメータを使用して定義されています。
+% この環境の各行は、|\textwidth|よりも小さく設定されています。
+% この環境における、段落の最初の行はインデントされます。
+% \begin{macrocode}
+\newenvironment{quotation}
+ {\list{}{\listparindent 1.5em%
+ \itemindent\listparindent
+ \rightmargin\leftmargin
+ \parsep\z@ \@plus\p@}%
+ \item\relax}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{quote環境}
+%
+% \begin{environment}{quote}
+% quote環境は、段落がインデントされないことを除き、quotation環境と同じです。
+% \begin{macrocode}
+\newenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \item\relax}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+%
+%
+% \subsection{フロート}
+%
+% \file{ltfloat.dtx}では、フロートオブジェクトを操作するためのツールしか
+% 定義していません。タイプが\texttt{TYPE}のフロートオブジェクトを
+% 扱うマクロを定義するには、次の変数が必要です。
+%
+% \begin{description}
+% \item[\texttt{\bslash fps@TYPE}]
+% タイプ\texttt{TYPE}のフロートを置くデフォルトの位置です。
+%
+% \item[\texttt{\bslash ftype@TYPE}]
+% タイプ\texttt{TYPE}のフロートの番号です。
+% 各\texttt{TYPE}には、一意な、2の倍数の\texttt{TYPE}番号を割り当てます。
+% たとえば、図が番号1ならば、表は2です。次のタイプは4となります。
+%
+% \item[\texttt{\bslash ext@TYPE}]
+% タイプ\texttt{TYPE}のフロートの目次を出力するファイルの拡張子です。
+% たとえば、|\ext@figure|は`lot'です。
+%
+% \item[\texttt{\bslash fnum@TYPE}]
+% キャプション用の図番号を生成するマクロです。
+% たとえば、|\fnum@figure|は`図|\thefigure|'を作ります。
+% \end{description}
+%
+% \subsubsection{figure環境}
+% ここでは、figure環境を実装しています。
+%
+% \begin{macro}{\c@figure}
+% \begin{macro}{\thefigure}
+% 図番号です。
+% \begin{macrocode}
+%<article>\newcounter{figure}
+%<report|book>\newcounter{figure}[chapter]
+%<*tate>
+%<article>\renewcommand{\thefigure}{\rensuji{\@arabic\c@figure}}
+% \end{macrocode}
+% \changes{v1.1d}{1997/02/14}{\cs{ifnum}文の構文エラーを訂正。}
+% \begin{macrocode}
+%<*report|book>
+\renewcommand{\thefigure}{%
+ \ifnum\c@chapter>\z@\thechapter{}・\fi\rensuji{\@arabic\c@figure}}
+%</report|book>
+%</tate>
+%<*yoko>
+%<article>\renewcommand{\thefigure}{\@arabic\c@figure}
+%<*report|book>
+\renewcommand{\thefigure}{%
+ \ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@figure}
+%</report|book>
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fps@figure}
+% \begin{macro}{\ftype@figure}
+% \begin{macro}{\ext@figure}
+% \begin{macro}{\fnum@figure}
+% フロートオブジェクトタイプ``figure''のためのパラメータです。
+% \begin{macrocode}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+%<tate>\def\fnum@figure{\figurename\thefigure}
+%<yoko>\def\fnum@figure{\figurename~\thefigure}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{figure}
+% \begin{environment}{figure*}
+% |*|形式は2段抜きのフロートとなります。
+% \begin{macrocode}
+\newenvironment{figure}
+ {\@float{figure}}
+ {\end@float}
+\newenvironment{figure*}
+ {\@dblfloat{figure}}
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsubsection{table環境}
+% ここでは、table環境を実装しています。
+%
+% \begin{macro}{\c@table}
+% \begin{macro}{\thetable}
+% \changes{v1.1n}{1998/10/13}
+% {report, bookクラスでchapterカウンタを考慮していなかったのを修正。
+% ありがとう、平川@慶應大さん。}
+% 表番号です。
+% \begin{macrocode}
+%<article>\newcounter{table}
+%<report|book>\newcounter{table}[chapter]
+%<*tate>
+%<article>\renewcommand{\thetable}{\rensuji{\@arabic\c@table}}
+%<*report|book>
+\renewcommand{\thetable}{%
+ \ifnum\c@chapter>\z@\thechapter{}・\fi\rensuji{\@arabic\c@table}}
+%</report|book>
+%</tate>
+%<*yoko>
+%<article>\renewcommand{\thetable}{\@arabic\c@table}
+%<*report|book>
+\renewcommand{\thetable}{%
+ \ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@table}
+%</report|book>
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fps@table}
+% \begin{macro}{\ftype@table}
+% \begin{macro}{\ext@table}
+% \begin{macro}{\fnum@table}
+% フロートオブジェクトタイプ``table''のためのパラメータです。
+% \begin{macrocode}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+%<tate>\def\fnum@table{\tablename\thetable}
+%<yoko>\def\fnum@table{\tablename~\thetable}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{table}
+% \begin{environment}{table*}
+% |*|形式は2段抜きのフロートとなります。
+% \begin{macrocode}
+\newenvironment{table}
+ {\@float{table}}
+ {\end@float}
+\newenvironment{table*}
+ {\@dblfloat{table}}
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsection{キャプション}
+%
+% \begin{macro}{\@makecaption}
+% |\caption|コマンドは、キャプションを組み立てるために|\@mkcaption|を呼出ます。
+% このコマンドは二つの引数を取ります。
+% 一つは、\meta{number}で、フロートオブジェクトの番号です。
+% もう一つは、\meta{text}でキャプション文字列です。
+% \meta{number}には通常、`図 3.2'のような文字列が入っています。
+% このマクロは、|\parbox|の中で呼び出されます。書体は|\normalsize|です。
+%
+% \begin{macro}{\abovecaptionskip}
+% \begin{macro}{\belowcaptionskip}
+% これらの長さはキャプションの前後に挿入されるスペースです。
+% \begin{macrocode}
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{10\p@}
+\setlength\belowcaptionskip{0\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% キャプション内で複数の段落を作成することができるように、
+% このマクロは|\long|で定義をします。
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \iftdir\sbox\@tempboxa{#1\hskip1zw#2}%
+ \else\sbox\@tempboxa{#1: #2}%
+ \fi
+ \ifdim \wd\@tempboxa >\hsize
+ \iftdir #1\hskip1zw#2\relax\par
+ \else #1: #2\relax\par\fi
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{コマンドパラメータの設定}
+%
+% \subsubsection{arrayとtabular環境}
+%
+% \begin{macro}{\arraycolsep}
+% array環境のカラムは2|\arraycolsep|で分離されます。
+% \begin{macrocode}
+\setlength\arraycolsep{5\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tabcolsep}
+% tabular環境のカラムは2|\tabcolsep|で分離されます。
+% \begin{macrocode}
+\setlength\tabcolsep{6\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\arrayrulewidth}
+% arrayとtabular環境内の罫線の幅です。
+% \begin{macrocode}
+\setlength\arrayrulewidth{.4\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\doublerulesep}
+% arrayとtabular環境内の罫線間を調整する空白です。
+% \begin{macrocode}
+\setlength\doublerulesep{2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{tabbing環境}
+%
+% \begin{macro}{\tabbingsep}
+% |\'|コマンドで置かれるスペースを制御します。
+% \begin{macrocode}
+\setlength\tabbingsep{\labelsep}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{minipage環境}
+%
+% \begin{macro}{\@mpfootins}
+% minipageにも脚注を付けることができます。
+% |\skip||\@mpfootins|は、通常の|\skip||\footins|と同じような動作をします。
+% \begin{macrocode}
+\skip\@mpfootins = \skip\footins
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{framebox環境}
+%
+% \begin{macro}{\fboxsep}
+% \begin{macro}{\fboxrule}
+% |\fboxsep|は、|\fbox|と|\framebox|での、
+% テキストとボックスの間に入る空白です。
+% |\fboxrule|は|\fbox|と|\framebox|で作成される罫線の幅です。
+% \begin{macrocode}
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{equationとeqnarray環境}
+%
+% \begin{macro}{\theequation}
+% equationカウンタは、新しい章の開始でリセットされます。
+% また、equation番号には、章番号が付きます。
+%
+% このコードは|\chapter|定義の後、より正確にはchapterカウンタの定義の後、
+% でなくてはいけません。
+% \begin{macrocode}
+%<article>\renewcommand{\theequation}{\@arabic\c@equation}
+%<*report|book>
+\@addtoreset{equation}{chapter}
+\renewcommand{\theequation}{%
+ \ifnum\c@chapter>\z@\thechapter.\fi \@arabic\c@equation}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{フォントコマンド}
+% |disablejfam|オプションが指定されていない場合には、以下の設定がなさ
+% れます。
+% まず、数式内に日本語を直接、記述するために数式記号用文字に
+% ``JY2/mc/m/n''を登録します。数式バージョンがboldの場合は、
+% ``JY2/gt/m/n''を用います。
+% これらは、|\mathmc|, |\mathgt|として登録されます。
+% また、日本語数式ファミリとして|\symmincho|がこの段階で設定されます。
+% |mathrmmc|オプションが指定されていた場合には、これに引き続き
+% |\mathrm|と|\mathbf|を和欧文両対応にするための作業がなされます。この際、
+% 他のマクロとの衝突を避けるため|\AtBeginDocument|
+% を用いて展開順序を遅らせる必要があります。
+%
+% |disablejfam|オプションが指定されていた場合には、
+% |\mathmc|と|\mathgt|に対してエラーを出すだけのダミーの定義を
+% 与える設定のみが行われます。
+%
+% \textbf{変更}
+%
+% \changes{v1.6}{2006/06/27}{フォントコマンドを修正。ありがとう、ymtさん。}
+% p\LaTeX{} 2.09
+% compatibility modeでは和文数式フォントfamが2重定義されていた
+% ので、その部分を変更しました。
+% \begin{macrocode}
+\if@enablejfam
+ \if@compatibility\else
+ \DeclareSymbolFont{mincho}{JY2}{mc}{m}{n}
+ \DeclareSymbolFontAlphabet{\mathmc}{mincho}
+ \SetSymbolFont{mincho}{bold}{JY2}{gt}{m}{n}
+ \jfam\symmincho
+ \DeclareMathAlphabet{\mathgt}{JY2}{gt}{m}{n}
+ \fi
+ \if@mathrmmc
+ \AtBeginDocument{%
+ \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
+ \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}
+ }%
+ \fi
+\else
+ \DeclareRobustCommand{\mathmc}{%
+ \@latex@error{Command \noexpand\mathmc invalid with\space
+ `disablejfam' class option.}\@eha
+ }
+ \DeclareRobustCommand{\mathgt}{%
+ \@latex@error{Command \noexpand\mathgt invalid with\space
+ `disablejfam' class option.}\@eha
+ }
+\fi
+% \end{macrocode}
+%
+% ここでは\LaTeX~2.09で一般的に使われていたコマンドを定義しています。
+% これらのコマンドはテキストモードと数式モードの\emph{どちらでも}動作します。
+% これらは互換性のために提供をしますが、できるだけ|\text...|と|\math...|を
+% 使うようにしてください。
+%
+% \begin{macro}{\mc}
+% \begin{macro}{\gt}
+% \begin{macro}{\rm}
+% \begin{macro}{\sf}
+% \begin{macro}{\tt}
+% これらのコマンドはフォントファミリを変更します。
+% 互換モードの同名コマンドと異なり、すべてのコマンドがデフォルトフォントに
+% リセットしてから、対応する属性を変更することに注意してください。
+% \begin{macrocode}
+\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
+\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bf}
+% このコマンドはボールド書体にします。ノーマル書体に変更するには、
+% |\mdseries|と指定をします。
+% \begin{macrocode}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\it}
+% \begin{macro}{\sl}
+% \begin{macro}{\sc}
+% これらのコマンドはフォントシェイプを切替えます。
+% スラント体とスモールキャップの数式アルファベットはありませんので、
+% 数式モードでは何もしませんが、警告メッセージを出力します。
+% |\upshape|コマンドで通常のシェイプにすることができます。
+% \begin{macrocode}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cal}
+% \begin{macro}{\mit}
+% これらのコマンドは数式モードでだけ使うことができます。
+% 数式モード以外では何もしません。
+% 現在のNFSSは、これらのコマンドが警告を生成するように定義していますので、
+% `手ずから'定義する必要があります。
+% \begin{macrocode}
+\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \section{相互参照}
+%
+% \subsection{目次}
+% |\section|コマンドは、\file{.toc}ファイルに、次のような行を出力します。
+%
+% |\contentsline{section}{|\meta{title}|}{|\meta{page}|}|
+%
+% \meta{title}には項目が、\meta{page}にはページ番号が入ります。
+% |\section|に見出し番号が付く場合は、\meta{title}は、
+% |\numberline{|\meta{num}|}{|\meta{heading}|}|となります。
+% \meta{num}は|\thesection|コマンドで生成された見出し番号です。
+% \meta{heading}は見出し文字列です。この他の見出しコマンドも同様です。
+%
+% figure環境での|\caption|コマンドは、\file{.lof}ファイルに、
+% 次のような行を出力します。
+%
+% |\contentsline{figure}{\numberline{|\meta{num}|}{|%
+% \meta{caption}|}}{|\meta{page}|}|
+%
+% \meta{num}は、|\thefigure|コマンドで生成された図番号です。
+% \meta{caption}は、キャプション文字列です。table環境も同様です。
+%
+% |\contentsline{|\meta{name}|}|コマンドは、|\l@|\meta{name}に展開されます。
+% したがって、目次の体裁を記述するには、|\l@chapter|, |\l@section|などを
+% 定義します。図目次のためには|\l@figure|です。
+% これらの多くのコマンドは|\@dottedtocline|コマンドで定義されています。
+% このコマンドは次のような書式となっています。
+%
+% |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
+% \meta{numwidth}|}{|\meta{title}|}{|\meta{page}|}|
+%
+% \begin{description}
+% \item[\meta{level}] ``\meta{level} $<=$ \Lcount{tocdepth}''のときにだけ、
+% 生成されます。|\chapter|はレベル0、|\section|はレベル1、$\ldots$ です。
+% \item[\meta{indent}] 一番外側からの左マージンです。
+% \item[\meta{numwidth}] 見出し番号(|\numberline|コマンドの\meta{num})が
+% 入るボックスの幅です。
+% \end{description}
+%
+% \begin{macro}{\c@tocdepth}
+% \Lcount{tocdepth}は、目次ページに出力をする見出しレベルです。
+% \begin{macrocode}
+%<article>\setcounter{tocdepth}{3}
+%<!article>\setcounter{tocdepth}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% また、目次を生成するために次のパラメータも使います。
+%
+% \begin{macro}{\@pnumwidth}
+% ページ番号の入るボックスの幅です。
+% \begin{macrocode}
+\newcommand{\@pnumwidth}{1.55em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@tocrmarg}
+% 複数行にわたる場合の右マージンです。
+% \begin{macrocode}
+\newcommand{\@tocrmarg}{2.55em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@dotsep}
+% ドットの間隔(mu単位)です。2や1.7のように指定をします。
+% \begin{macrocode}
+\newcommand{\@dotsep}{4.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\toclineskip}
+% この長さ変数は、目次項目の間に入るスペースの長さです。
+% デフォルトはゼロとなっています。縦組のとき、スペースを少し広げます。
+% \begin{macrocode}
+\newdimen\toclineskip
+%<yoko>\setlength\toclineskip{\z@}
+%<tate>\setlength\toclineskip{2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\numberline}
+% \begin{macro}{\@lnumwidth}
+% |\numberline|マクロの定義を示します。オリジナルの定義では、ボックスの幅を
+% |\@tempdima|にしていますが、この変数はいろいろな箇所で使われますので、
+% 期待した値が入らない場合があります。
+%
+% ^^A たとえば、p\LaTeXe{}での|\selectfont|は、和欧文のベースラインを調整する
+% ^^A ために|\@tempdima|変数を用いています。そのため、|\l@...|マクロの中で
+% ^^A フォントを切替えると、|\numberline|マクロのボックス
+% ^^A の幅が、ベースラインを調整するときに計算した値になってしまいます。
+% ^^A →修正(texjporg):最近の|\adjustbaseline|では|\adjust@dimen|が使われて
+% ^^A いるため、記述をコメントアウトしました。
+%
+% フォント選択コマンドの後、あるいは|\numberline|マクロの中でフォントを
+% 切替えてもよいのですが、一時変数を意識したくないので、
+% 見出し番号の入るボックスを|\@lnumwidth|変数を用いて組み立てるように
+% |\numberline|マクロを再定義します。
+% \begin{macrocode}
+\newdimen\@lnumwidth
+\def\numberline#1{\hb@xt@\@lnumwidth{#1\hfil}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dottedtocline}
+% 目次の各行間に|\toclineskip|を入れるように変更します。
+% このマクロは\file{ltsect.dtx}で定義されています。
+% \changes{v1.3}{2001/10/04}{第5引数の書体を\cs{rmfamily}から\cs{normalfont}に変更}
+% \changes{v1.7a}{2016/11/16}{Added \cs{nobreak} for
+% latex/2343 (sync with ltsect.dtx v1.0z)}
+% \begin{macrocode}
+\def\@dottedtocline#1#2#3#4#5{%
+ \ifnum #1>\c@tocdepth \else
+ \vskip\toclineskip \@plus.2\p@
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@lnumwidth #3\relax
+ \advance\leftskip \@lnumwidth \null\nobreak\hskip -\leftskip
+ {#4}\nobreak
+ \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep mu$}%
+ \hfill\nobreak
+ \hb@xt@\@pnumwidth{\hss\normalfont \normalcolor #5}%
+ \par}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addcontentsline}
+% 縦組の場合にページ番号を|\rensuji|で囲むように変更します。
+% ^^A 横組のときにも`|\rensuji|'コマンドが出力されますが、
+% ^^A このコマンドによる影響はありません。
+%
+% このマクロは\file{ltsect.dtx}で定義されています。
+% \changes{v1.8a}{2018/10/25}{ファイル書き出し時の行末文字対策
+% (sync with ltsect.dtx 2018/09/26 v1.1c)}
+% \begin{macrocode}
+\providecommand*\protected@file@percent{}
+\def\addcontentsline#1#2#3{%
+ \protected@write\@auxout
+ {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble
+%<tate> \@temptokena{\rensuji{\thepage}}}%
+%<yoko> \@temptokena{\thepage}}%
+ {\string\@writefile{#1}%
+ {\protect\contentsline{#2}{#3}{\the\@temptokena}%
+ \protected@file@percent}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{本文目次}
+%
+% \begin{macro}{\tableofcontents}
+% 目次を生成します。
+% \begin{macrocode}
+\newcommand{\tableofcontents}{%
+%<*report|book>
+ \if@twocolumn\@restonecoltrue\onecolumn
+ \else\@restonecolfalse\fi
+%</report|book>
+%<article> \section*{\contentsname
+%<!article> \chapter*{\contentsname
+% \end{macrocode}
+% |\tableofcontents|では、|\@mkboth|はheadingの中に入れてあります。
+% ほかの命令(|\listoffigures|など)については、|\@mkboth|はheadingの
+% 外に出してあります。これは\LaTeX の\file{classes.dtx}に合わせています。
+% \begin{macrocode}
+ \@mkboth{\contentsname}{\contentsname}%
+ }\@starttoc{toc}%
+%<report|book> \if@restonecol\twocolumn\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@part}
+% partレベルの目次です。
+% \begin{macrocode}
+\newcommand*{\l@part}[2]{%
+ \ifnum \c@tocdepth >-2\relax
+%<article> \addpenalty{\@secpenalty}%
+%<!article> \addpenalty{-\@highpenalty}%
+ \addvspace{2.25em \@plus\p@}%
+ \begingroup
+ \parindent\z@\rightskip\@pnumwidth
+ \parfillskip-\@pnumwidth
+ {\leavevmode\large\bfseries
+ \setlength\@lnumwidth{4zw}%
+ #1\hfil\nobreak
+ \hb@xt@\@pnumwidth{\hss#2}}\par
+ \nobreak
+%<article> \if@compatibility
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+%<article> \fi
+ \endgroup
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@chapter}
+% chapterレベルの目次です。
+% \begin{macrocode}
+%<*report|book>
+\newcommand*{\l@chapter}[2]{%
+ \ifnum \c@tocdepth >\m@ne
+ \addpenalty{-\@highpenalty}%
+ \addvspace{1.0em \@plus\p@}%
+ \begingroup
+ \parindent\z@ \rightskip\@pnumwidth \parfillskip-\rightskip
+ \leavevmode\bfseries
+ \setlength\@lnumwidth{4zw}%
+ \advance\leftskip\@lnumwidth \hskip-\leftskip
+ #1\nobreak\hfil\nobreak\hb@xt@\@pnumwidth{\hss#2}\par
+ \penalty\@highpenalty
+ \endgroup
+ \fi}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@section}
+% sectionレベルの目次です。
+% \begin{macrocode}
+%<*article>
+\newcommand*{\l@section}[2]{%
+ \ifnum \c@tocdepth >\z@
+ \addpenalty{\@secpenalty}%
+ \addvspace{1.0em \@plus\p@}%
+ \begingroup
+ \parindent\z@ \rightskip\@pnumwidth \parfillskip-\rightskip
+ \leavevmode\bfseries
+ \setlength\@lnumwidth{1.5em}%
+ \advance\leftskip\@lnumwidth \hskip-\leftskip
+ #1\nobreak\hfil\nobreak\hb@xt@\@pnumwidth{\hss#2}\par
+ \endgroup
+ \fi}
+%</article>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*report|book>
+%<tate>\newcommand*{\l@section}{\@dottedtocline{1}{1zw}{4zw}}
+%<yoko>\newcommand*{\l@section}{\@dottedtocline{1}{1.5em}{2.3em}}
+%</report|book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@subsection}
+% \begin{macro}{\l@subsubsection}
+% \begin{macro}{\l@paragraph}
+% \begin{macro}{\l@subparagraph}
+% 下位レベルの目次項目の体裁です。
+% \begin{macrocode}
+%<*tate>
+%<*article>
+\newcommand*{\l@subsection} {\@dottedtocline{2}{1zw}{4zw}}
+\newcommand*{\l@subsubsection}{\@dottedtocline{3}{2zw}{6zw}}
+\newcommand*{\l@paragraph} {\@dottedtocline{4}{3zw}{8zw}}
+\newcommand*{\l@subparagraph} {\@dottedtocline{5}{4zw}{9zw}}
+%</article>
+%<*report|book>
+\newcommand*{\l@subsection} {\@dottedtocline{2}{2zw}{6zw}}
+\newcommand*{\l@subsubsection}{\@dottedtocline{3}{3zw}{8zw}}
+\newcommand*{\l@paragraph} {\@dottedtocline{4}{4zw}{9zw}}
+\newcommand*{\l@subparagraph} {\@dottedtocline{5}{5zw}{10zw}}
+%</report|book>
+%</tate>
+%<*yoko>
+%<*article>
+\newcommand*{\l@subsection} {\@dottedtocline{2}{1.5em}{2.3em}}
+\newcommand*{\l@subsubsection}{\@dottedtocline{3}{3.8em}{3.2em}}
+\newcommand*{\l@paragraph} {\@dottedtocline{4}{7.0em}{4.1em}}
+\newcommand*{\l@subparagraph} {\@dottedtocline{5}{10em}{5em}}
+%</article>
+%<*report|book>
+\newcommand*{\l@subsection} {\@dottedtocline{2}{3.8em}{3.2em}}
+\newcommand*{\l@subsubsection}{\@dottedtocline{3}{7.0em}{4.1em}}
+\newcommand*{\l@paragraph} {\@dottedtocline{4}{10em}{5em}}
+\newcommand*{\l@subparagraph} {\@dottedtocline{5}{12em}{6em}}
+%</report|book>
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{図目次と表目次}
+%
+% \begin{macro}{\listoffigures}
+% 図の一覧を作成します。
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+% arg (sync with classes.dtx v1.4c)}
+% \begin{macrocode}
+\newcommand{\listoffigures}{%
+%<*report|book>
+ \if@twocolumn\@restonecoltrue\onecolumn
+ \else\@restonecolfalse\fi
+ \chapter*{\listfigurename}%
+%</report|book>
+%<article> \section*{\listfigurename}%
+ \@mkboth{\listfigurename}{\listfigurename}%
+ \@starttoc{lof}%
+%<report|book> \if@restonecol\twocolumn\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@figure}
+% 図目次の体裁です。
+% \begin{macrocode}
+%<tate>\newcommand*{\l@figure}{\@dottedtocline{1}{1zw}{4zw}}
+%<yoko>\newcommand*{\l@figure}{\@dottedtocline{1}{1.5em}{2.3em}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listoftables}
+% \changes{v1.0c}{1995/12/28}{fix the \cs{listoftable} typo.}
+% 表の一覧を作成します。
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+% arg (sync with classes.dtx v1.4c)}
+% \begin{macrocode}
+\newcommand{\listoftables}{%
+%<*report|book>
+ \if@twocolumn\@restonecoltrue\onecolumn
+ \else\@restonecolfalse\fi
+ \chapter*{\listtablename}%
+%</report|book>
+%<article> \section*{\listtablename}%
+ \@mkboth{\listtablename}{\listtablename}%
+ \@starttoc{lot}%
+%<report|book> \if@restonecol\twocolumn\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@table}
+% 表目次の体裁は、図目次と同じにします。
+% \begin{macrocode}
+\let\l@table\l@figure
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{参考文献}
+%
+% \begin{macro}{\bibindent}
+% オープンスタイルの参考文献で使うインデント幅です。
+% \begin{macrocode}
+\newdimen\bibindent
+\setlength\bibindent{1.5em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newblock}
+% |\newblock|のデフォルト定義は、小さなスペースを生成します。
+% \begin{macrocode}
+\newcommand{\newblock}{\hskip .11em\@plus.33em\@minus.07em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{thebibliography}
+% 参考文献や関連図書のリストを作成します。
+% \changes{v1.7}{2016/11/12}{Moved \cs{@mkboth} out of heading
+% arg (sync with classes.dtx v1.4c)}
+% \begin{macrocode}
+\newenvironment{thebibliography}[1]
+%<article>{\section*{\refname}\@mkboth{\refname}{\refname}%
+%<report|book>{\chapter*{\bibname}\@mkboth{\bibname}{\bibname}%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy
+% \end{macrocode}
+% \changes{v1.1a}{1997/01/23}{\break\LaTeX\ \texttt{!<1996/12/01!>}に合わせて修正}
+% \begin{macrocode}
+ \clubpenalty4000
+ \@clubpenalty\clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@openbib@code}
+% |\@openbib@code|のデフォルト定義は何もしません。
+% この定義は、\Lopt{openbib}オプションによって変更されます。
+% \begin{macrocode}
+\let\@openbib@code\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@biblabel}
+% The label for a |\bibitem[...]| command is produced by this
+% macro. The default from \file{latex.dtx} is used.
+% \begin{macrocode}
+% \renewcommand*{\@biblabel}[1]{[#1]\hfill}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@cite}
+% The output of the |\cite| command is produced by this macro. The
+% default from \file{ltbibl.dtx} is used.
+% \begin{macrocode}
+% \renewcommand*{\@cite}[1]{[#1]}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{索引}
+%
+% \begin{environment}{theindex}
+% 2段組の索引を作成します。
+% 索引の先頭のページのスタイルは\pstyle{jpl@in}とします。したがって、
+% \pstyle{headings}と\pstyle{bothstyle}に適した位置に出力されます。
+% \begin{macrocode}
+\newenvironment{theindex}
+ {\if@twocolumn\@restonecolfalse\else\@restonecoltrue\fi
+%<article> \twocolumn[\section*{\indexname}]%
+%<report|book> \twocolumn[\@makeschapterhead{\indexname}]%
+ \@mkboth{\indexname}{\indexname}%
+ \thispagestyle{jpl@in}\parindent\z@
+% \end{macrocode}
+% パラメータ|\columnseprule|と|\columnsep|の変更は、|\twocolumn|が
+% 実行された後でなければなりません。そうしないと、索引の前のページ
+% にも影響してしまうためです。
+% \changes{v1.7}{2016/11/12}{\cs{columnsep}と\cs{columnseprule}の
+% 変更を後ろに移動(sync with classes.dtx v1.4f)}
+% \begin{macrocode}
+ \parskip\z@ \@plus .3\p@\relax
+ \columnseprule\z@ \columnsep 35\p@
+ \let\item\@idxitem}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@idxitem}
+% \begin{macro}{\subitem}
+% \begin{macro}{\subsubitem}
+% 索引項目の字下げ幅です。|\@idxitem|は|\item|の項目の字下げ幅です。
+% \begin{macrocode}
+\newcommand{\@idxitem}{\par\hangindent 40\p@}
+\newcommand{\subitem}{\@idxitem \hspace*{20\p@}}
+\newcommand{\subsubitem}{\@idxitem \hspace*{30\p@}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indexspace}
+% 索引の``文字''見出しの前に入るスペースです。
+% \begin{macrocode}
+\newcommand{\indexspace}{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{脚注}
+%
+% \begin{macro}{\footnoterule}
+% 本文と脚注の間に引かれる罫線です。
+% \changes{v1.7}{2016/11/12}{use \cs{@width} (sync with classes.dtx v1.3a)}
+% \begin{macrocode}
+\renewcommand{\footnoterule}{%
+ \kern-3\p@
+ \hrule\@width.4\columnwidth
+ \kern2.6\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@footnote}
+% reportとbookクラスでは、chapterレベルでリセットされます。
+% \begin{macrocode}
+%<!article>\@addtoreset{footnote}{chapter}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefntext}
+% このマクロにしたがって脚注が組まれます。
+%
+% |\@makefnmark|は脚注記号を組み立てるマクロです。
+% \changes{v1.7}{2016/11/12}{Replaced all \cs{hbox to} by
+% \cs{hb@xt@} (sync with classes.dtx v1.3a)}
+% \begin{macrocode}
+%<*tate>
+\newcommand\@makefntext[1]{\parindent 1zw
+ \noindent\hb@xt@ 2zw{\hss\@makefnmark}#1}
+%</tate>
+%<*yoko>
+\newcommand\@makefntext[1]{\parindent 1em
+ \noindent\hb@xt@ 1.8em{\hss\@makefnmark}#1}
+%</yoko>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{今日の日付}
+% 組版時における現在の日付を出力します。
+%
+% \iffalse meta-comment!
+% 注意:ここで \DisableCrossrefs, \EnableCrossrefs をしているのは、
+% platex jclasses.dtx で dvi を作るときにエラーになるため。
+% \fi
+% \DisableCrossrefs
+% \begin{macro}{\if西暦}
+% \begin{macro}{\西暦}
+% \begin{macro}{\和暦}
+% \changes{v1.0h}{1996/12/17}{Typo:和歴 to 和暦}
+% |\today|コマンドの`年'を、
+% 西暦か和暦のどちらで出力するかを指定するコマンドです。
+% 2018年7月以降の日本語\TeX{}開発コミュニティ版(v1.8)では、
+% デフォルトを和暦ではなく西暦に設定しています。
+% \changes{v1.8}{2018/07/03}{\cs{today}のデフォルトを和暦から西暦に変更}
+% \begin{macrocode}
+\newif\if西暦 \西暦true
+\def\西暦{\西暦true}
+\def\和暦{\西暦false}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \EnableCrossrefs
+%
+% \begin{macro}{\heisei}
+% \changes{v1.1m}{1998/04/07}{\cs{today}の計算手順を変更}
+% \changes{v1.8b}{2019/04/02}{\cs{heisei}の値は$\mbox{西暦}-1988$で固定}
+% |\today|コマンドを|\rightmark|で指定したとき、|\rightmark|を出力する部分
+% で和暦のための計算ができないので、クラスファイルを読み込む時点で計算して
+% おきます。
+% \begin{macrocode}
+\newcount\heisei \heisei\year \advance\heisei-1988\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\today}
+% \begin{macro}{\pltx@today@year}
+% \changes{v1.8b}{2019/04/02}{\cs{today}の計算・出力方法を変更。}
+% 縦組の場合は、漢数字で出力します
+% \pLaTeX\ 2018-12-01以前では縦数式ディレクション時でも漢数字で出力していましたが、
+% \pLaTeX\ 2019-04-06以降からはそうしなくなりました。
+% \begin{macrocode}
+\def\pltx@today@year@#1{%
+ \ifnum\numexpr\year-#1=1 元\else
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi
+ \kansuji\number\numexpr\year-#1\relax
+ \else
+ \number\numexpr\year-#1\relax\nobreak
+ \fi
+ \fi 年
+}
+\def\pltx@today@year{%
+ \ifnum\numexpr\year*10000+\month*100+\day<19890108
+ 昭和\pltx@today@year@{1925}%
+ \else\ifnum\numexpr\year*10000+\month*100+\day<20190501
+ 平成\pltx@today@year@{1988}%
+ \else
+ 令和\pltx@today@year@{2018}%
+ \fi\fi}
+\def\today{{%
+ \if西暦
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi\kansuji\number\year
+ \else\number\year\nobreak\fi 年
+ \else
+ \pltx@today@year
+ \fi
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi
+ \kansuji\number\month 月
+ \kansuji\number\day 日
+ \else
+ \number\month\nobreak 月
+ \number\day\nobreak 日
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+%
+% \section{初期設定}
+%
+% \begin{macro}{\prepartname}
+% \begin{macro}{\postpartname}
+% \begin{macro}{\prechaptername}
+% \begin{macro}{\postchaptername}
+% \begin{macrocode}
+\newcommand{\prepartname}{第}
+\newcommand{\postpartname}{部}
+%<report|book>\newcommand{\prechaptername}{第}
+%<report|book>\newcommand{\postchaptername}{章}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\contentsname}
+% \begin{macro}{\listfigurename}
+% \begin{macro}{\listtablename}
+% \begin{macrocode}
+\newcommand{\contentsname}{目 次}
+\newcommand{\listfigurename}{図 目 次}
+\newcommand{\listtablename}{表 目 次}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refname}
+% \begin{macro}{\bibname}
+% \begin{macro}{\indexname}
+% \begin{macrocode}
+%<article>\newcommand{\refname}{参考文献}
+%<report|book>\newcommand{\bibname}{関連図書}
+\newcommand{\indexname}{索 引}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\figurename}
+% \begin{macro}{\tablename}
+% \begin{macrocode}
+\newcommand{\figurename}{図}
+\newcommand{\tablename}{表}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\appendixname}
+% \begin{macro}{\abstractname}
+% \begin{macrocode}
+\newcommand{\appendixname}{付 録}
+%<article|report>\newcommand{\abstractname}{概 要}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v1.0d}{1996/02/29}{articleとreportのデフォルトを
+% \pstyle{plain}に修正}
+% \changes{v1.4}{2002/04/09}{縦組スタイルで\cs{flushbottom}しないようにした}
+% \begin{macrocode}
+%<book>\pagestyle{headings}
+%<!book>\pagestyle{plain}
+\pagenumbering{arabic}
+\raggedbottom
+\if@twocolumn
+ \twocolumn
+ \sloppy
+\else
+ \onecolumn
+\fi
+% \end{macrocode}
+% |\@mparswitch|は傍注を左右(縦組では上下)どちらのマージンに
+% 出力するかの指定です。偽の場合、傍注は一方の側にしか出力されません。
+% このスイッチを真とすると、とくに縦組の場合、奇数ページでは本文の上に、
+% 偶数ページでは本文の下に傍注が出力されますので、おかしなことになります。
+%
+% また、縦組のときには、傍注を本文の下に出すようにしています。
+% |\reversemarginpar|とすると本文の上側に出力されます。
+% ただし、二段組の場合は、つねに隣接するテキスト側のマージンに出力されます。
+% \begin{macrocode}
+%<*tate>
+\normalmarginpar
+\@mparswitchfalse
+%</tate>
+%<*yoko>
+\if@twoside
+ \@mparswitchtrue
+\else
+ \@mparswitchfalse
+\fi
+%</yoko>
+%</article|report|book>
+% \end{macrocode}
+%
+%
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/uplatex/ukinsoku.dtx b/language/japanese/uplatex/ukinsoku.dtx
new file mode 100644
index 0000000000..6fe076ff02
--- /dev/null
+++ b/language/japanese/uplatex/ukinsoku.dtx
@@ -0,0 +1,590 @@
+% \iffalse meta-comment
+%% File: ukinsoku.dtx
+%
+% pLaTeX kinsoku file:
+% Copyright 1995 ASCII Corporation.
+% and modified for upLaTeX
+%
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016 Takuji Tanaka
+% Copyright (c) 2016-2019 Japanese TeX Development Community
+%
+% This file is part of the upLaTeX2e system (community edition).
+% --------------------------------------------------------------
+%
+% \fi
+%
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.0-u00}{2011/05/07}{p\LaTeX{}用からup\LaTeX{}用に修正。}
+% \changes{v1.0-u01}{2017/08/02}{U+00B7 (MIDDLE DOT; JIS X 0213)の
+% 前禁則ペナルティをU+30FBと同じ値に設定、注意点を明文化}
+% \changes{v1.0b}{2017/08/05}{%、&、\%、\&の禁則ペナルティが
+% 誤っていたのを修正(post $\rightarrow$ pre)}
+% \changes{v1.0b-u01}{2017/08/05}{p\LaTeX{}の変更に追随}
+% \changes{v1.0b-u02}{2018/01/27}{up\TeX{}の将来の変更に備え、
+% Latin-1 Supplementのうち属性がLatinのもの
+% (Latin-1 letters)をコードポイントで指定}
+% \changes{v1.0b-u03}{2018/04/08}{\LaTeX\ 2018-04-01対策}
+% \changes{v1.0b-u04}{2019/01/29}{内部Unicode化されていることを確認}
+% \changes{v1.0b-u05}{2019/05/19}{up\TeX~v1.24の\cs{kcatcode}の既定値のバグ回避}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{ukinsoku.dtx}[2019/05/19 v1.0b-u05 upLaTeX Kernel]
+% \iffalse
+\documentclass{jltxdoc}
+\GetFileInfo{ukinsoku.dtx}
+\title{禁則パラメータ\space\fileversion}
+\author{Ken Nakano \& TTK}
+\date{作成日:\filedate}
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% このファイルは、禁則と文字間スペースの設定について説明をしています。
+% 日本語\TeX{}の機能についての詳細は、『日本語\TeX テクニカルブックI』を
+% 参照してください。
+%
+% なお、このファイルのコード部分は、
+% p\TeX{}やp\LaTeX{}で配布されている\file{kinsoku.tex}に、
+% JIS X 0213の定義文字などの設定を追加したものです。
+% このファイルは内部コードUnicode (|uptex|)なup\TeX{}エンジンで読まれる
+% 必要があります。
+% \changes{v1.0-u00}{2011/05/07}{p\LaTeX{}用からup\LaTeX{}用に修正。}
+% \changes{v1.0b-u04}{2019/01/29}{内部コードがUnicodeであることを確認}
+%
+% \begin{macrocode}
+%<*plcore>
+\ifnum\ucs"3000="3000 \else
+ \errhelp{Please try to run (e)uptex with option
+ `-kanji-internal=uptex'.}%
+ \errmessage{This file should be read with
+ internal Kanji encoding Unicode}\@@end
+\fi
+% \end{macrocode}
+%
+% up\TeX~v1.24で``Halfwidth and Fullwidth Forms''のブロックの|\kcatcode|の既定値に
+% バグが入ったため、回避策を講じます(このバグはv1.25で修正済み)。
+% \changes{v1.0b-u05}{2019/05/19}{up\TeX~v1.24の\cs{kcatcode}の既定値のバグ回避}
+% \begin{macrocode}
+%%
+%% default kcatcode, workaround for upTeX 1.24
+\edef\upTeXVersionNumber{\the\uptexversion\uptexrevision}%
+\def\upTeXRevIpXXIV{1.24}%
+\ifx\upTeXVersionNumber\upTeXRevIpXXIV
+ \kcatcode"FF00=16% Halfwidth and Fullwidth Forms -> 16(kanji)
+ \message{### special kcatcode setting to work around for upTeX 1.24 ###}
+\fi
+\let\upTeXVersionNumber\relax
+\let\upTeXRevIpXXIV\relax
+% \end{macrocode}
+%
+% \section{禁則}
+%
+% ある文字を行頭禁則の対象にするには、|\prebreakpenalty|に正の値を指定します。
+% ある文字を行末禁則の対象にするには、|\postbreakpenalty|に正の値を指定します。
+% 数値が大きいほど、行頭、あるいは行末で改行されにくくなります。
+%
+% \subsection{半角文字に対する禁則}
+% ここでは、半角文字に対する禁則の設定を行なっています。
+% \changes{v1.0b}{2017/08/05}{%、&、\%、\&の禁則ペナルティが
+% 誤っていたのを修正(post $\rightarrow$ pre)}
+%
+% \begin{macrocode}
+%%
+%% 行頭、行末禁則パラメータ
+%%
+%% 1byte characters
+\prebreakpenalty`!=10000
+\prebreakpenalty`"=10000
+\postbreakpenalty`\#=500
+\postbreakpenalty`\$=500
+\prebreakpenalty`\%=500
+\prebreakpenalty`\&=500
+\postbreakpenalty`\`=10000
+\prebreakpenalty`'=10000
+\prebreakpenalty`)=10000
+\postbreakpenalty`(=10000
+\prebreakpenalty`*=500
+\prebreakpenalty`+=500
+\prebreakpenalty`-=10000
+\prebreakpenalty`.=10000
+\prebreakpenalty`,=10000
+\prebreakpenalty`/=500
+\prebreakpenalty`;=10000
+\prebreakpenalty`?=10000
+\prebreakpenalty`:=10000
+\prebreakpenalty`]=10000
+\postbreakpenalty`[=10000
+% \end{macrocode}
+%
+% \subsection{全角文字に対する禁則}
+% ここでは、全角文字に対する禁則の設定を行なっています。
+%
+% up\TeX{}/up\LaTeX{}の場合、JIS X 0213(日本)・KS C 5601(韓国)・
+% GB2312(中国)・Big5(台湾)などの文字集合に含まれる、
+% いわゆる全角文字の一部が、8-bit Latinと同じコードポイントを
+% 共有します。すなわち、同じコードポイントが、CJKトークンとしても
+% non-CJKトークンとしても有効に扱われることがあります。
+% 以下に例を示します\footnote{ここで表示しているnon-CJKトークンと
+% して扱われた結果は、up\LaTeX{}のデフォルト従属欧文エンコーディング
+% であるT1の場合のものです。}。
+% {\font\lmr=rm-lmr10\lmr
+% \begin{itemize}
+% \item \texttt{0xA1}: \kchar"A1 (CJK) vs. \char"A1\ (non-CJK)
+% \item \texttt{0xAB}: \kchar"AB (CJK) vs. \char"AB\ (non-CJK)
+% \item \texttt{0xB7}: \kchar"B7 (CJK) vs. \char"B7\ (non-CJK)
+% \item \texttt{0xB9}: \kchar"B9 (CJK) vs. \char"B9\ (non-CJK)
+% \item …
+% \end{itemize}}
+% \file{ukinsoku.tex}ではCJKトークンを優先した禁則設定を行っています。
+% この設定により、同じコードポイントをnon-CJKトークンとして扱う場合に
+% 予期せずLatin-1の文字が禁則対象になってしまいます。
+% 問題が起きた場合は禁則の設定を調整してください。
+% \changes{v1.0-u01}{2017/08/02}{U+00B7 (MIDDLE DOT; JIS X 0213)の
+% 前禁則ペナルティをU+30FBと同じ値に設定、注意点を明文化}
+% \changes{v1.0b-u02}{2018/01/27}{up\TeX{}の将来の変更に備え、
+% Latin-1 Supplementのうち属性がLatinのもの
+% (Latin-1 letters)をコードポイントで指定}
+%
+% なお、以下で複数回登場する |"AA| と |"BA| はそれぞれªとºですが、
+% \LaTeXe\ 2018-04-01でUTF-8入力になった影響で、これらの文字は
+% |macrocode| 環境内のコードに(たとえ |%| に続くコメントであっても)
+% 書けなくなってしまったようです。これらの文字で
+% docstrip処理中にエラー
+%\begin{verbatim}
+% ! Argument of \@font@info has an extra }.
+%\end{verbatim}
+% が出ないように、コメントからも削除しました。
+% \changes{v1.0b-u03}{2018/04/08}{\LaTeX\ 2018-04-01対策}
+%
+% \begin{macrocode}
+%%全角文字
+\prebreakpenalty`、=10000
+\prebreakpenalty`。=10000
+\prebreakpenalty`,=10000
+\prebreakpenalty`.=10000
+\prebreakpenalty`・=10000
+\prebreakpenalty`:=10000
+\prebreakpenalty`;=10000
+\prebreakpenalty`?=10000
+\prebreakpenalty`!=10000
+\prebreakpenalty`゛=10000%\jis"212B
+\prebreakpenalty`゜=10000%\jis"212C
+\prebreakpenalty`´=10000%\jis"212D
+\postbreakpenalty``=10000%\jis"212E
+\prebreakpenalty`々=10000%\jis"2139
+\prebreakpenalty`…=250%\jis"2144
+\prebreakpenalty`‥=250%\jis"2145
+\postbreakpenalty`‘=10000%\jis"2146
+\prebreakpenalty`’=10000%\jis"2147
+\postbreakpenalty`“=10000%\jis"2148
+\prebreakpenalty`”=10000%\jis"2149
+\prebreakpenalty`)=10000
+\postbreakpenalty`(=10000
+\prebreakpenalty`}=10000
+\postbreakpenalty`{=10000
+\prebreakpenalty`]=10000
+\postbreakpenalty`[=10000
+%%\postbreakpenalty`‘=10000
+%%\prebreakpenalty`’=10000
+\postbreakpenalty`〔=10000%\jis"214C
+\prebreakpenalty`〕=10000%\jis"214D
+\postbreakpenalty`〈=10000%\jis"2152
+\prebreakpenalty`〉=10000%\jis"2153
+\postbreakpenalty`《=10000%\jis"2154
+\prebreakpenalty`》=10000%\jis"2155
+\postbreakpenalty`「=10000%\jis"2156
+\prebreakpenalty`」=10000%\jis"2157
+\postbreakpenalty`『=10000%\jis"2158
+\prebreakpenalty`』=10000%\jis"2159
+\postbreakpenalty`【=10000%\jis"215A
+\prebreakpenalty`】=10000%\jis"215B
+\prebreakpenalty`ー=10000
+\prebreakpenalty`+=200
+\prebreakpenalty`−=200% U+2212 MINUS SIGN
+\prebreakpenalty`-=200% U+FF0D FULLWIDTH HYPHEN-MINUS
+\prebreakpenalty`==200
+\postbreakpenalty`#=200
+\postbreakpenalty`$=200
+\prebreakpenalty`%=200
+\prebreakpenalty`&=200
+\prebreakpenalty`ぁ=150
+\prebreakpenalty`ぃ=150
+\prebreakpenalty`ぅ=150
+\prebreakpenalty`ぇ=150
+\prebreakpenalty`ぉ=150
+\prebreakpenalty`っ=150
+\prebreakpenalty`ゃ=150
+\prebreakpenalty`ゅ=150
+\prebreakpenalty`ょ=150
+\prebreakpenalty`ゎ=150%\jis"246E
+\prebreakpenalty`ァ=150
+\prebreakpenalty`ィ=150
+\prebreakpenalty`ゥ=150
+\prebreakpenalty`ェ=150
+\prebreakpenalty`ォ=150
+\prebreakpenalty`ッ=150
+\prebreakpenalty`ャ=150
+\prebreakpenalty`ュ=150
+\prebreakpenalty`ョ=150
+\prebreakpenalty`ヮ=150%\jis"256E
+\prebreakpenalty`ヵ=150%\jis"2575
+\prebreakpenalty`ヶ=150%\jis"2576
+%% kinsoku JIS X 0208 additional
+\prebreakpenalty`ヽ=10000
+\prebreakpenalty`ヾ=10000
+\prebreakpenalty`ゝ=10000
+\prebreakpenalty`ゞ=10000
+%%
+%% kinsoku JIS X 0213
+%%
+\prebreakpenalty`〳=10000
+\prebreakpenalty`〴=10000
+\prebreakpenalty`〵=10000
+\prebreakpenalty`〻=10000
+\postbreakpenalty`⦅=10000
+\prebreakpenalty`⦆=10000
+\postbreakpenalty`⦅=10000
+\prebreakpenalty`⦆=10000
+\postbreakpenalty`〘=10000
+\prebreakpenalty`〙=10000
+\postbreakpenalty`〖=10000
+\prebreakpenalty`〗=10000
+\postbreakpenalty`«=10000
+\prebreakpenalty`»=10000
+\postbreakpenalty`〝=10000
+\prebreakpenalty`〟=10000
+\prebreakpenalty`‼=10000
+\prebreakpenalty`⁇=10000
+\prebreakpenalty`⁈=10000
+\prebreakpenalty`⁉=10000
+\postbreakpenalty`¡=10000
+\postbreakpenalty`¿=10000
+\prebreakpenalty`ː=10000
+\prebreakpenalty`·=10000
+\prebreakpenalty"AA=10000
+\prebreakpenalty"BA=10000
+\prebreakpenalty`¹=10000
+\prebreakpenalty`²=10000
+\prebreakpenalty`³=10000
+\postbreakpenalty`€=10000
+\prebreakpenalty`ゕ=150
+\prebreakpenalty`ゖ=150
+\prebreakpenalty`ㇰ=150
+\prebreakpenalty`ㇱ=150
+\prebreakpenalty`ㇲ=150
+\prebreakpenalty`ㇳ=150
+\prebreakpenalty`ㇴ=150
+\prebreakpenalty`ㇵ=150
+\prebreakpenalty`ㇶ=150
+\prebreakpenalty`ㇷ=150
+\prebreakpenalty`ㇸ=150
+\prebreakpenalty`ㇹ=150
+%%\prebreakpenalty`ㇷ゚=150
+\prebreakpenalty`ㇺ=150
+\prebreakpenalty`ㇻ=150
+\prebreakpenalty`ㇼ=150
+\prebreakpenalty`ㇽ=150
+\prebreakpenalty`ㇾ=150
+\prebreakpenalty`ㇿ=150
+%%
+%% kinsoku JIS X 0212
+%%
+%%\postbreakpenalty`¡=10000
+%%\postbreakpenalty`¿=10000
+%%\prebreakpenalty"BA=10000
+%%\prebreakpenalty"AA=10000
+\prebreakpenalty`™=10000
+%%
+%% kinsoku 半角片仮名
+%%
+\prebreakpenalty`。=10000
+\prebreakpenalty`、=10000
+\prebreakpenalty`゙=10000
+\prebreakpenalty`゚=10000
+\prebreakpenalty`」=10000
+\postbreakpenalty`「=10000
+% \end{macrocode}
+%
+% \section{文字間のスペース}
+%
+% ある英字の前後と、その文字に隣合う漢字に挿入されるスペースを制御するには、
+% |\xspcode|を用います。
+%
+% ある漢字の前後と、その文字に隣合う英字に挿入されるスペースを制御するには、
+% |\inhibitxspcode|を用います。
+%
+% \subsection{ある英字と前後の漢字の間の制御}
+% ここでは、英字に対する設定を行なっています。
+%
+% 指定する数値とその意味は次のとおりです。
+%
+% \begin{center}
+% \begin{tabular}{ll}
+% 0 & 前後の漢字の間での処理を禁止する。\\
+% 1 & 直前の漢字との間にのみ、スペースの挿入を許可する。\\
+% 2 & 直後の漢字との間にのみ、スペースの挿入を許可する。\\
+% 3 & 前後の漢字との間でのスペースの挿入を許可する。\\
+% \end{tabular}
+% \end{center}
+%
+% \begin{macrocode}
+%%
+%% xspcode
+\xspcode`(=1
+\xspcode`)=2
+\xspcode`[=1
+\xspcode`]=2
+\xspcode``=1
+\xspcode`'=2
+\xspcode`;=2
+\xspcode`,=2
+\xspcode`.=2
+%% for 8bit Latin
+\xspcode"80=3
+\xspcode"81=3
+\xspcode"82=3
+\xspcode"83=3
+\xspcode"84=3
+\xspcode"85=3
+\xspcode"86=3
+\xspcode"87=3
+\xspcode"88=3
+\xspcode"89=3
+\xspcode"8A=3
+\xspcode"8B=3
+\xspcode"8C=3
+\xspcode"8D=3
+\xspcode"8E=3
+\xspcode"8F=3
+\xspcode"90=3
+\xspcode"91=3
+\xspcode"92=3
+\xspcode"93=3
+\xspcode"94=3
+\xspcode"95=3
+\xspcode"96=3
+\xspcode"97=3
+\xspcode"98=3
+\xspcode"99=3
+\xspcode"9A=3
+\xspcode"9B=3
+\xspcode"9C=3
+\xspcode"9D=3
+\xspcode"9E=3
+\xspcode"9F=3
+\xspcode"A0=3
+\xspcode"A1=3
+\xspcode"A2=3
+\xspcode"A3=3
+\xspcode"A4=3
+\xspcode"A5=3
+\xspcode"A6=3
+\xspcode"A7=3
+\xspcode"A8=3
+\xspcode"A9=3
+\xspcode"AA=3
+\xspcode"AB=3
+\xspcode"AC=3
+\xspcode"AD=3
+\xspcode"AE=3
+\xspcode"AF=3
+\xspcode"B0=3
+\xspcode"B1=3
+\xspcode"B2=3
+\xspcode"B3=3
+\xspcode"B4=3
+\xspcode"B5=3
+\xspcode"B6=3
+\xspcode"B7=3
+\xspcode"B8=3
+\xspcode"B9=3
+\xspcode"BA=3
+\xspcode"BB=3
+\xspcode"BC=3
+\xspcode"BD=3
+\xspcode"BE=3
+\xspcode"BF=3
+\xspcode"C0=3
+\xspcode"C1=3
+\xspcode"C2=3
+\xspcode"C3=3
+\xspcode"C4=3
+\xspcode"C5=3
+\xspcode"C6=3
+\xspcode"C7=3
+\xspcode"C8=3
+\xspcode"C9=3
+\xspcode"CA=3
+\xspcode"CB=3
+\xspcode"CC=3
+\xspcode"CD=3
+\xspcode"CE=3
+\xspcode"CF=3
+\xspcode"D0=3
+\xspcode"D1=3
+\xspcode"D2=3
+\xspcode"D3=3
+\xspcode"D4=3
+\xspcode"D5=3
+\xspcode"D6=3
+\xspcode"D7=3
+\xspcode"D8=3
+\xspcode"D9=3
+\xspcode"DA=3
+\xspcode"DB=3
+\xspcode"DC=3
+\xspcode"DD=3
+\xspcode"DE=3
+\xspcode"DF=3
+\xspcode"E0=3
+\xspcode"E1=3
+\xspcode"E2=3
+\xspcode"E3=3
+\xspcode"E4=3
+\xspcode"E5=3
+\xspcode"E6=3
+\xspcode"E7=3
+\xspcode"E8=3
+\xspcode"E9=3
+\xspcode"EA=3
+\xspcode"EB=3
+\xspcode"EC=3
+\xspcode"ED=3
+\xspcode"EE=3
+\xspcode"EF=3
+\xspcode"F0=3
+\xspcode"F1=3
+\xspcode"F2=3
+\xspcode"F3=3
+\xspcode"F4=3
+\xspcode"F5=3
+\xspcode"F6=3
+\xspcode"F7=3
+\xspcode"F8=3
+\xspcode"F9=3
+\xspcode"FA=3
+\xspcode"FB=3
+\xspcode"FC=3
+\xspcode"FD=3
+\xspcode"FE=3
+\xspcode"FF=3
+% \end{macrocode}
+%
+% \subsection{ある漢字と前後の英字の間の制御}
+% ここでは、漢字に対する設定を行なっています。
+%
+% 指定する数値とその意味は次のとおりです。
+%
+% \begin{center}
+% \begin{tabular}{ll}
+% 0 & 前後の英字との間にスペースを挿入することを禁止する。\\
+% 1 & 直前の英字との間にスペースを挿入することを禁止する。\\
+% 2 & 直後の英字との間にスペースを挿入することを禁止する。\\
+% 3 & 前後の英字との間でのスペースの挿入を許可する。\\
+% \end{tabular}
+% \end{center}
+%
+% \begin{macrocode}
+%%
+%% inhibitxspcode
+\inhibitxspcode`、=1
+\inhibitxspcode`。=1
+\inhibitxspcode`,=1
+\inhibitxspcode`.=1
+\inhibitxspcode`;=1
+\inhibitxspcode`?=1
+\inhibitxspcode`)=1
+\inhibitxspcode`(=2
+\inhibitxspcode`]=1
+\inhibitxspcode`[=2
+\inhibitxspcode`}=1
+\inhibitxspcode`{=2
+\inhibitxspcode`‘=2
+\inhibitxspcode`’=1
+\inhibitxspcode`“=2
+\inhibitxspcode`”=1
+\inhibitxspcode`〔=2
+\inhibitxspcode`〕=1
+\inhibitxspcode`〈=2
+\inhibitxspcode`〉=1
+\inhibitxspcode`《=2
+\inhibitxspcode`》=1
+\inhibitxspcode`「=2
+\inhibitxspcode`」=1
+\inhibitxspcode`『=2
+\inhibitxspcode`』=1
+\inhibitxspcode`【=2
+\inhibitxspcode`】=1
+\inhibitxspcode`—=0% U+2014 EM DASH
+\inhibitxspcode`―=0% U+2015 HORIZONTAL BAR
+\inhibitxspcode`〜=0% U+301C WAVE DASH
+\inhibitxspcode`~=0% U+FF5E FULLWIDTH TILDE
+\inhibitxspcode`…=0
+\inhibitxspcode`¥=0% U+00A5 YEN SIGN
+\inhibitxspcode`¥=0% U+FFE5 FULLWIDTH YEN SIGN
+\inhibitxspcode`°=1
+\inhibitxspcode`′=1
+\inhibitxspcode`″=1
+%%
+%% inhibitxspcode JIS X 0213
+%%
+\inhibitxspcode`⦅=2
+\inhibitxspcode`⦆=1
+\inhibitxspcode`⦅=2
+\inhibitxspcode`⦆=1
+\inhibitxspcode`〘=2
+\inhibitxspcode`〙=1
+\inhibitxspcode`〖=2
+\inhibitxspcode`〗=1
+\inhibitxspcode`«=2
+\inhibitxspcode`»=1
+\inhibitxspcode`〝=2
+\inhibitxspcode`〟=1
+\inhibitxspcode`‼=1
+\inhibitxspcode`⁇=1
+\inhibitxspcode`⁈=1
+\inhibitxspcode`⁉=1
+\inhibitxspcode`¡=2
+\inhibitxspcode`¿=2
+\inhibitxspcode"AA=1
+\inhibitxspcode"BA=1
+\inhibitxspcode`¹=1
+\inhibitxspcode`²=1
+\inhibitxspcode`³=1
+\inhibitxspcode`€=2
+%%
+%% inhibitxspcode JIS X 0212
+%%
+%%\inhibitxspcode`¡=2
+%%\inhibitxspcode`¿=2
+%%\inhibitxspcode"BA=1
+%%\inhibitxspcode"AA=1
+\inhibitxspcode`™=1
+%%
+%% inhibitxspcode 半角片仮名
+%%
+\inhibitxspcode`。=1
+\inhibitxspcode`、=1
+\inhibitxspcode`「=2
+\inhibitxspcode`」=1
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</plcore>
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/uplatex/uplatex-en.pdf b/language/japanese/uplatex/uplatex-en.pdf
new file mode 100644
index 0000000000..584aaf612e
--- /dev/null
+++ b/language/japanese/uplatex/uplatex-en.pdf
Binary files differ
diff --git a/language/japanese/uplatex/uplatex.dtx b/language/japanese/uplatex/uplatex.dtx
new file mode 100644
index 0000000000..75d9fcb3a4
--- /dev/null
+++ b/language/japanese/uplatex/uplatex.dtx
@@ -0,0 +1,1217 @@
+% \iffalse meta-comment
+%% File: uplatex.dtx
+%
+% pLaTeX base file:
+% Copyright 1995,1996 ASCII Corporation.
+% and modified for upLaTeX
+%
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016 Takuji Tanaka
+% Copyright (c) 2016-2019 Japanese TeX Development Community
+%
+% This file is part of the upLaTeX2e system (community edition).
+% --------------------------------------------------------------
+%
+% \fi
+%
+% \iffalse
+%<*driver|pldoc>
+\ifx\JAPANESEtrue\undefined
+ \expandafter\newif\csname ifJAPANESE\endcsname
+ \JAPANESEtrue
+\fi
+%</driver|pldoc>
+% \fi
+%
+% \setcounter{StandardModuleDepth}{1}
+% \makeatletter
+%\ifJAPANESE
+% \def\chuui{\@ifnextchar[{\@chuui}{\@chuui[注意:]}}
+%\else
+% \def\chuui{\@ifnextchar[{\@chuui}{\@chuui[Attention: ]}}
+%\fi
+% \def\@chuui[#1]{\par\vskip.5\baselineskip
+% \noindent{\em #1}\par\bgroup\gtfamily\sffamily}
+% \def\endchuui{\egroup\vskip.5\baselineskip}
+% \makeatother
+%
+% \iffalse
+%<*driver|pldoc>
+\def\eTeX{$\varepsilon$-\TeX}
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+\def\upTeX{u\pTeX}
+\def\eupTeX{$\varepsilon$-\upTeX}
+\def\upLaTeX{u\pLaTeX}
+\def\upLaTeXe{u\pLaTeXe}
+%</driver|pldoc>
+% \fi
+%
+% \StopEventually{}
+%
+% \iffalse
+%\ifJAPANESE
+% \changes{v1.0c-u00}{2011/05/07}{\pLaTeX{}用から\upLaTeX{}用に修正。
+% (based on platex.dtx 1997/01/29 v1.0c)}
+% \changes{v1.0e-u00}{2016/04/06}{\pLaTeX{}の変更に追随。
+% (based on platex.dtx 2016/02/16 v1.0e)}
+% \changes{v1.0h-u00}{2016/05/08}{ドキュメントから\file{uplpatch.ltx}を除外
+% (based on platex.dtx 2016/05/08 v1.0h)}
+% \changes{v1.0k-u00}{2016/05/21}{\pLaTeX{}の変更に追随。
+% (based on platex.dtx 2016/05/21 v1.0k)}
+% \changes{v1.0k-u01}{2016/06/06}{\upLaTeX{}用にドキュメントを全体的に改訂}
+% \changes{v1.0l-u01}{2016/06/19}{パッチレベルを\file{uplvers.dtx}から取得
+% (based on platex.dtx 2016/06/19 v1.0l)}
+% \changes{v1.0m-u01}{2016/08/26}{\file{uplatex.cfg}の読み込みを
+% \file{uplcore.ltx}から\file{uplatex.ltx}へ移動
+% (based on platex.dtx 2016/08/26 v1.0m)}
+% \changes{v1.0n-u01}{2016/09/14}{\pLaTeX{}の変更に追随。
+% (based on platex.dtx 2016/09/14 v1.0n)}
+% \changes{v1.0p-u01}{2017/11/11}{\pLaTeX{}の変更に追随。
+% (based on platex.dtx 2017/11/11 v1.0p)}
+% \changes{v1.0q-u01}{2017/11/29}{英語版ドキュメントを追加
+% (based on platex.dtx 2017/11/29 v1.0q)}
+% \changes{v1.0r-u01}{2017/12/02}{\upLaTeX{}と\upTeX{}の参考文献も追加}
+% \changes{v1.0s-u01}{2017/12/05}{デフォルト設定ファイルの読み込みを
+% \file{uplcore.ltx}から\file{uplatex.ltx}へ移動
+% (based on platex.dtx 2017/12/05 v1.0s)}
+% \changes{v1.0s-u02}{2017/12/10}{\file{uplcore.ltx}の前に
+% \file{plcore.ltx}を読み込むようにした(最近の\pLaTeX{}が前提)}
+% \changes{v1.0u-u02}{2018/02/18}{\pLaTeX{}の変更に追随。
+% (based on platex.dtx 2018/02/18 v1.0u)}
+% \changes{v1.0v-u02}{2018/04/06}{最新のsource2eへの追随
+% (based on platex.dtx 2018/04/06 v1.0v)}
+% \changes{v1.0w-u02}{2018/04/08}{安全のためフォーマット作成時の
+% バナー表示をやめた
+% (based on platex.dtx 2018/04/08 v1.0w)}
+% \changes{v1.0x-u02}{2018/09/03}{ドキュメントを更新
+% (based on platex.dtx 2018/09/03 v1.0x)}
+% \changes{v1.0y-u02}{2018/09/22}{最終更新日を\file{upldoc.pdf}に表示
+% (based on platex.dtx 2018/09/22 v1.0y)}
+% \changes{v1.0y-u03}{2019/05/22}{ドキュメントを更新}
+%\else
+% \changes{v1.0c-u00}{2011/05/07}{Created \upLaTeX\ version based on \pLaTeX\ one
+% (based on platex.dtx 1997/01/29 v1.0c)}
+% \changes{v1.0e-u00}{2016/04/06}{Sync with \pLaTeX.
+% (based on platex.dtx 2016/02/16 v1.0e)}
+% \changes{v1.0h-u00}{2016/05/08}{Exclude \file{uplpatch.ltx} from the document
+% (based on platex.dtx 2016/05/08 v1.0h)}
+% \changes{v1.0k-u00}{2016/05/21}{Sync with \pLaTeX.
+% (based on platex.dtx 2016/05/21 v1.0k)}
+% \changes{v1.0k-u01}{2016/06/06}{Update documents for \upLaTeX.}
+% \changes{v1.0l-u01}{2016/06/19}{Get the patch level from \file{uplvers.dtx}
+% (based on platex.dtx 2016/06/19 v1.0l)}
+% \changes{v1.0m-u01}{2016/08/26}{Moved loading \file{uplatex.cfg}
+% from \file{uplcore.ltx} to \file{uplatex.ltx}
+% (based on platex.dtx 2016/08/26 v1.0m)}
+% \changes{v1.0n-u01}{2016/09/14}{Sync with \pLaTeX.
+% (based on platex.dtx 2016/09/14 v1.0n)}
+% \changes{v1.0p-u01}{2017/11/11}{Sync with \pLaTeX.
+% (based on platex.dtx 2017/11/11 v1.0p)}
+% \changes{v1.0q-u01}{2017/11/29}{New English documentation added!
+% (based on platex.dtx 2017/11/29 v1.0q)}
+% \changes{v1.0r-u01}{2017/12/02}{\upLaTeX\ and \upTeX\ references added}
+% \changes{v1.0s-u01}{2017/12/05}{Moved loading default settings
+% from \file{uplcore.ltx} to \file{uplatex.ltx}
+% (based on platex.dtx 2017/12/05 v1.0s)}
+% \changes{v1.0s-u02}{2017/12/10}{Load \file{plcore.ltx} before
+% \file{uplcore.ltx} (recent version of \pLaTeX\ is assumed)}
+% \changes{v1.0u-u02}{2018/02/18}{Sync with \pLaTeX.
+% (based on platex.dtx 2018/02/18 v1.0u)}
+% \changes{v1.0v-u02}{2018/04/06}{Sync with the latest \file{source2e.tex}
+% (based on platex.dtx 2018/04/06 v1.0v)}
+% \changes{v1.0w-u02}{2018/04/08}{Stop showing banner during
+% format generation for safety
+% (based on platex.dtx 2018/04/08 v1.0w)}
+% \changes{v1.0x-u02}{2018/09/03}{Update document.
+% (based on platex.dtx 2018/09/03 v1.0x)}
+% \changes{v1.0y-u02}{2018/09/22}{Show last update info on \file{upldoc.pdf}
+% (based on platex.dtx 2018/09/22 v1.0y)}
+% \changes{v1.0y-u03}{2019/05/22}{Update document.}
+%\fi
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{uplatex.dtx}[2019/05/22 v1.0y-u03 upLaTeX document file]
+% \iffalse
+\documentclass{jltxdoc}
+\usepackage{plext}
+\GetFileInfo{uplatex.dtx}
+\ifJAPANESE
+\title{\upLaTeXe{}について}
+\author{中野 賢 \& 日本語\TeX{}開発コミュニティ \& TTK}
+\date{作成日:\filedate}
+\renewcommand{\refname}{参考文献}
+\GlossaryPrologue{\section*{変更履歴}%
+ \markboth{変更履歴}{変更履歴}%
+ \addcontentsline{toc}{section}{変更履歴}}
+\else
+\title{About \upLaTeXe{}}
+\author{Ken Nakano \& Japanese \TeX\ Development Community \& TTK}
+\date{Date: \filedate}
+\renewcommand{\refname}{References}
+\GlossaryPrologue{\section*{Change History}%
+ \markboth{Change History}{Change History}%
+ \addcontentsline{toc}{section}{Change History}}
+\fi
+\makeatletter
+\ifJAPANESE
+\def\levelchar{>・}
+\fi
+\def\changes@#1#2#3{%
+ \let\protect\@unexpandable@protect
+ \edef\@tempa{\noexpand\glossary{#2\space#1\levelchar
+ \ifx\saved@macroname\@empty
+% \space\actualchar\generalname: %% comment out (uplatex.dtx only)
+ \else
+ \expandafter\@gobble
+ \saved@macroname\actualchar
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar:
+ \fi
+ #3}}%
+ \@tempa\endgroup\@esphack}
+\makeatother
+\RecordChanges
+\begin{document}
+ \MakeShortVerb{\+}
+ \maketitle
+ \DocInput{\filename}
+ \StopEventually{\end{document}}
+ \clearpage
+ % Make TeX shut up.
+ \hbadness=10000
+ \newcount\hbadness
+ \hfuzz=\maxdimen
+ \PrintChanges
+ \let\PrintChanges\relax
+\end{document}
+%</driver>
+% \fi
+%
+%
+%\ifJAPANESE
+% \changes{v1.0c-u00}{2011/05/07}{\pLaTeX{}用から\upLaTeX{}用に修正。
+% (based on platex.dtx 1997/01/29 v1.0c)}
+% \changes{v1.0k-u01}{2016/06/06}{\upLaTeX{}用にドキュメントを全体的に改訂}
+% \changes{v1.0q-u01}{2017/11/29}{英語版ドキュメントを追加
+% (based on platex.dtx 2017/11/29 v1.0q)}
+% \changes{v1.0x-u02}{2018/09/03}{ドキュメントを更新
+% (based on platex.dtx 2018/09/03 v1.0x)}
+% \changes{v1.0y-u03}{2019/05/22}{ドキュメントを更新}
+%\else
+% \changes{v1.0c-u00}{2011/05/07}{Created \upLaTeX\ version based on \pLaTeX\ one
+% (based on platex.dtx 1997/01/29 v1.0c)}
+% \changes{v1.0k-u01}{2016/06/06}{Update documents for \upLaTeX.}
+% \changes{v1.0q-u01}{2017/11/29}{New English documentation added!
+% (based on platex.dtx 2017/11/29 v1.0q)}
+% \changes{v1.0x-u02}{2018/09/03}{Update document.
+% (based on platex.dtx 2018/09/03 v1.0x)}
+% \changes{v1.0y-u03}{2018/09/03}{Update document.}
+%\fi
+%\ifJAPANESE
+% \upLaTeX{}は、内部コードをUnicode化した\pLaTeX{}の拡張版です。
+% このバージョンは、「コミュニティ版\pLaTeXe{}」をベースにしています。
+%\else
+% \upLaTeX\ is a Unicode version of Japanese \pLaTeXe.
+% This version is based on `\pLaTeXe\ Community Edition.'
+%\fi
+%
+%\ifJAPANESE
+% \pTeX{}は、高品質の日本語組版ソフトウェアとしてデファクト
+% スタンダードの地位にあるといえます。しかし、\pTeX{}には
+% \begin{itemize}
+% \item 直接使える文字集合が原則的にJIS X 0208(JIS第1,2水準)の範囲に限定
+% されていること、
+% \item 8bitの非英語欧文との親和性が高いとは言えないこと、
+% \item \pTeX{}の利用が日本語に限られ、中国語・韓国語との混植への利用が
+% 進んでいないこと
+% \end{itemize}
+% といった弱点がありました。
+%
+% これらの弱点を克服するため、\pTeX{}の内部コードをUnicode化した拡張版
+% が\upTeX{}です。また、\upTeX{}上で用いるUnicode版\pLaTeX{}が\upLaTeX{}で
+% す\footnote{\texttt{http://www.t-lab.opal.ne.jp/tex/uptex.html}}。
+% 現在の\upLaTeX{}は、日本語\TeX{}開発コミュニティが配布しているコミュニティ
+% 版\pLaTeX{}\footnote{\texttt{https://github.com/texjporg/platex}}を
+% ベースにしており、\eupTeX{}というエンジン(\upTeX{}の\epTeX{}拡張版)で
+% 動作します。
+%
+% 開発中の版は\pLaTeX{}と同様に、GitHubの
+% リポジトリ\footnote{\texttt{https://github.com/texjporg/uplatex}}で
+% 管理しています。\upLaTeX{}はアスキーとは無関係ですので、
+% バグレポートはアスキー宛てではなく、日本語\TeX{}開発コミュニティに報告
+% してください。\TeX\ ForumやGitHubのIssueシステムが利用できます。
+%\else
+% \pTeX\ is the most popular \TeX\ engine in Japan and is widely
+% used for a high-quality typesetting, even for commercial printing.
+% However, \pTeX\ has some limitations:
+% \begin{itemize}
+% \item The Character set available is limited to JIS X 0208,
+% namely JIS level-1 and level-2
+% \item Difficulty in handlign 8-bit Latin, due to legacy double byte
+% Japanese encodings
+% \item Difficulty in typesetting CJK (Chinese, Japanese and Korean)
+% multilingual documents
+% \end{itemize}
+%
+% To overcome these weak points,
+% a Unicode extension of \pTeX, \upTeX, has been
+% developed.\footnote{\texttt{http://www.t-lab.opal.ne.jp/tex/uptex.html}}
+% The Unicode \pLaTeX\ format run on \upTeX\ is called \upLaTeX.
+% Current \upLaTeX\ is maintained by Japanese \TeX\ Development
+% Community,\footnote{\texttt{https://texjp.org}}
+% in sync with \pLaTeX\ community
+% edition.\footnote{\texttt{https://github.com/texjporg/platex}}
+% It runs on \eupTeX, an engine with both \upTeX\ and \epTeX\ features.
+%
+% The development version is available from
+% GitHub repository\footnote{\texttt{https://github.com/texjporg/uplatex}}.
+% Any bug reports and requests should be sent to
+% Japanese \TeX\ Development Community, using GitHub Issue system.
+%\fi
+%
+%
+% \clearpage
+%
+%\ifJAPANESE
+% \section{この文書について}\label{platex:intro}
+% この文書は\upLaTeXe{}の概要を示していますが、使い方のガイドでは
+% ありません。ほとんどの機能は元となっている\pLaTeXe{}や\LaTeXe{}と
+% 同等ですので、それぞれの付属文書などを参照してください。
+%
+% \upTeX{}については公式ウェブサイトあるいは\cite{tb108tanaka}(英語)を
+% 参照してください。
+%\else
+% \section{Introduction to this document}\label{platex:intro}
+% This document briefly describes \upLaTeXe, but is not a manual of \upLaTeXe.
+% The basic functions of \upLaTeXe\ are almost the same with those of
+% \pLaTeXe\ and \LaTeXe, so please refer to the documentation of those formats.
+%
+% For \upTeX, please refer to the official website or
+% \cite{tb108tanaka} (in English).
+%\fi
+%
+%\ifJAPANESE
+% この文書の構成は次のようになっています。
+%
+% \begin{quote}
+% \begin{description}
+% \item[第\ref{platex:intro}節]
+% この節です。この文書についての概要を述べています。
+%
+% \item[第\ref{platex:plcore}節]
+% \upLaTeXe{}で拡張した機能についての概要です。
+% 付属のクラスファイルやパッケージファイルについても簡単に
+% 説明しています。
+%
+% \item[第\ref{platex:compatibility}節]
+% 現在のバージョンの\upLaTeX{}と旧バージョン、あるいは元となっている
+% \pLaTeX{}/\LaTeX{}との互換性について述べています。
+%
+% \item[付録\ref{app:dst}]
+% この文書ソース(uplatex.dtx)の
+% \dst{}のためのオプションについて述べています。
+%
+% \item[付録\ref{app:pldoc}]
+% \upLaTeXe{}のdtxファイルをまとめて、一つのソースコード説明書に
+% するための文書ファイルの説明をしています。
+%
+% \item[付録\ref{app:omake}]
+% 付録\ref{app:pldoc}で説明した文書ファイルを処理するshスクリプト(手順)
+% などについて説明しています。
+% \end{description}
+% \end{quote}
+%\else
+% This document consists of following parts:
+%
+% \begin{quote}
+% \begin{description}
+% \item[Section \ref{platex:intro}]
+% This section; describes this document itself.
+%
+% \item[Section \ref{platex:plcore}]
+% Brief explanation of extensions in \upLaTeXe.
+% Also describes the standard classes and packages.
+%
+% \item[Section \ref{platex:compatibility}]
+% The compatibility note for users of the old version of
+% \upLaTeXe\ or those of the original \pLaTeXe/\LaTeXe.
+%
+% \item[Appendix \ref{app:dst}]
+% Describes \dst\ Options for this document.
+%
+% \item[Appendix \ref{app:pldoc}]
+% Description of `upldoc.tex' (counterpart for `source2e.tex' in \LaTeXe).
+%
+% \item[Appendix \ref{app:omake}]
+% Description of a shell script to process `upldoc.tex', etc.
+% \end{description}
+% \end{quote}
+%\fi
+%
+%
+%\ifJAPANESE
+% \section{\upLaTeXe{}の機能について}\label{platex:plcore}
+% \upLaTeXe{}が提供するファイルは、次の3種類に分類することができます。
+% この構成は\pLaTeXe{}と同様です。
+%
+% \begin{itemize}
+% \item フォーマットファイル
+% \item クラスファイル
+% \item パッケージファイル
+% \end{itemize}
+%\else
+% \section{About Functions of \pLaTeXe}\label{platex:plcore}
+% The structure of \upLaTeXe\ is similar to that of \pLaTeXe;
+% it consists of 3 types of files: a format (uplatex.ltx),
+% classes and packages.
+%\fi
+%
+%\ifJAPANESE
+% \subsection{フォーマットファイル}
+% \upLaTeX{}のフォーマットファイルを作成するには、
+% ソースファイル``uplatex.ltx''を\eupTeX{}のINIモードで処理します
+% \footnote{2016年以前は\upTeX{}と\eupTeX{}のどちらでもフォーマットを作成する
+% ことができましたが、2017年に\LaTeX{}が\eTeX{}必須となったことに伴い、
+% \upLaTeX{}も\eupTeX{}が必須となりました。}。
+% ただし、\TeX\ LiveやW32\TeX{}ではこの処理を簡単にする|fmtutil-sys|あるいは
+% |fmtutil|というプログラムが用意されています。
+% 以下を実行すれば、フォーマットファイル\file{uplatex.fmt}が作成されます。
+%\else
+% \subsection{About the Format}
+% To make a format for \upLaTeX,
+% process ``uplatex.ltx'' with INI mode of \eupTeX.\footnote{Formerly
+% both \upTeX\ and \eupTeX\ can make the format file for \upLaTeX, however,
+% it's not true anymore because \LaTeX\ requires \eTeX\ since 2017.}
+% A handy command `fmtutil-sys' (or `fmtutil') for this purpose
+% is available in \TeX\ Live. The following command generates \file{uplatex.fmt}.
+%\fi
+%\begin{verbatim}
+% fmtutil-sys --byfmt uplatex
+%\end{verbatim}
+%
+%\ifJAPANESE
+% 次のリストが、\file{uplatex.ltx}の内容です。
+% ただし、このバージョンでは、\LaTeX{}から\upLaTeX{}への拡張を
+% \file{plcore.ltx}(\pLaTeX{}によって提供される)および
+% \file{uplcore.ltx}をロードすることで行ない、
+% \file{latex.ltx}には直接、手を加えないようにしています。
+% したがって\file{uplatex.ltx}はとても短いものとなっています。
+% \file{latex.ltx}には\LaTeX{}のコマンドが、
+% \file{uplcore.ltx}には\upLaTeX{}で拡張したコマンドが定義されています。
+%\else
+% The content of \file{uplatex.ltx} is shown below.
+% In the current version of \upLaTeX,
+% first we simply load \file{latex.ltx} and
+% modify/extend some definitions by loading
+% \file{plcore.ltx} (available from \pLaTeX) and \file{uplcore.ltx}.
+%\fi
+% \begin{macrocode}
+%<*plcore>
+% \end{macrocode}
+%
+%\ifJAPANESE
+% \file{latex.ltx}の末尾で使われている|\dump|をいったん無効化します。
+%\else
+% Temporarily disable |\dump| at the end of \file{latex.ltx}.
+%\fi
+% \begin{macrocode}
+\let\orgdump\dump
+\let\dump\relax
+% \end{macrocode}
+%
+%\ifJAPANESE
+% \file{latex.ltx}を読み込みます。
+% \TeX\ Liveの標準的インストールでは、この中でBabel由来のハイフネーション・
+% パターン\file{hyphen.cfg}が読み込まれるはずです。
+%\else
+% Load \file{latex.ltx} here.
+% Within the standard installation of \TeX\ Live, \file{hyphen.cfg}
+% provided by ``Babel'' package will be used.
+%\fi
+% \begin{macrocode}
+\input latex.ltx
+% \end{macrocode}
+%
+%\ifJAPANESE
+% \file{plcore.ltx}と\file{uplcore.ltx}を読み込みます。
+% \changes{v1.0s-u02}{2017/12/10}{\file{uplcore.ltx}の前に
+% \file{plcore.ltx}を読み込むようにした(最近の\pLaTeX{}が前提)}
+%\else
+% Load \file{plcore.ltx} and \file{uplcore.ltx}.
+% \changes{v1.0s-u02}{2017/12/10}{Load \file{plcore.ltx} before
+% \file{uplcore.ltx} (recent version of \pLaTeX\ is assumed)}
+%\fi
+% \begin{macrocode}
+\typeout{**************************^^J%
+ *^^J%
+ * making upLaTeX format^^J%
+ *^^J%
+ **************************}
+\makeatletter
+\input plcore.ltx
+\input uplcore.ltx
+% \end{macrocode}
+%
+%\ifJAPANESE
+% フォント関連のデフォルト設定ファイルである、
+% \file{upldefs.ltx}を読み込みます。
+% \TeX{}の入力ファイル検索パスに設定されている
+% ディレクトリに\file{upldefs.cfg}ファイルがある場合は、
+% そのファイルを使います。
+% \changes{v1.0s-u01}{2017/12/05}{デフォルト設定ファイルの読み込みを
+% \file{uplcore.ltx}から\file{uplatex.ltx}へ移動
+% (based on platex.dtx 2017/12/05 v1.0s)}
+%\else
+% Load font-related default settings, \file{upldefs.ltx}.
+% If a file \file{upldefs.cfg} is found, then that file will be
+% used instead.
+% \changes{v1.0s-u01}{2017/12/05}{Moved loading default settings
+% from \file{uplcore.ltx} to \file{uplatex.ltx}
+% (based on platex.dtx 2017/12/05 v1.0s)}
+%\fi
+% \begin{macrocode}
+\InputIfFileExists{upldefs.cfg}
+ {\typeout{*************************************^^J%
+ * Local config file upldefs.cfg used^^J%
+ *************************************}}%
+ {\input{upldefs.ltx}}
+% \end{macrocode}
+%
+%\ifJAPANESE
+% 以前のバージョンでは、フォーマット作成時に\upLaTeX{}のバージョンが
+% わかるように、端末に表示していましたが、|\everyjob| にバナー表示
+% 以外のコードが含まれる可能性を考慮し、安全のためやめました。
+% \changes{v1.0w-u02}{2018/04/08}{安全のためフォーマット作成時の
+% バナー表示をやめた
+% (based on platex.dtx 2018/04/08 v1.0w)}
+%\else
+% In the previous version, we displayed \upLaTeX\ version
+% on the terminal, so that it can be easily recognized
+% during format creation; however |\everyjob| can contain
+% any code other than showing a banner, so now disabled.
+% \changes{v1.0w-u02}{2018/04/08}{Stop showing banner during
+% format generation for safety
+% (based on platex.dtx 2018/04/08 v1.0w)}
+%\fi
+% \begin{macrocode}
+%\the\everyjob
+% \end{macrocode}
+%
+%\ifJAPANESE
+% \upLaTeXe{}の起動時に\file{uplatex.cfg}がある場合、それを読み込む
+% ようにします(\pLaTeXe{}が\file{platex.cfg}を読み込むのと同様)。
+% バージョン2016/07/01ではコードを\file{uplcore.ltx}に入れていました
+% が、\file{uplatex.ltx}へ移動しました。
+% \changes{v1.0m-u01}{2016/08/26}{\file{uplatex.cfg}の読み込みを
+% \file{uplcore.ltx}から\file{uplatex.ltx}へ移動
+% (based on platex.dtx 2016/08/26 v1.0m)}
+%\else
+% Load \file{uplatex.cfg} if it exists at runtime of \upLaTeXe.
+% (Counterpart of \file{platex.cfg} in \pLaTeXe.)
+% \changes{v1.0m-u01}{2016/08/26}{Moved loading \file{uplatex.cfg}
+% from \file{uplcore.ltx} to \file{uplatex.ltx}
+% (based on platex.dtx 2016/08/26 v1.0m)}
+%\fi
+% \begin{macrocode}
+\everyjob\expandafter{%
+ \the\everyjob
+ \IfFileExists{uplatex.cfg}{%
+ \typeout{*************************^^J%
+ * Loading uplatex.cfg.^^J%
+ *************************}%
+ \input{uplatex.cfg}}{}%
+}
+% \end{macrocode}
+%
+%\ifJAPANESE
+% フォーマットファイルにダンプします。
+%\else
+% Dump to the format file.
+%\fi
+% \begin{macrocode}
+\let\dump\orgdump
+\let\orgdump\@undefined
+\makeatother
+\dump
+%\endinput
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</plcore>
+% \end{macrocode}
+%
+%\ifJAPANESE
+% 実際に\upLaTeXe{}への拡張を行なっている\file{uplcore.ltx}は、
+% \dst{}プログラムによって、次のファイルの断片が連結されたものです。
+%
+% \begin{itemize}
+% \item \file{uplvers.dtx}は、\upLaTeXe{}のフォーマットバージョンを
+% 定義しています。
+% \end{itemize}
+%
+% また、プリロードフォントや組版パラメータなどのデフォルト設定は、
+% \file{uplatex.ltx}の中で\file{upldefs.ltx}をロードすることにより行います
+% \footnote{旧版では\file{uplcore.ltx}の中でロードしていましたが、
+% 2018年以降の新しいコミュニティ版\upLaTeX{}では
+% \file{uplatex.ltx}から読み込むことにしました。}。
+% このファイル\file{upldefs.ltx}も\file{uplfonts.dtx}から生成されます。
+% \begin{chuui}
+% このファイルに記述されている設定を変更すれば
+% \upLaTeXe{}をカスタマイズすることができますが、
+% その場合は\file{upldefs.ltx}を直接修正するのではなく、いったん
+% \file{upldefs.cfg}という名前でコピーして、そのファイルを編集してください。
+% フォーマット作成時に\file{upldefs.cfg}が存在した場合は、そちらが
+% \file{upldefs.ltx}の代わりに読み込まれます。
+% \end{chuui}
+%\else
+% The file \file{uplcore.ltx}, which provides modifications/extensions
+% to make \upLaTeXe, is a concatenation of stripped files below
+% using \dst\ program.
+%
+% \begin{itemize}
+% \item \file{uplvers.dtx} defines the format version of \upLaTeXe.
+% \item \file{uplfonts.dtx} extends \NFSS2 for Japanese font selection.
+% \item \file{plcore.dtx} (the same content as \pLaTeXe); defines other
+% modifications to \LaTeXe.
+% \end{itemize}
+%
+% Moreover, default settings of pre-loaded fonts and typesetting parameters
+% are done by loading \file{upldefs.ltx} inside
+% \file{uplatex.ltx}.\footnote{Older \upLaTeX\ loaded \file{upldefs.ltx}
+% inside \file{uplcore.ltx}; however, \upLaTeX\ community edition newer than
+% 2018 loads \file{upldefs.ltx} inside \file{uplatex.ltx}.}
+% This file \file{upldefs.ltx} is also stripped from \file{uplfonts.dtx}.
+% \begin{chuui}
+% You can customize \upLaTeXe\ by tuning these settings.
+% If you need to do that, copy/rename it as \file{upldefs.cfg} and edit it,
+% instead of overwriting \file{upldefs.ltx} itself.
+% If a file named \file{upldefs.cfg} is found at a format creation
+% time, it will be read as a substitute of \file{upldefs.ltx}.
+% \end{chuui}
+%\fi
+%
+%\ifJAPANESE
+% ここまで見てきたように、\upLaTeX{}の各ファイルはそれぞれ\pLaTeX{}での
+% 対応するファイル名の頭に``u''を付けた名前になっています。
+%\else
+% As shown above, the files in \upLaTeX\ is named after \pLaTeX\ ones,
+% prefixed with ``u.''
+%\fi
+%
+%
+%\ifJAPANESE
+% \subsubsection{バージョン}
+% \upLaTeXe{}のバージョンやフォーマットファイル名は、
+% \file{uplvers.dtx}で定義しています。これは、\pLaTeXe{}のバージョンや
+% フォーマットファイル名が\file{plvers.dtx}で定義されているのと同じです。
+%\else
+% \subsubsection{Version}
+% The version (like ``\pfmtversion'') and the format name
+% (``\pfmtname'') of \upLaTeXe\ are defined in \file{uplvers.dtx}.
+% This is similar to \pLaTeXe, which defines those in \file{plvers.dtx}.
+%\fi
+%
+%
+%\ifJAPANESE
+% \subsubsection{\NFSS2コマンド}
+% \upLaTeXe{}は\pLaTeXe{}と共通の\file{plcore.ltx}を使用していますので、
+% \NFSS2の和文フォント選択への拡張が有効になっています。
+%\else
+% \subsubsection{\NFSS2 Commands}
+% \upLaTeXe\ shares \file{plcore.dtx} with \pLaTeXe, so
+% the extensions of \NFSS2 for selecting Japanese fonts are available.
+%\fi
+%
+%
+%\ifJAPANESE
+% \subsubsection{出力ルーチンとフロート}
+% \upLaTeXe{}は\pLaTeXe{}と共通の\file{plcore.ltx}を使用していますので、
+% 出力ルーチンや脚注マクロなどは\pLaTeXe{}と同じように動作します。
+%\else
+% \subsubsection{Output Routine and Floats}
+% \upLaTeXe\ shares \file{plcore.dtx} with \pLaTeXe, so
+% the output routine and footnote macros will behave similar to \pLaTeXe.
+%\fi
+%
+%
+%\ifJAPANESE
+% \subsection{クラスファイルとパッケージファイル}
+%
+% \upLaTeXe{}が提供をするクラスファイルやパッケージファイルは、
+% \pLaTeXe{}に含まれるファイルを基にしています。
+%
+% \upLaTeXe{}に付属のクラスファイルは、次のとおりです。
+%
+% \begin{itemize}
+% \item ujarticle.cls, ujbook.cls, ujreport.cls\par
+% 横組用の標準クラスファイル。
+% \file{ujclasses.dtx}から作成される。
+% それぞれjarticle.cls, jbook.cls, jreport.clsの\upLaTeX{}版。
+%
+% \item utarticle.cls, utbook.cls, utreport.cls\par
+% 縦組用の標準クラスファイル。
+% \file{ujclasses.dtx}から作成される。
+% それぞれtarticle.cls, tbook.cls, treport.clsの\upLaTeX{}版。
+% \end{itemize}
+%
+% なおjltxdoc.clsの\upLaTeX{}版はありませんが、これは\pLaTeX{}のものが
+% \upLaTeX{}でもそのまま使えます。
+%\else
+% \subsection{Classes and Packages}
+%
+% Classes and packages bundled with \upLaTeXe\ are based on
+% those in original \pLaTeXe, and modified some parameters.
+%
+% \upLaTeXe\ classes:
+%
+% \begin{itemize}
+% \item ujarticle.cls, ujbook.cls, ujreport.cls\par
+% Standard \emph{yoko-kumi} (horizontal writing) classes;
+% stripped from \file{ujclasses.dtx}.
+% \upLaTeX\ edition of jarticle.cls, jbook.cls and jreport.cls.
+%
+% \item utarticle.cls, utbook.cls, utreport.cls\par
+% Standard \emph{tate-kumi} (vertical writing) classes;
+% stripped from \file{ujclasses.dtx}.
+% \upLaTeX\ edition of tarticle.cls, tbook.cls and treport.cls.
+% \end{itemize}
+%
+% We don't provide \upLaTeX\ edition of jltxdoc.cls, but the one
+% from \pLaTeX\ can be used also on \upLaTeX\ without problem.
+%\fi
+%
+%\ifJAPANESE
+% また、\upLaTeXe{}に付属のパッケージファイルは、次のとおりです。
+%
+% \begin{itemize}
+% \item uptrace.sty\par
+% ptrace.styの\upLaTeX{}版。
+% \LaTeX{}でフォント選択コマンドのトレースに使う\file{tracefnt.sty}が
+% 再定義してしまう\NFSS2コマンドを、\upLaTeXe{}用に再々定義するための
+% パッケージ。
+% \file{uplfonts.dtx}から作成される。
+% \end{itemize}
+%
+% 他の\pLaTeX{}のパッケージは、\upLaTeX{}でもそのまま動作します。
+%\else
+% \upLaTeXe\ packages:
+%
+% \begin{itemize}
+% \item uptrace.sty\par
+% \upLaTeXe\ version of \file{tracefnt.sty};
+% the package \file{tracefnt.sty} overwrites \upLaTeXe-style \NFSS2
+% commands, so \file{uptrace.sty} provides redefinitions to recover
+% \upLaTeXe\ extensions. Stripped from \file{uplfonts.dtx}.
+% \end{itemize}
+%
+% Other \pLaTeX\ packages work also on \upLaTeX.
+%\fi
+%
+%
+%\ifJAPANESE
+% \section{他のフォーマット・旧バージョンとの互換性}
+% \label{platex:compatibility}
+% ここでは、この\upLaTeXe{}のバージョンと以前のバージョン、あるいは
+% \pLaTeXe{}/\LaTeXe{}との互換性について説明をしています。
+%
+% \subsection{\pLaTeXe{}および\LaTeXe{}との互換性}
+% \upLaTeXe{}は、\pLaTeXe{}の上位互換という形を取っていますので、
+% クラスファイルやいくつかのコマンドを置き換えるだけで、
+% たいていの\pLaTeXe{}文書を簡単に\upLaTeXe{}文書に変更することができます。
+% ただし、\upLaTeXe{}のデフォルトの日本語フォントメトリックは\pLaTeXe{}の
+% それと異なりますので、レイアウトが変化することがあります。
+% また、\LaTeXe{}のいくつかの命令の定義も変更していますので、
+% \LaTeXe{}で処理できるファイルを\upLaTeXe{}で処理した場合に
+% 完全に同じ結果になるとは限りません。
+%
+% また、\upLaTeXe{}は新しいマクロパッケージですので、2.09互換モードを
+% サポートしていません。\LaTeXe{}の仕様に従ってドキュメントを作成して
+% ください。
+%
+% \pLaTeXe{}向けあるいは\LaTeXe{}向けに作られた多くのクラスファイルや
+% パッケージファイルはそのまま使えると思います。
+% ただし、例えばクラスファイルが\pLaTeX{}標準の
+% 漢字エンコーディング(JY1, JT1)を前提としている場合は、
+% \upLaTeX{}で採用した漢字エンコーディング(JY2, JT2)と合致せずに
+% エラーが発生してしまいます。この場合は、そのクラスファイルが
+% \upLaTeX{}に対応していないことになります。このような場合は、
+% \pLaTeX{}を使い続けるか、その作者に連絡して\upLaTeX{}に対応して
+% もらうなどの対応をとってください。
+%\else
+% \section{Compatibility with Other Formats and Older Versions}
+% \label{platex:compatibility}
+% Here we provide some information about the compatibility between
+% current \upLaTeXe\ and older versions or original \pLaTeXe/\LaTeXe.
+%
+% \subsection{Compatibility with \pLaTeXe/\LaTeXe}
+% \upLaTeXe\ is in most part upper compatible with \pLaTeXe,
+% so you can move from \pLaTeXe\ to \upLaTeXe\ by simply replacing
+% the document class and some macros. However, the default Japanese
+% font metrics in \upLaTeXe\ is different from those in \pLaTeXe;
+% therefore, you should not expect identical output from both
+% \pLaTeXe\ and \upLaTeXe.
+%
+% Note that \upLaTeX\ is a new format, so we do \emph{not} provide support
+% for 2.09 compatibility mode. Follow the standard \LaTeXe\ convention!
+%
+% We hope that most classes and packages meant for \LaTeXe/\pLaTeXe\ works
+% also for \upLaTeXe\ without any modification. However for example,
+% if a class or a package uses Kanji encoding `JY1' or `JT1' (default on
+% \pLaTeXe), an error complaining the mismatch of Kanji encoding might
+% happen on \upLaTeX, in which the default is `JY2' and `JT2.'
+% In this case, we have to say that the class or package does not support
+% \upLaTeXe; you should use \pLaTeX, or report to the author of the
+% package or class.
+%\fi
+%
+%\ifJAPANESE
+% \subsection{latexreleaseパッケージへの対応}
+% \LaTeX\ \texttt{<2015/01/01>}で導入されたlatexreleaseパッケージを
+% もとに、新しい\pLaTeX{}ではplatexreleaseパッケージが用意されました。
+% 本来は\upLaTeX{}でも同様のパッケージを用意するのがよいのですが、
+% 現在は\pLaTeX{}から\upLaTeX{}への変更点が含まれていませんので、
+% 幸いplatexreleaseパッケージをそのまま用いることができます。
+% このため、\upLaTeX{}で独自のパッケージを用意することはしていません。
+% platexreleaseパッケージを用いると、過去の\upLaTeX{}をエミュレート
+% したり、フォーマットを作り直すことなく新しい\upLaTeX{}を試したりする
+% ことができます。詳細はplatexreleaseのドキュメントを参照してください。
+%\else
+% \subsection{Support for Package `latexrelease'}
+% \pLaTeX\ provides `platexrelease' package, which is based on
+% `latexrelease' package (introduced in \LaTeX\ \texttt{<2015/01/01>}).
+% It could be better if we also provide a similar package on \upLaTeX,
+% but currently we don't need it; \upLaTeX\ does not have any recent
+% \upLaTeX-specific changes. So, you can safely use `platexrelease'
+% package for emulating the specified format date.
+%\fi
+%
+%
+%
+% \appendix
+%
+%\ifJAPANESE
+% \section{\dst{}プログラムのためのオプション}\label{app:dst}
+% この文書のソース(\file{uplatex.dtx})を\dst{}プログラムで
+% 処理することによって、
+% いくつかの異なるファイルを生成することができます。
+% \dst{}プログラムの詳細は、\file{docstrip.dtx}を参照してください。
+%
+% この文書の\dst{}プログラムのためのオプションは、次のとおりです。
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{l|p{.8\linewidth}}
+% \emph{オプション} & \emph{意味}\\\hline
+% plcore & フォーマットファイルを作るためのファイルを生成\\
+% pldoc & \upLaTeXe{}のソースファイルをまとめて組版するための
+% 文書ファイル(upldoc.tex)を生成\\[2mm]
+% shprog & 上記のファイルを作成するためのshスクリプトを生成\\
+% Xins & 上記のshスクリプトやperlスクリプトを取り出すための
+% \dst{}バッチファイル(Xins.ins)を生成\\
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%\else
+% \section{\dst\ Options}\label{app:dst}
+% By processing \file{uplatex.dtx} with \dst\ program,
+% different files can be generated.
+% Here are the \dst\ options for this document:
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{l|p{.8\linewidth}}
+% \emph{Option} & \emph{Function}\\\hline
+% plcore & Generates a fragment of format sources\\
+% pldoc & Generates `upldoc.tex' for typesetting
+% \upLaTeXe\ sources\\[2mm]
+% shprog & Generates a shell script to process `upldoc.tex'\\
+% Xins & Generates a \dst\ batch file `Xins.ins' for
+% generating the above shell/perl scripts\\
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%\fi
+%
+%
+%\ifJAPANESE
+% \section{文書ファイル}\label{app:pldoc}
+% ここでは、このパッケージに含まれているdtxファイルをまとめて組版し、
+% ソースコード説明書を得るための文書ファイル\file{upldoc.tex}について
+% 説明をしています。個別に処理した場合と異なり、
+% 変更履歴や索引も付きます。
+%
+% デフォルトではソースコードの説明が日本語で書かれます。
+% もし英語の説明書を読みたい場合は、\par\medskip
+% \begin{minipage}{.5\textwidth}\ttfamily
+% | |\cs{newif}\cs{ifJAPANESE}
+% \end{minipage}\par\medskip\noindent
+% という内容の\file{uplatex.cfg}を予め用意してから\file{upldoc.tex}を
+% 処理してください(2016年7月1日以降の\upLaTeXe{}が必要)。
+%
+% コードは\pLaTeXe{}のものと(ファイル名を除き)ほぼ同一なので、
+% ここでは違っている部分だけ説明します。
+%\else
+% \section{Documentation of \upLaTeXe\ sources}\label{app:pldoc}
+% The contents of `upldoc.tex' for typesetting \upLaTeXe\ sources
+% is described here. Compared to individual processings,
+% batch processing using `upldoc.tex' prints also changes and an index.
+%
+% By default, the description of \upLaTeXe\ sources is written in
+% Japanese. If you need English version, first save\par\medskip
+% \begin{minipage}{.5\textwidth}\ttfamily
+% | |\cs{newif}\cs{ifJAPANESE}
+% \end{minipage}\par\medskip\noindent
+% as \file{uplatex.cfg}, and process \file{upldoc.tex}
+% (\upLaTeXe\ newer than July 2016 is required).
+%
+% Here we explain only difference between \file{pldoc.tex} (\pLaTeXe)
+% and \file{upldoc.tex} (\upLaTeXe).
+%\fi
+%
+% \begin{macrocode}
+%<*pldoc>
+\begin{filecontents}{upldoc.dic}
+西暦 せいれき
+和暦 われき
+\end{filecontents}
+% \end{macrocode}
+%\ifJAPANESE
+% \pLaTeXe{}のドキュメントでは、\file{plext.dtx}の中で組み立てるサンプル
+% のために\file{plext}パッケージが必要ですが、\upLaTeXe{}のファイル
+% にはそのようなサンプルが含まれないので除外しています。
+%\else
+% The document of \pLaTeXe\ requires \file{plext} package,
+% since \file{plext.dtx} contains several examples of partial
+% vertical writing. However, we don't have such examples in
+% \upLaTeXe\ files, so no need for it.
+%\fi
+% \begin{macrocode}
+\documentclass{jltxdoc}
+%\usepackage{plext} %% comment out for upLaTeX
+\listfiles
+
+\DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global}
+\DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,%
+ \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi}
+\DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,%
+ \vbox,\vtop,\vcenter}
+\DoNotIndex{\@empty,\immediate,\write}
+\DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup}
+\DoNotIndex{\divide,\advance,\multiply,\count,\dimen}
+\DoNotIndex{\relax,\space,\string}
+\DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,%
+ \closein,\closeout}
+\DoNotIndex{\catcode,\endinput}
+\DoNotIndex{\jobname,\message,\read,\the,\m@ne,\noexpand}
+\DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss,\vss,\unskip}
+\DoNotIndex{\m@ne,\z@,\z@skip,\@ne,\tw@,\p@,\@minus,\@plus}
+\DoNotIndex{\dp,\wd,\ht,\setlength,\addtolength}
+\DoNotIndex{\newcommand, \renewcommand}
+
+\ifJAPANESE
+\IndexPrologue{\part*{索 引}%
+ \markboth{索 引}{索 引}%
+ \addcontentsline{toc}{part}{索 引}%
+イタリック体の数字は、その項目が説明されているページを示しています。
+下線の引かれた数字は、定義されているページを示しています。
+その他の数字は、その項目が使われているページを示しています。}
+\else
+\IndexPrologue{\part*{Index}%
+ \markboth{Index}{Index}%
+ \addcontentsline{toc}{part}{Index}%
+The italic numbers denote the pages where the corresponding entry
+is described, numbers underlined point to the definition,
+all others indicate the places where it is used.}
+\fi
+%
+\ifJAPANESE
+\GlossaryPrologue{\part*{変更履歴}%
+ \markboth{変更履歴}{変更履歴}%
+ \addcontentsline{toc}{part}{変更履歴}}
+\else
+\GlossaryPrologue{\part*{Change History}%
+ \markboth{Change History}{Change History}%
+ \addcontentsline{toc}{part}{Change History}}
+\fi
+
+\makeatletter
+\def\changes@#1#2#3{%
+ \let\protect\@unexpandable@protect
+ \edef\@tempa{\noexpand\glossary{#2\space
+ \currentfile\space#1\levelchar
+ \ifx\saved@macroname\@empty
+ \space\actualchar\generalname
+ \else
+ \expandafter\@gobble
+ \saved@macroname\actualchar
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar
+ \fi
+ :\levelchar #3}}%
+ \@tempa\endgroup\@esphack}
+\renewcommand*\MacroFont{\fontencoding\encodingdefault
+ \fontfamily\ttdefault
+ \fontseries\mddefault
+ \fontshape\updefault
+ \small
+ \hfuzz 6pt\relax}
+\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.8em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.4em}}
+\makeatother
+\RecordChanges
+\CodelineIndex
+\EnableCrossrefs
+\setcounter{IndexColumns}{2}
+\settowidth\MacroIndent{\ttfamily\scriptsize 000\ }
+% \end{macrocode}
+%\ifJAPANESE
+% この文書のタイトル・著者・日付を設定します。
+% \changes{v1.0h-u00}{2016/05/08}{ドキュメントから\file{uplpatch.ltx}を除外
+% (based on platex.dtx 2016/05/08 v1.0h)}
+% \changes{v1.0l-u01}{2016/06/19}{パッチレベルを\file{uplvers.dtx}から取得
+% (based on platex.dtx 2016/06/19 v1.0l)}
+% \changes{v1.0y-u02}{2018/09/22}{最終更新日を\file{upldoc.pdf}に表示
+% (based on platex.dtx 2018/09/22 v1.0y)}
+%\else
+% Set the title, authors and the date for this document.
+% \changes{v1.0h-u00}{2016/05/08}{Exclude \file{uplpatch.ltx} from the document
+% (based on platex.dtx 2016/05/08 v1.0h)}
+% \changes{v1.0l-u01}{2016/06/19}{Get the patch level from \file{uplvers.dtx}
+% (based on platex.dtx 2016/06/19 v1.0l)}
+% \changes{v1.0y-u02}{2018/09/22}{Show last update info on \file{upldoc.pdf}
+% (based on platex.dtx 2018/09/22 v1.0y)}
+%\fi
+% \begin{macrocode}
+ \title{The \upLaTeXe\ Sources}
+ \author{Ken Nakano \& Japanese \TeX\ Development Community \& TTK}
+
+% Get the (temporary) date and up-patch level from uplvers.dtx
+\makeatletter
+\let\patchdate=\@empty
+\begingroup
+ \def\ProvidesFile#1[#2 #3]#4\def\uppatch@level#5{%
+ \date{#2}\xdef\patchdate{#5}\endinput}
+ \input{uplvers.dtx}
+\endgroup
+
+% Add the patch version if available.
+\def\Xpatch{}
+\ifx\patchdate\Xpatch\else
+ \edef\@date{\@date\space version \patchdate}
+\fi
+
+% Obtain the last update info, as upLaTeX does not change format date
+% -> if successful, reconstruct the date completely
+\def\lastupd@te{0000/00/00}
+\begingroup
+ \def\ProvidesFile#1[#2 #3]{%
+ \def\@tempd@te{#2}\endinput
+ \@ifl@t@r{\@tempd@te}{\lastupd@te}{%
+ \global\let\lastupd@te\@tempd@te
+ }{}}
+ \let\ProvidesClass\ProvidesFile
+ \let\ProvidesPackage\ProvidesFile
+ \input{uplvers.dtx}
+ \input{uplfonts.dtx}
+ \input{ukinsoku.dtx}
+ \input{ujclasses.dtx}
+\endgroup
+\@ifl@t@r{\lastupd@te}{0000/00/00}{%
+ \date{Version \patchdate\break (last updated: \lastupd@te)}%
+}{}
+\makeatother
+% \end{macrocode}
+%\ifJAPANESE
+% ここからが本文ページとなります。
+%\else
+% Here starts the document body.
+%\fi
+% \begin{macrocode}
+\begin{document}
+\pagenumbering{roman}
+\maketitle
+\renewcommand\maketitle{}
+\tableofcontents
+\clearpage
+\pagenumbering{arabic}
+
+\DocInclude{uplvers} % upLaTeX version
+
+\DocInclude{uplfonts} % NFSS2 commands
+
+\DocInclude{ukinsoku} % kinsoku parameter
+
+\DocInclude{ujclasses} % Standard class
+
+\StopEventually{\end{document}}
+
+\clearpage
+\pagestyle{headings}
+% Make TeX shut up.
+\hbadness=10000
+\newcount\hbadness
+\hfuzz=\maxdimen
+%
+\PrintChanges
+\clearpage
+%
+\begingroup
+ \def\endash{--}
+ \catcode`\-\active
+ \def-{\futurelet\temp\indexdash}
+ \def\indexdash{\ifx\temp-\endash\fi}
+
+ \PrintIndex
+\endgroup
+\let\PrintChanges\relax
+\let\PrintIndex\relax
+\end{document}
+%</pldoc>
+% \end{macrocode}
+%
+%
+%
+%\ifJAPANESE
+% \section{おまけプログラム}\label{app:omake}
+%
+% \subsection{シェルスクリプト\file{mkpldoc.sh}}\label{app:shprog}
+% \upLaTeXe{}のマクロ定義ファイルをまとめて組版し、変更履歴と索引も
+% 付けるときに便利なシェルスクリプトです。
+% このシェルスクリプトの使用方法は次のとおりです。
+%\begin{verbatim}
+% sh mkpldoc.sh
+%\end{verbatim}
+%
+% コードは\pLaTeXe{}のものと(ファイル名を除き)ほぼ同一なので、
+% ここでは違っている部分だけ説明します。
+%\else
+% \section{Additional Utility Programs}\label{app:omake}
+%
+% \subsection{Shell Script \file{mkpldoc.sh}}\label{app:shprog}
+% A shell script to process `pldoc.tex' and produce a fully indexed
+% source code description. Run |sh mkpldoc.sh| to use it.
+%
+% The script is almost identical to that in \pLaTeXe, so
+% here we describe only the difference.
+%\fi
+%
+% \begin{macrocode}
+%<*shprog>
+%<ja>rm -f upldoc.toc upldoc.idx upldoc.glo
+%<en>rm -f upldoc-en.toc upldoc-en.idx upldoc-en.glo
+echo "" > ltxdoc.cfg
+%<ja>uplatex upldoc.tex
+%<en>uplatex -jobname=upldoc-en upldoc.tex
+% \end{macrocode}
+%\ifJAPANESE
+% 変更履歴や索引の生成にはmendexを用いますが、
+% \upLaTeX{}の場合はUTF-8モードで実行する必要がありますので、
+% |-U|というオプションを付けます\footnote{uplatexコマンドも
+% 実際にはUTF-8モードで実行する必要がありますが、デフォルトの内部漢字
+% コードがUTF-8に設定されているはずですので、\texttt{-kanji=utf8}を
+% 付けなくても処理できると思います。}。
+% makeindexコマンドには、このオプションがありません。
+%\else
+% To make the Change log and Glossary (Change History) for
+% \upLaTeX\ using `mendex,' we need to run it in UTF-8 mode.
+% So, option |-U| is important.\footnote{The command `uplatex'
+% should be also in UTF-8 mode, but it defaults to UTF-8 mode;
+% therefore, we don't need to add \texttt{-kanji=utf8} explicitly.}
+%\fi
+% \begin{macrocode}
+%<ja>mendex -U -s gind.ist -d upldoc.dic -o upldoc.ind upldoc.idx
+%<en>mendex -U -s gind.ist -d upldoc.dic -o upldoc-en.ind upldoc-en.idx
+%<ja>mendex -U -f -s gglo.ist -o upldoc.gls upldoc.glo
+%<en>mendex -U -f -s gglo.ist -o upldoc-en.gls upldoc-en.glo
+echo "\includeonly{}" > ltxdoc.cfg
+%<ja>uplatex upldoc.tex
+%<en>uplatex -jobname=upldoc-en upldoc.tex
+echo "" > ltxdoc.cfg
+%<ja>uplatex upldoc.tex
+%<en>uplatex -jobname=upldoc-en upldoc.tex
+# EOT
+%</shprog>
+% \end{macrocode}
+%
+%
+%\ifJAPANESE
+% \subsection{perlスクリプト\file{dstcheck.pl}}\label{app:plprog}
+% \pLaTeXe{}のものがそのまま使えるので、\upLaTeXe{}では省略します。
+%\else
+% \subsection{Perl Script \file{dstcheck.pl}}\label{app:plprog}
+% The one from \pLaTeXe\ can be use without any change, so
+% omitted here in \upLaTeXe.
+%\fi
+%
+%
+%\ifJAPANESE
+% \subsection{\dst{}バッチファイル}
+% 付録\ref{app:shprog}で説明をしたスクリプトを、このファイルから
+% 取り出すための\dst{}バッチファイルです。コードは\pLaTeXe{}の
+% ものと(ファイル名を除き)ほぼ同一なので、説明は割愛します。
+%\else
+% \subsection{\dst{} Batch file}
+% Here we introduce a \dst\ batch file `Xins.ins,' which generates the
+% script described in Appendix \ref{app:shprog}.
+% The code is almost identical to that in \pLaTeXe.
+%\fi
+%
+% \begin{macrocode}
+%<*Xins>
+\input docstrip
+\keepsilent
+% \end{macrocode}
+%
+% \begin{macrocode}
+{\catcode`#=12 \gdef\MetaPrefix{## }}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\declarepreamble\thispre
+\endpreamble
+\usepreamble\thispre
+% \end{macrocode}
+%
+% \begin{macrocode}
+\declarepostamble\thispost
+\endpostamble
+\usepostamble\thispost
+% \end{macrocode}
+%
+% \begin{macrocode}
+\generate{
+ \file{mkpldoc.sh}{\from{uplatex.dtx}{shprog,ja}}
+ \file{mkpldoc-en.sh}{\from{uplatex.dtx}{shprog,en}}
+}
+\endbatchfile
+%</Xins>
+% \end{macrocode}
+%
+% \newpage
+% \begin{thebibliography}{9}
+% \bibitem{tb108tanaka}
+% Takuji Tanaka,
+% \newblock Up\TeX\ --- Unicode version of \pTeX\ with CJK extensions
+% \newblock TUGboat issue 34:3, 2013.\\
+% (\texttt{http://tug.org/TUGboat/tb34-3/tb108tanaka.pdf})
+% \end{thebibliography}
+%
+% \iffalse
+% ここで、このあとに組版されるかもしれない文書のために、
+% 節見出しの番号を算用数字に戻します。
+% \fi
+%
+% \renewcommand{\thesection}{\arabic{section}}
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/uplatex/uplatex.ini b/language/japanese/uplatex/uplatex.ini
new file mode 100644
index 0000000000..5ac594b3aa
--- /dev/null
+++ b/language/japanese/uplatex/uplatex.ini
@@ -0,0 +1,9 @@
+%% for upLaTeX (Unicode pLaTeX)
+%% written by Tono san (modified by texjporg 2016/05/12)
+%%
+\begingroup \catcode`\{=1 \catcode`\}=2%
+ \immediate\write20{<<< making "uplatex with Babel" format >>>}
+\endgroup
+\scrollmode
+\input uplatex.ltx
+\endinput
diff --git a/language/japanese/uplatex/uplatex.pdf b/language/japanese/uplatex/uplatex.pdf
new file mode 100644
index 0000000000..cb65a3fef6
--- /dev/null
+++ b/language/japanese/uplatex/uplatex.pdf
Binary files differ
diff --git a/language/japanese/uplatex/uplcls.ins b/language/japanese/uplatex/uplcls.ins
new file mode 100644
index 0000000000..7876d28c99
--- /dev/null
+++ b/language/japanese/uplatex/uplcls.ins
@@ -0,0 +1,49 @@
+\input docstrip
+\keepsilent
+\ifToplevel{\askonceonly}
+\usedir{tex/uplatex/base}
+
+\Msg{*** Generating the upLaTeX class files ***}
+
+\preamble
+
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016 Takuji Tanaka
+Copyright (c) 2016-2019 Japanese TeX Development Community
+
+This file is part of the upLaTeX2e system (community edition).
+--------------------------------------------------------------
+
+\endpreamble
+
+%
+% 横組用クラスファイル
+%
+\generate{
+ \file{ujarticle.cls}{\from{ujclasses.dtx}{article,yoko}}
+ \file{ujreport.cls}{\from{ujclasses.dtx}{report,yoko}}
+ \file{ujbook.cls}{\from{ujclasses.dtx}{book,yoko}}
+ \file{ujsize10.clo}{\from{ujclasses.dtx}{10pt,yoko}}
+ \file{ujsize11.clo}{\from{ujclasses.dtx}{11pt,yoko}}
+ \file{ujsize12.clo}{\from{ujclasses.dtx}{12pt,yoko}}
+ \file{ujbk10.clo}{\from{ujclasses.dtx}{10pt,bk,yoko}}
+ \file{ujbk11.clo}{\from{ujclasses.dtx}{11pt,bk,yoko}}
+ \file{ujbk12.clo}{\from{ujclasses.dtx}{12pt,bk,yoko}}
+}
+
+%
+% 縦組用クラスファイル
+%
+\generate{
+ \file{utarticle.cls}{\from{ujclasses.dtx}{article,tate}}
+ \file{utreport.cls}{\from{ujclasses.dtx}{report,tate}}
+ \file{utbook.cls}{\from{ujclasses.dtx}{book,tate}}
+ \file{utsize10.clo}{\from{ujclasses.dtx}{10pt,tate}}
+ \file{utsize11.clo}{\from{ujclasses.dtx}{11pt,tate}}
+ \file{utsize12.clo}{\from{ujclasses.dtx}{12pt,tate}}
+ \file{utbk10.clo}{\from{ujclasses.dtx}{10pt,bk,tate}}
+ \file{utbk11.clo}{\from{ujclasses.dtx}{11pt,bk,tate}}
+ \file{utbk12.clo}{\from{ujclasses.dtx}{12pt,bk,tate}}
+}
+
+\endbatchfile
diff --git a/language/japanese/uplatex/upldoc.pdf b/language/japanese/uplatex/upldoc.pdf
new file mode 100644
index 0000000000..807e450215
--- /dev/null
+++ b/language/japanese/uplatex/upldoc.pdf
Binary files differ
diff --git a/language/japanese/uplatex/upldocs.ins b/language/japanese/uplatex/upldocs.ins
new file mode 100644
index 0000000000..8dd59de163
--- /dev/null
+++ b/language/japanese/uplatex/upldocs.ins
@@ -0,0 +1,24 @@
+\input docstrip
+\keepsilent
+\ifToplevel{\askonceonly}
+\usedir{tex/uplatex/base}
+
+\Msg{*** Generating the upLaTeX files for making the documents ***}
+
+\preamble
+
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016 Takuji Tanaka
+Copyright (c) 2016-2018 Japanese TeX Development Community
+
+This file is part of the upLaTeX2e system (community edition).
+--------------------------------------------------------------
+
+\endpreamble
+
+\generate{
+ \file{upldoc.tex}{\from{uplatex.dtx}{pldoc}}
+ \file{Xins.ins}{\from{uplatex.dtx}{Xins}}
+}
+
+\endbatchfile
diff --git a/language/japanese/uplatex/uplfmt.ins b/language/japanese/uplatex/uplfmt.ins
new file mode 100644
index 0000000000..884cfc1840
--- /dev/null
+++ b/language/japanese/uplatex/uplfmt.ins
@@ -0,0 +1,32 @@
+\input docstrip
+\keepsilent
+\ifToplevel{\askonceonly}
+\usedir{tex/uplatex/base}
+
+\Msg{*** Generating the upLaTeX files for making the documents ***}
+
+\preamble
+
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016 Takuji Tanaka
+Copyright (c) 2016-2018 Japanese TeX Development Community
+
+This file is part of the upLaTeX2e system (community edition).
+--------------------------------------------------------------
+
+\endpreamble
+
+\generate{
+ \file{uplatex.ltx}{\from{uplatex.dtx}{plcore}}
+ \file{uplcore.ltx}{\from{uplvers.dtx}{plcore}
+ \from{uplvers.dtx}{plfinal}}
+ \file{ukinsoku.tex}{\from{ukinsoku.dtx}{plcore}}
+ \file{upldefs.ltx}{\from{uplfonts.dtx}{pldefs,xpt}}
+ \file{jy2mc.fd}{\from{uplfonts.dtx}{JY2mc}}
+ \file{jy2gt.fd}{\from{uplfonts.dtx}{JY2gt}}
+ \file{jt2mc.fd}{\from{uplfonts.dtx}{JT2mc}}
+ \file{jt2gt.fd}{\from{uplfonts.dtx}{JT2gt}}
+ \file{uptrace.sty}{\from{uplfonts.dtx}{trace}}
+}
+
+\endbatchfile
diff --git a/language/japanese/uplatex/uplfonts.dtx b/language/japanese/uplatex/uplfonts.dtx
new file mode 100644
index 0000000000..1a988137bb
--- /dev/null
+++ b/language/japanese/uplatex/uplfonts.dtx
@@ -0,0 +1,482 @@
+% \iffalse meta-comment
+%% File: uplfonts.dtx
+%
+% pLaTeX fonts files:
+% Copyright 1994-2006 ASCII Corporation.
+% and modified for upLaTeX
+%
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016 Takuji Tanaka
+% Copyright (c) 2016-2018 Japanese TeX Development Community
+%
+% This file is part of the upLaTeX2e system (community edition).
+% --------------------------------------------------------------
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ifx\JAPANESEtrue\undefined
+ \expandafter\newif\csname ifJAPANESE\endcsname
+ \JAPANESEtrue
+\fi
+\def\eTeX{$\varepsilon$-\TeX}
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+\def\upTeX{u\pTeX}
+\def\eupTeX{$\varepsilon$-\upTeX}
+\def\upLaTeX{u\pLaTeX}
+\def\upLaTeXe{u\pLaTeXe}
+%</driver>
+% \fi
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.5-u00}{2011/05/07}{p\LaTeX{}用からup\LaTeX{}用に修正。
+% (based on plfonts.dtx 2006/11/10 v1.5)}
+% \changes{v1.6a-u00}{2016/04/06}{p\LaTeX{}の変更に追随。
+% (based on plfonts.dtx 2016/04/01 v1.6a)}
+% \changes{v1.6b-u00}{2016/04/30}{uptrace.styの冒頭でtracefnt.styを
+% \cs{RequirePackageWithOptions}するようにした
+% (based on plfonts.dtx 2016/04/30 v1.6b)}
+% \changes{v1.6c-u00}{2016/06/06}{p\LaTeX{}の変更に追随。
+% (based on plfonts.dtx 2016/06/06 v1.6c)}
+% \changes{v1.6d-u00}{2016/06/19}{p\LaTeX{}の変更に追随。
+% (based on plfonts.dtx 2016/06/19 v1.6d)}
+% \changes{v1.6e-u00}{2016/06/29}{p\LaTeX{}の変更に追随。
+% (based on plfonts.dtx 2016/06/26 v1.6e)}
+% \changes{v1.6f-u00}{2017/03/05}{uptrace.styのplatexrelease対応
+% (based on plfonts.dtx 2017/02/20 v1.6f)}
+% \changes{v1.6g-u00}{2017/03/08}{p\LaTeX{}の変更に追随。
+% (based on plfonts.dtx 2017/03/07 v1.6g)}
+% \changes{v1.6h-u00}{2017/08/05}{p\LaTeX{}の変更に追随。
+% (based on plfonts.dtx 2017/08/05 v1.6h)}
+% \changes{v1.6i-u00}{2017/09/24}{p\LaTeX{}の変更に追随。
+% (based on plfonts.dtx 2017/09/24 v1.6i)}
+% \changes{v1.6j-u00}{2017/11/06}{p\LaTeX{}の変更に追随。
+% (based on plfonts.dtx 2017/11/06 v1.6j)}
+% \changes{v1.6k-u00}{2017/12/05}{デフォルト設定ファイルの読み込みを
+% \file{uplcore.ltx}から\file{uplatex.ltx}へ移動
+% (based on plfonts.dtx 2017/12/05 v1.6k)}
+% \changes{v1.6k-u01}{2017/12/10}{uptraceパッケージは
+% ptraceパッケージを読み込むだけとした}
+% \changes{v1.6k-u02}{2017/12/10}{p\LaTeX{}との統合のため、
+% up\LaTeX{}用の最小限の変更だけを定義するようにした}
+% \changes{v1.6l-u02}{2018/02/04}{p\LaTeX{}の変更に追随。
+% (based on plfonts.dtx 2018/02/04 v1.6l)}
+% \changes{v1.6q-u02}{2018/07/03}{p\LaTeX{}の変更に追随。
+% (based on plfonts.dtx 2018/07/03 v1.6q)}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{uplfonts.dtx}[2018/07/03 v1.6q-u02 upLaTeX New Font Selection Scheme]
+% \iffalse
+\documentclass{jltxdoc}
+\GetFileInfo{uplfonts.dtx}
+\title{up\LaTeXe{}のフォントコマンド\space\fileversion}
+\author{Ken Nakano \& Hideaki Togashi \& TTK}
+\date{作成日:\filedate}
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{概要}\label{plfonts:intro}
+% ここでは、和文書体を\NFSS2のインターフェイスで選択するための
+% コマンドやマクロについて説明をしています。
+% また、フォント定義ファイルや初期設定ファイルなどの説明もしています。
+% 新しいフォント選択コマンドの使い方については、\file{fntguide.tex}や
+% \file{usrguide.tex}を参照してください。
+% \changes{v1.5-u00}{2011/05/07}{p\LaTeX{}用からup\LaTeX{}用に修正。
+% (based on plfonts.dtx 2006/11/10 v1.5)}
+% \changes{v1.6k-u02}{2017/12/10}{p\LaTeX{}との統合のため、
+% up\LaTeX{}用の最小限の変更だけを定義するようにした}
+%
+% \begin{description}
+% \item[第\ref{plfonts:intro}節] この節です。このファイルの概要と
+% \dst{}プログラムのためのオプションを示しています。
+% \item[第\ref{plfonts:codes}節] 実際のコードの部分です。
+% \item[第\ref{plfonts:pldefs}節] プリロードフォントやエラーフォントなどの
+% 初期設定について説明をしています。
+% \item[第\ref{plfonts:fontdef}節] フォント定義ファイルについて
+% 説明をしています。
+% \end{description}
+%
+%
+% \subsection{\dst{}プログラムのためのオプション}
+% \dst{}プログラムのためのオプションを次に示します。
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{l|p{0.7\linewidth}}
+% \emph{オプション} & \emph{意味}\\\hline
+% plcore & \file{uplcore.ltx}の断片を生成するオプションでしたが、削除。\\
+% trace & \file{uptrace.sty}を生成します。\\
+% JY2mc & 横組用、明朝体のフォント定義ファイルを生成します。\\
+% JY2gt & 横組用、ゴシック体のフォント定義ファイルを生成します。\\
+% JT2mc & 縦組用、明朝体のフォント定義ファイルを生成します。\\
+% JT2gt & 縦組用、ゴシック体のフォント定義ファイルを生成します。\\
+% pldefs & \file{upldefs.ltx}を生成します。次の4つのオプションを付加する
+% ことで、プリロードするフォントを選択することができます。
+% デフォルトは10ptです。\\
+% xpt & 10pt プリロード\\
+% xipt & 11pt プリロード\\
+% xiipt & 12pt プリロード\\
+% ori & \file{plfonts.tex}に似たプリロード\\
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+%
+%
+% \section{コード}\label{plfonts:codes}
+% \NFSS2の拡張は、p\LaTeX{}において\file{plfonts.dtx}から生成される
+% \file{plcore.ltx}をそのまま利用するので、up\LaTeX{}では定義しません。
+% 後方互換性のため、\file{uptrace.sty}を提供しますが、
+% これも単に\file{ptrace.sty}を読み込むだけとします。
+%
+% \changes{v1.6b-u00}{2016/04/30}{uptrace.styの冒頭でtracefnt.styを
+% \cs{RequirePackageWithOptions}するようにした}
+% \changes{v1.6k-u01}{2017/12/10}{uptraceパッケージは
+% ptraceパッケージを読み込むだけとした}
+% \begin{macrocode}
+%<*trace>
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{uptrace}
+ [2017/12/10 v1.6k-u02 Standard upLaTeX package (font tracing)]
+\RequirePackageWithOptions{ptrace}
+%</trace>
+% \end{macrocode}
+%
+% デフォルト設定ファイル\file{upldefs.ltx}は、もともと\file{uplcore.ltx}の途中で
+% 読み込んでいましたが、2018年以降の新しいコミュニティ版\upLaTeX{}では
+% \file{uplatex.ltx}から読み込むことにしました。
+% 実際の中身については、第\ref{plfonts:pldefs}節を参照してください。
+% \changes{v1.6k-u00}{2017/12/05}{デフォルト設定ファイルの読み込みを
+% \file{uplcore.ltx}から\file{uplatex.ltx}へ移動
+% (based on plfonts.dtx 2017/12/05 v1.6k)}
+%
+%
+%
+%
+% \section{デフォルト設定ファイル}\label{plfonts:pldefs}
+% ここでは、フォーマットファイルに読み込まれるデフォルト値を設定しています。
+% この節での内容は\file{upldefs.ltx}に出力されます。
+% このファイルの内容を\file{uplcore.ltx}に含めてもよいのですが、
+% デフォルトの設定を参照しやすいように、別ファイルにしてあります。
+%
+% プリロードサイズは、\dst{}プログラムのオプションで変更することができます。
+% これ以外の設定を変更したい場合は、\file{upldefs.ltx}を
+% 直接、修正するのではなく、このファイルを\file{upldefs.cfg}という名前で
+% コピーをして、そのファイルに対して修正を加えるようにしてください。
+% \begin{macrocode}
+%<*pldefs>
+\ProvidesFile{upldefs.ltx}
+ [2018/02/04 v1.6l-u02 upLaTeX Kernel (Default settings)]
+%</pldefs>
+% \end{macrocode}
+%
+% \subsection{テキストフォント}
+% テキストフォントのための属性やエラー書体などの宣言です。
+% p\LaTeX{}のデフォルトの横組エンコードはJY1、縦組エンコードはJT1ですが、
+% up\LaTeX{}では横組エンコードはJY2、縦組エンコードはJT2とします。
+% \noindent
+% 縦横エンコード共通:
+% \begin{macrocode}
+%<*pldefs>
+\DeclareKanjiEncodingDefaults{}{}
+\DeclareErrorKanjiFont{JY2}{mc}{m}{n}{10}
+% \end{macrocode}
+% 横組エンコード:
+% \begin{macrocode}
+\DeclareYokoKanjiEncoding{JY2}{}{}
+\DeclareKanjiSubstitution{JY2}{mc}{m}{n}
+% \end{macrocode}
+% 縦組エンコード:
+% \begin{macrocode}
+\DeclareTateKanjiEncoding{JT2}{}{}
+\DeclareKanjiSubstitution{JT2}{mc}{m}{n}
+% \end{macrocode}
+% 縦横のエンコーディングのセット化:
+% \changes{v1.6j}{2017/11/06}{縦横のエンコーディングのセット化を
+% plcoreからpldefsへ移動}
+% \begin{macrocode}
+\KanjiEncodingPair{JY2}{JT2}
+% \end{macrocode}
+% フォント属性のデフォルト値:
+% \begin{macrocode}
+\newcommand\mcdefault{mc}
+\newcommand\gtdefault{gt}
+\newcommand\kanjiencodingdefault{JY2}
+\newcommand\kanjifamilydefault{\mcdefault}
+\newcommand\kanjiseriesdefault{\mddefault}
+\newcommand\kanjishapedefault{\updefault}
+% \end{macrocode}
+% 和文エンコードの指定:
+% \begin{macrocode}
+\kanjiencoding{JY2}
+% \end{macrocode}
+% フォント定義:
+% これらの具体的な内容は第\ref{plfonts:fontdef}節を参照してください。
+% \changes{v1.3}{1997/01/24}{Rename font definition filename.}
+% \begin{macrocode}
+\input{jy2mc.fd}
+\input{jy2gt.fd}
+\input{jt2mc.fd}
+\input{jt2gt.fd}
+% \end{macrocode}
+% フォントを有効にします。
+% \begin{macrocode}
+\fontencoding{JT2}\selectfont
+\fontencoding{JY2}\selectfont
+% \end{macrocode}
+%
+% \begin{macro}{\textmc}
+% \begin{macro}{\textgt}
+% \changes{v1.3b}{1997/01/28}{\cs{textmc}, \cs{textgt}の動作修正}
+% テキストファミリを切り替えるためのコマンドです。
+% \file{ltfntcmd.dtx}で定義されている|\textrm|などに対応します。
+% \begin{macrocode}
+\DeclareTextFontCommand{\textmc}{\mcfamily}
+\DeclareTextFontCommand{\textgt}{\gtfamily}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\em}
+% \begin{macro}{\emph}
+% \begin{macro}{\eminnershape}
+% \changes{v1.3d}{1997/06/25}{\cs{em},\cs{emph}で和文を強調書体に}
+% \changes{v1.6}{2016/02/01}{\LaTeX\ \texttt{!<2015/01/01!>}での\cs{em}の
+% 定義変更に対応。\cs{eminnershape}を追加。}
+% 従来は|\em|, |\emph|で和文フォントの切り替えは行っていませんでしたが、
+% 和文フォントも|\gtfamily|に切り替えるようにしました。
+% \LaTeX\ \texttt{<2015/01/01>}で追加された|\eminnershape|も取り入れ、
+% 強調コマンドを入れ子にする場合の書体を自由に再定義できるようになりました。
+% \begin{macrocode}
+%</pldefs>
+%<platexrelease>\plIncludeInRelease{2016/04/17}{\eminnershape}{\eminnershape}%
+%<*pldefs|platexrelease>
+\DeclareRobustCommand\em
+ {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+ \eminnershape \else \gtfamily \itshape \fi}%
+\def\eminnershape{\mcfamily \upshape}%
+%</pldefs|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{2015/01/01}{\eminnershape}{\eminnershape}%
+%<platexrelease>\DeclareRobustCommand\em
+%<platexrelease> {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+%<platexrelease> \mcfamily \upshape \else \gtfamily \itshape \fi}
+%<platexrelease>\def\eminnershape{\upshape}% defined by LaTeX, but not used by pLaTeX
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\eminnershape}{\eminnershape}%
+%<platexrelease>\DeclareRobustCommand\em
+%<platexrelease> {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+%<platexrelease> \mcfamily \upshape \else \gtfamily \itshape \fi}
+%<platexrelease>\let\eminnershape\@undefined
+%<platexrelease>\plEndIncludeInRelease
+%<*pldefs>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \changes{v1.3b}{1997/01/30}{数式用フォントの宣言をクラスファイルに移動した}
+%
+%
+% \subsection{プリロードフォント}
+% あらかじめフォーマットファイルにロードされるフォントの宣言です。
+% \dst{}プログラムのオプションでロードされるフォントのサイズを
+% 変更することができます。\file{uplfmt.ins}では|xpt|を指定しています。
+% \begin{macrocode}
+%<*xpt>
+\DeclarePreloadSizes{JY2}{mc}{m}{n}{5,7,10,12}
+\DeclarePreloadSizes{JY2}{gt}{m}{n}{5,7,10,12}
+\DeclarePreloadSizes{JT2}{mc}{m}{n}{5,7,10,12}
+\DeclarePreloadSizes{JT2}{gt}{m}{n}{5,7,10,12}
+%</xpt>
+%<*xipt>
+\DeclarePreloadSizes{JY2}{mc}{m}{n}{5,7,10.95,12}
+\DeclarePreloadSizes{JY2}{gt}{m}{n}{5,7,10.95,12}
+\DeclarePreloadSizes{JT2}{mc}{m}{n}{5,7,10.95,12}
+\DeclarePreloadSizes{JT2}{gt}{m}{n}{5,7,10.95,12}
+%</xipt>
+%<*xiipt>
+\DeclarePreloadSizes{JY2}{mc}{m}{n}{7,9,12,14.4}
+\DeclarePreloadSizes{JY2}{gt}{m}{n}{7,9,12,14.4}
+\DeclarePreloadSizes{JT2}{mc}{m}{n}{7,9,12,14.4}
+\DeclarePreloadSizes{JT2}{gt}{m}{n}{7,9,12,14.4}
+%</xiipt>
+%<*ori>
+\DeclarePreloadSizes{JY2}{mc}{m}{n}
+ {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88}
+\DeclarePreloadSizes{JY2}{gt}{m}{n}
+ {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88}
+\DeclarePreloadSizes{JT2}{mc}{m}{n}
+ {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88}
+\DeclarePreloadSizes{JT2}{gt}{m}{n}
+ {5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88}
+%</ori>
+% \end{macrocode}
+%
+%
+% \subsection{組版パラメータ}
+% 禁則パラメータや文字間へ挿入するスペースの設定などです。
+% 実際の各文字への禁則パラメータおよびスペースの挿入の許可設定などは、
+% \file{ukinsoku.tex}で行なっています。
+% 具体的な設定については、\file{ukinsoku.dtx}を参照してください。
+% \begin{macrocode}
+\InputIfFileExists{ukinsoku.tex}%
+ {\message{Loading kinsoku patterns for japanese.}}
+ {\errhelp{The configuration for kinsoku is incorrectly installed.^^J%
+ If you don't understand this error message you need
+ to seek^^Jexpert advice.}%
+ \errmessage{OOPS! I can't find any kinsoku patterns for japanese^^J%
+ \space Think of getting some or the
+ uplatex2e setup will never succeed}\@@end}
+% \end{macrocode}
+%
+% 組版パラメータの設定をします。
+% |\kanjiskip|は、漢字と漢字の間に挿入されるグルーです。
+% |\noautospacing|で、挿入を中止することができます。
+% デフォルトは|\autospacing|です。
+% \begin{macrocode}
+\kanjiskip=0pt plus .4pt minus .5pt
+\autospacing
+% \end{macrocode}
+% |\xkanjiskip|は、和欧文間に自動的に挿入されるグルーです。
+% |\noautoxspacing|で、挿入を中止することができます。
+% デフォルトは|\autoxspacing|です。
+% \changes{v1.1c}{1995/09/12}{\cs{xkanjiskip}のデフォルト値}
+% \begin{macrocode}
+\xkanjiskip=.25zw plus1pt minus1pt
+\autoxspacing
+% \end{macrocode}
+% |\jcharwidowpenalty|は、パラグラフに対する禁則です。
+% パラグラフの最後の行が1文字だけにならないように調整するために使われます。
+% \begin{macrocode}
+\jcharwidowpenalty=500
+% \end{macrocode}
+%
+% \begin{macro}{\<}
+% 最後に、|\inhibitglue|の簡略形を定義します。
+% このコマンドは、和文フォントのメトリック情報から、自動的に挿入される
+% グルーの挿入を禁止します。
+%
+% 2014年のp\TeX{}の|\inhibitglue|のバグ修正に伴い、
+% |\inhibitglue|が垂直モードでは効かなくなりました。
+% \LaTeX{}では垂直モードと水平モードの区別が隠されていますので、
+% p\LaTeX{}の追加命令である|\<|は段落頭でも効くように修正します。
+%
+% |\DeclareRobustCommand|を使うと|\protect|の影響で前方の文字に対する
+% |\inhibitglue|が効かなくなるので、e-\TeX{}の|\protected|が必要です。
+% \changes{v1.6i}{2017/09/24}{\cs{<}が段落頭でも効くようにした}
+% \begin{macrocode}
+%</pldefs>
+%<platexrelease>\plIncludeInRelease{2017/10/28}{\<}
+%<platexrelease> {\inhibitglue in vertical mode}%
+%<*pldefs|platexrelease>
+\ifx\protected\@undefined
+\def\<{\inhibitglue}
+\else
+\protected\def\<{\ifvmode\leavevmode\fi\inhibitglue}
+\fi
+%</pldefs|platexrelease>
+%<platexrelease>\plEndIncludeInRelease
+%<platexrelease>\plIncludeInRelease{0000/00/00}{\<}
+%<platexrelease> {\inhibitglue in vertical mode}%
+%<platexrelease>\def\<{\inhibitglue}
+%<platexrelease>\plEndIncludeInRelease
+%<*pldefs>
+% \end{macrocode}
+% \end{macro}
+%
+% ここまでが、\file{pldefs.ltx}の内容です。
+% \begin{macrocode}
+%</pldefs>
+% \end{macrocode}
+%
+%
+%
+% \section{フォント定義ファイル}\label{plfonts:fontdef}
+% \changes{v1.3}{1997/01/24}{Rename provided font definition filename.}
+% ここでは、フォント定義ファイルの設定をしています。フォント定義ファイルは、
+% \LaTeX{}のフォント属性を\TeX{}フォントに置き換えるためのファイルです。
+% 記述方法についての詳細は、|fntguide.tex|を参照してください。
+%
+% 欧文書体の設定については、
+% \file{cmfonts.fdd}や\file{slides.fdd}などを参照してください。
+% \file{skfonts.fdd}には、写研代用書体を使うためのパッケージと
+% フォント定義が記述されています。
+% \begin{macrocode}
+%<JY2mc>\ProvidesFile{jy2mc.fd}
+%<JY2gt>\ProvidesFile{jy2gt.fd}
+%<JT2mc>\ProvidesFile{jt2mc.fd}
+%<JT2gt>\ProvidesFile{jt2gt.fd}
+%<JY2mc,JY2gt,JT2mc,JT2gt> [2018/07/03 v1.6q-u02 KANJI font defines]
+% \end{macrocode}
+% 横組用、縦組用ともに、
+% 明朝体のシリーズ|bx|がゴシック体となるように宣言しています。
+% \changes{v1.2}{1995/11/24}{it, sl, scの宣言を外した}
+% \changes{v1.3b}{1997/01/29}{フォント定義ファイルのサイズ指定の調整}
+% \changes{v1.3b}{1997/03/11}{すべてのサイズをロード可能にした}
+% また、シリーズ|b|は同じ書体の|bx|と等価になるように宣言します。
+% \changes{v1.6q}{2018/07/03}{シリーズbがbxと等価になるように宣言}
+%
+% p\LaTeX{}では従属書体にOT1エンコーディングを指定していましたが、
+% up\LaTeX{}ではT1エンコーディングを用いるように変更しました。
+% また、要求サイズ(指定されたフォントサイズ)が10ptのとき、
+% 全角幅の実寸が9.62216ptとなるようにしますので、
+% 和文スケール値($1\,\mathrm{zw} \div \textmc{要求サイズ}$)は
+% $9.62216\,\mathrm{pt}/10\,\mathrm{pt}=0.962216$です。
+% upjis系のメトリックは全角幅が10ptでデザインされているので、
+% これを0.962216倍で読込みます。
+% \changes{v1.6l}{2018/02/04}{和文スケール値を明文化}
+% \begin{macrocode}
+%<*JY2mc>
+\DeclareKanjiFamily{JY2}{mc}{}
+\DeclareRelationFont{JY2}{mc}{m}{}{T1}{cmr}{m}{}
+\DeclareRelationFont{JY2}{mc}{bx}{}{T1}{cmr}{bx}{}
+\DeclareFontShape{JY2}{mc}{m}{n}{<->s*[0.962216]upjisr-h}{}
+\DeclareFontShape{JY2}{mc}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY2}{mc}{b}{n}{<->ssub*mc/bx/n}{}
+%</JY2mc>
+%<*JT2mc>
+\DeclareKanjiFamily{JT2}{mc}{}
+\DeclareRelationFont{JT2}{mc}{m}{}{T1}{cmr}{m}{}
+\DeclareRelationFont{JT2}{mc}{bx}{}{T1}{cmr}{bx}{}
+\DeclareFontShape{JT2}{mc}{m}{n}{<->s*[0.962216]upjisr-v}{}
+\DeclareFontShape{JT2}{mc}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JT2}{mc}{b}{n}{<->ssub*mc/bx/n}{}
+%</JT2mc>
+%<*JY2gt>
+\DeclareKanjiFamily{JY2}{gt}{}
+\DeclareRelationFont{JY2}{gt}{m}{}{T1}{cmr}{bx}{}
+\DeclareFontShape{JY2}{gt}{m}{n}{<->s*[0.962216]upjisg-h}{}
+\DeclareFontShape{JY2}{gt}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY2}{gt}{b}{n}{<->ssub*gt/bx/n}{}
+%</JY2gt>
+%<*JT2gt>
+\DeclareKanjiFamily{JT2}{gt}{}
+\DeclareRelationFont{JT2}{gt}{m}{}{T1}{cmr}{bx}{}
+\DeclareFontShape{JT2}{gt}{m}{n}{<->s*[0.962216]upjisg-v}{}
+\DeclareFontShape{JT2}{gt}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JT2}{gt}{b}{n}{<->ssub*gt/bx/n}{}
+%</JT2gt>
+% \end{macrocode}
+%
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/uplatex/uplvers.dtx b/language/japanese/uplatex/uplvers.dtx
new file mode 100644
index 0000000000..f6f8869e84
--- /dev/null
+++ b/language/japanese/uplatex/uplvers.dtx
@@ -0,0 +1,194 @@
+% \iffalse meta-comment
+%% File: uplvers.dtx
+%
+% pLaTeX version setting file:
+% Copyright 1995-2006 ASCII Corporation.
+% and modified for upLaTeX
+%
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016 Takuji Tanaka
+% Copyright (c) 2016-2019 Japanese TeX Development Community
+%
+% This file is part of the upLaTeX2e system (community edition).
+% --------------------------------------------------------------
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ifx\JAPANESEtrue\undefined
+ \expandafter\newif\csname ifJAPANESE\endcsname
+ \JAPANESEtrue
+\fi
+\def\eTeX{$\varepsilon$-\TeX}
+\def\pTeX{p\kern-.15em\TeX}
+\def\epTeX{$\varepsilon$-\pTeX}
+\def\pLaTeX{p\kern-.05em\LaTeX}
+\def\pLaTeXe{p\kern-.05em\LaTeXe}
+\def\upTeX{u\pTeX}
+\def\eupTeX{$\varepsilon$-\upTeX}
+\def\upLaTeX{u\pLaTeX}
+\def\upLaTeXe{u\pLaTeXe}
+%</driver>
+% \fi
+%
+% \setcounter{StandardModuleDepth}{1}
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.0q-u00}{2011/05/07}{p\LaTeX{}用からup\LaTeX{}用に修正。
+% (based on plvers.dtx 2006/11/10 v1.0q)}
+% \changes{v1.0u-u00}{2016/04/17}{p\LaTeX{}の変更に追随。
+% (based on plvers.dtx 2016/04/17 v1.0u)}
+% \changes{v1.0w-u00}{2016/05/12}{起動時の文字列に入れるBabelのバージョンを
+% 元の\LaTeX{}のバナーから取得するコードを\file{uplatex.ini}から取り入れた
+% (based on plvers.dtx 2016/05/12 v1.0w)}
+% \changes{v1.0w-u01}{2016/05/21}{サポート外の\LaTeX~2.09互換モードが
+% 使われた場合に明確なエラーを出すようにした。}
+% \changes{v1.0x-u01}{2016/06/19}{p\LaTeX{}の変更に追随。
+% (based on plvers.dtx 2016/06/19 v1.0x)}
+% \changes{v1.0y-u01}{2016/06/29}{\file{uplatex.cfg}の読み込みを追加
+% (based on plvers.dtx 2016/06/27 v1.0y)}
+% \changes{v1.0z-u01}{2016/08/26}{\file{uplatex.cfg}の読み込みを
+% \file{uplcore.ltx}から\file{uplatex.ltx}へ移動
+% (based on plvers.dtx 2016/08/26 v1.0z)}
+% \changes{v1.1-u01}{2016/09/14}{p\LaTeX{}の変更に追随。
+% (based on plvers.dtx 2016/09/14 v1.1)}
+% \changes{v1.1c-u01}{2017/05/04}{p\LaTeX{}の変更に追随。
+% (based on plvers.dtx 2017/04/23 v1.1c)}
+% \changes{v1.1d-u01}{2017/09/24}{p\LaTeX{}の変更に追随。
+% (based on plvers.dtx 2017/09/24 v1.1d)}
+% \changes{v1.1g-u01}{2017/12/04}{p\LaTeX{}の変更に追随。
+% (based on plvers.dtx 2017/12/04 v1.1g)}
+% \changes{v1.1g-u02}{2017/12/10}{p\LaTeX{}との統合のため、
+% up\LaTeX{}のバージョンと最小限の変更だけを定義するようにした}
+% \changes{v1.1h-u02}{2018/02/18}{p\LaTeX{}の変更に追随。
+% (based on plvers.dtx 2018/01/10 v1.1h)}
+% \changes{v1.1i-u02}{2018/03/31}{p\LaTeXe\ 2018/03/09以降必須}
+% \fi
+%
+% \iffalse
+%<*driver>
+% \fi
+\ProvidesFile{uplvers.dtx}[2018/03/31 v1.1i-u02 upLaTeX Kernel (Version Info)]
+% \iffalse
+\documentclass{jltxdoc}
+\GetFileInfo{uplvers.dtx}
+\author{Ken Nakano \& Hideaki Togashi \& TTK}
+\title{\filename}
+\date{作成日:\filedate}
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{up\LaTeXe{}のバージョンの設定}
+% まず、このディストリビューションでのup\LaTeXe{}の日付とバージョン番号
+% を定義します。
+% このバージョンのup\LaTeXe{}のフォーマット作成では、
+% p\LaTeXe{}が提供する\file{plcore.ltx}の後から
+% \file{uplcore.ltx}が読まれなければなりません。
+%
+% \changes{v1.0q-u00}{2011/05/07}{p\LaTeX{}用からup\LaTeX{}用に修正。
+% (based on plvers.dtx 2006/11/10 v1.0q)}
+% \changes{v1.1g-u02}{2017/12/10}{p\LaTeX{}との統合のため、
+% up\LaTeX{}のバージョンと最小限の変更だけを定義するようにした}
+%
+% まず、次のバージョンのp\LaTeX{}が利用可能なことを確認します。
+% \changes{v1.1i-u02}{2018/03/31}{p\LaTeXe\ 2018/03/09以降必須}
+% \begin{macrocode}
+%<*plcore>
+\ifx\pfmtversion\@undefined
+ \errhelp{Please update your TeX installation; if not available,
+ obtain it^^Jmanually from CTAN
+ (https://ctan.org/pkg/uplatex) or from^^JGitHub
+ (https://github.com/texjporg/uplatex).}%
+ \errmessage{This should not happen!^^JThere should be some
+ inconsistency in your installation;^^Jtry
+ removing old `uplatex.ltx' and install the
+ latest one}\@@end
+\else
+ \ifnum\expandafter\@parse@version\pfmtversion//00\@nil<20180309
+ \errhelp{Please update your TeX installation; if not available,
+ obtain it^^Jmanually from CTAN
+ (https://ctan.org/pkg/platex) or from^^JGitHub
+ (https://github.com/texjporg/platex).}%
+ \errmessage{This version of upLaTeX2e requires pLaTeX2e 2018/03/09
+ or newer!^^JObtain a newer version of `platex',
+ otherwise upLaTeX2e setup will^^Jnever succeed}\@@end
+ \fi
+\fi
+%</plcore>
+% \end{macrocode}
+%
+% \begin{macro}{\pfmtname}
+% \begin{macro}{\pfmtversion}
+% \begin{macro}{\ppatch@level}
+% up\LaTeXe{}のフォーマットファイル名とバージョンです。
+% フォーマット名はp\LaTeXe{}のもの (\pfmtname) をそのまま引き継ぎ、
+% バージョンはp\LaTeXe{}のものの末尾に``u02''のようにサフィックスを付けます。
+% \begin{macrocode}
+%<*plcore>
+%\def\pfmtname{pLaTeX2e}
+\def\uppatch@level{u02}
+\edef\pfmtversion{\pfmtversion\uppatch@level}
+%</plcore>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{\LaTeX~2.09互換モードの抑制}
+%
+% \begin{macro}{\documentstyle}
+% p\LaTeX{}は、|\documentclass|の代わりに|\documentstyle|が使われると
+% \LaTeX~2.09互換モードに入ります。しかし、up\LaTeX{}は新しいマクロ
+% パッケージですので、\LaTeX~2.09互換モードをサポートしません。
+% このため、\file{plcore.dtx}の定義を上書きして明確なエラーを出します。
+% \changes{v1.0w-u01}{2016/05/21}{サポート外の\LaTeX~2.09互換モードが
+% 使われた場合に明確なエラーを出すようにした。}
+% \begin{macrocode}
+%<*plfinal>
+\def\documentstyle{%
+ \@latex@error{upLaTeX does NOT support LaTeX 2.09 compatibility
+ mode.\MessageBreak Use \noexpand\documentclass instead}{%
+ \noexpand\documentstyle is an old convention of LaTeX 2.09,
+ which has been\MessageBreak obsolete since 1995. upLaTeX is
+ first released in 2007, so we do\MessageBreak not provide any
+ emulation of the LaTeX 2.09 author environment.\MessageBreak
+ New documents should use Standard LaTeX conventions, and
+ start\MessageBreak with the \noexpand\documentclass command.}%
+ \documentclass}
+%</plfinal>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{起動時に表示するバナー}
+%
+% \begin{macro}{\everyjob}
+% up\LaTeXe{}が起動されたときに表示される文字列は、
+% p\LaTeXe{}の中ですでに設定されています。
+% \changes{v1.0w-u00}{2016/05/12}{起動時の文字列に入れるBabelのバージョンを
+% 元の\LaTeX{}のバナーから取得するコードを\file{uplatex.ini}から取り入れた
+% (based on plvers.dtx 2016/05/12 v1.0w)}
+% \changes{v1.1-u01}{2016/09/14}{p\LaTeX{}の変更に追随。
+% (based on plvers.dtx 2016/09/14 v1.1)}
+% \changes{v1.1d-u01}{2017/09/24}{p\LaTeX{}の変更に追随。
+% (based on plvers.dtx 2017/09/24 v1.1d)}
+% \changes{v1.1g-u01}{2017/12/04}{p\LaTeX{}の変更に追随。
+% (based on plvers.dtx 2017/12/04 v1.1g)}
+%
+% ^^A 起動時に\file{uplatex.cfg}がある場合、それを読み込むようにする
+% ^^A コードは、\file{uplcore.ltx}から\file{uplatex.ltx}へ移動しました。
+% \changes{v1.0y-u01}{2016/06/29}{\file{uplatex.cfg}の読み込みを追加
+% (based on plvers.dtx 2016/06/27 v1.0y)}
+% \changes{v1.0z-u01}{2016/08/26}{\file{uplatex.cfg}の読み込みを
+% \file{uplcore.ltx}から\file{uplatex.ltx}へ移動
+% (based on plvers.dtx 2016/08/26 v1.0z)}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/language/japanese/uptex-base/00readme_uptex.txt b/language/japanese/uptex-base/00readme_uptex.txt
new file mode 100644
index 0000000000..be76b25379
--- /dev/null
+++ b/language/japanese/uptex-base/00readme_uptex.txt
@@ -0,0 +1,29 @@
+upTeX, upLaTeX --- unicode version of ASCII pTeX, pLaTeX
+2019.05.12 Ver1.25
+TANAKA, Takuji ttk(at)t-lab(dot)opal(dot)ne(dot)jp
+
+[ Contents ]
+00readme_uptex.txt :: This file
+01uptex_doc_utf8.txt :: A document (in Japanese)
+02uptex_changelog_utf8.txt :: Change Log
+under Build/ :: sources of binaries
+under Master/ :: ini file etc.
+under bin/ :: utility
+under samples/ :: samples for test
+
+[ Building upTeX ]
+The sources work with TeXLive svn.
+Ref. TeXLive and Subversion http://www.tug.org/texlive/svn/
+
+[ Status ]
+Stable (hopefully) version.
+No warranty.
+
+[ References ]
+[1] ASCII Nihongo TeX (Publishing TeX)
+ ASCII MEDIA WORKS
+ http://ascii.asciimw.jp/pb/ptex/ (dead link)
+ https://web.archive.org/web/20161229061414/http://ascii.asciimw.jp/pb/ptex/ (web archive)
+[2] upTeX, upLaTeX ― unicode version of pTeX, pLaTeX
+ http://www.t-lab.opal.ne.jp/tex/uptex_en.html
+
diff --git a/language/japanese/uptex-base/01uptex_doc_utf8.txt b/language/japanese/uptex-base/01uptex_doc_utf8.txt
new file mode 100644
index 0000000000..525bbd1fe5
--- /dev/null
+++ b/language/japanese/uptex-base/01uptex_doc_utf8.txt
@@ -0,0 +1,591 @@
+upTeX, upLaTeX --- 内部unicode版 pTeX, pLaTeX の実装
+2019.05.12 Ver1.25
+TANAKA, Takuji ttk(at)t-lab(dot)opal(dot)ne(dot)jp
+
+◇ upTeX開発のねらい
+ ASCII pTeX/pLaTeXは、高品質の日本語組版ソフトウェアとして、いくつ
+かあるTeXの日本語化の中でもデファクトスタンダードの地位にある。縦組
+の機能や日本語組版の品質はもとより、信頼性の高さや周辺ソフトウェアの
+充実、ユーザー層の厚さなど、多くの点で圧倒的な魅力がある。しかし、直
+接使える文字集合は、原則的にJIS X 0208(JIS第1,2水準)の範囲に限定され
+ている。例えば丸付き数字などは、「機種依存文字なので使えません」とい
+うことになっている。その一方、昨今のコンピュータ周辺の環境では、
+JIS2004ことJIS X 0213(第3,4水準を追加)や、Unicode、Adobe-Japan1-6の
+ような公的/私的な規格、Machintosh搭載のヒラギノ、Windows搭載のMS明朝、
+Acrobatに添付の小塚明朝など、JIS第1,2水準を超える範囲の文字を容易に
+利用可能な環境はどんどん整ってきた。もはや、JIS第1,2水準で我慢してい
+るのはつまらない。機種依存文字は使えませんといって済ますことができる
+ような時代ではないのである。
+ これを克服する努力も繰り広げられてきた。そのひとつにUTF/OTFパッケー
+ジがある。巨大なvirtual fontに多分割する方法で巧妙にpTeXの狭い文字空
+間をかいくぐり、UnicodeやAdobe-Japan1-6といった大文字集合を利用できる
+ようにした功績は大きい。しかし、マクロベースであり、直接文字入力する
+こともできないしaux, logなどに直接文字として出力することもできないな
+ど、制限事項も多い。Utf82TeXでは、プリプロセッサを利用することで、
+UTF/OTFパッケージの入力の繁雑さを克服しているが、内部はpTeXであること
+に変わりなく制限事項を完全に克服できたわけではない。ptex-utf8,
+platex-utf8 は、pTeX入力のUTF-8化の大きな一歩であるし、^^ab化などの
+工夫で\inputenc{utf8}との親和性が向上してはいるものの、日本語の基本
+部分はやはりJIS X 0208の範囲に留まっている。いずれのアプローチも、
+JIS第1,2水準外の現代の新しい標準を普通の文字として直接普通に使えるよ
+うになるまでには至っていない。Omega/lambda, XeTeXなどTeXのUnicode拡
+張はあるものの、日本語の組版品質の繊細な部分まで行き届いているとは言
+いがたいようであるし、マクロ類の充実、ユーザー層の厚さや参考書の多さ
+などを含めた環境整備はまだまだである。
+ pTeXにも弱味はある。前述の文字集合の問題以外にも、二点挙げてみよう。
+一つは、8bitの非英語欧文との親和性である。もともとpTeXは、8bit目が立
+った文字コードがEUCやShift_JISのパターンにマッチすると、和文処理に回
+す。その動作が固定されているために、8bitを使うような日本語以外の文字
+コードが直接処理できない。近年のpTeX+babelは、その動作をかいくぐる工
+夫を要しており、単純とは言いがたい上に8bit欧文の直接処理も困難である。
+ もう一つは、pTeXの利用が日本語に限られていることである。中国語/韓国
+語との混植は、UTF/OTFパッケージで可能になったとはいえ、マクロベースの
+不便さは否めない。Unicode時代にあって、ローカルなソフトウェアは国際的
+なディストリビューションの中でobsolete扱いを受けるようになってきたと
+聞く。pTeX内部の動作をよく見ると、中国語/韓国語を含んだI18Nを施すこと
+はさほど難しくないように思えるが、実際にそうした話は聞いたことがない
+のは実にもったいないことである。日中韓(CJK)混植という面ではCJK-latex
+のようなマクロベースのアプローチもあるが、和文の組版品質や各種制限の
+多さは問題である。pTeXでCJKの文字を直接扱うような拡張法の方が遥かによ
+い解となることは間違いない。
+ 本upTeXの目標は、pTeXの利点をそのまま受け継ぎつつ、上記三つの弱点
+を克服したpTeXの無理のない自然な拡張により、新時代の日本語(+東アジア)
+標準TeXの地位を目指すことにある。文字集合の面では、pTeXの和文がJIS X
+0208の範囲だったのに対し、upTeXでは内部コードをUnicode化しその中の
+CJKのレパートリーの範囲を和文の組版に利用する。8bit欧文との親和性の
+面では、プリミティヴの指定により、和文/欧文の切替えを可能にする。国
+際化の面では、pTeXでは日本語限定だったのに対し、upTeXではUnicode化に
+より中国語/韓国語を強化する。これらの拡張により、全世界制覇は無理に
+しても東アジア(CJK)標準TeXの地位に近付きたい。そこまでいければ、中韓
+のTeXユーザーや開発者の方々もこの拡張版pTeXの利用環境のさらなる改善
+に力になってくれるかもしれない。壮大な目標ではあるが、土台のpTeXの申
+し分のない高みを出発点として、無理のない自然な拡張を着実に行っていけ
+ば、成果を出しつつ目標に近づけるであろうと目論んでいる。
+
+
+◇ 主な開発方針
+<0> pTeX の基本的な機能はそのままで、内部の和文処理を EUC/SJIS から
+ Unicode に変更する。
+ jfm の使用、dvi命令(255)の拡張など、pTeX 独自の特殊な拡張や
+ 組版のアルゴリズム等は一切さわらずに、そのまま受け継ぐ。
+ このため、dviware などは pTeX 用拡張とほぼ同等の特殊処理が要る。
+ 欧文用 dviware では対応できない場合がある点では pTeX と同じ。
+<1> Unicode 化においては、pTeX の自然な拡張を行い、
+ pTeX のいくつかの弱点を克服する。
+ この点において、必要なら pTeX からの改造量が多少増えるのは厭わない。
+<2> pTeX との互換性は出来るだけ維持する努力をする。その一方、
+ Unicode の文字集合や構造を前提として見たときにあまりに不自然な部分は、
+ 互換性の維持をあきらめる。
+ 例えば、kcatcode の default 値、
+ kcatcode の切替えのブロックの単位など。
+<3> 8bit 欧文コードの処理が可能になるよう、和文/欧文の切替え用の
+ プリミティヴを拡張、新設する。
+ pTeX では極めて限定的だった、欧文 Babel との整合性が向上する。
+ 内部 Unicode 化を本当に行っているのは CJKトークンだけであり、
+ 欧文部分はオリジナルの欧文 TeX と同等である。
+ pTeX から見ると欧文部分の機能が向上しているように見えるが、
+ 欧文 TeX から見ると
+ pTeX が欧文 TeX の機能を阻害していた部分を取り除いただけである。
+<4> pTeX の和文トークンを CJKトークンとして扱い、
+ 中国語/韓国語対応を強化する。
+<5> pTeX の和文トークンの 16bit を単純に Unicode (UCS2等) 化すると
+ 欧文トークン (catcode 4bit + charcode 8bit) と衝突してしまう。
+ これを回避する手法は何通りか考えられるが、
+ CJKトークンの上限の拡張を行い、
+ CJKトークンを (kcatcode 5bit+charcode 24bit) で扱う。
+ pTeX からの改造量はやや大きいが、欧文 TeX との対称性は良くなる。
+<6> U+2xxxx (Supplimentary Ideograph Plane, SIP) の漢字など
+ BMP以上かつ全角幅の文字はサポートする。
+ BMP以上かつ全角幅以外の文字は、jfmの拡張によりサポートする方針だが、
+ dviware の対応状況に差が出る可能性を考慮しオプション扱いとする。
+<7> 日本ローカル色を薄めるだけの目的での機能変更、整理、削除は行わない。
+ \xkanjiskip, \euc などはそのままの名称、機能で維持する。
+ 理由は、少々の手当で日本ローカル色が払拭できるはずもなく、
+ pTeX との互換性を下げるだけに過ぎない結果になるであろうから。
+この方針により、pTeX が抱えていた弱点はいくつか解消できるものの、
+pTeX の特殊性 (全角等幅フォント前提の jfm 等) は保たれているし、
+pdfeTeX など欧文 TeX の近年の動向から遠く離れたままであるし、
+欧文部分 は 8bit のままであるし、
+OpenType の新技術などを駆使できているわけでもない。
+世界の最新の TeX 環境や
+他の Unicode 拡張 (Omega/Aleph, XeTeX, LuaTeX 等)と比較すると、
+旧くさく中途半端な印象を受けるかもしれない。
+しかし、pTeX との互換性がほぼ 100% の Unicode 版 CJK TeX となり
+pTeX を中心に推移してきた日本の TeX ユーザーが
+過去の資産を利用しつつ手早く Unicode のおいしい部分を享受するために、
+的確な solution になっていると思う。
+正直なところ、日本ローカル色は依然非常に強く
+中韓の TeX ユーザーが使いたくなるものになっているかどうかの点で
+あまり期待は大きく持てないかもしれないが、
+日本の TeX ユーザーが中国語/韓国語を混植するような用途には向いていると思う。
+
+
+◇ 主な仕様
+<0> 名前をupTeX, upLaTeX と命名する。
+ unicode版pTeXという主旨で。
+ 出来ることは欧文TeX + pTeXの和文拡張部分のUnicode版なので、
+ uTeX とか universal TeX はおこがましい。
+<1> CJKトークンの内部コードとしてUnicodeを使用する。
+ 入出力バッファのエンコーディングはUTF-8。
+ 内部エンコーディングはほぼUTF-32(註1)。
+<2> 入力ファイル(.texなど)はUTF-8とISO-2022-JPの自動判定。
+ 出力ファイル(.log, .auxなど)はUTF-8。
+<3> tfm(jfm)のエンコーディングはUCS-2。
+ エンコーディング名は JY2, JT2 とする。
+ U+FFFFを越える文字は、U+2xxxx(SIP)の漢字を想定し、
+ jfmのフォーマットが従来のpTeXのものを用い
+ chartype が defaultの 0 の全角文字として組版する。
+ jfmのフォーマットは文字コード24bitを扱えるように拡張するが、
+ dviwareの拡張jfmへの対応が進むまで当面オプションとする。
+<4> dvi, vfにはUnicodeスカラー値を2〜3バイトで記録する(註2)。
+ U+FFFF以下の文字はset2で、U+FFFFを越える文字はset3で扱う。
+ 和文として扱える文字コードの最大値はUnicodeの最大値U+10FFFF。
+<5> 和文、欧文の切替えは、コードレンジのチェックに加えkcatcodeを見て行う。
+ kcatcode=16,17,18なら漢字,かな,和文その他記号(pTeXと同様)で、
+ kcatcode=15なら欧文、非CJKの文字(新規)。
+ kcatcode=19ならhangul(新規)。hangul直後の改行は欧文同様、
+ 空白と看做すが、それ以外の点では、漢字と全く同じ動作になっている。
+<6> 欧文と判定されればUTF-8の8bit可変長文字列として内部処理する。
+ オリジナルの欧文TeXと完全に互換の処理ができる。
+ すなわち、欧文LaTeXの\inputenc{utf8}やBabelが障害なく利用できる。
+<7> 和文と判定されればpTeXと同様の処理ができる。
+ すなわち、組版はもちろん、
+ 漢字,かなをコントロールワードに使う機能等が障害なく利用できる。
+<8> kcatcodeの切替えはUnicodeのBlock毎に可能。
+ ( http://www.unicode.org/Public/UNIDATA/Blocks.txt )
+ ( ちなみに、オリジナルpTeXでは2バイト文字のうち上位バイト毎。 )
+<9> 和文の内部コードは、kcatcode 5bit+charcode 24bit で処理する。
+ 内部コードが欧文(catcode 4bit+charcode 8bit)と重なることはない。
+<10> 従来のpTeXでは、kcatcodeの参照を文字コードからkcatcodeの表を引き
+ 間接的に行う方法を行っている。この方法を
+ ファイルなどからの読み込み時と内部処理時の両方で行っている。
+ upTeXでは、ファイルなどからの読み込み時は同様であるが、
+ 内部処理時には、<9>でCJKトークン毎に振ったkcatcodeを読み込むように
+ 変更した。たとえ同じ文字コードでもkcatcodeの途中変更を行えば、
+ CJKトークン毎に異なるkcatcodeを割り当てることが出来るようになる。
+<11> 新しく \ucs プリミティヴを新設。
+ \char\ucs"301C, \kchar\ucs"301C はU+301C(波ダッシュ)になる。
+<12> uptex, uplatex などでは -kanji=uptex と指定して
+ 動くように実装した。
+ その他の漢字コード指定の場合は、
+ 基本的に従来のpTeXと同様の結果になるはず。
+<13> 各文字が実際のフォントで利用可能な文字かどうかの判定は
+ uptex 本体では行わない。この判定は dviware で行うことになる。
+ 「任意の部分実装を容認している Unicode において
+ 文字集合の範囲の固定的な判定は不可能だ」という理由もあるが、
+ この仕様は pTeX でも同様となっている。
+<14> 新しく \kchar, \kchardef プリミティヴをを追加。
+ \char`<文字>, \chardef では文字コードが255以下の場合には欧文動作、
+ 265以上の場合には和文動作となる。
+ \kchar`<文字>, \kchardef では文字コード範囲によらず和文動作となる。
+<15> 従来デフォルトのフォントはset2の範囲で済むようにし、
+ set3を含むフォント(vf)はオプションとしていたが、
+ dviwareのset3対応の普及が進んでおり
+ 2018年2月よりset3を含むフォント(vf)を標準とした。
+<16> ISO-2022-JP{-3,-2004}, EUC-JISX0213, Shift_JISX0213などの
+ JIS X 0213系エンコーディングも使用可能にする案もあったが
+ 開発凍結する。
+
+(註1) 32bitではなく24bitで扱っている点で厳密にはUTF-32ではない。
+ あるいは、正規のUnicodeスカラー値(≒コードポイント)を
+ 24bitで表したものといってもよい。
+(註2) 正規のUnicodeスカラー値(≒コードポイント)と
+ 等しい値を16/24bitで表したもの。
+ すなわち、UTF-32の下位16bit/24bitと等しい。
+
+
+◇ 内部処理の流れ
+(1) pTeX入力 [8bit可変長(UTF8)]
+↓
+<1> ptexenc [8bit可変長(UTF8)]
+↓
+(2) 入力バッファー [8bit可変長(UTF8)]
+↓
+<2> multistrlen,kcatcode等で和文/欧文を判定して変換
+↓
+(3) 内部レジスター [和文5+24bit, 欧文4+8bit] { 最大29bit 欧文と和文で別構成※1 }
+↓
+<3> マクロ展開
+↓
+(4) 組版処理 [和文5+24bit, 欧文4+8bit]
+(4a) tfm, jfm, (ofm)へのアクセス [和文16bit, 欧文4+8bit] ※2
+<4a> ptexenc
+(4b) dviへの入出力 [和文5+24bit, 欧文4+8bit] ※3
+<4b> ptexenc
+↓
+(5) 出力バッファー [8bit可変長(UTF8)]
+↓
+<5> ptexenc
+↓
+(6) 出力 (log, 端末など) [8bit可変長(UTF8)]
+
+※1: 欧文はcatcode 4bit + 文字コード8bit
+(Omegaではcatcode 4bit + 文字コード16bitだが、Omegaへの拡張を視野にいれたい。)
+和文はkcatcode 5bit + 文字コード24bit。
+オリジナルpTeXでは、和文は文字コード16bit,
+kcatcodeは、文字コードを引数として表を参照して求めていたが、
+upTeXでは、欧文と同等に(k)catcodeと文字コードの組となるように変更した。
+和文/欧文トークンは 29bit を重ならないように使用していることになる。
+U+10FFFFのUnicode最大値までを和文として処理できることを想定している。
+U+1xxxxの文字は考慮していない。Omegaの拡張的アプローチが必要か。
+※2: U+FFFF超の文字は当面U+2xxxxの漢字のみを想定し、
+U+2xxxxのchar typeをdefaultの0番と解釈することにすれば、
+jfmは当面拡張する必要がない。
+(2), (3), (4)のあたりで欧文8bit(TeX)との共存も可能。
+欧文のcatcodeで使用しているレンジをさらに上位バイトに移動し、
+和文24bit, 欧文16bit(Omega) と共存可能にし、
+ptexencにOTPインタープリターを突っ込み、
+ofmとjfmの混在した組版を可能にすれば
+upTeX + Omega = upOmegaが出来る???
+
+◇ 文字コード関連のまとめ
+[凡例]
+○:欧文、△:欧文8bit多byteの擬似的な動作
+■:和文、—:使用不可
+token:内部トークンでの文字コード
+text:SJIS/EUC/UTF-8など入出力の文字コード
+( ):defaultではない
+
+[欧文TeX]
+ token text ^^ab \char
+〜0x7F ○ ○ ○ ○
+〜0xFF ○ ○[a] ○ ○
+0x100〜 — △[b] — —
+
+[pTeX]
+ token text ^^ab \char
+〜0x7F ○ ○ ○ ○
+〜0xFF ○ —[c] ○[f] ○
+0x100〜 — —[d] — —
+0x8000〜 ■ ■[e] — ■[g]
+
+[upTeX(v.0.10〜)]
+ token text ^^ab \char \kchar
+〜0x7F ○■[h] ○ [i] ○ ○[l] ■[o]
+〜0xFF ○■[h] (○)■[j] ○ ○[m] ■[o]
+0x100〜 ■ (△)■[k] — ■[n] ■[o]
+
+[a] 8bit1byteで扱うのが基本。[b]のためにこの領域が使われることもある。
+[b] 8bit多byteの処理をactive文字化で実現する手法(inputenc,CJK-LaTeX等)がある。
+[c] SJIS/EUCのパターンに合わない場合のみ通る。欧文TeXから見ると制限事項になる。
+ 回避には、^^ab, \char などでするしかない。
+[d] [b]の方法が使えない。欧文TeXから見ると制限事項になる。
+ 回避には、^^ab, \char などでするしかない。
+[e] 入力では8bit2byte。SJIS/EUCのパターンに合う場合のみ有効。
+[f] ここの不具合解消によりpTeX+babelが実現可能になった。
+[g] 和文/欧文はコードレンジで簡明に区別できる。
+[h] 和文の場合はkcatcode付きで管理されるので、欧文と区別できる。
+[i] 欧文のみ可能。和文は不可。
+[j] defaultは和文(**)。kcatcodeの切り替えにより和文欧文化が可能。
+[k] defaultは和文(**)。kcatcodeの切り替えにより欧文の8bit多byte扱いが可能。
+[l] 欧文のみ可能。和文は不可。
+[m] 欧文のみ可能。和文は不可。一部(例えば\char\jis"215F(×)など)がpTeX
+ と非互換になる。
+[n] 和文のみ可能。欧文は不可。pTeXとの互換性のため用意。
+[o] 和文のみ可能。欧文は不可。
+(**) "Latin-1 Letters" (0xAA, 0xBA, 0xC0..0xD6, 0xD8..0xF6, 0xF8..0xFF),
+ "Latin Extended-A" (0x100..0x17F) の文字はupTeX-1.23より、
+ また "Latin Extended-B" (0x180..0x24F),
+ "Latin Extended Additional" (0x1E00..0x1EFF) の文字はupTeX-1.24より
+ defaultを欧文(not_cjk)とする設定を行った。
+
+
+◇ pTeX との対照表
+◎ デフォルトのエンコーディング
+JY1 → JY2
+JT1 → JT2
+
+◎ min10系のフォント(オプション, uptex-1.xxの配布には含まない)
+min10.tfm → umin10.tfm
+min9.tfm → umin9.tfm
+min8.tfm → umin8.tfm
+min7.tfm → umin7.tfm
+min6.tfm → umin6.tfm
+min5.tfm → umin5.tfm
+goth10.tfm → ugoth10.tfm
+goth9.tfm → ugoth9.tfm
+goth8.tfm → ugoth8.tfm
+goth7.tfm → ugoth7.tfm
+goth6.tfm → ugoth6.tfm
+goth5.tfm → ugoth5.tfm
+
+min10.vf → umin10.vf
+min9.vf → umin9.vf
+min8.vf → umin8.vf
+min7.vf → umin7.vf
+min6.vf → umin6.vf
+min5.vf → umin5.vf
+goth10.vf → ugoth10.vf
+goth9.vf → ugoth9.vf
+goth8.vf → ugoth8.vf
+goth7.vf → ugoth7.vf
+goth6.vf → ugoth6.vf
+goth5.vf → ugoth5.vf
+
+◎ jis.tfm系のフォント(オプション, uptex-1.xxの配布には含まない)
+jis.tfm → ujis.tfm
+jisn.tfm → ujisn.tfm
+jis-v.tfm → ujis-v.tfm
+jisn-v.tfm → ujisn-v.tfm
+jisg.tfm → ujisg.tfm
+jisng.tfm → ujisng.tfm
+jisg-v.tfm → ujisg-v.tfm
+jisng-v.tfm → ujisng-v.tfm
+
+jis.vf → ujis.vf
+jisn.vf → ujisn.vf
+jis-v.vf → ujis-v.vf
+jisn-v.vf → ujisn-v.vf
+jisg.vf → ujisg.vf
+jisng.vf → ujisng.vf
+jisg-v.vf → ujisg-v.vf
+jisng-v.vf → ujisng-v.vf
+
+◎ rml.tfm系のフォント(オプション, uptex-1.xxの配布には含まない)
+rml.tfm → urml.tfm
+rmlv.tfm → urmlv.tfm
+gbm.tfm → ugbm.tfm
+gbmv.tfm → ugbmv.tfm
+
+◎ upjisr-{hv}.tfm系のフォント(デフォルト、新規)
+------- → upjisr-h.tfm (UniJIS-UTF16-HまたはUniJISup-UTF16-Hを想定)
+------- → upjisg-h.tfm (UniJIS-UTF16-HまたはUniJISup-UTF16-Hを想定)
+------- → upjisr-v.tfm (UniJIS-UTF16-VまたはUniJISup-UTF16-Vを想定)
+------- → upjisg-v.tfm (UniJIS-UTF16-VまたはUniJISup-UTF16-Vを想定)
+------- → upjisr-hq.tfm (UniJIS-UCS2-Hを想定)
+------- → upjisg-hq.tfm (UniJIS-UCS2-Hを想定)
+
+------- → upjisr-h.vf (UniJIS-UTF16-HまたはUniJISup-UTF16-Hを想定, set3使用)
+------- → upjisg-h.vf (UniJIS-UTF16-HまたはUniJISup-UTF16-Hを想定, set3使用)
+------- → upjisr-v.vf (UniJIS-UTF16-VまたはUniJISup-UTF16-Vを想定, set3使用)
+------- → upjisg-v.vf (UniJIS-UTF16-VまたはUniJISup-UTF16-Vを想定, set3使用)
+------- → upjisr-hq.vf (UniJIS-UCS2-Hを想定)
+------- → upjisg-hq.vf (UniJIS-UCS2-Hを想定)
+
+------- → uprml-h.tfm (UniJIS-UTF16-HまたはUniJISup-UTF16-Hを想定)
+------- → upgbm-h.tfm (UniJIS-UTF16-HまたはUniJISup-UTF16-Hを想定)
+------- → uprml-v.tfm (UniJIS-UTF16-VまたはUniJISup-UTF16-Vを想定)
+------- → upgbm-v.tfm (UniJIS-UTF16-VまたはUniJISup-UTF16-Vを想定)
+------- → uprml-hq.tfm (UniJIS-UCS2-Hを想定)
+------- → upgbm-hq.tfm (UniJIS-UCS2-Hを想定)
+
+
+◎ 各種ファイル
+ptex.ini → uptex.ini
+ptex.tex → uptex.tex (min10ベース → upjisr-hベース)
+kinsoku.tex → ukinsoku.tex
+
+platex.ini → uplatex.ini
+platex.ltx → uplatex.ltx
+pldefs.ltx → upldefs.ltx
+jy1mc.fd → jy2mc.fd (min10ベース → upjisr-hベース)
+jy1gt.fd → jy2gt.fd (goth10ベース → upjisg-hベース)
+jt1mc.fd → jt2mc.fd (tmin10ベース → upjisr-vベース)
+jt1gt.fd → jt2gt.fd (tgoth10ベース → upjisg-vベース)
+
+jarticle.cls → ujarticle.cls
+tarticle.cls → utarticle.cls
+jreport.cls → ujreport.cls
+treport.cls → utreport.cls
+jbook.cls → ujreport.cls
+tbook.cls → utreport.cls
+tsize10.clo → utsize10.clo
+tsize11.clo → utsize11.clo
+tsize12.clo → utsize12.clo
+tbk10.clo → utbk10.clo
+tbk11.clo → utbk11.clo
+tbk12.clo → utbk12.clo
+
+◎ CJK対応新規フォント
+upjpnrm-{h,v}.{tfm,vf} (set3使用)
+upjpngt-{h,v}.{tfm,vf} (set3使用)
+upschrm-{h,v}.{tfm,vf} (set3使用)
+upschgt-{h,v}.{tfm,vf} (set3使用)
+uptchrm-{h,v}.{tfm,vf} (set3使用)
+uptchgt-{h,v}.{tfm,vf} (set3使用)
+upkorrm-{h,v}.{tfm,vf}
+upkorgt-{h,v}.{tfm,vf}
+upstsl-{h,v}.tfm
+upstht-{h,v}.tfm
+upmsl-{h,v}.tfm
+upmhm-{h,v}.tfm
+uphysmjm-{h,v}.tfm
+uphygt-{h,v}.tfm
+※ Adobe Acrobat Reader 4 は以下の`generic fonts'を認識するそうだ。
+(Ref. http://project.ktug.or.kr/omega-cjk/tug2004-preprint.pdf)
+ Serif Sans Serif
+Chinese Simplified STSong-Light STHeiti-Regular
+Chinese Traditional MSung-Light MHei-Medium
+Japanese Ryumin-Light GothicBBB-Medium
+Korean HYSMyeongJo-Medium HYGoThic-Medium
+
+
+◇ kcatcode のデフォルト値
+kcatcodeの意味は、15: not_cjk, 16: kanji, 17: kana, 18: other_kchar, 19: hangul
+kcatcodeが15(not_cjk)の場合は欧文扱いになる。
+kcatcodeは原則としてUnicodeのblock毎に与えられる。
+(Ref. http://www.unicode.org/Public/UNIDATA/Blocks.txt)
+ただし、例外の文字集合が3個ある。
+文字コード値0x0080以上のブロックでは原則18(other_kchar)が設定されている。
+下記の表にはそれ以外の値のものを記載した。左端はブロックの通し番号。
+○Unicode blockに準拠
+ (0x00) 0x0000.. 0x007F <15> Basic Latin
+ (0x02) 0x0100.. 0x017F <15> Latin Extended-A
+ (0x03) 0x0180.. 0x024F <15> Latin Extended-B
+ (0x24) 0x1100.. 0x11FF <19> Hangul Jamo
+ (0x45) 0x1E00.. 0x1EFF <15> Latin Extended Additional
+ (0x67) 0x2E80.. 0x2EFF <16> CJK Radicals Supplement
+ (0x68) 0x2F00.. 0x2FEF <16> Kangxi Radicals
+ (0x69) 0x2FF0.. 0x2FFF <16> Ideographic Description Characters
+ (0x6B) 0x3040.. 0x309F <17> Hiragana
+ (0x6C) 0x30A0.. 0x30FF <17> Katakana
+ (0x6D) 0x3100.. 0x312F <16> Bopomofo
+ (0x6E) 0x3130.. 0x318F <19> Hangul Compatibility Jamo
+ (0x6F) 0x3190.. 0x319F <16> Kanbun
+ (0x70) 0x31A0.. 0x31BF <16> Bopomofo Extended
+ (0x71) 0x31C0.. 0x31EF <16> CJK Strokes
+ (0x72) 0x31F0.. 0x31FF <17> Katakana Phonetic Extensions
+ (0x75) 0x3400.. 0x4DBF <16> CJK Unified Ideographs Extension A
+ (0x77) 0x4E00.. 0x9FFF <16> CJK Unified Ideographs
+ (0x87) 0xA960.. 0xA97F <19> Hangul Jamo Extended-A
+ (0x92) 0xAC00.. 0xD7AF <19> Hangul Syllables
+ (0x93) 0xD7B0.. 0xD7FF <19> Hangul Jamo Extended-B
+ (0x98) 0xF900.. 0xFAFF <16> CJK Compatibility Ideographs
+ (0xFD) 0x1B000..0x1B0FF <17> Kana Supplement
+ (0xFE) 0x1B100..0x1B12F <17> Kana Extended-A
+ (0xFF) 0x1B130..0x1B16F <17> Small Kana Extension
+ (0x122) 0x20000..0x2A6FF <16> CJK Unified Ideographs Extension B
+ (0x123) 0x2A700..0x2B73F <16> CJK Unified Ideographs Extension C
+ (0x124) 0x2B740..0x2B81F <16> CJK Unified Ideographs Extension D
+ (0x125) 0x2B820..0x2CEAF <16> CJK Unified Ideographs Extension E
+ (0x126) 0x2CEB0..0x2F7FF <16> CJK Unified Ideographs Extension F
+ (0x127) 0x2F800..0x2FFFF <16> CJK Compatibility Ideographs Supplement
+(上記の文字の範囲は実装に基づいており、Blocks.txtに記述されている範囲より広い場合がある)
+○Unicode blockの例外
+ (0x1FD) 0xAA, 0xBA, 0xC0..0xD6, 0xD8..0xF6, 0xF8..0xFF <15> Latin-1 Letters
+ (0x1FE) 0xFF10..0xFF19, 0xFF21..0xFF3A, 0xFF41..0xFF5A <17> Fullwidth digit and latin alphabet
+ (0x1FF) 0xFF66..0xFF6F, 0xFF71..0xFF9D <17> Halfwidth katakana
+
+
+◇ ukinsoku.tex に関する注意事項
+ukinsoku.tex で行なった禁則ペナルティに関する設定において、
+UnicodeとCJK(JIS X 0213等)の文字を想定して設定されたものの中に
+文字コードが 0x80..0xFF のものを含んでいる。
+それらの設定は仕様上、8bit欧文の文字にも同時に作用してしまう。
+8bit欧文がT1の場合について下記にまとめた。
+この動作が不都合な場合は、ユーザー各位の利用状況に応じて適宜
+設定を変更するようお願いする。
+
+文字コード Unicode T1
+ 0xA1 U+00A1 (¡) ą {\k a}
+ 0xAA U+00AA (ª) ł {\l}
+ 0xAB U+00AB («) ń {\@tabacckludge'n}
+ 0xB2 U+00B2 (²) š {\v s}
+ 0xB3 U+00B3 (³) ş {\c s}
+ 0xB7 U+00B7 (·) ů {\r u}
+ 0xB9 U+00B9 (¹) ź {\@tabacckludge'z}
+ 0xBA U+00BA (º) ž {\v z}
+ 0xBB U+00BB (») ż {\.z}
+ 0xBF U+00BF (¿) £ {\textsterling}
+
+
+◇ 動作状況
+◎ uptex-1.xxの配布に含めたもの
+uptex 動いている。無問題。
+uppltotf 動いている。無問題。
+uptftopl 動いている。無問題。
+updvitype 動いている。無問題。
+upbibtex ほぼ動いている。しかし、jalpha.bst 使用時に
+ 一部のエントリーでeuc動作と同等にならない問題がある。
+ukinsoku.tex JIS X 0213 に対応した。
+CMap UTF8-UTF16
+ TeX Live svn に r26540 で取り込まれた。
+◎ 別の配布に含めたもの
+otfパッケージ japanese-otf-uptex として公開、CTANに登録した。
+ (以前は otfbeta-uptex-x.xx.tar.xz として公開していた。)
+ TeX Live svn に r25264 あたりで取り込まれた。
+ プロポーショナル仮名にも対応済み。
+ https://ctan.org/pkg/japanese-otf-uptex
+ https://github.com/t-tk/japanese-otf-uptex
+convbkmk.rb dvipsでのbookmark作成のためのrubyスクリプト。
+ さらに、out2uni相当動作の-oオプションも追加した。
+ convbkmk としてCTANに登録した。
+ https://ctan.org/pkg/convbkmk
+ https://github.com/t-tk/convbkmk
+◎ 日本語TeX開発コミュニティに移管したもの
+upjisr-h.tfmなど
+ JIS X 0208の範囲ではほぼUnicodeに移植出来ていると思う。
+ JIS X 0213の追加の約物は一応入れた。
+ その他 JIS X 0208/0213 以外の約物はAJ1-6でめぼしいものはないようだ。
+ 半角カナにも対応済。
+ upjisr-h.vfなどにBMP外の文字も一部追加した。
+ 以降、開発元は下記に移管。
+ https://github.com/texjporg/uptex-fonts
+uplatex 動いている。無問題。
+ 以降、開発元は下記に移管。
+ https://github.com/texjporg/uplatex
+makejvf 簡単な対応を施した。
+ オプション -u, -3, -J, -U, -H, -i を新設した。
+ 以降、開発元は下記に移管。
+ https://github.com/texjporg/tex-jp-build
+ptexenc TeX Live svn に r23549〜r25028 あたりで取り込まれた。
+ JIS→Unicode の変換表は r29213 で見直した。
+ かなの合成文字は r38704 で取り込まれた。
+ 以降、開発元は下記に移管。
+ https://github.com/texjporg/tex-jp-build
+◎ TeX Live に取り込んでいただいたもの
+euptex TeX Live の Build/source/web2c で本配布の uptexdir の置き換えでOK
+ euptexdir 以下は新しい uptex との組合わせ可能で euptex が作成出来る。
+dvips TeX Live 2010 に取り込まれた。
+dvipdfmx TeX Live svn に r24509 あたりで取り込まれた。
+ set3も含めて動いている。
+ ただし、set3で、「内部コードがUTF-32, CMapがUniXXX-UTF16」であること
+ を仮定したハードコーディングになっているおり、柔軟性は乏しい。
+ bookmark 作成は UTF8-UCS2, UTF8-UTF16 の CMAP または、
+ convbkmk.rbの-oオプションを必要とする。
+dvi2tty TeX Live svn に r24634 あたりで取り込まれた。
+ dvi2tty の NTT JTeX/pTeX 対応版を upTeX 対応にした。
+ オプション -J を変更し、 -U, -E を新設した。
+ さらに、T1,TS1,OT2,T2A,T2B,T2C,X2エンコーディング対応機能が
+ TeX Live に r39942 あたりで取り込まれた。
+mendex TeX Live r33962 あたりで、見出しをUnicode対応とした。
+ さらに r47721 あたりで見出しのデフォルトエンコーディングをUTF-8とした。
+upmendex mendex をベースに新規に作成した。
+ mendex の内部コードをUnicode化し、ICUによるソート、
+ 読みをJIS X 0213のかなに対応、CJK対応、ラテン文字(含非英語)対応、
+ キリル文字対応、ギリシャ文字対応となっている。
+ TeX Live svn に r39638 あたりで取り込まれた。
+upmpost TeX Live r35188 あたりでupmetapostの名前で取り込まれ、
+ 現在upmpostの名前になっている。
+ ただし、おそらくuptex-0.30の頃と同様、
+ 日本語vfの領域を食い過ぎで多書体ができないと思われる。
+Unicodeのファイル名 Unix/LinuxではlocaleがUTF-8ならば使用出来る。
+ Windowsでは、TeX Live 2014 に取り込まれた。
+◎ 現在の配布に含んでいないもの
+xdvi uptex-0.30ではset3も含めて動いている。無問題。
+ uptex-1.xxの配布には含まない。
+dviout set2の範囲では改造無しでフォントの設定のみでほぼ動いている。
+ set3の範囲は文字化けしてしまうが、落ちることはない。
+ OTFパッケージの \CID{} が Unicode 経由なのは、 pLaTeX と同様。
+ http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/51610.html
+ http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/51705.html
+ の問題点の御報告がある。
+ 開発版で修正案を取り入れていただいた。
+ (Ref. http://tug.org/svn/dviout?view=revision&revision=178 )
+utfパッケージ uptex-0.30では動いている。
+ uptex-1.xxの配布には含まない。
+
+
+◇ 今後の課題、要検討事項など
+< 内部実装関連 >
+[1] pdfTeX 拡張機能の追加は?
+[2] Unicodeで複数のコードポイントを必要とする文字(IVS,
+ 文字合成で表される仮名等)を使えるようにする。
+< dviware, 外部ソフト関連 >
+[3] upmpost で多書体が使えるようにする。
+[4] upbibtex で、jalpha.bst 使用時に
+ 一部のエントリーでeuc動作と同等にならない問題点の解決。
+< その他 >
+[5] ドキュメントの充実。
+[6] 英語ドキュメントを書く。
+
diff --git a/language/japanese/uptex-base/02uptex_changelog_utf8.txt b/language/japanese/uptex-base/02uptex_changelog_utf8.txt
new file mode 100644
index 0000000000..bcdaabc55b
--- /dev/null
+++ b/language/japanese/uptex-base/02uptex_changelog_utf8.txt
@@ -0,0 +1,689 @@
+### ChangeLog / 変更履歴
+
+2019.05.12 Ver1.25-20190512a
+ TeXLive svn r51021 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch,
+ uptex_version.h:
+ Update upTeX version number.
+ * kanji.c:
+ Fix bug of kcatcode for Fullwidth ASCII variants,
+ Halfwidth Katakana variants and Halfwidth and Fullwidth Forms
+ in Ver1.24 from Yusuke Terada san
+ https://github.com/texjporg/tex-jp-build/pull/79
+ * kanji.c, kanji.h:
+ Set default internal encoding EUC/SJIS if a command name is
+ with prefix of "p" or "ep", intending to be compatible with
+ pTeX family (ptex, eptex, pbibtex, pdvitype, ppltotf, ptftopl)
+ (experimental).
+ * uptex-m.ch:
+ Make appropreate comparison of U+0100 by \if
+ from Hironori Kitagawa san
+ https://github.com/texjporg/tex-jp-build/issues/68
+ Master/texmf-dist/tex/uptex/uptex-base:
+ * ukinsoku.tex:
+ Add setting of kcatcode for block
+ "Halfwidth and Fullwidth Forms" to work around
+ for bug of Ver1.24
+ https://github.com/texjporg/uptex-base/issues/3
+ samples:
+ Update.
+ 01uptex_doc_utf8.txt:
+ Update.
+
+2019.02.23 Ver1.24-20190223a
+ TeXLive svn r50082 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch,
+ uptex_version.h:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-12.0.0.txt Date: 2018-07-30, 19:40:00 GMT [KW]".
+ Set kcatcode of "Latin Extended-B",
+ "Latin Extended Additional" 15 (not_cjk).
+ * upbibtex.ch:
+ Fix bug of substring$ from Takashi Sakai san
+ https://github.com/texjporg/tex-jp-build/issues/64
+ https://github.com/texjporg/tex-jp-build/pull/66
+ * COPYRIGHT, COPYRIGHT.ja:
+ Update copyright year.
+ Master/texmf-dist/tex/uptex/uptex-base:
+ * ukinsoku.tex:
+ Import from GitHub
+ https://github.com/texjporg/uptex-base
+ samples:
+ Update.
+ 01uptex_doc_utf8.txt:
+ Update.
+
+2018.02.24 Ver1.23-20180224a
+ TeXLive svn r46727 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch,
+ uptex_version.h:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-10.0.0.txt Date: 2017-04-12, 17:30:00 GMT [KW]".
+ Exclude Latin-1 letters from "Latin-1 Supplement" block.
+ Set kcatcode of "Latin-1 letters", "Latin Extended-A" 15 (not_cjk).
+ * uppltotf.ch, uptftopl.ch:
+ Adapt to extend format of JFM to accept 24bit characters for chartype>0.
+ (from TeX Live, Thanks to Yamashita san)
+ * uptex-m.ch:
+ New primitives: \uptexversion and \uptexrevision.
+ (from TeX Live, Thanks to Kitagawa san)
+ * COPYRIGHT, COPYRIGHT.ja:
+ Update copyright year.
+ Build/source/texk/makejvf:
+ * Removed. Now it is distributed at
+ https://github.com/texjporg/tex-jp-build
+ Master/texmf-dist/{,source/}fonts/*:
+ * Removed. Now it is distributed at
+ https://github.com/texjporg/uptex-fonts
+ https://www.ctan.org/pkg/uptex-fonts
+ bin/convbkmk.rb:
+ * Removed. Now it is distributed at
+ https://ctan.org/pkg/convbkmk
+ samples:
+ Update.
+ 01uptex_doc_utf8.txt:
+ Update.
+
+2017.01.15 Ver1.22-20170115a
+ TeXLive svn r42954 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch,
+ uptex_version.h:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-9.0.0.txt Date: 2016-02-05, 23:48:00 GMT [KW]".
+ * upbibtex.ch: Fix bug on "substring$".
+ * COPYRIGHT, COPYRIGHT.ja:
+ Update copyright name and year.
+ Rename from COPYRIGHT.utf8 to COPYRIGHT.ja .
+ Build/source/texk/makejvf:
+ * uniblock.c: Update reference of Unicode blocks Blocks-9.0.0.txt .
+ * main.c: Update version number.
+ Master/texmf-dist/source/fonts/uptex-fonts,
+ Master/texmf-dist/fonts/{cmap,tfm,vf}/uptex-fonts,
+ Master/texmf-dist/tex/uptex/uptex-base:
+ * Rename the directories
+ Master/texmf-dist/fonts/cmap/uptex-fonts/UTF8-UTF16:
+ * Update to Ver1.003.
+ uplatex:
+ * Removed. Now it is distributed at
+ https://github.com/texjporg/uplatex
+ http://www.ctan.org/pkg/uplatex
+ 01uptex_doc_utf8.txt:
+ Update.
+
+2016.02.20 Ver1.21-20160220a
+ TeXLive svn r39778 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch,
+ uptex_version.h:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-8.0.0.txt Date: 2014-11-10, 23:04:00 GMT [KW]".
+ * COPYRIGHT.utf8:
+ Rename from COPYRIGHT.jis and convert encoding from ISO-2022-JP
+ to UTF-8.
+ Build/source/texk/makejvf:
+ * uniblock.c: Update references of Unicode blocks Blocks-8.0.0.txt
+ and CMap files.
+ * main.c: Update version number.
+ Master/texmf-dist/source/fonts/uptex/jis:
+ * upjisr-{h,v}.pl, upjisr-h-hk.pl:
+ Update.
+ Master/texmf-dist/fonts/vf/uptex/jis:
+ * uptch{rm,gt}-{h,v}.vf:
+ Update.
+ Master/texmf-dist/fonts/cmap/uptex/UTF8-UTF16
+ Update to Ver1.002.
+ 01uptex_doc_utf8.txt:
+ Update.
+
+2014.12.29 Ver1.20-20141229a
+ TeXLive svn 35915 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-7.0.0.txt Date: 2014-04-03, 23:23:00 GMT [RP, KW]".
+ Master/texmf-dist/fonts/cmap/uptex/UTF8-UTF16
+ Update to Ver1.001.
+ Master/source/uplatex/base, Master/source/platex/base:
+ * Move the position from Master/texmf-dist/tex/uplatex/base .
+ bin/convbkmk.rb:
+ Update to Ver0.10a:
+ Add -O option.
+ Make comments rd/rdtool friendly.
+ Fix bugs.
+ Update the author's mail address and web site.
+ samples:
+ Update.
+ 01uptex_doc_utf8.txt:
+ Update.
+
+2012.09.21 Ver1.11-20120921a
+ TeXLive svn 27750 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch:
+ Update upTeX version number.
+ * uptex-m.ch:
+ Fix bug for \meaning\kchardef
+ (Thanks to Z.R. san)。
+ Build/source/texk/dvi2tty:
+ * A proposal "dvi2tty-5.4.0" with new features:
+ ** Support T1,TS1,OT2,T2A,T2B,T2C,X2 encodings.
+ ** Add utf8 output for the latin, cyrillic encodings and
+ OML,OMS encodings.
+ Master/source/fonts/uptex/jis:
+ * Move the position from Master/fonts/source/uptex/jis .
+ bin/convbkmk.rb:
+ Update to Ver0.07:
+ Fix bugs, Support escape sequences, Add -o option.
+ samples:
+ Update.
+ 01uptex_doc_utf8.txt:
+ Update.
+
+2012.04.29 Ver1.10-20120429a
+ TeXLive svn 26146 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-6.1.0.txt Date: 2011-06-14, 18:26:00 GMT [KW, LI]"
+ Build/source/texk/makejvf:
+ * main.c:
+ Update upTeX version number.
+ Revise command line help messages.
+ * uniblock.c:
+ Update references.
+ "Blocks-6.1.0.txt Date: 2011-06-14, 18:26:00 GMT [KW, LI]"
+ cid2code.txt (Version 10/25/2010) for Adobe-CNS1-6
+ cid2code.txt (Version 10/29/2010) for Adobe-GB1-5
+ cid2code.txt (Version 02/04/2012) for Adobe-Japan1-6
+ cid2code.txt (Version 01/31/2012) for Adobe-Korea1-2
+ Master/texmf-dist/fonts/vf/uptex/jis/*.vf:
+ Update references.
+ "Blocks-6.1.0.txt Date: 2011-06-14, 18:26:00 GMT [KW, LI]"
+ cid2code.txt (Version 02/04/2012) for Adobe-Japan1-6
+ samples:
+ Update.
+ patch/*:
+ Remove.
+
+2012.01.18 Ver1.00-20120118a
+ Master/texmf-dist/fonts/vf/uptex/jis/*.vf:
+ * In Ver1.00-20120115a,
+ Master/texmf-dist/fonts/vf/uptex/jis/*.vf was obsolete virtual fonts.
+ Master/texmf-dist/fonts/tfm/uptex/jis/*.vf was latest ones.
+ New *.vf are now set in Master/texmf-dist/fonts/vf/uptex/jis/ .
+
+2012.01.15 Ver1.00-20120115a
+ TeXLive svn r25043 base
+ Build/source/texk/web2c/uptexdir:
+ * uptex-m.ch, uppltotf.ch, uptftopl.ch, updvitype.ch, upbibtex.ch:
+ Update upTeX version number.
+ * uptex-m.ch, kanji.c:
+ Update reference of Unicode blocks to
+ "Blocks-6.0.0.txt Date: 2010-06-04, 11:12:00 PDT [KW]".
+ Build/source/texk/makejvf:
+ * main.c:
+ Update upTeX version number.
+ Revise command line help messages.
+ * Makefile.{am,in}, main.c, makejvf.h, write.c, uniblock.{c,h}:
+ upTeX support for makejvf.
+ * uniblock.c:
+ Update references.
+ "Blocks-6.0.0.txt Date: 2010-06-04, 11:12:00 PDT [KW]"
+ cid2code.txt (Version 04/13/2010) for Adobe-CNS1-6
+ cid2code.txt (Version 04/13/2010) for Adobe-GB1-5
+ cid2code.txt (Version 06/24/2010) for Adobe-Japan1-6
+ Master/texmf-dist/fonts/{source,tfm,vf}/uptex/jis:
+ * makepl.perl, upjisr-h{,-hk}.pl, upjisr-v.pl,
+ upjis{r,g}-{h,v}.tfm, up{jpn,kor,sch,tch}{rm,gt}-{h,v}.tfm:
+ add U+2014 as Type 5 in tfm files.
+ * upjpn{rm,gt}-{h,v}.vf
+ add CJK Unified Ideographs Extension C,D.
+ * Makefile
+ Update.
+ bin/convbkmk.rb:
+ Update to Ver0.01: BOM typo was fixed.
+ samples:
+ Update.
+ fonts:
+ Delete obsolete fonts i.e. umin10.tfm.
+ ptexenc, dvips, dvipdfmx, dvi2tty:
+ Delete from this release because
+ TeXLive svn has already included upTeX support.
+ up(j)mpost, xdvi:
+ Delete from this release because
+ TeXLive svn has not included pTeX support yet.
+ otfbeta-uptex-0.07.tar.xz:
+ Delete from this release and
+ already released as an independent package.
+
+2010.04.10 Ver0.30
+ ptetex3-20090610 ベース
+ uptex-base.ch:
+ upTeXのヴァージョン番号の変更。
+ otfstable-uptex-0.05, 5macro_uptex.sh:
+ "otfstable (v1.2.9.2 2010/3/26)"ベースに更新。
+ 同梱のpackages/otfstable-1292.zipは、
+ 配布元のotfstable.zip (v1.2.9.2 2010/3/26) の
+ ファイル名を変更したのみのもの。
+ makejvf:
+ Unicode のブロックを
+ "Blocks-5.2.0.txt Date: 2009-05-19, 16:21:00 PDT [KW]"
+ ベースに更新。
+ 参考のCMapをVersion 08/11/2009〜08/23/2009のものに更新。
+ オプション "-u cns -3" を選択すると、CJK統合漢字Extension Cを含む。
+ fonts:
+ upjpn{rm,gt}-h.vf に半角片仮名が含まれていなかったのを修正。
+ uptch{rm,gt}-{h,v}.vf にCJK統合漢字Extension Cを追加。
+ ptexenc:
+ WindowsNT系のコマンドプロンプトでのUnicode文字入力
+ (コピー&ペーストで入力可能)のために
+ ReadConsoleW()を使ったコードを書いてみた。
+ Windows9x系では動かないはずだが --sjis-terminal で
+ 利用することを想定。
+ getc4_win32console()の単体で動作確認したのみだが
+ 上手く動くかどうか。
+ BOMの読み込み判定を最新ptexencからバックポートした。
+ web2c/cpascal.h, dvipsk/afm2tfm.c, updvi2tty/dvistuff.c:
+ getline 重複定義対策。
+ (デビ丸さん、ありがとうございました)
+ kpathsea/fontmap.c:
+ free のバグ対策。
+ (デビ丸さん、ありがとうございました)
+ samples: 更新。
+ uptex_font-0.30.tar.gz, 0uptex.sh:
+ up{jpn,tch}*.vf 更新。
+ CMapをoreillyのサイトのものからAdobeのサイトのものへ更新。
+2010.01.31 Ver0.29
+ ptetex3-20090610 ベース
+ 0uptex.sh, ptex-src-3.1.10-3.1.11.patch:
+ ptex-3.1.11 ベースに変更。
+ ptex-src-3.1.10-forum327.patch は不要になった。
+ 0uptex.sh:
+ eptex, euptex自動インストールを廃止。
+ 代わりに euptex-091003 以下に eptex-091003.tar.bz2 の
+ 修正部分を置いた。テスト用。
+ uptex-base.ch, kanji.c:
+ 全角英数字、半角片仮名のブロックを
+ Halfwidth and Fullwidth Forms のブロックから分離した。
+ (Doraさん、ZRさんに御意見をいただき、
+ ありがとうございました)
+ Unicode のブロックを
+ "Blocks-5.2.0.txt Date: 2009-05-19, 16:21:00 PDT [KW]"
+ ベースに更新。
+ samples: 更新。
+2009.08.23 Ver0.28
+ ptetex3-20090610 ベース
+ uptex-base.ch, 0uptex.sh, ptex-src-3.1.10-forum327.patch:
+ upTeXのヴァージョン番号の変更。
+ ptexlive から patch を拝借して、下記の修正を入れた。
+ http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=327
+ 下記のkcatcode関連バグ修正。
+ (Doraさん、北川さん、ありがとうございました)
+ http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/53557.html
+ http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/53556.html
+ euptexdir/ptexextra.c:
+ e-pTeX/e-upTeX (090309) の自動インストール時に
+ FAM256 パッチを無効とした場合に
+ eupTeX が上手く動かなかったバグ修正。
+ (栗山さん、北川さんに御意見をいただき、
+ ありがとうございました)
+ 0uptex.ch, 5macro_uptex.sh:
+ 最新の jsclasses が ptetex3 に入ったので
+ インストール法を元に戻した。
+ 0uptex.ch:
+ 小さいバグ修正。
+ convbkmk.rb:
+ 新規に作成したrubyスクリプトを同梱。
+ upLaTeX, dvips と hyperrefとの組合せでしおり(bookmark)を
+ 正常につくれるようになった。
+ 松本隆太郎氏の convert-euc.txt
+ (Ref. http://www.rmatsumoto.org/tex-ps-pdf/hyperref.ja.html)
+ とほぼ同様の機能であるが、
+ pTeX/upTeX 両対応となっている点と ruby なのが新規。
+ 引数に dvips の出力 foo.ps を指定すると foo-convbkmk.ps へ出力する。
+ dvips の出力を標準入力に与えると標準出力へ出力する。
+ この ruby スクリプトはMITライセンスとする。
+ otfstable-uptex-0.04:
+ 小さいバグ修正。
+ (角藤さん、ZRさんに御意見をいただき、
+ ありがとうございました)
+ ptexenc:
+ 上流の更新に対応するための修正。
+ samples: 更新。
+2009.03.12 Ver0.27
+ ptetex3-20080616 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ Makefile.in, 0uptex.chなど:
+ e-pTeX/e-upTeX (090309) の自動インストール。
+ さらに、FAM256 パッチを利用可能にした。
+ eptex-090309.tar.bz2 の配布のうち etex.diff, uptex.diff,
+ eptex.src, euptex.src, eptexdefs.lib, fp.ch, fam256.ch を利用。
+ その他は、拙作パッチに含まれるようにしたが、些細な点を除いて
+ 北川さんオリジナルとほぼ同等のものが出来上がるはず。
+ my_option で ENABLE_EPTEX_FAM256=1 を指定すると
+ FAM256 パッチが有効になる。
+ jsclasses-090222.zip, 0uptex.ch, 5macro_uptex.sh:
+ jsclasses を更新。
+ 配布元の奥村さんのところで upTeX パッチを適用して頂いた。
+ 0uptex.ch:
+ CTAN の cbfonts.zip のディレクトリ構成が変更されていたのに対応。
+ cbfonts.zip, cm-super.zip, unicode.zip のインストール先を
+ texmf-dist に変更。
+ 6babel_uptex.sh:
+ eplatex, euplatex + babel でのfmtの再生成が出来ていなかったのを修正。
+ samples: 更新。
+2009.02.21 Ver0.26
+ ptetex3-20080616 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ Makefile.inなど: eTeX, pdfeTeX などと同様に
+ ヴァージョン番号を ptexextra.h などに自動で採り入れるようにした。
+ 0uptex.chなど: e-pTeX/e-upTeX (090220) の自動インストール。
+ (北川さん、e-pTeX/e-upTeX の開発有難うございました。)
+ eptex-090220.tar.bz2 の配布のうち etex.diff, uptex.diff,
+ eptex.src, euptex.src, eptexdefs.lib, fp.ch を利用。
+ その他は、拙作パッチに含まれるようにしたが、些細な点を除いて
+ 北川さんオリジナルとほぼ同等のものが出来上がるはず。
+ FAM256 は無効のままとなっている。
+ jsclasses-090123-uptex0.26.zip, 0uptex.ch, 5macro_uptex.sh:
+ jsclasses を更新。upTeX パッチ適用済を同梱した。
+ samples: 更新。
+2008.12.13 Ver0.25
+ ptetex3-20080616 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ otf, otfstable-uptex-0.03:
+ 本文用vfに、JIS X 0208に含まれずかつJIS X 0213に含まれかつ
+ Unicodeで合成不要の文字を追加した。
+ プロポーショナル仮名は未検討。
+ fontmap更新。
+ samples: 更新。
+2008.10.18 Ver0.24
+ ptetex3-20080616 ベース
+ uptex: フルパス指定などで起動できない問題点を修正した。
+ uptex, upjbibtex, uppltotf, uptftopl:
+ BUG_ADDRESS を表示しないようにした。
+ updvi2tty: 環境によってコンパイルに失敗する問題点を修正した。
+ otf, otfstable-uptex-0.02:
+ 本文用vfを追加した。JIS X 0208に含まれない仮名は未検討。
+ プロポーショナル仮名は未検討。
+ 5macro_uptex.sh, 6babel_uptex.sh, 0uptex.sh:
+ root_checkが効いていなかったのを修正した。
+ otfパッケージの本文用vfインストールを追加。
+ samples: 更新。
+2008.09.04 Ver0.23
+ ptetex3-20080616 ベース
+ updvi2tty: dvi2tty 日本語版を upTeX 対応にしたものを追加。
+ ptexenc ライブラリーを使用。
+ pTeX や NTT JTeX の場合でも UTF-8 出力が可能になっている。
+ NTT JTeX の場合の改行に関するバグも修正している。
+ 0uptex.sh: updvi2tty の自動インストールを追加。
+ xdvi: 半角片仮名のとき、"Warning: 'font' (code=0xXXXX) is not square."
+ の警告を出さないようにした。
+ ptexenc: PTEXENC_VERSION に 0.997-u00 と upTeX パッチの枝番を付けた。
+ samples: 更新。
+2008.08.03 Ver0.22
+ ptetex3-20080616 ベース
+ makejvf: font ID を0番から開始するオプション -i を追加。
+ dvioutとの組合せで発現する問題を回避するため。
+ uptex_font: 上記 makejvf の修正を適用。
+ umin5, umin6, ..., umin9 などを Makefile から削除。
+ 0uptex.sh: 「xdviインストールなし」の場合でも動作するように修正。
+ pdvitype: -kanjiオプションが無効になっていたバグ
+ (オリジナルのptetex3では発現せず、uptexパッチによるバグ)を修正。
+ xdvi: 半角片仮名が再度おかしくなっていたバグを修正。
+ あまり自信はないが、動いているように見える。
+ samples: 更新。
+2008.03.13 Ver0.21
+ ptetex3-20080311 ベース
+ uptex-base.ch: \uppercase, \lowercase が異常になるバグを修正。
+ updvitype, uppltotf, uptftopl, upjbibtex, upjmpost:
+ default のエンコーディングを
+ --kanji=utf8 --kanji-internal=uptex 相当にした。
+ xdvi, dvips, dvipdfmx:
+ set3 対応のために消費していたメモリー領域を動的確保に変更。
+ 従来ptetex3 版比 17 倍だったが、 SIP 使用時に3倍程度、
+ pTeX/pLaTeX 使用時には ptetex3 版とほぼ同等になった。
+ dvips:
+ CMap の UTF32 と UTF8 に対応。
+ UniJISX0213-UTF32 など UTF16 のものが公開されていないものに対し
+ 有用と思われる。
+ 0uptex.shなど:
+ make babelの後、uplatex.fmtを自動生成できていなかった点を修正。
+ make babel相当を自動で行うことにした。
+ 不要なら0uptex.shからコメントアウトする。
+ samples: 更新。
+2008.01.12 Ver0.20
+ ptetex3-20080107 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ updvitype, uppltotf, uptftopl, upjbibtex, upjmpost, updvitomp, upovp2ovf:
+ 以前は pdvitype, pltotf, tftopl, jbibtex, jmpost, pdvitomp, ovp2ovf は
+ ptetex3 のものを上書きしていたが、コマンド名を新設し上書きをやめた。
+ W32TeX では既にそのようにして頂いている。
+ ptexenc, makejvf, xdvi, dvips, dvipdfmx, jsclasses は、
+ まだ上書きしている。
+ upjbibtex: デフォルトの内部コードを uptex とした。
+ upmakempx: 新設。
+ samples: 更新。
+2007.12.26 Ver0.19
+ ptetex3-20071214 ベース
+ uptex-base.ch: プリミティヴ \forcecjktoken を追加。
+ フォント: upjisr-h, upjisg-h 等を修正。
+ 半角仮名関係のグルーを追加。
+ ukinsoku.tex: 半角仮名関係を追加。
+ otf: 本文用vf利用の準備。実際の本文用vfは、別途検討する。
+ samples: 更新。
+2007.12.08 Ver0.18
+ ptetex3-20071207 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ フォント: upjisr-h, upjisg-h 等を修正。
+ 横組時に半角片仮名 (U+FF61〜U+FF9F) に対応させた。
+ xdviで "uprml-h is not a square metric." などの警告が出てしまうが、
+ 一応動いているようだ。
+ makejvf: オプション -H を新設し、横組時に半角片仮名 (U+FF61〜U+FF9F)
+ に仮対応した。
+ psフォント用のtfm出力において半角片仮名の部分は
+ makejvfでの対応が出来ていない。
+ jmpost: 半角片仮名 (U+FF61〜U+FF9F) に対応した。
+ samples: 更新。
+2007.11.17 Ver0.17
+ ptetex3-20071030 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ フォント: upjisr-h, upjisg-h 等を修正。公称10ptをDESIGN SIZE 10ptに、
+ 縦横比を1:1に、CHARHT:CHARDPの比を88:12に変更した。
+ ujarticle.cls などで10pt指定に対し公称10pt, DESIGN SIZE 10ptを
+ 9.62216ptに縮小した(OTFパッケージ同様)。
+ jarticle.cls と和文,欧文の横の大きさと比は一部の約物を除き一致する。
+ plain upTeX の uptex.tex では、10pt指定をDESIGN SIZE 10ptにした。
+ このため plain pTeX と和文の大きさが異なることになる。
+ jsclasses: uplatexオプション時にデフォルトで upjisr-h.tfm を
+ 0.962216*0.961=0.924690 倍して使うようした。
+ ujis.tfm を使うには uplatex,jis オプションを指定する。
+ umin10.tfm を使うには uplatex,mingoth オプションを指定する。
+ ptexenc.c: 微修正。
+ 無事 Windows のコマンドプロンプトでUnicodeの表示が出来ているようだ
+ (Thanks to 角藤さん)。
+ samples: 更新。
+ (奥村さん、uchiyamaさん、本田さん、ZRさんに御意見をいただき、
+ ありがとうございました)
+2007.11.10 Ver0.16
+ ptetex3-20071030 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ ptexenc.c: Windows のコマンドプロンプト用に
+ WriteConsoleW()を使ったコードを書いてみた。
+ Windows9x 系では動かないはずだが --sjis-terminal で
+ 利用することを想定。
+ 動作確認していないがはたして上手くいくかどうか?
+ makejvf: -U, -u jisq オプションを追加してみた。
+ 縦組対応にはこれでも不充分で、専用の CMap を作るしかないようだ。
+ フォント: upjisr-h, upjisg-h 等を作成。公称10ptを9.62216pt(min10同様)に、
+ 縦横比を1:1に、CHARHT:CHARDPの比を88:12にしてみた。
+ default のフォントを ujis,ujisg → upjisr-h, upjisg-h 等に変更。
+ 中韓のフォントを upjisr-h 系に変更。
+ 中韓のフォントにSans Serif用を追加。
+ samples: 追加、更新。
+2007.10.18 Ver0.15
+ ptetex3-20071017 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ uplcore.ltx: "2006/11/10" ベースに更新。
+ u{,t}{article,report,book}.clsなど: "2006/06/27 v1.6" ベースに更新。
+ otfパッケージ: \UTFK{}, \CIDK{} などを動くようにした。
+ font/map/for_dviout.map: dviout 用のmap記入例を追加。
+ これで dviout の簡単なテストを行った。
+ samples: 追加、更新。
+ samples/testrun.bat: MS-DOS 用のバッチファイルを追加。
+2007.09.25 Ver0.14
+ ptetex3-20070822 ベース
+ uptex-base.ch: ヴァージョン番号の変更のみ。
+ ptexenc.c: 環境によってコンパイル出来ない問題を修正。
+ 0uptex.sh: EUC-JP → UTF-8に。英語のコメントを追加。
+ 00readme_en.txt: 追加。
+2007.09.15 Ver0.13
+ ptetex3-20070822 ベース
+ ptexenc: "-kanji=uptex" のとき "-kanji-internal=*" を無視し、
+ 強制的に "-kanji-internal=uptex" をセットし、
+ 内部コードを uptex に固定するようにした。
+ makejvf, 付属フォント: 「‘」「’」「“」「”」に関し
+ ujis.vf などでの対応先を urml.tfm→rml.tfm 等 jis 系に変更。
+ フォント: default のフォントを umin10,ugoth10 → ujis,ujisg 等に変更。
+ default のフォントからset3を取り除いた。
+ {uj,ut}{book,report}.cls: 追加。
+ jmpost: -kanji オプションが子プロセスに伝搬するようにした
+ (Thanks to 角藤さん)。
+ samples: 更新。
+ (ZRさん、土村さんに御意見をいただき、ありがとうございました)
+2007.08.25 Ver0.12
+ ptetex3-20070822 ベース
+ uptex: kcatcodeが18でUTF-8の3〜4バイトの場合に処理がときどき
+ 異常になるバグを修正。
+ ハングルの直後の改行を空白扱いするように変更。
+ (Ref. http://project.ktug.or.kr/omega-cjk/tug2004-preprint.pdf)
+ ptexenc: is_internalUPTEXの場合に JIS→Unicode の変換を
+ 実装依存ではなく、一種類に固定するようにした。
+ ukinsoku.tex: \inhibitglue の U+FF5E の追加など。
+ jbibtex: デフォルトの内部コードをuptexからeucに戻した。
+ デフォルトではupTeXパッチのない状態に等しくなっているはず。
+ samples: 追加、更新。
+ (ZRさん、栗山さん、土村さんに御意見をいただき、ありがとうございました)
+2007.08.07 Ver0.11
+ ptetex3-20070806 ベース
+ jcharwidowpenalty がらみの動作が動かなくなっていたのを修正。
+ pdvitype: 出力を、端末の文字コードではなく
+ -kanji 指定を優先するように変更。
+ ukinsoku.tex: 8 bit 欧文に関し \xspcode を追加。
+ makejvf: cjk に用いないコード値を vf に入れないようにした。
+ uptex_font: vf の軽量化。
+ sample を更新。
+ (ZRさん、安田さんに御意見をいただき、ありがとうございました)
+2007.07.28 Ver0.10
+ ptetex3-20070606 ベース
+ \char`<文字>, \chardef では文字コードが255以下の場合には欧文動作、
+ 265以上の場合には和文動作となるように変更した。
+ さらに、文字コードが255以下の場合に和文動作をするためのプリミティヴ
+ \kchar`<文字>, \kchardef を追加した。
+ jbibtex へのパッチのバグ修正。さらに、-kanji-internal=uptex,
+ -kanji-internal=euc が動くようにした。
+ -kanji-internal=euc ならば従来のjbibtexと同等の動作になる(はず)。
+ ovp2ovf へのパッチの微修正。
+ cbfonts, cm-super などのインストール先の修正。
+ sample を更新。
+ (多数の点でZRさんに御意見をいただき、ありがとうございました)
+2007.06.16 Ver0.09
+ ptetex3-20070606 ベース
+ \string cjkトークン のバグ
+ (ZRさんに御報告いただき、ありがとうございました) に関し
+ 全く不可解なトークンは発生しないようにした(つもり)。
+ kcatcode表のデフォルト値を見直した (ZRさんに御提案いただき、
+ ありがとうございました) 。
+ unicode.zip, cbfonts.zip があれば自動インストールするようにした。
+ jsclasses へのパッチの微修正。
+ ovp2ovf へのパッチの微修正。
+ sample を更新。
+2007.05.28 Ver0.08
+ ptetex3-20070522 ベース
+ \char<数値>, \chardef で文字コードが 255 以下の場合に
+ kcatcode, enablecjktoken の条件が整えば cjkトークンにするようにした。
+ utf/otf パッケージへの簡易的対応。まだ一部しか動かない。
+ また、実装方法も今後変更する可能性がある。
+ cm-super.zip があれば自動インストールするようにした。
+ uptex_font-0.08.tar.gz : vfフォントに 0x7F 以下を追加した。
+ これらは\char, \chardef による指定で利用可能になったはず。
+ sample を更新。
+2007.05.13 Ver0.07
+ ptetex3-20070426 ベース
+ CJKの内部コードを kcatcode + 文字コード に変更。
+ 内部レジスターにおいて U+0080〜U+0FFF がそのままのコード値で
+ 使えなかった問題点をほぼ解消したつもり。
+ まだ \char<数値> などの 255以下で問題がある。
+ 大工事なので、安定性は低下しているおそれあり。
+ jbibtex の Unicode 対応実験(土村さんによる)を更新。
+ dvipdfmx で hyperrefとの組合せで bookmark を正常につくれるようにした。
+ calc_pos の簡略化。
+ kcatcodekey の簡略化(土村さんによる)。
+ makejvf の微修正。
+ sample を更新。
+2007.04.15 Ver0.06
+ ptetex3-20070412 ベース
+ jbibtex の Unicode 対応実験(土村さんによる)を更新。
+ プリミティヴ \enablecjktoken, \disablecjktoken を追加。
+ ukinsoku.tex を UTF-8 にし、JIS X 0212, JIS X 0213 関連を追加。
+ uptex-base.ch で cs_token_flag を変更。
+ sample を追加、更新。
+ uptex_font-0.06.tar.gz : 新版の CMap Uni{JIS,GB,UCS,KS}-UTF16-{H,V} を追加。
+2007.04.08 Ver0.05
+ ptetex3-20070405 ベース
+ ptexenc との摺り合わせ(土村さんに作業していただき、有難うございました)。
+ jbibtex の Unicode 対応実験(土村さんによる)を同梱。
+ JIS X 0213 関連ソースの動かなくなっていた部分を削除。
+ EUC/SJIS 動作で kcat_code の内部領域を変更。
+ uptex で kcode_pos, trick_buf2 の多バイト対応したつもり。テストは不十分。
+ jsclasses を uplatex に簡易対応させた。
+ dvips のオプション -UCS, -SJIS を廃止し、自動判定するようにした。
+ uptex-utf8.fmt, uplatex-utf8.fmt を uptex.fmt, uplatex.fmt に変更。
+ tftopl, pltotf のコード範囲のチェックを checkkanji 任せに変更。
+ ドキュメントに「upTeX開発のねらい」を追加。
+ sample を追加。
+2007.03.25 Ver0.04
+ ptetex3-20070323 ベース
+ 新しい ptexenc の関数に対応(土村さんに作業していただき、有難うございました)。
+ sample を修正。
+2007.03.18 Ver0.03
+ ptetex3-20070316 ベース
+ 自動インストールスクリプトを追加した(Thanks to 土村さん)。
+ ディレクトリ構成、インストール上の問題点を修正(Thanks to 土村さん)。
+ メモリーを浪費していた点を修正(土村さんにご指摘いただきました)。
+ 新しい ptexenc の関数に一部を変更。
+ jmpost が set3 を含めて動くようになった。
+ sample を追加。
+ フォントのバイナリーパッケージでシンボリックリンクを使用するようにした。
+2007.03.07 Ver0.02
+ ptetex3-20070304 ベース
+ sample を微修正。
+ フォントのバイナリーパッケージを分離。
+2007.02.27 Ver0.01
+ ptetex3-20070223 ベース
+ kanji_enc を入出力コード(-kanji=xxx)と内部コード(-kanji-internal=xxx)
+ に分離(Thanks to 土村さん)。
+ ptex と uptex のソース、バイナリーを分離。共存できるようにした。
+ sample を追加。
+ jis.tfm 系のフォントを追加。同系統のCJKのフォントを追加。
+ CJKの動作確認。sample を追加。
+ とりあえずkcatcodeに hangul(19)を追加。現状は漢字(16)と同じ動作。
+ dvidpfmx で set3 が使えるようになった。
+ pltotf がまともに使えるようになった。
+2007.01.27 Ver0.00
+ ptetex3-20070101 ベース
diff --git a/language/japanese/uptex-base/LICENSE b/language/japanese/uptex-base/LICENSE
new file mode 100644
index 0000000000..f6c6963da1
--- /dev/null
+++ b/language/japanese/uptex-base/LICENSE
@@ -0,0 +1,29 @@
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016-2019 Takuji Tanaka
+Copyright (c) 2016-2019 Japanese TeX Development Community
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/language/japanese/uptex-base/Makefile b/language/japanese/uptex-base/Makefile
new file mode 100644
index 0000000000..507a3c53e7
--- /dev/null
+++ b/language/japanese/uptex-base/Makefile
@@ -0,0 +1,21 @@
+KANJI = -kanji=utf8
+FONTMAP = -f ipaex.map -f uptex-ipaex.map
+TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
+
+all:
+ echo Nothing to be built.
+
+.PHONY: install
+install:
+ mkdir -p ${TEXMF}/doc/uptex/uptex-base
+ cp ./LICENSE ${TEXMF}/doc/uptex/uptex-base/
+ cp ./README.md ${TEXMF}/doc/uptex/uptex-base/
+ cp ./*.txt ${TEXMF}/doc/uptex/uptex-base/
+ cp ./Makefile ${TEXMF}/doc/uptex/uptex-base/
+ mkdir -p ${TEXMF}/doc/uptex/uptex-base/samples
+ cp ./samples/* ${TEXMF}/doc/uptex/uptex-base/samples/
+ mkdir -p ${TEXMF}/tex/uptex/uptex-base
+ cp ./uptex.tex ${TEXMF}/tex/uptex/uptex-base/
+ cp ./ukinsoku.tex ${TEXMF}/tex/uptex/uptex-base/
+ cp ./*.ini ${TEXMF}/tex/uptex/uptex-base/
+ cp ./euptex.src ${TEXMF}/tex/uptex/uptex-base/
diff --git a/language/japanese/uptex-base/README.md b/language/japanese/uptex-base/README.md
new file mode 100644
index 0000000000..dc2c95f498
--- /dev/null
+++ b/language/japanese/uptex-base/README.md
@@ -0,0 +1,22 @@
+# uptex-base
+
+The bundle contains plain TeX format, documents, and samples for
+upTeX and e-upTeX.
+
+## Repository
+
+The bundle is maintained on GitHub:
+https://github.com/texjporg/uptex-base
+
+If you have issues, please let us know from the above page.
+
+## License
+
+The bundle may be distributed and/or modified under the terms of
+the 3-clause BSD license (see [LICENSE](./LICENSE)).
+
+## Release Date
+
+2019-05-12
+
+Japanese TeX Development Community
diff --git a/language/japanese/uptex-base/README_uptex.txt b/language/japanese/uptex-base/README_uptex.txt
new file mode 100644
index 0000000000..9e1ae5781e
--- /dev/null
+++ b/language/japanese/uptex-base/README_uptex.txt
@@ -0,0 +1,54 @@
+upTeX standard format files
+
+
+#### Contents
+ uptex.tex: format file.
+ ukinsoku.tex: kinsoku file.
+
+
+#### Copyright
+The files in this directory are
+based on "texmf library for Japanese TeX (pTeX)"
+by ASCII Corporation (currently ASCII MEDIA WORKS Inc.)
+and modified for upTeX/upLaTeX.
+These are available under the following license agreement.
+
+===============================================================================
+
+Copyright (C) 1987, 1995 ASCII Corporation.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. Neither the name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+===============================================================================
+
+
+#### ChangeLog
+
+uptex-1.00 [2012/01/15] TTK
+ * re-package for upTeX/upLaTeX Ver.1.00 distribution.
+
+v20110507a [2011/05/07] TTK
+ * re-package for upTeX/upLaTeX based on uptex-0.30 distribution
+ and ptex-texmf-2.5.tar.gz .
diff --git a/language/japanese/uptex-base/euptex.ini b/language/japanese/uptex-base/euptex.ini
new file mode 100644
index 0000000000..34ddc33dd6
--- /dev/null
+++ b/language/japanese/uptex-base/euptex.ini
@@ -0,0 +1,4 @@
+%% for e-upTeX (ASCII Nihongo e-upTeX)
+\input euptex.src
+\dump
+\endinput
diff --git a/language/japanese/uptex-base/euptex.src b/language/japanese/uptex-base/euptex.src
new file mode 100644
index 0000000000..a6be4d61dd
--- /dev/null
+++ b/language/japanese/uptex-base/euptex.src
@@ -0,0 +1,780 @@
+%% e-upTeX macro (2016/12/06)
+%% derived from $TEXMF/tex/plain/etex/etex.src (V2.1;0 01-FEB-1999), eptex.src
+%% e-upTeX: euptex *euptex.src
+
+% Assume a purely IniTeX environment and set up a minimal \catcode r\'egime
+
+\catcode `\{=1
+\catcode `\}=2
+\catcode `\#=6
+\catcode `\^=7
+\catcode `\@=\catcode `\A
+
+% Define the basic error-reporting and abort mechanisms:
+
+\def \et@xmsg #1#2%
+ {\begingroup
+ \def \n {^^J}%
+ \def \ { }%
+ \newlinechar=\expandafter `\n
+ \if E#1%
+ \errorcontextlines=0
+ \errmessage {e-TeX error: #2}%
+ \else
+ \message {\n ! e-TeX \if I#1 message%
+ \else \if W#1 warning%
+ \else \if F#1 fatal error%
+ \else
+ \ unknown (#1)%
+ \fi
+ \fi
+ \fi: #2%
+ }%
+ \fi
+ \endgroup
+ }
+
+% Note: a future version may report errors in the %<fac>-<s>-<code>[, <text>]
+% format, allowing the more verbose <text>s to be read from file rather than
+% stored in the format.
+
+\def \et@xabort #1%
+ {\et@xmsg {F}{#1}%
+ \batchmode
+ \end
+ }
+
+% Make sure this file is being read by e-TeX in extended mode;
+% If it is, prepare to check version/revision compatibility, otherwise abort.
+
+\ifx \undefined \eTeXversion
+ \et@xabort {this file can be processed only in extended mode;\n
+ \ \ did you perhaps forget the asterisk?%
+ }%
+\else
+ \begingroup
+ \catcode `\%=12
+ \catcode `\?=14
+ \xdef \et@xfilehdr
+ {\detokenize {%% e-TeX V}\the \eTeXversion \eTeXrevision}?
+ \xdef \et@xlibhdr
+ {\detokenize {%% e-TeXlib V}\the \eTeXversion \eTeXrevision}?
+ \endgroup
+\fi
+
+% Assume extended mode, but no additional \catcodes/\defs yet;
+% set up a simple e-TeX condition-reporting system:
+
+\def \et@xinf #1{\et@xmsg {I}{#1}} %%% not currently used
+\def \et@xwarn #1{\et@xmsg {W}{#1}}
+\def \et@xerr #1#2{{\errhelp={#2}\et@xmsg {E}{#1}}}
+
+% deactivate the processing of patterns and exceptions; these will be
+% reinstated later, after the \uselanguage mechanism has been defined.
+
+\let \et@xpatterns=\patterns
+\def \patterns
+ {\begingroup
+ \everyeof={\fi \endgroup}%
+ \message {[skipping from \noexpand \patterns to end-of-file...]}%
+ \iffalse
+ }
+
+% Read "uptex.tex" (\patterns & \hyphenation will be skipped)
+
+\input uptex.tex
+
+% restore the catcode of commercial-at (@), which will just have been clobbered
+
+\catcode `\@=\catcode `\A
+
+% Assume an extended Plain environment (i.e. there are no longer any
+% restrictions on the coding techniques we can use). First prepare to
+% carry out consistency checks on the file headers and the current e-TeX
+% version/revision levels:
+
+\newread \et@xinput
+
+\def \etexhdrchk #1#2%
+ {\openin \et@xinput=#2
+ \ifeof \et@xinput
+ \chardef \etexstatus=0 % V1.0-1
+ \else
+ \begingroup
+ \endlinechar=-1
+ \readline \et@xinput to \et@xbuf
+ \closein \et@xinput
+ \def \p@rtition ##1.##2\endp@rtition {##1}% V2.1%0
+ \xdef \et@xbuf
+ {\expandafter \p@rtition \et@xbuf .\endp@rtition}% V2.1;0
+ \xdef \et@xtmp {\csname et@x#1hdr\endcsname}%
+ \xdef \et@xtmp
+ {\expandafter \p@rtition \et@xtmp .\endp@rtition}% V2.1;0
+ \endgroup
+ \ifx \et@xtmp \et@xbuf
+ \chardef \etexstatus=2 % V1.1;4
+ \else
+ \chardef \etexstatus=1 % V1.1;4
+ \fi
+ \fi
+ }
+
+% Check the version number of etex.src:
+
+\def \et@xfmtsrc {etex.src}
+\etexhdrchk {file} {\et@xfmtsrc}
+\ifcase \etexstatus
+ \et@xerr {unable to open format source file "\et@xfmtsrc";}
+ {This should not happen; please ensure that your system
+ allows a file to be opened for reading more than once
+ concurrently.%
+ }%
+\or
+ \et@xwarn {format source file "\et@xfmtsrc" has wrong header;\n
+ \ \ expected: "\et@xfilehdr"; found: "\et@xbuf";%
+ }%
+ {You are using a version of e-TeX which may be incompatible
+ with the source for the format file you are trying to
+ compile; please ensure that you have the most recent
+ version of each. I will proceed, but you should treat
+ the results with caution...%
+ }%
+\fi
+
+% Module handling now implemented (V1.0-2)
+
+\def \module #1{\iftrue}
+\let \endmodule=\fi
+
+\newtoks \et@xtoks
+
+\def \et@xl@@d #1 #2\endl@ad %%% the "#1 #2" code avoids trailing spaces
+ {\ifcsname module:#1\endcsname
+ \et@xwarn {duplicate module name "#1"}%
+ \else
+ \csname module:#1\endcsname %%% we exploit the side-effect explicitly
+ \et@xtoks=\expandafter
+ {\the \et@xtoks
+ \expandafter \let \csname module:#1\endcsname=\undefined
+ }%
+ \fi
+ }
+
+\def \et@xl@ad #1#2,#3\endl@ad %%% the #1#2 code avoids spurious leading spaces
+ {\et@xl@@d #1#2 \endl@ad
+ \if *#3*
+ \let \n@xt=\relax
+ \else
+ \def \n@xt {\et@xl@ad #3\endl@ad}%
+ \fi
+ \n@xt
+ }
+
+\def \et@xload #1 %%% needed because of the embedded \ifs...
+ {\def \module ##1%
+ {\unless
+ \ifcsname module:##1\endcsname
+ \message {Skipping module "##1";}%
+ \else
+ \message {Loading module "##1";}%
+ }%
+ \input #1
+ \def \module ##1{\iftrue}%
+ }
+
+\def \load #1 from #2 %%% selective module loading from an e-TeX library file
+ {%\etexhdrchk {lib} {#2}%
+ \ifcase \etexstatus
+ \et@xerr {unable to open library file "#2"; load aborted.}
+ {I got an <eof> on trying to open your library file;
+ please make sure it exists, is readable and is not locked.%
+ }%
+ \or
+ \et@xerr {library file "#2" has wrong header;\n
+ \ \ expected: "\et@xlibhdr"; found: "\et@xbuf";\n
+ \ \ load aborted.%
+ }%
+ {The first line of your library does not start with
+ the correct e-TeX header; you may need to update the
+ file to be compatible with the current version of
+ e-TeX, or you may simply have specified the wrong file.%
+ }%
+ \else
+ \et@xtoks={\et@xtoks={}}%
+ \et@xl@ad #1,\endl@ad
+ \et@xload {#2}
+ \the \et@xtoks
+ \fi
+ }
+
+\load interactionmodes from eptexdefs.lib %%% \load <foo>[, <bar>...] from <baz>
+
+\def \@sk #1#2#3%
+ {\ifnum \interactionmode=\interactionmodes {errorstop} %%% V2.0;15
+ \def \pr@mpt {\csname #1 \endcsname}%
+ \edef \pr@mptloop {{\escapechar=-1 \global \readline 16 to \pr@mpt}}%
+ \loop \pr@mptloop
+ \ch@ckforyn \pr@mpt {#2}%
+ \ifb@dresponse
+ \message {Please answer Y[es] or N[o]}%
+ \repeat
+ \else
+ \def \pr@mpt {#3}%
+ \ch@ckforyn \pr@mpt {#2}%
+ \fi
+ }
+
+\def \ch@ckforyn #1#2% Bernd Raichle's improved version, V1.0-1
+ {\edef \@nswer {#1}%
+ \def \p@rse ##1##2\endp@rse
+ {\lowercase {\if y##1}\b@dresponsefalse \csname #2true\endcsname
+ \else \lowercase {\if n##1}\b@dresponsefalse \csname #2false\endcsname
+ \else
+ \b@dresponsetrue
+ \fi
+ \fi
+ }%
+ \expandafter \p@rse \@nswer \endp@rse
+ }
+
+\def \usef@llback %%% V1.0-3
+ {\message {Using fallback mode (USenglish)}%
+ \addlanguage {USenglish}{hyphen}{}{2}{3}%
+ }
+
+% OK, that's all the utilities defined; on with the real work:
+% First, re-instate \patterns:
+
+\let \patterns=\et@xpatterns
+
+% Define the language-handling commands
+
+\def \et@xlang {\csname newlanguage\endcsname}
+
+\def \uselanguage #1%
+ {\ifcsname lang@#1\endcsname
+ \language=\csname lang@#1\endcsname
+ \lefthyphenmin=\csname lhm@#1\endcsname
+ \righthyphenmin=\csname rhm@#1\endcsname
+ \ifdefined \uselanguage@hook % V1.0-1
+ \uselanguage@hook {#1}% % V1.0-1
+ \fi
+ \else
+ \et@xerr {language #1 undefined.}%
+ {You are trying to use a language which has not previously
+ been defined; remember that any language you want to use
+ will need to have been specified at the time the format
+ was created.%
+ }%
+ \fi
+ }
+
+\def \addlanguage #1#2#3#4#5% language patterns exceptions lhm rhm
+ {\expandafter \et@xlang \csname lang@#1\endcsname
+ \expandafter \chardef \csname lhm@#1\endcsname=#4 % V1.0-1
+ \expandafter \chardef \csname rhm@#1\endcsname=#5 % V1.0-1
+ \uselanguage {#1}%
+ \input #2
+ \if *#3*\else \input #3 \fi
+ \ifdefined \addlanguage@hook % V1.0-4
+ \addlanguage@hook {#1}% % V1.0-4
+ \fi
+ \edef \fmtversion {\fmtversion/#1}%
+ }
+
+% Decrement \count 19, because \newlanguage will increment it again
+
+\advance \count 19 by -1
+
+% We are about to try to process a user/site-specific file "language.def",
+% which establishes a Babel-like language selection environment. Since
+% there is always a risk of a spurious file of that name being found,
+% we look for an e-TeX header in the first line. If the file can be opened,
+% but doesn't have the right header, we interrogate the user as to whether
+% to use fallback mode; in this mode, we simply establish USenglish as the
+% sole language, with the et@x patterns, exceptions and left- and right-
+% hyphen minima for TeX. If we can't interrogate the user (e.g. not in
+% \errorstopmode), or if the user elects not to use fallback, we abort;
+% if the file can't be found/opened, we use fallback unconditionally.
+
+\newif \ifb@dresponse
+\newif \ifusef@llback
+
+\def \l@ngdefnfile {language.def}
+
+\etexhdrchk {file} {\l@ngdefnfile}
+\ifcase \etexstatus
+ \et@xwarn {unable to open file "\l@ngdefnfile";}%
+ \usef@llback % unable to open "language.def"
+\or
+ \et@xwarn {file "\l@ngdefnfile" has wrong header;\n
+ \ \ expected: "\et@xfilehdr"; found: "\et@xbuf";%
+ }%
+ \@sk {Use fallback?} {usef@llback} {y}%
+ \ifusef@llback
+ \usef@llback
+ \else
+ \input \l@ngdefnfile % use "language.def" after warning
+ \fi
+\else
+ \bgroup
+ \count@=128
+ \loop\ifnum\count@<256\relax
+ \lccode\count@=\count@\advance\count@\@ne
+ \repeat
+ \count@=0
+ \loop\ifnum\count@<32\relax
+ \lccode\count@=\count@\advance\count@\@ne
+ \repeat
+ \input \l@ngdefnfile % "language.def" open & valid
+
+ \egroup % the above empty line is needed to end the argument of \input
+\fi
+
+% All that was just to set up natural language handling...
+% The "real" work of "etex.src", however, is to augment the non-primitives
+% of Plain.TeX to incorporate e-TeX specific features, and to add new
+% non-primitives to simplify access to new e-TeX specific primitives.
+
+\message {Augmenting the Plain TeX definitions:}
+\message {\string \tracingall;}
+
+\def \tracingall
+ {\tracingonline=\@ne
+ \tracingcommands=\thr@@ % plain.tex has \tw@
+ \tracingstats=\tw@
+ \tracingpages=\@ne
+ \tracingoutput=\@ne
+ \tracinglostchars=\tw@ % plain.tex has \@ne
+ \tracingmacros=\tw@
+ \tracingparagraphs=\@ne
+ \tracingrestores=\@ne
+ \showboxbreadth=\maxdimen
+ \showboxdepth=\maxdimen
+ \errorstopmode
+ \tracinggroups=\@ne
+ \tracingifs=\@ne
+ \tracingscantokens=\@ne
+ \tracingnesting=\@ne
+ \tracingassigns=\tw@
+ }
+
+\message {Adding new e-TeX definitions:}
+
+\message {\string \eTeX, \string \epTeX, \string \eupTeX, }
+\def \eTeX {$\varepsilon$-\TeX} %%% the simple version, not suitable for maths;
+ %%% a more sophisticated one may find its way
+ %%% into "eptexdefs.lib" in due course.
+\def \epTeX {$\varepsilon$-p\TeX}
+\def \eupTeX {$\varepsilon$-up\TeX}
+
+\message {\string \loggingall,}
+\def \loggingall {\tracingall \tracingonline=\z@}
+
+\message {\string \tracingnone,}
+\def \tracingnone
+ {\tracingassigns=\z@
+ \tracingnesting=\z@
+ \tracingscantokens=\z@
+ \tracingifs=\z@
+ \tracinggroups=\z@
+ \showboxdepth=\thr@@
+ \showboxbreadth=5
+ \tracingrestores=\z@
+ \tracingparagraphs=\z@
+ \tracingmacros=\z@
+ \tracinglostchars=\@ne
+ \tracingoutput=\z@
+ \tracingpages=\z@
+ \tracingstats=\z@
+ \tracingcommands=\z@
+ \tracingonline=\z@
+ }
+
+\message {register allocation;}
+
+\newcount \et@xins % our insertion counter (\insc@unt is used differently)
+
+% We have to adjust the Plain TeX register allocation counts for our
+% slightly modified book-keeping:
+
+\advance \count 10 by 1 % \count 10=23 % allocates \count registers 23, 24, ...
+\advance \count 11 by 1 % \count 11=10 % allocates \dimen registers 10, 11, ...
+\advance \count 12 by 1 % \count 12=10 % allocates \skip registers 10, 11, ...
+\advance \count 13 by 1 % \count 13=10 % allocates \muskip registers 10, 11, ...
+\advance \count 14 by 1 % \count 14=10 % allocates \box registers 10, 11, ...
+\advance \count 15 by 1 % \count 15=10 % allocates \toks registers 10, 11, ...
+\advance \count 16 by 1 % \count 16=0 % allocates input streams 0, 1, ...
+\advance \count 17 by 1 % \count 17=0 % allocates output streams 0, 1, ...
+\advance \count 18 by 1 % \count 18=4 % allocates math families 4, 5, ...
+\advance \count 19 by 1 % \count 19=0 % allocates \language codes 0, 1, ...
+
+\et@xins=\insc@unt % \et@xins=255 % allocates insertions 254, 253, ...
+
+% We don't change the Plain TeX definitions of \newcount, etc., but the
+% \alloc@ macro doing the actual work is redefined.
+
+% When the normal register pool for \count, \dimen, \skip, \muskip,
+% \box, or \toks registers is exhausted, we switch to the extended pool.
+
+\def \alloc@ #1#2#3#4#5%
+ {\ifnum \count 1#1 < #4% make sure there's still room
+ \allocationnumber=\count 1#1
+ \global \advance \count 1#1 by \@ne
+ \global #3#5=\allocationnumber
+ \wlog {\string #5=\string #2\the \allocationnumber}%
+ \else \ifnum #1 < 6
+ \begingroup \escapechar=\m@ne
+ \expandafter \alloc@@ \expandafter {\string #2}#5%
+ \else
+ \errmessage {No room for a new #2}%
+ \fi
+ \fi
+ }
+
+% The \expandafter construction used here allows the generation of
+% \newcount and \globcount from #1=count. Moreover (and more important)
+% this construction avoids the appearance of \outer macros inside
+% macro definitions or conditionals.
+
+\def \alloc@@ #1#2%
+ {\endgroup % restore \escapechar
+ \message {Normal \csname#1\endcsname register pool exhausted,
+ switching to extended pool.}%
+ \global \expandafter
+ \let \csname new#1\expandafter \endcsname \csname glob#1\endcsname
+ \csname new#1\endcsname#2%
+ }
+
+% We do change the Plain TeX definition of \newinsert
+
+\outer \def \newinsert #1%make sure there's still room for ...
+ {\ch@ck 0 \et@xins \count % ... a \count, ...
+ {\ch@ck 1 \et@xins \dimen % ... \dimen, ...
+ {\ch@ck 2 \et@xins \skip % ... \skip, ...
+ {\ch@ck 4 \et@xins \box % ... and \box register
+ {\global \advance \et@xins by \m@ne
+ \unless
+ \ifnum \insc@unt < \et@xins
+ \global \insc@unt=\et@xins
+ \fi
+ \allocationnumber=\et@xins
+ \global \chardef #1=\allocationnumber
+ \wlog {\string #1=\string \insert \the \allocationnumber}%
+ }%
+ }%
+ }%
+ }%
+ }
+
+\def \ch@ck #1#2#3#4%
+ {\ifnum \count 1#1 < #2#4\else \errmessage {No room for a new #3}\fi}
+
+% And we define \reserveinserts, so that you can say \reserveinserts{17}
+% in order to reserve room for up to 17 additional insertion classes that will
+% not be taken away by \newcount, \newdimen, \newskip, or \newbox.
+
+\outer \def \reserveinserts#1%
+ {\global \insc@unt=\numexpr \et@xins \ifnum #1 > \z@ -#1\fi \relax}
+
+\message {extended register allocation;}
+
+% Now, we define \globcount, \globbox, etc., so that you can say
+% \globcount\foo and \foo will be defined (with \countdef) to be the
+% next count register from the vastly larger but somewhat less efficient
+% extended register pool. We also define \loccount, etc., but these
+% register definitions are local to the current group.
+
+\count 260=277 % globally allocates \count registers 277, 278, ...
+\count 261=\@cclvi % globally allocates \dimen registers 256, 257, ...
+\count 262=\@cclvi % globally allocates \skip registers 256, 257, ...
+\count 263=\@cclvi % globally allocates \muskip registers 256, 257, ...
+\count 264=\@cclvi % globally allocates \box registers 256, 257, ...
+\count 265=\@cclvi % globally allocates \toks registers 256, 257, ...
+\count 266=\@ne % globally allocates \marks classes 1, 2, ...
+
+% There may be (u)pTeX + e-pTeX which does not have
+% FAM256 patch (e.g. ptex-ng) (2016/12/06)
+\ifx \undefined \omathchar
+ \def \et@xmaxregs {32768}
+\else
+ \def \et@xmaxregs {65536} % FAM256 patched (2016/05/16)
+\fi
+
+\count 270=\et@xmaxregs % locally allocates \count registers 65535, 65534, ...
+\count 271=\et@xmaxregs % ditto for \dimen registers
+\count 272=\et@xmaxregs % ditto for \skip registers
+\count 273=\et@xmaxregs % ditto for \muskip registers
+\count 274=\et@xmaxregs % ditto for \box registers
+\count 275=\et@xmaxregs % ditto for \toks registers
+\count 276=\et@xmaxregs % ditto for \marks classes
+
+% \count registers 256-259 and 267-269 are not (yet) used
+
+\outer \def \globcount {\et@xglob 0 \count \countdef}
+ \def \loccount {\et@xloc 0 \count \countdef}
+\outer \def \globdimen {\et@xglob 1 \dimen \dimendef}
+ \def \locdimen {\et@xloc 1 \dimen \dimendef}
+\outer \def \globskip {\et@xglob 2 \skip \skipdef}
+ \def \locskip {\et@xloc 2 \skip \skipdef}
+\outer \def \globmuskip {\et@xglob 3 \muskip \muskipdef}
+ \def \locmuskip {\et@xloc 3 \muskip \muskipdef}
+\outer \def \globbox {\et@xglob 4 \box \mathchardef}
+ \def \locbox {\et@xloc 4 \box \mathchardef}
+\outer \def \globtoks {\et@xglob 5 \toks \toksdef}
+ \def \loctoks {\et@xloc 5 \toks \toksdef}
+\outer \def \globmarks {\et@xglob 6 \marks \mathchardef}
+ \def \locmarks {\et@xloc 6 \marks \mathchardef}
+
+\let\newmark=\globmarks %%% 2.0;14
+\let\newmarks=\globmarks
+
+\def \et@xglob #1#2#3#4%
+ {\et@xchk #1#2% make sure there's still room
+ {\allocationnumber=\count 26#1
+ \global \advance \count 26#1 by \@ne
+ \global #3#4=\allocationnumber
+ \wlog {\string #4=\string #2\the \allocationnumber}%
+ }%
+ }
+
+\def \et@xloc#1#2#3#4%
+ {\et@xchk #1#2% make sure there's still room
+ {\advance \count 27#1 by \m@ne
+ \allocationnumber=\count 27#1
+ #3#4=\allocationnumber
+ \wlog {\string #4=\string #2\the \allocationnumber \space (local)}%
+ }%
+ }
+
+\def \et@xchk #1#2#3%
+ {\ifnum \count 26#1 < \count 27#1
+ #3%
+ \else
+ \errmessage {No room for a new #2}%
+ \fi
+ }
+
+% Next we define \globcountblk, \loccountblk, etc., so that one can
+% write \globcountblk\foo{17} and \foo will be defined (with \mathchardef)
+% as the first (the zeroth?) of a block of 17 consecutive registers.
+% Thus the user is intended to reference elements <\foo+0> to <\foo+n-1>,
+% where n is the length of the block allocated.
+
+\outer \def \globcountblk {\et@xgblk 0 \count}
+ \def \loccountblk {\et@xlblk 0 \count}
+\outer \def \globdimenblk {\et@xgblk 1 \dimen}
+ \def \locdimenblk {\et@xlblk 1 \dimen}
+\outer \def \globskipblk {\et@xgblk 2 \skip}
+ \def \locskipblk {\et@xlblk 2 \skip}
+\outer \def \globmuskipblk {\et@xgblk 3 \muskip}
+ \def \locmuskipblk {\et@xlblk 3 \muskip}
+\outer \def \globboxblk {\et@xgblk 4 \box}
+ \def \locboxblk {\et@xlblk 4 \box}
+\outer \def \globtoksblk {\et@xgblk 5 \toks}
+ \def \loctoksblk {\et@xlblk 5 \toks}
+\outer \def \globmarksblk {\et@xgblk 6 \marks}
+ \def \locmarksblk {\et@xlblk 6 \marks}
+
+% And, both to provide a higher-level interface to the block allocation
+% scheme, and to demonstrate possible applications of the new \...expr
+% primitives, we also define \globcountvector and \loccountvector (etc)
+% which allow the user to access elements with embedded arithmetic, as in
+
+% \globcountvector \foo {12}
+% \foo {\count 0 + 3} = \foo {\count 1 * 2}
+
+\outer \def \globcountvector {\et@xgvec 0 \count}
+ \def \loccountvector {\et@xlvec 0 \count}
+\outer \def \globdimenvector {\et@xgvec 1 \dimen}
+ \def \locdimenvector {\et@xlvec 1 \dimen}
+\outer \def \globskipvector {\et@xgvec 2 \skip}
+ \def \locskipvector {\et@xlvec 2 \skip}
+\outer \def \globmuskipvector {\et@xgvec 3 \muskip}
+ \def \locmuskipvector {\et@xlvec 3 \muskip}
+\outer \def \globboxvector {\et@xgvec 4 \box}
+ \def \locboxvector {\et@xlvec 4 \box}
+\outer \def \globtoksvector {\et@xgvec 5 \toks}
+ \def \loctoksvector {\et@xlvec 5 \toks}
+\outer \def \globmarksvector {\et@xgvec 6 \marks}
+ \def \locmarksvector {\et@xlvec 6 \marks}
+
+\def \et@xgblk #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\allocationnumber=\count 26#1
+ \global \advance \count 26#1 by #4%
+ \global \mathchardef #3=\allocationnumber
+ \wlog {\string #3=\string #2blk{\number #4} at \the \allocationnumber}%
+ }%
+ }
+
+\def \et@xlblk #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\advance \count 27#1 by -#4%
+ \allocationnumber=\count 27#1
+ \mathchardef #3=\allocationnumber
+ \wlog {\string #3=\string #2blk{\number #4}
+ at \the \allocationnumber \space (local)%
+ }%
+ }%
+ }
+
+\begingroup
+\catcode `\# = 12
+\gdef \et@xhash {#}
+\endgroup
+
+\def \et@xgvec #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\allocationnumber=\count 26#1
+ \global \advance \count 26#1 by #4%
+ \ifx #2\box
+ \def \2{}%
+ \else \ifx #2\marks
+ \def \2{}%
+ \else
+ \def \2{\string #2}%
+ \fi
+ \fi
+ \xdef #3##1{\2 \noexpand \numexpr \the \allocationnumber+##1\relax}%
+ \wlog {\string #3 {\et@xhash 1} =
+ \2 {\the \allocationnumber+\et@xhash 1} (global #2 vector)%
+ }%
+ }%
+ }
+
+\def \et@xlvec #1#2#3#4%
+ {\et@xchkblk #1#2{#4}% make sure there's still room
+ {\advance \count 27#1 by -#4%
+ \allocationnumber=\count27#1
+ \mathchardef #3=\allocationnumber
+ \ifx #2\box
+ \def \2{}%
+ \else \ifx #2\marks
+ \def \2{}%
+ \else
+ \def \2{\string #2}%
+ \fi
+ \fi
+ \edef #3##1{\2 \noexpand \numexpr \the \allocationnumber+##1\relax}%
+ \wlog {\string #3 {\et@xhash 1} =
+ \2 {\the \allocationnumber+\et@xhash 1} (local #2 vector)%
+ }%
+ }%
+ }
+
+\def \et@xchkblk #1#2#3#4%
+ {\ifnum #3 < \z@
+ \errmessage {Negative register block size \number #3}%
+ \else \ifnum \numexpr \count 26#1+#3 > \count 27#1
+ \errmessage {No room for new #2block of size \number#3}%
+ \else
+ #4%
+ \fi
+ \fi
+ }
+
+% In an attempt to reduce the overheads of e-TeX, we recycle all possible
+% resources, including (as a penultimate step) the recycler itself...
+% The user can circumvent (or force) this during format creation,
+% by \letting \ifrecycle=\iffalse (or \iftrue, to force it).
+
+% As this file has grown by accretion, it is possible that we are no
+% longer recycling all the resources we could; this will be investigated.
+
+\def \mayber@cycle {\expandafter \ifrecycle}
+\def \forcer@cycle {\expandafter \iftrue}
+
+\ifdefined \ifrecycle
+ \mayber@cycle
+\else
+ \forcer@cycle
+\fi
+
+% There's a concealed \if... lurking here, which explains the
+% strange indentation of the code that follows (V1.0-1)
+
+ \def \r@cycle #1%
+ {\ifdefined #1
+ \message {\string #1,}\let #1=\und@fined
+ \else
+ \message {\string #1 (not defined),}
+ \fi
+ }
+ {\newlinechar=`\! \message {!Recycling:}}
+
+ \r@cycle \addlanguage
+ \r@cycle \@nswer
+ \r@cycle \@sk
+ \r@cycle \b@dresponsetrue
+ \r@cycle \b@dresponsefalse
+ \r@cycle \ch@ckforyn
+ \r@cycle \mayber@cycle
+ \r@cycle \et@xabort
+ \r@cycle \et@xbuf
+ \r@cycle \et@xfmtsrc
+ \r@cycle \et@xfilehdr
+ \r@cycle \et@xinf
+ \r@cycle \et@xpatterns
+% \r@cycle \ifb@dresponse
+% \r@cycle \ifusef@llback
+ \r@cycle \l@ngdefnfile
+ \r@cycle \n@xt
+ \r@cycle \p@rse
+ \r@cycle \pr@mpt
+ \r@cycle \pr@mptloop
+ \r@cycle \forcer@cycle
+ \r@cycle \usef@llback
+ \r@cycle \usef@llbacktrue
+ \r@cycle \usef@llbackfalse
+
+% The following are retained, since they may be needed by user code; with a few
+% (regrettable) exceptions, all of these are given the \etex or \et@x prefix,
+% to reduce as far as possible the risk of them clashing with other used-defined
+% names.
+
+% The e-TeX team are willing to change the names of the remaining, at-risk,
+% control sequences if it is demonstrated that the current names cause problems
+% or difficulties.
+
+ \def \r@tain #1%
+ {\ifdefined #1
+ \message {\string #1,}
+ \else
+ \message {\string #1 (not defined),}
+ \fi
+ }
+ {\newlinechar=`\! \message {!Retaining:}}
+
+ \r@tain \et@xerr
+ \r@tain \et@xinput
+ \r@tain \et@xlibhdr
+ \r@tain \et@xmsg
+ \r@tain \et@xtoks
+ \r@tain \et@xwarn
+ \r@tain \et@xl@@d
+ \r@tain \et@xl@ad
+ \r@tain \et@xload
+ \r@tain \et@xlang
+ \r@tain \et@xhash
+ \r@tain \eTeX
+ \r@tain \epTeX
+ \r@tain \eupTeX
+ \r@tain \etexhdrchk
+% \r@tain \endmodule
+ \r@tain \etexstatus
+ \r@tain \module
+ \r@tain \uselanguage
+
+ \r@cycle \r@tain
+ \r@cycle \r@cycle
+
+\fi
+
+% And finally re-catcode commercial-at
+
+\catcode `\@=12
+
+\dump
+\endinput
+
diff --git a/language/japanese/uptex-base/samples/00readme_uptex_samples.txt b/language/japanese/uptex-base/samples/00readme_uptex_samples.txt
new file mode 100644
index 0000000000..3eea2eb19e
--- /dev/null
+++ b/language/japanese/uptex-base/samples/00readme_uptex_samples.txt
@@ -0,0 +1,83 @@
+upTeX/upLaTeX samples
+
+
+The files in this directory are
+samples for test of upTeX/upLaTeX.
+
+Makefile : Makefile for Unix-like OS
+testrun.bat : batch file for MS-Windows (not maintained)
+check_enc.pl : perl script to check encoding
+
+misc-check-h-utf8.tex, misc-check-v-utf8.tex, set3-check-h-utf8.tex
+ : miscellaneous check
+
+kinsoku-chk-utf8.tex
+ : test for KINSOKU
+
+widow.tex
+ : test for widow
+
+sangoku-uplatex.tex, sangoku-uptex.tex
+ : basic test for upTeX, upLaTeX
+
+aozora-ujarticle-utf8.tex, aozora-ujbook-utf8.tex,
+aozora-ujreport-utf8.tex, aozora-utarticle-utf8.tex,
+aozora-utbook-utf8.tex, aozora-utf8.tex, aozora-utreport-utf8.tex
+ : test for document classes
+
+adobe-cid.tex, adobe-cns-utf8.tex, adobe-gb-utf8.tex,
+adobe-jp-utf8.tex, adobe-kr-utf8.tex
+ : test for Adobe-CNS, Adobe-GB, Adobe-Japan, Adobe-Korea
+
+cjk_babel.tex, greek-uplatex.tex
+ : test for CJK and babel
+
+punctuation.tex
+ : test for punctuations of CJK
+
+simple-euc.tex, simple-jis.tex, simple-sjis.tex,
+simple-u-jis.tex, simple-u-utf8.tex, simple-utf8.tex
+ : test for encodings
+ test for dvi2tty
+
+jbib1-jis.tex, jbib2-utf8.tex, jbtest.bib, linebreak.bib
+ : test for jBibTeX
+
+area-euc-incl.tex, area-euc.mp, area-jis-incl.tex, area-jis.mp,
+area-sjis-incl.tex, area-sjis.mp, area-uptex-incl.tex, area-uptex.mp,
+area-utf8-incl.tex, area-utf8.mp,
+jstr-euc-incl.tex, jstr-euc.mp, jstr-jis-incl.tex, jstr-jis.mp,
+jstr-sjis-incl.tex, jstr-sjis.mp, jstr-uptex-incl.tex, jstr-uptex.mp,
+jstr-utf8-incl.tex, jstr-utf8.mp
+ : test for {p,up}MetaPost
+
+jsclasses-uplatex.dtx ( generated by `make jsclasses-uplatex.dtx` )
+ : test for jsclasses
+
+yaku-jsc-jis.tex, yaku-jsc-utf8.tex
+ : test for YAKUMONO
+
+jis_uni_variation.tex
+ : test for JIS-Unicode conversion
+
+min10x.tfm, umin10x.tfm
+ : test for {p,up}tftopl, {p,up}pltotf
+
+utfsmpl-uplatex.tex, otfsmpl-uplatex.tex
+ : test for UTF / OTF (japanese-otf) package by psitau-san
+
+bkmk-jis.tex, bkmk-utf8.tex, bkmk-docinfo.txt,
+box-euc.eps, box-jis.eps, box-sjis.eps, box-utf8.eps
+ : test for includegraphics, eps
+ test for bookmarks and convbkmk.rb
+
+console_io.tex, iotext.txt
+ : test for console IO
+ iotext.txt is valid
+ as Shift_JIS (with half-width katakana), EUC-JP (with kanji), and UTF-8 (with Cyrillic)
+
+texxet-jis.tex
+ : test for TeX-XeT with e-{p,up}LaTeX
+
+show_kcat.tex (plain upTeX)
+ : show kcatcode default value
diff --git a/language/japanese/uptex-base/samples/Makefile b/language/japanese/uptex-base/samples/Makefile
new file mode 100644
index 0000000000..148872de2d
--- /dev/null
+++ b/language/japanese/uptex-base/samples/Makefile
@@ -0,0 +1,483 @@
+UPTEX = uptex
+PTEX = ptex
+UPLATEX = uplatex
+PLATEX = platex
+UPBIBTEX = upbibtex
+PBIBTEX = pbibtex
+DVIPS = dvips
+DVIPDFMX = dvipdfmx
+UPDVITYPE = updvitype
+PDVITYPE = pdvitype
+UPMPOST = upmpost
+PMPOST = pmpost
+DVI2TTYJ = dvi2tty -J
+DVI2TTYA = dvi2tty -A
+DVI2TTYU = dvi2tty -U
+EUPLATEX = uplatex
+EPLATEX = platex
+CONVBKMK = convbkmk -g
+CONVBKMKO = convbkmk -g -o
+PS2PDF = ps2pdf
+
+all: uplatex-euc.fmt uplatex-sjis.fmt \
+ misc kin widow uptex uplatex aozora adobe \
+ babel greek punct encswitch \
+ jscman tfpl otf jbib jisuni dvi2tty bkmk consio eplatex texxet
+
+####
+#### "platex on uptex"
+#### These are for test purpose.
+#### uplatex-euc : platex (kanji-internal=euc) on e-uptex
+#### uplatex-sjis : platex (kanji-internal=sjis) on e-uptex
+UPLATEX_EUC = euptex -progname=uplatex-euc
+UPLATEX_SJIS = euptex -progname=uplatex-sjis
+
+uplatex-euc.fmt:
+ euptex -ini -etex -jobname=uplatex-euc -progname=uplatex-euc -kanji=utf8 --kanji-internal=euc platex.ini
+
+uplatex-sjis.fmt:
+ euptex -ini -etex -jobname=uplatex-sjis -progname=uplatex-sjis -kanji=utf8 --kanji-internal=sjis platex.ini
+
+####
+####
+
+misc: misch miscv
+
+misch:
+ for f in misc set3; do \
+ $(UPLATEX) $$f-check-h-utf8 ; \
+ $(UPLATEX) "\def\withhyperref{dvipdfmx}\input" $$f-check-h-utf8.tex ; \
+ $(UPLATEX) "\def\withhyperref{dvipdfmx}\input" $$f-check-h-utf8.tex ; \
+ $(UPDVITYPE) $$f-check-h-utf8.dvi > $$f-check-h-utf8.pdvitype ; \
+ perl check_enc.pl utf8 $$f-check-h-utf8.log $$f-check-h-utf8.aux $$f-check-h-utf8.out $$f-check-h-utf8.pdvitype ; \
+ $(DVIPDFMX) $$f-check-h-utf8 ; \
+ $(UPLATEX) "\def\withhyperref{dvips}\input" $$f-check-h-utf8.tex ; \
+ $(DVIPS) $$f-check-h-utf8 ; \
+ $(CONVBKMK) $$f-check-h-utf8.ps ; \
+ $(PS2PDF) $$f-check-h-utf8-convbkmk.ps ; \
+ done
+
+miscv:
+ for f in misc ; do \
+ $(UPLATEX) $$f-check-v-utf8 ; \
+ $(UPLATEX) "\def\withhyperref{dvipdfmx}\input" $$f-check-v-utf8.tex ; \
+ $(UPLATEX) "\def\withhyperref{dvipdfmx}\input" $$f-check-v-utf8.tex ; \
+ $(UPDVITYPE) $$f-check-v-utf8.dvi > $$f-check-v-utf8.pdvitype ; \
+ perl check_enc.pl utf8 $$f-check-v-utf8.log $$f-check-v-utf8.aux $$f-check-v-utf8.out $$f-check-v-utf8.pdvitype ; \
+ $(DVIPDFMX) $$f-check-v-utf8 ; \
+ $(UPLATEX) "\def\withhyperref{dvips}\input" $$f-check-v-utf8.tex ; \
+ $(DVIPS) $$f-check-v-utf8 ; \
+ $(CONVBKMK) $$f-check-v-utf8.ps ; \
+ $(PS2PDF) $$f-check-v-utf8-convbkmk.ps ; \
+ done
+
+kin:
+ $(UPLATEX) kinsoku-chk-utf8
+ $(DVIPDFMX) kinsoku-chk-utf8
+ $(DVIPS) kinsoku-chk-utf8
+
+widow:
+ $(PLATEX) widow
+ mv widow.dvi widow-platex.dvi
+ $(DVIPDFMX) widow-platex.dvi
+ $(UPLATEX_EUC) widow
+ mv widow.dvi widow-u-euc.dvi
+ $(DVIPDFMX) widow-u-euc.dvi
+ $(UPLATEX) widow
+ mv widow.dvi widow-u-uptex.dvi
+ $(DVIPDFMX) widow-u-uptex.dvi
+
+uptex:
+ $(UPTEX) sangoku-uptex
+ $(DVIPDFMX) sangoku-uptex
+ $(DVIPS) sangoku-uptex
+
+uplatex:
+ $(UPLATEX) sangoku-uplatex
+ $(DVIPDFMX) sangoku-uplatex
+ $(DVIPS) sangoku-uplatex
+
+aozora:
+ for cls in ujarticle ujreport ujbook utarticle utreport utbook; do \
+ $(UPLATEX) aozora-$$cls-utf8 ; \
+ $(DVIPDFMX) aozora-$$cls-utf8 ; \
+ $(DVIPS) aozora-$$cls-utf8 ; \
+ done
+
+adobe: adobeu adobec
+
+adobeu:
+ for cjk in jp kr gb cns; do \
+ $(UPTEX) adobe-$$cjk-utf8 ; \
+ $(DVIPDFMX) adobe-$$cjk-utf8 ; \
+ $(DVIPS) adobe-$$cjk-utf8 ; \
+ done
+
+# It requires japanese-otf package.
+adobec:
+ for cjk in jp kr gb cns; do \
+ $(UPLATEX) "\def\adobe{$$cjk}\input" adobe-cid ; \
+ mv adobe-cid.dvi adobe-$$cjk-mc-cid.dvi ; \
+ $(DVIPDFMX) adobe-$$cjk-mc-cid ; \
+ $(DVIPS) adobe-$$cjk-mc-cid ; \
+ done
+ for cjk in jp kr cns; do \
+ $(UPLATEX) "\def\adobe{$$cjk}\def\family{gt}\input" adobe-cid ; \
+ mv adobe-cid.dvi adobe-$$cjk-gt-cid.dvi ; \
+ $(DVIPDFMX) adobe-$$cjk-gt-cid ; \
+ $(DVIPS) adobe-$$cjk-gt-cid ; \
+ done
+
+babel:
+ $(UPLATEX) cjk_babel
+ $(DVIPDFMX) cjk_babel
+ $(DVIPS) cjk_babel
+ $(DVI2TTYU) -Eu cjk_babel > cjk_babel.dvi2tty
+
+# It requires unicode package (utf.sty etc.).
+greek:
+ $(UPLATEX) greek-uplatex
+ $(DVIPDFMX) greek-uplatex
+ $(DVIPS) greek-uplatex
+
+punct:
+ $(UPLATEX) punctuation
+ $(DVIPDFMX) punctuation
+ $(DVIPS) punctuation
+
+encswitch: encswitchj encswitchp encswitchu
+
+### "platex on uptex" for test
+encswitchj:
+ for ie in euc sjis; do \
+ euptex -kanji=$$ie --kanji-internal=$$ie -fmt=uplatex-$$ie simple-jis.tex ; \
+ perl check_enc.pl $$ie simple-jis.log simple-jis.aux || exit ; \
+ mv simple-jis.dvi simple-jis0-$$ie.dvi ; \
+ mv simple-jis.log simple-jis0-$$ie.log ; \
+ mv simple-jis.aux simple-jis0-$$ie.aux ; \
+ $(DVIPDFMX) simple-jis0-$$ie.dvi ; \
+ for fe in jis euc sjis utf8; do \
+ euptex -kanji=$$fe --kanji-internal=$$ie -fmt=uplatex-$$ie simple-$$fe.tex ; \
+ perl check_enc.pl $$fe simple-$$fe.log simple-$$fe.aux || exit ; \
+ mv simple-$$fe.dvi simple-$$fe-$$ie.dvi ; \
+ mv simple-$$fe.log simple-$$fe-$$ie.log ; \
+ mv simple-$$fe.aux simple-$$fe-$$ie.aux ; \
+ $(DVIPDFMX) simple-$$fe-$$ie.dvi ; \
+ $(UPDVITYPE) -kanji=$$fe simple-$$fe-$$ie.dvi > simple-$$fe-$$ie.pdvitype ; \
+ perl check_enc.pl $$fe simple-$$fe-$$ie.pdvitype || exit ; \
+ done ; \
+ done
+
+### platex
+encswitchp:
+ for fe in jis euc sjis utf8; do \
+ $(PLATEX) -kanji=$$fe simple-$$fe.tex ; \
+ perl check_enc.pl $$fe simple-$$fe.log simple-$$fe.aux || exit ; \
+ mv simple-$$fe.dvi simple-$$fe-platex.dvi ; \
+ mv simple-$$fe.log simple-$$fe-platex.log ; \
+ mv simple-$$fe.aux simple-$$fe-platex.aux ; \
+ $(DVIPDFMX) simple-$$fe-platex.dvi ; \
+ $(PDVITYPE) -kanji=$$fe simple-$$fe-platex.dvi > simple-$$fe-platex.pdvitype ; \
+ perl check_enc.pl $$fe simple-$$fe-platex.pdvitype || exit ; \
+ done
+
+### uplatex
+encswitchu:
+ for ie in uptex; do \
+ for fe in jis utf8; do \
+ $(UPLATEX) -kanji=utf8 simple-u-$$fe.tex ; \
+ perl check_enc.pl $$ie simple-u-$$fe.log simple-u-$$fe.aux || exit ; \
+ mv simple-u-$$fe.dvi simple-u-$$fe-$$ie.dvi ; \
+ mv simple-u-$$fe.log simple-u-$$fe-$$ie.log ; \
+ mv simple-u-$$fe.aux simple-u-$$fe-$$ie.aux ; \
+ $(DVIPDFMX) simple-u-$$fe-$$ie.dvi ; \
+ $(UPDVITYPE) simple-u-$$fe-$$ie.dvi > simple-u-$$fe-$$ie.pdvitype ; \
+ perl check_enc.pl utf8 simple-u-$$fe-$$ie.pdvitype || exit ; \
+ done ; \
+ done
+
+dvi2tty: dvi2ttyp dvi2ttyu
+
+dvi2ttyp: encswitchp
+ for fe in j e s u; do \
+ $(DVI2TTYJ) -w 62 -o simple-jis-platex-$$fe-j.dvi2tty -E $$fe simple-jis-platex.dvi ; \
+ perl check_enc.pl $$fe simple-jis-platex-$$fe-j.dvi2tty || exit ; \
+ $(DVI2TTYA) -w 62 -o simple-jis-platex-$$fe-a.dvi2tty -E $$fe simple-jis-platex.dvi ; \
+ perl check_enc.pl $$fe simple-jis-platex-$$fe-a.dvi2tty || exit ; \
+ diff simple-jis-platex-$$fe-j.dvi2tty simple-jis-platex-$$fe-a.dvi2tty || exit ; \
+ done
+
+dvi2ttyu: encswitchu
+ for fe in j e s u; do \
+ $(DVI2TTYJ) -w 62 -o simple-u-jis-uptex-$$fe-j.dvi2tty -E $$fe simple-u-jis-uptex.dvi ; \
+ perl check_enc.pl $$fe simple-u-jis-uptex-$$fe-j.dvi2tty || exit ; \
+ $(DVI2TTYU) -w 62 -o simple-u-jis-uptex-$$fe-u.dvi2tty -E $$fe simple-u-jis-uptex.dvi ; \
+ perl check_enc.pl $$fe simple-u-jis-uptex-$$fe-u.dvi2tty || exit ; \
+ diff simple-u-jis-uptex-$$fe-j.dvi2tty simple-u-jis-uptex-$$fe-u.dvi2tty || exit ; \
+ done
+ for fe in u; do \
+ $(DVI2TTYJ) -w 62 -o simple-u-utf8-uptex-$$fe-j.dvi2tty -E $$fe simple-u-utf8-uptex.dvi ; \
+ perl check_enc.pl $$fe simple-u-utf8-uptex-$$fe-j.dvi2tty || exit ; \
+ $(DVI2TTYU) -w 62 -o simple-u-utf8-uptex-$$fe-u.dvi2tty -E $$fe simple-u-utf8-uptex.dvi ; \
+ perl check_enc.pl $$fe simple-u-utf8-uptex-$$fe-u.dvi2tty || exit ; \
+ diff simple-u-utf8-uptex-$$fe-j.dvi2tty simple-u-utf8-uptex-$$fe-u.dvi2tty || exit ; \
+ done
+
+jbib: jbibp jbibu
+
+### platex & upbibtex
+jbibp:
+ for be in euc uptex; do \
+ for fe in jis euc sjis utf8; do \
+ rm -f jbib1-jis.aux jbib1-jis.bbl ; \
+ $(PLATEX) -kanji=$$fe jbib1-jis.tex ; \
+ $(UPBIBTEX) -kanji=$$fe --kanji-internal=$$be jbib1-jis ; \
+ $(PLATEX) -kanji=$$fe jbib1-jis.tex ; \
+ $(PLATEX) -kanji=$$fe jbib1-jis.tex ; \
+ perl check_enc.pl $$fe jbib1-jis.aux jbib1-jis.bbl || exit ; \
+ mv jbib1-jis.dvi jbib1-$$fe-$$be.dvi ; \
+ mv jbib1-jis.log jbib1-$$fe-$$be.log ; \
+ mv jbib1-jis.aux jbib1-$$fe-$$be.aux ; \
+ mv jbib1-jis.bbl jbib1-$$fe-$$be.bbl ; \
+ mv jbib1-jis.blg jbib1-$$fe-$$be.blg ; \
+ $(DVIPDFMX) jbib1-$$fe-$$be.dvi ; \
+ done ; \
+ done
+
+### uplatex & upbibtex
+jbibu:
+ for be in uptex; do \
+ for fe in utf8; do \
+ rm -f jbib2-utf8.aux jbib2-utf8.bbl ; \
+ $(UPLATEX) -kanji=$$fe jbib2-utf8.tex ; \
+ $(UPBIBTEX) -kanji=$$fe --kanji-internal=$$be jbib2-utf8 ; \
+ $(UPLATEX) -kanji=$$fe jbib2-utf8.tex ; \
+ $(UPLATEX) -kanji=$$fe jbib2-utf8.tex ; \
+ perl check_enc.pl $$fe jbib2-utf8.aux jbib2-utf8.bbl || exit ; \
+ mv jbib2-utf8.dvi jbib2-$$fe-$$be.dvi ; \
+ mv jbib2-utf8.log jbib2-$$fe-$$be.log ; \
+ mv jbib2-utf8.aux jbib2-$$fe-$$be.aux ; \
+ mv jbib2-utf8.bbl jbib2-$$fe-$$be.bbl ; \
+ mv jbib2-utf8.blg jbib2-$$fe-$$be.blg ; \
+ $(DVIPDFMX) jbib2-$$fe-$$be.dvi ; \
+ done ; \
+ done
+
+pmpost: pmpostj pmpostu
+
+pmpostj:
+ for fe in jis euc sjis utf8; do \
+ for fn in area jstr; do \
+ $(UPMPOST) -kanji=$$fe -tex="uplatex -kanji=$$fe" $$fn-$$fe.mp ; \
+ $(UPLATEX) -kanji=$$fe $$fn-$$fe-incl.tex ; \
+ $(DVIPS) $$fn-$$fe-incl.dvi ; \
+ $(DVIPDFMX) $$fn-$$fe-incl.dvi ; \
+ done ; \
+ perl check_enc.pl $$fe area-$$fe.mpx || exit ; \
+ done
+
+pmpostu:
+ for fe in uptex; do \
+ for fn in area jstr; do \
+ $(UPMPOST) -kanji=$$fe -tex=uplatex $$fn-$$fe.mp ; \
+ $(UPLATEX) $$fn-$$fe-incl.tex ; \
+ $(DVIPS) $$fn-$$fe-incl.dvi ; \
+ $(DVIPDFMX) $$fn-$$fe-incl.dvi ; \
+ done ; \
+ perl check_enc.pl $$fe area-$$fe.mpx || exit ; \
+ done
+
+# It requires jsclasses.
+jsclasses: jscman jscfonts
+
+jsclasses-uplatex.dtx:
+ cat `kpsewhich jsclasses.dtx` | \
+ sed -e "s/documentclass{jsarticle}/documentclass[uplatex]{jsarticle}/" -e "s/jsclasses.dtx/jsclasses-uplatex.dtx/" > jsclasses-uplatex.dtx
+
+jscman: jsclasses-uplatex.dtx
+ $(UPLATEX) jsclasses-uplatex.dtx
+ $(DVIPDFMX) jsclasses-uplatex
+ $(DVIPS) jsclasses-uplatex
+
+jscfonts:
+ for fn in mingoth jis default; do \
+ $(UPLATEX) "\def\option{$$fn}\input" yaku-jsc-utf8 ; \
+ mv yaku-jsc-utf8.dvi yaku-jsc-$$fn-utf8.dvi ; \
+ $(DVIPDFMX) yaku-jsc-$$fn-utf8.dvi ; \
+ done
+ for fn in mingoth jis default; do \
+ $(PLATEX) "\def\option{$$fn}\input" yaku-jsc-jis ; \
+ mv yaku-jsc-jis.dvi yaku-jsc-$$fn-jis.dvi ; \
+ $(DVIPDFMX) yaku-jsc-$$fn-jis.dvi ; \
+ done
+
+# It requires japanese-otf package.
+jisuni:
+ $(UPLATEX) jis_uni_variation
+ $(DVIPDFMX) jis_uni_variation
+
+tfpl: tfplj tfplu
+
+tfplj:
+ ptftopl -charcode-format=octal min10x.tfm min10x-oct.pl
+ for fe in jis euc sjis utf8; do \
+ ptftopl -kanji=$$fe \
+ min10x.tfm min10x-$$fe.pl ; \
+ perl check_enc.pl $$fe min10x-$$fe.pl || exit ; \
+ ppltotf -kanji=$$fe \
+ min10x-$$fe.pl min10x-$$fe.tfm ; \
+ diff min10x.tfm min10x-$$fe.tfm || exit ; \
+ for ie in jis oct; do \
+ ppltotf -kanji=$$fe \
+ min10x-$$ie.pl min10x-$$ie-$$fe.tfm ; \
+ diff min10x.tfm min10x-$$ie-$$fe.tfm || exit ; \
+ done ; \
+ done
+
+tfplu:
+ uptftopl -charcode-format=octal umin10x.tfm umin10x-oct.pl
+ uptftopl umin10x.tfm umin10x-utf8.pl
+ perl check_enc.pl utf8 umin10x-utf8.pl
+ nkf -j umin10x-utf8.pl > umin10x-jis.pl
+ for fe in uptex; do \
+ for ie in jis oct utf8; do \
+ uppltotf -kanji=$$fe \
+ umin10x-$$ie.pl umin10x-$$ie-$$fe.tfm ; \
+ diff umin10x.tfm umin10x-$$ie-$$fe.tfm || exit ; \
+ done ; \
+ done
+
+utfotf: utf otf
+
+# It requires utf package by psitau-san.
+utf: utf_sample
+
+utf_sample:
+ $(UPLATEX) utfsmpl-uplatex
+ $(DVIPDFMX) utfsmpl-uplatex
+ $(DVIPS) utfsmpl-uplatex
+
+# It requires japanese-otf package by psitau-san.
+otf: otf_sample
+
+otf_sample:
+ $(UPLATEX) otfsmpl-uplatex
+ $(DVIPDFMX) otfsmpl-uplatex
+ $(DVIPS) otfsmpl-uplatex
+
+# It requires ruby.
+bkmk: bkmk_jis bkmk_utf8
+bkmk_jis: bkmk_jis_dvipdfmx bkmk_jis_dvips
+bkmk_utf8: bkmk_utf8_dvipdfmx bkmk_utf8_dvips
+
+bkmk_jis_dvipdfmx: bkmk_docinfo
+ for en in jis ; do \
+ for up in platex uplatex; do \
+ rm -f bkmk-$$en.aux bkmk-$$en.out ; \
+ $$up bkmk-$$en.tex ; \
+ $$up "\def\withhyperref{dvipdfmx}\input" bkmk-$$en.tex ; \
+ $$up "\def\withhyperref{dvipdfmx}\input" bkmk-$$en.tex ; \
+ mv bkmk-$$en.dvi bkmk-$$en-pd-$$up.dvi ; \
+ $(DVIPDFMX) bkmk-$$en-pd-$$up.dvi ; \
+ $$up "\def\withhyperref{dvipdfmx}\def\nocmap{true}\input" bkmk-$$en.tex ; \
+ $$up "\def\withhyperref{dvipdfmx}\def\nocmap{true}\input" bkmk-$$en.tex ; \
+ $(CONVBKMKO) bkmk-$$en.out ; \
+ $$up "\def\withhyperref{dvipdfmx}\def\nocmap{true}\input" bkmk-$$en.tex ; \
+ mv bkmk-$$en.dvi bkmk-$$en-pd2-$$up.dvi ; \
+ $(DVIPDFMX) bkmk-$$en-pd2-$$up.dvi ; \
+ done \
+ done
+
+bkmk_jis_dvips: bkmk_docinfo
+ for en in jis ; do \
+ for up in platex uplatex; do \
+ rm -f bkmk-$$en.aux bkmk-$$en.out ; \
+ $$up "\def\withhyperref{dvips}\input" bkmk-$$en.tex ; \
+ $$up "\def\withhyperref{dvips}\input" bkmk-$$en.tex ; \
+ mv bkmk-$$en.dvi bkmk-$$en-ps-$$up.dvi ; \
+ $(DVIPS) bkmk-$$en-ps-$$up.dvi ; \
+ $(CONVBKMK) bkmk-$$en-ps-$$up.ps ; \
+ $(PS2PDF) bkmk-$$en-ps-$$up-convbkmk.ps ; \
+ done \
+ done
+
+bkmk_utf8_dvipdfmx: bkmk_docinfo
+ for en in utf8; do \
+ for up in platex uplatex; do \
+ rm -f bkmk-$$en.aux bkmk-$$en.out ; \
+ $$up "\def\withhyperref{dvipdfmx}\input" bkmk-$$en.tex ; \
+ $$up "\def\withhyperref{dvipdfmx}\input" bkmk-$$en.tex ; \
+ mv bkmk-$$en.dvi bkmk-$$en-pd-$$up.dvi ; \
+ $(DVIPDFMX) bkmk-$$en-pd-$$up.dvi ; \
+ $$up "\def\withhyperref{dvipdfmx}\def\nocmap{true}\input" bkmk-$$en.tex ; \
+ $$up "\def\withhyperref{dvipdfmx}\def\nocmap{true}\input" bkmk-$$en.tex ; \
+ $(CONVBKMKO) bkmk-$$en.out ; \
+ $$up "\def\withhyperref{dvipdfmx}\def\nocmap{true}\input" bkmk-$$en.tex ; \
+ mv bkmk-$$en.dvi bkmk-$$en-pd2-$$up.dvi ; \
+ $(DVIPDFMX) bkmk-$$en-pd2-$$up.dvi ; \
+ done \
+ done
+
+bkmk_utf8_dvips: bkmk_docinfo
+ for en in utf8; do \
+ for up in platex uplatex; do \
+ rm -f bkmk-$$en.aux bkmk-$$en.out ; \
+ $$up "\def\withhyperref{dvips}\input" bkmk-$$en.tex ; \
+ $$up "\def\withhyperref{dvips}\input" bkmk-$$en.tex ; \
+ mv bkmk-$$en.dvi bkmk-$$en-ps-$$up.dvi ; \
+ $(DVIPS) bkmk-$$en-ps-$$up.dvi ; \
+ $(CONVBKMK) bkmk-$$en-ps-$$up.ps ; \
+ $(PS2PDF) bkmk-$$en-ps-$$up-convbkmk.ps ; \
+ done \
+ done
+
+bkmk_docinfo: bkmk-docinfo.txt
+ cp bkmk-docinfo.txt bkmk-docinfo.out
+ $(CONVBKMKO) bkmk-docinfo.out
+
+consio: consio_ptex consio_uptex
+consio_ptex:
+ $(PTEX) -kanji=euc "\def\cjk{jis}\input" console_io.tex < iotext.txt > console_io-ptex.out
+ $(PTEX) -kanji=euc "\def\cjk{jis}\input" console_io.tex < iotext.txt
+ mv console_io.dvi console_io-ptex.dvi
+ $(DVIPDFMX) console_io-ptex.dvi
+
+consio_uptex:
+ $(UPTEX) -kanji=uptex "\def\cjk{jpn}\input" console_io.tex < iotext.txt > console_io-uptex.out
+ $(UPTEX) -kanji=uptex "\def\cjk{jpn}\input" console_io.tex < iotext.txt
+ mv console_io.dvi console_io-uptex.dvi
+ $(DVIPDFMX) console_io-uptex.dvi
+
+# It requires e-upLaTeX, e-pLaTeX.
+eplatex: texxet eptexdoc
+texxet: texxet_euplatex texxet_eplatex
+
+texxet_euplatex:
+ $(EUPLATEX) texxet-jis.tex ; \
+ mv texxet-jis.dvi texxet-jis-euplatex.dvi ; \
+ $(DVIPDFMX) texxet-jis-euplatex.dvi ; \
+ $(DVI2TTYU) -w 62 -o texxet-jis-euplatex.dvi2tty -E u texxet-jis-euplatex.dvi
+
+texxet_eplatex:
+ $(EPLATEX) texxet-jis.tex ; \
+ mv texxet-jis.dvi texxet-jis-eplatex.dvi ; \
+ $(DVIPDFMX) texxet-jis-eplatex.dvi ; \
+ $(DVI2TTYA) -w 62 -o texxet-jis-eplatex.dvi2tty -E u texxet-jis-eplatex.dvi
+
+# Following files are in ptex-base
+eptexdoc-uplatex.tex:
+ cat `kpsewhich -format=doc eptexdoc.tex` | \
+ sed -e "s/]{jsarticle}/,uplatex]{jsarticle}/" > eptexdoc-uplatex.tex
+ cp -p `kpsewhich -format=doc fam256p.tex` .
+ cp -p `kpsewhich -format=doc fam256d.tex` .
+
+eptexdoc: eptexdoc-uplatex.tex
+ $(EUPLATEX) -kanji=utf8 eptexdoc-uplatex.tex ; \
+ $(EUPLATEX) -kanji=utf8 eptexdoc-uplatex.tex ; \
+ $(DVIPDFMX) eptexdoc-uplatex.dvi
+
+
+clean:
+ rm -f *.fmt *.aux *.log *.dvi *.ps *.pdf *.mpx *.1 \
+ min10x-* umin10x-* *.out *.blg *.bbl *.pdvitype *.dvi2tty \
+ jsclasses-uplatex.dtx eptexdoc-uplatex.tex fam256*.tex
diff --git a/language/japanese/uptex-base/samples/adobe-cid.tex b/language/japanese/uptex-base/samples/adobe-cid.tex
new file mode 100644
index 0000000000..cbab16eabe
--- /dev/null
+++ b/language/japanese/uptex-base/samples/adobe-cid.tex
@@ -0,0 +1,138 @@
+\documentclass{article}
+
+%%%%%%%%
+% Adobe-Japan1-5:
+% $ uplatex adobe-cid.tex
+% $ uplatex "\def\adobe{jp}\input" adobe-cid.tex
+% Adobe-Japan1-6:
+% $ uplatex "\def\adobe{jp6}\input" adobe-cid.tex
+% Adobe-Japan1-7: (require the development version of the otf package)
+% $ uplatex "\def\adobe{jp7}\input" adobe-cid.tex
+% Adobe-CNS1-7: (require the development version of the otf package)
+% $ uplatex "\def\adobe{cns7}\input" adobe-cid.tex
+% Adobe-CNS1-6: (require the development version of the otf package)
+% $ uplatex "\def\adobe{cns6}\input" adobe-cid.tex
+% Adobe-CNS1-5:
+% $ uplatex "\def\adobe{cns}\input" adobe-cid.tex
+% Adobe-GB1-5:
+% $ uplatex "\def\adobe{gb}\input" adobe-cid.tex
+% Adobe-Korea1-2:
+% $ uplatex "\def\adobe{kr}\input" adobe-cid.tex
+%
+% for gtfamily
+% $ uplatex "\def\adobe{jp}\def\family{gt}\input" adobe-cid.tex
+% $ uplatex "\def\adobe{cns}\def\family{gt}\input" adobe-cid.tex
+% $ uplatex "\def\adobe{gb}\def\family{gt}\input" adobe-cid.tex
+% $ uplatex "\def\adobe{kr}\def\family{gt}\input" adobe-cid.tex
+%%%%%%
+
+\usepackage[uplatex,multi]{otf}
+
+\textwidth180mm
+\textheight255mm
+\topmargin-20mm
+\oddsidemargin-8mm
+
+\makeatletter
+\def\@adobecns{cns}
+\def\@adobecnssix{cns6}
+\def\@adobecnsseven{cns7}
+\def\@adobegb{gb}
+\def\@adobejapan{jp}
+\def\@adobejapansix{jp6}
+\def\@adobejapanseven{jp7}
+\def\@adobekorea{kr}
+\def\@gtfamily{gt}
+
+\newcommand{\CIDx}{\CID}
+\newcommand{\Name}{Adobe-Japan1-5}
+\newcommand{\CIDmax}{20316}
+%\newcommand{\Name}{Adobe-Japan1-6}
+%\newcommand{\CIDmax}{23057}
+%\newcommand{\Name}{Adobe-Japan1-7}
+%\newcommand{\CIDmax}{23059}
+
+\ifx\adobe\@adobejapanseven
+% \renewcommand{\CIDx}{\CID}
+ \renewcommand{\Name}{Adobe-Japan1-7}
+ \renewcommand{\CIDmax}{23059}
+\fi
+\ifx\adobe\@adobejapansix
+% \renewcommand{\CIDx}{\CID}
+ \renewcommand{\Name}{Adobe-Japan1-6}
+ \renewcommand{\CIDmax}{23057}
+\fi
+\ifx\adobe\@adobecnsseven
+ \renewcommand{\CIDx}{\CIDT}
+ \renewcommand{\Name}{Adobe-CNS1-7}
+ \renewcommand{\CIDmax}{19178}
+\fi
+\ifx\adobe\@adobecnssix
+ \renewcommand{\CIDx}{\CIDT}
+ \renewcommand{\Name}{Adobe-CNS1-6}
+ \renewcommand{\CIDmax}{19155}
+\fi
+\ifx\adobe\@adobecns
+ \renewcommand{\CIDx}{\CIDT}
+ \renewcommand{\Name}{Adobe-CNS1-5}
+ \renewcommand{\CIDmax}{19087}
+\fi
+\ifx\adobe\@adobegb
+ \renewcommand{\CIDx}{\CIDC}
+ \renewcommand{\Name}{Adobe-GB1-5}
+ \renewcommand{\CIDmax}{30283}
+\fi
+\ifx\adobe\@adobekorea
+ \renewcommand{\CIDx}{\CIDK}
+ \renewcommand{\Name}{Adobe-Korea1-2}
+ \renewcommand{\CIDmax}{18351}
+\fi
+\ifx\family\@gtfamily
+ \newcommand{\currentfamily}{\gtfamily}
+ \newcommand{\FamilyName}{gtfamily}
+\else
+ \newcommand{\currentfamily}{\mcfamily}
+ \newcommand{\FamilyName}{mcfamily}
+\fi
+\makeatother
+
+\newcounter{I}
+\newcounter{J}
+\newcounter{K}
+\newcommand{\Kmax}{50}
+\setcounter{J}{0}
+\setcounter{I}{-1}
+
+\begin{document}
+\parindent0pt
+\Name~~\FamilyName
+\currentfamily
+
+\makeatletter
+\@tempcnta=\CIDmax
+\advance\@tempcnta1
+\edef\CIDmax{\number\the\@tempcnta}%
+\@tempcnta=\CIDmax
+\divide\@tempcnta by \Kmax
+\advance\@tempcnta1
+\newcommand{\Jmax}{\number\@tempcnta}%
+\@whilenum\value{J}<\Jmax\do{%
+ \setcounter{K}{0}%
+ \stepcounter{I}%
+ {\number\the\c@I: }
+\@whilenum\value{K}<\Kmax\do{%
+ \c@I=\the\c@J
+ \multiply\c@I by \Kmax
+ \advance \c@I by \c@K
+ \ifnum\c@I<\CIDmax{%
+% \typeout{debug:(\the\c@I)}%
+ {\CIDx{\number\the\c@I}}%
+ }\fi
+ \stepcounter{K}%
+}%
+ {\\}%
+ \stepcounter{J}%
+}
+\makeatother
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/adobe-cns-utf8.tex b/language/japanese/uptex-base/samples/adobe-cns-utf8.tex
new file mode 100644
index 0000000000..62689fedbd
--- /dev/null
+++ b/language/japanese/uptex-base/samples/adobe-cns-utf8.tex
@@ -0,0 +1,990 @@
+%
+% This file is generated from the data of UniCNS-UTF32
+% in cid2code.txt (Version 10/24/2017)
+% for Adobe-CNS1-7
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-CNS1-7/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+\kcatcode"C0=18% U+00C0:À (Latin-1 Supplement, Latin-1 letters)
+\kcatcode"100=18% U+0100:Ā (Latin Extended-A)
+\kcatcode"180=18% U+0180:ƀ (Latin Extended-B)
+\kcatcode"1E00=18% U+1E00:Ḁ (Latin Extended Additional)
+
+\font\uptchrm = uptchrm-h at 9.62216pt
+\uptchrm
+
+
+Adobe-CNS1-0
+
+ ©™ ,、。.•‧;:?!︰…⋯‥﹐、﹑﹒·﹔﹕
+﹖﹗|–︱—()︵︶{}︷︸〔〕︹︺【】︻︼《》︽
+︾〈〈〉〉︿﹀「」﹁﹂『』﹃﹄﹙﹚﹛﹜﹝﹞‘’“”
+〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅
+¯̄‾ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦
+≧≠∞≒≡﹢﹣﹤﹥﹦∼~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀
+♂⊕♁⊙☉↑↓→←↖↗↙↘∥∣∕/﹨\$¥¥〒¢¢
+££%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞
+兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼
+┴┬┤├▔─│▕┌┐└┘╭╮╰╯◢◣◥◤╱╲╳01
+23456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧
+〨〩〸卄〹〺ABCDEFGHIJKLMNOPQR
+STUVWXYZabcdefghijklmnopq
+rstuvwxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠ
+ΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρ
+στυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖ
+ㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˊˇ̌ˋ①
+②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶
+⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵ
+ⅶⅷⅸⅹ丨⼁丶⼂丿⼃⼅亅⼇亠冂⼌
+冖⼍冫⼎⼓勹⼖匸⼙卩⼛厶⼢夊⼧宀
+⼮巛幺⼳广⼴廴⼵彐⼹彡⼺⽁攴⽆无疒⽧
+癶⽨⾡辵⾪隶␀␁␂␃␄␅␆␇␈␉␊␋␌␍␎␏␐␑
+␒␓␔␕␖␗␘␙␚␛␜␝␞␟␡⼀一⼄乙丁七乃九了⼆
+二人⼈儿⼉入⼊八⼋⼏几⼑刀刁⼒力⼔匕十⼗卜⼘⼜又三
+下丈上丫丸凡久么也乞于亡兀兀刃勺千叉⼝口土⼟士⼠夕
+⼣大⼤女⼥⼦子孑孓寸⼨小⼩尢⼪尸⼫⼭山川工⼯⼰己已
+巳巾⼱干⼲廾⼶弋⼷弓⼸才丑丐不中丰丹之尹予云井互五
+亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化
+匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心
+⼼戈⼽戶⼾手⼿扎⽀支文⽂斗⽃斤⽄方⽅日⽇曰⽈月⽉木
+⽊欠⽋止⽌歹⽍毋⽏比⽐毛⽑氏⽒水⽔火⽕爪⽖父⽗爻⽘
+片⽚牙⽛牛⽜犬⽝王丙世丕且丘主乍乏乎以付仔仕他仗代
+令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯
+卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央
+失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮
+本未末札正母民氐永汁汀氾犯玄⽞玉⽟瓜⽠瓦⽡甘⽢生⽣
+⽤用甩⽥田由甲申⽦疋白⽩皮⽪皿⽫目⽬矛⽭矢⽮石⽯示
+⽰禾⽲穴⽳立⽴丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏
+仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠
+印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬
+圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并
+年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次
+此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹⽵米⽶糸⽷缶
+⽸羊⽺羽⽻老⽼考而⽽耒⽾耳⽿聿⾀肉⾁肋肌臣⾂自⾃至
+⾄臼⾅舌⾆舛⾇舟⾈艮⾉色⾊艾虫⾍血⾎行⾏衣⾐西阡串
+亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶
+余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞
+吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听
+囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤
+妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷
+弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼
+找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞
+杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃
+汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯
+矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見⾒角⾓言⾔谷
+⾕豆⾖豕⾗貝⾙赤⾚走⾛足⾜身⾝車⾞辛⾟辰⾠迂迆迅迄
+巡⾢邑邢邪邦那酉⾣釆⾤里⾥防阮阱阪阬並乖乳事些亞享
+京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩
+具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔
+受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃
+坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊
+妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘
+帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏
+怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招
+披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧
+於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林
+杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河
+沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠
+炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚
+的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股
+肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎
+虱初表軋迎返近邵邸邱邶采金⾦長⾧門⾨阜⾩陀阿阻附陂
+隹⾫雨⾬青⾮非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮
+俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻
+厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿
+垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻
+孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很
+待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜
+挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧
+是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞
+柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽
+派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴
+狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈
+盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒
+秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耐耍耑耶胖胥胚胃胄
+背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔
+苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述
+迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面⾯革⾰韋
+⾱韭⾲音⾳頁⾴風⾵飛⾶食⾷首⾸香⾹乘亳倌倍倣俯倦倥
+俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫
+倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼
+哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套
+奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸
+射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣
+恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏
+捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕
+朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁
+殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌
+涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞
+畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩
+砰砧砸砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租
+秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟
+羔翅翁耆耄耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯
+臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱
+茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓
+訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸
+邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬⾺
+骨⾻高⾼⾾鬥鬲⿀鬼⿁乾偺偽停假偃偌做偉健偶偎偕偵
+側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪
+啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅
+堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅
+寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常
+帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠
+您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探
+接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝
+敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望
+梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫
+毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒
+渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛
+猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍
+皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙
+笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習
+耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊
+莓莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒
+袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾
+趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野
+釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚⿂
+鳥⿃鹵⿄鹿⿅麥⿆麻⿇傢傍傅備傑傀傖傘傚最凱割剴創剩
+勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚
+喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒
+媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄
+弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟
+扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦
+敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅
+棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮
+氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺
+測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄
+犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙
+痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等
+策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善
+翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋
+菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔
+蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象
+貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻
+軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑
+閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項
+順須飧飪飯飩飲飭馮馭黃⿈黍⿉黑⿊亂傭債傲傳僅傾催傷
+傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡
+嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽
+媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌
+慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆
+敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞
+楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺
+溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺
+牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿
+痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑
+碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹
+綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦
+舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈
+蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試
+詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃
+賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違
+遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴
+鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊
+頒頌飼飴飽飾馳馱馴髡鳩麂鼎⿍鼓⿎鼠⿏僧僮僥僖僭僚
+僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟
+嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘
+嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰
+徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲
+斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣
+歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯
+澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑
+瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭
+端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網
+綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂
+臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻
+蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤說
+誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣
+遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銬銀銅銘銖鉻銓銜銨鉼銑閡
+閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰
+髦魁魂鳴鳶鳳麼鼻⿐齊⿑億儀僻僵價儂儈儉儅凜劇劈劉劍
+劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦
+奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈
+影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯
+摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫
+暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄
+潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎
+獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確
+磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練
+緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘
+蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌
+蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹
+諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟
+踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃
+鋅銻銷鋪鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜
+颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩
+麾黎墨⿒齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥
+噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈
+戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺
+橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹
+澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌
+甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤
+篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩
+膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫
+褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄
+踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢
+鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦
+鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣
+鴦鴨鴒鴛默黔龍⿓龜⿔優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎
+嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰
+擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘
+濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵
+牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪
+穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅
+繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨
+舉艱薪薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋
+褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉
+蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋
+錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮
+鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾
+攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏
+燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧
+簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉
+薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍
+邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛
+雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊
+鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥嚨壞壟壢寵龐廬懲懷懶懵攀攏
+曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟
+癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪繳羅羶羹羸臘藩藝
+藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊
+蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘
+鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉
+鵡鵲鵪鵬麒麗麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦
+朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂
+罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍
+躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯
+齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖
+瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟
+辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑
+鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡
+灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑
+鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣
+攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜
+驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢
+讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖
+灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅
+鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲乂乜⼐凵⼕匚⼚厂万丌
+乇亍⼞囗⼬屮⼻彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐
+巿旡⽎殳毌⽓气⽙爿丱丼仨仜仩仡仝仚刌刉匜卌圢圣夗夯
+宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊⽱禸肊阞伎
+优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刐劦匢匟卍厊吇
+囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异
+弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼
+朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵⽹网⾋艸艼芀
+艽艿⾌虍⾑襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒
+佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙
+吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎
+妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌
+庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌
+抎抏抔抇扱扻扺扰抁抈扷扽扲扴旰旴旳旲旵杅杇杙杕杌杈
+杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥
+汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕
+肙肐肒肜芐芏芅芎芑芓芊芃芄⾘豸迉辿邟邡邥邞邧邠阰阨
+阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞
+侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈
+呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀
+坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴
+姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦
+帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬
+怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸
+攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘
+枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙
+沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹
+泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑
+玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺
+矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧
+芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗
+邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇
+俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖
+咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚
+垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭
+宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢
+帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀
+恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺
+挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲
+柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲
+柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭
+洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈
+洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪
+狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧
+疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊
+祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑
+羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍
+臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠
+苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅
+邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬
+俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢
+勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃
+唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕
+娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬
+弳弰彧恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖
+挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈
+敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫
+栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤
+毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠
+涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢
+烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓
+珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁
+疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯
+砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆
+窉窅窋窌窊窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞
+紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺
+胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪
+茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑
+蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱
+衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄
+迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣⾽
+髟⾿鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣
+偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢
+唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭
+埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜
+婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍
+娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏
+崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔
+惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎
+捯掇掐据掯捵掜捭掮捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙
+晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲
+梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌
+氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽
+淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐
+烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈
+珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏
+皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩
+祪祣祫祡离秺秸秶秷窏窔窐笵笻笴笥笰笢笤笳笘笪笝笱笫
+笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨
+罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟
+脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕
+莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶虙虖蚿
+蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑
+袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽
+貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰
+郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺
+閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒
+傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌
+喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭
+堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽
+媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳
+崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢
+惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎
+揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈
+揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁
+椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯
+棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻
+欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝
+湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸
+湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚
+犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡
+琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇
+睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲
+祰稂稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣
+絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥罦羢羠羡翗聑聏聐
+胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣
+菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉
+萏菞萑萆菂菳菕菺菇菑菪萓莚菃菬菮菄菻菗菢萛菛菾蛘
+蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼
+袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌
+詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯
+軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈
+郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆
+鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬
+靰靮頇颩飫鳦⿋黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋
+僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗀嗔嗄嗩喿嗒喍嗏嗕
+嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼
+嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳
+嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷
+慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤
+搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮
+搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹
+楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋
+椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏
+滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒
+溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂
+煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊
+瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾
+痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠
+碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕
+稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯
+綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛
+翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿
+葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃
+葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄
+萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞
+裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁
+詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠
+跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉
+逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬
+鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗
+雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧
+麀⿌黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬
+嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺
+墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞
+嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙
+幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀
+慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎
+撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉
+榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓
+榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸
+漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎
+潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄
+牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑
+瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤
+禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑
+箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝
+緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤聝聜膉膆
+膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝
+蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣
+蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧
+蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨
+誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀
+踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠
+銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇
+銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀
+餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰
+僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚噀嘳
+嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂
+嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞
+廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖
+撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪
+暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦
+槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦
+潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡
+潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤
+熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅
+璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍
+碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾
+箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶
+羬羰羭翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑
+蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼
+蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯
+虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮
+蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭
+觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙
+賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜
+踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊
+醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦
+鋍鋕鋉鋠鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂靚
+鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓
+駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨
+魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴
+叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡
+嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨
+幦幯廩廧廦廨廥彋徼徻憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐
+擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦
+橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞
+橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄
+澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖
+燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠
+璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕
+瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣
+篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠
+縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮
+膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢
+蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螤螛螏
+螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧
+褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻
+貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶
+輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆
+錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錓鋹鋷錴錂錤鋿錩錹錵
+錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗
+鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶
+髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝
+鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍
+嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬
+幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁
+檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩
+濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫
+璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨
+矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏
+篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳
+顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅
+臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗
+薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵
+螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂
+覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲
+豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠
+鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷
+鍻鍡鍞鍣鍧鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞
+鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺
+駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆
+鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰
+黈黚黻黿鼤鼣鼢齔⿕龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭
+幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹
+檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷
+瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚
+皦皽盬矂瞺礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢
+簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆
+藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛
+蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑
+襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘
+貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺
+鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀鎍
+鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤
+鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆
+髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏
+鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌
+齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐
+攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙
+瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃
+甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸
+繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕舋艤艡艣藫藱藭藙
+藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋
+蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖
+譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂
+轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮
+鏣鏕鏄鏎鏀鏒鎥鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙
+顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂
+鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊
+鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑
+黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕
+攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹瀪
+灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩
+禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙艨艩蘢藿蘁
+藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥
+譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔
+鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐼鐊鏿鏼鐌鏶鐑鐆闞
+闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪
+騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟
+鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛
+麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱
+懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔
+籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩
+蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌
+轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿
+韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜
+鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭
+鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕
+巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵
+禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪
+蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊
+鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐
+鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜
+鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘
+蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬
+蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼
+鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷
+鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸
+鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸
+禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆
+靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄
+麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛
+纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨
+鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸
+鑶鑵驠鬮鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉
+靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鸙虋
+讟钃鱹麷癵驫鱺鸝灩灪爩麤齾齉龘︙ ︳╴︴﹏¨̈ˆ
+^ヽヾゝゞ々〆〇ー[]✽ぁ
+あぃいぅうぇえぉおかがき
+ぎくぐけげこごさざしじすず
+せぜそぞただちぢっつづて
+でとどなにぬねのはばぱひび
+ぴふぶぷへべぺほぼぽまみ
+むめもゃやゅゆょよらりるれ
+ろゎわゐゑをんァアィイゥ
+ウェエォオカガキギクグケゲ
+コゴサザシジスズセゼソゾ
+タダチヂッツヅテデトドナニ
+ヌネノハバパヒビピフブプ
+ヘベペホボポマミムメモャヤ
+ュユョヨラリルレロヮワヰ
+ヱヲンヴヵヶАБВГДЕЁ
+ЖЗИЙКЛМНОПРС
+ТУФХЦЧШЩЪЫЬЭЮ
+Яабвгдеёжзий
+клмнопрстуфхц
+чшщъыьэюя⇧↸↹
+㇏乁𠃌乚𠂊刂䒑龰冈㘝龱𧘇¬¬
+¦'"㈱№℡碁銹裏墻恒粧嫺╔╦╗╠╬
+╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═▓
+■
+
+Adobe-CNS1-1
+
+︐︑︒︔︓︖︕𣻗垾𦻓焾𥟠榢𨯩孴穉
+𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚
+竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯
+莜𥮴𦱿篐萡箒𥴠蒒篺簵𥳁籄粃
+𤢂粦𤕸糉糇糦糳糵繧䔝𦹄絝
+𦻖綉綫焵綳緖𤁗𦀩緤㴓緵𡟹緥
+𨍭𦄡𦅚繮䌫鑬縧罀罁罇礶𦋐駡
+羗𦍑羣𡙡𠁨䕜𣝦𨌺翺𦒉者耈耝
+耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥
+肧𨩈脇脚墰𢛶汿𦒘擧𡒊舘𡡞橓
+𤩥𤪕䑺舩𦩒𣵾俹𡓽蓢荢芑𤦧𣔰
+𡝳𣷸芪椛芳䇛蕋苐茚𠸖𡞴㛁
+𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬
+莅䔋𦶥莬菓𦻔橗蕚㒖𦹂葘𥯤
+葱㷓䓤檧葊祘𦮖𦹷𦹃蓞莑䒠蒓
+蓤𥲑䉀𥳀䕃蔴嫲䔣䔧蕳䔖枿蘖
+𨘥𨘻藁𧂈蘂𡖂𧃍𧃰䕫䕪蘨㙈𡢢
+号𧎚虾𪃸蟮𢰧螱蟚蠏噡虬桖
+䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵装
+𧜏覇覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙
+竩𧬺䜓𧬸煼謌謟𥐰𥕥謿譍誩
+𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓
+賖𧶘𧶽贒贃𡤐賛灜贑㻐起趩𨀂
+𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭
+𨍥𨐒辥錃𪊟𠩐辳𨧞𨔽𣶻廸𣉢迹
+𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄
+𨛦邮都酧醩釄粬𨤳𡺉鈎沟鉁鉢
+𥖹𨫆𣲛𨬌𥗛𠴱錬鍫𨫡𨯫嫃𨫢𨫥
+䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠
+濶䊹𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚
+磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕
+𣌊霱虂霶䨏䔽䖅𤫩灵孁霛𩇕
+靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀
+韒韠𥑬韮琜𩐳韵𩐝𧥺䫑頴頳
+顋顦㬎𧅵㵑𠘰𤅜𥜆飊颷飈飇䫿
+𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅
+駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴
+䰎鬔鬭𨘀倴鬴㣃𣁽魐魀𩴾婅
+𡡣鮎鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟
+鵾鶃𪄴鸎鷄𪆓𪈠𡤻𪈳鴹𪂹𪊴
+麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝𪏭
+伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊
+齅馸𩂋韲葿齩竜龎爖䮾𤥵𤦻
+煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄
+鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸
+煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡
+𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨𡏆𡒶蔃
+𣚦葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦
+柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡
+哋嚞𦚱嚒𠿟𠮨𠸍𨬓鎜仸儫㠙
+𤐶亼𠑥佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵
+伩𠋀𨺳𠉵諚𠈌亘働儍侢伃𤨎
+𣺊佂倮偬傁俌俥偘僼湶𣖕𣸹𣺿
+浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜
+𠜎剙劤𠡳勡䙺熌𤎌𠰠𤦬𡃤槑𠸝
+㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉
+喴𠍅响𠯆圝鉝雴埝垍坿㘾壋媙
+𨩆𡛺𡝯𡜐娬妸婾嫏娒𥥆𡧳𡡡
+𤊕㛵洅瑃娡𥺃媁𨯗𠐓鏠璌𡌃焅
+䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮
+廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲
+𨦨弌弎𡤧𡞫婫𡜻孄𧗽衠恾𢡠
+𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙
+憘恵𢲛𢴇𤛔𩅍摱𤙥𢭪㨩𢬢𣑐𩣪
+𢹸挷撶挱揑𤧣𢵧护𢲡搻敫楲
+㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠
+𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏
+𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞
+𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖𤘪梶㯄
+檾𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺
+歗𣿀𣲚鎠鋲𨯪𨫋銉𨀞𨧜鑧涥
+漋𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶
+烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟
+𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼
+鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆
+瑨𨫌𤦫𤦎㫻㷍𤩎㻿𤧅𤣳釺圲
+鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗
+𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁
+砞碍碈磒珐祙𧝁𥛣䄎禥樭𣻺
+稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗
+啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛
+磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹
+𡞰粎籼粮檲緜縇緓罎𦉡𦅜𧭈
+綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸翝笧
+𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿𤧷𦖭
+騟𦖠蒕𧄧𦳑䓪脷䐂胆脉腂𦞴飃
+𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡
+嫤𡣘蚠蜨𣶏蠭𧐢娂衮佅袇袿
+裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣
+䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄
+𡡅鵭貟賩𧷜妚矃姰㛔踪躧𤰉輰
+轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯
+邻䢴啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥
+訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥
+随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁
+𩂰桇䨝𩂓𥟟鍨𨦉𨰦𨬯𦎾銺嬑譩
+䤼珹𤈛鞛餸𠼦巁𨯅𤪲頟𩓚鋶
+𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻
+饍𧬆㷽䭯馪驜𨭥𥣈檏騡嫾騯
+𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸𡓨硄
+𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓
+鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘
+䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼
+䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀𤧞
+㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝
+砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞
+吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗
+𡞵𨩉愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸
+𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛
+𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳
+櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖
+炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕
+䤵𨪂煫𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾
+𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄
+媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊
+僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏
+灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀
+㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒
+烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃
+𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎𦴦𦵑𦲂
+𦿞茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅
+𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓
+樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍
+𤎽樌𤉖𡌄焳𤏩㶥泟勇姫彜𣌀
+糓𧫴𥛶𧬘遬臶県沢国塩条属売
+点栃辻込両笹㷌猪畠堺芦榊
+惣仮駄麿匁枠惨冴窃鰺竈椚
+妬塀呪惧噺楕鰯螥尠帋朞蒭讁
+乸拃桕苽覥辠鞸顇骽徱晈暿
+𧩹𤦺𠍆朎椘𧙗𥿢𧗾𢂚䣐䪸𨪚
+𤀻𤩅𠗊凒𠘑妟𡺨㮾𣳿㦛𨗨𩧉㝢
+𢇃譞𨭎爉𠱸𠝹軚劏煱𣽊𤪧喼
+𦭒㑳𧘲䜘𤤿偦㓻𣏌䝼𨥈𡶐𧰒遖
+𤾚譢嵛𦯷𡤜諪𤧶𣿯䯀𢜛鑥𥟡憕
+娧晉侻𤔡乪𤤴陖涏𦲽襷𦐑筂𩃀
+𠨑穅騦㙟𦑩𠀡禃崬𣔙䛐画补
+墶㜜𢖍㱔銁𢅺錰𤧐氹𠻸蠧裵𢤦
+𨑳𡞱溸𤨪𡠠㦤䔿暶𩲭𩢤襃䃟
+𡘊㦡𣜯𨃨𡏅熭荦𩆨䲷𧂯𨦫𤅺筃
+祾澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𦦵
+𡏭𣈯嶅𨰰圕頣𨥉嶫𤦈斾槕叒
+𤪥𣾁㰑朶𡾡㗊䣺砈鉕䏲䏟姸嚋
+𩗩递嗁䔉繿潖檱㓤𧢝㜺𨀤𧨾
+㷫𣲷𦉘嚿踎孭揞攰嘭吚𩶘䱽嘢
+嘞罉奵𣵀蝰脗鵞贘瘻鱅癎瞹
+鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝
+㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁
+𠲖廐𠹶𢱢𠺢麫絚𡁵抝靭咔賍
+燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧
+冧呍唞唓癦踭𦢊疱肶蠄裇膶萜
+䓬猄茋噻酰鈈𠻹牦䝎𧿹䃺鱝
+攟䣳𤟠𩵼𧖣𦁈熣纎鵐㕷沲卧
+㧜𤘘舭呋㩒獴𩺬䴉鯭䱛𩿞葜
+𧊲挮紥㨪逈勌㹴㙺䗩𠒎癀嫰𠺶
+硺䞶𧼮墧䂿噼鮋嵴癔𪐴麅䳡㟻
+愙𤏲噝𩸆刴㖭鵼籖鬹埞屓擓
+𩓐𦌵蚭𠴨𠵱凾𡼏嶎霃𡷑麁遌
+笟鬂峑箣扨挵髿篏鬪籾籂粆
+鰕篼鬉鰮齚啳寃俽麘俲剠勑坧
+偖妷帒韈鶫轜呩鞴饀鞺匬愰椬
+叚鰊鴂䰻陁榀傦畆𡝭駚剳酙
+隁酜𫑳酑𨺗捿櫊嘑醎畺抅獏
+籰𥰡盖鮝个𠳔莾衂届槀刟巵
+从氱𠇲伹咜劚趂㗾㗳歒酼龥
+鮗頮颴骺麨麄笔毺蠘罸嘠
+𪙊蹷齓跔蹏鸜踁抂𨍽踨蹵竓
+稾磘泪詧瘇鼦泎蟖痃𪊲硓贌狢
+獱謭猂瓱賫𤪻蘯徺袠䒷𦸅𪹧
+詾𢔛惽癧髗鵄鍮鮏蟵𭼼賷
+猬霡鮰㗖犲䰇籑饊慙䰄麖慽
+坟慯抦戹㩜懢厪捤栂㗒嵗迚𨸹
+僙礆匲阸𠼻䁥矾糂𥼚糚稭
+聦聣絍甅瓲覔舚朌聢𧒆聛瓰
+脃眤覉𦟌畓螩蟎臈螌詉貭譃眫
+瓸蓚榲趦覩涹蟁𤀑瓧㷛煶
+悤憜㳑恷罱牐惩䭾𠕇鋛𠗟𣿅
+蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄
+拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀
+𤪱𢔓𠍾徤𠎀𠍇滛𠐟僞儁㑺儎顬
+㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳
+𡦃宂蝽𠖳𣲙冲冸鴴凉减凑㳜
+凓𤪦决凭菍椾𣜭彻刋刦刼劵剗
+劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀
+𠥔𣿬匳𠯢泋𡜦栛珕恊㺪㣌𡛨
+燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠
+厫厮玧𥝲㽙玜叁叅汉义埾叙㪫
+𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭
+𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍𨦼𢚘啇
+䳭启琗喆喩𡣗𤀺䕒𤐵暳𡂴嘷
+曍𣊊暤噍噏磱囱鞇叾圀囯园𨭦
+㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃
+𡑔𤍣堦𤯵堟墪㕡壠壜𡈼壻寿坃
+𪅐𤉸鏓㖡够梦㛃湙𡘾娤𡚒蔅姉
+𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹
+𦹅媫婣㛦𤦩㜈媖瑥嫓𦾡𢕔𡤑㜲
+𡚸広勐孶斈孼𧨎䀄䡝𠈄寕𡨴
+𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉
+䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺
+巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊𤒼
+𠳓厦亷厨𡝱帉𨒂廹廻㢠廼栾
+鐛弍𠇁弢㫞𡌺强𦢈𢏐𢑱彣𦹮彲
+鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩
+怱暅㥣㷇㘹垐𢞴祱㹀悞惪𤦂𤦏
+𧩓璤僡媠慤慂慈𦻒憁凴𠙖憇宪
+𣾷𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞
+掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼
+澊𢸶𥜝擡擥鑻㩦携㩗敍漖𤨨
+𤨣斅敭敟斵𤥀䬷旑䃘𡠩旣忟
+𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴
+𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡槺𣟂杞
+杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝
+𣑯槡樋𨫟楳棃𣗍椁椀㨁𣘼㮀
+枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪
+橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵
+歴𢟍溵𣫛𡥘㝀吡𣭚毡𣻼毜氷
+𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀𣳉
+㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖
+浜湼漄𤥿𤂅𦹲蔳𦽴凇萮𨬡港𣸯
+瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽
+䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑
+𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧
+烌烕烖烟䄄㷨熴熖𤉷焫煅媈
+煊煮𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽
+爎鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕
+牗㹕𣁄栍漽犂猫𤠣𨠫䣭𨠄猨
+献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷
+𤦍𤧻珷琕椃𤨦琹㻗瑜𢢭瑠𨺲瑇
+珤瑶莹瑬瑴鏱樬璂䥓𤪌𤅟𤩹
+𨮏孆𨰃𡢞瓈𡦈甎甞𨻙𡩋寗𨺬鎅
+畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂
+瘬癑癏癯𦏵皐臯㟸𦤑𦤎皡皥
+皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘
+𣊬瞯𨥤𨥨𡛁矴棊碯磇磓隥礮
+𥗠磗礴碱𧘌辸袄𢘜禆褀椂禀𥡗
+禝𧬹礼禩渪𧄦㺨秆𩄍秔唥𠱂
+𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥𨂾睺𢰸㨴
+䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𫪳撍蹾𠺖𠽤
+𢲩𨉖𤓓𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴
+㿭㔆𥋇𩟔𢵄鵮頕𫳗䏙撴哣𢯊㧻
+𫥷𦛚𦜖𧦠擪𥁒𠱃蹨𨭌𠜱䠋𠆩㿺
+塳𢶍𤗈𠓼𦂗𠽌啹䎺䪴𢩦𡂝膪飵
+𠶜捹㧾𢝵跀嚡摼㹃𪘁𠸉𢫏𬗸𡃈
+𣧂㦒㨆𨊛㕸𥹉𢃇𢲲𩜠㒼氽𤸻
+𬦠𧕴𢺋𢈈𪙛𨳍𠹺𠰴𧘹𢯎𢱑㨘𡃇
+𪘲𨳒𨶙𨳊閪𧝞煀兖仾傈㒓円幂
+刅刧剹勺㕓参卟唿嗘㗝嘡噔𡁻
+𡃓𡋾㞹峁崕嵖㠸亁庽㤔憹抐挘
+摚撑腭膄膓栀㮼犏狍𤟯猹畂痜
+㿀𤺥㿗皀皌𤽜䂨砹䄃窑簛糭羓
+羮苿塟蚲䖬螋襇訩蹱𨆉躰𫐬酞醌
+餎餜鮁鷀鶓麬䶑鎺鹻炉獈禙辷
+饂
+
+Adobe-CNS1-3
+
+€゛゜⺀㇀㇁㇂㇃㇄𠄌㇅𠃑𠃍
+㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎
+⼡夂𡯁屮⾭靑𠂆乛亻㔾尣彑忄
+㣺扌攵歺氵氺灬爫丬犭𤣩罒
+礻糹罓𦉪㓁𦍋耂肀𦘒𦥑卝衤见
+𧢲讠贝钅镸长门𨸏韦页风飞
+饣𩠐鱼鸟黄歯龜丷𠂇阝户钢⺄
+⺆⺇⺈⺊⺌⺍⺕⺜⺥⺧⺪⺬
+⺮⺶⺼⺾⻊⻌⻍⻏⻖⻗⻞𪎩𡅅
+攊丽滝鵎釟𧜵会伨侨兴农凤
+务动医华发变团声处备夲头学
+实実岚庆总斉柾栄桥济炼电
+纤纬纺织经统缆缷艺苏药视设
+询车轧轮琑糼緍楆竉碸肼贋
+胶𠧧肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁
+溚舾甙䤑马骏龙禇𨑬𡷊𠗐𢫦
+两亀亇亿仫伷㑌侽㹈倃㑽㒥夅
+凛凼争劐匧㗇厩㕑厰吣㕭㕲
+㚁咓咣咴咹哐哯唘唣唨㖘㖥㖿
+嗗㗅𧶄䁓𡃴𠰋𧣈𦂥𢵌𡁷𡁯𢆡
+𠶖䂻𢳉噒𠼱𦠜𡃏𢠃𢤹㗻𥇣𠺌𠾍
+𠺪㾓𠼰𠵇𡅏𠹌𠺫𠮩𠵈𡃀𡄽㿹
+𢚖搲𠾭𣏴𠵾𠵿𢱕𠺘𠼮𦭐哌苄喹
+𩻃鰦骶𢷮胬尜𦕲脴㞗𨂽醶𠻺
+𠸏𠹷𠻻𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈
+𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑
+𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷
+𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟
+鮍𥭴𣄽嗻㗲嚉崾嵈㷼㠏嶤嶹㠠
+弥徃㤈㤿㥍惗愽峥㦉憷懏㦸
+戬拥㧸嚱㨃揢揻搇㩋擀龟㪗斆
+㪽旿晓㫲暒㬢朖㭂枤㭘桊梄
+㭲㭱㭻椉楃牜楤榟榅槖㯝橥橴
+橱檂㯬檙㯲檫檵櫔櫶殁毁毪
+汵沪㳋洂洆洦涁㳯涤涱渕渘温
+溆𨧀溻滢滚齿滨滩漤漴㵆𣽁
+澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿
+𠌥䏁㗱𠻘㙎㶭𥱥晽籴璍纒䔃
+𤾸𠬍𦬊㑾𢻯𣲵𦺙蝱揁睷覊𣾏譌
+𤳉䤪𪀔𨚼𨔁㫰炏𢙺𦦨𤉋梈𢅛
+齢鏆𠍿鍦銏蘔𪑛䆐枏栞㡣𤧬㬙
+蒖𤥢㧢蒀䍮靱馛䤭漗𧄉炦𤩏
+繥崯㷳𤩝𡟟綤萦咅𣫺𠈔坾𠣕𠘙
+㿥𡾞𪊶瀃𩅛嵰玏𨩙𩐠俈翧猐
+猸獁㺩燵𤣲珡㻊㻑琙琞琟㻢㻰
+㻴㻺瓓㼎㽓畭畲疍㽼痈癍癴
+㿜発熈嘣覀䀝睃䀹䁅㗛瞘䁪䁯
+瞾矋砘砜硇硑硦葈𥔵礳礲䄉
+禑稆䅧䆲窼艹䇄竏竛䇏筢筬筻
+簒䉠䉺类粜䊌粸䊔输烀𠳏総
+緔緐緽羴犟䎗耠耥耮耱联垴炠
+肷胩䏭脌脎脒脔䐁㬹腖腙腚
+䐓腼䐥䐭膥埯臁臤艔䒏艶苊苘
+䒰荗险萅烵葤蒈䔄蒾蓡蓸蔐
+蔸蕒䔻蕯蕰藠䕷虲蚒蛯际䘆䘗
+袮裿褤覑𧥧訸誔誴豑賔賲贜
+䞘跃䟭踺坔嗵䠷軎転軤軭軲迁
+迊迌逳䢭飠鈓䤞鈨鉘鉫銱銮
+銿鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑鐗鐝
+鐭鐾䥪鑔鑹锭関䦧间阳䧥䨤
+靀䨵鞲韂䫤颹䬙飱塄餙餷饝饢
+䭰駅䮝騼鬏魩鯝鯱鯴䱭鰠㝯
+𡯂鵉黾噐鶽鷼银辶麱麽黆铜黢
+黱黸齄𠂔𠊷𠎠铃𠓗铁𠗕𠘕𠙶
+𡚺块煳𠫂𠫍𠮿吆𠯋咞𠯻𠰻𠱓𠱥
+𠱼𠲍𠲵𠳝𠳭𠵯𠶲𠷈𠸄𠸎𠻗𠾐
+𠼭𠹳𠾼𡁜𡁏𡁶𡂈𡂖㙇𡂿𡄯𡄻卤
+𡋣𡍵𡌶𡕷𡘙𡟃𡟇炻𡠭𡥪𡨭𡩅
+𡰪𡱰𡲬𡻈𡻕𡼕熘𢁅槩㛈𢉼𢏗𢏺
+𢜪𢡱𢥏𢥧𢦓𢫕𢫨𢬎𢬿𢱌𢲈𢲷
+𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞𣕧
+𣗳𣘚𣜖墵𣪧𣸑𣺹𤄙𤋮𤌍𤌴𤎖
+𤐄𤓖垈𤙴𤜯𤠒𤣻𤨕𤫀奥𤾆𥀬圿
+𥊙𥐙𥑆𥑮𥔿𥕞𥕢𥕦𥟇𥡝𥤃𥪮
+𥮉𥰆垡煑𦄂𦆲𦐂𦑊𦒄𦒈𦔒𦖿𦚵
+嚹𦛼㘘𦞙𦡮𦡞𦣇𦤦𦤹𦧺𦨭𦨴
+𦭛𦮝𦲤𦶮𧁋𧇍𧊀𧊅𧊋𧋦钟𧑐㚹
+𧟌𧡘囖𧧝𧧽𧨊𧬋𧵦𨀉𨀣𨁈𨂃
+𨂐𨃴𨄮𨅏𨆯𨈚𨌆𨌯𨎊𨑨𨚪揦𨥖
+𨦸𨧧𨧨𨭆𨯔𨰉𨿅𩃬𩄐𩄼㷷𩅞
+𤫊运𩓧𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚
+𩶛纟𩻸𩼣䲤鿐镇𪊓熢𪋿𪗋䶜𠲜
+达辺𢒰边𤪓仪𨬬躀𡟵𨭬𨮙𦚯
+𧙕𥘵𥥖亚𥺁𠹭𣺈𤲞𡟶𡡻𥱊𥌑㷆
+𥻘东𠿪𠵉𣚺𥅈嗞螆𡃁𤜆宐𦢓
+𢛴𧴯𤆣𧵳𦻐𧊶𡇙𣳼𪚩𠺬𡲢𤿂
+𠿫𢶠𠿬𠸊𠿭𡆇业丄嬍㚬卽㚥墚
+𤭮垪𥪕𠥹𢑥𣳾𩼰𤾩𩖞𣶶𦞳𣜠𣻷
+𣸬𣃚𡊩垧𤥣𧂮𡝬𧅤𦴢𤫢鰛𤤾
+㸆𦴣𠏼𣳽𤤙坺哚煺𤩷𨩚咢𡠻
+𦅙𣏵𨯂𡵆𦻑㘵𨬭删㰘𣳇𥻗𧙖𥔱
+𡥄𩤃𦷜𧂭𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌
+齐麦𦉫凢卂暭塜啓㶅慠䢮鞽
+𡡷悳萤頔𤂌𣁾𡸽㬫㴲𠎵炁岜
+𠗃㜰𡍶𤨒𨬫𦂃ĀÁǍÀĒÉĚ
+ÈŌÓǑÒẾỀÊāáǎà
+ɑēéěèīíǐìōóǒ
+òūúǔùǖǘǚǜüếề
+êɡʃɐɛɔɵœøŋʊɪ
+⏚⏛
+
+Adobe-CNS1-4
+
+⺝⻆⻣倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙
+𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏
+䀉橣𪊺䈣蘏稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝
+亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋𣏹椙橃𣱣
+泿爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐
+龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚顨杫䉶圽
+藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯繛
+
+Adobe-CNS1-5
+
+䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚
+䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑
+宷峼杮薓𩥅瑡璝𠩯曧湗秊㶈䓃𣉖𢞖䎚䔶峕𣬚諹屸㴒𣕑嵸龲
+煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻𠮟𢇁𨥭䄂䚻𩁹㼇龳
+𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭
+
+Adobe-CNS1-6
+
+㡵𡵓𣚞𦀡㻬𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲
+晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈
+䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋
+
+Adobe-CNS1-7
+
+兑吿媪悦愠捝敚棁氲涚煴税緼脱腽藴蜕説輼醖鋭閲鱇
+
+\end
diff --git a/language/japanese/uptex-base/samples/adobe-gb-utf8.tex b/language/japanese/uptex-base/samples/adobe-gb-utf8.tex
new file mode 100644
index 0000000000..9e2a274b41
--- /dev/null
+++ b/language/japanese/uptex-base/samples/adobe-gb-utf8.tex
@@ -0,0 +1,1244 @@
+%
+% This file is generated from the data of UniGB-UTF32
+% in cid2code.txt (Version 12/05/2017)
+% for Adobe-GB1-5
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-GB1-5/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+\kcatcode"C0=18% U+00C0:À (Latin-1 Supplement, Latin-1 letters)
+\kcatcode"100=18% U+0100:Ā (Latin Extended-A)
+\kcatcode"180=18% U+0180:ƀ (Latin Extended-B)
+\kcatcode"1E00=18% U+1E00:Ḁ (Latin Extended Additional)
+
+\font\upschrm = upschrm-h at 9.62216pt
+\upschrm
+
+
+Adobe-GB1-0
+
+  、。·•・ˉˇ¨〃々—~‖…⋯‘’“”〔〕〈〈
+〉〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√
+⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″
+℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓
+⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸
+⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩
+㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ!"#
+¥%&'()*+,-./0123456789:;<
+=>?@ABCDEFGHIJKLMNOPQRSTU
+VWXYZ[\]^_`abcdefghijklmn
+opqrstuvwxyz{|} ̄ぁあぃいぅうぇえぉ
+おかがきぎくぐけげこごさざしじすずせぜそぞただちぢ
+っつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほ
+ぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァ
+アィイゥウェエォオカガキギクグケゲコゴサザシジスズ
+セゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビ
+ピフブプヘベペホボポマミムメモャヤュユョヨラリルレ
+ロヮワヰヱヲンヴヵヶΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟ
+ΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπ
+ρστυφχψω︐︒︑︓︔︕︖︵︶︹
+︺︿﹀︽︾﹁﹂﹃﹄︗︘︻︼︷︸︱⁝︙︳︴АБ
+ВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩ
+ЪЫЬЭЮЯабвгдеёжзийклмнопрс
+туфхцчшщъыьэюяāáǎàēéěèīíǐ
+ìōóǒòūúǔùǖǘǚǜüêɑḿńňǹɡㄅㄆ
+ㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟ
+ㄠㄡㄢㄣㄤㄥㄦㄨㄩㄧ─━│┃┄┅┆┇┈┉┊┋┌┍┎
+┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧
+┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀
+╁╂╃╄╅╆╇╈╉╊╋啊阿埃挨哎唉哀皑癌蔼矮艾碍爱
+隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒
+叭吧笆⼋八疤巴拔跋靶把耙坝霸罢爸⽩白柏百摆佰败拜稗
+斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑
+傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈
+背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼⿐鼻⽐比鄙
+笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁
+便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙
+秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕
+⼘卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参
+蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬
+茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝
+常长偿肠⼚厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈
+郴⾂臣⾠辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞
+骋秤吃痴持匙池迟弛驰耻齿侈尺⾚赤翅斥炽充冲⾍虫崇宠
+抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗
+搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇
+唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑
+粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存⼨寸磋撮搓措挫错
+搭达答瘩打⼤大呆⽍歹傣戴带殆代贷袋待逮怠耽担丹单郸
+掸胆旦氮但惮淡诞弹蛋当挡党荡档⼑刀捣蹈倒岛祷导到稻
+悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底
+地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼
+雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶⿍鼎锭定订丢
+东冬董懂动栋侗恫冻洞兜抖⽃斗陡⾖豆逗痘都督毒犊独读
+堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤
+钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼
+遏鄂饿恩⽽而⼉儿⽿耳尔饵洱⼆二贰发罚筏伐乏阀法珐藩
+帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳⽅方肪房防妨仿
+访纺放菲⾮非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾
+粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷
+肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府
+腐赴副覆赋复傅付⾩阜⽗父腹负富讣附妇缚咐噶嘎该改概
+钙盖溉⼲干⽢甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠
+篙皋⾼高膏羔糕搞镐稿告哥歌搁⼽戈鸽胳疙割⾰革葛格蛤
+阁隔铬个各给根跟耕更庚羹埂耿梗⼯工攻功恭龚供躬公宫
+⼸弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑⿎
+鼓古蛊⾻骨⾕谷股故顾固雇刮⽠瓜剐寡挂褂乖拐怪棺关官
+冠观管馆罐惯灌贯光⼴广逛瑰规圭硅归龟闺轨⿁鬼诡癸桂
+柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩
+含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗
+号浩呵喝荷菏核⽲禾和何合盒貉阂河涸赫褐鹤贺嘿⿊黑痕
+很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼
+乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化
+话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗
+簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会
+烩汇讳诲绘荤昏婚魂浑混豁活伙⽕火获或惑霍货祸击圾基
+机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即
+嫉级挤⼏几脊⼰己蓟技冀季伎祭剂悸济寄寂计记既忌际妓
+继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间
+煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭
+件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁
+焦胶交郊浇骄娇嚼搅铰矫侥脚狡⾓角饺缴绞剿教酵轿较叫
+窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介
+疥诫届⼱巾筋⽄斤⾦金今津襟紧锦仅谨进靳晋禁近烬浸尽
+劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞
+净炯窘揪究纠玖⾲韭久灸九酒厩救旧⾅臼舅咎就疚鞠拘狙
+疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟
+倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻俊竣浚郡骏
+喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤
+靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔
+控抠⼝口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡
+筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓
+阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂
+滥琅榔狼廊郎朗浪捞劳牢⽼老佬姥酪烙涝勒乐雷镭蕾磊累
+儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李⾥里鲤礼莉荔
+吏栗丽厉励砾历利傈例俐痢⽴立粒沥⾪隶⼒力璃哩俩联莲
+连镰廉怜涟帘敛脸链恋炼练粮凉凉梁粱良两辆量晾亮谅撩
+聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋
+凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘
+瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳
+卤虏鲁麓碌露路赂⿅鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯
+律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩
+骡裸落洛骆络妈⿇麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮
+满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚⽑毛⽭矛铆卯茂冒帽貌
+贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟
+锰猛梦孟眯醚靡糜迷谜弥⽶米秘觅泌蜜密幂棉眠绵冕免勉
+娩缅⾯面苗描瞄藐秒渺庙妙蔑灭民抿⽫皿敏悯闽明螟鸣铭
+名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡
+亩姆母墓暮幕募慕⽊木⽬目睦牧穆拿哪呐钠那娜纳氖乃奶
+耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻
+逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁
+拧泞⽜牛扭钮纽脓浓农弄奴努怒⼥女暖虐疟挪懦糯诺哦欧
+鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判
+叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰
+抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲⽪
+皮匹痞僻屁譬篇偏⽚片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹
+萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃
+普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈
+祁骑起岂乞企启契砌器⽓气迄弃汽泣讫掐恰洽牵扦钎铅千
+迁签仟谦乾黔钱钳前潜遣浅谴堑嵌⽋欠歉枪呛腔羌墙蔷强
+抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦
+琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱
+球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊
+拳⽝犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶
+扰绕惹热壬仁⼈人忍韧任认刃妊纫扔仍⽇日戎茸蓉荣融熔
+溶容绒冗揉柔⾁肉茹蠕儒孺如辱乳汝⼊入褥软阮蕊瑞锐闰
+润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟⾊色涩
+森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉⼭山删煽衫闪陕擅赡
+膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢
+赊蛇⾆舌舍赦摄射慑涉社设砷申呻伸⾝身深娠绅神沈审婶
+甚肾慎渗声⽣生甥牲升绳省盛剩胜圣师失狮施湿诗⼫尸虱
+⼗十⽯石拾时什⾷食蚀实识史⽮矢使屎驶始式⽰示⼠士世
+柿事拭誓逝势是嗜噬适仕侍释饰⽒氏市恃室视试收⼿手⾸
+首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙
+署蜀⿉黍⿏鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓
+拴霜双爽谁⽔水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死
+肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速
+粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑
+梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰
+坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐
+糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢
+锑提题蹄啼体替嚏惕涕剃屉天添填⽥田甜恬舔腆挑条迢眺
+跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒
+统痛偷投头透凸秃突图徒途涂屠⼟土吐兔湍团推颓腿蜕褪
+退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃⽡瓦袜歪外
+豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉⽹网往旺
+望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚
+味畏胃喂魏位渭谓尉慰卫瘟温蚊⽂文闻纹吻稳紊问嗡翁瓮
+挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋⽆无芜梧吾吴⽏毋武
+五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡
+牺稀息希悉膝⼣夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏
+细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲
+涎弦嫌显险现献县腺馅羡宪陷限线相厢镶⾹香箱襄湘乡翔
+祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓⼩小孝
+校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢
+屑薪芯锌欣⾟辛新忻⼼心信衅星腥猩惺兴刑型形邢⾏行醒
+幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘
+须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋⽞玄选癣眩绚
+靴薛学⽳穴雪⾎血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦
+鸭呀丫芽⽛牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延
+⾔言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央
+鸯秧杨扬佯疡⽺羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣
+姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液⼀一壹医
+揖铱依伊⾐衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已⼄乙矣以
+艺抑易⾢邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异
+翼翌绎茵荫因殷⾳音阴姻吟银淫寅饮尹引隐印英樱婴鹰应
+缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌
+永恿勇⽤用幽优悠忧尤由邮铀犹油游⾣酉有友右佑釉诱⼜
+又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱⾬雨与屿禹
+宇语⽻羽⽟玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭
+鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院⽈曰约越跃
+钥岳粤⽉月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾
+宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥
+责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘
+斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰
+漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲
+蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣
+睁征狰争怔整拯正政帧症郑证芝枝⽀支吱蜘知肢脂汁之织
+职直植殖执值侄址指⽌止趾只旨纸志挚掷⾄至致置帜峙制
+智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众⾈舟周州洲
+诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐⽵竹烛煮拄瞩嘱
+主著柱助蛀贮铸筑住注祝驻抓⽖爪拽专砖转撰赚篆桩庄装
+妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨
+资姿滋淄孜紫仔籽滓⼦子⾃自渍字鬃棕踪宗综总纵邹⾛走
+奏揍租⾜足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作
+坐座亍丌兀兀丐廿卅丕亘丞⿀鬲孬噩⼁丨禺⼃丿⼔匕乇夭
+⽘爻卮氐囟胤馗毓睾鼗⼂丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣
+厥厮靥赝⼕匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯
+剽劂劁劐劓⼌冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫
+佞佧攸佚佝佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅
+俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻
+傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎⿕龠汆籴兮巽黉馘
+冁夔⼓勹匍訇匐凫夙兕⼇亠兖亳衮袤亵脔裒禀嬴蠃羸⼎冫
+冱冽冼凇⼍冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘
+诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖
+谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶⼙卩卺阝阢阡阱阪
+阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺邸
+邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆
+刍奂劢劬劭劾哿勐勖勰叟燮矍⼵廴⼐凵凼⾿鬯⼛厶弁畚巯
+坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭
+坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝堋堍埽
+埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗
+芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷
+苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴
+茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥荨茛荩荬荪荭荮莰荸
+莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋
+菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇
+蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴
+蒗蓥蓣蔌甍蔸蓰蔹蔟蔺蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤
+薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼⼶廾弈夼奁耷
+奕奚奘匏⼪尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱
+捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌
+搦搡摞撄摭撖摺撷撸撙撺擀擐擗擤擢攉攥攮⼷弋忒甙弑卟
+叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚
+咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪
+咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐
+唼唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔
+喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌
+嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓
+嚯囔⼞囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼帷幄幔幛
+幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤
+峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂
+嶙嶝豳嶷巅⼻彳彷徂徇徉後徕徙徜徨徭徵徼衢⼺彡犭犰犴
+犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺狻猗猓猡猊猞猝猕
+猢猹猥猬猸猱獐獍獗獠獬獯獾⾇舛夥飧夤⼡夂饣饧饨饩饪
+饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳
+赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦
+怛怏怍怩怫怊怿怡恸恹恻恺恂恪恽悖悚悭悝悃悒悌悛惬悻
+悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩
+闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬⽙爿
+戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠
+泖泺泫泮沱泓泯泾洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔
+洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫
+渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷
+滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼
+潺濑濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞⼧宀宄宕宓宥
+宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑
+逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋⼹彐彗
+彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻⼬屮妁妃妍妩妪妣妗
+姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧
+婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗
+嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒
+骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩纭纰纾绀绁绂绉
+绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋
+缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳
+缵⼳幺畿⼮巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊
+珩珧珞玺珲琏琪瑛琦琥琨琰琮琬琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜
+璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘
+枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎
+柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷
+梓桫棂楮棼椟椠棹椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸
+椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭
+樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂
+殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄
+辇辋辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓⽁
+攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗
+晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇
+觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰搿擘耄
+毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰
+虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝
+胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩
+腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻臁膦欤欷欹歃歆歙飑
+飒飓飕飙飚⽎殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝
+炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠
+燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗
+祠祯祧祺禅禊禚禧禳忑忐怼恝恚恧恁恙恣悫愆愍慝憩憝懋
+懑戆肀⾀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥
+砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉
+磬磲礅磴礓礤礞礴龛⿋黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵
+眸睐睑睇睃睚睨睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈
+畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏
+钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿
+铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨
+铪铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔
+锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅
+镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪
+镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔稹稷穑黏馥
+穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁
+鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱
+鹭鹳⽧疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫
+痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙瘛瘼瘢瘠癀瘭瘰瘿瘵癃
+瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩
+衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴
+褫褶襁襦襻⽦疋胥皲皴矜⽾耒耔耖耜耠耢耥耦耧耩耨耱耋
+耵聃聆聍聒聩聱覃顸颀颃颉颌颍颏颔颚颛颞颟颡颢颥颦⾌
+虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱
+蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻
+蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤
+蝙蝥螓螯螨蟒蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪
+蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼⽸缶罂罄罅舐竺竽笈笃笄笕笊笫笏
+筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐
+箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖
+簋簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾
+艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞
+粢粲粼粽糁糇糌糍糈糅糗糨⾉艮暨羿翎翕翥翡翦翩翮翳⽷
+糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤酢酡酰
+酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺⾗豕鹾趸
+跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉
+跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴
+躅躏躔躐躜躞⾘豸貂貊貅貘貔斛觖觞觚觜觥觫觯訾謦靓雩
+雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍⾫隹
+隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐
+鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴
+鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜
+鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋
+髌髑魅魃魇魉魈魍魑飨餍餮饕饔⾽髟髡髦髯髫髻髭髹鬈鬏
+鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯
+鼢鼬鼯鼹鼷鼽鼾齄〇©™ 
+
+Adobe-GB1-1
+
+皚藹礙愛骯襖壩罷擺敗頒辦絆幫綁鎊謗飽寶報鮑輩⾙貝鋇
+狽備憊綳筆畢斃幣閉邊編貶變辯辮標鱉癟瀕濱賓擯餅撥鉢
+鉑駁補財參蠶殘慚慘燦蒼艙倉滄厠側測層詫攙摻蟬饞讒纏
+鏟産闡顫場嘗⾧長償腸廠暢鈔⾞車徹塵陳襯稱懲誠騁遲馳
+⿒齒熾衝蟲寵疇躊籌綢醜鋤雛礎儲觸處傳瘡闖創錘純綽辭
+詞賜聰從叢躥竄錯達帶貸擔單鄲撣膽憚誕彈當擋黨蕩檔搗
+島禱導燈鄧敵滌遞締顛點墊電澱釣調諜釘頂錠訂東動棟凍
+⾾鬥犢獨讀賭鍍鍛斷緞隊對噸頓鈍奪墮鵝額訛惡餓兒爾餌
+貳發罰閥礬釩煩範販飯訪紡⾶飛誹廢費紛墳奮憤糞豐楓鋒
+⾵風瘋馮縫諷鳳膚輻撫輔賦復負訃婦縛該鈣蓋幹趕贛岡剛
+鋼綱崗鎬擱鴿閣鉻個給龔鞏貢鈎溝構購蠱顧剮關觀館慣貫
+廣規歸⿔龜閨軌詭櫃貴劊輥鍋國過駭韓漢號閡鶴賀轟鴻紅
+壺護滬嘩華畫劃話懷壞歡環還緩謊揮輝賄穢會燴匯諱誨繪
+葷渾獲貨禍擊機積饑譏鷄績緝極輯級擠幾薊劑濟計記際繼
+紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢鹼揀撿簡儉薦檻鑒
+踐賤⾒見鍵艦劍餞漸濺澗將漿蔣槳奬講醬膠澆驕嬌攪鉸矯
+僥餃繳絞轎較階節潔結誡緊錦僅謹進燼盡勁莖鯨驚經頸鏡
+徑痙競糾舊駒舉據鋸懼劇鵑絹覺訣絶鈞軍駿開凱顆殻課墾
+懇摳庫褲誇塊儈寬礦曠虧巋窺饋潰擴闊蠟臘萊來賴藍欄攔
+籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類籬離灕裏裏鯉禮
+麗厲勵礫歷瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧兩輛諒
+療遼鐐獵臨鄰鱗賃齡鈴靈嶺領餾劉⿓龍聾嚨籠壟攏隴樓婁
+摟簍蘆盧顱廬爐擄滷虜魯賂録陸驢鋁屢縷慮濾緑巒攣孿灤
+亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞⾺馬駡嗎買
+⿆麥賣邁瞞饅蠻滿謾錨鉚貿鎂⾨門悶們錳夢謎彌覓綿緬廟
+滅憫閩鳴銘謬謀畝鈉納難撓腦惱鬧餒擬膩攆釀⿃鳥聶嚙鑷
+鎳檸獰寧擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐賠噴鵬騙飄
+頻貧蘋憑評潑頗撲鋪僕樸譜臍⿑齊騎豈啓氣訖牽釺鉛遷簽
+謙錢鉗淺譴塹槍嗆墻薔搶鍬橋喬僑翹竅竊欽親寢輕氫傾頃
+請慶瓊窮趨區軀驅齲顴權勸鵲確讓饒擾繞熱韌認紉榮絨軟
+鋭閏潤灑薩鰓賽傘喪騷掃澀殺紗篩曬閃陝贍繕傷賞燒紹賒
+捨攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩時蝕實識駛勢適釋
+飾視試壽獸樞輸書贖屬術樹竪數帥雙誰順説碩爍絲飼鬆聳
+慫頌訟誦擻蘇訴肅雖隨綏歲孫損縮瑣鎖獺撻臺態攤貪癱灘
+壇譚談嘆湯燙濤縧討騰謄銻題體條貼鐵廳聽烴銅統頭圖塗
+團頽鴕馱駝橢窪襪彎灣頑萬網⾱韋違圍爲濰維葦偉僞緯謂
+衛聞紋穩問撾蝸渦窩嗚鎢烏誣無蕪塢霧務誤錫犧襲習銑戲
+細蝦轄峽俠狹嚇鍁鮮纖賢銜閑顯險現獻縣餡憲綫鑲鄉詳響
+項蕭囂銷曉嘯協挾脅諧寫瀉謝鋅釁興銹綉須許緒續軒懸選
+癬絢學勛詢尋馴訓訊遜壓鴉鴨啞亞訝閹鹽嚴顔閻艷厭硯諺
+驗鴦楊揚瘍陽癢養樣堯謡藥爺⾴頁業葉醫銥頤遺儀蟻藝億
+憶義詣議誼譯繹蔭陰銀飲隱櫻嬰鷹應纓瑩螢營熒蠅贏穎喲
+擁傭癰踴優憂郵鈾猶誘輿餘⿂魚漁與嶼語鬱獄譽預馭鴛淵
+轅園員圓緣遠願約躍鑰閲雲鄖隕運藴醖暈雜載攢暫贊贜臟
+鑿棗竈責擇則澤賊贈軋鍘閘詐齋債氈盞斬輾嶄棧戰綻張漲
+帳賬脹趙蟄轍鍺這貞針偵診鎮陣幀癥鄭證織職執衹紙摯擲
+幟質滯鐘終種腫衆謅軸皺晝驟諸誅燭矚囑貯鑄築駐專磚轉
+賺樁莊裝妝壯狀錐贅墜綴諄準濁資漬綜總縱鄒詛組鑽嗇厙
+厴靨贋匭匱賾剄劌剴傴倀傖儕儂儔儼儷僨僂儻儐儺僉糴黌
+囅鳬褻臠訁訐訌訕謳詎訥詁訶詆詔詘詒誆誄詿詰詼詵詬詮
+諍諢詡誚誥誑誒諏諑諉諛諗諂誶諶諫謔謁諤諭諼諳諦諮諞
+謨讜謖謚謐謫謭譖譙譎讞譫讖陘鄺鄔鄴郟鄶鄆酈芻勱巰堊
+壙壢壠壚埡塏堖塒堝塤薌蕓藶莧萇蓯苧蘢蔦塋煢蕘蓽蕎薈
+薺犖滎蕁藎蕒蓀葒葤蒔萵薟蕕鶯蒓縈蕆蕢蔞驀蘺鎣蕷蘞藺
+蘄藪蘚奩尷捫摶撟摑摜撳攄攖擷擼攛嘰嘸囈嚦唄咼嚀噝噠
+嘵嗶噦噲嚌噥嘜嘮嗩嘖囀嘍嚳囁噯轡嚶嚕圇幃幬幘幗嶇峴
+嵐崬嶧嶠嶗崍嶸嶁巔徠獷獁獪猻獫玀獼飠餳飩餼飪飫飭飴
+餉餑餛餷餿饃饈饉饊饌饢廡賡懺憮慪愾悵愴懌慟懨惻愷惲
+慳愜憒閂閆闈閎閔閌闥閭閫鬮閬閾閶鬩閿閽閼闃闋闔闐闕
+闞灃潙瀧瀘濼涇浹湞澮瀏滸潯淶潿瀆澠瀋灧灄瀅潷瀠瀟瀲
+瀨灝騫邇逕邐屨弳嫵嫗嬀婭嬈孌媧嫻嬋嬡嬪嬙駔駟駙騶驛
+駑駘驍驊駢驪騏騍騅驂騭騖驁騮騸驃驄驏驥驤糹紆紂紇紈
+纊紜紕紓紺紲紱縐紼絀紿絝絎絳綆綃綈綾綺緋緔緄綞綬綹
+綣綰緇緙緗緹緲繢緦緶緱縋緡縉縝縟縞縭縊縑繽縹縵縲繆
+繅纈繚繒繮繾繰繯纘璣瑋瓏頊璽琿璉璦瓔瓚韙韞韜榪櫪梘
+棖樅梟櫛櫳櫨櫟檉椏橈楨榿樺檜欒欞櫝槧欏欖櫬櫚櫸檳櫧
+檣櫓櫞殤殞殮殫殯軔軛軲軻轤軹軼軫軤轢軺軾輊輇輅輒輦
+輞輟輜輳轆轔戔戧甌曇曄暉曖賁貰貺貽贄貲賅贐賑賚賕賫
+賧賻覘覬覡覿覦覯覲覷毿氌氬牘朧腖臚脛膾腡臏歟颮颯颶
+颼飆飈轂齏斕煬煒熗燁燜燾禰禎禪懟慤懣戇澩磯碭硨碸礪
+礱硤磽磧磣龕瞘睞瞼羆羈釒釓釔釙釗釕釷釧釤鍆釵釹鈈鈦
+鉅鈑鈐鈁鈧鈄鈥鈀鈺鉦鈷鈳鉕鈽鈸鉞鉬鉭鈿鑠鈰鉉鉈鉍鈮
+鈹鐸銬銠鉺銪鋮鋏鐃鋣鐺銱銦鎧銖鋌銩鏵銓鉿鎩銚錚銫銃
+鐋銨銣鐒錸鋱鏗鋥鋰鋯鋨銼鋝鋶鐦鐧鋃鋟鋦錒錆鍩錛鍀錁
+錕錮鍃錇錈錟錙鍥鍇鍶鍔鍤鎪鍰鎄鏤鏘鐨鎇鏌鎘鎸鎿鎦鎰
+鎵鑌鏢鏜鏝鏍鏞鏃鏇鏑鐔鐝鏷鑥鐓鑭鐠鑹鏹鐙鑊鐲鐿鑔鑣
+鍾穡鳩鳶鴇鴆鴣鶇鸕鴝鴟鷥鴯鷙鴰鵂鸞鵓鸝鵠鵒鷳鵜鵡鶓
+鵪鵯鶉鶘鶚鷀鶥鶩鷂鶼鸚鷓鷚鷯鷦鷲鷸鸌鷺鸛癤癘癧瘂癆
+癇癉瘞瘻癭癮癩癲竇窶襠褳襝襇褸襤皸耮耬聹聵頇頎頏頡
+頜潁頦頷顎顓顳顢顙顥顬顰蟣蠆蜆蠣蟶蛺蟯螄蠐蟈蠑螻蟎
+罌篤筧籩篳簀篋籜簞簫簣籪籟艤艫裊羥糲糶糝縶麩趲釅釃
+鹺躉蹌躒蹺蹕躚躋躓躑躡蹣躪躦觴觶靚靂霽靄齔齟齙齠齜
+齦齬齪齷⿌黽黿鼉讎鑾鏨魷魴鮁鮃鮎鱸穌鮒鱟鮐鮭鮚鮪鮞
+鱭鮫鮝鱘鯁鱺鰱鰹鰣鰷鯀鯊鯇鯽鯖鯪鯫鯡鯤鯧鯝鯢鯰鯛鯴
+鯔鱝鰈鰐鰍鰒鰉鯿鰠鰲鰭鰨鰥鰩鰳鰾鱈鰻鰵鱅鱖鱔鱒鱧韃
+鞽韉鶻髏髖髕魘魎饗饜鬢黷黲襬闆錶彆蔔纔齣噹鼕噁髮複
+穀颳閤鬍迴彙穫飢傢薑儘捲剋睏纍曆瞭⿄鹵囉黴濛懞矇瀰
+麵衊闢韆籤縴鞦麯囌颱檯罎糰係繫鹹嚮鬚葯禦籲髒隻緻製
+硃
+
+Adobe-GB1-2
+
+ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹˊˋ˙–―‥‵℅℉↖↗↘↙∕∟
+∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣
+╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇█▉
+▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞〡〢〣〤〥
+〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦℡㈱‐ー゛゜
+ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞
+﹟﹠﹡﹢﹣﹤﹥﹦﹨﹩﹪﹫〾⿰⿱⿲⿳⿴⿵
+⿶⿷⿸⿹⿺⿻丂丄丅丆丏丒丗丟丠両丣並
+丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨
+乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亃亄⼅亅亇
+亊亐亖亗亙亜亝亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒
+仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇
+伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿
+佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併
+佷佸佹佺佽侀侁侂侅侇侊侌侎侐侒侓侕侘侙侚侜侞侟価侢
+侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁俆俇俈俉俋俌
+俍俒俓俔俕俖俙俛俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿
+倁倂倃倄倅倇倈倊倎倐倓倕倖倗倛倝倞倠倢倣値倧倯倰倱
+倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偊偋偍偐偑偒偓偔
+偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲
+偳偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傗
+傚傛傜傝傞傟傠傡傤傦傪傫傮傯傰傱傶傸傹傼傽傿僀僁僃
+僄僆僇僈僊僋僌働僎僐僒僓僔僗僘僙僛僜僝僟僠僡僢僣僤
+僩僪僫僯僰僱僲僴僶僷僸僺僼僽僾僿儁儃儅儊儌儍儎儏儑
+儓儖儗儙儚儛儜儝儞儠儢儣儤儥儦儧儨儩儫儬儭儮儯儰儱
+儳儴儵儶儸儹儽儾兂兇兊兌兎兏児兓兗兘兙兛兝兞兟兠兡
+兣兤兦內兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝
+冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凎凐
+凒凓凔凕凖凗凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凲凴凷
+凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲
+刴刵刼刾剅剆剈剉剎剏剒剓剕剗剘剙剚剝剟剠剢剣剤剦剨
+剫剬剭剰剱剳剶剷剸剹剺剻剼剾劀劄劅劆劋劎劏劒劔劕劖
+劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勂勄
+勅勆勈勊勌勍勎勏勑勓勔勗勚勜勠勡勣勥勦勧勨勩勪勫勬
+勭勮勯勲勳勴勶勷勻勼勽匁匂匃匄匇匉匊匋匌匎匑匒匓匔
+匘匛匜匞匟匢匤匥匧匨匩匫匬匰匲匳匴匵匶匷⼖匸匼匽卂
+卄卆卋卌卍卐単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃
+厇厈厊厎厏厐厑厒厓厔厖厗厛厜厞厡厤厧厪厫厬厯厰厱厳
+厵厷厸厹厺厼厽厾叀叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叧
+叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿
+呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭
+呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡
+咢咥咮咰咲咵咶咷咹咺咾哃哅哊哋哖哘哛哠哢哣哤哫哬哯
+哰哱哴哵哶哷哸哹哻哾唀唂唃唅唈唊唋唌唍唎唒唓唕唖唗
+唘唙唚唜唝唞唟唡唥唦唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂
+啅啇啈啋啌啍啎啑啒啔啗啘啙啚啛啝啟啠啢啣啨啩啫啯啰
+啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢
+喣喤喥喦喨喩喫喭喯喰喴営喸喺喼喿嗀嗁嗂嗃嗈嗊嗋嗏嗐
+嗕嗗嗘嗙嗛嗞嗠嗢嗧嗭嗮嗰嗱嗴嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅嘇
+嘊嘋嘐嘑嘒嘓嘕嘙嘚嘝嘠嘡嘢嘥嘦嘨嘪嘫嘳嘷嘺嘼嘽嘾噀
+噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噞噟噡噣噧噭
+噮噰噳噵噷噺噽噾噿嚁嚂嚃嚄嚈嚉嚊嚋嚍嚐嚑嚒嚔嚖嚗嚘
+嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚧嚩嚪嚫嚬嚭嚰嚱嚲嚵嚸嚹嚺嚻
+嚽嚾嚿囃囄囆囇囋囍囎囏囐囒囓囕囖囘囙囜団囥囦囧囨囩
+囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圌圎圏圐圑圔圕圗圙圚
+圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅
+坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺
+坽坾坿垀垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟
+垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈
+埉埊埌埍埐埑埓埖埗埛埜埞埢埣埥埦埧埨埩埪埫埬埮埰埱
+埲埳埵埶埻埼埾埿堁堃堄堈堉堌堎堏堐堒堓堔堗堘堚堛堜
+堟堢堣堥堦堧堨堩堫堬堭堮堲堳堶堷堸堹堺堻堼堽堾堿塀
+塁塂塃塅塆塇塈塉塎塐塓塕塖塙塚塛塜塝塟塠塡塣塦塧塨
+塩塪塭塮塯塰塱塲塳塴塶塷塸塺塻塼塽塿墂墄墆墇墈墋墌
+墍墎墏墐墑墔墕墖増墘墛墝墠墡墢墣墤墥墦墧墪墫墬墭墯
+墰墱墲墴墵墶墷墸墹墺墽墿壀壂壃壄壆壈壉壊壋壌壍壎壏
+壐壒壔壖壗壛壜壝壡壣壥壦壧壨壪壭壱売壴壵壷壸壻壼壾
+壿夀夁夃夅夆夈変⼢夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夣
+夦夨夬夰夲夳夵夶夻夽夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝
+奞奟奡奣奤奦奧奨奫奭奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋
+妌妎妏妐妑妔妕妘妚妛妜妟妠妡妢妦妧妬妭妰妱妳妴妵妶
+妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟
+姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾
+娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪
+娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婂婃婄婅婇婈婋婌婍
+婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠婡婣婤婥婨婩婫婬
+婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌
+媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媨媩
+媫媬媭媮媯媰媱媴媶媷媹媺媻媼媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍
+嫎嫏嫐嫑嫓嫕嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳
+嫴嫶嫷嫸嫹嫺嫼嫽嫾嫿嬁嬂嬃嬄嬅嬆嬇嬊嬍嬎嬏嬐嬑嬒嬓
+嬔嬕嬘嬚嬛嬜嬝嬞嬟嬠嬢嬣嬤嬥嬦嬧嬨嬩嬫嬬嬭嬮嬯嬱嬳
+嬵嬶嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇孈孉孊孋孍孎孏孒孖
+孞孠孡孧孨孭孮孯孲孴孶孷孹孻孼孾宂宆宊宍宎宐宑宒宔
+宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏
+寑寔寕寖寗寘寙寚寛寜寠寣寪寭寯寱寲寳寴寷寽対尀専尃
+尅尌尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵
+尶屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屧屩屪屫屭屰屲
+屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝
+岞岟岠岤岥岦岧岨岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆
+峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣
+峧峩峫峬峮峯峱峲峳峵峷峸峹峺峼峾峿崀崁崄崅崈崉崊崋
+崌崏崐崑崒崓崕崘崙崚崜崝崟崠崡崢崣崥崨崪崫崯崰崱崲
+崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵑嵒嵓
+嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳
+嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶃嶅嶆嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑
+嶒嶓嶔嶕嶖嶘嶚嶛嶜嶞嶟嶡嶢嶣嶤嶥嶦嶨嶩嶪嶫嶬嶭嶮嶯
+嶰嶱嶲嶳嶴嶵嶶嶹嶻嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巌巎巏
+巐巑巓巕巖巗巘巙巚巜巟巠巣巤巪巬巭巵巶巸巹巺巻巼巿
+帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帨帩帪帬帯帰帲
+帴帵帹帺帾帿幁幆幇幈幉幊幋幍幎幏幐幑幒幓幖幙幚幜幝
+幠幤幥幦幧幨幩幪幭幮幯幰幱幵幷庁庂広庅庈庉庌庍庎庒
+庘庛庝庡庢庣庤庨庩庪庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂
+廃廄廅廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廤廥廦廧
+廩廫廭廮廯廰廱廲廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖
+弙弚弜弝弞弡弢弣弤弨弫弬弮弰弲弴弶強弸弻弽弾弿彁彂
+彃彄彅彇彉彊彋彍彏彑彔彚彛彜彞彟彠彣彥彧彨彫彮彯彲
+彴彵彶彸彺彽彾彿徃徆徍徎徏従徔徖徚徛徝徟徢徣徤徥徦
+徧徫徬徯徰徱徲徳徴徶徸徺徻徾徿忀忁忂忇忈忊忋忎忓忔
+忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇怈
+怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸
+怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟
+恠恡恥恦恮恱恲恴恵恷恾悀悁悂悅悆悇悈悊悋悎悏悐悑悓
+悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悷悹悺悽悾悿惀惁惂
+惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惢惣惤惥惪惵惷
+惸惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愝愞愡
+愢愥愨愩愪愬愭愮愯愰愱愲愳愵愶愸愹愺愻愼愽慀慁慂慃
+慄慅慆慇慉慍慏慐慒慓慔慖慗慙慛慜慞慠慡慥慦慩慬慭慯
+慱慲慴慸慹慺慻慼慽慾慿憀憁憃憄憅憆憇憈憉憌憍憏憓憕
+憖憗憘憙憛憜憞憟憠憡憢憣憥憦憪憭憯憰憱憳憴憵憸憹憺
+憻憼憽憿懀懁懃懄懅懆懍懎懏懐懓懕懖懗懘懙懚懛懜懝懠
+懡懢懤懥懧懩懪懫懬懭懮懯懰懱懳懴懹懻懽戁戂戃戄戅戉
+戓戙戜戝戞戠戣戦戨戩戫戭戯戱戵⼾戶戸戹戺戻戼扂扄扅
+扆扊扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸
+扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩
+抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁拃拋拏拑拕拝拞拠拡拤
+拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗
+挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挿捀捁捄捇捈
+捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捪捬捯捰捳捴捵捸
+捹捼捽捾捿掁掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦
+掫掯掱掲掵掶掹掻掽掿揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘
+揙換揜揝揟揢揤揥揦揧揨揫揬揯揰揱揳揵揷揹揺揻揼揾搃
+搄搆搇搈搉搊搎搑搒搕搖搘搙搚搝搟搢搣搤搥搧搨搩搫搮
+搯搰搱搲搳搵搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摓摕摖
+摗摙摚摛摝摠摡摢摣摤摥摦摨摪摫摬摮摰摱摲摴摵摷摼摽
+摾摿撀撁撃撆撉撊撋撌撍撎撏撐撔撗撘撚撛撜撝撠撡撢撦
+撧撨撪撯撱撴撶撹撽擃擆擈擉擌擏擑擓擕擖擙擛擜擝擟擡
+擣擥擧擨擩擪擫擭擮擳擵擶擸擹擽擿攁攂攃攅攇攈攊攋攌
+攍攎攐攑攓攕攗攚攜攞攟攠攡攦攧攨攩攭攰攱攲攳攷攺攼
+攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敘敚敜敟敠敡敤敥敧
+敨敩敪敭敮敯敱敳敶敹敺敻敼敽敾敿斀斁斄斅斆斈斉斊斍
+斎斏斒斔斖斘斚斝斞斠斢斣斦斨斪斮斱斲斳斴斵斶斸斺斻
+斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤
+旪旫旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖
+昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽
+昿晀晄晅晆晇晈晉晊晍晎晐晑晘晙晛晜晞晠晢晣晥晧晩晪
+晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暊暋暍暎暏暐暒
+暓暔暕暘暙暚暛暜暞暟暠暡暣暤暥暦暩暪暬暭暯暰暱暲暳
+暵暶暷暸暺暻暼暽暿曀曁曂曃曅曈曊曋曌曍曎曏曐曑曒曓
+曔曕曗曘曚曞曟曡曢曣曤曥曧曨曪曫曭曮曯曱曵曶曺曻曽
+朁朂朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朩
+朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙
+杚杛杝杢杣杤杦杧杫杬杮杴杶杸杹杺杻杽枀枂枃枅枆枈枊
+枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻
+枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦
+柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔
+栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵
+栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛桜桝桞桟桪桬桭桮桯桰
+桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑
+梒梔梕梖梙梚梛梜梞梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸
+梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棙棛棜
+棝棞棡棢棤棥棦棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀
+椂椃椄椆椇椈椉椊椌椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣
+椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄
+楅楆楇楈楉楋楌楍楎楏楐楑楒楕楖楘楙楛楜楟楡楢楤楥楧
+楩楪楬楯楰楲楳楴楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒
+榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榬榯榰榲榳榵榶榸榹
+榺榼榽榾槀槂槃槄槅槆槇槈槉槏槑槒槓槕槖槗様槙槚槜槝
+槞槡槢槣槤槥槦槨槩槪槫槬槮槯槰槱槴槵槶槷槸槹槺槻槼
+槾樀樃樄樆樇樈樉樋樌樍樎樏樐樑樒樔樕樖樚樛樜樝樠樢
+樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樻樼樿橀橁橂橃橅橆橉
+橊橌橍橎橏橑橒橓橔橕橖橗橚橜橝橞橠橣橤橦橧橨橩橪橫
+橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檊
+檋檌檍檏檒檓檕檖檘檙檚檛檝檞檟檡檤檥檦檧檨檪檭檮檰
+檱檲檴檵檶檷檹檺檼檽檾檿櫀櫁櫂櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍
+櫎櫏櫐櫑櫒櫔櫕櫖櫗櫘櫙櫜櫠櫡櫢櫣櫤櫥櫦櫩櫫櫭櫮櫯櫰
+櫱櫲櫴櫵櫶櫷櫹櫺櫼櫽櫾櫿欀欁欂欃欅欆欇欈欉欋欌欍欎
+欐欑欓欔欕欗欘欙欚欛欜欝欟欥欦欨欩欪欫欬欭欮欯欰欱
+欳欴欵欶欸欻欼欿歀歁歂歄歅歈歊歋歍歎歏歑歒歓歔歕歖
+歗歘歚歛歜歝歞歠歨歩歫歬歭歮歯歰歱歳歴歵歶歺歽歾歿
+殀殅殈殌殎殏殐殑殔殕殗殙殜殝殟殠殢殣殥殦殧殨殩殬殭
+殰殱殶殸殹殼殽殾毀毃毄毇毈毉毊毌毎毐毑毘毚毜毝毞毟
+毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾氀氁
+氂氃氄氉氊氋氎氒気氜氝氞氠氥氭氱氳氶氷氹氺氻氼氾氿
+汃汄汅汈汋汌汍汎汏汑汒汓汖汘汙汚汢汣汥汦汧汫汬汭汮
+汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜
+沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑
+泒泘泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊
+洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴
+洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫
+浬浭浰浱浲浳浵浶浺浻浽浾浿涀涁涃涄涆涊涋涍涏涐涒涖
+涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈
+淉淊淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淭淯淰淲
+淴淸淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟
+渢渧渨渪渮渰渱渳渵渶渷渹渻渼渽渿湀湁湂湅湆湇湈湉湊
+湋湌湏湐湑湒湕湗湙湚湜湝湠湡湢湣湤湥湦湧湨湩湪湬湭
+湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎
+溑溒溓溔溕溗溙溚溛溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸
+溹溼溾溿滀滃滆滈滉滊滍滐滒滖滘滙滛滜滝滣滧滪滫滭滮
+滰滱滳滵滶滺滻滼滽滾漀漃漄漅漇漈漊漋漌漍漎漐漑漒漖
+漗漘漙漛漜漝漞漟漡漥漦漧漨漮漰漴漵漷漹漺漻漼漽潀潂
+潃潄潅潈潉潊潌潎潏潐潒潓潕潖潗潚潛潝潟潠潡潣潥潧潨
+潩潪潫潬潱潳潵潶潹潻潽潾澁澂澃澅澊澋澏澐澑澒澓澔澕
+澖澘澙澚澛澝澞澟澢澣澥澦澨澪澫澬澭澯澰澲澴澵澷澸澺
+澻澼澽澾澿濄濅濆濇濈濊濋濌濍濎濏濐濓濔濖濗濙濚濜濝
+濢濣濥濦濧濨濩濪濬濭濲濳濴濵濶濷濸濹濻濽濿瀀瀁瀂瀃
+瀄瀇瀈瀊瀌瀍瀎瀐瀒瀓瀔瀖瀗瀙瀜瀞瀡瀢瀤瀥瀦瀩瀪瀫瀬
+瀭瀮瀯瀱瀳瀴瀶瀷瀸瀺瀻瀼瀽瀿灀灁灂灅灆灇灈灉灊灋灍
+灎灐灒灓灔灖灗灙灚灛灜灟灠灡灢灥灦灨灩灪灮灱灲灳灴
+灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟
+炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋
+烌烍烎烐烑烒烓烔烕烖烗烚烜烝烞烠烡烢烣烥烪烮烰烱烲
+烳烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒
+焔焗焛焜焝焞焟焠焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴焵焷
+焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煋煍煏煐煑煓煔煕煖
+煗煘煙煚煛煝煟煠煡煣煥煪煫煭煯煰煱煴煵煶煷煹煻煼煾
+煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熓熕熖熚熛熜熝熞熡
+熢熣熤熥熦熧熩熪熫熭熮熯熰熲熴熶熷熸熺熻熼熽熿燀燂
+燄燅燆燇燉燊燋燌燍燏燐燑燓燖燗燘燚燛燝燞燡燢燣燤燨
+燩燪燫燬燯燰燱燲燳燵燶燷燸燺燻燽燿爀爁爂爃爄爅爇爈
+爉爊爋爌爎爏爑爒爓爔爕爖爗爘爙爚爜爞爟爠爡爢爣爤爥
+爦爧爩爫爭爮爯爳爴爼牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓
+牔牕牗牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼犂
+犃犅犆犇犈犉犌犎犐犑犓犔犕犗犘犙犚犛犜犝犞犠犡犣犤
+犥犦犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狅狆狇狉狊狋狌狏
+狑狓狔狕狖狘狚狛狜狝狟狢狣狤狥狦狧狪狫狵狶狾狿猀猂
+猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭
+猯猰猲猳猵猺猼猽獀獂獃獆獇獈獉獊獋獌獎獏獑獓獔獕獖
+獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獩獮獱獳獴獶獹獽獿玁
+玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤
+玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇珋珌
+珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰
+珱珳珴珵珶珷珸珹珺珻珼珽珿琀琁琂琄琇琈琋琌琍琎琑琒
+琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹
+琺琻琽琾瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑌瑍瑎瑏瑐瑑瑒瑓瑔瑖瑘
+瑝瑠瑡瑢瑤瑥瑦瑧瑨瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺瑻瑼瑽瑿
+璂璄璅璆璈璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢
+璤璥璪璫璬璭璮璯璱璲璳璴璵璶璷璸璹璻璼璾璿瓀瓁瓂瓃
+瓄瓅瓆瓇瓈瓉瓋瓌瓍瓎瓐瓑瓓瓕瓖瓗瓘瓙瓛瓝瓟瓡瓥瓧瓨
+瓩瓪瓫瓬瓭瓰瓱瓲瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈
+甉甊甋甎甐甒甔甕甖甗甛甝甞甠甡產甤甦甧甪甮甴甶甹甼
+甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘畞畟畠畡畣畤
+畧畨畩畬畭畮畯異畱畳畵畷畺畻畼畽畾疀疁疂疄疅疈疉疊
+疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆
+痋痌痎痏痐痑痓痗痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷
+痸痺痻痽痾瘄瘆瘇瘈瘉瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘣瘨瘬瘮瘯
+瘱瘲瘶瘷瘹瘺瘽癁癄癅癈癊癋癎癏癐癑癒癓癕癗癙癚癛癝
+癠癡癦癨癪癳癴癵⽨癶癷癹発癿皀皁皃皅皉皊皌皍皏皐皒
+皔皕皗皘皛皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳
+皵皶皷皹皻皼皽皾盀盁盃盄盇盉盋盌盓盕盙盚盜盝盠盢盦
+盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐
+眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫眬眮眰眱眲眳
+眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睒睓睔睕睖睗睘睙
+睜睝睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂
+瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞙瞚瞛瞜瞝瞡瞣瞤瞦瞨瞫
+瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺瞾矀矁矂矃矄矅矆矈矉矊矋矌矎矏
+矐矑矒矓矔矕矖矘矙矝矞矟矠矡矤矦矨矪矰矱矲矴矵矷矹
+矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪
+砫砮砯砱砲砳砵砶砽砿硁硂硄硆硈硉硊硋硍硏硑硓硔硘硙
+硚硛硜硞硟硠硡硢硣硥硦硧硩硰硱硲硳硴硵硶硸硹硺硻硽
+硾硿碀碁碂碃碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦
+碨碪碫碬碮碯碵碶碷碻碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒
+磓磖磗磘磛磜磝磞磟磠磡磢磤磥磦磩磪磫磭磮磰磱磳磵磶
+磸磹磻磼磾磿礀礂礃礄礆礇礈礉礊礋礌礍礏礐礑礒礔礕礖
+礗礘礚礛礜礝礟礠礡礢礣礥礧礨礩礭礮礯礰礲礳礵礶礷礸
+礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣祤祦
+祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋
+禌禐禑禒禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禨禩禫
+禬禭禯禲禴禵禶禷⽱禸禼禿秂秄秅秇秈秊秊秌秎秏秐秓秔
+秖秗秙秚秛秜秝秞秠秡秢秥秨秪秬秮秱秲秳秴秵秶秷秹秺
+秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜稝稟稡
+稢稤稥稦稧稨稩稪稫稬稭稯稰稲稴稵稶稸稺稾穁穂穃穄穅
+穇穈穉穊穋穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穣穤穥穦
+穧穨穪穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐
+窓窔窙窚窛窞窡窢窣窤窧窫窯窰窱窲窴窵窷窸窹窻窼窽窾
+竀竁竂竃竆竉竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤
+竧竨竩竫竬竮竰竱竲竳竴竵竷竸竻竼竾笀笁笂笅笇笉笌笍
+笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭笯笰笲笴笵笶笷笹
+笻笽笿筀筁筂筃筄筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筨
+筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箌
+箎箏箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹
+箺箻箼箽箾箿篂篃篅篈篊篍篎篏篐篒篔篕篖篗篘篛篜篞篟
+篠篢篣篧篨篫篬篭篯篰篲篴篵篶篸篹篺篻篽篿簁簂簃簄簅
+簆簈簉簊簎簐簑簒簓簔簕簗簘簙簚簛簜簝簠簢簤簥簨簩簬
+簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼籂籄籅籆籇籈籉籊籋籎
+籏籐籑籒籓籔籕籖籗籘籙籚籛籝籞籡籢籣籥籦籧籨籫籭籯
+籰籱籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇粈粊粋粌粍粎粏
+粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺
+粻粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糡糢糣糤糥糦
+糩糪糫糬糭糮糱糳糵糷糺糼糽糿紁紃紌紎紏紑紒紖紘紝紞
+紟紣紤紥紦紨紩紪紬紭紮紴紵紶紷紸紻紽紾絁絃絅絇絈絉
+絊絋経絍絏絑絒絓絔絕絖絗絘絙絚絛絜絟絠絣絤絥絧絩絪
+絫絬絭絯絰絴絵絸絺絻絼絽絾絿綀綂綄綅綇綊綋綌綍綎綐
+綑綒綔綕綖綗綘継続綛綝綟綠綡綤綥綧綨綩綪綯綵綶綷綼
+緀緁緂緃緅緆緈緉緌緍緎総緐緓緕緖線緛緜緟緢緤緥緧緪
+緫緭緮緰緳緵緷緸緺緼緽緾緿縀縁縂縃縄縅縆縇縌縍縎縏
+縒縓縔縕縖縗縘縙縚縜縠縡縢縤縥縦縨縩縪縬縯縰縳縸縺
+縼縿繀繂繃繄繈繉繊繋繌繍繎繏繐繑繓繖繗繘繙繛繜繝繟
+繠繡繣繤繥繦繧繨繬繱繲繴繵繶繷繸繺繻繿纀纁纃纄纅纆
+纇纉纋纎纐纑纒纕纗纙纚纝纞纮纴纻纼绖绤绬绹缊缐缞缷
+缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罍罏罒罓罖罙罛罜罝罞
+罠罣罤罥罦罧罫罬罭罯罳罵罶罸罺罻罼罽罿羀羂羃羄羇羉
+羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羦羨羪羫羬羭羮羱
+羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑翓翖翗翙
+翚翛翜翝翞翢翣翤翧翨翪翫翬翭翯翲翴翵翶翷翸翺翽翾翿
+耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耭耯耰耲耴耹耺
+耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聗聙聛聜聝聟聠聡聢聣
+聤聥聦聧聨聫聬聭聮聴聸聺聻聼肁肂肈肊肍肎肏肐肑肒肔
+肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑
+胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脇脈脋脌
+脕脗脙脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷
+脺脻脼脽脿腀腁腂腃腄腅腇腉腍腏腒腗腘腛腜腝腞腟腢腣
+腤腨腪腬腯腲腳腵腶腷膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔
+膕膖膗膙膞膟膡膢膤膥膧膫膬膭膮膯膰膱膲膴膵膶膷膸膹
+膼臄臅臇臈臋臎臐臑臒臓臔臕臖臗臙臛臜臝臞臡臢臤臥臦
+臩臫臮臯臰臱臲臵臶臷臸臹臽臿舃舋舎舏舑舓舕舖舗舘舙
+舚舝舠舤舥舦舧舩舮舲舺舼舽舿艀艁艂艃艅艆艈艊艌艍艎
+艐艑艒艓艔艕艖艗艛艜艝艞艠艡艢艣艥艧艩艪艬艭艵艶⾋
+艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵
+芶芺芼芿苀苂苃苅苆苉苐苖苙苚苝苢苨苩苪苬苭苮苰苲苳
+苵苶苸苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣
+茤茥茦茩茪茮茰茲茷茻茽茾茿荁荂荄荅荈荊荋荌荍荎荓荕
+荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莋
+莌莍莏莐莑莔莕莗莙莚莝莟莡莣莤莥莦莬莭莮莯莵莻莾莿
+菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨
+菫菬菭菮菳菴菵菶菷菺菻菼菾菿萀萂萅萈萉萐萒萓萔萕萖
+萗萙萚萛萞萟萠萡萢萣萩萪萫萭萮萯萰萲萳萴萶萷萹萺萻
+萾萿葀葁葂葃葄葅葇葈葊葋葌葍葎葏葐葓葔葕葖葘葝葞葟
+葠葢葥葧葨葪葮葰葲葴葹葻葼葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏
+蒐蒑蒒蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮
+蒰蒱蒳蒵蒶蒷蒻蒾蓂蓃蓅蓆蓇蓈蓌蓎蓏蓒蓔蓕蓗蓘蓙蓚蓛
+蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓾蔀蔁
+蔂蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔕蔖蔘蔙蔛蔜蔝蔠蔢蔤
+蔥蔧蔨蔩蔪蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕂蕄蕅蕇蕋蕌蕍蕏
+蕐蕑蕔蕗蕚蕛蕜蕝蕟蕠蕡蕣蕥蕦蕧蕫蕬蕮蕯蕰蕱蕳蕵蕶蕸
+蕼蕽蕿薀薁薂薃薆薉薋薍薎薐薒薓薕薖薗薘薙薚薝薞薠薡
+薢薣薥薧薫薬薭薱薲薳薴薵薶薸薻薼薽薾薿藀藂藃藄藅藆
+藇藈藊藋藌藑藒藔藖藗藘藙藚藛藞藟藠藡藢藣藦藧藨藫藬
+藭藮藯藰藱藲藳藵藷藸藼藽藾蘀蘁蘂蘃蘈蘉蘊蘌蘍蘎蘏蘐
+蘒蘓蘔蘕蘗蘘蘙蘛蘜蘝蘟蘠蘡蘣蘤蘥蘦蘨蘪蘫蘬蘮蘯蘰蘱
+蘲蘳蘴蘵蘶蘷蘹蘻蘽蘾虀虁虂虃虄虅虆虇虈虉虊虋虌虒虓
+虖虗虘虙虛虝虠虡虣虤虥虦虨虩虪虭虯虰虲虳虴虵虶虷虸
+蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥
+蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖
+蛗蛚蛜蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛻蛼蛽蛿蜁蜄
+蜅蜋蜌蜎蜏蜐蜑蜔蜖蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲
+蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝖蝘
+蝚蝛蝜蝝蝞蝟蝡蝢蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵蝷蝹蝺蝿螀
+螁螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螠螡螣螤螥
+螦螧螩螪螮螰螱螲螴螶螷螸螹螼螾螿蟁蟂蟃蟅蟇蟉蟌蟍蟏
+蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟤蟦蟧蟨蟩蟫蟭蟰蟱蟳蟴
+蟵蟷蟸蟺蟼蟽蟿蠀蠁蠂蠄蠇蠈蠉蠋蠌蠍蠎蠏蠒蠔蠗蠘蠙蠚
+蠜蠝蠞蠠蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠳蠴蠵蠷蠸蠺蠽蠾
+蠿衁衂衃衇衈衉衋衎衏衐衑衒衕衖衘衚衜衞衟衠衦衧衪衭
+衯衱衳衴衵衶衸衺衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗
+袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪袬袮袯袰袲袳袴袵袶
+袸袹袺袻袽袾袿裀裃裄裇裈裋裌裍裐裑裓裖裗裚裛裞裠裡
+裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻裿褀褁褃褄褅褆褈褉褋
+褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮
+褯褱褵褷褹褺褼褽褾褿襀襂襃襅襆襈襉襊襋襌襍襎襏襐襑
+襒襓襔襕襗襘襙襚襛襜襡襢襣襥襧襨襩襫襭襮襰襱襳襴襵
+襶襷襸襹襺襼襽⾑襾覀覂覄覅覇覈覉覊覌覍覎覐覑覒覔覕
+覗覙覚覛覜覝覞覟覠覢覣覤覥覧覨覩覫覭覮覰覱観覴覵覶
+覸覹覻覼覾觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬
+觭觮觰觱觲觵觷觹觺觻觼觽觾觿訄訅訆訉訋訍訏訑訒訔託
+訙訚訜訞訠訡訢訤訦訧訨訩訫訬訮訯訰訲訳訵訷訸訹註証
+訽訿詀詂詃詄詅詇詉詊詋詌詍詏詑詓詖詗詙詚詜詝詟詠詤
+詥詧詨詪詯詴詶詷詸詺詻詽詾誀誁誂誃誈誋誌誎誏誐誔誖
+誗誙誛誜誝誟誢誧誩說誫読誮誯誱誳誴誵誷誸誺誻誽誾諀
+諁諃諅諆諈諊諌諎諐諓諔諕諘諙諚諝諟諠諡諣諥諨諩諪諬
+諯諰諲諴諵諹諻諽諿謃謆謈謉謋謌謍謏謑謒謓謕謘謜謞謟
+謠謢謣謤謥謧謩謪謮謯謰謱謲謴謵謶謷謸謺謻謼謽謿譀譁
+譂譃譄譅譆譇譈譊譋譌譍譐譑譒譓譔譕譗譛譝譞譟譠譡譢
+譣譤譥譧譨譩譪譭譮譱譲譳譵譶譸譹譺譻譼譾譿讁讂讃讄
+讅讆讇讈讉讋讌讍讏讐讑讔讗讘讙讚讛讝讟讬讱讻诇诐诪
+谉谞谸谹谺谻谼谽谾谿豀豂豃豄豅豊豋豍豎豏豑豒豓豔豖
+豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵
+豶豷豻豼豽豾豿貀貁貃貄貆貇貈貋貍貎貏貐貑貒貓貕貖貗
+貙貚貛貜貟貣貤貥貦貭貮貱貵貹貾賆賉賋賌賍賎賏賐賔賖
+賗賘賙賛賝賟賥賨賩賮賯賰賱賲賳賵賶賷賸賹賿贀贁贂贃
+贆贇贉贌贎贑贒贓贔贕贗贘贙贚贠赑赒赗赟赥赨赩赪赬赮
+赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓
+趖趗趘趚趛趜趝趞趠趡趢趤趥趦趧趩趪趫趬趭趮趯趰趶趷
+趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔跕跘跙跜跠跡跢跥跦
+跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踑踒
+踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踶踷踸踻
+踼踾踿蹃蹅蹆蹍蹎蹏蹐蹓蹔蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹤
+蹥蹧蹨蹪蹫蹮蹱蹳蹵蹷蹸蹹蹻蹽蹾躀躂躃躄躆躈躌躎躕躖
+躗躘躙躛躝躟躠躢躣躤躧躨躩躭躮躰躱躳躴躵躶躷躸躹躻
+躼躽躾躿軁軂軃軄軅軆軇軈軉軏軐軑軓軕軖軗軘軙軚軜軝
+軞軠軡転軣軥軦軧軨軩軪軬軭軮軯軰軱軳軴軵軶軷軽軿輀
+輁輂輄輆輈輋輌輍輎輏輐輑輓輖輗輘輙輚輠輡輢輣輤輧輨
+輫輬輭輮輰輱輲輴輵輶輷輹輺輼輽轀轁轃轇轈轊轋轌轏轐
+轑轒轓轕轖轗轘轙轚轛轜轝轞轠轣轥轪辀辌辒辝辠辡辢辤
+辥辧辪辬辳辴⾡辵辷辸辺辻込辿迀迃迆迉迊迋迌迍迏迒迖
+迗迚迠迡迣迧迬迯迱迲迵迶迺迻迼迾迿逇逈逌逎逓逘逜逤
+逥逧逨逩逪逫逬逰週逳逴逷逹逺逽逿遀遃遅遆遈遉遊遌遖
+遙遚遝遟遡遤遦遧遪遫遬遯遰遱遳遶遹遻遾邅邆邉邌邍邎
+邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀郂郃郆
+郈郉郋郌郍郒郔郕郖郘郙郚郞郠郣郤郥郩郪郬郮郰郱郲郳
+郶郷郹郺郻郼郿鄀鄁鄃鄅鄇鄈鄊鄋鄌鄍鄎鄏鄐鄑鄓鄕鄗鄘
+鄚鄛鄜鄝鄟鄠鄡鄤鄥鄦鄨鄩鄪鄫鄬鄮鄳鄵鄷鄸鄻鄼鄽鄾鄿
+酀酁酂酄酅酇酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻
+酼醀醁醂醃醄醆醈醊醎醏醓醔醕醗醘醙醝醞醟醠醡醤醥醦
+醧醨醩醰醱醲醳醶醷醸醹醻醼醽醾醿釂釄⾤釆釈釐釖釚釛
+釞釟釠釡釢釥釦釨釪釫釬釭釮釯釰釱釲釳釴釶釸釻釼釽釾
+釿鈂鈃鈅鈆鈇鈊鈋鈌鈏鈒鈓鈖鈗鈘鈙鈚鈛鈜鈝鈟鈠鈡鈢鈤
+鈨鈩鈪鈫鈬鈭鈯鈱鈲鈵鈶鈻鈼鉁鉂鉃鉄鉆鉇鉊鉋鉌鉎鉏鉐
+鉒鉓鉔鉖鉘鉙鉜鉝鉟鉠鉡鉣鉤鉥鉧鉨鉩鉪鉫鉮鉯鉰鉱鉲鉳
+鉵鉶鉷鉹鉼鉽鉾銁銂銄銆銇銈銉銊銋銌銍銏銐銒銔銕銗銙
+銛銝銞銟銡銢銤銧銭銯銰銲銳銴銵銶銸銺銽銾銿鋀鋂鋄鋆
+鋉鋊鋋鋍鋎鋐鋑鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋞鋠鋡鋢鋧鋩鋫鋬
+鋲鋳鋴鋵鋷鋹鋺鋻鋽鋾鋿錀錂錃錄錅錉錊錋錌錍錎錏錑錓
+錔錖錗錜錝錞錡錣錤錥錧錩錪錬錭錰錱錴錵錷錹錺錻錼錽
+錿鍂鍄鍅鍈鍉鍊鍌鍎鍏鍐鍑鍒鍓鍕鍖鍗鍙鍚鍜鍝鍞鍟鍠鍡
+鍢鍣鍦鍧鍨鍫鍭鍮鍯鍱鍲鍳鍴鍷鍸鍹鍻鍼鍽鍿鎀鎁鎃鎅鎆
+鎈鎉鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎗鎙鎚鎛鎜鎝鎞鎟鎠鎡鎤鎥鎨
+鎫鎭鎯鎱鎲鎴鎶鎷鎹鎺鎻鎼鎽鎾鏀鏁鏂鏄鏅鏆鏉鏋鏎鏏鏐
+鏒鏓鏔鏕鏙鏚鏛鏠鏣鏥鏦鏧鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏶
+鏸鏺鏻鏼鏽鏾鏿鐀鐁鐂鐄鐅鐆鐇鐈鐉鐊鐌鐍鐎鐏鐑鐕鐖鐗
+鐚鐛鐜鐞鐟鐡鐢鐣鐤鐥鐩鐪鐫鐬鐭鐯鐰鐱鐴鐶鐷鐹鐻鐼鐽
+鑀鑁鑂鑃鑅鑆鑇鑈鑉鑋鑍鑎鑏鑐鑑鑓鑕鑖鑗鑘鑙鑚鑛鑜鑝
+鑞鑟鑡鑢鑤鑦鑧鑨鑩鑪鑬鑮鑯鑱鑳鑴鑵鑶鑸鑺鑻钀钁钂钃
+钄钑钖钘铇铏铓铔铚铦铻锜锠锧锳锽镃镈镋镕镚镠镮镴镵
+镸镹镺镻镼镽镾閁閄閅閇閈閊閍閐閒閕閖閗閙閚閛閜閝閞
+閟閠関閦閧閪閮閯閰閱閳閴閵閷閸閺闀闁闂闄闅闇闉闍闎
+闏闑闒闓闗闘闙闚闛闝闟闠闣闤闦闧闬闿阇阓阘阛阞阠阣
+阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖
+陗陙陚陜陞陠陥陦陫陭陮陯陱陹険陻陼陾陿隀隁隂隃隄隇
+隉隌隑隒隓隖隚隝隞隟隠隡隢隣隣隤隥隦隩隫隬隭隮隯隲
+隵隷隺隿雂雃雈雊雋雐雑雓雔雗雘雚雝雞雟雡雤雥雦雧雫
+雬雭雮雰雱雴雵雸雺雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘
+霙霚霛霝霟霠霡霢霣霤霥霦霨霩霫霬霮霯霱霳霴霵霶霷霺
+霻霼霿靀靁靃靅靆靇靉靊靋靌靍靎靏靐⾭靑靔靕靗靘靜靝
+靟靣靤靦靧靪靫靬靭靮靯靰靱靲靵靷靸靹靺靻靽靾靿鞀鞁
+鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝鞞鞟鞡鞢鞤
+鞥鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞾鞿韀韁韂韄韅
+韇韈韊韍韎韏韐韑韒韔韕韖韗韘韚韛韝韟韠韡韢韣韤韥韨
+韮韯韰韱韲韴韷韸韹韺韻韼韽韾頀頄頉頋頍頔頕頖頙頚頛
+頝頞頟頠頢頣頥頧頨頩頪頫頬頮頯頱頲頳頴頵頶頹頺頼頾
+頿顀顁顂顃顄顅顇顈顉顊顋顏顐顑顒顕顖顗顚顜顝顟顠顡
+顣顤顦顨顩顪顭顮顲颋颎颒颕颙颣颩颪颫颬颭颰颲颴颵颷
+颸颹颺颻颽颾颿飀飁飂飃飅飇飉飊飋飌飍飏飐飔飖飗飜飝
+飡飣飤飥飦飬飮飰飱飳飵飶飷飸飹飺飻飿餀餁餂餄餆餇餈
+餋餎餏餔餕餖餗餙餚餜餝餟餠餢餣餤餥餦餧餩餪餫餬餭餯
+餰餱餲餴餵餶餸餹餺餻餽饀饁饂饄饆饇饍饎饏饐饓饖饘饙
+饚饛饝饟饠饡饤饦饳饸饹饻饾馂馃馉馌馎馚馛馜馝馞馟馠
+馡馢馣馤馦馧馩馪馫馯馰馲馵馶馷馸馹馺馻馼馽馾馿駀駂
+駃駄駅駆駇駈駉駊駋駌駍駎駏駓駖駗駚駜駞駠駣駤駥駦駧
+駨駩駪駫駬駮駯駰駲駳駴駵駶駷駸駹駺駻駼駽駾騀騂騃騄
+騆騇騈騉騊騋騌騐騑騒験騔騕騗騘騚騛騜騝騞騟騠騡騢騣
+騤騥騦騧騨騩騪騬騯騱騲騳騴騵騹騺騻騼騽騿驆驇驈驉驋
+驌驎驐驑驒驓驔驖驘驙驜驝驞驠驡驣驦驧驨驩驫驲骃骉骍
+骎骔骕骙骦骩骪骫骬骭骮骲骳骴骵骹骻骽骾骿髃髄髆髇髈
+髉髊髍髎髐髗髙髚髛髜髝髞髠髢髣髤髥髧髨髩髪髬髰髱髲
+髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬇鬉鬊鬋鬌鬎鬐鬑鬒
+鬔鬕鬖鬗鬘鬙鬛鬜鬝鬞鬠鬡鬤鬦鬨鬪鬫鬬鬭鬰鬳鬴鬵鬶鬷
+鬸鬹鬺鬽鬾鬿魀魆魊魋魌魐魒魓魕魖魗魙魛魜魝魞魟魠魡
+魢魣魤魥魦魧魨魩魪魫魬魭魮魰魱魲魳魵魶魸魹魺魻魼魽
+魾魿鮀鮂鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮏鮓鮔鮕鮖鮗鮘鮙鮛鮜鮟
+鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮬鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺鮻鮼
+鮽鮾鮿鯂鯃鯄鯅鯆鯈鯋鯌鯍鯎鯏鯐鯑鯒鯓鯕鯗鯘鯙鯚鯜鯞
+鯟鯠鯣鯥鯦鯩鯬鯭鯮鯯鯱鯲鯳鯵鯶鯷鯸鯹鯺鯻鯼鯾鰀鰁鰂
+鰃鰄鰅鰆鰇鰊鰋鰌鰎鰏鰑鰔鰕鰖鰗鰘鰙鰚鰛鰜鰝鰞鰟鰡鰢
+鰤鰦鰧鰪鰫鰬鰮鰯鰰鰴鰶鰸鰺鰼鰽鰿鱀鱁鱂鱃鱄鱆鱇鱊鱋
+鱌鱍鱎鱏鱐鱑鱓鱕鱙鱚鱛鱜鱞鱠鱡鱢鱣鱤鱥鱦鱨鱩鱪鱫鱬
+鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱹鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘
+鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳣鳤鳦鳧鳨鳪
+鳫鳭鳮鳯鳰鳱鳲鳵鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴈鴊
+鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴖鴗鴘鴙鴚鴜鴞鴠鴡鴢鴤鴥鴧鴩鴪
+鴫鴬鴭鴮鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴼鴽鴾鵀鵁鵃鵄鵅鵆鵇鵈
+鵉鵊鵋鵌鵍鵎鵏鵐鵔鵕鵖鵗鵘鵙鵚鵛鵞鵟鵢鵣鵤鵥鵦鵧鵨
+鵩鵫鵭鵮鵰鵱鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁鶂鶃鶄鶅
+鶆鶈鶊鶋鶌鶍鶎鶏鶐鶑鶒鶔鶕鶖鶗鶙鶛鶜鶝鶞鶟鶠鶡鶢鶣
+鶤鶦鶧鶨鶪鶫鶬鶭鶮鶰鶱鶲鶳鶵鶶鶷鶸鶹鶺鶽鶾鶿鷁鷃鷅
+鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷔鷕鷖鷘鷛鷜鷝鷞鷟鷠鷡鷢
+鷣鷤鷧鷨鷩鷪鷫鷬鷭鷮鷰鷱鷴鷵鷶鷷鷻鷼鷽鷾鷿鸀鸁鸂鸃
+鸄鸅鸆鸇鸈鸉鸊鸋鸍鸎鸏鸐鸑鸒鸓鸔鸖鸗鸘鸙鸜鸤鸧鸮鸰
+鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹶鹷鹸鹻
+麀麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麘麙麚麛麜麞麠麡
+麢麣麤麧麨麪麫麬麭麮麰麱麲麳麶麷麹麺麼麿黀黁黂⿈黃
+黅黆黇黈黊黋黐黒黓黕黖黗黙黚黡黣黤黦黫黬黭黮黰黱黳
+黵黶黸黺鼀鼁鼂鼃鼄鼅鼆鼇鼈鼊鼌鼏鼑鼒鼔鼖鼘鼚鼛鼜鼝
+鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱鼲鼳鼴鼵鼶鼸鼺鼼鼿
+齀齁齂齃齅齆齇齈齉齌齍齎齓齕齖齗齘齚齛齝齞齢齤齥齧
+齨齩齫齭齮齯齰齱齳齴齵齶齸齹齺齻齼齽齾龁龂龎龏龑龒
+龓龖龗龘龝龞龡龢龣龤龥郎嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧
+﨨﨩⺁𠂇𠂉𠃌⺄㑳㑇⺈⺋龴㖞㘚
+㘎⺌⺗㥮㤘龵㧏㧟㩳㧐龶龷
+㭎㱮㳠⺧𡗗龸⺪䁖䅟⺮䌷⺳⺶
+⺷𢦏䎱䎬⺻䏝䓖䙡䙌龹𠔉䜣䜩
+䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛
+䦷䦶龺𠦝𤇾䲣䲟䲠䲡䱷䲢䴓䴔
+䴕䴖䴗䴘䴙䶮龻
+
+Adobe-GB1-4
+
+€¥〿ゕゖゔヷヹヸヺ〳〴〵〸〹〺ㄪㄫㄬㆠㆡㆢㆣㆤ
+ㆥㆦㆧㆨㆩㆪㆫㆬㆭㆮㆯㆰㆱㆲㆳㆴㆵㆶㆷ⺀⺂⺃⺅⺆⺇
+⺉⺊⺍⺎⺏⺐⺑⺒⺓⺔⺕⺖⺘⺙⺛⺜⺝⺞⺟⺠⺡⺢⺣⺤⺥
+⺦⺨⺩⺫⺬⺭⺯⺰⺱⺲⺴⺵⺸⺹⺺⺼⺽⺾⺿⻀⻁⻂⻃⻄⻅
+⻆⻇⻈⻉⻋⻌⻍⻎⻏⻐⻑⻒⻓⻔⻕⻖⻗⻘⻙⻚⻛⻜⻝⻞⻟
+⻠⻡⻢⻣⻤⻥⻦⻧⻨⻩⻪⻫⻬⻭⻮⻯⻰⻱⻲⻳㐀㐁㐂㐃㐄
+㐅㐆㐇㐈㐉㐊㐋㐌㐍㐎㐏㐐㐑㐒㐓㐔㐕㐖㐗㐘㐙㐚㐛㐜㐝
+㐞㐟㐠㐡㐢㐣㐤㐥㐦㐧㐨㐩㐪㐫㐬㐭㐮㐯㐰㐱㐲㐳㐴㐵㐶
+㐷㐸㐹㐺㐻㐼㐽㐾㐿㑀㑁㑂㑃㑄㑅㑆㑈㑉㑊㑋㑌㑍㑎㑏㑐
+㑑㑒㑓㑔㑕㑖㑗㑘㑙㑚㑛㑜㑝㑞㑟㑠㑡㑢㑣㑤㑥㑦㑧㑨㑩
+㑪㑫㑬㑭㑮㑯㑰㑱㑲㑴㑵㑶㑷㑸㑹㑺㑻㑼㑽㑾㑿㒀㒁㒂㒃
+㒄㒅㒆㒇㒈㒉㒊㒋㒌㒍㒎㒏㒐㒑㒒㒓㒔㒕㒖㒗㒘㒙㒚㒛㒜
+㒝㒞㒟㒠㒡㒢㒣㒤㒥㒦㒧㒨㒩㒪㒫㒬㒭㒮㒯㒰㒱㒲㒳㒴㒵
+㒶㒷㒸㒹㒺㒻㒼㒽㒾㒿㓀㓁㓂㓃㓄㓅㓆㓇㓈㓉㓊㓋㓌㓍㓎
+㓏㓐㓑㓒㓓㓔㓕㓖㓗㓘㓙㓚㓛㓜㓝㓞㓟㓠㓡㓢㓣㓤㓥㓦㓧
+㓨㓩㓪㓫㓬㓭㓮㓯㓰㓱㓲㓳㓴㓵㓶㓷㓸㓹㓺㓻㓼㓽㓾㓿㔀
+㔁㔂㔃㔄㔅㔆㔇㔈㔉㔊㔋㔌㔍㔎㔏㔐㔑㔒㔓㔔㔕㔖㔗㔘㔙
+㔚㔛㔜㔝㔞㔟㔠㔡㔢㔣㔤㔥㔦㔧㔨㔩㔪㔫㔬㔭㔮㔯㔰㔱㔲
+㔳㔴㔵㔶㔷㔸㔹㔺㔻㔼㔽㔾㔿㕀㕁㕂㕃㕄㕅㕆㕇㕈㕉㕊㕋
+㕌㕍㕎㕏㕐㕑㕒㕓㕔㕕㕖㕗㕘㕙㕚㕛㕜㕝㕞㕟㕠㕡㕢㕣㕤
+㕥㕦㕧㕨㕩㕪㕫㕬㕭㕮㕯㕰㕱㕲㕳㕴㕵㕶㕷㕸㕹㕺㕻㕼㕽
+㕾㕿㖀㖁㖂㖃㖄㖅㖆㖇㖈㖉㖊㖋㖌㖍㖎㖏㖐㖑㖒㖓㖔㖕㖖
+㖗㖘㖙㖚㖛㖜㖝㖟㖠㖡㖢㖣㖤㖥㖦㖧㖨㖩㖪㖫㖬㖭㖮㖯㖰
+㖱㖲㖳㖴㖵㖶㖷㖸㖹㖺㖻㖼㖽㖾㖿㗀㗁㗂㗃㗄㗅㗆㗇㗈㗉
+㗊㗋㗌㗍㗎㗏㗐㗑㗒㗓㗔㗕㗖㗗㗘㗙㗚㗛㗜㗝㗞㗟㗠㗡㗢
+㗣㗤㗥㗦㗧㗨㗩㗪㗫㗬㗭㗮㗯㗰㗱㗲㗳㗴㗵㗶㗷㗸㗹㗺㗻
+㗼㗽㗾㗿㘀㘁㘂㘃㘄㘅㘆㘇㘈㘉㘊㘋㘌㘍㘏㘐㘑㘒㘓㘔㘕
+㘖㘗㘘㘙㘛㘜㘝㘞㘟㘠㘡㘢㘣㘤㘥㘦㘧㘨㘩㘪㘫㘬㘭㘮㘯
+㘰㘱㘲㘳㘴㘵㘶㘷㘸㘹㘺㘻㘼㘽㘾㘿㙀㙁㙂㙃㙄㙅㙆㙇㙈
+㙉㙊㙋㙌㙍㙎㙏㙐㙑㙒㙓㙔㙕㙖㙗㙘㙙㙚㙛㙜㙝㙞㙟㙠㙡
+㙢㙣㙤㙥㙦㙧㙨㙩㙪㙫㙬㙭㙮㙯㙰㙱㙲㙳㙴㙵㙶㙷㙸㙹㙺
+㙻㙼㙽㙾㙿㚀㚁㚂㚃㚄㚅㚆㚇㚈㚉㚊㚋㚌㚍㚎㚏㚐㚑㚒㚓
+㚔㚕㚖㚗㚘㚙㚚㚛㚜㚝㚞㚟㚠㚡㚢㚣㚤㚥㚦㚧㚨㚩㚪㚫㚬
+㚭㚮㚯㚰㚱㚲㚳㚴㚵㚶㚷㚸㚹㚺㚻㚼㚽㚾㚿㛀㛁㛂㛃㛄㛅
+㛆㛇㛈㛉㛊㛋㛌㛍㛎㛏㛐㛑㛒㛓㛔㛕㛖㛗㛘㛙㛚㛛㛜㛝㛞
+㛟㛠㛡㛢㛣㛤㛥㛦㛧㛨㛩㛪㛫㛬㛭㛮㛯㛰㛱㛲㛳㛴㛵㛶㛷
+㛸㛹㛺㛻㛼㛽㛾㛿㜀㜁㜂㜃㜄㜅㜆㜇㜈㜉㜊㜋㜌㜍㜎㜏㜐
+㜑㜒㜓㜔㜕㜖㜗㜘㜙㜚㜛㜜㜝㜞㜟㜠㜡㜢㜣㜤㜥㜦㜧㜨㜩
+㜪㜫㜬㜭㜮㜯㜰㜱㜲㜳㜴㜵㜶㜷㜸㜹㜺㜻㜼㜽㜾㜿㝀㝁㝂
+㝃㝄㝅㝆㝇㝈㝉㝊㝋㝌㝍㝎㝏㝐㝑㝒㝓㝔㝕㝖㝗㝘㝙㝚㝛
+㝜㝝㝞㝟㝠㝡㝢㝣㝤㝥㝦㝧㝨㝩㝪㝫㝬㝭㝮㝯㝰㝱㝲㝳㝴
+㝵㝶㝷㝸㝹㝺㝻㝼㝽㝾㝿㞀㞁㞂㞃㞄㞅㞆㞇㞈㞉㞊㞋㞌㞍
+㞎㞏㞐㞑㞒㞓㞔㞕㞖㞗㞘㞙㞚㞛㞜㞝㞞㞟㞠㞡㞢㞣㞤㞥㞦
+㞧㞨㞩㞪㞫㞬㞭㞮㞯㞰㞱㞲㞳㞴㞵㞶㞷㞸㞹㞺㞻㞼㞽㞾㞿
+㟀㟁㟂㟃㟄㟅㟆㟇㟈㟉㟊㟋㟌㟍㟎㟏㟐㟑㟒㟓㟔㟕㟖㟗㟘
+㟙㟚㟛㟜㟝㟞㟟㟠㟡㟢㟣㟤㟥㟦㟧㟨㟩㟪㟫㟬㟭㟮㟯㟰㟱
+㟲㟳㟴㟵㟶㟷㟸㟹㟺㟻㟼㟽㟾㟿㠀㠁㠂㠃㠄㠅㠆㠇㠈㠉㠊
+㠋㠌㠍㠎㠏㠐㠑㠒㠓㠔㠕㠖㠗㠘㠙㠚㠛㠜㠝㠞㠟㠠㠡㠢㠣
+㠤㠥㠦㠧㠨㠩㠪㠫㠬㠭㠮㠯㠰㠱㠲㠳㠴㠵㠶㠷㠸㠹㠺㠻㠼
+㠽㠾㠿㡀㡁㡂㡃㡄㡅㡆㡇㡈㡉㡊㡋㡌㡍㡎㡏㡐㡑㡒㡓㡔㡕
+㡖㡗㡘㡙㡚㡛㡜㡝㡞㡟㡠㡡㡢㡣㡤㡥㡦㡧㡨㡩㡪㡫㡬㡭㡮
+㡯㡰㡱㡲㡳㡴㡵㡶㡷㡸㡹㡺㡻㡼㡽㡾㡿㢀㢁㢂㢃㢄㢅㢆㢇
+㢈㢉㢊㢋㢌㢍㢎㢏㢐㢑㢒㢓㢔㢕㢖㢗㢘㢙㢚㢛㢜㢝㢞㢟㢠
+㢡㢢㢣㢤㢥㢦㢧㢨㢩㢪㢫㢬㢭㢮㢯㢰㢱㢲㢳㢴㢵㢶㢷㢸㢹
+㢺㢻㢼㢽㢾㢿㣀㣁㣂㣃㣄㣅㣆㣇㣈㣉㣊㣋㣌㣍㣎㣏㣐㣑㣒
+㣓㣔㣕㣖㣗㣘㣙㣚㣛㣜㣝㣞㣟㣠㣡㣢㣣㣤㣥㣦㣧㣨㣩㣪㣫
+㣬㣭㣮㣯㣰㣱㣲㣳㣴㣵㣶㣷㣸㣹㣺㣻㣼㣽㣾㣿㤀㤁㤂㤃㤄
+㤅㤆㤇㤈㤉㤊㤋㤌㤍㤎㤏㤐㤑㤒㤓㤔㤕㤖㤗㤙㤚㤛㤜㤝㤞
+㤟㤠㤡㤢㤣㤤㤥㤦㤧㤨㤩㤪㤫㤬㤭㤮㤯㤰㤱㤲㤳㤴㤵㤶㤷
+㤸㤹㤺㤻㤼㤽㤾㤿㥀㥁㥂㥃㥄㥅㥆㥇㥈㥉㥊㥋㥌㥍㥎㥏㥐
+㥑㥒㥓㥔㥕㥖㥗㥘㥙㥚㥛㥜㥝㥞㥟㥠㥡㥢㥣㥤㥥㥦㥧㥨㥩
+㥪㥫㥬㥭㥯㥰㥱㥲㥳㥴㥵㥶㥷㥸㥹㥺㥻㥼㥽㥾㥿㦀㦁㦂㦃
+㦄㦅㦆㦇㦈㦉㦊㦋㦌㦍㦎㦏㦐㦑㦒㦓㦔㦕㦖㦗㦘㦙㦚㦛㦜
+㦝㦞㦟㦠㦡㦢㦣㦤㦥㦦㦧㦨㦩㦪㦫㦬㦭㦮㦯㦰㦱㦲㦳㦴㦵
+㦶㦷㦸㦹㦺㦻㦼㦽㦾㦿㧀㧁㧂㧃㧄㧅㧆㧇㧈㧉㧊㧋㧌㧍㧎
+㧑㧒㧓㧔㧕㧖㧗㧘㧙㧚㧛㧜㧝㧞㧠㧡㧢㧣㧤㧥㧦㧧㧨㧩㧪
+㧫㧬㧭㧮㧯㧰㧱㧲㧳㧴㧵㧶㧷㧸㧹㧺㧻㧼㧽㧾㧿㨀㨁㨂㨃
+㨄㨅㨆㨇㨈㨉㨊㨋㨌㨍㨎㨏㨐㨑㨒㨓㨔㨕㨖㨗㨘㨙㨚㨛㨜
+㨝㨞㨟㨠㨡㨢㨣㨤㨥㨦㨧㨨㨩㨪㨫㨬㨭㨮㨯㨰㨱㨲㨳㨴㨵
+㨶㨷㨸㨹㨺㨻㨼㨽㨾㨿㩀㩁㩂㩃㩄㩅㩆㩇㩈㩉㩊㩋㩌㩍㩎
+㩏㩐㩑㩒㩓㩔㩕㩖㩗㩘㩙㩚㩛㩜㩝㩞㩟㩠㩡㩢㩣㩤㩥㩦㩧
+㩨㩩㩪㩫㩬㩭㩮㩯㩰㩱㩲㩴㩵㩶㩷㩸㩹㩺㩻㩼㩽㩾㩿㪀㪁
+㪂㪃㪄㪅㪆㪇㪈㪉㪊㪋㪌㪍㪎㪏㪐㪑㪒㪓㪔㪕㪖㪗㪘㪙㪚
+㪛㪜㪝㪞㪟㪠㪡㪢㪣㪤㪥㪦㪧㪨㪩㪪㪫㪬㪭㪮㪯㪰㪱㪲㪳
+㪴㪵㪶㪷㪸㪹㪺㪻㪼㪽㪾㪿㫀㫁㫂㫃㫄㫅㫆㫇㫈㫉㫊㫋㫌
+㫍㫎㫏㫐㫑㫒㫓㫔㫕㫖㫗㫘㫙㫚㫛㫜㫝㫞㫟㫠㫡㫢㫣㫤㫥
+㫦㫧㫨㫩㫪㫫㫬㫭㫮㫯㫰㫱㫲㫳㫴㫵㫶㫷㫸㫹㫺㫻㫼㫽㫾
+㫿㬀㬁㬂㬃㬄㬅㬆㬇㬈㬉㬊㬋㬌㬍㬎㬏㬐㬑㬒㬓㬔㬕㬖㬗
+㬘㬙㬚㬛㬜㬝㬞㬟㬠㬡㬢㬣㬤㬥㬦㬧㬨㬩㬪㬫㬬㬭㬮㬯㬰
+㬱㬲㬳㬴㬵㬶㬷㬸㬹㬺㬻㬼㬽㬾㬿㭀㭁㭂㭃㭄㭅㭆㭇㭈㭉
+㭊㭋㭌㭍㭏㭐㭑㭒㭓㭔㭕㭖㭗㭘㭙㭚㭛㭜㭝㭞㭟㭠㭡㭢㭣
+㭤㭥㭦㭧㭨㭩㭪㭫㭬㭭㭮㭯㭰㭱㭲㭳㭴㭵㭶㭷㭸㭹㭺㭻㭼
+㭽㭾㭿㮀㮁㮂㮃㮄㮅㮆㮇㮈㮉㮊㮋㮌㮍㮎㮏㮐㮑㮒㮓㮔㮕
+㮖㮗㮘㮙㮚㮛㮜㮝㮞㮟㮠㮡㮢㮣㮤㮥㮦㮧㮨㮩㮪㮫㮬㮭㮮
+㮯㮰㮱㮲㮳㮴㮵㮶㮷㮸㮹㮺㮻㮼㮽㮾㮿㯀㯁㯂㯃㯄㯅㯆㯇
+㯈㯉㯊㯋㯌㯍㯎㯏㯐㯑㯒㯓㯔㯕㯖㯗㯘㯙㯚㯛㯜㯝㯞㯟㯠
+㯡㯢㯣㯤㯥㯦㯧㯨㯩㯪㯫㯬㯭㯮㯯㯰㯱㯲㯳㯴㯵㯶㯷㯸㯹
+㯺㯻㯼㯽㯾㯿㰀㰁㰂㰃㰄㰅㰆㰇㰈㰉㰊㰋㰌㰍㰎㰏㰐㰑㰒
+㰓㰔㰕㰖㰗㰘㰙㰚㰛㰜㰝㰞㰟㰠㰡㰢㰣㰤㰥㰦㰧㰨㰩㰪㰫
+㰬㰭㰮㰯㰰㰱㰲㰳㰴㰵㰶㰷㰸㰹㰺㰻㰼㰽㰾㰿㱀㱁㱂㱃㱄
+㱅㱆㱇㱈㱉㱊㱋㱌㱍㱎㱏㱐㱑㱒㱓㱔㱕㱖㱗㱘㱙㱚㱛㱜㱝
+㱞㱟㱠㱡㱢㱣㱤㱥㱦㱧㱨㱩㱪㱫㱬㱭㱯㱰㱱㱲㱳㱴㱵㱶㱷
+㱸㱹㱺㱻㱼㱽㱾㱿㲀㲁㲂㲃㲄㲅㲆㲇㲈㲉㲊㲋㲌㲍㲎㲏㲐
+㲑㲒㲓㲔㲕㲖㲗㲘㲙㲚㲛㲜㲝㲞㲟㲠㲡㲢㲣㲤㲥㲦㲧㲨㲩
+㲪㲫㲬㲭㲮㲯㲰㲱㲲㲳㲴㲵㲶㲷㲸㲹㲺㲻㲼㲽㲾㲿㳀㳁㳂
+㳃㳄㳅㳆㳇㳈㳉㳊㳋㳌㳍㳎㳏㳐㳑㳒㳓㳔㳕㳖㳗㳘㳙㳚㳛
+㳜㳝㳞㳟㳡㳢㳣㳤㳥㳦㳧㳨㳩㳪㳫㳬㳭㳮㳯㳰㳱㳲㳳㳴㳵
+㳶㳷㳸㳹㳺㳻㳼㳽㳾㳿㴀㴁㴂㴃㴄㴅㴆㴇㴈㴉㴊㴋㴌㴍㴎
+㴏㴐㴑㴒㴓㴔㴕㴖㴗㴘㴙㴚㴛㴜㴝㴞㴟㴠㴡㴢㴣㴤㴥㴦㴧
+㴨㴩㴪㴫㴬㴭㴮㴯㴰㴱㴲㴳㴴㴵㴶㴷㴸㴹㴺㴻㴼㴽㴾㴿㵀
+㵁㵂㵃㵄㵅㵆㵇㵈㵉㵊㵋㵌㵍㵎㵏㵐㵑㵒㵓㵔㵕㵖㵗㵘㵙
+㵚㵛㵜㵝㵞㵟㵠㵡㵢㵣㵤㵥㵦㵧㵨㵩㵪㵫㵬㵭㵮㵯㵰㵱㵲
+㵳㵴㵵㵶㵷㵸㵹㵺㵻㵼㵽㵾㵿㶀㶁㶂㶃㶄㶅㶆㶇㶈㶉㶊㶋
+㶌㶍㶎㶏㶐㶑㶒㶓㶔㶕㶖㶗㶘㶙㶚㶛㶜㶝㶞㶟㶠㶡㶢㶣㶤
+㶥㶦㶧㶨㶩㶪㶫㶬㶭㶮㶯㶰㶱㶲㶳㶴㶵㶶㶷㶸㶹㶺㶻㶼㶽
+㶾㶿㷀㷁㷂㷃㷄㷅㷆㷇㷈㷉㷊㷋㷌㷍㷎㷏㷐㷑㷒㷓㷔㷕㷖
+㷗㷘㷙㷚㷛㷜㷝㷞㷟㷠㷡㷢㷣㷤㷥㷦㷧㷨㷩㷪㷫㷬㷭㷮㷯
+㷰㷱㷲㷳㷴㷵㷶㷷㷸㷹㷺㷻㷼㷽㷾㷿㸀㸁㸂㸃㸄㸅㸆㸇㸈
+㸉㸊㸋㸌㸍㸎㸏㸐㸑㸒㸓㸔㸕㸖㸗㸘㸙㸚㸛㸜㸝㸞㸟㸠㸡
+㸢㸣㸤㸥㸦㸧㸨㸩㸪㸫㸬㸭㸮㸯㸰㸱㸲㸳㸴㸵㸶㸷㸸㸹㸺
+㸻㸼㸽㸾㸿㹀㹁㹂㹃㹄㹅㹆㹇㹈㹉㹊㹋㹌㹍㹎㹏㹐㹑㹒㹓
+㹔㹕㹖㹗㹘㹙㹚㹛㹜㹝㹞㹟㹠㹡㹢㹣㹤㹥㹦㹧㹨㹩㹪㹫㹬
+㹭㹮㹯㹰㹱㹲㹳㹴㹵㹶㹷㹸㹹㹺㹻㹼㹽㹾㹿㺀㺁㺂㺃㺄㺅
+㺆㺇㺈㺉㺊㺋㺌㺍㺎㺏㺐㺑㺒㺓㺔㺕㺖㺗㺘㺙㺚㺛㺜㺝㺞
+㺟㺠㺡㺢㺣㺤㺥㺦㺧㺨㺩㺪㺫㺬㺭㺮㺯㺰㺱㺲㺳㺴㺵㺶㺷
+㺸㺹㺺㺻㺼㺽㺾㺿㻀㻁㻂㻃㻄㻅㻆㻇㻈㻉㻊㻋㻌㻍㻎㻏㻐
+㻑㻒㻓㻔㻕㻖㻗㻘㻙㻚㻛㻜㻝㻞㻟㻠㻡㻢㻣㻤㻥㻦㻧㻨㻩
+㻪㻫㻬㻭㻮㻯㻰㻱㻲㻳㻴㻵㻶㻷㻸㻹㻺㻻㻼㻽㻾㻿㼀㼁㼂
+㼃㼄㼅㼆㼇㼈㼉㼊㼋㼌㼍㼎㼏㼐㼑㼒㼓㼔㼕㼖㼗㼘㼙㼚㼛
+㼜㼝㼞㼟㼠㼡㼢㼣㼤㼥㼦㼧㼨㼩㼪㼫㼬㼭㼮㼯㼰㼱㼲㼳㼴
+㼵㼶㼷㼸㼹㼺㼻㼼㼽㼾㼿㽀㽁㽂㽃㽄㽅㽆㽇㽈㽉㽊㽋㽌㽍
+㽎㽏㽐㽑㽒㽓㽔㽕㽖㽗㽘㽙㽚㽛㽜㽝㽞㽟㽠㽡㽢㽣㽤㽥㽦
+㽧㽨㽩㽪㽫㽬㽭㽮㽯㽰㽱㽲㽳㽴㽵㽶㽷㽸㽹㽺㽻㽼㽽㽾㽿
+㾀㾁㾂㾃㾄㾅㾆㾇㾈㾉㾊㾋㾌㾍㾎㾏㾐㾑㾒㾓㾔㾕㾖㾗㾘
+㾙㾚㾛㾜㾝㾞㾟㾠㾡㾢㾣㾤㾥㾦㾧㾨㾩㾪㾫㾬㾭㾮㾯㾰㾱
+㾲㾳㾴㾵㾶㾷㾸㾹㾺㾻㾼㾽㾾㾿㿀㿁㿂㿃㿄㿅㿆㿇㿈㿉㿊
+㿋㿌㿍㿎㿏㿐㿑㿒㿓㿔㿕㿖㿗㿘㿙㿚㿛㿜㿝㿞㿟㿠㿡㿢㿣
+㿤㿥㿦㿧㿨㿩㿪㿫㿬㿭㿮㿯㿰㿱㿲㿳㿴㿵㿶㿷㿸㿹㿺㿻㿼
+㿽㿾㿿䀀䀁䀂䀃䀄䀅䀆䀇䀈䀉䀊䀋䀌䀍䀎䀏䀐䀑䀒䀓䀔䀕
+䀖䀗䀘䀙䀚䀛䀜䀝䀞䀟䀠䀡䀢䀣䀤䀥䀦䀧䀨䀩䀪䀫䀬䀭䀮
+䀯䀰䀱䀲䀳䀴䀵䀶䀷䀸䀹䀺䀻䀼䀽䀾䀿䁀䁁䁂䁃䁄䁅䁆䁇
+䁈䁉䁊䁋䁌䁍䁎䁏䁐䁑䁒䁓䁔䁕䁗䁘䁙䁚䁛䁜䁝䁞䁟䁠䁡
+䁢䁣䁤䁥䁦䁧䁨䁩䁪䁫䁬䁭䁮䁯䁰䁱䁲䁳䁴䁵䁶䁷䁸䁹䁺
+䁻䁼䁽䁾䁿䂀䂁䂂䂃䂄䂅䂆䂇䂈䂉䂊䂋䂌䂍䂎䂏䂐䂑䂒䂓
+䂔䂕䂖䂗䂘䂙䂚䂛䂜䂝䂞䂟䂠䂡䂢䂣䂤䂥䂦䂧䂨䂩䂪䂫䂬
+䂭䂮䂯䂰䂱䂲䂳䂴䂵䂶䂷䂸䂹䂺䂻䂼䂽䂾䂿䃀䃁䃂䃃䃄䃅
+䃆䃇䃈䃉䃊䃋䃌䃍䃎䃏䃐䃑䃒䃓䃔䃕䃖䃗䃘䃙䃚䃛䃜䃝䃞
+䃟䃠䃡䃢䃣䃤䃥䃦䃧䃨䃩䃪䃫䃬䃭䃮䃯䃰䃱䃲䃳䃴䃵䃶䃷
+䃸䃹䃺䃻䃼䃽䃾䃿䄀䄁䄂䄃䄄䄅䄆䄇䄈䄉䄊䄋䄌䄍䄎䄏䄐
+䄑䄒䄓䄔䄕䄖䄗䄘䄙䄚䄛䄜䄝䄞䄟䄠䄡䄢䄣䄤䄥䄦䄧䄨䄩
+䄪䄫䄬䄭䄮䄯䄰䄱䄲䄳䄴䄵䄶䄷䄸䄹䄺䄻䄼䄽䄾䄿䅀䅁䅂
+䅃䅄䅅䅆䅇䅈䅉䅊䅋䅌䅍䅎䅏䅐䅑䅒䅓䅔䅕䅖䅗䅘䅙䅚䅛
+䅜䅝䅞䅠䅡䅢䅣䅤䅥䅦䅧䅨䅩䅪䅫䅬䅭䅮䅯䅰䅱䅲䅳䅴䅵
+䅶䅷䅸䅹䅺䅻䅼䅽䅾䅿䆀䆁䆂䆃䆄䆅䆆䆇䆈䆉䆊䆋䆌䆍䆎
+䆏䆐䆑䆒䆓䆔䆕䆖䆗䆘䆙䆚䆛䆜䆝䆞䆟䆠䆡䆢䆣䆤䆥䆦䆧
+䆨䆩䆪䆫䆬䆭䆮䆯䆰䆱䆲䆳䆴䆵䆶䆷䆸䆹䆺䆻䆼䆽䆾䆿䇀
+䇁䇂䇃䇄䇅䇆䇇䇈䇉䇊䇋䇌䇍䇎䇏䇐䇑䇒䇓䇔䇕䇖䇗䇘䇙
+䇚䇛䇜䇝䇞䇟䇠䇡䇢䇣䇤䇥䇦䇧䇨䇩䇪䇫䇬䇭䇮䇯䇰䇱䇲
+䇳䇴䇵䇶䇷䇸䇹䇺䇻䇼䇽䇾䇿䈀䈁䈂䈃䈄䈅䈆䈇䈈䈉䈊䈋
+䈌䈍䈎䈏䈐䈑䈒䈓䈔䈕䈖䈗䈘䈙䈚䈛䈜䈝䈞䈟䈠䈡䈢䈣䈤
+䈥䈦䈧䈨䈩䈪䈫䈬䈭䈮䈯䈰䈱䈲䈳䈴䈵䈶䈷䈸䈹䈺䈻䈼䈽
+䈾䈿䉀䉁䉂䉃䉄䉅䉆䉇䉈䉉䉊䉋䉌䉍䉎䉏䉐䉑䉒䉓䉔䉕䉖
+䉗䉘䉙䉚䉛䉜䉝䉞䉟䉠䉡䉢䉣䉤䉥䉦䉧䉨䉩䉪䉫䉬䉭䉮䉯
+䉰䉱䉲䉳䉴䉵䉶䉷䉸䉹䉺䉻䉼䉽䉾䉿䊀䊁䊂䊃䊄䊅䊆䊇䊈
+䊉䊊䊋䊌䊍䊎䊏䊐䊑䊒䊓䊔䊕䊖䊗䊘䊙䊚䊛䊜䊝䊞䊟䊠䊡
+䊢䊣䊤䊥䊦䊧䊨䊩䊪䊫䊬䊭䊮䊯䊰䊱䊲䊳䊴䊵䊶䊷䊸䊹䊺
+䊻䊼䊽䊾䊿䋀䋁䋂䋃䋄䋅䋆䋇䋈䋉䋊䋋䋌䋍䋎䋏䋐䋑䋒䋓
+䋔䋕䋖䋗䋘䋙䋚䋛䋜䋝䋞䋟䋠䋡䋢䋣䋤䋥䋦䋧䋨䋩䋪䋫䋬
+䋭䋮䋯䋰䋱䋲䋳䋴䋵䋶䋷䋸䋹䋺䋻䋼䋽䋾䋿䌀䌁䌂䌃䌄䌅
+䌆䌇䌈䌉䌊䌋䌌䌍䌎䌏䌐䌑䌒䌓䌔䌕䌖䌗䌘䌙䌚䌛䌜䌝䌞
+䌟䌠䌡䌢䌣䌤䌥䌦䌧䌨䌩䌪䌫䌬䌭䌮䌯䌰䌱䌲䌳䌴䌵䌶䌸
+䌹䌺䌻䌼䌽䌾䌿䍀䍁䍂䍃䍄䍅䍆䍇䍈䍉䍊䍋䍌䍍䍎䍏䍐䍑
+䍒䍓䍔䍕䍖䍗䍘䍙䍚䍛䍜䍝䍞䍟䍠䍡䍢䍣䍤䍥䍦䍧䍨䍩䍪
+䍫䍬䍭䍮䍯䍰䍱䍲䍳䍴䍵䍶䍷䍸䍹䍺䍻䍼䍽䍾䍿䎀䎁䎂䎃
+䎄䎅䎆䎇䎈䎉䎊䎋䎌䎍䎎䎏䎐䎑䎒䎓䎔䎕䎖䎗䎘䎙䎚䎛䎜
+䎝䎞䎟䎠䎡䎢䎣䎤䎥䎦䎧䎨䎩䎪䎫䎭䎮䎯䎰䎲䎳䎴䎵䎶䎷
+䎸䎹䎺䎻䎼䎽䎾䎿䏀䏁䏂䏃䏄䏅䏆䏇䏈䏉䏊䏋䏌䏍䏎䏏䏐
+䏑䏒䏓䏔䏕䏖䏗䏘䏙䏚䏛䏜䏞䏟䏠䏡䏢䏣䏤䏥䏦䏧䏨䏩䏪
+䏫䏬䏭䏮䏯䏰䏱䏲䏳䏴䏵䏶䏷䏸䏹䏺䏻䏼䏽䏾䏿䐀䐁䐂䐃
+䐄䐅䐆䐇䐈䐉䐊䐋䐌䐍䐎䐏䐐䐑䐒䐓䐔䐕䐖䐗䐘䐙䐚䐛䐜
+䐝䐞䐟䐠䐡䐢䐣䐤䐥䐦䐧䐨䐩䐪䐫䐬䐭䐮䐯䐰䐱䐲䐳䐴䐵
+䐶䐷䐸䐹䐺䐻䐼䐽䐾䐿䑀䑁䑂䑃䑄䑅䑆䑇䑈䑉䑊䑋䑌䑍䑎
+䑏䑐䑑䑒䑓䑔䑕䑖䑗䑘䑙䑚䑛䑜䑝䑞䑟䑠䑡䑢䑣䑤䑥䑦䑧
+䑨䑩䑪䑫䑬䑭䑮䑯䑰䑱䑲䑳䑴䑵䑶䑷䑸䑹䑺䑻䑼䑽䑾䑿䒀
+䒁䒂䒃䒄䒅䒆䒇䒈䒉䒊䒋䒌䒍䒎䒏䒐䒑䒒䒓䒔䒕䒖䒗䒘䒙
+䒚䒛䒜䒝䒞䒟䒠䒡䒢䒣䒤䒥䒦䒧䒨䒩䒪䒫䒬䒭䒮䒯䒰䒱䒲
+䒳䒴䒵䒶䒷䒸䒹䒺䒻䒼䒽䒾䒿䓀䓁䓂䓃䓄䓅䓆䓇䓈䓉䓊䓋
+䓌䓍䓎䓏䓐䓑䓒䓓䓔䓕䓗䓘䓙䓚䓛䓜䓝䓞䓟䓠䓡䓢䓣䓤䓥
+䓦䓧䓨䓩䓪䓫䓬䓭䓮䓯䓰䓱䓲䓳䓴䓵䓶䓷䓸䓹䓺䓻䓼䓽䓾
+䓿䔀䔁䔂䔃䔄䔅䔆䔇䔈䔉䔊䔋䔌䔍䔎䔏䔐䔑䔒䔓䔔䔕䔖䔗
+䔘䔙䔚䔛䔜䔝䔞䔟䔠䔡䔢䔣䔤䔥䔦䔧䔨䔩䔪䔫䔬䔭䔮䔯䔰
+䔱䔲䔳䔴䔵䔶䔷䔸䔹䔺䔻䔼䔽䔾䔿䕀䕁䕂䕃䕄䕅䕆䕇䕈䕉
+䕊䕋䕌䕍䕎䕏䕐䕑䕒䕓䕔䕕䕖䕗䕘䕙䕚䕛䕜䕝䕞䕟䕠䕡䕢
+䕣䕤䕥䕦䕧䕨䕩䕪䕫䕬䕭䕮䕯䕰䕱䕲䕳䕴䕵䕶䕷䕸䕹䕺䕻
+䕼䕽䕾䕿䖀䖁䖂䖃䖄䖅䖆䖇䖈䖉䖊䖋䖌䖍䖎䖏䖐䖑䖒䖓䖔
+䖕䖖䖗䖘䖙䖚䖛䖜䖝䖞䖟䖠䖡䖢䖣䖤䖥䖦䖧䖨䖩䖪䖫䖬䖭
+䖮䖯䖰䖱䖲䖳䖴䖵䖶䖷䖸䖹䖺䖻䖼䖽䖾䖿䗀䗁䗂䗃䗄䗅䗆
+䗇䗈䗉䗊䗋䗌䗍䗎䗏䗐䗑䗒䗓䗔䗕䗖䗗䗘䗙䗚䗛䗜䗝䗞䗟
+䗠䗡䗢䗣䗤䗥䗦䗧䗨䗩䗪䗫䗬䗭䗮䗯䗰䗱䗲䗳䗴䗵䗶䗷䗸
+䗹䗺䗻䗼䗽䗾䗿䘀䘁䘂䘃䘄䘅䘆䘇䘈䘉䘊䘋䘌䘍䘎䘏䘐䘑
+䘒䘓䘔䘕䘖䘗䘘䘙䘚䘛䘜䘝䘞䘟䘠䘡䘢䘣䘤䘥䘦䘧䘨䘩䘪
+䘫䘬䘭䘮䘯䘰䘱䘲䘳䘴䘵䘶䘷䘸䘹䘺䘻䘼䘽䘾䘿䙀䙁䙂䙃
+䙄䙅䙆䙇䙈䙉䙊䙋䙍䙎䙏䙐䙑䙒䙓䙔䙕䙖䙗䙘䙙䙚䙛䙜䙝
+䙞䙟䙠䙢䙣䙤䙥䙦䙧䙨䙩䙪䙫䙬䙭䙮䙯䙰䙱䙲䙳䙴䙵䙶䙷
+䙸䙹䙺䙻䙼䙽䙾䙿䚀䚁䚂䚃䚄䚅䚆䚇䚈䚉䚊䚋䚌䚍䚎䚏䚐
+䚑䚒䚓䚔䚕䚖䚗䚘䚙䚚䚛䚜䚝䚞䚟䚠䚡䚢䚣䚤䚥䚦䚧䚨䚩
+䚪䚫䚬䚭䚮䚯䚰䚱䚲䚳䚴䚵䚶䚷䚸䚹䚺䚻䚼䚽䚾䚿䛀䛁䛂
+䛃䛄䛅䛆䛇䛈䛉䛊䛋䛌䛍䛎䛏䛐䛑䛒䛓䛔䛕䛖䛗䛘䛙䛚䛛
+䛜䛝䛞䛟䛠䛡䛢䛣䛤䛥䛦䛧䛨䛩䛪䛫䛬䛭䛮䛯䛰䛱䛲䛳䛴
+䛵䛶䛷䛸䛹䛺䛻䛼䛽䛾䛿䜀䜁䜂䜃䜄䜅䜆䜇䜈䜉䜊䜋䜌䜍
+䜎䜏䜐䜑䜒䜓䜔䜕䜖䜗䜘䜙䜚䜛䜜䜝䜞䜟䜠䜡䜢䜤䜥䜦䜧
+䜨䜪䜫䜬䜭䜮䜯䜰䜱䜲䜳䜴䜵䜶䜷䜸䜹䜺䜻䜼䜽䜾䜿䝀䝁
+䝂䝃䝄䝅䝆䝇䝈䝉䝊䝋䝌䝍䝎䝏䝐䝑䝒䝓䝔䝕䝖䝗䝘䝙䝚
+䝛䝜䝝䝞䝟䝠䝡䝢䝣䝤䝥䝦䝧䝨䝩䝪䝫䝬䝭䝮䝯䝰䝱䝲䝳
+䝴䝵䝶䝷䝸䝹䝺䝻䝽䝾䝿䞀䞁䞂䞃䞄䞅䞆䞇䞈䞉䞊䞋䞌䞎
+䞏䞐䞑䞒䞓䞔䞕䞖䞗䞘䞙䞚䞛䞜䞝䞞䞟䞠䞡䞢䞣䞤䞥䞦䞧
+䞨䞩䞪䞫䞬䞭䞮䞯䞰䞱䞲䞳䞴䞵䞶䞷䞸䞹䞺䞻䞼䞽䞾䞿䟀
+䟁䟂䟃䟄䟅䟆䟇䟈䟉䟊䟋䟌䟍䟎䟏䟐䟑䟒䟓䟔䟕䟖䟗䟘䟙
+䟚䟛䟜䟝䟞䟟䟠䟡䟢䟣䟤䟥䟦䟧䟨䟩䟪䟫䟬䟭䟮䟯䟰䟱䟲
+䟳䟴䟵䟶䟷䟸䟹䟺䟻䟼䟽䟾䟿䠀䠁䠂䠃䠄䠅䠆䠇䠈䠉䠊䠋
+䠌䠍䠎䠏䠐䠑䠒䠓䠔䠕䠖䠗䠘䠙䠚䠛䠜䠝䠞䠟䠠䠡䠢䠣䠤
+䠥䠦䠧䠨䠩䠪䠫䠬䠭䠮䠯䠰䠱䠲䠳䠴䠵䠶䠷䠸䠹䠺䠻䠼䠽
+䠾䠿䡀䡁䡂䡃䡄䡅䡆䡇䡈䡉䡊䡋䡌䡍䡎䡏䡐䡑䡒䡓䡔䡕䡖
+䡗䡘䡙䡚䡛䡜䡝䡞䡟䡠䡡䡢䡣䡤䡥䡦䡧䡨䡩䡪䡫䡬䡭䡮䡯
+䡰䡱䡲䡳䡴䡵䡶䡷䡸䡹䡺䡻䡼䡽䡾䡿䢀䢁䢂䢃䢄䢅䢆䢇䢈
+䢉䢊䢋䢌䢍䢎䢏䢐䢑䢒䢓䢔䢕䢖䢗䢘䢙䢚䢛䢜䢝䢞䢟䢠䢡
+䢢䢣䢤䢥䢦䢧䢨䢩䢪䢫䢬䢭䢮䢯䢰䢱䢲䢳䢴䢵䢶䢷䢸䢹䢺
+䢻䢼䢽䢾䢿䣀䣁䣂䣃䣄䣅䣆䣇䣈䣉䣊䣋䣌䣍䣎䣏䣐䣑䣒䣓
+䣔䣕䣖䣗䣘䣙䣚䣛䣜䣝䣞䣟䣠䣡䣢䣣䣤䣥䣦䣧䣨䣩䣪䣫䣬
+䣭䣮䣯䣰䣱䣲䣳䣴䣵䣶䣷䣸䣹䣺䣻䣼䣽䣾䣿䤀䤁䤂䤃䤄䤅
+䤆䤇䤈䤉䤊䤋䤌䤍䤎䤏䤐䤑䤒䤓䤔䤕䤖䤗䤘䤙䤚䤛䤜䤝䤞
+䤟䤠䤡䤢䤣䤤䤥䤦䤧䤨䤩䤪䤫䤬䤭䤮䤯䤰䤱䤲䤳䤴䤵䤶䤷
+䤸䤹䤺䤻䤼䤽䤾䤿䥀䥁䥂䥃䥄䥅䥆䥈䥉䥊䥋䥌䥍䥎䥏䥐䥑
+䥒䥓䥔䥕䥖䥗䥘䥙䥚䥛䥜䥝䥞䥟䥠䥡䥢䥣䥤䥥䥦䥧䥨䥩䥪
+䥫䥬䥭䥮䥯䥰䥱䥲䥳䥴䥵䥶䥷䥸䥹䥻䥼䥾䥿䦀䦁䦄䦇䦈䦉
+䦊䦋䦌䦍䦎䦏䦐䦑䦒䦓䦔䦕䦖䦗䦘䦙䦚䦜䦝䦞䦠䦡䦢䦣䦤
+䦥䦦䦧䦨䦩䦪䦫䦬䦭䦮䦯䦰䦱䦲䦳䦴䦵䦸䦹䦺䦻䦼䦽䦾䦿
+䧀䧁䧂䧃䧄䧅䧆䧇䧈䧉䧊䧋䧌䧍䧎䧏䧐䧑䧒䧓䧔䧕䧖䧗䧘
+䧙䧚䧛䧜䧝䧞䧟䧠䧡䧢䧣䧤䧥䧦䧧䧨䧩䧪䧫䧬䧭䧮䧯䧰䧱
+䧲䧳䧴䧵䧶䧷䧸䧹䧺䧻䧼䧽䧾䧿䨀䨁䨂䨃䨄䨅䨆䨇䨈䨉䨊
+䨋䨌䨍䨎䨏䨐䨑䨒䨓䨔䨕䨖䨗䨘䨙䨚䨛䨜䨝䨞䨟䨠䨡䨢䨣
+䨤䨥䨦䨧䨨䨩䨪䨫䨬䨭䨮䨯䨰䨱䨲䨳䨴䨵䨶䨷䨸䨹䨺䨻䨼
+䨽䨾䨿䩀䩁䩂䩃䩄䩅䩆䩇䩈䩉䩊䩋䩌䩍䩎䩏䩐䩑䩒䩓䩔䩕
+䩖䩗䩘䩙䩚䩛䩜䩝䩞䩟䩠䩡䩢䩣䩤䩥䩦䩧䩨䩩䩪䩫䩬䩭䩮
+䩯䩰䩱䩲䩳䩴䩵䩶䩷䩸䩹䩺䩻䩼䩽䩾䩿䪀䪁䪂䪃䪄䪅䪆䪇
+䪈䪉䪊䪋䪌䪍䪎䪏䪐䪑䪒䪓䪔䪕䪖䪗䪘䪙䪚䪛䪜䪝䪞䪟䪠
+䪡䪢䪣䪤䪥䪦䪧䪨䪩䪪䪫䪬䪭䪮䪯䪰䪱䪲䪳䪴䪵䪶䪷䪸䪹
+䪺䪻䪼䪽䪾䪿䫀䫁䫂䫃䫄䫅䫆䫇䫈䫉䫊䫋䫌䫍䫎䫏䫐䫑䫒
+䫓䫔䫕䫖䫗䫘䫙䫚䫛䫜䫝䫞䫟䫠䫡䫢䫣䫤䫥䫦䫧䫨䫩䫪䫫
+䫬䫭䫮䫯䫰䫱䫲䫳䫴䫵䫶䫷䫸䫹䫺䫻䫼䫽䫾䫿䬀䬁䬂䬃䬄
+䬅䬆䬇䬈䬉䬊䬋䬌䬍䬎䬏䬐䬑䬒䬓䬔䬕䬖䬗䬘䬙䬚䬛䬜䬝
+䬞䬟䬠䬡䬢䬣䬤䬥䬦䬧䬨䬩䬪䬫䬬䬭䬮䬯䬰䬱䬲䬳䬴䬵䬶
+䬷䬸䬹䬺䬻䬼䬽䬾䬿䭀䭁䭂䭃䭄䭅䭆䭇䭈䭉䭊䭋䭌䭍䭎䭏
+䭐䭑䭒䭓䭔䭕䭖䭗䭘䭙䭚䭛䭜䭝䭞䭟䭠䭡䭢䭣䭤䭥䭦䭧䭨
+䭩䭪䭫䭬䭭䭮䭯䭰䭱䭲䭳䭴䭵䭶䭷䭸䭹䭺䭻䭼䭽䭾䭿䮀䮁
+䮂䮃䮄䮅䮆䮇䮈䮉䮊䮋䮌䮍䮎䮏䮐䮑䮒䮓䮔䮕䮖䮗䮘䮙䮚
+䮛䮜䮝䮞䮟䮠䮡䮢䮣䮤䮥䮦䮧䮨䮩䮪䮫䮬䮭䮮䮯䮰䮱䮲䮳
+䮴䮵䮶䮷䮸䮹䮺䮻䮼䮽䮾䮿䯀䯁䯂䯃䯄䯅䯆䯇䯈䯉䯊䯋䯌
+䯍䯎䯏䯐䯑䯒䯓䯔䯕䯖䯗䯘䯙䯚䯛䯜䯝䯞䯟䯠䯡䯢䯣䯤䯥
+䯦䯧䯨䯩䯪䯫䯬䯭䯮䯯䯰䯱䯲䯳䯴䯵䯶䯷䯸䯹䯺䯻䯼䯽䯾
+䯿䰀䰁䰂䰃䰄䰅䰆䰇䰈䰉䰊䰋䰌䰍䰎䰏䰐䰑䰒䰓䰔䰕䰖䰗
+䰘䰙䰚䰛䰜䰝䰞䰟䰠䰡䰢䰣䰤䰥䰦䰧䰨䰩䰪䰫䰬䰭䰮䰯䰰
+䰱䰲䰳䰴䰵䰶䰷䰸䰹䰺䰻䰼䰽䰾䰿䱀䱁䱂䱃䱄䱅䱆䱇䱈䱉
+䱊䱋䱌䱍䱎䱏䱐䱑䱒䱓䱔䱕䱖䱗䱘䱙䱚䱛䱜䱝䱞䱟䱠䱡䱢
+䱣䱤䱥䱦䱧䱨䱩䱪䱫䱬䱭䱮䱯䱰䱱䱲䱳䱴䱵䱶䱸䱹䱺䱻䱼
+䱽䱾䱿䲀䲁䲂䲃䲄䲅䲆䲇䲈䲉䲊䲋䲌䲍䲎䲏䲐䲑䲒䲓䲔䲕
+䲖䲗䲘䲙䲚䲛䲜䲝䲞䲤䲥䲦䲧䲨䲩䲪䲫䲬䲭䲮䲯䲰䲱䲲䲳
+䲴䲵䲶䲷䲸䲹䲺䲻䲼䲽䲾䲿䳀䳁䳂䳃䳄䳅䳆䳇䳈䳉䳊䳋䳌
+䳍䳎䳏䳐䳑䳒䳓䳔䳕䳖䳗䳘䳙䳚䳛䳜䳝䳞䳟䳠䳡䳢䳣䳤䳥
+䳦䳧䳨䳩䳪䳫䳬䳭䳮䳯䳰䳱䳲䳳䳴䳵䳶䳷䳸䳹䳺䳻䳼䳽䳾
+䳿䴀䴁䴂䴃䴄䴅䴆䴇䴈䴉䴊䴋䴌䴍䴎䴏䴐䴑䴒䴚䴛䴜䴝䴞
+䴟䴠䴡䴢䴣䴤䴥䴦䴧䴨䴩䴪䴫䴬䴭䴮䴯䴰䴱䴲䴳䴴䴵䴶䴷
+䴸䴹䴺䴻䴼䴽䴾䴿䵀䵁䵂䵃䵄䵅䵆䵇䵈䵉䵊䵋䵌䵍䵎䵏䵐
+䵑䵒䵓䵔䵕䵖䵗䵘䵙䵚䵛䵜䵝䵞䵟䵠䵡䵢䵣䵤䵥䵦䵧䵨䵩
+䵪䵫䵬䵭䵮䵯䵰䵱䵲䵳䵴䵵䵶䵷䵸䵹䵺䵻䵼䵽䵾䵿䶀䶁䶂
+䶃䶄䶅䶆䶇䶈䶉䶊䶋䶌䶍䶎䶏䶐䶑䶒䶓䶔䶕䶖䶗䶘䶙䶚䶛
+䶜䶝䶞䶟䶠䶡䶢䶣䶤䶥䶦䶧䶨䶩䶪䶫䶬䶭䶯䶰䶱䶲䶳䶴䶵
+
+
+Adobe-GB1-5
+
+ꀀꀁꀂꀃꀄꀅꀆꀇꀈꀉꀊꀋꀌꀍꀎꀏꀐꀑꀒꀓꀔꀕꀖꀗꀘ
+ꀙꀚꀛꀜꀝꀞꀟꀠꀡꀢꀣꀤꀥꀦꀧꀨꀩꀪꀫꀬꀭꀮꀯꀰꀱ
+ꀲꀳꀴꀵꀶꀷꀸꀹꀺꀻꀼꀽꀾꀿꁀꁁꁂꁃꁄꁅꁆꁇꁈꁉꁊ
+ꁋꁌꁍꁎꁏꁐꁑꁒꁓꁔꁕꁖꁗꁘꁙꁚꁛꁜꁝꁞꁟꁠꁡꁢꁣ
+ꁤꁥꁦꁧꁨꁩꁪꁫꁬꁭꁮꁯꁰꁱꁲꁳꁴꁵꁶꁷꁸꁹꁺꁻꁼ
+ꁽꁾꁿꂀꂁꂂꂃꂄꂅꂆꂇꂈꂉꂊꂋꂌꂍꂎꂏꂐꂑꂒꂓꂔꂕ
+ꂖꂗꂘꂙꂚꂛꂜꂝꂞꂟꂠꂡꂢꂣꂤꂥꂦꂧꂨꂩꂪꂫꂬꂭꂮ
+ꂯꂰꂱꂲꂳꂴꂵꂶꂷꂸꂹꂺꂻꂼꂽꂾꂿꃀꃁꃂꃃꃄꃅꃆꃇ
+ꃈꃉꃊꃋꃌꃍꃎꃏꃐꃑꃒꃓꃔꃕꃖꃗꃘꃙꃚꃛꃜꃝꃞꃟꃠ
+ꃡꃢꃣꃤꃥꃦꃧꃨꃩꃪꃫꃬꃭꃮꃯꃰꃱꃲꃳꃴꃵꃶꃷꃸꃹ
+ꃺꃻꃼꃽꃾꃿꄀꄁꄂꄃꄄꄅꄆꄇꄈꄉꄊꄋꄌꄍꄎꄏꄐꄑꄒ
+ꄓꄔꄕꄖꄗꄘꄙꄚꄛꄜꄝꄞꄟꄠꄡꄢꄣꄤꄥꄦꄧꄨꄩꄪꄫ
+ꄬꄭꄮꄯꄰꄱꄲꄳꄴꄵꄶꄷꄸꄹꄺꄻꄼꄽꄾꄿꅀꅁꅂꅃꅄ
+ꅅꅆꅇꅈꅉꅊꅋꅌꅍꅎꅏꅐꅑꅒꅓꅔꅕꅖꅗꅘꅙꅚꅛꅜꅝ
+ꅞꅟꅠꅡꅢꅣꅤꅥꅦꅧꅨꅩꅪꅫꅬꅭꅮꅯꅰꅱꅲꅳꅴꅵꅶ
+ꅷꅸꅹꅺꅻꅼꅽꅾꅿꆀꆁꆂꆃꆄꆅꆆꆇꆈꆉꆊꆋꆌꆍꆎꆏ
+ꆐꆑꆒꆓꆔꆕꆖꆗꆘꆙꆚꆛꆜꆝꆞꆟꆠꆡꆢꆣꆤꆥꆦꆧꆨ
+ꆩꆪꆫꆬꆭꆮꆯꆰꆱꆲꆳꆴꆵꆶꆷꆸꆹꆺꆻꆼꆽꆾꆿꇀꇁ
+ꇂꇃꇄꇅꇆꇇꇈꇉꇊꇋꇌꇍꇎꇏꇐꇑꇒꇓꇔꇕꇖꇗꇘꇙꇚ
+ꇛꇜꇝꇞꇟꇠꇡꇢꇣꇤꇥꇦꇧꇨꇩꇪꇫꇬꇭꇮꇯꇰꇱꇲꇳ
+ꇴꇵꇶꇷꇸꇹꇺꇻꇼꇽꇾꇿꈀꈁꈂꈃꈄꈅꈆꈇꈈꈉꈊꈋꈌ
+ꈍꈎꈏꈐꈑꈒꈓꈔꈕꈖꈗꈘꈙꈚꈛꈜꈝꈞꈟꈠꈡꈢꈣꈤꈥ
+ꈦꈧꈨꈩꈪꈫꈬꈭꈮꈯꈰꈱꈲꈳꈴꈵꈶꈷꈸꈹꈺꈻꈼꈽꈾ
+ꈿꉀꉁꉂꉃꉄꉅꉆꉇꉈꉉꉊꉋꉌꉍꉎꉏꉐꉑꉒꉓꉔꉕꉖꉗ
+ꉘꉙꉚꉛꉜꉝꉞꉟꉠꉡꉢꉣꉤꉥꉦꉧꉨꉩꉪꉫꉬꉭꉮꉯꉰ
+ꉱꉲꉳꉴꉵꉶꉷꉸꉹꉺꉻꉼꉽꉾꉿꊀꊁꊂꊃꊄꊅꊆꊇꊈꊉ
+ꊊꊋꊌꊍꊎꊏꊐꊑꊒꊓꊔꊕꊖꊗꊘꊙꊚꊛꊜꊝꊞꊟꊠꊡꊢ
+ꊣꊤꊥꊦꊧꊨꊩꊪꊫꊬꊭꊮꊯꊰꊱꊲꊳꊴꊵꊶꊷꊸꊹꊺꊻ
+ꊼꊽꊾꊿꋀꋁꋂꋃꋄꋅꋆꋇꋈꋉꋊꋋꋌꋍꋎꋏꋐꋑꋒꋓꋔ
+ꋕꋖꋗꋘꋙꋚꋛꋜꋝꋞꋟꋠꋡꋢꋣꋤꋥꋦꋧꋨꋩꋪꋫꋬꋭ
+ꋮꋯꋰꋱꋲꋳꋴꋵꋶꋷꋸꋹꋺꋻꋼꋽꋾꋿꌀꌁꌂꌃꌄꌅꌆ
+ꌇꌈꌉꌊꌋꌌꌍꌎꌏꌐꌑꌒꌓꌔꌕꌖꌗꌘꌙꌚꌛꌜꌝꌞꌟ
+ꌠꌡꌢꌣꌤꌥꌦꌧꌨꌩꌪꌫꌬꌭꌮꌯꌰꌱꌲꌳꌴꌵꌶꌷꌸ
+ꌹꌺꌻꌼꌽꌾꌿꍀꍁꍂꍃꍄꍅꍆꍇꍈꍉꍊꍋꍌꍍꍎꍏꍐꍑ
+ꍒꍓꍔꍕꍖꍗꍘꍙꍚꍛꍜꍝꍞꍟꍠꍡꍢꍣꍤꍥꍦꍧꍨꍩꍪ
+ꍫꍬꍭꍮꍯꍰꍱꍲꍳꍴꍵꍶꍷꍸꍹꍺꍻꍼꍽꍾꍿꎀꎁꎂꎃ
+ꎄꎅꎆꎇꎈꎉꎊꎋꎌꎍꎎꎏꎐꎑꎒꎓꎔꎕꎖꎗꎘꎙꎚꎛꎜ
+ꎝꎞꎟꎠꎡꎢꎣꎤꎥꎦꎧꎨꎩꎪꎫꎬꎭꎮꎯꎰꎱꎲꎳꎴꎵ
+ꎶꎷꎸꎹꎺꎻꎼꎽꎾꎿꏀꏁꏂꏃꏄꏅꏆꏇꏈꏉꏊꏋꏌꏍꏎ
+ꏏꏐꏑꏒꏓꏔꏕꏖꏗꏘꏙꏚꏛꏜꏝꏞꏟꏠꏡꏢꏣꏤꏥꏦꏧ
+ꏨꏩꏪꏫꏬꏭꏮꏯꏰꏱꏲꏳꏴꏵꏶꏷꏸꏹꏺꏻꏼꏽꏾꏿꐀ
+ꐁꐂꐃꐄꐅꐆꐇꐈꐉꐊꐋꐌꐍꐎꐏꐐꐑꐒꐓꐔꐕꐖꐗꐘꐙ
+ꐚꐛꐜꐝꐞꐟꐠꐡꐢꐣꐤꐥꐦꐧꐨꐩꐪꐫꐬꐭꐮꐯꐰꐱꐲ
+ꐳꐴꐵꐶꐷꐸꐹꐺꐻꐼꐽꐾꐿꑀꑁꑂꑃꑄꑅꑆꑇꑈꑉꑊꑋ
+ꑌꑍꑎꑏꑐꑑꑒꑓꑔꑕꑖꑗꑘꑙꑚꑛꑜꑝꑞꑟꑠꑡꑢꑣꑤ
+ꑥꑦꑧꑨꑩꑪꑫꑬꑭꑮꑯꑰꑱꑲꑳꑴꑵꑶꑷꑸꑹꑺꑻꑼꑽ
+ꑾꑿꒀꒁꒂꒃꒄꒅꒆꒇꒈꒉꒊꒋꒌ꒐꒑꒒꒓꒔꒕꒖꒗꒘꒙
+꒚꒛꒜꒝꒞꒟꒠꒡꒢꒣꒤꒥꒦꒧꒨꒩꒪꒫꒬꒭꒮꒯꒰꒱꒲
+꒳꒴꒵꒶꒷꒸꒹꒺꒻꒼꒽꒾꒿꓀꓁꓂꓃꓄꓅꓆
+
+\end
diff --git a/language/japanese/uptex-base/samples/adobe-jp-utf8.tex b/language/japanese/uptex-base/samples/adobe-jp-utf8.tex
new file mode 100644
index 0000000000..f7b9349c36
--- /dev/null
+++ b/language/japanese/uptex-base/samples/adobe-jp-utf8.tex
@@ -0,0 +1,679 @@
+%
+% This file is generated from the data of UniJIS-UTF32
+% in cid2code.txt (Version 02/05/2019)
+% for Adobe-Japan1-7
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-Japan1-7/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+\kcatcode"C0=18% U+00C0:À (Latin-1 Supplement, Latin-1 letters)
+\kcatcode"100=18% U+0100:Ā (Latin Extended-A)
+\kcatcode"180=18% U+0180:ƀ (Latin Extended-B)
+\kcatcode"1E00=18% U+1E00:Ḁ (Latin Extended Additional)
+
+\font\upjpnrm = upjpnrm-h at 9.62216pt
+\upjpnrm
+
+
+Adobe-Japan1-0
+
+ ‑¥̲̀¦˜̃ʼ’ʻ‘∼¡¢£⁄ƒ¤“«‹›fifl
+‒–·∙•‚„”»¿́ˆ̂¯̄̆̇̈˚̊¸̧̨̋̌
+̶—ƪŁØŒºæıłøœß­©¬®²³µ¹¼½¾
+ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛ
+ÜÝÞàáâãäåçèéêëìíîïðñòóôõö
+ùúûüýþÿŠŸŽ̅‾š™ž │。「」、・ヲァィ
+ゥェォャュョッーアイウエオカキクケコサシスセソタチ
+ツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレ
+ロワン゙゚  、。,.・:;?!゛゜´`¨^ ̄_ヽ
+ヾゝゞ〃仝々〆〇ー―‐/\〜~‖|…‥()〔〕[]
+{}〈〈〉〉《》「」『』【】+−-±×÷=≠<>≦
+≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇
+◆□■△▲▽▼※〒→←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨¬
+⇒⇔∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬ʼn♯♭♪†
+‡¶◯0123456789ABCDEFGHIJKL
+MNOPQRSTUVWXYZabcdefghijk
+lmnopqrstuvwxyzぁあぃいぅうぇえぉお
+かがきぎくぐけげこごさざしじすずせぜそぞただちぢっ
+つづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼ
+ぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァア
+ィイゥウェエォオカガキギクグケゲコゴサザシジスズセ
+ゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピ
+フブプヘベペホボポマミムメモャヤュユョヨラリルレロ
+ヮワヰヱヲンヴヵヶΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠ
+ΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρ
+στυφχψωАБВГДЕЁЖЗИЙКЛМНОПР
+СТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзи
+йклмнопрстуфхцчшщъыьэюя亜唖
+娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴
+絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟
+意慰易椅為畏異移維緯胃萎⾐衣謂違遺医井亥域育郁磯⼀
+一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭院陰隠韻吋右
+宇烏⽻羽迂⾬雨卯鵜窺丑碓⾅臼渦嘘唄欝蔚鰻姥厩浦⽠瓜
+閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭
+液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕
+猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖
+鴬鴎⻩黄岡沖荻億屋憶臆桶牡⼄乙俺卸恩温穏⾳音下化仮
+何伽価佳加可嘉夏嫁家寡科暇果架歌河⽕火珂禍⽲禾稼箇
+花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我⽛牙画臥芽蛾賀雅
+餓駕介会解回塊壊廻快怪悔恢懐戒拐改魁晦械海灰界皆絵
+芥蟹開階⾙貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣
+柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚⾓角赫較郭閣隔⾰革
+学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶
+椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅⽡瓦乾侃冠寒刊勘
+勧巻喚堪姦完官寛⼲干幹患感慣憾換敢柑桓棺款歓汗漢澗
+潅環⽢甘監看竿管簡緩⽸缶翰肝艦莞観諌貫還鑑間閑関陥
+韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉
+寄岐希幾忌揮机旗既期棋棄機帰毅気汽畿祈季稀紀徽規記
+貴起軌輝飢騎⻤⿁鬼⻲亀偽儀妓宜戯技擬欺犠疑祇義蟻誼
+議掬菊鞠吉吃喫桔橘詰砧杵⿉黍却客脚虐逆丘久仇休及吸
+宮⼸弓急救朽求汲泣灸球究窮笈級糾給旧⽜牛去居巨拒拠
+挙渠虚許距鋸漁禦⿂魚亨享京供侠僑兇競共凶協匡卿叫喬
+境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝
+尭暁業局曲極⽟玉桐粁僅勤均⼱巾錦⽄斤欣欽琴禁禽筋緊
+芹菌衿襟謹近⾦金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞
+喰空偶寓遇隅串櫛釧屑屈掘窟沓靴轡窪熊隈粂栗繰桑鍬勲
+君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲
+携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇
+戟撃激隙桁傑⽋欠決潔⽳穴結⾎血訣⽉月件倹倦健兼券剣
+喧圏堅嫌建憲懸拳捲検権牽⽝犬献研硯絹県肩⾒見謙賢軒
+遣鍵険顕験鹸元原厳幻弦減源⽞玄現絃舷⾔言諺限乎個古
+呼固姑孤⼰己庫弧⼾戸故枯湖狐糊袴股胡菰⻁虎誇跨鈷雇
+顧⿎鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼
+侯候倖光公功効勾厚⼝口向后喉坑垢好孔孝宏⼯工巧巷幸
+広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬
+稿糠紅紘絞綱耕考肯肱腔膏航荒⾏行衡講貢購郊酵鉱砿鋼
+閤降項⾹香⾼高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠
+⿊黒獄漉腰甑忽惚⾻骨狛込此頃今困坤墾婚恨懇昏昆根梱
+混痕紺⾉艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催
+再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤
+在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索
+錯桜鮭笹匙冊刷察拶撮擦札殺薩雑皐鯖捌錆鮫⽫皿晒三傘
+参⼭山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺
+司史嗣四⼠士始姉姿⼦子屍市師志思指⽀支孜斯施旨枝⽌
+止死⽒氏獅祉私⽷糸紙紫肢脂⾄至視詞詩試誌諮資賜雌飼
+⻭歯事似侍児字寺慈持時次滋治爾璽痔磁⽰示⽽而⽿耳⾃
+自蒔辞汐⿅鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実
+蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝⾞車遮蛇邪借
+勺尺杓灼爵酌釈錫若寂弱惹主取守⼿手朱殊狩珠種腫趣酒
+⾸首儒受呪寿授樹綬需囚収周宗就州修愁拾洲秀秋終繍習
+臭⾈舟蒐衆襲讐蹴輯週酋酬集醜什住充⼗十従戎柔汁渋獣
+縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬
+楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助
+叙⼥女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将⼩小
+少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦
+照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦
+鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲
+醸錠嘱埴飾拭植殖燭織職⾊色触⾷食蝕辱尻伸信侵唇娠寝
+審⼼心慎振新晋森榛浸深申疹真神秦紳⾂臣芯薪親診⾝身
+⾟辛進針震⼈人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨
+逗吹垂帥推⽔水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛
+据杉椙菅頗雀裾澄摺⼨寸世瀬畝是凄制勢姓征性成政整星
+晴棲栖正清牲⽣生盛精聖声製⻄西誠誓請逝醒⻘青静⻫斉
+税脆隻席惜戚斥昔析⽯石積籍績脊責⾚赤跡蹟碩切拙接摂
+折設窃節説雪絶⾆舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅
+洗染潜煎煽旋穿箭線繊羨腺⾇舛船薦詮賎践選遷銭銑閃鮮
+前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組
+蘇訴阻遡⿏鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操
+早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装⾛走送遭
+鎗霜騒像増憎臓蔵贈造促側則即息捉束測⾜足速俗属賊族
+続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀
+駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛
+代台⼤大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧
+蛸只叩但達⾠辰奪脱巽竪辿棚⾕谷狸鱈樽誰丹単嘆坦担探
+旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知
+地弛恥智池痴稚置致蜘遅馳築畜⽵竹筑蓄逐秩窒茶嫡着中
+仲宙忠抽昼柱注⾍虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵
+帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚⻑
+⾧長頂⿃鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴
+槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬⽖爪吊釣鶴亭低停偵剃貞
+呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓邸鄭
+釘⿍鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添
+纏甜貼転顛点伝殿澱⽥田電兎吐堵塗妬屠徒⽃斗杜渡登菟
+賭途都鍍砥砺努度⼟土奴怒倒党冬凍⼑刀唐塔塘套宕島嶋
+悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤
+討謄⾖豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道
+銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅⾣酉
+瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄
+畷南楠軟難汝⼆二尼弐迩匂賑⾁肉虹廿⽇日乳⼊入如尿韮
+任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納
+能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭⾺馬俳廃拝排敗
+杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥
+博拍柏泊⽩白箔粕舶薄迫曝漠爆縛莫駁⻨麦函箱硲箸肇筈
+櫨幡肌畑畠⼋八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半
+反叛帆搬斑板氾汎版犯班畔繁般藩販範⾤釆煩頒飯挽晩番
+盤磐蕃蛮匪卑否妃庇彼悲扉批披斐⽐比泌疲⽪皮碑秘緋罷
+肥被誹費避⾮非⾶飛樋簸備尾微枇毘琵眉美⿐鼻柊稗匹⽦
+疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表
+評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠
+夫婦富冨布府怖扶敷斧普浮⽗父符腐膚芙譜負賦赴⾩阜附
+侮撫武舞葡蕪部封楓⾵風葺蕗伏副復幅服福腹複覆淵弗払
+沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰⽂文聞丙併兵塀幣平
+弊柄並蔽閉陛⽶米⾴頁僻壁癖碧別瞥蔑箆偏変⽚片篇編辺
+返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮⺟母簿
+菩倣俸包呆報奉宝峰峯崩庖抱捧放⽅方朋法泡烹砲縫胞芳
+萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒
+冒紡肪膨謀貌貿鉾防吠頬北僕⼘卜墨撲朴牧睦穆釦勃没殆
+堀幌奔本翻凡盆摩磨魔⿇麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒
+桝亦俣⼜又抹末沫迄侭繭麿万慢満漫蔓味未魅⺒巳箕岬密
+蜜湊蓑稔脈妙粍⺠民眠務夢無牟⽭矛霧鵡椋婿娘冥名命明
+盟迷銘鳴姪牝滅免棉綿緬⾯面麺摸模茂妄孟⽑毛猛盲網耗
+蒙儲⽊木黙⽬目杢勿餅尤戻籾貰問悶紋⾨門匁也冶夜爺耶
+野弥⽮矢厄役約薬訳躍靖柳薮鑓愉愈油癒諭輸唯佑優勇友
+宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊⾢邑郵雄融⼣夕予余
+与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔⽤用窯⽺羊耀葉
+蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落
+酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡⾥里離陸律率
+⽴立葎掠略劉流溜琉留硫粒隆⻯竜⿓龍侶慮旅虜了亮僚両
+凌寮料梁涼猟療瞭稜糧良諒遼量陵領⼒力緑倫厘林淋燐琳
+臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗
+齢暦歴列劣烈裂廉恋憐漣煉簾練聯蓮連錬呂魯櫓炉賂路露
+労婁廊弄朗楼榔浪漏牢狼篭⽼老聾蝋郎六麓禄肋録論倭和
+話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕弌丐丕个丱⼂丶丼
+⼃丿乂乖乘亂⼅亅豫亊舒弍于亞亟⼇亠亢亰亳亶从仍仄仆
+仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘
+俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆
+偃假會偕偐偈做偖偬偸傀傚傅傴傲僉僊傳僂僖僞僥僭僣僮
+價僵儉儁儂儖儕儔儚儡儺儷儼儻⼉儿⺎兀兒兌兔兢竸兩兪
+兮冀⼌冂囘册冉冏冑冓冕⼍冖冤冦冢冩冪⼎冫决冱冲冰况
+冽凅凉凛⼏几處凩凭凰⼐凵凾刄刋刔刎刧刪刮刳刹剏剄剋
+剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞
+勣勦飭勠勳勵勸⼓勹匆匈甸匍匐匏匕⼔匚⼕匣匯匱匳⼖匸
+區卆卅丗卉卍凖卞⼙卩卮夘卻卷⼚厂厖厠厦厥厮厰⼛厶參
+簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱
+呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨咫哂咤咾咼哘哥哦
+唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻
+啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐
+營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀
+囈囎囑囓⼞囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻
+址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝
+塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥
+壜壤壟壯壺壹壻壼壽夂⼡夊⼢夐夛梦夥夬夭夲夸夾竒奕奐
+奎奚奘奢奠奧奬奩奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜
+娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖
+嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺⼧宀它宦宸
+寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠⺐⼪尢尨⼫
+尸尹屁屆屎屓屐屏孱屬⼬屮乢屶屹岌岑岔妛岫岻岶岼岷峅
+岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋
+嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖⼮巛巫已巵帋
+帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并⺓⼳幺麼⼴广庠
+廁廂廈廐廏廖廣廝廚廛廢廡廨廩廬廱廳廰⼵廴廸⼶廾弃弉
+彝彜⼷弋弑弖弩弭弸彁彈彌彎弯⺔彑彖彗彙⼺彡彭⼻彳彷
+徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙
+怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙
+悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆
+惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷
+慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應
+懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀⼽戈戉戍戌戔戛
+戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗
+拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍
+搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴
+搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘
+擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫⽁攴⺙
+攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄
+旌旒旛旙⽆无⺛旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤
+晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼曄暸曖曚曠昿曦曩
+⽈曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩
+杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞
+框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺
+椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨
+椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮
+槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹
+槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢
+檐檍檠檄檢檣檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒
+欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸⽍歹歿殀殄殃殍
+殘殕殞殤殪殫殯殲殱⽎殳殷殼毆⽏毋毓毟毬毫毳毯麾氈氓
+⽓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅
+泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹
+浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮
+渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷
+滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌漾漓
+滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟
+濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣
+炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏
+燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬
+爰爲⽘爻爼⽙爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄
+狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰
+獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜
+瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃
+甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆
+疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾
+痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡
+癢癨癩癪癧癬癰癲⽨癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹
+皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚
+睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣
+矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅
+磊磬磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋
+禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉
+穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕
+竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋
+筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏
+箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌
+籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹
+粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆紂紜紕紊絅絋紮紲紿紵
+絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯
+緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵
+縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒
+纐纓纔纖纎纛纜缸缺罅罌罍罎罐⽹网罕罔罘罟罠罨罩罧罸
+羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦
+翩翳翹飜耆耄耋⽾耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳
+聲聰聶聹聽⾀聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯
+胱脛脩脣脯腋隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤
+膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾
+舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱
+艷⾋艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉
+苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼
+莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆
+菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻
+蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈蕁蘂蕋蕕薀
+薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊
+蘓蘋藾藺蘆蘢蘚蘰蘿⾌虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄
+蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿
+蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽
+蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱
+蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍
+袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫
+襁襄褻褶褸襌褝襠襞襦襤襭襪襯襴襷⾑襾覃覈覊覓覘覡覩
+覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒
+詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱
+謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證
+譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐⾗
+豕豢豬⾘豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁
+賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂
+趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊
+蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪
+躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌
+輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢
+迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉
+逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂
+鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉
+釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐
+銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮錙錢錚錣錺錵錻鍜鍠鍼鍮鍖
+鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡
+鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘
+閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯
+陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴⾪隶隸
+⾫隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽
+霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨
+鞦鞣鞳鞴韃韆韈⾱韋韜⾲韭齏韲竟韶韵頏頌頸頤頡頷頽顆
+顏顋顫顯顰顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞
+餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘
+駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢
+驥驤驩驫驪骭骰骼髀髏髑髓體髞⾽髟髢髣髦髯髫髮髴髱髷
+髻鬆鬘鬚鬟鬢鬣⾾鬥鬧鬨鬩鬪鬮⾿鬯鬲⿀魄魃魏魍魎魑魘
+魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱
+鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶
+鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈鵝鵞鵤
+鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦
+鷭鷯鷽鸚鸛鸞⿄鹵鹹鹽麁麈麋麌麒麕麑麝⿆麥麩麸麪麭靡
+黌黎黏黐黔黜點黝黠黥黨黯黴黶黷⿋黹黻黼⿌黽鼇鼈皷鼕
+鼡鼬鼾齊⿑齒⿒齔齣齟齠齡齦齧齬齪齷齲齶龕龜⿔龠⿕堯
+槇遙瑤─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕
+┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮
+┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇
+╈╉╊╋①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳Ⅰ
+ⅡⅢⅣⅤⅥⅦⅧⅨⅩ㍉㌔㍍㌧㌶㍑㌍㌦㌫㍊㎜㎝㎞㎎㎏㏄
+㎡〝〟№㏍㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼∮∑∟⊿啞𨳝焰鷗喝
+嚙㵎俠軀櫛𥡴繫荆𨻶鹼昻麴栅屢杓繡渚蔣醬蟬搔驒琢巽簞
+塚摑溺塡顚屠禱瀆囊剝潑醱頻頰麵萊遼漣煉蓮蠟兔冕冤𡨚
+屛攢柺梎𤏐爨蔾睢︑︒︳︱︲⁝︙⁚︰︵︶︹︺﹇﹈︷︸
+︿﹀︽︾﹁﹂﹃﹄︻︼ゔゕゖ噓¦'"◁▷⇩⇧⇦⇨▢♧
+♡♤♢㎠㎢㎤㎥㎗ℓ㎘㎳㎲㎱㎰㎅㎆㎇㏋㎐㏔㎖㌢㌖㌘㌕
+㌃㌣㍗㍂㌹㌻㌀㌱㍇㌞㌪㍿℡☎〶〠🄀⒈⒉⒊⒋⒌⒍⒎⒏
+⒐⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇㉑ⅰⅱⅲ
+ⅳⅴⅵⅶⅷⅸⅹ㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛⒜⒝⒞⒟⒠⒡⒢⒣
+⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵㉃㈽㈿㈴㈸㈳㈼
+㉂㈾㈶㈵㈻㉀㈺㊰㊭㊩㊯㊔㊪㊘㊫㊒㊑㊓㊬㊮㊖⎫⎬⎭⎧
+⎨⎩㏌㌅㎟㎣㎦㊞㎈㎉㏈∭㈰㈪㈫㈬㈭㈮㈯㈷㉁➡⮕⬅⬆
+⬇◉♠♥♣♦☀☁☂☃☞☜☝☟㊙⓪ⅪⅫ▁▂▃▄▅▆▇
+█▏▎▍▌▋▊▉▔▕╭╮╰╯═╞╪╡◢◣◥◤╱╲╳
+︐
+
+Adobe-Japan1-1
+
+凜熙❶❷❸❹❺❻❼❽❾ⅺⅻⅿℊ℉℻〄⇆⇄⇅⇵ヷヸヹ
+ヺ㊝㍻㌳㍎
+
+Adobe-Japan1-2
+
+纊褜鍈銈蓜俉炻昱棈鋹曻彅⼁丨仡仼伀伃伹佖侒侊侚侔俍
+偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匤卲厓厲
+叝﨎咜咊咩哿喆坙坥垬埈埇﨏增墲夋奓奛奝奣妤妺孖寀甯
+寘尞岦岺峵崧嵓嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑
+愷愰憘戓抦揵摠撝擎敎昀昕昉昮昤晥晗晙晴晳暙暠暲暿曺
+朎杦枻桒柀桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚
+洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜
+煆煇燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮璉璟甁畯皂
+皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈
+綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷
+詹誧誾諟諸諶譓譿賰賴贒赶﨣軏逸遧郞都鄕鄧釚釗釞釭釮
+釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥
+錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒﨩隝隯霳霻靃靍靏
+⾭靑顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑
+
+Adobe-Japan1-4
+
+€ΩffffifflāīūēōĀĪŪĒŌ⅛⅜⅝⅞⅓⅔⁰⁴⁵⁶
+⁷⁸⁹₀₁₂₃₄₅₆₇₈₉ǍĚẼǏĨǑǓŮŨǎěẽ
+ǐĩǒǔůũɑάὰǽɔəɚɛέὲȷŋɵʌʒʃː↉⅖
+⅗⅘⅙⅚⅐⅑⅒🄐🄑🄒🄓🄔🄕🄖🄗🄘🄙🄚🄛🄜🄝🄞🄟🄠🄡
+🄢🄣🄤🄥🄦🄧🄨🄩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩㉜㉝㉞㉟㊱㊲㊳
+㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜ
+ⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁ
+ⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ㋐㋑㋒㋓㋔㋕㋖㋗㋘㋙㋚
+㋛㋜㋝㋞㋟㋠㋡㋢㋣㋤㋥㋦㋧㋨㋩㋪㋫㋬㋭㋮㋯㋰㋱㋲㋳
+㋴㋵㋶㋷㋸㋹㋺㋻㋼㋽㋾㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉㊐㊊㊋㊌
+㊍㊎㊏㊟㊠㊡㊛㊚㊣㊢㊗㊜㊕㉄◌⓿❿⓫⓬⓭⓮⓯⓰⓱⓲
+⓳⓴🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣🅤🅥🅦
+🅧🅨🅩🄰🄱🄲🄳🄴🄵🄶🄷🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃🅄🅅
+🅆🅇🅈🅉🈂🈷⃞⬚🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹🅺🅻🅼🅽🅾🅿🆀
+🆁🆂🆃🆄🆅🆆🆇🆈🆉㏚℀㏂℅㍱㎍㎛㏗㏘㌁㌂㌄㌆㌈㌇㌊
+㌉㌋㌌㌎㌏㌐㌑㌒㌓㌗㌙㌚㌛㌜㌝㌟㌠㌡㌤㌥㌨㌩㌭㌮㌯
+㌰㌲㌴㌵㌼㌷㌸㌺㌽㍁㌾㌿㍀㍃㍄㍅㍆㍈㍋㍌㍏㍐㍒㍔㍓
+㍕㍖ℵϐ∊ℏϕϛϑ⚾♨♩♬〻〳〴〵‼⁉∓≃≲≳〘〙
+⦅⦆⎛⎝⎞⎠⎡⎣⎤⎦⎜⎟⎢⎥⎪〞✂〽ゟ࿖∅⊠⊖⊘⊕
+⊗⚠◀▶⇐↔↘↙↖↗⇌⇋⮂⮃⭠⭢⭡⭣⭤⭥〰⌇❀✿⛋
+◻▫◼▪✚⬦⋄⬥⬩⚪◦⚫❖﹅﹆逸謁緣⿈黃溫禍悔海慨
+槪渴褐漢器既祈虛響勤謹揭擊硏穀殺祉視煮社者臭祝暑署
+涉狀眞節祖僧層巢憎贈卽嘆著徵懲禎突難梅繁晚卑碑賓敏
+侮塀勉步墨每免戾祐欄隆虜淚類曆歷練鍊錄𠤎貟⻗⺽𦥑𫟘
+銳閱沿芽槪杮⻆割𦈢舘㐂旣𠮷𩵋卿强𫞎⺩俱契恵⺼憲权𠩤
+訁戶吳娛抅浩吿𫝆𫝷歲產䬸巿滋玺𠮟勺爵周将⺌𭕄⺍尙𠀋
+宂城⻝⻟飠⻞𩙿㞍⺗㣺真⺅亻𠆢𮕩㔟𫝑成⻃覀稅說絕澘揷
+瘦⻊𧾷𣳾㐧脫炭⺮𥫗彫潮圡𡈽冬糖吞㮈內寧丷⺪𤴔彥姬姬
+庙㑨龴勐门𫞉栁諭輸𥙿⺷躶蘭旅鿄类廉連⺹耂𦚰⺇𠘨𠂊𠦄
+卉⺋㔾呕夹孶寃尔㟢峦么拔𦦙挛晣𣏌杞槶榆𪧦毌渗沪⺦丬
+瓯畵痬癎㾱睪瞩鿆筓𫞽䉤絣繈𮉸𠔿⺳𦉪腁䑓艹⺾艹⺿艹⻀
+兹荚䔥藴𠂰虽㐮裆䟦𮛪迈𨦇𨸗頹騈鯟𫠚𤋮𤋮厉﨑桒𣲾𠘑丄
+丅丟丫丯丰乀乁乄⺃乚乿亍亖亹仐仠份仿伋伕你伻佉佔佺
+佽佾侗侾俏俽倀倁倐倛倧倮偗偦偪倻傏傖傜僌僦僩僯儈儋
+儐儛儞兟冡冼凮凴刁⺉刂刓剉剡剦劓勈勰匊匋匾卌卋卡卬
+厫叚另叵吧呍呦呫呴咍咖咡咭咹咿哆响唎唫唵啊啠喈喎嘈
+嘎嘏嘷嘿噉噋噏噦噩噯噱噲嚕嚚嚬嚭嚱囉囝囤圊圕圣圯圳
+圴坌坰垌垜垸埦埭埵埶埿堉堠堲塼墀墩壎壐壔壚壩夌夤夯
+奡奭姊姒姝姣姤娄娌娣婇婕婣婭婾媞媧媬媳嫠嬀嬙嬥嬭孁
+孼孾孿宊⺏尣尫尰屣屩屼峋峒峴崤崦嵃嵆嵊嶒嶔嶙嶠巘巠
+巸帀帒帔帕帘帮幘幫幬庨庪庾庿廒弇弎弜弝弢弨弶弻彀⼹
+彐彘彤徉徜徧徤徯徸⺖忄忉忡忩忭忼怗怚怳恡恿悞悤悰惋
+惛惸愒愓愔愜慼憍憟憨懂懟戕戩扃扆⺘扌扑扖拄拼挊挍挘
+挹捂捃捥捴捽掄掇掐掞揑揜搉搐搢摔摛摭摻撾撿擥擷擻攄
+攖攙敇敧斁斅旂旰旲昬晌晛晜晡晫暤曈曬朅朓朳杈杌杶杻
+枰枲柹柗柙柰栬栰栱桛桲桵桺梄梥梲棐棖棨棭棰棱棼椑椓
+椵椻楗楣楲楿榀榦榭榷槖槗樁樏樕樨樴樾橅橐橑橖橛檃檉
+檑檝檞檟櫜櫧櫬欞欤欵歆歖歠殂殾毡毱氐氳氵⺡⺢汙汶汻
+沅沕沜泐泔泖泠泫泬泮洊洎洑洮浗浞浥涂涿淄淊淖淩渢湑
+滇滊滎滽漚漪漯漳潚潞潢潽澋澍澒澔澚澧澨澶濚濞瀹瀼灔
+灝灞灤⺣灬灾炁炕炷烓烔烘烜焇焠焱煊煒煠煹熒燋燓燖爀
+爝爫爸牁牓牕牖牜犍⺨犭犴狇狻猄猅猨猱獃獬獼玃玅玆玕
+玞玟玠玦玫玵玷玼珏珙珩珴珽琄琊琚琛琤琨琬琯琰琱琹瑄
+瑇瑋瑍瑑瑗瑦瑫瑱璀璅璆璇璐璘璜璠璣璨璫璵璿瓈瓚瓞畎
+畹疁疐⽧疒疓疴痤痹瘀瘊瘕瘖瘙瘞瘭瘵癃癋癥癭癯癱癴皤
+皥盅盌盬盼眴眶睜睟睠睲睽瞕瞪矦矰矴砆砢砭砮砰砵硨碞
+磈磌磎磤磠磡磲磷磻礱⺭礻礽祅祛祜禋禖禘⽱禸离秊秚稃
+稉稑稞稭稹穅穌穝穭穸窠窣窳窻窼竆笇笔笧笱筇筎筠筩筭
+筲箑箯篗篙簋簏簠簦簱簶籑籙籧籮籰粼粿糈糉糗糙糝糫紇
+紈紉紓紝紣絁絓絙絝絺綆綋綌緌緫緱緹縈縑縕縠繇繢繮繳
+纍纑纘罄罏⺫⺲罒⺱罓罡羑羿翎翟翥翬翮翯翺耎耑耔耤耦
+耺耼聠聱聵肞肦肫胗胘脖脘脺腊腌膁膄膴臏臹舃舡舲舴艆
+艋艏芎芮芷芾苆苾荃荑荕莆莍莒莘莩莿菀菪萏萑葊葶蒨蒯
+蓀蓂蓰蓽蔌蔴蕞薏薷藎薭蘒蘩虒虣虬虯虺蚍蚑蚘蚧蚨蛺蛽
+蜋蜓蜙蜞蜨蜾蝱螈螙螬螭螵蟖蟫蟭蠁蠆蠋蠔蠜衖衟⻂衤袘
+袪袽袾裊裒裛裰裱褆褘褙褚褧褰褾襻觔觖觥觱訇訏訕訢詎
+詿諴謟謷譃譄譔讜讞豇豔豳貤賙賡賸賾贛赩赬趄趍趕趦跆
+跎跤跬踠蹋蹬蹰蹺躒躮躳軑軔軹輗輶辦⾡辵⻍辶迠迤迶适
+逬遄邈邕邙邛邢邴郗郝郴鄗鄜鄱鄺鄽酈酛酡酤醎醞醨醭醮
+醲醼釰釷釻鈇鈨鈳鈸鉃鉇鉏鉠鋂鋋鋌鋟錍錕錟錧鍇鍒鍪鍭
+鎛鎺鎩鏁鏊鏢鏺鏽鐏鐴鐿鑕鑫鑲⻒镸閦閩閴閽闚⻏⻖阝陁
+陘隄隤隩雒嶲雞雩雱霂霉靚靣靮靳鞚鞢鞵鞶韙韞韴頊頎頞
+頣頫頾顒顓顙顬颸颺颿飈飥餲餳饀饍饜饟馱馹馺駉騂騖騤
+騧騭騮騶騸驊驖骵骶髹鬃鬠鬳鬴魳魹鮧鯁鯇鯗鯧鯫鯷鯺鯽
+鰋鰧鰪鰶鱁鱓鱣鱰鱷鴂鵂鵇鵣鵩鵼鵾鶍鶱鷃鷇鷖鷟鷫鷴鸕
+鸝麤麨麬黧黮鼐鼒鼗鼙鼯鼷鼹齁齅齗齨齱齵龐龔龢㐅你嘠
+廋⺕𣘺濹滦熳⺤爫⻌辶嶲俓僙僰凃噶橔洁淐湂滙珤琡畬硑
+蟵𣏾玨㫳㓛䐌㺊龽䯨龼㻚㬢龾䕺䂓䙥䄃䊓䚮㒈𢘉
+
+Adobe-Japan1-5
+
+⊄⊅⊊⊋∉⌅⌆∥∦≢≅≈≶≷℧⹀⋚⋛⅕⌘
+ḾḿǸǹǖǘǚǜĄ˘ĽŚŞŤŹŻą˛ľśˇşťź˝
+żŔĂĹĆČĘĎŃŇŐŘŰŢŕăĺćčęďđńňő
+řűţ˙ĈĜĤĴŜŬĉĝĥĵŝŭɱʋɾɬɮɹʈɖɳ
+ɽʂʐɻɭɟɲʝʎɡɰʁħʕʔɦʘǂɓɗʄɠƓɨʉ
+ɘɜɞɐɯʊɤɒʍɥʢʡɕʑɺɧ͡ˈˌˑ‿̏˥˦˧
+˨˩̥̬̹̜̟̠̩̯̽˞̴̤̰̼̝̞̘̙̪̺̻̚ɢ
+ɣɪɴɶɸʀʏʙʜʟʰʲʷˁˠˡ⊞ⁿꞵꭓ〼ヿ〖〗♮
+♫⤴⤵⦿゠⧺⧻ς⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾☖☗▱ㇰㇱㇲㇳ
+ㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ⎾⎿⏀⏁⏂⏃⏄⏅⏆⏇⏈⏉⏊
+⏋⏌✓␣⏎◐◑◒◓⁇⁈⁑⁂㆐㆑㆒㆓㆔㆕㆖㆗㆘㆙㆚㆛
+㆜㆝㆞㆟⎰⎱♲♳♴♵♶♷♸♹♺♻♼♽゙゚⃝︗︘佈佟
+佪佬倎倘偁僲僐儆儃儵兕兗㒵凊凢剗勌勖勻匜卣厝吒呿咈
+啐喁喭嗎嘻嚞嚩嚳坷坼𡌛埏埤塤墉𡑮壒壠虁妋妒姃娓婧婷
+媄嫄𡢽孽宓尒屮𡚴屺岏岟岣岪峐𡸴崍嵇嶁嶤嶧巋幞廹开异
+弣弽彔彽怍怔怘怵恇悝惔惝愫憼憹戢扚扯拖捼揥摹擄擐攩
+斝昺昢昫昰昳晈𣇄晷晸暍暻曛曨杇极枓枘枛柼栝梣椊楉𣗄
+楂楤榥槏㮶㯃槩槵𣜿樻𣝣檔檥㰏欛欬歧殩殭毗毿氅汴沘泻
+泆洱洹洿浘涔涪淛淝湄湞溱滁漐潙潡潾澌澠澼濇濊濰灎灵
+炤烤焫焞焮煑煨熅熇熺燄爕㸿犛𤟱猧獐獦玢琫瑆瑢瑭璦璩
+瓉瓿甗㽲痎瘂瘈癤皁皝皪皶盎盔盦盱眊眙睍睎睺瞀瞔矠𥒎
+硃确碰𥔎碭礀礜礮礴祆祹秈𥝱秔秞秫秭窅𥧄竎竽笒笭笻筯
+簁簳𥶡籭籹粏粔粠糕紱絜綃綦緂縨羗翛耵耷胊胠胳腠腧腨
+腭膻臊臗䑛艠艴𦫿芡芣芤芩芿苕苽茀茢茭茺荇荽莧菏菑菡
+萁萆葟葰葳蒅蒞蒺𦹀蔲蔞蔯蕤蕺薌薢藋藭藿蘄蘅蘐𧃴蘘蘸
+虗虢䖝虵蚸蛼螇䗪蠊蠐裎𧚄褲褹襀覔觶詇詝詡詵諐譆譙譩
+讝豉豨趯跑跗踣踽蹻𨉷䡄軺輞輭轔𨏍迨迮逈逭邗邳邾郄郅
+郇郯鄔鄖鄢鄣鄯鄴醃釱鍉鍤鍥鎣鏟鐄鐳鑊鑣鑱閎閟閬閶闋
+闐闓䦰闞隥雯靎鞕鞮鞺韁韉韛顖飧饘騃髁髃髎髖鬂鬈䰗鬭
+魞魦鮄鮊鮞鯎鯥鯸鰣鱏鱐鱥鴝鴞鵃鵒鶊鶖鷀鶬鶼𪆐鷧鸇麞
+麯龗𠂉丂丏丒丩丮乇𠂢乑㐆𠂤乩亝㐬亼仃仈仫仚仱仵伖佤
+伷伾佘𠈓佷佸侂侅俦侲俅俋俒㑪俲倓倜偎偓偣傣傈傒傓傕
+傪𠌫傱傺傻僄僇僳𠎁僎𠍱僔僡㒒𠏹儗𠑊兠𠔉关冃冋㒼冘冣
+冭㓇𠗖凳划刖𠝏剕剜剬剷劄劂𠠇劘𠠺劤劺劻勊勑𠢹勷匵卂
+𠥼𠦝卧卺厤厴𠫓厷叀𠬝㕝㕞叕㕣叴吤吨㕮呃呢呬咕咠咦咮
+咷咺哃𠵅哬哯哱哳唀唁唉唼啁㖦啇㖨啤𠷡啽喂喑㗅嗒𠺕𠹭
+喿嗉嗌嗑嗝㗚嗢𠹤嗩嘨𠽟嘇嘐嘰㗴嘽噀噇噞噠噭㘅嚈嚌嚝
+嚨嚲囅囍囟囨囶囷𡈁𡉕圩𡉻坅坆坍𡉴坨坯坳坴坵坻𡋤𡋗垚
+垝垞垨埗𡋽埌𡌶𡍄埞埰㙊埸埻埽堄堞堧堹𡏄塉塌塧墊墋墍
+墏墐墔墝墪墱𡑭壃壍壢壳壴夅夆复夔𡗗㚑夽㚙奆㚖𦰩奟𡙇
+奵奶奼妟妮妼姈姍姞姧姮𡜆𡝂㛏娍娗娧娭婥婺媋媜媟媠媢
+媱媵媺媿嫚嫜嫥嫰嫮嫵嬈嬗嬴孌孒孨孯宁宄𡧃宖宬㝡㝢寎
+寖㝬㝫寱寽㝵尃尩𡱖屟屧屨屰𡴭𡵅𡵸𡵢岈岊㟁𡶡𡶜岠岢岧
+𡶒岭岵𡶷峉𡷠𡸳崆崐崫崝崠崱崹㟨嵡嵪㟴嵰𡼞㟽嶈㠀嶗嶰
+嶴𡽶巑巗𡿺巤巩㠯㠶㡀帟帾幉㡜幖㡡幭幮𢅻庥庬庹廆廙𢌞
+廽弈𢎭弞彇彣彲彾徏徢忇忋忒忓忔忢忮忯忳㤗怢怤㤚恌悕
+您𢛳悱悾惈惙惮惵愐愙愞愺㥯慁慆慠𢡛憒憓憗憥憭𢢫懕懝
+懵𢦏戣扒扡扤扻扭扳抙拕𢪸拽挃挐𢭏𢭐挲挵挻挼捁捄捎𢭆
+捙𢰝𢮦捬掙𢰤掔掽揔揕揠揫揬揲搞搥搩搯摚摝摳摽撇撑撟
+擋擌擕擗𢷡擤擿㩮攏攔㩳攞攲敄敔敫敺斄斊斲斵斸斿旉旔
+㫖旹旼昄昈昡昪晅晑晎㫪𣇃𣇵𣆶晪晬晭晻暀暐暒㬎暭暱暵
+㬚㬜㫗朁朒𣍲朙𣏓𣏒杍杔杝𣏐𣏤𣏕杴𣏚枒𣏟荣栐柃柈柒柛
+柷𣑊𣑑𣑋栘栟栭𣑥栳栻栾桅桉桌桕桗㭷桫桮桼梂梐梖㭭梘
+梙梚梜梪梫梴梻棻𣓤𣕚棃棅棌棙棤棥棬棷椃椇㮇𣖔㮍楆楩
+楬楺榒㮤榖榰榺榼槀槑𣘹𣙇𣘸槣槮槯槳㯍槴槾樑樚樝𣜜樲
+樳樿橉橺橎橒橤𣜌檋㯰檡𣝤檫檽櫆櫔櫐櫝𣟿𣟧櫱櫲櫳櫽𣠤
+欋欏欐欑𣠽欗㰦欯歊歘歬歵⺞歺殁殛殮𣪘殽毇毈毉毚毦毧
+毮氂氊氎氶𣱿汍汛汭沄沉㳃沔沗沭泂㳒泜泩泭𣴀洀洤洦洧
+汧洯洼浛浠浰涀涁涊涍涑涘𣵀𣷺𣷹𣷓涫涮涴淂洴淈淎淟淶
+渶渞㴑渲湈湉湋湌湏湓湔湗湣㴞溓溧溴滃漵滫滹滻漊漌漘
+漥漶漼𣽾潒潗潠潨澐澖澾澟澥澯㵤濈濉濩𤂖濼瀀瀊瀣𤄃瀺
+灃灇灋㶚灥灩灮灶炆炗𤇆炟炱𤇾烬烊烑焃焆焈焌㷀焯煐煓
+煞㷔熖熀熛熠熢熮熯𤎼燙燜爇㸅爴爹牂牗牣𤘩牮牯牸牿犎
+𤚥犮犰狁㹠狌㹦㹨狳狺猇猒猘猙㺃猹猬猳猽獒㺔獫𤢖獮獯
+獱玁玊玔玘玜玥玹玿珅珋珡珧珹琓珺琁瑓瑀瑃瑒瑝璁璈𤩍
+璒璗璙璡璥璪璹璻璺瓖瓘瓫𤭖瓺𤭯甠甤甪㽗𤰖甽甾畀畈畐
+畒畲畱畺畽畾疌㽵疢㽷疰疷疿痀痆痏痓痝痟痠痧痮痱瘃瘘
+瘇瘏㾮𤸎瘓瘛瘜𤸷瘥瘨瘼瘳𤹪㿉癁𤺋癉癕㿗癮皕皡皠皧皨
+皯𥁊盉𥁕盨𥄢眗眚眭眵𥆩䀹𥇥𥇍睘𥈞睼𥉌䁘瞚瞟瞢瞤矞矟
+矤矪矬矻𥐮砅砉砍砙砬硇硪𥓙碊碔碤碝碟碻磕磦磹磺磾𥖧
+礐礛礥祊祘䄅祧祲禕禡禩禴秂秇秌种秖䅈𥞩𥞴䅏稊稕稛䅣
+稸穇穖穙穜穟穧穪穵窂窊窐窬𥧔䆴窹窾䆿竌竨竴𥫤𥫣𥫱笽
+笪笮笯䇦䇳筿筁䇮筕筹筤筦筳𥮲䈇箐箛䈎箵箼篅篊𥱋𥱤篔
+篖篚篪篰簃簎籅籊籗籞籡籩籯𥸮𥹖𥹥粦𥹢粶粷𥻘糄𥻂糍𥻨
+𥼣糦𥽜糵紃䋆紒紞𥿠𥿔紽紾絀絇𦀌𥿻䋖絚絪絰䋝絿𦀗綈綗
+𦁠綝綧綪綶緀緗緙緦䌂𦃭縉縐縗縝縧縬繅繵繾纆纇䌫纚䍃
+缼缻缾罃㓁𦉰𦊆罣罤罭罽罾羐养𣴎羖羜羭𦐂翃翏翣翲耊耈
+耖耬耰聃聦聻肙肜肤肧肸𦙾胅胕胦脍胵胻䏮脵脞䏰脤脧脬
+𦜝脽䐈腩䐗䐜膅䐢膘膲臁臃臖臛𦣝臤𦣪臬臽臿𦥯舄𦧝舙舢
+𦨞舼艉艅𦩘䑶䑺艗𦪌艜艣𦪷䒑艽艿芃芊芓芧芨芲芴芺芼苢
+苨苷茇茈茌荔茛茝茰茼荄荗䒾䓔䒳莔莕莛莝菉菐菔菝菥菹
+萕𦱳萗萹葏葑葒葙葚葜𦳝葥葸葼蒁䔍蒗蒦蒾䔈蓎蓏蓓𦹥蓧
+蓪蓯蓱蓺蔛蔤蔥蔫蕏蕯䕃蕑蕡蕢𦾔蕻蕽蕿薁薆薓薝薟𦿸𦿶
+𦿷薼藇藊藘藙藟藡藦藶蘀蘑蘞蘡蘤蘧𧄍蘹蘼𧄹虀虓虖虷蚇
+蚉蚜蚝蚱蚳蛁蛃蛑蛕蛗蛣蛦䖸蜅蜇蜎蜐蜟蜡蜣蜱蜺蝀蝃蝑
+蝘蝤蝥蝲蝼𧏛𧏚螧螉螋螓螠𧏾䗥螾𧐐蟁蟎蟟𧑉蟣蟥蟦蟪蠓
+蠨蠮蠲蠼䘏衊衘𧘕𧘔衩𧘱衯袠袼裀𧚓裑裓䙁褁𧜎褷𧜣襂襅
+襉𧝒襢覉覐覟覰覷觘觫䚡觳觽觿䚯訑訔𧦅訡訵訾詅詍詘誮
+誐誷諗諼𧪄謊謅謍謜謭䜌譑譞譶讁讋讔讕谹𧮳谽𧮾𧯇豅豏
+豗豩豭𧲸貓貒貙䝤貛賖賕𧶠賱𧸐贉贎跈跙踌䟽跽踆𨂊踔踖
+踡踢踧𨂻䠖踶踹蹔蹢蹭蹯躘躞躵躻𨊂䡎𨋳輀輈輫轀轊轘𨐌
+辤辴𨑕迁迆﨤迊迍迓迕迱迵迻逌逷𨕫遃遝𨗈𨗉邅邌邐邡䢵
+邰邶郃郈𨛗郜郟𨛺郶郲鄀郫郾郿鄄鄆鄘鄞鄷鄹酆酇酗酙酴
+酹醅醳醶釃釄𨥉𨥆釬鈁鈖鈗𨥫鉂鉊鉖鉡鉥鉨𨦈鉼鉽鉿銉銍
+銗銙銟銫𨦺𨦻銲銿鋀鋆鋎鋥錑𨨞𨨩鋷錩𨩱𨩃鍑鍚鍫鍱鍳鎡
+𨪙𨫍鎈鎋鎏鎞鏵𨫤𨫝鏱鏇鏜鏧鐉鐖鐗鏻鐲鐻𨯁𨯯鑭鑯镹閆
+閌閍𨴐𨵱闈𨷻𨸟阬阳阴𨸶阼陡𨺉隂𨻫隚𨼲䧧隳隺隽䧺𨿸雘
+雚雝䨄霔霣䨩霶靁靇靗靛靪𩊠𩊱鞖鞞鞱鞲鞾韌韑韔韘韡韱
+頄頍頔頖䪼𩒐頲頳頥顇顦颫颭颰𩗏颷颻颼飂飇飋飡飣飪飰
+飱飳餈䬻𩛰餖餗𩜙餚餛餜𩝐餱餺餻餼饁饆饎饠馣馦馽馿駃
+駔駙駞𩣆駰駹駼騊騑騚騠騱驄驌驘䯂骯䯊骷䯒骹𩩲髆髐髒
+髕髠髥髩鬌鬐鬒鬖鬜鬫鬽䰠魋魣魥魫魬魶魷鮦鮬𩷛鮲鮸鮾
+鯳鯘鯝鯪鯯鯮𩸕𩺊𩹉鰖鰘鰙鰚鰝鰢鰩𩻄鰱鰷鱅鱜𩻩鱉鱊𩻛
+鱔鱘鱛鱝鱟鱩鱪鱫鱭鱮鱲鱵鱺鳦鳲鴋𩿎𩿗鴑鴗鴘𪀯䳄𪀚鴲
+䳑鵊鵟鵢𪃹𪂂鵳鵶鵷鶄鶙鶡鶿鶵鶹鶽鷉鷚鷠鷣䴇鸊鸂鸍鸜
+鹻𢈘麀麅麛𪎌麽𪐷黟黿鼂䵷鼃鼺鼽齆齓齕齘𪗱齝𪘂齩齭齰
+𪚲⺬㘔㢭㷌㿜䖾䘐䭾䰸䳡丌丣两乹仳伌伙伫伮伱侄侞侷倄
+倌偌偟偢偷傎傞傢僃僨僱僾儇儌儍儎儳儸兴冄冸冺凈减凑
+凓凔凘凟刅刦刨别刱刲刵刼剚剠剮剸剹劊劌勡勩勱匃匑匟
+匭匲匽卥卭卹卾厔厙厪厯厺叁叄叅叠吓吪吱吴吵呌咧咪咱
+咻哎哪哼唅唈唕唧唪唶啑啦喏喒喔喤喲嗃嗆嗓嗛嗬嗮嗱嗶
+嗸嘅嘍嘑嘒嘬嘵嘹噍噔嚅嚟嚦嚷囌囏囙囡囫园囱圇圌圚圛
+圝圬圮圽圾坟坫坭坺垃垗垮埕埧堍堦塍塏塟塭塿墁墘墼够
+夣奙她妗妯妳姟姱姸媲媸嫪嫶嬛嬝嬡嬸宷寗寠尟尪尬尶屙
+屜屭峝崁崴崽嵙嵾嶃巇巹帨帲帵幛幨幪幷庀庋庳庽廑廔廕
+彍徬忪怇恉恔恧悻惄惽愊愖愪愶慞慤慻慽慿憝憸懜懢懥懨
+戄戇戱戹戽扺抐抨拚拴挖挪挶捆捋捓捱捵捿掂掊掮掯揪揸
+揹搒搘搠搤搪搵搽搿摒摟摴撐撘撙撬撳擭擰攛攟攮敉敠斒
+斕斴斾旈旎旐旟晾暋暌暳曀曏朥朵杕枀枏枑枤枱枵枾栨梆
+棫棵椗椳椸楛楥榨榫榯槥槱橊橕橧橱檯櫈櫉欃欻欿歽歾殰
+毷毹氄氉氍氬汊汒汔汹沬沴泒浡浼涹淰湅湳湻湽溉溼滚滛
+漦漩漰澇澝澮澷瀍瀠灉炘炰烕烖煅熲燴爗爟牃牏牐牚牠牨
+牷犄狉狥狴猂猋猞猢猺猻獍獘獧瑲璯瓟瓤瓴瓻甖甡甿畞疙
+疤痁痄痌痗痜痡痯瘄瘌瘝瘲瘸癅癊癟皭皽盙盫盰盹眀眎眢
+眨眯眹眾睅睊睏睞睤睧睬瞄瞌瞍瞖瞧瞯瞷瞾矉矑矙矱砷硜
+硾碘碡碱碳磉磓礌礟礧礨礿祂祔祫祼禫秄秪稂稌稰稺穄窀
+窆窔窵窽竾笫筷箠箬箰篨篲篸篼篾簉簨簯籂籒籓籛籜籝籲
+籽粇粞粺糇糓糚紼絍綂綅綍綑綞綳綹緐緥緵緶縯縶繄繯繸
+纁缽罛罝罥罱罿羀羋羢翽翾翿耇耍耞耹肈肎胏胔胭胰胷胺
+胾脃脗脰腗腯腳膋膐膛膞臋臕臝臞臡臯臶舀舋舓舔舚舺艄
+艭芄芉芑芪芰苐苪苯苶荖荸菸菼葘蒓蒱蒽蓻蕆蕖蕝薅薘虂
+虆蛀蜔蜢蜮蜹蝝蝻螌螎螗螘螞螣螮螿蟉蟚蠘蠛蠭蠺衅衋衎
+衕衚衮袚袛袜裍裠裯褎褏褦褵襚襜襫襰襼覥覵覼觕詉詗詧
+詾誆誖誶諉諑諝諬諵謆謏謑譅譒譭譸譼譾讅讟豋豓豻貺賅
+賉賒賬賵賷贁贃贗贜赮趑趟趫趲跕跧跱跲跴踁踋踦踱蹀蹁
+蹍蹏蹜蹡蹩蹱蹵蹷躉躐躕躚躧躩躭軨軰輇輘輥輧輬輵輺轃
+轇轑轕辠辡辢辥逄逛逯遌遛遰遴遹邋邘邠邲邽郉郰鄅鄥酚
+酧酺醊醑醕醰醻醽釂釅鈀鈉鈣鉶銎銯銻銼鋁鋃鋅鋈錔錳錶
+鍘鍿鎂鎊鎻鏌鏦鏹鐂鐍鐎鐮鑌閈閡閿闆闉闑闒闠闤闦阤阱
+阸阽陔陴陻陿隁隃隉隖隮霃霛霡霢霨霱靧靶靽靿鞙鞟鞬鞹
+韍韠韯頇頦頮顢顣颴飅餂餑餕餵饈饔饞駡騌騐騣驁驑骽骾
+鬁鬉鬋鬍鬎鬙鬵魈魕魨鮀鮆鮐鮝鮰鮿鯈鯿鰂鰜鰵鱄鱖鱡鱨
+鴰鴽鵪鵻鷥鷩鷳鹺麂麃麄麰黤黰黲鼉鼏鼔鼛鼢鼦鼪鼫鼴齚
+齯龞龥𠃵𤸄𤿲𧵳再善形慈栟軔㗞龿鿀鿁鿂𪊲𠅘𠖱𠛬𫝓𠵘𫝚
+𫝜𥧌𫝶㦤㦸𢹂𫝼㩜𠟈𢿫𧦴㫄㫋𫞂㪅𫞋㯳櫸𣟱𫞔鿌㴱𤁋㹀㢡
+𫞬𫞯𫟉𫟏𫟒𦲞䜟𧰼䠞𫟰𫝥𫠍𫠗鬝鬬倂凞匇寬廊昞朗灊凞啡
+氺穠𦍌蠃閫靕𩸽𪘚
+
+Adobe-Japan1-6
+
+΄΅ĐĦIJĿŊŦijĸŀʼnŧĊĖĞĢĠİĮĶĻŅŖŲ
+ǗǛǙǕŴŶċėǵğġįķļņŗųŵŷ℮∆∏≤≥◊
+ΆΈΉΊΪΌΎΫΏάέήίϊΐόύϋΰώЂЃЄЅІ
+ЇЈЉЊЋЌЎЏђѓєѕіїјљњћќўџ⒑⒒⚽➿
+丵乜乣乨乴乵亗亯仛仢仨仯仾伂伈伒众伳伵佀佂佋佌佒佣
+佮佱佹侁侉侌侎侐侓侙侟侹侻侼侽俀俁俆俈俌俜俢俰俼倇
+倊倗倝倰倲倳倵偅偊偑偒偙偠偧偭偱傁傃傄傆傊傐傛傟傠
+傡傯傰傹傽僀僓僜僝僟僢僤僶僺儙儜儝儣儧儨儬儭儯儱儴
+儹兂兏兓兘兦兾冎冿凂凒凕凥凲凷刘刢剅剘剟劀劅劕劖劗
+劚劥劧劰劶劷劸劽勄勆勏勔勜勥勨勪勬勴勶匌匓匘匛匞匥
+匧匨匩匫匬匰匼卙卛厃厇厈厎厡厵厸厽叏叒叓叞叧吂吚吡
+启呄呇呏呞呤呧呩呭呮咁咃咅咉咑咟哊哠哶哾唌唍唲唻唽
+啉啍啘啚啛啿喓喗喣嗁嗋嗗嗘嗞嗿嘊嘙嘳嘼噁噃噄噆噡噢
+噣噵嚄嚋嚧嚫嚾囋囐囜囥囦囧圁圂圑圠圢圤圥圪圿坒坢坧
+坮坱坹坾垁垔垙垟垡垕垧垩垽埝埩埾堃堈埡堌堛堟堭堿塐
+塕塨塸墇墈墌墖墠墡墢墦壄壂壈壖壝壡夒夓夝夡夨夰夳夵
+夶夿奃奒奞奫奯奲奻妌妎妕妧妭妰妷姁姄姯姲姴姷娀娎娒
+娞娤娨娪娰婄婅婈婌婐婞婻媐媓媖媙媻嫆嫈嫏嫽嬁孋孞孮
+宆宎宐宑宔宨宩宭宯宱宲宺宼寁寍寏寙寚寯寴尌尗尦尮尲
+尵屚屴屵屻屽岇岒岝岲岴峗峮峱峲崒崣崿嵈嵕嵑嵟嵠嵢嵤
+嵹嵺嵿嶊嶓嶕嶛嶟嶫巃巎巙帇帍帠幋幐幑幜幰庎庢庤庱廌
+廎廜廞廥廫弆弙弤弫弬弮弰弿彄彛彠彯彴彵彸彺徍徖徝徫
+徰徱忈忐忑忨忬忲忶忺怊怓怟怭恀恈恑恖恗恱恾悂悆悈悎
+悑悓悘悢悥悷惂惉惊惎惏惢惥惼愂愇愌愗愢愱愵愹慅慉慬
+慲慸憀憁憃憄憋憜憠憪懀懁懎懏懞懡懧懩懬懭懯戁戃戜戠
+戧戫扂扄扐扔扜扽抍抎抏抳抶抷抺抾抿拎拪拲挄挋挓挩挭
+捊捒捔捘捛捦捭捸掕掚掤掦掭揁揅揈揎揓揳搊搰摋摏摓摜
+摡摣撅撏撛撡撣撦撨撽擉擑擩擪擵攁攈攉攊攓攦攱攺攼攽
+敃敐敒敟敽斘斠斣斦斮斳旖旘旴旵旾旿昍昑昒昖昝昣昦昩
+昹昷晀晆晊晘晠晵晿晹晼暚暛暜暟曂曃曌曎曔曟曫曮朇朜
+朠朢朾杅杬构枎枖枙枼枽柂柅柉柜柡柦柲柶栔栙栧栯栿桊
+桘桯桰桱桹桻梈梡梩梮棑棓棜棝棪棶棽椆椉椐椖椱楅楎楦
+楰楱楻榍榡榸槅槈樀樃樠樤樷橪檁檆檇檛檰檱檴檾檿櫌櫕
+櫖櫰櫼欂欆欇欉欨欫欶歍歒歝歫歮歰殅殗殟殠殢殣殨殬殸
+殹毃毄毣氒氙氟氦氧氨氮氻汋汏汫汸沇沟沰沲泍泏泑泧泲
+泴洇洏洓洚洨浟浧涒涗涷涽淠淢淥淯淴渀渄渻湒湝湢湨溍
+溙溠溭溮溳溻滀滈滍滏滭滮漄漈漍漖漛漻漭潏潓潝潬澃澓
+澦澰濅濨濽瀗瀯瀴瀷灄灈灕炔炖炛炴烺焅焋焭焸煁煋煗煚
+熌熚熰熿燀燌燚燸爈爉爓爚爤爯牅牎牞牫牱牻牼犉犓犨狕
+狖狘狟狾猍猓猲猵獖獝獞獟獠獩獹玀玎玐玓玗玪玭珆珌珓
+珝珦珷珻珿琀琑琭瑧瑨瑮璏璑璚璮璱璲瓌瓐瓓瓛瓨瓪瓼甆
+甒甧甩甶甹畃畇畗畟畡畻畼疅疕疜疺瘒瘣瘩瘹瘺癀癄癙皅
+皌皍皟皢皣盁盋盠盶眆眒眔眕眜眮眽睂睒睖睗睰睳睴瞮瞱
+瞵矃矒矕矸砎砑砝砣硄硈硌硒硞硠硡硣碏碨碬碲碽碿磇磒
+磖磛磟磪磳磶磿礆礚礞礠礩礭礵祄祋祏祑祩祻祾禌禑禓禜
+禨禯秏秝秠秢秥秱秸秼稇稡稧稫稯稴稵穈穕穥穾窋窑窞竉
+竛竩竬竱竻笟笣笩笰笴笿筀筪箄箉箎箖箥箲箶箺箻箽篂篈
+篛篴篵篹篺簂簄簆簌簙簛簥簬簴簹簺籆籕籚籣籼粆粰粻糏
+糔糩紏紑紖紦紪紭絑絗絥絧絸絻綁綖緃緄緅緆緍緎縀緢緪
+緭緺縜縭縳縿繎繐繘繟繥纕纝纞缿罜罦羍羏羦羪羴羼翀翈
+翨耏耓耝耟耠耮耴耾聀聄聤聭肁肹胈胍胒胮胲胶胹脋脜脠
+脼腅腇腒腡腷膆膎膖膢膮臅臎臫臰臱臲臵臸舏舝舨艃艎艑
+艖艧艻芀芁芇芔芖芘芚芛芠苚苠苤苭茊茋茞茟茡茬茮茳茷
+茽荂荍荎荰莀莂莄莙莜莦莬莾荓菨萙莭萯葅葇葍葖葠葤葧
+葪葴葽蒒蒕蒩蒪蓇蓈蓌蓲蓷蔂蔃蔇蔎蔐蔜蔢蔧蔪蔳蔶蔿蕐
+蕒蕜蕟蕠蕹薉薋薠薥薧薴薶薸薽薾薿藂藚藠藨藳藼蘍蘎蘙
+蘛蘶蘺蘽虘虙虝虠虡虤虩虶蚖蚚蚡蚦蚭蚴蚵蚷蚹蚿蛅蛒蛚
+蛜蛠蛥蛧蚈蜄蜏蜯蜲蜼蜽蝅蝍蝡蝯螃螄螅螆螐螕螱蟈蟊蟕
+蟙蟜蟢蟤蟱蟳蟸蟺蟿蠉蠙蠒蠚蠞蠰蠵衁衃衈衉衑衜衠衱衹
+衻袀袟袨袺裋裌裞裧裷褍褕褖褠褨褱褺襆襏襒襗襛襡襣襮
+襳襵襺襽覍覕覛覜覠覴覶觗觩觭觹訄訅訞訠訤訦訫訬訯訽
+詀詃詓詖詜詥詶詷詺詻誀誃誋誏誒誗誙誟誩誯誳誻諃諆諈
+諊諓諔諕諰諿謋謞謰謼譂譈譍譣譹讄讍讏谸谾豑豘豛豝豙
+豣豤豦豵豶豾貆貇貋貐貜貹賆賋賏賝賨賯賲賿赥赿趂趈趐
+趞趠趬趵趷趹趻跀跅跇跊跔跥跰趼踄踅踑踳踷踸蹎蹛蹝蹞
+蹹躂躃躛躝躢躺軁軃軄軇軜軮軱軷軭輂輏輐輖輠輡輣輨輮
+輴輷轁轏轒轓轝轞轥辝辸达迀迋运迒迣迾逘逨逩逪逳逴逿
+遢遦遬邎邥郌郕郘郙郥郒鄈鄍鄐鄚鄠鄩鄮鄶鄼酃酏酓酭酻
+醁醆醓醔醘醡醦醿釓釔釙釩釪釯釹釽鈄鈅鈌鈒鈓鈘鈜鈝鈤
+鈥鈦鈮鈯鈰鈵鈶鈾鉆鉍鉘鉜鉝鉩鉮鉯鉰鉵鉹鉻銊銒銠銤銥
+銨銶銸銺銽鋇鋍鋘鋜鋝鋡鋣鋨鋬鋮鋰錀錈錜錤錪錴錷鍐鍕
+鍞鍧鍩鍯鍴鍶鍺鍽鎀鎁鎍鎒鎕鎘鎦鎨鎫鎴鎵鎶鏄鏅鏉鏋鏍
+鏓鏙鏷鐁鐈鐕鐟鐯鐽鑃鑙鑜鑟鑡鑨鑮钄钃镾閄閝閞閺闙闝
+闟阞阢阥阦阷阹阺陒陖陗陮陼陾隑隟隦雊雟雺霅霚霝靊靘
+靷靸靻鞀鞉鞗鞸鞼鞿韄韅韇韊韎韐韗韝韤韷韸韺頙頜頠頯
+頵顄顊顑顪颮飌飦飶餇餟餢餦餫餴餹饇饙饛馛馝馟馰馲馵
+駓駚駜駧駪駫駬駴駵駽駾騄騋騞騢騳騵驇驋驔驝骪骬骮骲
+骴骻骿髈髗髛髤髧髬髲髳髵髺髽髿鬀鬄鬅鬛鬦鬷鬹鬺魌魖
+魗魛魡魪魭魮魸魿鮅鮇鮉鮋鮍鮔鮚鮩鮷鮼鯐鯹鰏鰑鰞鰦鰨
+鰽鱃鱎鱞鱻鳷鳹鴜鴯鴳鴴鴺鴼鵅鵓鵔鵥鶃鶆鶎鶒鶓鶕鶗鶘
+鶪鶮鷊鷔鷕鷞鷮鷰鷾鸎鸐鸑鸒鸖麇麎麏麖麘麮麳黆黈黋黕
+黬黭黱黵黸鼑鼖鼚鼟鼱鼲鼼鼿齃齄齇齖齞齮齳齺齽龏龑龒
+龖龡龣
+
+Adobe-Japan1-7
+
+㋿
+
+
+\end
diff --git a/language/japanese/uptex-base/samples/adobe-kr-utf8.tex b/language/japanese/uptex-base/samples/adobe-kr-utf8.tex
new file mode 100644
index 0000000000..5fb76eae7c
--- /dev/null
+++ b/language/japanese/uptex-base/samples/adobe-kr-utf8.tex
@@ -0,0 +1,727 @@
+%
+% This file is generated from the data of UniKS-UTF32
+% in cid2code.txt (Version 01/31/2012)
+% for Adobe-Korea1-2
+%
+% Reference:
+% https://github.com/adobe-type-tools/cmap-resources/
+% Adobe-Korea1-2/cid2code.txt
+%
+% A newer CMap may be required for some code points.
+%
+\kcatcode"C0=18% U+00C0:À (Latin-1 Supplement, Latin-1 letters)
+\kcatcode"100=18% U+0100:Ā (Latin Extended-A)
+\kcatcode"180=18% U+0180:ƀ (Latin Extended-B)
+\kcatcode"1E00=18% U+1E00:Ḁ (Latin Extended Additional)
+%% to ignore linebreak
+\kcatcode"1100=18% U+1100:ᄀ (Hangul Jamo)
+\kcatcode"3131=18% U+3131:ㄱ (Hangul Compatibility Jamo)
+\kcatcode"AC00=18% U+AC00:가 (Hangul Syllables)
+
+\font\upkorrm = upkorrm-h at 9.62216pt
+\upkorrm
+
+
+Adobe-Korea1-0
+
+ ₩‐©ㅤ 、。·・‥⋯…¨〃–—‖\~‘’“”〔
+〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢
+£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽
+▼→←↑↓↔〓«»√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨
+¬⇒⇔∀∃´˜ˇ˘˝˚˙¸˛¡¿∶∮∑∏¤℉‰◁◀
+▷▶♤♠♡♥♧♣◉◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞
+¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡!"#$%
+&'()*+,-./0123456789:;<=>
+?@ABCDEFGHIJKLMNOPQRSTUVW
+XYZ[₩]^_`abcdefghijklmnop
+qrstuvwxyz{|} ̄ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻ
+ㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔ
+ㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮ
+ㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇ
+ㆈㆉㆊㆋㆌㆍㆎⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅠⅡⅢⅣⅤⅥⅦⅧ
+ⅨⅩΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨ
+Ωαβγδεζηθικλμνξοπρστυφχψω
+─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨
+┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮
+┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊㎕㎖㎗ℓ㎘㏄㎣
+㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱
+㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω
+㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆ÆЪ
+ĦIJĿŁØŒºÞŦŊ㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮
+㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛ
+ⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪
+⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞æđðħıijĸŀłøœß
+þŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔
+㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭
+⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²
+³⁴ⁿ₁₂₃₄ぁあぃいぅうぇえぉおかがきぎくぐけげ
+こごさざしじすずせぜそぞただちぢっつづてでとどなに
+ぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃや
+ゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオ
+カガキギクグケゲコゴサザシジスズセゼソゾタダチヂッ
+ツヅテデトドナニヌネノハバパヒビピフブプヘベペホボ
+ポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵ
+ヶАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦ
+ЧШЩЪЫЬЭЮЯабвгдеёжзийклмно
+прстуфхцчшщъыьэюя가각간갇갈갉갊감
+갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍
+걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠
+겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬
+곯곰곱곳공곶과곽관괄괆괌괍괏광괘괜괠괩괬괭괴괵괸괼
+굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권
+궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍
+긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥
+깨깩깬깰깸깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜
+껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜
+꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩
+꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙끝
+끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳
+내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛
+넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹
+논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝뇟뇨뇩뇬뇰뇹뇻
+뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느
+늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다
+닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔
+댕댜더덕덖던덛덜덞덟덤덥덧덩덫덮데덱덴델뎀뎁뎃뎄뎅
+뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐
+되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹
+듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨
+딩딪따딱딴딸땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨
+떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬
+똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹
+뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗
+래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레
+렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬
+롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸
+룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩륫륭르륵른를
+름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙
+맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈
+멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목
+몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼묀묄묍묏묑묘묜묠묩묫무묵
+묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴
+뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받
+발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅
+번벋벌벎범법벗벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏
+볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙
+뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰
+뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡
+빤빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗
+뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌
+뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산
+삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤샥샨샬샴샵
+샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센
+셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖
+솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀
+숄숌숍숏숑수숙순숟술숨숩숫숭숯숱숲숴쉈쉐쉑쉔쉘쉠쉥
+쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식
+신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥
+쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭
+쏴쏵쏸쐈쐐쐤쐬쐰쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩
+쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않
+알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇
+얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊
+엌엎에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆
+옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈
+왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥
+욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨웩웬웰웸
+웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음
+읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있
+잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁
+쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊점접젓정젖제젝젠젤젬
+젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍
+좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌
+줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증
+지직진짇질짊짐집짓징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째
+짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼
+쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘
+쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰
+참찹찻찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철
+첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙
+촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄
+췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층치칙친
+칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬
+캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭
+켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡
+쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼큄큅큇큉큐큔큘큠크
+큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태
+택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템
+텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐
+투툭툰툴툼툽툿퉁퉈퉜퉤튀튁튄튈튐튑튕튜튠튤튬튱트특
+튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔
+팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏
+펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴
+폼폽폿퐁퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩
+퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑
+하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒
+험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠혤혭
+호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔
+횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄
+휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡
+흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝伽佳假價加可呵哥
+嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈賈跏軻迦駕刻却各
+恪慤殼珏脚覺⾓角閣侃刊墾奸姦⼲干幹懇揀杆柬桿澗癎看
+磵稈竿簡肝⾉艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感
+憾戡敢柑橄減⽢甘疳監瞰紺邯鑑鑒龕匣岬甲胛鉀閘剛堈姜
+岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降降鱇介价個
+凱塏愷愾慨改槪漑疥皆盖箇芥蓋鎧開喀客坑粳羹醵倨去居
+巨拒据據擧渠炬祛距踞遽鉅鋸乾件健⼱巾建愆楗腱虔蹇鍵
+騫乞傑杰桀儉劍劒檢瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔
+堅牽⽝犬甄絹繭肩⾒見見譴遣鵑抉決潔結缺訣兼慊箝謙鉗
+鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更更梗涇炅烱
+璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺
+契契季屆悸戒桂械棨溪界癸磎稽系繫繼計誡谿階鷄古叩告
+呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰
+藁蠱袴誥辜錮雇顧⾼高⿎鼓哭斛曲梏穀⾕谷鵠困坤崑昆梱
+棍滾琨袞鯤汨⾻骨供公共功孔⼯工恐恭拱控攻珙空蚣貢鞏
+串串寡⼽戈果⽠瓜科菓誇課跨過鍋顆廓廓槨藿郭冠官寬慣
+棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂
+珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌
+嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱
+具勾區⼝口句句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝
+灸狗玖球瞿矩究絿耉⾅臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩
+鷗⿔龜龜龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮⼸弓穹
+窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋晷
+歸貴⿁鬼叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞
+橘克剋劇戟棘極隙僅劤勤懃⽄斤根槿瑾筋芹菫覲謹近饉今
+妗擒昑檎琴禁禽芩衾衿襟錦伋及急扱汲級給亘兢矜肯企伎
+其冀嗜器圻基埼夔奇妓寄岐崎⼰己幾忌技旗旣朞期杞棋棄
+機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭
+肌記譏豈豈起錡錤飢饑騎騏驥麒緊佶吉拮桔⾦金金喫儺娜
+懦拏拏拿那諾諾暖煖難捏捺南枏楠湳男納衲囊娘乃內奈奈
+柰耐⼥女女年年撚撚秊秊念念恬拈捻捻寧寧寧寗努奴弩怒
+怒瑙駑濃膿農惱腦尿尿嫩訥杻杻紐紐能尼泥泥匿匿溺溺多
+茶茶丹丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾
+獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝
+唐堂塘幢戇撞棠當糖糖螳黨代垈坮⼤大對岱帶待戴擡玳臺
+袋貸隊黛宅宅德悳倒⼑刀到圖堵塗導屠島嶋度度徒悼挑掉
+搗桃棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜
+毒瀆牘犢獨督禿篤纛讀讀墩惇敦旽暾沌焞燉豚頓乭突仝冬
+凍動同憧東桐棟洞洞潼疼瞳童胴董銅兜⽃斗杜枓痘竇荳⾖
+豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇喇懶懶癩癩
+羅羅蘿蘿螺螺裸裸邏邏洛洛烙烙珞珞絡落落酪酪駱駱亂亂
+卵卵欄欄欒瀾爛爛蘭蘭鸞鸞剌辣嵐嵐擥攬欖濫濫籃纜藍藍
+襤襤覽拉拉臘臘蠟蠟廊廊朗朗浪浪狼狼琅瑯螂郞郞郎來來
+崍徠萊冷冷掠掠略略亮亮倆兩兩凉凉梁梁樑粮粱糧糧良良
+諒諒輛量量侶儷勵勵呂呂廬廬慮戾旅旅櫚濾濾礪礪藜蠣閭
+閭驢驪驪麗麗黎黎⼒力力曆曆歷歷瀝礫轢轢靂憐憐戀戀攣
+漣漣煉煉璉璉練練聯聯蓮蓮輦輦連連鍊鍊冽列列劣劣洌烈
+烈裂裂廉廉斂殮殮濂簾簾獵獵令令伶囹囹岺嶺嶺怜怜玲玲
+笭羚羚翎聆聆逞鈴鈴零零靈靈領領齡例例澧禮禮醴醴隷隷
+隸勞勞撈擄擄櫓櫓潞瀘爐爐盧盧⽼老老蘆蘆虜虜路路輅露
+露魯魯鷺鷺⿄鹵碌碌祿祿綠綠菉菉錄錄⿅鹿鹿麓論論壟壟
+弄弄朧瀧瓏籠籠聾聾儡瀨牢牢磊磊賂賂賚賴雷雷了了僚僚
+寮寮廖料料燎燎療療瞭聊蓼蓼遼遼鬧⿓龍龍壘壘婁屢屢樓
+樓淚淚漏漏瘻累累縷縷蔞褸鏤陋陋劉劉旒柳柳榴流流溜溜
+瀏琉琉瑠留留瘤硫硫謬類類六六戮戮陸陸侖倫倫崙崙淪淪
+綸輪輪律律慄慄栗栗隆隆勒勒肋肋凜凜凌凌楞稜稜綾綾菱
+菱陵陵俚利利厘吏吏唎履履悧李李梨梨浬犁狸理理璃痢痢
+籬罹罹羸莉裏裏裡裡⾥里里釐離離鯉吝吝潾燐燐璘璘藺藺
+躪隣隣鱗鱗麟麟林林淋淋琳臨臨霖砬⽴立立笠笠粒粒摩瑪
+痲碼磨⾺馬魔⿇麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫
+灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽
+輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀⿆麥孟氓猛
+盲盟萌冪覓免冕勉棉沔眄眠綿緬⾯面麵滅蔑冥名命明暝椧
+溟⽫皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母⽑毛
+牟牡瑁眸⽭矛耗芼茅謀謨貌⽊木沐牧⽬目睦穆鶩歿沒夢朦
+蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫⽆无楙武⽏
+毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問⽂文汶紊紋聞蚊
+⾨門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉⽶米美薇謎迷靡
+黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊
+珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢
+盤盼磐磻磻礬絆般蟠返頒飯勃拔撥渤潑發跋醱鉢髮魃倣傍
+坊妨尨幇彷房放⽅方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦
+防龐倍俳培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏
+栢⽩白百魄幡樊煩燔番繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯
+範范法琺僻劈壁擘檗璧癖碧蘗闢霹卞弁變辨辯邊別瞥鱉鼈
+丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺
+潽珤甫菩補褓譜輔伏僕匐⼘卜宓復復服福腹茯蔔複覆輹輻
+輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不不付俯
+傅剖副否咐埠夫婦孚孵富府扶敷斧浮溥⽗父符簿⽸缶腐腑
+膚艀芙莩訃負賦賻赴趺部釜⾩阜附駙鳧北北分吩噴墳奔奮
+忿憤扮昐汾焚盆粉糞紛芬賁雰佛弗彿拂崩朋棚硼繃鵬丕備
+⼔匕匪卑妃婢庇悲憊扉批斐枇榧⽐比毖毗毘沸琵痺砒碑秕
+秘粃緋翡肥脾臂菲蜚裨誹譬費鄙⾮非⾶飛⿐鼻嚬嬪彬斌檳
+殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆
+嗣四⼠士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅
+砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削
+朔傘刪⼭山散汕珊産疝算蒜酸霰乷撒殺殺煞薩三杉森渗芟
+蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽
+牀狀狀相祥箱翔裳觴詳象賞霜塞塞璽賽嗇穡索索⾊色牲⽣
+生甥笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署胥
+舒薯西誓逝鋤⿉黍⿏鼠⼣夕奭席惜昔晳析汐淅潟⽯石碩蓆
+釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船
+蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫⾆舌薛褻設說說說雪齧
+剡暹殲纖蟾贍閃陝攝涉燮城姓宬性惺成星晟猩珹盛省省筬
+聖聲腥誠醒世勢歲洗稅笹細貰召嘯塑宵⼩小少巢所掃搔昭
+梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶
+騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率率率宋悚松淞訟誦
+送頌刷灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁戍⼿手授搜
+收數數樹殊⽔水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩
+茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須⾸首髓鬚叔塾
+夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍
+純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧嵩瑟膝蝨濕拾拾
+習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤⼫尸屎屍市弑恃
+施是時枾柴猜⽮矢⽰示翅蒔蓍視試詩諡⾗豕豺埴寔式息拭
+植殖湜熄篒蝕識識軾⾷食飾伸侁信呻娠宸愼新晨燼申神紳
+腎⾂臣莘薪藎蜃訊⾝身⾟辛迅失室實悉審尋⼼心沁深瀋甚
+芯諶什什⼗十雙⽒氏亞俄兒啞娥峨我⽛牙芽莪蛾衙訝阿雅
+餓鴉鵝堊岳嶽幄惡惡愕握樂樂樂樂渥鄂鍔顎鰐齷安岸按晏
+案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏
+昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額櫻罌鶯
+鸚也倻冶夜惹揶椰爺耶野弱約若若葯蒻藥躍佯壤孃恙揚攘
+敭暘楊樣洋瀁煬痒瘍禳穰⽺羊襄讓釀陽養圄御於漁瘀禦語
+馭⿂魚齬億憶抑檍臆偃堰彦焉⾔言諺孼蘖俺儼嚴奄掩淹嶪
+業円予余如歟汝璵礖與艅茹輿轝餘亦域役易易疫繹譯逆驛
+嚥堧姸娟宴延捐挻椽沇沿涎涓淵演烟然煙燃燕硏硯筵緣縯
+衍軟鉛鳶悅涅熱閱厭染炎焰琰艶苒閻髥鹽曄燁葉葉塋嶸影
+映暎楹榮永泳渶潁濚瀛瀯煐營獰瑛瓔盈穎纓英詠迎鍈霙乂
+倪刈叡曳汭濊猊睿穢芮藝蘂裔詣譽豫銳霓預五伍俉傲午吾
+吳嗚塢墺奧娛寤悟懊敖旿晤梧汚澳烏熬獒筽蜈誤鰲鼇屋沃
+獄⽟玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦⽡瓦窩窪
+臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮阮頑⽈曰
+往旺枉汪王倭娃歪矮外嵬巍猥畏僥凹堯夭妖姚寥嶢拗搖撓
+擾曜橈燿瑤窈窯繇繞耀腰蟯要謠遙邀饒慾欲浴縟褥辱俑傭
+冗勇埇墉容庸慂榕涌湧溶熔瑢⽤用甬聳茸蓉踊鎔鏞于佑偶
+優⼜又友右宇寓尤愚憂旴⽜牛玗瑀盂祐禑禹紆⽻羽芋藕虞
+迂遇郵釪隅⾬雨雩勖彧旭昱栯煜稶郁頊云橒殞澐熉耘芸蕓
+運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源
+爰猿瑗苑袁轅遠院願鴛⽉月越鉞位偉僞危圍委威尉慰暐渭
+爲瑋緯胃萎葦蔿蝟衛褘謂違⾱韋魏乳侑儒兪唯喩孺宥幼幽
+庾悠惟愈愉揄攸有柔柚楡楢油洧游濡猶猷瑜由癒維臾萸裕
+誘諛諭踰蹂遊逾遺⾣酉釉鍮堉毓⾁肉育允奫尹潤玧胤贇鈗
+閏⾀聿戎瀜絨融垠恩慇殷誾銀隱⼄乙吟淫蔭陰⾳音飮揖泣
+⾢邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻⾐衣誼議
+醫⼆二以伊夷姨已弛彛怡爾珥異異痍移⽽而⽿耳肄苡荑貽
+貳邇飴餌瀷益翊翌翼謚⼈人仁刃印咽咽因姻寅引忍湮絪茵
+蚓認靭靷⼀一佚佾壹⽇日溢逸鎰馹任壬妊姙恁稔荏賃⼊入
+卄仍剩孕芿仔刺刺咨姉姿⼦子字孜恣慈滋炙炙煮玆瓷疵磁
+紫者⾃自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧
+殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟
+檣欌漿牆獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬⾧長障再哉在
+宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵
+杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂
+摘敵滴狄的積笛籍績翟荻謫賊⾚赤跡蹟迪迹適鏑佃佺傳全
+典前剪塡塼奠專展廛悛戰栓殿氈澱煎琠⽥田甸畑癲筌箋箭
+篆纏詮輾轉鈿銓錢鐫電顚顫餞切切截折浙癤竊節絶占岾店
+漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整
+旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇
+訂諪貞鄭酊釘鉦鋌錠霆靖靜頂⿍鼎制劑啼堤帝弟悌提梯濟
+祭第臍薺製諸蹄醍除際霽題⿑齊俎兆凋助嘲弔彫措操早晁
+曺曹朝條棗槽漕潮照燥⽖爪璪眺祖祚租稠窕粗糟組繰肇藻
+蚤詔調趙躁造遭釣阻雕⿃鳥族簇⾜足鏃存尊卒拙猝倧宗從
+悰慫棕淙琮種終綜縱腫踪踵鍾鐘佐坐左座挫罪主住侏做姝
+胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢⾈舟
+蛛註誅⾛走躊輳週酎酒鑄駐⽵竹粥俊儁准埈寯峻晙樽浚準
+濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑
+症繒蒸證贈之只咫地址志持指摯⽀支旨智枝枳⽌止池沚漬
+知砥祉祗紙肢脂⾄至芝芷蜘誌贄趾遲直稙稷織職唇嗔塵振
+搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫
+⾠辰辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕
+執潗緝輯鏶集徵懲澄且侘借叉嗟嵯差次此磋箚蹉⾞車車遮
+捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦
+札紮僭參參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢
+槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策
+責凄妻悽處倜剔尺慽戚拓拓擲斥滌瘠脊蹠陟隻仟千喘天川
+擅泉淺玔穿⾇舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵
+僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁
+請⾭靑鯖剃替涕滯締諦逮遞體初剿哨憔抄招梢椒楚樵炒焦
+硝礁礎秒稍肖⾋艸苕草蕉貂超酢醋醮促囑燭矗蜀觸⼨寸忖
+村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋
+芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸
+逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃贅取吹嘴娶就炊翠聚
+脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡
+稚穉緇緻置致蚩輜雉馳⿒齒則勅飭親七柒漆侵寢枕沈沈浸
+琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄
+坼托擢晫柝濁濯琢琸託鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈
+耽貪塔搭榻宕帑湯蕩兌台太怠態殆汰泰笞胎苔跆邰颱擇澤
+撑攄兎吐⼟土討慟桶痛筒統通堆槌腿褪退頹偸套妬投透鬪
+慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販
+辦鈑阪⼋八叭捌佩唄悖敗沛浿牌狽稗覇⾙貝彭澎烹膨愎便
+便偏扁⽚片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽
+閉陛佈包匍匏咆哺圃布怖抛抱捕泡浦疱砲胞脯苞葡蒲袍褒
+逋鋪飽鮑幅暴暴曝瀑爆俵剽彪慓杓標漂瓢票表豹飇飄驃品
+稟楓諷豊⾵風馮彼披疲⽪皮被避陂匹弼必泌泌珌畢⽦疋筆
+苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨
+悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷
+鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航項亥偕
+咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇⾏行行
+享向嚮珦鄕響餉饗⾹香噓墟虛許憲櫶獻軒歇險驗奕爀赫⾰
+革俔峴弦懸晛泫炫⽞玄玹現眩睍絃絢縣舷衒賢鉉顯孑⽳穴
+⾎血⾴頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型形泂滎瀅
+灐炯熒珩瑩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼
+壕壺好岵弧⼾戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜
+糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚
+笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺⽕火畵禍⽲禾花華話譁
+貨靴擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活
+滑滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒
+蝗遑隍⿈黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄
+劃獲宖橫鐄哮嚆孝效斅曉梟涍淆⽘爻肴酵驍侯候厚后吼喉
+嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈暈薨喧暄煊萱卉喙
+毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸⿊黑昕
+欣炘痕吃屹紇訖⽋欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙
+憘戱晞曦熙熹熺犧禧稀羲詰〖〗〘〙‟‛⁺⁻⁼⁽⁾ʼ⋮
+∷➊➋➌➍➎➏➐➑➒➓ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃ
+ⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ≺≻⋎⋏⊀⊁≰≱≲≳⊊⊋≶
+≷≹⋚⋛≅≃≈⊤‴♯⁂✽•‹›✚✖◯❖◌☯〠❶❷❸
+❹❺❻❼❽❾❿〒〶∆∟∥∦≓≑≦≧∓⊕⊖⊗⌔≢▱∢
+≐⊣≮≯⊅⊄∉∌⊻⊼≚⌆㊞‼◦▿▵▹◃◊㈱㈹㏋⑯⑰
+⑱⑲⑳⇐⇏⇍⇑⇓↲↱↴↰↳↼⇀⇄⇅⒃⒄⒅⒆⒇㊔㊥⇠
+⇢⇡⇣⇦⇨⇧⇩☝☟㊐㊊㊋㊌㊍㊎㊏〞〟‶‵ー
+
+Adobe-Korea1-1
+
+갂갃갅갆갋갌갍갎갏갘갞갟갡갢갣갥갦갧갨갩갪갫갮갲갳
+갴갵갶갷갺갻갽갾갿걁걂걃걄걅걆걇걈걉걊걌걎걏걐걑걒
+걓걕걖걗걙걚걛걝걞걟걠걡걢걣걤걥걦걧걨걩걪걫걬걭걮
+걯걲걳걵걶걹걻걼걽걾걿겂겇겈겍겎겏겑겒겓겕겖겗겘겙
+겚겛겞겢겣겤겥겦겧겫겭겮겱겲겳겴겵겶겷겺겾겿곀곂곃
+곅곆곇곉곊곋곍곎곏곐곑곒곓곔곖곘곙곚곛곜곝곞곟곢곣
+곥곦곩곫곭곮곲곴곷곸곹곺곻곾곿괁괂괃괅괇괈괉괊괋괎
+괐괒괓괔괕괖괗괙괚괛괝괞괟괡괢괣괤괥괦괧괨괪괫괮괯
+괰괱괲괳괶괷괹괺괻괽괾괿굀굁굂굃굆굈굊굋굌굍굎굏굑
+굒굓굕굖굗굙굚굛굜굝굞굟굠굢굤굥굦굧굨굩굪굫굮굯굱
+굲굷굸굹굺굾궀궃궄궅궆궇궊궋궍궎궏궑궒궓궔궕궖궗궘
+궙궚궛궞궟궠궡궢궣궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴
+궵궶궸궹궺궻궼궽궾궿귂귃귅귆귇귉귊귋귌귍귎귏귒귔귕
+귖귗귘귙귚귛귝귞귟귡귢귣귥귦귧귨귩귪귫귬귭귮귯귰귱
+귲귳귴귵귶귷귺귻귽귾긂긃긄긅긆긇긊긌긎긏긐긑긒긓긕
+긖긗긘긙긚긛긜긝긞긟긠긡긢긣긤긥긦긧긨긩긪긫긬긭긮
+긯긲긳긵긶긹긻긼긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗깘깙
+깚깛깞깢깣깤깦깧깪깫깭깮깯깱깲깳깴깵깶깷깺깾깿꺀꺁
+꺂꺃꺆꺇꺈꺉꺊꺋꺍꺎꺏꺐꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜꺝
+꺞꺟꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰꺱꺲꺳꺴꺵꺶
+꺷꺸꺹꺺꺻꺿껁껂껃껅껆껇껈껉껊껋껎껒껓껔껕껖껗껚껛
+껝껞껟껠껡껢껣껤껥껦껧껩껪껬껮껯껰껱껲껳껵껶껷껹껺
+껻껽껾껿꼀꼁꼂꼃꼄꼅꼆꼉꼊꼋꼌꼎꼏꼑꼒꼓꼔꼕꼖꼗꼘
+꼙꼚꼛꼜꼝꼞꼟꼠꼡꼢꼣꼤꼥꼦꼧꼨꼩꼪꼫꼮꼯꼱꼳꼵꼶
+꼷꼸꼹꼺꼻꼾꽀꽄꽅꽆꽇꽊꽋꽌꽍꽎꽏꽑꽒꽓꽔꽕꽖꽗꽘
+꽙꽚꽛꽞꽟꽠꽡꽢꽣꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴꽵
+꽶꽷꽸꽺꽻꽼꽽꽾꽿꾁꾂꾃꾅꾆꾇꾉꾊꾋꾌꾍꾎꾏꾒꾓꾔
+꾖꾗꾘꾙꾚꾛꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬꾭꾮꾯
+꾰꾱꾲꾳꾴꾵꾶꾷꾺꾻꾽꾾꾿꿁꿂꿃꿄꿅꿆꿊꿌꿏꿐꿑꿒
+꿓꿕꿖꿗꿘꿙꿚꿛꿝꿞꿟꿠꿡꿢꿣꿤꿥꿦꿧꿪꿫꿬꿭꿮꿯
+꿲꿳꿵꿶꿷꿹꿺꿻꿼꿽꿾꿿뀂뀃뀅뀆뀇뀈뀉뀊뀋뀍뀎뀏뀑
+뀒뀓뀕뀖뀗뀘뀙뀚뀛뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧뀩뀪뀫뀬뀭뀮
+뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸뀹뀺뀻뀼뀽뀾뀿끀끁끂끃끆끇끉끋
+끍끏끐끑끒끖끘끚끛끜끞끟끠끡끢끣끤끥끦끧끨끩끪끫끬
+끭끮끯끰끱끲끳끴끵끶끷끸끹끺끻끾끿낁낂낃낅낆낇낈낉
+낊낋낎낐낒낓낔낕낖낗낛낝낞낣낤낥낦낧낪낰낲낶낷낹낺
+낻낽낾낿냀냁냂냃냆냊냋냌냍냎냏냒냓냕냖냗냙냚냛냜냝
+냞냟냡냢냣냤냦냧냨냩냪냫냬냭냮냯냰냱냲냳냴냵냶냷냸
+냹냺냻냼냽냾냿넀넁넂넃넄넅넆넇넊넍넎넏넑넔넕넖넗넚
+넞넟넠넡넢넦넧넩넪넫넭넮넯넰넱넲넳넶넺넻넼넽넾넿녂
+녃녅녆녇녉녊녋녌녍녎녏녒녓녖녗녙녚녛녝녞녟녡녢녣녤
+녥녦녧녨녩녪녫녬녭녮녯녰녱녲녳녴녵녶녷녺녻녽녾녿놁
+놃놄놅놆놇놊놌놎놏놐놑놕놖놗놙놚놛놝놞놟놠놡놢놣놤
+놥놦놧놩놪놫놬놭놮놯놰놱놲놳놴놵놶놷놸놹놺놻놼놽놾
+놿뇀뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋뇍뇎뇏뇑뇒뇓뇕뇖뇗뇘뇙뇚
+뇛뇞뇠뇡뇢뇣뇤뇥뇦뇧뇪뇫뇭뇮뇯뇱뇲뇳뇴뇵뇶뇷뇸뇺뇼
+뇾뇿눀눁눂눃눆눇눉눊눍눎눏눐눑눒눓눖눘눚눛눜눝눞눟
+눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눵눶눷눸눹눺
+눻눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌뉍뉎뉏뉐뉑뉒뉓뉔
+뉕뉖뉗뉙뉚뉛뉝뉞뉟뉡뉢뉣뉤뉥뉦뉧뉪뉫뉬뉭뉮뉯뉰뉱뉲
+뉳뉶뉷뉸뉹뉺뉻뉽뉾뉿늀늁늂늃늆늇늈늊늋늌늍늎늏늒늓
+늕늖늗늛늜늝늞늟늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷늸늹
+늺늻늼늽늾늿닀닁닂닃닄닅닆닇닊닋닍닎닏닑닓닔닕닖닗
+닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉댊댋
+댌댍댎댏댒댖댗댘댙댚댛댝댞댟댠댡댢댣댤댥댦댧댨댩댪
+댫댬댭댮댯댰댱댲댳댴댵댶댷댸댹댺댻댼댽댾댿덀덁덂덃
+덄덅덆덇덈덉덊덋덌덍덎덏덐덑덒덓덗덙덚덝덠덡덢덣덦
+덨덪덬덭덯덲덳덵덶덷덹덺덻덼덽덾덿뎂뎆뎇뎈뎉뎊뎋뎍
+뎎뎏뎑뎒뎓뎕뎖뎗뎘뎙뎚뎛뎜뎝뎞뎟뎢뎣뎤뎥뎦뎧뎩뎪뎫
+뎭뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸뎹뎺뎻뎼뎽뎾뎿돀돁돂돃돆돇
+돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩돪돫돬돭돮
+돯돰돱돲돳돴돵돶돷돸돹돺돻돽돾돿됀됁됂됃됄됅됆됇됈
+됉됊됋됌됍됎됏됑됒됓됔됕됖됗됙됚됛됝됞됟됡됢됣됤됥
+됦됧됪됬됭됮됯됰됱됲됳됵됶됷됸됹됺됻됼됽됾됿둀둁둂
+둃둄둅둆둇둈둉둊둋둌둍둎둏둒둓둕둖둗둙둚둛둜둝둞둟
+둢둤둦둧둨둩둪둫둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽
+둾둿뒁뒂뒃뒄뒅뒆뒇뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘
+뒙뒚뒛뒜뒞뒟뒠뒡뒢뒣뒥뒦뒧뒩뒪뒫뒭뒮뒯뒰뒱뒲뒳뒴뒶
+뒸뒺뒻뒼뒽뒾뒿듁듂듃듅듆듇듉듊듋듌듍듎듏듑듒듓듔듖
+듗듘듙듚듛듞듟듡듢듥듧듨듩듪듫듮듰듲듳듴듵듶듷듹듺
+듻듼듽듾듿딀딁딂딃딄딅딆딇딈딉딊딋딌딍딎딏딐딑딒딓
+딖딗딙딚딝딞딟딠딡딢딣딦딫딬딭딮딯딲딳딵딶딷딹딺딻
+딼딽딾딿땂땆땇땈땉땊땎땏땑땒땓땕땖땗땘땙땚땛땞땢땣
+땤땥땦땧땨땩땪땫땬땭땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼
+땽땾땿떀떁떂떃떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔떕
+떖떗떘떙떚떛떜떝떞떟떢떣떥떦떧떩떬떭떮떯떲떶떷떸떹
+떺떾떿뗁뗂뗃뗅뗆뗇뗈뗉뗊뗋뗎뗒뗓뗔뗕뗖뗗뗙뗚뗛뗜뗝
+뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨뗩뗪뗫뗭뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷
+뗸뗹뗺뗻뗼뗽뗾뗿똀똁똂똃똄똅똆똇똈똉똊똋똌똍똎똏똒
+똓똕똖똗똙똚똛똜똝똞똟똠똡똢똣똤똦똧똨똩똪똫똭똮똯
+똰똱똲똳똵똶똷똸똹똺똻똼똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇뙉뙊
+뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣
+뙥뙦뙧뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾
+뙿뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐뚑뚒뚓뚔뚕뚖뚗
+뚘뚙뚚뚛뚞뚟뚡뚢뚣뚥뚦뚧뚨뚩뚪뚭뚮뚯뚰뚲뚳뚴뚵뚶뚷
+뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌뛍뛎뛏뛐
+뛑뛒뛓뛕뛖뛗뛘뛙뛚뛛뛜뛝뛞뛟뛠뛡뛢뛣뛤뛥뛦뛧뛨뛩뛪
+뛫뛬뛭뛮뛯뛱뛲뛳뛵뛶뛷뛹뛺뛻뛼뛽뛾뛿뜂뜃뜄뜆뜇뜈뜉
+뜊뜋뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜뜝뜞뜟뜠뜡뜢
+뜣뜤뜥뜦뜧뜪뜫뜭뜮뜱뜲뜳뜴뜵뜶뜷뜺뜼뜽뜾뜿띀띁띂띃
+띅띆띇띉띊띋띍띎띏띐띑띒띓띖띗띘띙띚띛띜띝띞띟띡띢
+띣띥띦띧띩띪띫띬띭띮띯띲띴띶띷띸띹띺띻띾띿랁랂랃랅
+랆랇랈랉랊랋랎랓랔랕랚랛랝랞랟랡랢랣랤랥랦랧랪랮랯
+랰랱랲랳랶랷랹랺랻랼랽랾랿럀럁럂럃럄럅럆럈럊럋럌럍
+럎럏럐럑럒럓럔럕럖럗럘럙럚럛럜럝럞럟럠럡럢럣럤럥럦
+럧럨럩럪럫럮럯럱럲럳럵럶럷럸럹럺럻럾렂렃렄렅렆렊렋
+렍렎렏렑렒렓렔렕렖렗렚렜렞렟렠렡렢렣렦렧렩렪렫렭렮
+렯렰렱렲렳렶렺렻렼렽렾렿롁롂롃롅롆롇롈롉롊롋롌롍롎
+롏롐롒롔롕롖롗롘롙롚롛롞롟롡롢롣롥롦롧롨롩롪롫롮롰
+롲롳롴롵롶롷롹롺롻롽롾롿뢀뢁뢂뢃뢄뢅뢆뢇뢈뢉뢊뢋뢌
+뢎뢏뢐뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟뢠뢡뢢뢣뢤뢥뢦
+뢧뢩뢪뢫뢬뢭뢮뢯뢱뢲뢳뢵뢶뢷뢹뢺뢻뢼뢽뢾뢿룂룄룆룇
+룈룉룊룋룍룎룏룑룒룓룕룖룗룘룙룚룛룜룞룠룢룣룤룥룦
+룧룪룫룭룮룯룱룲룳룴룵룶룷룺룼룾룿뤀뤁뤂뤃뤅뤆뤇뤈
+뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔뤕뤖뤗뤙뤚뤛뤜뤝뤞뤟뤡뤢뤣
+뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻뤾
+뤿륁륂륃륅륆륇륈륉륊륋륍륎륐륒륓륔륕륖륗륚륛륝륞륟
+륡륢륣륤륥륦륧륪륬륮륯륰륱륲륳륶륷륹륺륻륽륾륿릀릁
+릂릃릆릈릋릌릏릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞릟릠릡
+릢릣릤릥릦릧릨릩릪릫릮릯릱릲릳릵릶릷릸릹릺릻릾맀맂
+맃맄맅맆맇맊맋맍맓맔맕맖맗맚맜맟맠맢맦맧맩맪맫맭맮
+맯맰맱맲맳맶맻맼맽맾맿먂먃먄먅먆먇먉먊먋먌먍먎먏먐
+먑먒먓먔먖먗먘먙먚먛먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪
+먫먬먭먮먯먰먱먲먳먴먵먶먷먺먻먽먾먿멁멃멄멅멆멇멊
+멌멏멐멑멒멖멗멙멚멛멝멞멟멠멡멢멣멦멪멫멬멭멮멯멲
+멳멵멶멷멹멺멻멼멽멾멿몀몁몂몆몈몉몊몋몍몎몏몐몑몒
+몓몔몕몖몗몘몙몚몛몜몝몞몟몠몡몢몣몤몥몦몧몪몭몮몯
+몱몳몴몵몶몷몺몼몾몿뫀뫁뫂뫃뫅뫆뫇뫉뫊뫋뫌뫍뫎뫏뫐
+뫑뫒뫓뫔뫕뫖뫗뫚뫛뫜뫝뫞뫟뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫
+뫬뫭뫮뫯뫰뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻뫽뫾뫿묁묂묃묅묆묇
+묈묉묊묋묌묎묐묒묓묔묕묖묗묙묚묛묝묞묟묡묢묣묤묥묦
+묧묨묪묬묭묮묯묰묱묲묳묷묹묺묿뭀뭁뭂뭃뭆뭈뭊뭋뭌뭎
+뭑뭒뭓뭕뭖뭗뭙뭚뭛뭜뭝뭞뭟뭠뭢뭤뭥뭦뭧뭨뭩뭪뭫뭭뭮
+뭯뭰뭱뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇
+뮉뮊뮋뮍뮎뮏뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣
+뮥뮦뮧뮩뮪뮫뮭뮮뮯뮰뮱뮲뮳뮵뮶뮸뮹뮺뮻뮼뮽뮾뮿믁믂
+믃믅믆믇믉믊믋믌믍믎믏믑믒믔믕믖믗믘믙믚믛믜믝믞믟
+믠믡믢믣믤믥믦믧믨믩믪믫믬믭믮믯믰믱믲믳믴믵믶믷믺
+믻믽믾밁밃밄밅밆밇밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬
+밮밯밲밳밵밶밷밹밺밻밼밽밾밿뱂뱆뱇뱈뱊뱋뱎뱏뱑뱒뱓
+뱔뱕뱖뱗뱘뱙뱚뱛뱜뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧뱨뱩뱪뱫뱬뱭
+뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸뱹뱺뱻뱼뱽뱾뱿벀벁벂벃벆벇벉
+벊벍벏벐벑벒벓벖벘벛벜벝벞벟벢벣벥벦벩벪벫벬벭벮벯
+벲벶벷벸벹벺벻벾벿볁볂볃볅볆볇볈볉볊볋볌볎볒볓볔볖
+볗볙볚볛볝볞볟볠볡볢볣볤볥볦볧볨볩볪볫볬볭볮볯볰볱
+볲볳볷볹볺볻볽볾볿봀봁봂봃봆봈봊봋봌봍봎봏봑봒봓봕
+봖봗봘봙봚봛봜봝봞봟봠봡봢봣봥봦봧봨봩봪봫봭봮봯봰
+봱봲봳봴봵봶봷봸봹봺봻봼봽봾봿뵁뵂뵃뵄뵅뵆뵇뵊뵋뵍
+뵎뵏뵑뵒뵓뵔뵕뵖뵗뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣뵥뵦뵧뵩뵪뵫
+뵬뵭뵮뵯뵰뵱뵲뵳뵴뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿붂붃붅붆붋
+붌붍붎붏붒붔붖붗붘붛붝붞붟붠붡붢붣붥붦붧붨붩붪붫붬
+붭붮붯붱붲붳붴붵붶붷붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇
+뷈뷉뷊뷋뷌뷍뷎뷏뷐뷑뷒뷓뷖뷗뷙뷚뷛뷝뷞뷟뷠뷡뷢뷣뷤
+뷥뷦뷧뷨뷪뷫뷬뷭뷮뷯뷱뷲뷳뷵뷶뷷뷹뷺뷻뷼뷽뷾뷿븁븂
+븄븆븇븈븉븊븋븎븏븑븒븓븕븖븗븘븙븚븛븞븠븡븢븣븤
+븥븦븧븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸븹븺븻븼븽
+븾븿빀빁빂빃빆빇빉빊빋빍빏빐빑빒빓빖빘빜빝빞빟빢빣
+빥빦빧빩빫빬빭빮빯빲빶빷빸빹빺빾빿뺁뺂뺃뺅뺆뺇뺈뺉
+뺊뺋뺎뺒뺓뺔뺕뺖뺗뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺩뺪
+뺫뺬뺭뺮뺯뺰뺱뺲뺳뺴뺵뺶뺷뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃
+뻄뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏뻒뻓뻕뻖뻙뻚뻛뻜뻝뻞뻟뻡뻢
+뻦뻧뻨뻩뻪뻫뻭뻮뻯뻰뻱뻲뻳뻴뻵뻶뻷뻸뻹뻺뻻뻼뻽뻾뻿
+뼀뼂뼃뼄뼅뼆뼇뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼚뼞뼟뼠
+뼡뼢뼣뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴뼵뼶뼷뼸뼹
+뼺뼻뼼뼽뼾뼿뽂뽃뽅뽆뽇뽉뽊뽋뽌뽍뽎뽏뽒뽓뽔뽖뽗뽘뽙
+뽚뽛뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬뽭뽮뽯뽰뽱뽲
+뽳뽴뽵뽶뽷뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂뾃뾄뾅뾆뾇뾈뾉뾊뾋
+뾌뾍뾎뾏뾐뾑뾒뾓뾕뾖뾗뾘뾙뾚뾛뾜뾝뾞뾟뾠뾡뾢뾣뾤뾥
+뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯뾱뾲뾳뾴뾵뾶뾷뾸뾹뾺뾻뾼뾽뾾뾿
+뿀뿁뿂뿃뿄뿆뿇뿈뿉뿊뿋뿎뿏뿑뿒뿓뿕뿖뿗뿘뿙뿚뿛뿝뿞
+뿠뿢뿣뿤뿥뿦뿧뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸뿹
+뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒
+쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫
+쀬쀭쀮쀯쀰쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻쀽쀾쀿쁀쁁쁂쁃쁄쁅
+쁆쁇쁈쁉쁊쁋쁌쁍쁎쁏쁐쁒쁓쁔쁕쁖쁗쁙쁚쁛쁝쁞쁟쁡쁢
+쁣쁤쁥쁦쁧쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳쁴쁵쁶쁷쁸쁹쁺쁻쁼쁽
+쁾쁿삀삁삂삃삄삅삆삇삈삉삊삋삌삍삎삏삒삓삕삖삗삙삚
+삛삜삝삞삟삢삤삦삧삨삩삪삫삮삱삲삷삸삹삺삻삾샂샃샄
+샆샇샊샋샍샎샏샑샒샓샔샕샖샗샚샞샟샠샡샢샣샦샧샩샪
+샫샭샮샯샰샱샲샳샶샸샺샻샼샽샾샿섁섂섃섅섆섇섉섊섋
+섌섍섎섏섑섒섓섔섖섗섘섙섚섛섡섢섥섨섩섪섫섮섲섳섴
+섵섷섺섻섽섾섿셁셂셃셄셅셆셇셊셎셏셐셑셒셓셖셗셙셚
+셛셝셞셟셠셡셢셣셦셪셫셬셭셮셯셱셲셳셵셶셷셹셺셻셼
+셽셾셿솀솁솂솃솄솆솇솈솉솊솋솏솑솒솓솕솗솘솙솚솛솞
+솠솢솣솤솦솧솪솫솭솮솯솱솲솳솴솵솶솷솸솹솺솻솼솾솿
+쇀쇁쇂쇃쇅쇆쇇쇉쇊쇋쇍쇎쇏쇐쇑쇒쇓쇕쇖쇙쇚쇛쇜쇝쇞
+쇟쇡쇢쇣쇥쇦쇧쇩쇪쇫쇬쇭쇮쇯쇲쇴쇵쇶쇷쇸쇹쇺쇻쇾쇿
+숁숂숃숅숆숇숈숉숊숋숎숐숒숓숔숕숖숗숚숛숝숞숡숢숣
+숤숥숦숧숪숬숮숰숳숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄
+쉅쉆쉇쉉쉊쉋쉌쉍쉎쉏쉒쉓쉕쉖쉗쉙쉚쉛쉜쉝쉞쉟쉡쉢쉣
+쉤쉦쉧쉨쉩쉪쉫쉮쉯쉱쉲쉳쉵쉶쉷쉸쉹쉺쉻쉾슀슂슃슄슅
+슆슇슊슋슌슍슎슏슑슒슓슔슕슖슗슙슚슜슞슟슠슡슢슣슦
+슧슩슪슫슮슯슰슱슲슳슶슸슺슻슼슽슾슿싀싁싂싃싄싅싆
+싇싈싉싊싋싌싍싎싏싐싑싒싓싔싕싖싗싘싙싚싛싞싟싡싢
+싥싦싧싨싩싪싮싰싲싳싴싵싷싺싽싾싿쌁쌂쌃쌄쌅쌆쌇쌊
+쌋쌎쌏쌐쌑쌒쌖쌗쌙쌚쌛쌝쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮
+쌯쌰쌱쌲쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썆썇썈
+썉썊썋썌썍썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡
+썢썣썤썥썦썧썪썫썭썮썯썱썳썴썵썶썷썺썻썾썿쎀쎁쎂쎃
+쎅쎆쎇쎉쎊쎋쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟
+쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸
+쎹쎺쎻쎼쎽쎾쎿쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒
+쏓쏔쏕쏖쏗쏚쏛쏝쏞쏡쏣쏤쏥쏦쏧쏪쏫쏬쏮쏯쏰쏱쏲쏳쏶
+쏷쏹쏺쏻쏼쏽쏾쏿쐀쐁쐂쐃쐄쐅쐆쐇쐉쐊쐋쐌쐍쐎쐏쐑쐒
+쐓쐔쐕쐖쐗쐘쐙쐚쐛쐜쐝쐞쐟쐠쐡쐢쐣쐥쐦쐧쐨쐩쐪쐫쐭
+쐮쐯쐱쐲쐳쐵쐶쐷쐸쐹쐺쐻쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑉쑊쑋
+쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑦
+쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿쒁쒂쒃쒄쒅
+쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛쒝쒞쒟쒠
+쒡쒢쒣쒤쒥쒦쒧쒨쒩쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺
+쒻쒽쒾쒿쓀쓁쓂쓃쓄쓅쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔
+쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮
+쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋씍씎씏씑
+씒씓씕씖씗씘씙씚씛씝씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯
+씱씲씳씴씵씶씷씺씼씾씿앀앁앂앃앆앇앋앏앐앑앒앖앚앛
+앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿얁얂
+얃얅얆얈얉얊얋얎얐얒얓얔얖얙얚얛얝얞얟얡얢얣얤얥얦
+얧얨얪얫얬얭얮얯얰얱얲얳얶얷얺얿엀엁엂엃엋엍엏엒엓
+엕엖엗엙엚엛엜엝엞엟엢엤엦엧엨엩엪엫엯엱엲엳엵엸엹
+엺엻옂옃옄옉옊옋옍옎옏옑옒옓옔옕옖옗옚옝옞옟옠옡옢
+옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌
+왍왎왏왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮
+왰왲왳왴왵왶왷왺왻왽왾왿욁욂욃욄욅욆욇욊욌욎욏욐욑
+욒욓욖욗욙욚욛욝욞욟욠욡욢욣욦욨욪욫욬욭욮욯욲욳욵
+욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎웏웑웒웓웕웖웗웘웙
+웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲웳웴웵웶웷웺웻웼
+웾웿윀윁윂윃윆윇윉윊윋윍윎윏윐윑윒윓윖윘윚윛윜윝윞
+윟윢윣윥윦윧윩윪윫윬윭윮윯윲윴윶윸윹윺윻윾윿읁읂읃
+읅읆읇읈읉읋읎읐읙읚읛읝읞읟읡읢읣읤읥읦읧읩읪읬읭
+읮읯읰읱읲읳읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛
+잜잝잞잟잢잧잨잩잪잫잮잯잱잲잳잵잶잷잸잹잺잻잾쟂쟃
+쟄쟅쟆쟇쟊쟋쟍쟏쟑쟒쟓쟔쟕쟖쟗쟙쟚쟛쟜쟞쟟쟠쟡쟢쟣
+쟥쟦쟧쟩쟪쟫쟭쟮쟯쟰쟱쟲쟳쟴쟵쟶쟷쟸쟹쟺쟻쟼쟽쟾쟿
+젂젃젅젆젇젉젋젌젍젎젏젒젔젗젘젙젚젛젞젟젡젢젣젥젦
+젧젨젩젪젫젮젰젲젳젴젵젶젷젹젺젻젽젾젿졁졂졃졄졅졆
+졇졊졋졎졏졐졑졒졓졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤
+졥졦졧졨졩졪졫졬졭졮졯졲졳졵졶졷졹졻졼졽졾졿좂좄좈
+좉좊좎좏좐좑좒좓좕좖좗좘좙좚좛좜좞좠좢좣좤좥좦좧좩
+좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸좹좺좻좾좿죀죁죂죃죅
+죆죇죉죊죋죍죎죏죐죑죒죓죖죘죚죛죜죝죞죟죢죣죥죦죧
+죨죩죪죫죬죭죮죯죰죱죲죳죴죶죷죸죹죺죻죾죿줁줂줃줇
+줈줉줊줋줎줐줒줓줔줕줖줗줙줚줛줜줝줞줟줠줡줢줣줤줥
+줦줧줨줩줪줫줭줮줯줰줱줲줳줵줶줷줸줹줺줻줼줽줾줿쥀
+쥁쥂쥃쥄쥅쥆쥇쥈쥉쥊쥋쥌쥍쥎쥏쥒쥓쥕쥖쥗쥙쥚쥛쥜쥝
+쥞쥟쥢쥤쥥쥦쥧쥨쥩쥪쥫쥭쥮쥯쥱쥲쥳쥵쥶쥷쥸쥹쥺쥻쥽
+쥾쥿즀즁즂즃즄즅즆즇즊즋즍즎즏즑즒즓즔즕즖즗즚즜즞
+즟즠즡즢즣즤즥즦즧즨즩즪즫즬즭즮즯즰즱즲즳즴즵즶즷
+즸즹즺즻즼즽즾즿짂짃짅짆짉짋짌짍짎짏짒짔짗짘짛짞짟
+짡짣짥짦짨짩짪짫짮짲짳짴짵짶짷짺짻짽짾짿쨁쨂쨃쨄쨅
+쨆쨇쨊쨎쨏쨐쨑쨒쨓쨕쨖쨗쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤쨥
+쨦쨧쨨쨪쨫쨬쨭쨮쨯쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿
+쩀쩁쩂쩃쩄쩅쩆쩇쩈쩉쩊쩋쩎쩏쩑쩒쩓쩕쩖쩗쩘쩙쩚쩛쩞
+쩢쩣쩤쩥쩦쩧쩩쩪쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸쩹쩺쩻
+쩼쩾쩿쪀쪁쪂쪃쪅쪆쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔쪕쪖
+쪗쪙쪚쪛쪜쪝쪞쪟쪠쪡쪢쪣쪤쪥쪦쪧쪨쪩쪪쪫쪬쪭쪮쪯쪰
+쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻쪾쪿쫁쫂쫃쫅쫆쫇쫈쫉쫊쫋쫎쫐
+쫒쫔쫕쫖쫗쫚쫛쫜쫝쫞쫟쫡쫢쫣쫤쫥쫦쫧쫨쫩쫪쫫쫭쫮쫯
+쫰쫱쫲쫳쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄쬅쬆쬇쬉쬊
+쬋쬌쬍쬎쬏쬑쬒쬓쬕쬖쬗쬙쬚쬛쬜쬝쬞쬟쬢쬣쬤쬥쬦쬧쬨
+쬩쬪쬫쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼쬽쬾쬿쭀쭂
+쭃쭄쭅쭆쭇쭊쭋쭍쭎쭏쭑쭒쭓쭔쭕쭖쭗쭚쭛쭜쭞쭟쭠쭡쭢
+쭣쭥쭦쭧쭨쭩쭪쭫쭬쭭쭮쭯쭰쭱쭲쭳쭴쭵쭶쭷쭺쭻쭼쭽쭾
+쭿쮀쮁쮂쮃쮄쮅쮆쮇쮈쮉쮊쮋쮌쮍쮎쮏쮐쮑쮒쮓쮔쮕쮖쮗
+쮘쮙쮚쮛쮝쮞쮟쮠쮡쮢쮣쮤쮥쮦쮧쮨쮩쮪쮫쮬쮭쮮쮯쮰쮱
+쮲쮳쮴쮵쮶쮷쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄쯅쯆쯇쯈쯉쯊쯋
+쯌쯍쯎쯏쯐쯑쯒쯓쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟쯠쯡쯢쯣쯥쯦
+쯨쯪쯫쯬쯭쯮쯯쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼쯽쯾쯿찀찁
+찂찃찄찅찆찇찈찉찊찋찎찏찑찒찓찕찖찗찘찙찚찛찞찟찠
+찣찤찥찦찪찫찭찯찱찲찳찴찵찶찷찺찿챀챁챂챃챆챇챉챊
+챋챍챎챏챐챑챒챓챖챚챛챜챝챞챟챡챢챣챥챧챩챪챫챬챭
+챮챯챱챲챳챴챶챷챸챹챺챻챼챽챾챿첀첁첂첃첄첅첆첇첈
+첉첊첋첌첍첎첏첐첑첒첓첔첕첖첗첚첛첝첞첟첡첢첣첤첥
+첦첧첪첮첯첰첱첲첳첶첷첹첺첻첽첾첿쳀쳁쳂쳃쳆쳈쳊쳋
+쳌쳍쳎쳏쳑쳒쳓쳕쳖쳗쳘쳙쳚쳛쳜쳝쳞쳟쳠쳡쳢쳣쳥쳦쳧
+쳨쳩쳪쳫쳭쳮쳯쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼쳽쳾쳿촀촂촃
+촄촅촆촇촊촋촍촎촏촑촒촓촔촕촖촗촚촜촞촟촠촡촢촣촥
+촦촧촩촪촫촭촮촯촰촱촲촳촴촵촶촷촸촺촻촼촽촾촿쵀쵁
+쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚
+쵛쵝쵞쵟쵡쵢쵣쵥쵦쵧쵨쵩쵪쵫쵮쵰쵲쵳쵴쵵쵶쵷쵹쵺쵻
+쵼쵽쵾쵿춀춁춂춃춄춅춆춇춉춊춋춌춍춎춏춐춑춒춓춖춗
+춙춚춛춝춞춟춠춡춢춣춦춨춪춫춬춭춮춯춱춲춳춴춵춶춷
+춸춹춺춻춼춽춾춿췀췁췂췃췅췆췇췈췉췊췋췍췎췏췑췒췓
+췔췕췖췗췘췙췚췛췜췝췞췟췠췡췢췣췤췥췦췧췩췪췫췭췮
+췯췱췲췳췴췵췶췷췺췼췾췿츀츁츂츃츅츆츇츉츊츋츍츎츏
+츐츑츒츓츕츖츗츘츚츛츜츝츞츟츢츣츥츦츧츩츪츫츬츭츮
+츯츲츴츶츷츸츹츺츻츼츽츾츿칀칁칂칃칄칅칆칇칈칉칊칋
+칌칍칎칏칐칑칒칓칔칕칖칗칚칛칝칞칢칣칤칥칦칧칪칬칮
+칯칰칱칲칳칶칷칹칺칻칽칾칿캀캁캂캃캆캈캊캋캌캍캎캏
+캒캓캕캖캗캙캚캛캜캝캞캟캢캦캧캨캩캪캫캮캯캰캱캲캳
+캴캵캶캷캸캹캺캻캼캽캾캿컀컂컃컄컅컆컇컈컉컊컋컌컍
+컎컏컐컑컒컓컔컕컖컗컘컙컚컛컜컝컞컟컠컡컢컣컦컧컩
+컪컭컮컯컰컱컲컳컶컺컻컼컽컾컿켂켃켅켆켇켉켊켋켌켍
+켎켏켒켔켖켗켘켙켚켛켝켞켟켡켢켣켥켦켧켨켩켪켫켮켲
+켳켴켵켶켷켹켺켻켼켽켾켿콀콁콂콃콄콅콆콇콈콉콊콋콌
+콍콎콏콐콑콒콓콖콗콙콚콛콝콞콟콠콡콢콣콦콨콪콫콬콭
+콮콯콲콳콵콶콷콹콺콻콼콽콾콿쾁쾂쾃쾄쾆쾇쾈쾉쾊쾋쾍
+쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜쾝쾞쾟쾠쾢쾣쾤쾥쾦쾧
+쾩쾪쾫쾬쾭쾮쾯쾱쾲쾳쾴쾵쾶쾷쾸쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂
+쿃쿅쿆쿇쿈쿉쿊쿋쿌쿍쿎쿏쿐쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜
+쿝쿞쿟쿢쿣쿥쿦쿧쿩쿪쿫쿬쿭쿮쿯쿲쿴쿶쿷쿸쿹쿺쿻쿽쿾
+쿿퀁퀂퀃퀅퀆퀇퀈퀉퀊퀋퀌퀍퀎퀏퀐퀒퀓퀔퀕퀖퀗퀙퀚퀛
+퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨퀩퀪퀫퀬퀮퀯퀰퀱퀲퀳퀶퀷
+퀹퀺퀻퀽퀾퀿큀큁큂큃큆큈큊큋큌큍큎큏큑큒큓큕큖큗큙
+큚큛큜큝큞큟큡큢큣큤큥큦큧큨큩큪큫큮큯큱큲큳큵큶큷
+큸큹큺큻큾큿킀킂킃킄킅킆킇킈킉킊킋킌킍킎킏킐킑킒킓
+킔킕킖킗킘킙킚킛킜킝킞킟킠킡킢킣킦킧킩킪킫킭킮킯킰
+킱킲킳킶킸킺킻킼킽킾킿탂탃탅탆탇탊탋탌탍탎탏탒탖탗
+탘탙탚탛탞탟탡탢탣탥탦탧탨탩탪탫탮탲탳탴탵탶탷탹탺
+탻탼탽탾탿턀턁턂턃턄턅턆턇턈턉턊턋턌턎턏턐턑턒턓턔
+턕턖턗턘턙턚턛턜턝턞턟턠턡턢턣턤턥턦턧턨턩턪턫턬턭
+턮턯턲턳턵턶턷턹턻턼턽턾턿텂텆텇텈텉텊텋텎텏텑텒텓
+텕텖텗텘텙텚텛텞텠텢텣텤텥텦텧텩텪텫텭텮텯텰텱텲텳
+텴텵텶텷텸텹텺텻텽텾텿톀톁톂톃톅톆톇톉톊톋톌톍톎톏
+톐톑톒톓톔톕톖톗톘톙톚톛톜톝톞톟톢톣톥톦톧톩톪톫톬
+톭톮톯톲톴톶톷톸톹톻톽톾톿퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌
+퇍퇎퇏퇐퇑퇒퇓퇔퇕퇖퇗퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦
+퇧퇨퇩퇪퇫퇬퇭퇮퇯퇰퇱퇲퇳퇵퇶퇷퇹퇺퇻퇼퇽퇾퇿툀툁
+툂툃툄툅툆툈툊툋툌툍툎툏툑툒툓툔툕툖툗툘툙툚툛툜툝
+툞툟툠툡툢툣툤툥툦툧툨툩툪툫툮툯툱툲툳툵툶툷툸툹툺
+툻툾퉀퉂퉃퉄퉅퉆퉇퉉퉊퉋퉌퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘
+퉙퉚퉛퉝퉞퉟퉠퉡퉢퉣퉥퉦퉧퉨퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳
+퉴퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿튂튃튅튆튇튉튊튋튌튍튎튏튒
+튓튔튖튗튘튙튚튛튝튞튟튡튢튣튥튦튧튨튩튪튫튭튮튯튰
+튲튳튴튵튶튷튺튻튽튾틁틃틄틅틆틇틊틌틍틎틏틐틑틒틓
+틕틖틗틙틚틛틝틞틟틠틡틢틣틦틧틨틩틪틫틬틭틮틯틲틳
+틵틶틷틹틺틻틼틽틾틿팂팄팆팇팈팉팊팋팏팑팒팓팕팗팘
+팙팚팛팞팢팣팤팦팧팪팫팭팮팯팱팲팳팴팵팶팷팺팾팿퍀
+퍁퍂퍃퍆퍇퍈퍉퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔퍕퍖퍗퍘퍙퍚퍛
+퍜퍝퍞퍟퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩퍪퍫퍬퍭퍮퍯퍰퍱퍲퍳퍴
+퍵퍶퍷퍸퍹퍺퍻퍾퍿펁펂펃펅펆펇펈펉펊펋펎펒펓펔펕펖
+펗펚펛펝펞펟펡펢펣펤펥펦펧펪펬펮펯펰펱펲펳펵펶펷펹
+펺펻펽펾펿폀폁폂폃폆폇폊폋폌폍폎폏폑폒폓폔폕폖폗폙
+폚폛폜폝폞폟폠폢폤폥폦폧폨폩폪폫폮폯폱폲폳폵폶폷폸
+폹폺폻폾퐀퐂퐃퐄퐅퐆퐇퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖
+퐗퐘퐙퐚퐛퐜퐞퐟퐠퐡퐢퐣퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰
+퐱퐲퐳퐴퐵퐶퐷퐸퐹퐺퐻퐼퐽퐾퐿푁푂푃푅푆푇푈푉푊푋
+푌푍푎푏푐푑푒푓푔푕푖푗푘푙푚푛푝푞푟푡푢푣푥푦푧
+푨푩푪푫푬푮푰푱푲푳푴푵푶푷푺푻푽푾풁풃풄풅풆풇풊
+풌풎풏풐풑풒풓풕풖풗풘풙풚풛풜풝풞풟풠풡풢풣풤풥풦
+풧풨풪풫풬풭풮풯풰풱풲풳풴풵풶풷풸풹풺풻풼풽풾풿퓀
+퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋퓍퓎퓏퓑퓒퓓퓕퓖퓗퓘퓙퓚퓛퓝
+퓞퓠퓡퓢퓣퓤퓥퓦퓧퓩퓪퓫퓭퓮퓯퓱퓲퓳퓴퓵퓶퓷퓹퓺퓼
+퓾퓿픀픁픂픃픅픆픇픉픊픋픍픎픏픐픑픒픓픖픘픙픚픛픜
+픝픞픟픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰픱픲픳픴픵
+픶픷픸픹픺픻픾픿핁핂핃핅핆핇핈핉핊핋핎핐핒핓핔핕핖
+핗핚핛핝핞핟핡핢핣핤핦핧핪핬핮핯핰핱핲핳핶핷핹핺핻
+핽핾핿햀햁햂햃햆햊햋햌햍햎햏햑햒햓햔햕햖햗햘햙햚햛
+햜햝햞햟햠햡햢햣햤햦햧햨햩햪햫햬햭햮햯햰햱햲햳햴햵
+햶햷햸햹햺햻햼햽햾햿헀헁헂헃헄헅헆헇헊헋헍헎헏헑헓
+헔헕헖헗헚헜헞헟헠헡헢헣헦헧헩헪헫헭헮헯헰헱헲헳헶
+헸헺헻헼헽헾헿혂혃혅혆혇혉혊혋혌혍혎혏혒혖혗혘혙혚
+혛혝혞혟혡혢혣혥혦혧혨혩혪혫혬혮혯혰혱혲혳혴혵혶혷
+혺혻혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝홞
+홟홠홡홢홣홤홥홦홨홪홫홬홭홮홯홲홳홵홶홷홸홹홺홻홼
+홽홾홿횀횁횂횄횆횇횈횉횊횋횎횏횑횒횓횕횖횗횘횙횚횛
+횜횞횠횢횣횤횥횦횧횩횪횫횭횮횯횱횲횳횴횵횶횷횸횺횼
+횽횾횿훀훁훂훃훆훇훉훊훋훍훎훏훐훒훓훕훖훘훚훛훜훝
+훞훟훡훢훣훥훦훧훩훪훫훬훭훮훯훱훲훳훴훶훷훸훹훺훻
+훾훿휁휂휃휅휆휇휈휉휊휋휌휍휎휏휐휒휓휔휕휖휗휚휛
+휝휞휟휡휢휣휤휥휦휧휪휬휮휯휰휱휲휳휶휷휹휺휻휽휾
+휿흀흁흂흃흅흆흈흊흋흌흍흎흏흒흓흕흚흛흜흝흞흟흢흤
+흦흧흨흪흫흭흮흯흱흲흳흵흶흷흸흹흺흻흾흿힀힂힃힄힅
+힆힇힊힋힍힎힏힑힒힓힔힕힖힗힚힜힞힟힠힡힢힣
+
+\end
diff --git a/language/japanese/uptex-base/samples/aozora-ujarticle-utf8.tex b/language/japanese/uptex-base/samples/aozora-ujarticle-utf8.tex
new file mode 100644
index 0000000000..4d305401d0
--- /dev/null
+++ b/language/japanese/uptex-base/samples/aozora-ujarticle-utf8.tex
@@ -0,0 +1,39 @@
+\documentclass{ujarticle}
+\usepackage{color}
+
+\begin{document}
+
+\section{芥川龍之介「るしへる」}
+
+破提宇子と云う天主教を弁難した書物のある事は、知っている人も少くあるまい。これは、元和六年、加賀の禅僧巴毗弇なるものの著した書物である。巴毗弇は当初南蛮寺に住した天主教徒であったが、その後何かの事情から、DS 如来を捨てて仏門に帰依する事になった。書中に云っている所から推すと、彼は老儒の学にも造詣のある、一かどの才子だったらしい。
+
+破提宇子の流布本は、華頂山文庫の蔵本を、明治戊辰の頃、杞憂道人鵜飼徹定の序文と共に、出版したものである。が、そのほかにも異本がない訳ではない。現に予が所蔵の古写本の如きは、流布本と内容を異にする個所が多少ある。
+
+中でも同書の第三段は、悪魔の起源を論じた一章であるが、流布本のそれに比して、予の蔵本では内容が遥に多い。巴毗弇自身の目撃した悪魔の記事が、あの辛辣な弁難攻撃の間に態々引証されてあるからである。この記事が流布本に載せられていない理由は、恐らくその余りに荒唐無稽に類する所から、こう云う破邪顕正を標榜する書物の性質上、故意の脱漏を利としたからでもあろうか。
+
+予は以下にこの異本第三段を紹介して、聊巴毗弇の前に姿を現した、日本の Diabolus を一瞥しようと思う。なお巴毗弇に関して、詳細を知りたい人は、新村博士の巴毗弇に関する論文を一読するが好い。
+
+
+\section{樋口一葉「大つごもり」}
+
+お母樣御機嫌よう好い新年をお迎へなされませ、左樣ならば參りますと、暇乞わざと恭しく、お峰下駄を直せ、お玄關からお歸りではないお出かけだぞとづぶ\textcolor{blue}{〳〵}\footnote{青字はうまく組めない。}しく大手を振りて、行先は何處、父が涙は一夜の騷ぎに夢とやならん、持つまじきは放蕩息子、持つまじきは放蕩を仕立る繼母ぞかし。鹽花こそふらね跡は一先掃き出して、若旦那退散のよろこび、金は惜しけれど見る目も憎ければ家に居らぬは上々なり、何うすれば彼のやうに圖太くなられるか、あの子を生んだ母さんの顏が見たい、と御新造例に依つて毒舌をみがきぬ。お峰は此出來事も何として耳に入るべき、犯したる罪の恐ろしさに、我れか、人か、先刻の仕業はと今更夢路を辿りて、おもへば此事あらはれずして濟むべきや、萬が中なる一枚とても數ふれば目の前なるを、願ひの額に相應の員數手近の處になくなりしとあらば、我れにしても疑ひは何處に向くべき、調べられなば何とせん、何といはん、言ひ拔けんは罪深し、白状せば伯父が上にもかゝる、我罪は覺悟の上なれど物堅き伯父樣にまで濡れ衣を着せて、干されぬは貧乏のならひ、かゝる事もするものと人の言ひはせぬか、悲しや何としたらよかろ、伯父樣に疵のつかぬやう、我身が頓死する法は無きかと目は御新造が起居にしたがひて、心はかけ硯のもとにさまよひぬ。
+
+
+\section{幸田露伴「雲のいろ\textcolor{blue}{〳〵}――卿雲」}
+
+景雲といひ、卿雲といひ、慶雲といへる、しかと指し定められたる雲にはあらざるべし。卿雲爛たり糺縵〻たり、といへる、煙にあらず雲にあらず紫を曳き光を流す、といへる、大人作矣、五色氤氳、といへる、金柯初めて繞繚、玉葉漸く氤氳、といへる、還つて九霄に入りて沆\textcolor{red}{瀣}\footnote{赤字は第四水準の文字。}を成し、夕嵐生ずる處鶴松に歸る、といへる詩の句などによりて見れば、歸するところは美しき雲といふまでなり。一年の中に幾度か爛たる雲の見えざらん。若しまた餘りに美しき眼なれぬ雲などの出でたらんは、氣中のさまの常ならぬよりなるべければ、却つて悦ぶべからざるに似たり。五色の雲など何にせん、天は青きがめでたく、雲は白きこそ優しけれ。八雲立つの神の御歌を解きて、その時立ちし雲は天地のみたまの顯はせりし吉瑞にて、いともくしびなる雲なりけむなど橘の守部が云へるは、當れりや否や、知らず。くしびなる雲とは如何なる雲ぞや、問はまほし。八雲立ちといひたまはで、八雲立つと言い切り玉へるも彼の奇しき瑞雲に驚かせ給へる語勢なりなどいへる、ことに奇しき言なり。崇神紀の歌に、八雲立つ出雲梟師が云〻と歌へるも、八雲たちとは云はで八雲立つといひたるなれば、驚きたる語勢なりといふべきか、いと奇しき言なり。
+
+
+\section{國木田獨歩「あの時分」}
+
+「鸚鵡をくださいって」と、かごを取って去ってしまいました。この四郎さんは私と仲よしで、近いうちに裏の田んぼで雁をつる約束がしてあったのです、ところがその晩、おッ母アと樋口は某坂の町に買い物があるとて出てゆき、政法の二人は校堂でやる生徒仲間の演説会にゆき、木村は祈禱会にゆき、家に残ったのは、下女代わりに来ている親類の娘と、四郎と私だけで、すこぶるさびしくなりましたから、雁つりの実行に取りかかりました。
+
+
+\section{森鷗外「百物語」}
+
+玄関に上がる時に見ると、上がってすぐ突き当る三畳には、男が二人立って何か忙がしそうに咡き合っていた。「どうしやがったのだなあ」「それだからおいらが蠟燭は舟で来る人なんぞに持せて来ては行けないと云ったのだ。差当り燭台に立ててあるのしきゃないのだから」と云うような事を言っている。楽屋の方の世話も焼いている人達であろう。二人は僕の立っているのには構わずに、奥へ這入ってしまう。入り替って、一人の男が覗いて見て、黙って又引っ込んでしまう。
+
+\end{document}
+
+青空文庫作成ファイル:
+このファイルは、インターネットの図書館、青空文庫(http://www.aozora.gr.jp/)で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。
diff --git a/language/japanese/uptex-base/samples/aozora-ujbook-utf8.tex b/language/japanese/uptex-base/samples/aozora-ujbook-utf8.tex
new file mode 100644
index 0000000000..fbd3d56853
--- /dev/null
+++ b/language/japanese/uptex-base/samples/aozora-ujbook-utf8.tex
@@ -0,0 +1,39 @@
+\documentclass{ujbook}
+\usepackage{color}
+
+\begin{document}
+\chapter{青空文庫のサンプル}
+\section{芥川龍之介「るしへる」}
+
+破提宇子と云う天主教を弁難した書物のある事は、知っている人も少くあるまい。これは、元和六年、加賀の禅僧巴毗弇なるものの著した書物である。巴毗弇は当初南蛮寺に住した天主教徒であったが、その後何かの事情から、DS 如来を捨てて仏門に帰依する事になった。書中に云っている所から推すと、彼は老儒の学にも造詣のある、一かどの才子だったらしい。
+
+破提宇子の流布本は、華頂山文庫の蔵本を、明治戊辰の頃、杞憂道人鵜飼徹定の序文と共に、出版したものである。が、そのほかにも異本がない訳ではない。現に予が所蔵の古写本の如きは、流布本と内容を異にする個所が多少ある。
+
+中でも同書の第三段は、悪魔の起源を論じた一章であるが、流布本のそれに比して、予の蔵本では内容が遥に多い。巴毗弇自身の目撃した悪魔の記事が、あの辛辣な弁難攻撃の間に態々引証されてあるからである。この記事が流布本に載せられていない理由は、恐らくその余りに荒唐無稽に類する所から、こう云う破邪顕正を標榜する書物の性質上、故意の脱漏を利としたからでもあろうか。
+
+予は以下にこの異本第三段を紹介して、聊巴毗弇の前に姿を現した、日本の Diabolus を一瞥しようと思う。なお巴毗弇に関して、詳細を知りたい人は、新村博士の巴毗弇に関する論文を一読するが好い。
+
+
+\section{樋口一葉「大つごもり」}
+
+お母樣御機嫌よう好い新年をお迎へなされませ、左樣ならば參りますと、暇乞わざと恭しく、お峰下駄を直せ、お玄關からお歸りではないお出かけだぞとづぶ\textcolor{blue}{〳〵}\footnote{青字はうまく組めない。}しく大手を振りて、行先は何處、父が涙は一夜の騷ぎに夢とやならん、持つまじきは放蕩息子、持つまじきは放蕩を仕立る繼母ぞかし。鹽花こそふらね跡は一先掃き出して、若旦那退散のよろこび、金は惜しけれど見る目も憎ければ家に居らぬは上々なり、何うすれば彼のやうに圖太くなられるか、あの子を生んだ母さんの顏が見たい、と御新造例に依つて毒舌をみがきぬ。お峰は此出來事も何として耳に入るべき、犯したる罪の恐ろしさに、我れか、人か、先刻の仕業はと今更夢路を辿りて、おもへば此事あらはれずして濟むべきや、萬が中なる一枚とても數ふれば目の前なるを、願ひの額に相應の員數手近の處になくなりしとあらば、我れにしても疑ひは何處に向くべき、調べられなば何とせん、何といはん、言ひ拔けんは罪深し、白状せば伯父が上にもかゝる、我罪は覺悟の上なれど物堅き伯父樣にまで濡れ衣を着せて、干されぬは貧乏のならひ、かゝる事もするものと人の言ひはせぬか、悲しや何としたらよかろ、伯父樣に疵のつかぬやう、我身が頓死する法は無きかと目は御新造が起居にしたがひて、心はかけ硯のもとにさまよひぬ。
+
+
+\section{幸田露伴「雲のいろ\textcolor{blue}{〳〵}――卿雲」}
+
+景雲といひ、卿雲といひ、慶雲といへる、しかと指し定められたる雲にはあらざるべし。卿雲爛たり糺縵〻たり、といへる、煙にあらず雲にあらず紫を曳き光を流す、といへる、大人作矣、五色氤氳、といへる、金柯初めて繞繚、玉葉漸く氤氳、といへる、還つて九霄に入りて沆\textcolor{red}{瀣}\footnote{赤字は第四水準の文字。}を成し、夕嵐生ずる處鶴松に歸る、といへる詩の句などによりて見れば、歸するところは美しき雲といふまでなり。一年の中に幾度か爛たる雲の見えざらん。若しまた餘りに美しき眼なれぬ雲などの出でたらんは、氣中のさまの常ならぬよりなるべければ、却つて悦ぶべからざるに似たり。五色の雲など何にせん、天は青きがめでたく、雲は白きこそ優しけれ。八雲立つの神の御歌を解きて、その時立ちし雲は天地のみたまの顯はせりし吉瑞にて、いともくしびなる雲なりけむなど橘の守部が云へるは、當れりや否や、知らず。くしびなる雲とは如何なる雲ぞや、問はまほし。八雲立ちといひたまはで、八雲立つと言い切り玉へるも彼の奇しき瑞雲に驚かせ給へる語勢なりなどいへる、ことに奇しき言なり。崇神紀の歌に、八雲立つ出雲梟師が云〻と歌へるも、八雲たちとは云はで八雲立つといひたるなれば、驚きたる語勢なりといふべきか、いと奇しき言なり。
+
+
+\section{國木田獨歩「あの時分」}
+
+「鸚鵡をくださいって」と、かごを取って去ってしまいました。この四郎さんは私と仲よしで、近いうちに裏の田んぼで雁をつる約束がしてあったのです、ところがその晩、おッ母アと樋口は某坂の町に買い物があるとて出てゆき、政法の二人は校堂でやる生徒仲間の演説会にゆき、木村は祈禱会にゆき、家に残ったのは、下女代わりに来ている親類の娘と、四郎と私だけで、すこぶるさびしくなりましたから、雁つりの実行に取りかかりました。
+
+
+\section{森鷗外「百物語」}
+
+玄関に上がる時に見ると、上がってすぐ突き当る三畳には、男が二人立って何か忙がしそうに咡き合っていた。「どうしやがったのだなあ」「それだからおいらが蠟燭は舟で来る人なんぞに持せて来ては行けないと云ったのだ。差当り燭台に立ててあるのしきゃないのだから」と云うような事を言っている。楽屋の方の世話も焼いている人達であろう。二人は僕の立っているのには構わずに、奥へ這入ってしまう。入り替って、一人の男が覗いて見て、黙って又引っ込んでしまう。
+
+\end{document}
+
+青空文庫作成ファイル:
+このファイルは、インターネットの図書館、青空文庫(http://www.aozora.gr.jp/)で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。
diff --git a/language/japanese/uptex-base/samples/aozora-ujreport-utf8.tex b/language/japanese/uptex-base/samples/aozora-ujreport-utf8.tex
new file mode 100644
index 0000000000..7708a5867e
--- /dev/null
+++ b/language/japanese/uptex-base/samples/aozora-ujreport-utf8.tex
@@ -0,0 +1,39 @@
+\documentclass{ujreport}
+\usepackage{color}
+
+\begin{document}
+\chapter{青空文庫のサンプル}
+\section{芥川龍之介「るしへる」}
+
+破提宇子と云う天主教を弁難した書物のある事は、知っている人も少くあるまい。これは、元和六年、加賀の禅僧巴毗弇なるものの著した書物である。巴毗弇は当初南蛮寺に住した天主教徒であったが、その後何かの事情から、DS 如来を捨てて仏門に帰依する事になった。書中に云っている所から推すと、彼は老儒の学にも造詣のある、一かどの才子だったらしい。
+
+破提宇子の流布本は、華頂山文庫の蔵本を、明治戊辰の頃、杞憂道人鵜飼徹定の序文と共に、出版したものである。が、そのほかにも異本がない訳ではない。現に予が所蔵の古写本の如きは、流布本と内容を異にする個所が多少ある。
+
+中でも同書の第三段は、悪魔の起源を論じた一章であるが、流布本のそれに比して、予の蔵本では内容が遥に多い。巴毗弇自身の目撃した悪魔の記事が、あの辛辣な弁難攻撃の間に態々引証されてあるからである。この記事が流布本に載せられていない理由は、恐らくその余りに荒唐無稽に類する所から、こう云う破邪顕正を標榜する書物の性質上、故意の脱漏を利としたからでもあろうか。
+
+予は以下にこの異本第三段を紹介して、聊巴毗弇の前に姿を現した、日本の Diabolus を一瞥しようと思う。なお巴毗弇に関して、詳細を知りたい人は、新村博士の巴毗弇に関する論文を一読するが好い。
+
+
+\section{樋口一葉「大つごもり」}
+
+お母樣御機嫌よう好い新年をお迎へなされませ、左樣ならば參りますと、暇乞わざと恭しく、お峰下駄を直せ、お玄關からお歸りではないお出かけだぞとづぶ\textcolor{blue}{〳〵}\footnote{青字はうまく組めない。}しく大手を振りて、行先は何處、父が涙は一夜の騷ぎに夢とやならん、持つまじきは放蕩息子、持つまじきは放蕩を仕立る繼母ぞかし。鹽花こそふらね跡は一先掃き出して、若旦那退散のよろこび、金は惜しけれど見る目も憎ければ家に居らぬは上々なり、何うすれば彼のやうに圖太くなられるか、あの子を生んだ母さんの顏が見たい、と御新造例に依つて毒舌をみがきぬ。お峰は此出來事も何として耳に入るべき、犯したる罪の恐ろしさに、我れか、人か、先刻の仕業はと今更夢路を辿りて、おもへば此事あらはれずして濟むべきや、萬が中なる一枚とても數ふれば目の前なるを、願ひの額に相應の員數手近の處になくなりしとあらば、我れにしても疑ひは何處に向くべき、調べられなば何とせん、何といはん、言ひ拔けんは罪深し、白状せば伯父が上にもかゝる、我罪は覺悟の上なれど物堅き伯父樣にまで濡れ衣を着せて、干されぬは貧乏のならひ、かゝる事もするものと人の言ひはせぬか、悲しや何としたらよかろ、伯父樣に疵のつかぬやう、我身が頓死する法は無きかと目は御新造が起居にしたがひて、心はかけ硯のもとにさまよひぬ。
+
+
+\section{幸田露伴「雲のいろ\textcolor{blue}{〳〵}――卿雲」}
+
+景雲といひ、卿雲といひ、慶雲といへる、しかと指し定められたる雲にはあらざるべし。卿雲爛たり糺縵〻たり、といへる、煙にあらず雲にあらず紫を曳き光を流す、といへる、大人作矣、五色氤氳、といへる、金柯初めて繞繚、玉葉漸く氤氳、といへる、還つて九霄に入りて沆\textcolor{red}{瀣}\footnote{赤字は第四水準の文字。}を成し、夕嵐生ずる處鶴松に歸る、といへる詩の句などによりて見れば、歸するところは美しき雲といふまでなり。一年の中に幾度か爛たる雲の見えざらん。若しまた餘りに美しき眼なれぬ雲などの出でたらんは、氣中のさまの常ならぬよりなるべければ、却つて悦ぶべからざるに似たり。五色の雲など何にせん、天は青きがめでたく、雲は白きこそ優しけれ。八雲立つの神の御歌を解きて、その時立ちし雲は天地のみたまの顯はせりし吉瑞にて、いともくしびなる雲なりけむなど橘の守部が云へるは、當れりや否や、知らず。くしびなる雲とは如何なる雲ぞや、問はまほし。八雲立ちといひたまはで、八雲立つと言い切り玉へるも彼の奇しき瑞雲に驚かせ給へる語勢なりなどいへる、ことに奇しき言なり。崇神紀の歌に、八雲立つ出雲梟師が云〻と歌へるも、八雲たちとは云はで八雲立つといひたるなれば、驚きたる語勢なりといふべきか、いと奇しき言なり。
+
+
+\section{國木田獨歩「あの時分」}
+
+「鸚鵡をくださいって」と、かごを取って去ってしまいました。この四郎さんは私と仲よしで、近いうちに裏の田んぼで雁をつる約束がしてあったのです、ところがその晩、おッ母アと樋口は某坂の町に買い物があるとて出てゆき、政法の二人は校堂でやる生徒仲間の演説会にゆき、木村は祈禱会にゆき、家に残ったのは、下女代わりに来ている親類の娘と、四郎と私だけで、すこぶるさびしくなりましたから、雁つりの実行に取りかかりました。
+
+
+\section{森鷗外「百物語」}
+
+玄関に上がる時に見ると、上がってすぐ突き当る三畳には、男が二人立って何か忙がしそうに咡き合っていた。「どうしやがったのだなあ」「それだからおいらが蠟燭は舟で来る人なんぞに持せて来ては行けないと云ったのだ。差当り燭台に立ててあるのしきゃないのだから」と云うような事を言っている。楽屋の方の世話も焼いている人達であろう。二人は僕の立っているのには構わずに、奥へ這入ってしまう。入り替って、一人の男が覗いて見て、黙って又引っ込んでしまう。
+
+\end{document}
+
+青空文庫作成ファイル:
+このファイルは、インターネットの図書館、青空文庫(http://www.aozora.gr.jp/)で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。
diff --git a/language/japanese/uptex-base/samples/aozora-utarticle-utf8.tex b/language/japanese/uptex-base/samples/aozora-utarticle-utf8.tex
new file mode 100644
index 0000000000..3b3590ac64
--- /dev/null
+++ b/language/japanese/uptex-base/samples/aozora-utarticle-utf8.tex
@@ -0,0 +1,39 @@
+\documentclass{utarticle}
+\usepackage{color}
+
+\begin{document}
+
+\section{芥川龍之介「るしへる」}
+
+破提宇子と云う天主教を弁難した書物のある事は、知っている人も少くあるまい。これは、元和六年、加賀の禅僧巴毗弇なるものの著した書物である。巴毗弇は当初南蛮寺に住した天主教徒であったが、その後何かの事情から、DS 如来を捨てて仏門に帰依する事になった。書中に云っている所から推すと、彼は老儒の学にも造詣のある、一かどの才子だったらしい。
+
+破提宇子の流布本は、華頂山文庫の蔵本を、明治戊辰の頃、杞憂道人鵜飼徹定の序文と共に、出版したものである。が、そのほかにも異本がない訳ではない。現に予が所蔵の古写本の如きは、流布本と内容を異にする個所が多少ある。
+
+中でも同書の第三段は、悪魔の起源を論じた一章であるが、流布本のそれに比して、予の蔵本では内容が遥に多い。巴毗弇自身の目撃した悪魔の記事が、あの辛辣な弁難攻撃の間に態々引証されてあるからである。この記事が流布本に載せられていない理由は、恐らくその余りに荒唐無稽に類する所から、こう云う破邪顕正を標榜する書物の性質上、故意の脱漏を利としたからでもあろうか。
+
+予は以下にこの異本第三段を紹介して、聊巴毗弇の前に姿を現した、日本の Diabolus を一瞥しようと思う。なお巴毗弇に関して、詳細を知りたい人は、新村博士の巴毗弇に関する論文を一読するが好い。
+
+
+\section{樋口一葉「大つごもり」}
+
+お母樣御機嫌よう好い新年をお迎へなされませ、左樣ならば參りますと、暇乞わざと恭しく、お峰下駄を直せ、お玄關からお歸りではないお出かけだぞとづぶ〳〵しく大手を振りて、行先は何處、父が涙は一夜の騷ぎに夢とやならん、持つまじきは放蕩息子、持つまじきは放蕩を仕立る繼母ぞかし。鹽花こそふらね跡は一先掃き出して、若旦那退散のよろこび、金は惜しけれど見る目も憎ければ家に居らぬは上々なり、何うすれば彼のやうに圖太くなられるか、あの子を生んだ母さんの顏が見たい、と御新造例に依つて毒舌をみがきぬ。お峰は此出來事も何として耳に入るべき、犯したる罪の恐ろしさに、我れか、人か、先刻の仕業はと今更夢路を辿りて、おもへば此事あらはれずして濟むべきや、萬が中なる一枚とても數ふれば目の前なるを、願ひの額に相應の員數手近の處になくなりしとあらば、我れにしても疑ひは何處に向くべき、調べられなば何とせん、何といはん、言ひ拔けんは罪深し、白状せば伯父が上にもかゝる、我罪は覺悟の上なれど物堅き伯父樣にまで濡れ衣を着せて、干されぬは貧乏のならひ、かゝる事もするものと人の言ひはせぬか、悲しや何としたらよかろ、伯父樣に疵のつかぬやう、我身が頓死する法は無きかと目は御新造が起居にしたがひて、心はかけ硯のもとにさまよひぬ。
+
+
+\section{幸田露伴「雲のいろ〳〵――卿雲」}
+
+景雲といひ、卿雲といひ、慶雲といへる、しかと指し定められたる雲にはあらざるべし。卿雲爛たり糺縵〻たり、といへる、煙にあらず雲にあらず紫を曳き光を流す、といへる、大人作矣、五色氤氳、といへる、金柯初めて繞繚、玉葉漸く氤氳、といへる、還つて九霄に入りて沆\textcolor{red}{瀣}\footnote{赤字は第四水準の文字。}を成し、夕嵐生ずる處鶴松に歸る、といへる詩の句などによりて見れば、歸するところは美しき雲といふまでなり。一年の中に幾度か爛たる雲の見えざらん。若しまた餘りに美しき眼なれぬ雲などの出でたらんは、氣中のさまの常ならぬよりなるべければ、却つて悦ぶべからざるに似たり。五色の雲など何にせん、天は青きがめでたく、雲は白きこそ優しけれ。八雲立つの神の御歌を解きて、その時立ちし雲は天地のみたまの顯はせりし吉瑞にて、いともくしびなる雲なりけむなど橘の守部が云へるは、當れりや否や、知らず。くしびなる雲とは如何なる雲ぞや、問はまほし。八雲立ちといひたまはで、八雲立つと言い切り玉へるも彼の奇しき瑞雲に驚かせ給へる語勢なりなどいへる、ことに奇しき言なり。崇神紀の歌に、八雲立つ出雲梟師が云〻と歌へるも、八雲たちとは云はで八雲立つといひたるなれば、驚きたる語勢なりといふべきか、いと奇しき言なり。
+
+
+\section{國木田獨歩「あの時分」}
+
+「鸚鵡をくださいって」と、かごを取って去ってしまいました。この四郎さんは私と仲よしで、近いうちに裏の田んぼで雁をつる約束がしてあったのです、ところがその晩、おッ母アと樋口は某坂の町に買い物があるとて出てゆき、政法の二人は校堂でやる生徒仲間の演説会にゆき、木村は祈禱会にゆき、家に残ったのは、下女代わりに来ている親類の娘と、四郎と私だけで、すこぶるさびしくなりましたから、雁つりの実行に取りかかりました。
+
+
+\section{森鷗外「百物語」}
+
+玄関に上がる時に見ると、上がってすぐ突き当る三畳には、男が二人立って何か忙がしそうに咡き合っていた。「どうしやがったのだなあ」「それだからおいらが蠟燭は舟で来る人なんぞに持せて来ては行けないと云ったのだ。差当り燭台に立ててあるのしきゃないのだから」と云うような事を言っている。楽屋の方の世話も焼いている人達であろう。二人は僕の立っているのには構わずに、奥へ這入ってしまう。入り替って、一人の男が覗いて見て、黙って又引っ込んでしまう。
+
+\end{document}
+
+青空文庫作成ファイル:
+このファイルは、インターネットの図書館、青空文庫(http://www.aozora.gr.jp/)で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。
diff --git a/language/japanese/uptex-base/samples/aozora-utbook-utf8.tex b/language/japanese/uptex-base/samples/aozora-utbook-utf8.tex
new file mode 100644
index 0000000000..929fbe51dc
--- /dev/null
+++ b/language/japanese/uptex-base/samples/aozora-utbook-utf8.tex
@@ -0,0 +1,39 @@
+\documentclass{utbook}
+\usepackage{color}
+
+\begin{document}
+\chapter{青空文庫のサンプル}
+\section{芥川龍之介「るしへる」}
+
+破提宇子と云う天主教を弁難した書物のある事は、知っている人も少くあるまい。これは、元和六年、加賀の禅僧巴毗弇なるものの著した書物である。巴毗弇は当初南蛮寺に住した天主教徒であったが、その後何かの事情から、DS 如来を捨てて仏門に帰依する事になった。書中に云っている所から推すと、彼は老儒の学にも造詣のある、一かどの才子だったらしい。
+
+破提宇子の流布本は、華頂山文庫の蔵本を、明治戊辰の頃、杞憂道人鵜飼徹定の序文と共に、出版したものである。が、そのほかにも異本がない訳ではない。現に予が所蔵の古写本の如きは、流布本と内容を異にする個所が多少ある。
+
+中でも同書の第三段は、悪魔の起源を論じた一章であるが、流布本のそれに比して、予の蔵本では内容が遥に多い。巴毗弇自身の目撃した悪魔の記事が、あの辛辣な弁難攻撃の間に態々引証されてあるからである。この記事が流布本に載せられていない理由は、恐らくその余りに荒唐無稽に類する所から、こう云う破邪顕正を標榜する書物の性質上、故意の脱漏を利としたからでもあろうか。
+
+予は以下にこの異本第三段を紹介して、聊巴毗弇の前に姿を現した、日本の Diabolus を一瞥しようと思う。なお巴毗弇に関して、詳細を知りたい人は、新村博士の巴毗弇に関する論文を一読するが好い。
+
+
+\section{樋口一葉「大つごもり」}
+
+お母樣御機嫌よう好い新年をお迎へなされませ、左樣ならば參りますと、暇乞わざと恭しく、お峰下駄を直せ、お玄關からお歸りではないお出かけだぞとづぶ〳〵しく大手を振りて、行先は何處、父が涙は一夜の騷ぎに夢とやならん、持つまじきは放蕩息子、持つまじきは放蕩を仕立る繼母ぞかし。鹽花こそふらね跡は一先掃き出して、若旦那退散のよろこび、金は惜しけれど見る目も憎ければ家に居らぬは上々なり、何うすれば彼のやうに圖太くなられるか、あの子を生んだ母さんの顏が見たい、と御新造例に依つて毒舌をみがきぬ。お峰は此出來事も何として耳に入るべき、犯したる罪の恐ろしさに、我れか、人か、先刻の仕業はと今更夢路を辿りて、おもへば此事あらはれずして濟むべきや、萬が中なる一枚とても數ふれば目の前なるを、願ひの額に相應の員數手近の處になくなりしとあらば、我れにしても疑ひは何處に向くべき、調べられなば何とせん、何といはん、言ひ拔けんは罪深し、白状せば伯父が上にもかゝる、我罪は覺悟の上なれど物堅き伯父樣にまで濡れ衣を着せて、干されぬは貧乏のならひ、かゝる事もするものと人の言ひはせぬか、悲しや何としたらよかろ、伯父樣に疵のつかぬやう、我身が頓死する法は無きかと目は御新造が起居にしたがひて、心はかけ硯のもとにさまよひぬ。
+
+
+\section{幸田露伴「雲のいろ〳〵――卿雲」}
+
+景雲といひ、卿雲といひ、慶雲といへる、しかと指し定められたる雲にはあらざるべし。卿雲爛たり糺縵〻たり、といへる、煙にあらず雲にあらず紫を曳き光を流す、といへる、大人作矣、五色氤氳、といへる、金柯初めて繞繚、玉葉漸く氤氳、といへる、還つて九霄に入りて沆\textcolor{red}{瀣}\footnote{赤字は第四水準の文字。}を成し、夕嵐生ずる處鶴松に歸る、といへる詩の句などによりて見れば、歸するところは美しき雲といふまでなり。一年の中に幾度か爛たる雲の見えざらん。若しまた餘りに美しき眼なれぬ雲などの出でたらんは、氣中のさまの常ならぬよりなるべければ、却つて悦ぶべからざるに似たり。五色の雲など何にせん、天は青きがめでたく、雲は白きこそ優しけれ。八雲立つの神の御歌を解きて、その時立ちし雲は天地のみたまの顯はせりし吉瑞にて、いともくしびなる雲なりけむなど橘の守部が云へるは、當れりや否や、知らず。くしびなる雲とは如何なる雲ぞや、問はまほし。八雲立ちといひたまはで、八雲立つと言い切り玉へるも彼の奇しき瑞雲に驚かせ給へる語勢なりなどいへる、ことに奇しき言なり。崇神紀の歌に、八雲立つ出雲梟師が云〻と歌へるも、八雲たちとは云はで八雲立つといひたるなれば、驚きたる語勢なりといふべきか、いと奇しき言なり。
+
+
+\section{國木田獨歩「あの時分」}
+
+「鸚鵡をくださいって」と、かごを取って去ってしまいました。この四郎さんは私と仲よしで、近いうちに裏の田んぼで雁をつる約束がしてあったのです、ところがその晩、おッ母アと樋口は某坂の町に買い物があるとて出てゆき、政法の二人は校堂でやる生徒仲間の演説会にゆき、木村は祈禱会にゆき、家に残ったのは、下女代わりに来ている親類の娘と、四郎と私だけで、すこぶるさびしくなりましたから、雁つりの実行に取りかかりました。
+
+
+\section{森鷗外「百物語」}
+
+玄関に上がる時に見ると、上がってすぐ突き当る三畳には、男が二人立って何か忙がしそうに咡き合っていた。「どうしやがったのだなあ」「それだからおいらが蠟燭は舟で来る人なんぞに持せて来ては行けないと云ったのだ。差当り燭台に立ててあるのしきゃないのだから」と云うような事を言っている。楽屋の方の世話も焼いている人達であろう。二人は僕の立っているのには構わずに、奥へ這入ってしまう。入り替って、一人の男が覗いて見て、黙って又引っ込んでしまう。
+
+\end{document}
+
+青空文庫作成ファイル:
+このファイルは、インターネットの図書館、青空文庫(http://www.aozora.gr.jp/)で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。
diff --git a/language/japanese/uptex-base/samples/aozora-utf8.tex b/language/japanese/uptex-base/samples/aozora-utf8.tex
new file mode 100644
index 0000000000..3b3590ac64
--- /dev/null
+++ b/language/japanese/uptex-base/samples/aozora-utf8.tex
@@ -0,0 +1,39 @@
+\documentclass{utarticle}
+\usepackage{color}
+
+\begin{document}
+
+\section{芥川龍之介「るしへる」}
+
+破提宇子と云う天主教を弁難した書物のある事は、知っている人も少くあるまい。これは、元和六年、加賀の禅僧巴毗弇なるものの著した書物である。巴毗弇は当初南蛮寺に住した天主教徒であったが、その後何かの事情から、DS 如来を捨てて仏門に帰依する事になった。書中に云っている所から推すと、彼は老儒の学にも造詣のある、一かどの才子だったらしい。
+
+破提宇子の流布本は、華頂山文庫の蔵本を、明治戊辰の頃、杞憂道人鵜飼徹定の序文と共に、出版したものである。が、そのほかにも異本がない訳ではない。現に予が所蔵の古写本の如きは、流布本と内容を異にする個所が多少ある。
+
+中でも同書の第三段は、悪魔の起源を論じた一章であるが、流布本のそれに比して、予の蔵本では内容が遥に多い。巴毗弇自身の目撃した悪魔の記事が、あの辛辣な弁難攻撃の間に態々引証されてあるからである。この記事が流布本に載せられていない理由は、恐らくその余りに荒唐無稽に類する所から、こう云う破邪顕正を標榜する書物の性質上、故意の脱漏を利としたからでもあろうか。
+
+予は以下にこの異本第三段を紹介して、聊巴毗弇の前に姿を現した、日本の Diabolus を一瞥しようと思う。なお巴毗弇に関して、詳細を知りたい人は、新村博士の巴毗弇に関する論文を一読するが好い。
+
+
+\section{樋口一葉「大つごもり」}
+
+お母樣御機嫌よう好い新年をお迎へなされませ、左樣ならば參りますと、暇乞わざと恭しく、お峰下駄を直せ、お玄關からお歸りではないお出かけだぞとづぶ〳〵しく大手を振りて、行先は何處、父が涙は一夜の騷ぎに夢とやならん、持つまじきは放蕩息子、持つまじきは放蕩を仕立る繼母ぞかし。鹽花こそふらね跡は一先掃き出して、若旦那退散のよろこび、金は惜しけれど見る目も憎ければ家に居らぬは上々なり、何うすれば彼のやうに圖太くなられるか、あの子を生んだ母さんの顏が見たい、と御新造例に依つて毒舌をみがきぬ。お峰は此出來事も何として耳に入るべき、犯したる罪の恐ろしさに、我れか、人か、先刻の仕業はと今更夢路を辿りて、おもへば此事あらはれずして濟むべきや、萬が中なる一枚とても數ふれば目の前なるを、願ひの額に相應の員數手近の處になくなりしとあらば、我れにしても疑ひは何處に向くべき、調べられなば何とせん、何といはん、言ひ拔けんは罪深し、白状せば伯父が上にもかゝる、我罪は覺悟の上なれど物堅き伯父樣にまで濡れ衣を着せて、干されぬは貧乏のならひ、かゝる事もするものと人の言ひはせぬか、悲しや何としたらよかろ、伯父樣に疵のつかぬやう、我身が頓死する法は無きかと目は御新造が起居にしたがひて、心はかけ硯のもとにさまよひぬ。
+
+
+\section{幸田露伴「雲のいろ〳〵――卿雲」}
+
+景雲といひ、卿雲といひ、慶雲といへる、しかと指し定められたる雲にはあらざるべし。卿雲爛たり糺縵〻たり、といへる、煙にあらず雲にあらず紫を曳き光を流す、といへる、大人作矣、五色氤氳、といへる、金柯初めて繞繚、玉葉漸く氤氳、といへる、還つて九霄に入りて沆\textcolor{red}{瀣}\footnote{赤字は第四水準の文字。}を成し、夕嵐生ずる處鶴松に歸る、といへる詩の句などによりて見れば、歸するところは美しき雲といふまでなり。一年の中に幾度か爛たる雲の見えざらん。若しまた餘りに美しき眼なれぬ雲などの出でたらんは、氣中のさまの常ならぬよりなるべければ、却つて悦ぶべからざるに似たり。五色の雲など何にせん、天は青きがめでたく、雲は白きこそ優しけれ。八雲立つの神の御歌を解きて、その時立ちし雲は天地のみたまの顯はせりし吉瑞にて、いともくしびなる雲なりけむなど橘の守部が云へるは、當れりや否や、知らず。くしびなる雲とは如何なる雲ぞや、問はまほし。八雲立ちといひたまはで、八雲立つと言い切り玉へるも彼の奇しき瑞雲に驚かせ給へる語勢なりなどいへる、ことに奇しき言なり。崇神紀の歌に、八雲立つ出雲梟師が云〻と歌へるも、八雲たちとは云はで八雲立つといひたるなれば、驚きたる語勢なりといふべきか、いと奇しき言なり。
+
+
+\section{國木田獨歩「あの時分」}
+
+「鸚鵡をくださいって」と、かごを取って去ってしまいました。この四郎さんは私と仲よしで、近いうちに裏の田んぼで雁をつる約束がしてあったのです、ところがその晩、おッ母アと樋口は某坂の町に買い物があるとて出てゆき、政法の二人は校堂でやる生徒仲間の演説会にゆき、木村は祈禱会にゆき、家に残ったのは、下女代わりに来ている親類の娘と、四郎と私だけで、すこぶるさびしくなりましたから、雁つりの実行に取りかかりました。
+
+
+\section{森鷗外「百物語」}
+
+玄関に上がる時に見ると、上がってすぐ突き当る三畳には、男が二人立って何か忙がしそうに咡き合っていた。「どうしやがったのだなあ」「それだからおいらが蠟燭は舟で来る人なんぞに持せて来ては行けないと云ったのだ。差当り燭台に立ててあるのしきゃないのだから」と云うような事を言っている。楽屋の方の世話も焼いている人達であろう。二人は僕の立っているのには構わずに、奥へ這入ってしまう。入り替って、一人の男が覗いて見て、黙って又引っ込んでしまう。
+
+\end{document}
+
+青空文庫作成ファイル:
+このファイルは、インターネットの図書館、青空文庫(http://www.aozora.gr.jp/)で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。
diff --git a/language/japanese/uptex-base/samples/aozora-utreport-utf8.tex b/language/japanese/uptex-base/samples/aozora-utreport-utf8.tex
new file mode 100644
index 0000000000..05ca3c206d
--- /dev/null
+++ b/language/japanese/uptex-base/samples/aozora-utreport-utf8.tex
@@ -0,0 +1,39 @@
+\documentclass{utreport}
+\usepackage{color}
+
+\begin{document}
+\chapter{青空文庫のサンプル}
+\section{芥川龍之介「るしへる」}
+
+破提宇子と云う天主教を弁難した書物のある事は、知っている人も少くあるまい。これは、元和六年、加賀の禅僧巴毗弇なるものの著した書物である。巴毗弇は当初南蛮寺に住した天主教徒であったが、その後何かの事情から、DS 如来を捨てて仏門に帰依する事になった。書中に云っている所から推すと、彼は老儒の学にも造詣のある、一かどの才子だったらしい。
+
+破提宇子の流布本は、華頂山文庫の蔵本を、明治戊辰の頃、杞憂道人鵜飼徹定の序文と共に、出版したものである。が、そのほかにも異本がない訳ではない。現に予が所蔵の古写本の如きは、流布本と内容を異にする個所が多少ある。
+
+中でも同書の第三段は、悪魔の起源を論じた一章であるが、流布本のそれに比して、予の蔵本では内容が遥に多い。巴毗弇自身の目撃した悪魔の記事が、あの辛辣な弁難攻撃の間に態々引証されてあるからである。この記事が流布本に載せられていない理由は、恐らくその余りに荒唐無稽に類する所から、こう云う破邪顕正を標榜する書物の性質上、故意の脱漏を利としたからでもあろうか。
+
+予は以下にこの異本第三段を紹介して、聊巴毗弇の前に姿を現した、日本の Diabolus を一瞥しようと思う。なお巴毗弇に関して、詳細を知りたい人は、新村博士の巴毗弇に関する論文を一読するが好い。
+
+
+\section{樋口一葉「大つごもり」}
+
+お母樣御機嫌よう好い新年をお迎へなされませ、左樣ならば參りますと、暇乞わざと恭しく、お峰下駄を直せ、お玄關からお歸りではないお出かけだぞとづぶ〳〵しく大手を振りて、行先は何處、父が涙は一夜の騷ぎに夢とやならん、持つまじきは放蕩息子、持つまじきは放蕩を仕立る繼母ぞかし。鹽花こそふらね跡は一先掃き出して、若旦那退散のよろこび、金は惜しけれど見る目も憎ければ家に居らぬは上々なり、何うすれば彼のやうに圖太くなられるか、あの子を生んだ母さんの顏が見たい、と御新造例に依つて毒舌をみがきぬ。お峰は此出來事も何として耳に入るべき、犯したる罪の恐ろしさに、我れか、人か、先刻の仕業はと今更夢路を辿りて、おもへば此事あらはれずして濟むべきや、萬が中なる一枚とても數ふれば目の前なるを、願ひの額に相應の員數手近の處になくなりしとあらば、我れにしても疑ひは何處に向くべき、調べられなば何とせん、何といはん、言ひ拔けんは罪深し、白状せば伯父が上にもかゝる、我罪は覺悟の上なれど物堅き伯父樣にまで濡れ衣を着せて、干されぬは貧乏のならひ、かゝる事もするものと人の言ひはせぬか、悲しや何としたらよかろ、伯父樣に疵のつかぬやう、我身が頓死する法は無きかと目は御新造が起居にしたがひて、心はかけ硯のもとにさまよひぬ。
+
+
+\section{幸田露伴「雲のいろ〳〵――卿雲」}
+
+景雲といひ、卿雲といひ、慶雲といへる、しかと指し定められたる雲にはあらざるべし。卿雲爛たり糺縵〻たり、といへる、煙にあらず雲にあらず紫を曳き光を流す、といへる、大人作矣、五色氤氳、といへる、金柯初めて繞繚、玉葉漸く氤氳、といへる、還つて九霄に入りて沆\textcolor{red}{瀣}\footnote{赤字は第四水準の文字。}を成し、夕嵐生ずる處鶴松に歸る、といへる詩の句などによりて見れば、歸するところは美しき雲といふまでなり。一年の中に幾度か爛たる雲の見えざらん。若しまた餘りに美しき眼なれぬ雲などの出でたらんは、氣中のさまの常ならぬよりなるべければ、却つて悦ぶべからざるに似たり。五色の雲など何にせん、天は青きがめでたく、雲は白きこそ優しけれ。八雲立つの神の御歌を解きて、その時立ちし雲は天地のみたまの顯はせりし吉瑞にて、いともくしびなる雲なりけむなど橘の守部が云へるは、當れりや否や、知らず。くしびなる雲とは如何なる雲ぞや、問はまほし。八雲立ちといひたまはで、八雲立つと言い切り玉へるも彼の奇しき瑞雲に驚かせ給へる語勢なりなどいへる、ことに奇しき言なり。崇神紀の歌に、八雲立つ出雲梟師が云〻と歌へるも、八雲たちとは云はで八雲立つといひたるなれば、驚きたる語勢なりといふべきか、いと奇しき言なり。
+
+
+\section{國木田獨歩「あの時分」}
+
+「鸚鵡をくださいって」と、かごを取って去ってしまいました。この四郎さんは私と仲よしで、近いうちに裏の田んぼで雁をつる約束がしてあったのです、ところがその晩、おッ母アと樋口は某坂の町に買い物があるとて出てゆき、政法の二人は校堂でやる生徒仲間の演説会にゆき、木村は祈禱会にゆき、家に残ったのは、下女代わりに来ている親類の娘と、四郎と私だけで、すこぶるさびしくなりましたから、雁つりの実行に取りかかりました。
+
+
+\section{森鷗外「百物語」}
+
+玄関に上がる時に見ると、上がってすぐ突き当る三畳には、男が二人立って何か忙がしそうに咡き合っていた。「どうしやがったのだなあ」「それだからおいらが蠟燭は舟で来る人なんぞに持せて来ては行けないと云ったのだ。差当り燭台に立ててあるのしきゃないのだから」と云うような事を言っている。楽屋の方の世話も焼いている人達であろう。二人は僕の立っているのには構わずに、奥へ這入ってしまう。入り替って、一人の男が覗いて見て、黙って又引っ込んでしまう。
+
+\end{document}
+
+青空文庫作成ファイル:
+このファイルは、インターネットの図書館、青空文庫(http://www.aozora.gr.jp/)で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。
diff --git a/language/japanese/uptex-base/samples/area-euc-incl.tex b/language/japanese/uptex-base/samples/area-euc-incl.tex
new file mode 100644
index 0000000000..9c4224b452
--- /dev/null
+++ b/language/japanese/uptex-base/samples/area-euc-incl.tex
@@ -0,0 +1,6 @@
+\documentclass{jarticle}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+\begin{document}
+\includegraphics{area-euc.1}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/area-euc.mp b/language/japanese/uptex-base/samples/area-euc.mp
new file mode 100644
index 0000000000..4410e27369
--- /dev/null
+++ b/language/japanese/uptex-base/samples/area-euc.mp
@@ -0,0 +1,20 @@
+verbatimtex
+%&platex-euc
+\documentclass{jarticle}
+\begin{document}
+etex;
+beginfig(1);
+u=40;
+v=40;
+r=30;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor red;
+label(btex ȡ etex, (u,v));
+u:=u+46;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor blue;
+label(btex \tate ȡ etex, (u,v));
+u:=u-23;
+v:=v+40;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor green;
+label(btex Ѥ $\pi r^2$ etex, (u,v));
+endfig;
+end.
diff --git a/language/japanese/uptex-base/samples/area-jis-incl.tex b/language/japanese/uptex-base/samples/area-jis-incl.tex
new file mode 100644
index 0000000000..8a4e79cc51
--- /dev/null
+++ b/language/japanese/uptex-base/samples/area-jis-incl.tex
@@ -0,0 +1,6 @@
+\documentclass{jarticle}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+\begin{document}
+\includegraphics{area-jis.1}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/area-jis.mp b/language/japanese/uptex-base/samples/area-jis.mp
new file mode 100644
index 0000000000..b058f02ffa
--- /dev/null
+++ b/language/japanese/uptex-base/samples/area-jis.mp
@@ -0,0 +1,20 @@
+verbatimtex
+%&platex-jis
+\documentclass{jarticle}
+\begin{document}
+etex;
+beginfig(1);
+u=40;
+v=40;
+r=30;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor red;
+label(btex $B!}#1&A9b5H!#(B etex, (u,v));
+u:=u+46;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor blue;
+label(btex \tate $B!}#1&A9b5H!#(B etex, (u,v));
+u:=u-23;
+v:=v+40;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor green;
+label(btex $BLL@Q$O(B $\pi r^2$ etex, (u,v));
+endfig;
+end.
diff --git a/language/japanese/uptex-base/samples/area-sjis-incl.tex b/language/japanese/uptex-base/samples/area-sjis-incl.tex
new file mode 100644
index 0000000000..2a24eb87b7
--- /dev/null
+++ b/language/japanese/uptex-base/samples/area-sjis-incl.tex
@@ -0,0 +1,6 @@
+\documentclass{jarticle}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+\begin{document}
+\includegraphics{area-sjis.1}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/area-sjis.mp b/language/japanese/uptex-base/samples/area-sjis.mp
new file mode 100644
index 0000000000..9bdf9bdc81
--- /dev/null
+++ b/language/japanese/uptex-base/samples/area-sjis.mp
@@ -0,0 +1,20 @@
+verbatimtex
+%&platex-sjis
+\documentclass{jarticle}
+\begin{document}
+etex;
+beginfig(1);
+u=40;
+v=40;
+r=30;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor red;
+label(btex PgB etex, (u,v));
+u:=u+46;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor blue;
+label(btex \tate PgB etex, (u,v));
+u:=u-23;
+v:=v+40;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor green;
+label(btex ʐς $\pi r^2$ etex, (u,v));
+endfig;
+end.
diff --git a/language/japanese/uptex-base/samples/area-uptex-incl.tex b/language/japanese/uptex-base/samples/area-uptex-incl.tex
new file mode 100644
index 0000000000..a4bda83c61
--- /dev/null
+++ b/language/japanese/uptex-base/samples/area-uptex-incl.tex
@@ -0,0 +1,6 @@
+\documentclass{ujarticle}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+\begin{document}
+\includegraphics{area-uptex.1}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/area-uptex.mp b/language/japanese/uptex-base/samples/area-uptex.mp
new file mode 100644
index 0000000000..32244685a0
--- /dev/null
+++ b/language/japanese/uptex-base/samples/area-uptex.mp
@@ -0,0 +1,21 @@
+verbatimtex
+%&uplatex-utf8
+\documentclass{ujarticle}
+\begin{document}
+etex;
+beginfig(1);
+u=40;
+v=40;
+r=30;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor red;
+% set3対応フォント+dviware なら「𠮷」もUTF-8で直接書ける。
+label(btex ◎①α髙𠮷。カナ。 etex, (u,v));
+u:=u+46;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor blue;
+label(btex \tate ◎①α髙𠮷。 etex, (u,v));
+u:=u-23;
+v:=v+40;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor green;
+label(btex 面積は $\pi r^2$ etex, (u,v));
+endfig;
+end.
diff --git a/language/japanese/uptex-base/samples/area-utf8-incl.tex b/language/japanese/uptex-base/samples/area-utf8-incl.tex
new file mode 100644
index 0000000000..697e630ae5
--- /dev/null
+++ b/language/japanese/uptex-base/samples/area-utf8-incl.tex
@@ -0,0 +1,6 @@
+\documentclass{jarticle}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+\begin{document}
+\includegraphics{area-utf8.1}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/area-utf8.mp b/language/japanese/uptex-base/samples/area-utf8.mp
new file mode 100644
index 0000000000..68340b4a9d
--- /dev/null
+++ b/language/japanese/uptex-base/samples/area-utf8.mp
@@ -0,0 +1,20 @@
+verbatimtex
+%&platex-utf8
+\documentclass{jarticle}
+\begin{document}
+etex;
+beginfig(1);
+u=40;
+v=40;
+r=30;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor red;
+label(btex ◎1α高吉。 etex, (u,v));
+u:=u+46;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor blue;
+label(btex \tate ◎1α高吉。 etex, (u,v));
+u:=u-23;
+v:=v+40;
+draw (u+r,v)..(u,v+r)..(u-r,v)..(u,v-r)..cycle withcolor green;
+label(btex 面積は $\pi r^2$ etex, (u,v));
+endfig;
+end.
diff --git a/language/japanese/uptex-base/samples/bkmk-docinfo.txt b/language/japanese/uptex-base/samples/bkmk-docinfo.txt
new file mode 100644
index 0000000000..d7ec0b992c
--- /dev/null
+++ b/language/japanese/uptex-base/samples/bkmk-docinfo.txt
@@ -0,0 +1,12 @@
+%
+% a sample of docinfo
+% this is overwritten by convbkmk.rb -o
+%
+\catcode`\@=0
+@catcode`@\=12
+@def@PDFTITLE{いろいろ確かめてみる}
+@def@PDFSUBJECT{hyperref編}
+@def@PDFAUTHOR{名無 権兵衛}
+@def@PDFKEYWORDS{TeX; dvips; dvipdfmx; bookmark; hyperref; しおり; pdf; \202100\240}
+@catcode`@\=0
+\catcode`\@=12
diff --git a/language/japanese/uptex-base/samples/bkmk-jis.tex b/language/japanese/uptex-base/samples/bkmk-jis.tex
new file mode 100644
index 0000000000..20ac50a9da
--- /dev/null
+++ b/language/japanese/uptex-base/samples/bkmk-jis.tex
@@ -0,0 +1,227 @@
+% -*- coding: iso-2022-jp -*-
+%%%%%%%%
+% To control hyperref on command line,
+% you can select one of (1),(2a),(2b),(3).
+% (1) do not treat hyperref
+% $ uplatex bkmk-jis.tex
+% (2a) hyperref + dvipdfmx (with CMap conversion)
+% $ uplatex "\def\withhyperref{dvipdfmx}\input" bkmk-jis.tex
+% (2b) hyperref + dvipdfmx + "convbkmk.rb -o"/out2uni (w/o CMap conversion)
+% $ uplatex "\def\withhyperref{dvipdfmx}\def\nocmap{true}\input" bkmk-jis.tex
+% (3) hyperref + dvips + convbkmk.rb + distiller/ps2pdf
+% $ uplatex "\def\withhyperref{dvips}\input" bkmk-jis.tex
+%%%%%%
+
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000
+
+ %% for upLaTeX
+ \def\pLaTeXorupLaTeX{upLaTeX}
+ \uptexmodetrue
+ \def\innerencoding{UPTEX}
+ \def\cmap{UTF8-UTF16}
+
+\else
+
+ %% for pLaTeX
+ \def\pLaTeXorupLaTeX{pLaTeX}
+ \uptexmodefalse
+
+ \ifnum\jis"2121="A1A1
+ \def\innerencoding{EUC}
+ \def\cmap{EUC-UCS2}
+ \fi
+ \ifnum\jis"2121="8140
+ \def\innerencoding{SJIS}
+ \def\cmap{90ms-RKSJ-UCS2}
+ \fi
+
+\fi
+
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+\def\@tarticle{tarticle}
+\def\@ujarticle{ujarticle}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+\ifx\class\@jarticle
+ \documentclass[a4paper,titlepage]{\class}
+\else
+ \ifx\class\@ujarticle
+ \documentclass[a4paper,titlepage]{\class}
+ \else
+ \documentclass[a4paper,titlepage,landscape]{\class}
+ \fi
+\fi
+
+\usepackage{graphicx}
+\usepackage{textcomp}
+\usepackage[\@opt@]{otf}
+
+\def\@dvipdfmx{dvipdfmx}
+\def\@dvips{dvips}
+
+\ifx\withhyperref\@undefined
+ \def\withhyperref{undefined}
+ \def\texorpdfstring{%
+ \expandafter\@firstoftwo
+ }
+\else
+ \ifx\withhyperref\@dvipdfmx
+ \def\@hyperrefkeyval{dvipdfm}
+ \usepackage{atbegshi}
+ \ifx\nocmap\@undefined
+ \AtBeginShipoutFirst{\special{pdf:tounicode \cmap}}
+ \else
+ \def\cmap{---}
+ \fi
+ \fi
+ \ifx\withhyperref\@dvips
+ \def\@hyperrefkeyval{dvips}
+ \fi
+
+\ifx\nocmap\@undefined
+ \usepackage[\@hyperrefkeyval,%
+ bookmarks=true,%
+ bookmarksnumbered=true,%
+ bookmarkstype=toc,%
+ %pdfstartview={FitBH -32768},%
+ pdftitle={$B$$$m$$$m3N$+$a$F$_$k(B},%
+ pdfsubject={hyperref$BJT(B},%
+ pdfauthor={$BL>L5(B $B8"J<1R(B},%
+ pdfkeywords={TeX; dvips; dvipdfmx; bookmark; hyperref; $B$7$*$j(B; pdf}%
+ ]{hyperref}
+\else
+ \input bkmk-docinfo.out
+ \usepackage[dvipdfm,%
+ bookmarks=true,%
+ bookmarksnumbered=true,%
+ bookmarkstype=toc,%
+ %pdfstartview={FitBH -32768},%
+ pdftitle=\PDFTITLE,%
+ pdfsubject=\PDFSUBJECT,%
+ pdfauthor=\PDFAUTHOR,%
+ pdfkeywords=\PDFKEYWORDS%
+ ]{hyperref}
+\fi
+
+\fi
+
+\makeatother
+
+\title{$B$$$m$$$m3N$+$a$F$_$k(B}
+
+\author{$BL>L5(B $B8"J<1R(B}
+
+\oddsidemargin0mm
+\evensidemargin0mm
+\topmargin-15mm
+\textwidth162mm
+\textheight245mm
+
+\edef\bs{$\backslash$\kern0em}
+
+\begin{document}
+\maketitle
+\section{section title by ASCII}
+test test.
+
+hyperref with: \withhyperref
+\makeatletter
+\ifx\withhyperref\@dvipdfmx
+ ~~CMap:\cmap
+\fi
+\makeatother
+\typeout{### hyperref with: \withhyperref}
+
+pLaTeX or upLaTeX: \pLaTeXorupLaTeX
+\typeout{### pLaTeX or upLaTeX: \pLaTeXorupLaTeX}
+
+inner encoding: \innerencoding
+\typeout{### inner encoding: \innerencoding}
+
+\begin{figure}
+ \begin{center}
+ \scalebox{0.2}{\includegraphics{box-jis.eps}}
+ \caption{JIS$B$GId9f2=$5$l$?(BEPS$B%U%!%$%k(B}
+ \label{fig:box-jis}
+ \end{center}
+\end{figure}
+%\begin{figure}
+% \begin{center}
+% \scalebox{0.2}{\includegraphics{box-sjis.eps}}
+% \caption{Shift\_JIS$B$GId9f2=$5$l$?(BEPS$B%U%!%$%k(B}
+% \label{fig:box-sjis}
+% \end{center}
+%\end{figure}
+%\begin{figure}
+% \begin{center}
+% \scalebox{0.2}{\includegraphics{box-euc.eps}}
+% \caption{EUC-JP$B$GId9f2=$5$l$?(BEPS$B%U%!%$%k(B}
+% \label{fig:box-euc}
+% \end{center}
+%\end{figure}
+%\begin{figure}
+% \begin{center}
+% \scalebox{0.2}{\includegraphics{box-utf8.eps}}
+% \caption{UTF-8$B$GId9f2=$5$l$?(BEPS$B%U%!%$%k(B}
+% \label{fig:box-utf8}
+% \end{center}
+%\end{figure}
+\section{$B&A&B&C(B}
+test test.
+
+\section{$B'Q'R'S(B}
+test test.
+
+\section{$B%;%/%7%g%s(B}
+test test.
+\subsection{$B%5%V%;%/%7%g%s(B($B3g8L(B)}
+test test.
+
+\makeatletter
+\ifx\withhyperref\@undefined
+\else
+
+\section{Escape sequences \texorpdfstring{\textbullet\textdagger\textdaggerdbl\ldots---\textflorin--\textperthousand\texttrademark\texteuro}%
+{\200\201\202\203\204\206\205\213\222\240}$B$J$I(B}
+\textbullet\textdagger\textdaggerdbl\ldots---\textflorin--\textperthousand\texttrademark\texteuro $B$J$I(B
+
+\section{$B8+=P$7$K(B\texorpdfstring{\bs}{\134}UTF, \texorpdfstring{\bs}{\134}UTFC, \texorpdfstring{\bs}{\134}UTFM$B$J$I(B}
+\subsection{$BF|K\!'(B\UTF{9aa8}\UTF{6D77} $B4JBN;z!'(B\UTFC{9aa8}\UTFC{6D77} $BHKqs;z!'(B\UTFT{9AA8}\UTFT{6d77} $BD+A/!'(B\UTFK{9AA8}\UTFK{6d77}}
+$BF|K\!'(B\UTF{9aa8}\UTF{6D77} $B4JBN;z!'(B\UTFC{9aa8}\UTFC{6D77} $BHKqs;z!'(B\UTFT{9AA8}\UTFT{6d77} $BD+A/!'(B\UTFK{9AA8}\UTFK{6d77}
+
+\subsection{$B%O%s%0%k!'(B\UTFK{c548}\UTFK{b155}\UTFK{d558}\UTFK{C138}\UTFK{C694}}
+$B%O%s%0%k!'(B\UTFK{c548}\UTFK{b155}\UTFK{d558}\UTFK{C138}\UTFK{C694}
+
+\subsection{$BF|K\!'(B\UTF{20509}\UTF{241FE}$B!!4JBN;z!'(B\UTFC{20509}\UTFC{241FE} $BB?8@8l!'(B\UTFM{20509}\UTFM{241FE}}
+$BF|K\!'(B\UTF{20509}\UTF{241FE}$B!!4JBN;z!'(B\UTFC{20509}\UTFC{241FE} $BB?8@8l!'(B\UTFM{20509}\UTFM{241FE}
+
+\subsection{$BF|K\!'(B\UTF{20509}\UTF{241FE}$B!!4JBN;z!'(B\UTFC{20509}\UTFC{241FE} $BB?8@8l!'(B\UTFM{20509}\UTFM{241FE}}
+$BF|K\!'(B\UTF{20509}\UTF{241FE}$B!!4JBN;z!'(B\UTFC{20509}\UTFC{241FE} $BB?8@8l!'(B\UTFM{20509}\UTFM{241FE}
+
+\subsection{$BF|K\!'(B\UTF{20b9f}\UTF{26402}$B!!HKqs;z!'(B\UTFT{20b9f}\UTFT{26402} $BB?8@8l!'(B\UTFM{20b9f}\UTFM{26402}}
+$BF|K\!'(B\UTF{20b9f}\UTF{26402}$B!!HKqs;z!'(B\UTFT{20b9f}\UTFT{26402} $BB?8@8l!'(B\UTFM{20b9f}\UTFM{26402}
+
+\subsection{$B4JBN;z!'(B\UTFC{20087}\UTFC{200cc}$B!!HKqs;z!'(B\UTFT{20087}\UTFT{200cc} $BB?8@8l!'(B\UTFM{20087}\UTFM{200cc}}
+$B4JBN;z!'(B\UTFC{20087}\UTFC{200cc}$B!!HKqs;z!'(B\UTFT{20087}\UTFT{200cc} $BB?8@8l!'(B\UTFM{20087}\UTFM{200cc}
+\fi
+\makeatother
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/bkmk-utf8.tex b/language/japanese/uptex-base/samples/bkmk-utf8.tex
new file mode 100644
index 0000000000..50f0aef342
--- /dev/null
+++ b/language/japanese/uptex-base/samples/bkmk-utf8.tex
@@ -0,0 +1,294 @@
+% -*- coding: utf-8 -*-
+%%%%%%%%
+% To control hyperref on command line,
+% you can select one of (1),(2a),(2b),(3).
+% (1) do not treat hyperref
+% $ uplatex bkmk-utf8.tex
+% (2a) hyperref + dvipdfmx (with CMap conversion)
+% $ uplatex "\def\withhyperref{dvipdfmx}\input" bkmk-utf8.tex
+% (2b) hyperref + dvipdfmx + "convbkmk.rb -o"/out2uni (w/o CMap conversion)
+% $ uplatex "\def\withhyperref{dvipdfmx}\def\nocmap{true}\input" bkmk-utf8.tex
+% (3) hyperref + dvips + convbkmk.rb + distiller/ps2pdf
+% $ uplatex "\def\withhyperref{dvips}\input" bkmk-utf8.tex
+%%%%%%
+
+\newif\ifuptexmode\uptexmodefalse
+\ifnum\jis"2121="3000
+
+ %% for upLaTeX
+ \def\pLaTeXorupLaTeX{upLaTeX}
+ \uptexmodetrue
+ \def\innerencoding{UPTEX}
+ \def\cmap{UTF8-UTF16}
+
+\else
+
+ %% for pLaTeX
+ \def\pLaTeXorupLaTeX{pLaTeX}
+ \uptexmodefalse
+
+ \ifnum\jis"2121="A1A1
+ \def\innerencoding{EUC}
+ \def\cmap{EUC-UCS2}
+ \fi
+ \ifnum\jis"2121="8140
+ \def\innerencoding{SJIS}
+ \def\cmap{90ms-RKSJ-UCS2}
+ \fi
+
+\fi
+
+\makeatletter
+
+\def\@opt@{multi}
+\def\@default{default}
+\def\@jarticle{jarticle}
+\def\@tarticle{tarticle}
+\def\@ujarticle{ujarticle}
+
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+
+\ifx\class\@undefined
+ \ifuptexmode
+ \def\class{ujarticle}
+ \else
+ \def\class{jarticle}
+ \fi
+\fi
+\ifuptexmode
+ \edef\@opt@{uplatex,\@opt@}
+\fi
+\ifx\class\@jarticle
+ \documentclass[a4paper,titlepage]{\class}
+\else
+ \ifx\class\@ujarticle
+ \documentclass[a4paper,titlepage]{\class}
+ \else
+ \documentclass[a4paper,titlepage,landscape]{\class}
+ \fi
+\fi
+
+\usepackage{graphicx}
+\usepackage{textcomp}
+\usepackage[\@opt@]{otf}
+
+\def\@dvipdfmx{dvipdfmx}
+\def\@dvips{dvips}
+
+\ifx\withhyperref\@undefined
+ \def\withhyperref{undefined}
+ \def\texorpdfstring{%
+ \expandafter\@firstoftwo
+ }
+\else
+ \ifx\withhyperref\@dvipdfmx
+ \def\@hyperrefkeyval{dvipdfm}
+ \usepackage{atbegshi}
+ \ifx\nocmap\@undefined
+ \AtBeginShipoutFirst{\special{pdf:tounicode \cmap}}
+ \else
+ \def\cmap{---}
+ \fi
+ \fi
+ \ifx\withhyperref\@dvips
+ \def\@hyperrefkeyval{dvips}
+ \fi
+
+\ifx\nocmap\@undefined
+ \usepackage[\@hyperrefkeyval,%
+ bookmarks=true,%
+ bookmarksnumbered=true,%
+ bookmarkstype=toc,%
+ %pdfstartview={FitBH -32768},%
+ pdftitle={いろいろ確かめてみる},%
+ pdfsubject={hyperref編},%
+ pdfauthor={名無 権兵衛},%
+ pdfkeywords={TeX; dvips; dvipdfmx; bookmark; hyperref; しおり; pdf}%
+ ]{hyperref}
+\else
+ \input bkmk-docinfo.out
+ \usepackage[dvipdfm,%
+ bookmarks=true,%
+ bookmarksnumbered=true,%
+ bookmarkstype=toc,%
+ %pdfstartview={FitBH -32768},%
+ pdftitle=\PDFTITLE,%
+ pdfsubject=\PDFSUBJECT,%
+ pdfauthor=\PDFAUTHOR,%
+ pdfkeywords=\PDFKEYWORDS%
+ ]{hyperref}
+\fi
+
+\fi
+
+\makeatother
+
+
+%%% for upLaTeX only
+\ifuptexmode
+\DeclareFontFamily{JY2}{mcw}{}
+\DeclareFontFamily{JY2}{gtw}{}
+\DeclareFontShape{JY2}{mcw}{m}{n}{<->s*[0.962216]upjpnrm-h}{}
+\DeclareFontShape{JY2}{gtw}{m}{n}{<->s*[0.962216]upjpngt-h}{}
+\DeclareFontShape{JY2}{gt}{m}{n}{<->s*[0.962216]upjpngt-h}{}
+\DeclareFontShape{JY2}{mcw}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY2}{gtw}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{JY2}{gt}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareRobustCommand\mcw{\kanjifamily{mcw}\selectfont}
+\DeclareRobustCommand\gtw{\kanjifamily{gtw}\selectfont}
+\renewcommand\mcdefault{mcw}
+\renewcommand\gtdefault{gtw}
+
+\DeclareFontFamily{JY2}{schrm}{}
+\DeclareFontFamily{JY2}{tchrm}{}
+\DeclareFontFamily{JY2}{korrm}{}
+\DeclareFontShape{JY2}{schrm}{m}{n}{<->s*[0.962216]upschrm-h}{}
+\DeclareFontShape{JY2}{tchrm}{m}{n}{<->s*[0.962216]uptchrm-h}{}
+\DeclareFontShape{JY2}{korrm}{m}{n}{<->s*[0.962216]upkorrm-h}{}
+\DeclareFontShape{JY2}{schrm}{bx}{n}{<->ssub*schrm/m/n}{}
+\DeclareFontShape{JY2}{tchrm}{bx}{n}{<->ssub*tchrm/m/n}{}
+\DeclareFontShape{JY2}{korrm}{bx}{n}{<->ssub*korrm/m/n}{}
+\DeclareRobustCommand\schrm{\kanjifamily{schrm}\selectfont}
+\DeclareRobustCommand\tchrm{\kanjifamily{tchrm}\selectfont}
+\DeclareRobustCommand\korrm{\kanjifamily{korrm}\selectfont}
+\fi
+
+\title{いろいろ確かめてみる}
+
+\author{名無 権兵衛}
+
+\oddsidemargin0mm
+\evensidemargin0mm
+\topmargin-15mm
+\textwidth162mm
+\textheight245mm
+
+\edef\bs{$\backslash$\kern0em}
+
+\begin{document}
+\maketitle
+\section{section title by ASCII}
+test test.
+
+hyperref with: \withhyperref
+\makeatletter
+\ifx\withhyperref\@dvipdfmx
+ ~~CMap:\cmap
+\fi
+\makeatother
+\typeout{### hyperref with: \withhyperref}
+
+pLaTeX or upLaTeX: \pLaTeXorupLaTeX
+\typeout{### pLaTeX or upLaTeX: \pLaTeXorupLaTeX}
+
+inner encoding: \innerencoding
+\typeout{### inner encoding: \innerencoding}
+
+\begin{figure}
+ \begin{center}
+ \scalebox{0.2}{\includegraphics{box-jis.eps}}
+ \caption{JISで符号化されたEPSファイル}
+ \label{fig:box-jis}
+ \end{center}
+\end{figure}
+%\begin{figure}
+% \begin{center}
+% \scalebox{0.2}{\includegraphics{box-sjis.eps}}
+% \caption{Shift\_JISで符号化されたEPSファイル}
+% \label{fig:box-sjis}
+% \end{center}
+%\end{figure}
+%\begin{figure}
+% \begin{center}
+% \scalebox{0.2}{\includegraphics{box-euc.eps}}
+% \caption{EUC-JPで符号化されたEPSファイル}
+% \label{fig:box-euc}
+% \end{center}
+%\end{figure}
+%\begin{figure}
+% \begin{center}
+% \scalebox{0.2}{\includegraphics{box-utf8.eps}}
+% \caption{UTF-8で符号化されたEPSファイル}
+% \label{fig:box-utf8}
+% \end{center}
+%\end{figure}
+\section{αβγ}
+test test.
+
+\section{абв}
+test test.
+
+\section{セクション}
+test test.
+\subsection{サブセクション(括弧)}
+test test.
+
+\makeatletter
+\ifx\withhyperref\@undefined
+\else
+
+\section{Escape sequences \texorpdfstring{\textbullet\textdagger\textdaggerdbl\ldots---\textflorin--\textperthousand\texttrademark\texteuro}%
+{\200\201\202\203\204\206\205\213\222\240}など}
+\textbullet\textdagger\textdaggerdbl\ldots---\textflorin--\textperthousand\texttrademark\texteuro など
+
+\section{見出しに\texorpdfstring{\bs}{\134}UTF, \texorpdfstring{\bs}{\134}UTFC, \texorpdfstring{\bs}{\134}UTFMなど}
+\subsection{日本:\UTF{9aa8}\UTF{6D77} 簡体字:\UTFC{9aa8}\UTFC{6D77} 繁體字:\UTFT{9AA8}\UTFT{6d77} 朝鮮:\UTFK{9AA8}\UTFK{6d77}}
+日本:\UTF{9aa8}\UTF{6D77} 簡体字:\UTFC{9aa8}\UTFC{6D77} 繁體字:\UTFT{9AA8}\UTFT{6d77} 朝鮮:\UTFK{9AA8}\UTFK{6d77}
+
+\subsection{ハングル:\UTFK{c548}\UTFK{b155}\UTFK{d558}\UTFK{C138}\UTFK{C694}}
+ハングル:\UTFK{c548}\UTFK{b155}\UTFK{d558}\UTFK{C138}\UTFK{C694}
+
+\subsection{日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}}
+日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}
+
+\subsection{日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}}
+日本:\UTF{20509}\UTF{241FE} 簡体字:\UTFC{20509}\UTFC{241FE} 多言語:\UTFM{20509}\UTFM{241FE}
+
+\subsection{日本:\UTF{20b9f}\UTF{26402} 繁體字:\UTFT{20b9f}\UTFT{26402} 多言語:\UTFM{20b9f}\UTFM{26402}}
+日本:\UTF{20b9f}\UTF{26402} 繁體字:\UTFT{20b9f}\UTFT{26402} 多言語:\UTFM{20b9f}\UTFM{26402}
+
+\subsection{簡体字:\UTFC{20087}\UTFC{200cc} 繁體字:\UTFT{20087}\UTFT{200cc} 多言語:\UTFM{20087}\UTFM{200cc}}
+簡体字:\UTFC{20087}\UTFC{200cc} 繁體字:\UTFT{20087}\UTFT{200cc} 多言語:\UTFM{20087}\UTFM{200cc}
+\fi
+\makeatother
+
+%%% for upLaTeX only
+\ifuptexmode
+\section{以下は、upLaTeXのみ}
+\subsection{いわゆる『新JIS』『JIS2004』: ♫♡☗〠☎☃♨①❷⓷ⅳⅤⓐ㋑}
+便利な記号がいっぱい。
+
+\subsection{Extension B (BMP外)の文字: 𠀋𠆢𠘨𡈽𠮟など}
+𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠑊𠔉𠗖𠘨𠝏𠠇𠠺𠢹𠥼𠦝
+𠫓𠬝𠵅𠷡𠺕𠹭𠹤𠽟𡈁𡈽𡉕𡉻𡉴𡋤𡋗𡌛𡋽𡌶𡍄𡏄
+𡑮𡑭𡗗𦰩𡙇𡜆𡝂𡢽𡧃𡱖𡴭𡚴𡵅𡵸𡵢𡶡𡶜𡶒𡶷𡷠
+𡸴𡸳𡼞𡽶𡿺𢅻𢌞𢎭𢛳𢡛𢢫𢦏𢪸𢭏𢭐𢭆𢰝𢮦𢰤𢷡
+𣇄𣇃𣇵𣆶𣍲𣏓𣏒𣏐𣏤𣏕𣏚𣏟𣑊𣑑𣑋𣑥𣓤𣕚𣗄𣖔
+𣘹𣙇𣘸𣘺𣜿𣜜𣝣𣜌𣝤𣟿𣟧𣠤𣠽𣪘𣱿𣳾𣴀𣵀𣷺𣷹
+𣷓𣽾𤂖𤄃𤇆𤇾𤎼𤘩𤚥𤟱𤢖𤩍𤭖𤭯𤰖𤴔𤸎𤸷𤹪𤺋
+𥁊𥁕𥄢𥆩𥇥𥇍𥈞𥉌𥐮𥒎𥓙𥔎𥖧𥝱𥞩𥞴𥧄𥧔𥫤𥫣
+𥫱𥮲𥱋𥱤𥶡𥸮𥹖𥹥𥹢𥻘𥻂𥻨𥼣𥽜𥿠𥿔𦀌𥿻𦀗𦁠
+𦃭𦉰𦊆𦍌𣴎𦐂𦙾𦚰𦜝𦣝𦣪𦥑𦥯𦧝𦨞𦩘𦪌𦪷𦫿𦱳
+𦳝𦹀𦹥𦾔𦿸𦿶𦿷𧃴𧄍𧄹𧏛𧏚𧏾𧐐𧑉𧘕𧘔𧘱𧚄𧚓
+𧜎𧜣𧝒𧦅𧪄𧮳𧮾𧯇𧲸𧶠𧸐𧾷𨂊𨂻𨉷𨊂𨋳𨏍𨐌𨑕
+𨕫𨗈𨗉𨛗𨛺𨥉𨥆𨥫𨦇𨦈𨦺𨦻𨨞𨨩𨩱𨩃𨪙𨫍𨫤𨫝
+𨯁𨯯𨴐𨵱𨷻𨸟𨸶𨺉𨻫𨼲𨿸𩊠𩊱𩒐𩗏𩙿𩛰𩜙𩝐𩣆
+𩩲𩷛𩸽𩸕𩺊𩹉𩻄𩻩𩻛𩿎𪀯𪀚𪃹𪂂𪆐𢈘𪎌𪐷𪗱𪘂
+𪘚𪚲𠮟\\
+
+\subsection[中国語・簡体字 简体中文]{中国語・簡体字 {\schrm 简体中文}}
+{\schrm 简体中文}
+
+\subsection[中国語・繁体字 繁體中文]{中国語・繁体字 {\tchrm 繁體中文}}
+{\tchrm 繁體中文}
+
+\subsection[韓国語 한국어]{韓国語 {\korrm 한국어}}
+{\korrm 한국어}
+
+\subsection{半角カタカナ}
+半角カタカナ
+\fi
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/box-euc.eps b/language/japanese/uptex-base/samples/box-euc.eps
new file mode 100644
index 0000000000..f00c21074d
--- /dev/null
+++ b/language/japanese/uptex-base/samples/box-euc.eps
@@ -0,0 +1,17 @@
+%!PS-Adobe-2.0-EPSF
+%%BoundingBox: 0 0 600 600
+10 10 moveto
+590 10 lineto
+590 590 lineto
+10 590 lineto
+closepath
+stroke
+100 380 moveto
+/Ryumin-Light-EUC-H findfont 70 scalefont setfont
+(ƥ) show
+100 280 moveto
+/Helvetica findfont 70 scalefont setfont
+(EUC-JP) show
+100 180 moveto
+/Ryumin-Light-EUC-H findfont 70 scalefont setfont
+(沽) show
diff --git a/language/japanese/uptex-base/samples/box-jis.eps b/language/japanese/uptex-base/samples/box-jis.eps
new file mode 100644
index 0000000000..951fc8ed7a
--- /dev/null
+++ b/language/japanese/uptex-base/samples/box-jis.eps
@@ -0,0 +1,17 @@
+%!PS-Adobe-2.0-EPSF
+%%BoundingBox: 0 0 600 600
+10 10 moveto
+590 10 lineto
+590 590 lineto
+10 590 lineto
+closepath
+stroke
+100 380 moveto
+/Ryumin-Light-H findfont 70 scalefont setfont
+(%F%9%H) show
+100 280 moveto
+/Helvetica findfont 70 scalefont setfont
+(JIS) show
+100 180 moveto
+/Ryumin-Light-H findfont 70 scalefont setfont
+($GId9f2=) show
diff --git a/language/japanese/uptex-base/samples/box-sjis.eps b/language/japanese/uptex-base/samples/box-sjis.eps
new file mode 100644
index 0000000000..be8b7a06e9
--- /dev/null
+++ b/language/japanese/uptex-base/samples/box-sjis.eps
@@ -0,0 +1,17 @@
+%!PS-Adobe-2.0-EPSF
+%%BoundingBox: 0 0 600 600
+10 10 moveto
+590 10 lineto
+590 590 lineto
+10 590 lineto
+closepath
+stroke
+100 380 moveto
+/Ryumin-Light-RKSJ-H findfont 70 scalefont setfont
+(eXg) show
+100 280 moveto
+/Helvetica findfont 70 scalefont setfont
+(Shift_JIS) show
+100 180 moveto
+/Ryumin-Light-RKSJ-H findfont 70 scalefont setfont
+(ŕ) show
diff --git a/language/japanese/uptex-base/samples/box-utf8.eps b/language/japanese/uptex-base/samples/box-utf8.eps
new file mode 100644
index 0000000000..3b0b91d49a
--- /dev/null
+++ b/language/japanese/uptex-base/samples/box-utf8.eps
@@ -0,0 +1,17 @@
+%!PS-Adobe-2.0-EPSF
+%%BoundingBox: 0 0 600 600
+10 10 moveto
+590 10 lineto
+590 590 lineto
+10 590 lineto
+closepath
+stroke
+100 380 moveto
+/Ryumin-Light-UniJIS-UTF8-H findfont 70 scalefont setfont
+(テスト) show
+100 280 moveto
+/Helvetica findfont 70 scalefont setfont
+(UTF-8) show
+100 180 moveto
+/Ryumin-Light-UniJIS-UTF8-H findfont 70 scalefont setfont
+(で符号化) show
diff --git a/language/japanese/uptex-base/samples/check_enc.pl b/language/japanese/uptex-base/samples/check_enc.pl
new file mode 100755
index 0000000000..70e184e6b6
--- /dev/null
+++ b/language/japanese/uptex-base/samples/check_enc.pl
@@ -0,0 +1,52 @@
+#!/usr/bin/env perl
+
+# This software is public domain.
+
+#
+# Perl 5.8.x + Encode.pm or Perl5.6.x + Jcode.pm is required.
+if ($] >= 5.008) {
+ eval('use Encode::Guess qw/euc-jp shiftjis 7bit-jis utf8/;');
+ $@ and &error_exit;
+ %perl_encname =
+ qw/euc euc-jp jis 7bit-jis sjis shiftjis utf8 utf8 uptex utf8
+ e euc-jp j 7bit-jis s shiftjis u utf8/;
+ $Encodepm = 1;
+} elsif ($] >= 5.006) {
+ eval('use Jcode;');
+ $@ and &error_exit;
+ %perl_encname =
+ qw/euc euc jis jis sjis sjis utf8 utf8 uptex utf8
+ e euc j jis s sjis u utf8/;
+ $Encodepm = 0;
+} else {
+ &error_exit;
+}
+
+$enc=shift @ARGV;
+@files=@ARGV;
+
+foreach $file (@files) {
+ my $data;
+
+ $data = undef;
+ open(IN,$file) or die "check_enc:: Cannot open file $file\n";
+ $data .= $_ while (<IN>);
+ if ($Encodepm) {
+ my $genc = eval('guess_encoding($data);');
+ ref($genc) or die "check_enc:: Cannot guess: $genc, file:$file ($perl_encname{$enc})\n";
+ $perl_guess = $genc->name;
+ } else {
+ $perl_guess = eval('getcode($data);');
+ }
+ if ($perl_guess ne $perl_encname{$enc}) {
+ die "check_enc:: file:$file ($perl_guess) does not seem encoded by $perl_encname{$enc}\n";
+ }
+ print "check_enc:: OK! file:$file seems encoded by $perl_guess\n";
+
+}
+
+sub error_exit {
+ print "check_enc:: Perl5.6.x + Jcode.pm or Perl5.8.x + Encode.pm is required. Cannot guess file encoding\n";
+ sleep 1;
+ exit(0);
+}
diff --git a/language/japanese/uptex-base/samples/cjk_babel.tex b/language/japanese/uptex-base/samples/cjk_babel.tex
new file mode 100644
index 0000000000..0b4988b614
--- /dev/null
+++ b/language/japanese/uptex-base/samples/cjk_babel.tex
@@ -0,0 +1,459 @@
+%
+% test of Babel+UTF8 and CJK multilingual text
+%
+% This file is originally a test file for Utf82TeX
+%%% Utf82TeX sample TeX file for Unix
+%%% (c) 2004-2005, Isao YASUDA, isao@yasuda.homeip.net
+%%% $Id: utf82tex-sample.tex,v 1.2 2006/12/09 15:04:25 isao Exp $
+% and is modified for upLaTeX
+%
+\documentclass{ujarticle}
+%\usepackage{lmodern}% Latin Modern
+\usepackage[utf8]{inputenc}
+%\usepackage[10pt]{type1ec}
+\usepackage[OT2,T2A,T2B,T2C,T1]{fontenc}
+\usepackage[french,german,czech,russian,japanese]{babel}
+
+%%% Setting of kcatcode %%%
+%%% kcatcode 15: not cjk, 16: kanji, 17: kana, 18: other cjk char
+\kcatcode"A7=15% U+00A7:§ (Latin-1 Supplement, Common)
+%\kcatcode"C0=15% U+00C0:À (Latin-1 Supplement, Latin-1 letters)
+%\kcatcode"100=15% U+0100:Ā (Latin Extended-A)
+%\kcatcode"180=15% U+0180:ƀ (Latin Extended-B)
+%\kcatcode"1E00=15% U+1E00:Ḁ (Latin Extended Additional)
+\kcatcode`П=15% U+041F:П (Cyrillic)
+\kcatcode`“=15% U+201C:“ (General Punctuation)
+%
+% pxcjkcat package https://ctan.org/pkg/pxcjkcat
+%\usepackage[prefernoncjk]{pxcjkcat}
+
+\DeclareFontFamily{JY2}{jpnrm}{}
+\DeclareFontFamily{JY2}{schrm}{}
+\DeclareFontFamily{JY2}{tchrm}{}
+\DeclareFontFamily{JY2}{korrm}{}
+\DeclareFontShape{JY2}{jpnrm}{m}{n}{<->s*[0.962216]upjpnrm-h}{}
+\DeclareFontShape{JY2}{schrm}{m}{n}{<->s*[0.962216]upschrm-h}{}
+\DeclareFontShape{JY2}{tchrm}{m}{n}{<->s*[0.962216]uptchrm-h}{}
+\DeclareFontShape{JY2}{korrm}{m}{n}{<->s*[0.962216]upkorrm-h}{}
+\DeclareFontShape{JY2}{jpnrm}{bx}{n}{<->ssub*jpnrm/m/n}{}
+\DeclareFontShape{JY2}{schrm}{bx}{n}{<->ssub*schrm/m/n}{}
+\DeclareFontShape{JY2}{tchrm}{bx}{n}{<->ssub*tchrm/m/n}{}
+\DeclareFontShape{JY2}{korrm}{bx}{n}{<->ssub*korrm/m/n}{}
+\DeclareRobustCommand\jpnrm{\kanjifamily{jpnrm}\selectfont}
+\DeclareRobustCommand\schrm{\kanjifamily{schrm}\selectfont}
+\DeclareRobustCommand\tchrm{\kanjifamily{tchrm}\selectfont}
+\DeclareRobustCommand\korrm{\kanjifamily{korrm}\selectfont}
+
+\begin{document}
+
+\selectlanguage{french}
+\section{フランス語 Français}
+Souvent, la main portée au front, debout sur les
+vaisseaux,tandis que la lune se balançait entre
+les mâts d'une façon irrégulière, je me suis surpris,
+faisant abstraction de tout ce qui n'était pas le but
+que je poursuivais, m'efforçant de résoudre ce
+difficile problème!
+
+\hfill {\em Conte de Lautréamont, «Les Chants de Maldoror»}%
+\qquad\qquad
+
+\hfill\today
+
+
+\selectlanguage{german}
+\section{ドイツ語 Deutsch}
+Dann ließ sie ihre Hände langsam über meine Wangen
+heruntergleiten, und ihr Blick ruhte mit unendlicher
+Innigkeit auf mir.
+Sie schüttelte den Kopf mit einem schmerzlichen Ausdruck,
+als könnte sie irgend etwas nicht fassen.
+,,Mußst du denn schon heute weg?{}``
+fragte sie leise.
+
+\hfill {\em A. Schnitzler, «Die Frau des Weisen»}%
+\qquad\qquad
+
+\hfill\today
+
+
+\selectlanguage{czech}%
+\section{チェコ語 Czech}
+Posláním sdružení je vytvářet předpoklady
+pro všestranné využívání a další rozvoj jazyka
+počítačové typografie \TeX{} a příbuzného programového
+vybavení pro stolní tisk,
+zejména mezi českými a slovenskými uživateli.
+
+\hfill {\em Czechoslovak \TeX{} Users Group}%
+\qquad\qquad
+
+\hfill\today
+
+
+%\selectlanguage{nippon}
+\section{Latin-1,Latin-2}
+ÄÁÅÂÀÃ ÏÍÎÌ ÜÚÛÙ ËÉÆÊÈ ÖÓØÔÒÕ ~Þ ÝÐÇÑ ¡¿\\
+äáåâàã ïíîì üúûù ëéæêè öóøôòõ ßþÿýðçñ\\
+ÁĄÂĂ ÍÎ Ú{\selectlanguage{czech}Ů}Ű ÉĘĚ ÓŐÔ
+ŔŘŢŤÝŚŞŠĐĎĹŁĽŹŻŽĆÇČŃŇ\\
+áąâă íî ú{\selectlanguage{czech}ů}ű éęě óőô
+ŕřţťýśşšđďĺłľźżžćçčńň
+
+\kcatcode"A7=18% other_kchar
+``?`But aren't Kafka's Schlo{\ss} and {\AE}sop's {\OE}uvres
+often na{\"\i}ve vis-\`a-vis the d{\ae}monic ph{\oe}nix's official r\^ole
+in fluffy souffl\'es?''
+
+\kcatcode"A7=15% not cjk character
+``?`But aren't Kafka's Schlo{\ss} and {\AE}sop's {\OE}uvres
+often na{\"\i}ve vis-\`a-vis the d{\ae}monic ph{\oe}nix's official r\^ole
+in fluffy souffl\'es?''
+
+% “:U+201C ”:U+201D ’:U+2019
+“¿But aren’t Kafka’s Schloß and Æsop’s Œuvres
+often naïve vis-à-vis the dæmonic phœnix’s official rôle
+in fluffy soufflés?”
+
+\noindent
+\kcatcode"2423=15% U+2423: ␣ (Control Pictures)
+T1 with UTF-8 direct input:\\
+\begin{center}\begin{tabular}{r|l|l|}
+00:&(`)()()()()()()()&()()()(¸)()(‚)(‹)(›)\\
+10:&(“)(”)(„)(«)(»)(–)(—)()&()(ı)(ȷ)()()()()()\\
+20:&(␣)(!)(")()()()()(’)&()()(*)(+)(,)()(.)(/)\\
+30:&(0)(1)(2)(3)(4)(5)(6)(7)&(8)(9)(:)(;)()(=)()(?)\\
+40:&(@)(A)(B)(C)(D)(E)(F)(G)&(H)(I)(J)(K)(L)(M)(N)(O)\\
+50:&(P)(Q)(R)(S)(T)(U)(V)(W)&(X)(Y)(Z)([)()(])()()\\
+60:&(‘)(a)(b)(c)(d)(e)(f)(g)&(h)(i)(j)(k)(l)(m)(n)(o)\\
+70:&(p)(q)(r)(s)(t)(u)(v)(w)&(x)(y)(z)()(|)()()(‐)\\
+80:&(Ă)(Ą)(Ć)(Č)(Ď)(Ě)(Ę)(Ğ)&(Ĺ)(Ľ)(Ł)(Ń)(Ň)(Ŋ)(Ő)(Ŕ)\\
+90:&(Ř)(Ś)(Š)(Ş)(Ť)(Ţ)(Ű)(Ů)&(Ÿ)(Ź)(Ž)(Ż)(IJ)(İ)(đ)(§)\\
+A0:&(ă)(ą)(ć)(č)(ď)(ě)(ę)(ğ)&(ĺ)(ľ)(ł)(ń)(ň)(ŋ)(ő)(ŕ)\\
+B0:&(ř)(ś)(š)(ş)(ť)(ţ)(ű)(ů)&(ÿ)(ź)(ž)(ż)(ij)(¡)(¿)(£)\\
+C0:&(À)(Á)(Â)(Ã)(Ä)(Å)(Æ)(Ç)&(È)(É)(Ê)(Ë)(Ì)(Í)(Î)(Ï)\\
+D0:&(Ð)(Ñ)(Ò)(Ó)(Ô)(Õ)(Ö)(Œ)&(Ø)(Ù)(Ú)(Û)(Ü)(Ý)(Þ)(ẞ)\\
+E0:&(à)(á)(â)(ã)(ä)(å)(æ)(ç)&(è)(é)(ê)(ë)(ì)(í)(î)(ï)\\
+F0:&(ð)(ñ)(ò)(ó)(ô)(õ)(ö)(œ)&(ø)(ù)(ú)(û)(ü)(ý)(þ)(ß)\\
+\end{tabular}\end{center}
+
+
+\selectlanguage{russian}
+\section{ロシア語 \fontencoding{T2A}\selectfont{}Русский}
+\fontencoding{T2A}\selectfont
+Прежде всего откроем тайну которую Мастер не пожелал
+открыть Иванушке.
+Возлюбленную его звали Маргаритою Николаевной.
+Все, что Мастер говорил о ней, было сущей правдой.
+Он описал свою возлюбленную верно.
+Она была красива и умна.
+
+\hfill {\em М. Булгаков, «Мастер и Маргарита»}
+\qquad\qquad
+
+OT2:\\
+\fontencoding{OT2}\selectfont
+АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ\\
+абвгдежзийклмнопрстуфхцчшщъыьэюя
+
+T2A:\\
+\fontencoding{T2A}\selectfont
+АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ\\
+абвгдежзийклмнопрстуфхцчшщъыьэюя
+
+\hfill\today
+
+\fontencoding{T1}\selectfont
+
+\selectlanguage{japanese}
+\section{日本語}
+\jpnrm
+雪後庵は起伏の多い小石川界隈の高臺にあつて、幸ひに戰災を免かれた。
+三千坪に及ぶ名高い小堀遠洲流の名園と共に、京都のとある名刹から
+移された中雀門も、奈良の古い寺をそのまゝ移した玄關や客殿も、
+あとに建てられた大廣閒も、何一つ損なはれてゐなかつた。
+
+戰後の財產税さわぎの只中に、雪後庵は元の持主の實業家の茶人の手から、
+美しい元氣な女主人の手に渡つて、たちまち名高い料理屋になつた。
+
+\hfill 三島由紀夫『宴のあと』\qquad\qquad
+
+\西暦false
+%\def\today{%
+% 平成\number\heisei 年
+% \number\month 月
+% \number\day 日
+%}
+
+\hfill\today
+\typeout{日本語}
+
+\section{中国語・簡体字 {\schrm 简体中文}}
+{\schrm
+本常问问答集~(FAQ list)~是从一些经常被问到的问题及其适当的解答中,
+以方便的形式摘要而出的。
+跟上一版不同的是,其编排结构已彻底改变。
+有关新结构的细节,
+可参考「如何阅读本问答集及了解其编排结构」该项中的说明。
+
+\def\today{%
+ \number\year 年
+ \number\month 月
+ \number\day 日
+}
+
+\hfill\today
+}
+\typeout{简体中文}
+
+\section{中国語・繁体字 {\tchrm 繁體中文}}
+{\tchrm
+本常問問答集~(FAQ list)~是從一些經常被問到的問題及其適當的解答中,
+以方便的形式摘要而出的。
+跟上一版不同的是,其編排結構已徹底改變。
+有關新結構的細節,
+可參考「如何閱讀本問答集及了解其編排結構」該項中的說明。
+
+\def\today{%
+ \number\year 年
+ \number\month 月
+ \number\day 日
+}
+
+\hfill\today
+}
+\typeout{繁體中文}
+
+\section{韓国語 {\korrm 한국어}}
+{\korrm
+\xkanjiskip=.1zw plus 1pt minus 1pt
+%
+% upTeX treats a linebreak after a hangul character as a space.
+% Ref. http://project.ktug.or.kr/omega-cjk/tug2004-preprint.pdf
+이 FAQ은 자주 반복되는
+질문과 그에 대한 대답을
+간단명료한 양식으로
+모아 엮어졌습니다.
+이 FAQ의 구조는 지난 판에 비하여
+획기적으로 변경% (A space is NOT inserted here.)
+되었습니다.
+상세한 것은 ``이 FAQ을 어떻게 읽을
+것인가'' 라는 대목을 참조하시기 바랍니다.
+
+
+\def\today{%
+ \number\year 년%
+ \number\month 월%
+ \number\day 일%
+}
+
+\hfill\today
+}
+
+%% test of xkanjiskip
+{\korrm
+\xkanjiskip=.25zw plus 1pt minus 1pt
+
+이 FAQ을
+
+\xkanjiskip=5zw plus 1pt minus 1pt
+
+이 FAQ을
+
+\xkanjiskip=-.5zw minus 1pt
+
+이 FAQ을
+
+}
+
+\typeout{한국어}
+
+\jpnrm
+\section{difference of glyphs among CJK}
+\begin{tabular}{rl}
+Japanese & {\jpnrm 文字,骨練平直。卿響饗嚮,邁進飯餃神祀.才次与}\\
+Simplified Chinese & {\schrm 文字,骨練平直。卿響饗嚮,邁進飯餃神祀.才次与}\\
+Traditional Chinese & {\tchrm 文字,骨練平直。卿響饗嚮,邁進飯餃神祀.才次与}\\
+Korean & {\korrm 文字,骨練平直。卿響饗嚮,邁進飯餃神祀.才次}\\
+\end{tabular}
+
+\section{switching between CJK and Latin}
+\def\bs{{$\backslash$\kern0pt}}
+
+\bs kcatcode=18:
+\kcatcode\ucs"00A7=18% other_kchar
+\kcatcode\ucs"0410=18% other_kchar
+日本語フォントの§¶
+~~
+Русский
+
+\bs kcatcode=15:
+\kcatcode\ucs"00A7=15% not cjk character
+\kcatcode\ucs"0410=15% not cjk character
+Latin §¶
+~~
+\fontencoding{T2A}\selectfont
+Русский
+
+\bs kcatcode=18:
+\kcatcode\ucs"00A7=18% other_kchar
+\kcatcode\ucs"0410=18% other_kchar
+再び、日本語フォントの§¶
+~~
+Русский
+
+\bs kcatcode=15:
+\kcatcode\ucs"00A7=15% not cjk character
+\kcatcode\ucs"0410=15% not cjk character
+Latin §¶
+~~
+\fontencoding{T2A}\selectfont
+Русский
+
+\forcecjktoken
+\bs forcecjktoken:
+§¶~~Русский
+
+\disablecjktoken
+\bs disablecjktoken:
+§¶~~Русский
+
+\enablecjktoken
+\bs enablecjktoken:
+§¶~~Русский
+
+\bs kcatcode=18:
+\kcatcode\ucs"00A7=18% other_kchar
+\kcatcode\ucs"0410=18% other_kchar
+再び、日本語フォントの§¶
+~~
+Русский
+
+\forcecjktoken
+\bs forcecjktoken:
+§¶~~Русский
+
+\disablecjktoken
+\bs disablecjktoken:
+§¶~~Русский
+
+\enablecjktoken
+\bs enablecjktoken:
+§¶~~Русский
+
+
+{ Inside of a group:
+§¶~~Русский
+\quad
+\disablecjktoken
+\bs disablecjktoken:
+§¶~~Русский
+}
+
+Outside of the group:
+§¶~~Русский
+
+
+\disablecjktoken
+\bs disablecjktoken:
+§¶~~Русский
+
+{ Inside of a group:
+§¶~~Русский
+\quad
+\enablecjktoken
+\bs enablecjktoken:
+§¶~~Русский
+}
+
+Outside of the group:
+§¶~~Русский
+
+\enablecjktoken
+\bs enablecjktoken:
+§¶~~Русский
+
+{ Inside of a group:
+\fontencoding{T2A}\selectfont
+§¶~~Русский
+\quad
+\bs kcatcode=15:
+\kcatcode\ucs"00A7=15% not cjk character
+\kcatcode\ucs"0410=15% not cjk character
+\fontencoding{T1}\selectfont
+§¶
+~~
+\fontencoding{T2A}\selectfont
+Русский
+}
+
+Outside of the group:
+§¶~~Русский
+
+\bs kcatcode=15:
+\kcatcode\ucs"00A7=15% not cjk character
+\kcatcode\ucs"0410=15% not cjk character
+\fontencoding{T1}\selectfont
+§¶
+~~
+\fontencoding{T2A}\selectfont
+Русский
+
+{ Inside of a group:
+§¶~~Русский
+\quad
+\bs kcatcode=18:
+\kcatcode\ucs"00A7=18% other_kchar
+\kcatcode\ucs"0410=18% other_kchar
+%§¶~~%%
+%{}§¶~~%%
+\relax §¶~~%% この\relax または{}がないとうまく動かない。要調査。
+Русский
+}
+
+Outside of the group:
+§¶~~Русский
+
+
+\newpage
+\section{space between CJK and Latin}
+\kcatcode\ucs"00A7=15% not cjk character
+\kcatcode\ucs"0410=15% not cjk character
+
+default\\
+\fontencoding{T1}\selectfont
+今日はStraußのKonzertと
+\fontencoding{T2A}\selectfont
+ШостаковичのСимфонияを聴いた。
+
+\xkanjiskip1zw plus 1pt minus 1pt
+large \bs xkanjiskip\\
+\fontencoding{T1}\selectfont
+今日はStraußのKonzertと
+\fontencoding{T2A}\selectfont
+ШостаковичのСимфонияを聴いた。
+
+%\xkanjiskip.25zw plus 1pt minus 1pt
+let xspcode 0\\
+\xspcode`S=0
+\xspcode`K=0
+\xspcode`t=0
+\xspcode255=0%\ss (ß) in T1 encoding, \cyrya (я) in T2A encoding
+\xspcode216=0%\CYRSH (Ш) in T2A encoding
+\xspcode247=0%\cyrch (ч)
+\xspcode209=0%\CYRS (С)
+\fontencoding{T1}\selectfont
+今日はStraußのKonzertと
+\fontencoding{T2A}\selectfont
+ШостаковичのСимфонияを聴いた。
+
+
+\end{document}
+%
+% このファイルの大部分は、
+% 安田功さんの Utf82TeX のサンプルから引用、
+% upTeX用に編集させていただきました。
+% upTeXの開発にも大きな刺激になりました。
+% ありがとうございました。
+% TANAKA, Takuji
+%
diff --git a/language/japanese/uptex-base/samples/console_io.tex b/language/japanese/uptex-base/samples/console_io.tex
new file mode 100644
index 0000000000..d85050972d
--- /dev/null
+++ b/language/japanese/uptex-base/samples/console_io.tex
@@ -0,0 +1,46 @@
+%%
+%% example:
+%% uptex "\def\cjk{jpn}\input" console_io.tex
+%% uptex "\def\cjk{sch}\input" console_io.tex
+%% uptex "\def\cjk{tch}\input" console_io.tex
+%% uptex "\def\cjk{kor}\input" console_io.tex
+%% uptex console_io.tex
+%% ptex "\def\cjk{jis}\input" console_io.tex
+%% ptex console_io.tex
+%% tex console_io.tex
+%%
+
+\def\@jpn{jpn}
+\def\@sch{sch}
+\def\@tch{tch}
+\def\@kor{kor}
+\def\@jis{jis}
+
+\ifx\cjk\@jpn
+ \font\upjpnrm = upjpnrm-h at 10.0pt
+ \upjpnrm
+\fi
+\ifx\cjk\@sch
+ \font\upschrm = upschrm-h at 10.0pt
+ \upschrm
+\fi
+\ifx\cjk\@tch
+ \font\uptchrm = uptchrm-h at 10.0pt
+ \uptchrm
+\fi
+\ifx\cjk\@kor
+ \font\upkorrm = upkorrm-h at 10.0pt
+ \upkorrm
+\fi
+\ifx\cjk\@jis
+ \font\jis = jis at 10.0pt
+ \jis
+\fi
+
+\endlinechar=256\relax
+
+\read16 to\currline
+\currline
+\immediate\write16{|\currline|}
+
+\end
diff --git a/language/japanese/uptex-base/samples/greek-uplatex.tex b/language/japanese/uptex-base/samples/greek-uplatex.tex
new file mode 100644
index 0000000000..56b9389877
--- /dev/null
+++ b/language/japanese/uptex-base/samples/greek-uplatex.tex
@@ -0,0 +1,70 @@
+%
+% test of Babel(greek)+UTF8 and CJK multilingual text
+%
+% This file is originally a test file for Utf82TeX
+%%% Utf82TeX sample TeX file for Unix
+%%% (c) 2004-2005, Isao YASUDA, isao@yasuda.homeip.net
+%%% $Id: utf82tex-sample.tex,v 1.2 2006/12/09 15:04:25 isao Exp $
+% and is modified for upLaTeX
+%
+\documentclass[a4j]{ujarticle}
+\usepackage{ucs}
+\usepackage[utf8x]{inputenc}
+\usepackage[10pt]{type1ec}
+\usepackage[T1]{fontenc}
+\usepackage[polutonikogreek]{babel}
+
+%%% Setting of kcatcode %%%
+%%% kcatcode 15: not cjk, 16: kanji, 17: kana, 18: other cjk char
+%\kcatcode"E7=15% U+00E7:ç (Latin-1 Supplement, Latin-1 letters)
+\kcatcode`α=15% U+03B1:α (Greek)
+\kcatcode`ἀ=15% U+1F00: ἀ (Greek Extended)
+\kcatcode`’=15% U+2019: ’ (General Punctuation)
+%
+% pxcjkcat package https://ctan.org/pkg/pxcjkcat
+%\usepackage[prefernoncjk]{pxcjkcat}
+
+\begin{document}
+
+\selectlanguage{polutonikogreek}
+\section{古典ギリシア語 \protect\textlatin{Polytonic Greek}}
+%% utf82tex default option
+\begin{verse}
+Ἄνδρα μοι ἔννεπε, Μοῦσα, πολύτροπον, ὃς μάλα πολλὰ\\
+πλάγχθη, ἐπεὶ Τροίης ἱερόν πτολίεθρον ἔπερσε.\\
+πολλῶν δ’ ἀνθρώπων ἴδεν ἄστεα καὶ νόον ἔγνω,\\
+πολλὰ δ’ ὅ γ’ ἐν πόντῳ πάθεν ἄλγεα ὃν κατὰ θῡμόν,\\
+ἀρνύμενος ἥν τε ψῡχὴν καὶ νόστον ἑταίρων.\\
+ἀλλ’ οὐδ’ ὧς ἑτάρους ἐρρύσατο, ἱέμενός περ·\\
+αὐτῶν γὰρ σφετέρῃσιν ἀτασθαλίῃσιν ὄλοντο,\\
+νήπιοι, οἳ κατὰ βοῦς Ὑπερίονος Ἠελίοιο\\
+ἤσθιον· αὐτὰρ ὁ τοῖσιν ἀφείλετο νόστιμον ἦμαρ.\\
+τῶν ἁμόθεν γε, θεά, θύγατερ Διός, εἰπὲ καὶ ἡμῖν.
+\end{verse}
+
+\hfill {\em [ \textit{Ὅμηρος} ]} \qquad\qquad
+
+\vspace{1em}
+ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
+αβγδεζηθικλμνξοπρσς τυφχψω\\
+ΆἉἊἋἌἍἎἏ ἀἁἂἃἄἅἆἇ ἘἙἚἛἜἝ ἐἑἒἓἔἕ ἨἩἪἫἬἭἮἯ %
+ἠἡἢἣἤἥἦἧ\\
+ἸἹἺἻἼἽἾἿ ἰ ἱ ἲ ἳ ἴ ἵ ἶ ἷ ὈὉὊὋὌὍ ὀὁὂὃὄὅ ὙὛὝὟ %
+ὐὑὒὓὔὕὖὗ\\
+ὨὩὪὫὬὭὮὯ ὠὡὢὣὤὥὦὧ ὰά ὲέ ὴή ὶί ὸό ὺύ ὼώ\\
+ᾈᾉᾊᾋᾌᾍᾎᾏ ᾀᾁᾂᾃᾄᾅᾆᾇ ᾘᾙᾚᾛᾜᾝᾞᾟ ᾐᾑᾒᾓᾔᾕᾖᾗ\\
+ᾨᾩᾪᾫᾬᾭᾮᾯ ᾠᾡᾢᾣᾤᾥᾦᾧ ᾸᾹᾺΆᾼ ᾰᾱᾲᾳᾴᾶᾷ\\
+ῈΈ ῊΉῌ ῂῃῄῆῇ ῘῙῚΊ ῐ ῑ ΐ ῒ ῖ ῗ\\
+ῠῡ ῢΰ ῤῥ ῦῧ ῨῩ ῪΎ Ῥ ῸΌῺΏῼ ῲῳῴῶῷ\\
+ΆΈΉΊΌΎΏ ΪΫ άέήίόύώ ϊϋ ΐΰ %ϐ ϴϑ ϒϓϔ ϕϖϗ
+%Ϙϙ Ϛϛ Ϝϝ Ϟϟ Ϡϡ ϰ ϱ ϲ ϳ ϵ ϶· δ᾽\\
+
+%Ϡ%ϡ ϰ ϱ ϲ %ϳ ϵ ϶· δ᾽
+
+\textlatin{Greek Accents}\\
+ʹ ͵ ͺ ; ΄ ΅ · ᾽ ι ᾽ ῀ ῁ ῍ ῎ ῏ ῝ ῞ ῟ ῭ ΅ ` ´ ῾
+
+\hfill\today
+
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/iotext.txt b/language/japanese/uptex-base/samples/iotext.txt
new file mode 100644
index 0000000000..9a15a1215d
--- /dev/null
+++ b/language/japanese/uptex-base/samples/iotext.txt
@@ -0,0 +1,2 @@
+СТУФХЦЧШ abc ABC 012.
+
diff --git a/language/japanese/uptex-base/samples/jbib1-jis.tex b/language/japanese/uptex-base/samples/jbib1-jis.tex
new file mode 100644
index 0000000000..4ec75cc9ca
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jbib1-jis.tex
@@ -0,0 +1,141 @@
+\documentclass{jarticle}
+
+\def\noop#1{}
+\def\JLaTeX{J\LaTeX}
+\def\JTeX{J\TeX}
+
+\oddsidemargin0mm
+\evensidemargin0mm
+\topmargin-15mm
+\textwidth162mm
+\textheight245mm
+
+\begin{document}
+\section{$B2$J8(B}
+
+jbibtex$B$N%F%9%H(B\cite{article-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{article-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{article-crossref}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{whole-journal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{inbook-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{inbook-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{inbook-crossref}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{book-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{book-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{book-crossref}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{whole-set}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{booklet-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{booklet-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{incollection-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{incollection-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{incollection-crossref}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{whole-collection}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{manual-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{manual-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{mastersthesis-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{mastersthesis-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{misc-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{misc-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{inproceedings-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{inproceedings-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{inproceedings-crossref}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{proceedings-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{proceedings-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{whole-proceedings}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{phdthesis-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{phdthesis-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{techreport-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{techreport-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{unpublished-minimal}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{unpublished-full}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{random-note-crossref}$B!#(B
+
+\section{$BF|K\8l$N%9%?%$%k$N%F%9%HMQ$N%G!<%?72(B}
+
+jbibtex$B$N%F%9%H(B\cite{inbook-full-j}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{incol-full-j-1}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{article-crossref-j}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{article-crossref-jj}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{whole-journal-j}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{inbook-crossref-j}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{whole-set-j}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{inbook-crossref-j-1}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{cvs}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{ha}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{costa}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{mcclella}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{dug}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{sakawa}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{ssl}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{newman}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{Rich}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{goto}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B0k:j(B}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B@FF#(B}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{sym}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{eda}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{dss}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{cm}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{reduce}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{fp}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{la}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B$"$U$lL5$7(B}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B%@%`(B}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B?ML>I=5-(B}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{EUC$BF|K\8l(BTeX}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{multi}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{marumoji}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{maru}$B!#(B
+
+\section{yomi $B$KJ?2>L>$r;H$&Nc(B}
+
+jbibtex$B$N%F%9%H(B\cite{goto-h}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B0k:j(B-h}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B@FF#(B-h}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{multi-h}$B!#(B
+
+\section{$B%=%U%H%&%'%"2J3X2qMQ$N%F%9%H%G!<%?(B}
+
+jbibtex$B$N%F%9%H(B\cite{ama}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{Arv}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{cha}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{dav}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{den}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{fis}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{gajski}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{suna1}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{suna2}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{toko1}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{toko2}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{suna86}$B!#(B
+
+\section{$B?M9)CNG=3X2q;oMQ%F%9%H%G!<%?(B}
+
+jbibtex$B$N%F%9%H(B\cite{onda}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B6aF#(B}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{JSAI-1}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{grosz}$B!#(B
+
+\section{$B2~9T0LCV$N%F%9%H(B}
+
+jbibtex$B$N%F%9%H(B\cite{$B2~9T0LCV(B2a}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B2~9T0LCV(B2b}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B2~9T0LCV(B3a}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B2~9T0LCV(B3b}$B!#(B
+jbibtex$B$N%F%9%H(B\cite{$B2~9T0LCV(B3c}$B!#(B
+
+
+%\bibliographystyle{jplain}
+\bibliographystyle{jalpha}
+%\bibliographystyle{jabbrv}
+%\bibliographystyle{junsrt}
+%\bibliographystyle{jname}
+
+%\bibliographystyle{tipsj}%% $B>pJs=hM}3X2qO@J8;o(B
+%\bibliographystyle{jipsj}%% $B>pJs=hM}3X2q2$J8O@J8;o(B
+%\bibliographystyle{tieice}%% $BEE;R>pJsDL?.3X2qO@J8;o(B
+%\bibliographystyle{jorsj}%% $BF|K\%*%Z%l!<%7%g%s%:%j%5!<%A3X2qO@J8;o(B
+
+\bibliography{jxampl,linebreak}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/jbib2-utf8.tex b/language/japanese/uptex-base/samples/jbib2-utf8.tex
new file mode 100644
index 0000000000..802304e5ef
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jbib2-utf8.tex
@@ -0,0 +1,176 @@
+\documentclass{ujarticle}
+
+%%%%%%%%
+% set3 関連の制御をコマンドラインから行う
+% ①,② のどれかを実行すればよい。
+% ① without set3
+% $ uplatex "\def\withsetthree{no}\input" jbib2-utf8.tex
+% ② with set3
+% $ uplatex jbib2-utf8.tex
+%%%%%%
+\def\withsetthreetmp{no}
+
+\def\noop#1{}
+\def\JLaTeX{J\LaTeX}
+\def\JTeX{J\TeX}
+
+\oddsidemargin0mm
+\evensidemargin0mm
+\topmargin-15mm
+\textwidth162mm
+\textheight245mm
+
+\begin{document}
+\section{欧文}
+
+jbibtexのテスト\cite{article-minimal}。
+jbibtexのテスト\cite{article-full}。
+jbibtexのテスト\cite{article-crossref}。
+jbibtexのテスト\cite{whole-journal}。
+jbibtexのテスト\cite{inbook-minimal}。
+jbibtexのテスト\cite{inbook-full}。
+jbibtexのテスト\cite{inbook-crossref}。
+jbibtexのテスト\cite{book-minimal}。
+jbibtexのテスト\cite{book-full}。
+jbibtexのテスト\cite{book-crossref}。
+jbibtexのテスト\cite{whole-set}。
+jbibtexのテスト\cite{booklet-minimal}。
+jbibtexのテスト\cite{booklet-full}。
+jbibtexのテスト\cite{incollection-minimal}。
+jbibtexのテスト\cite{incollection-full}。
+jbibtexのテスト\cite{incollection-crossref}。
+jbibtexのテスト\cite{whole-collection}。
+jbibtexのテスト\cite{manual-minimal}。
+jbibtexのテスト\cite{manual-full}。
+jbibtexのテスト\cite{mastersthesis-minimal}。
+jbibtexのテスト\cite{mastersthesis-full}。
+jbibtexのテスト\cite{misc-minimal}。
+jbibtexのテスト\cite{misc-full}。
+jbibtexのテスト\cite{inproceedings-minimal}。
+jbibtexのテスト\cite{inproceedings-full}。
+jbibtexのテスト\cite{inproceedings-crossref}。
+jbibtexのテスト\cite{proceedings-minimal}。
+jbibtexのテスト\cite{proceedings-full}。
+jbibtexのテスト\cite{whole-proceedings}。
+jbibtexのテスト\cite{phdthesis-minimal}。
+jbibtexのテスト\cite{phdthesis-full}。
+jbibtexのテスト\cite{techreport-minimal}。
+jbibtexのテスト\cite{techreport-full}。
+jbibtexのテスト\cite{unpublished-minimal}。
+jbibtexのテスト\cite{unpublished-full}。
+jbibtexのテスト\cite{random-note-crossref}。
+
+\section{日本語のスタイルのテスト用のデータ群}
+
+jbibtexのテスト\cite{inbook-full-j}。
+jbibtexのテスト\cite{incol-full-j-1}。
+jbibtexのテスト\cite{article-crossref-j}。
+jbibtexのテスト\cite{article-crossref-jj}。
+jbibtexのテスト\cite{whole-journal-j}。
+jbibtexのテスト\cite{inbook-crossref-j}。
+jbibtexのテスト\cite{whole-set-j}。
+jbibtexのテスト\cite{inbook-crossref-j-1}。
+jbibtexのテスト\cite{cvs}。
+jbibtexのテスト\cite{ha}。
+jbibtexのテスト\cite{costa}。
+jbibtexのテスト\cite{mcclella}。
+jbibtexのテスト\cite{dug}。
+jbibtexのテスト\cite{sakawa}。
+jbibtexのテスト\cite{ssl}。
+jbibtexのテスト\cite{newman}。
+jbibtexのテスト\cite{Rich}。
+jbibtexのテスト\cite{goto}。
+jbibtexのテスト\cite{磯崎}。
+jbibtexのテスト\cite{斉藤}。
+jbibtexのテスト\cite{sym}。
+jbibtexのテスト\cite{eda}。
+jbibtexのテスト\cite{dss}。
+jbibtexのテスト\cite{cm}。
+jbibtexのテスト\cite{reduce}。
+jbibtexのテスト\cite{fp}。
+jbibtexのテスト\cite{la}。
+jbibtexのテスト\cite{あふれ無し}。
+jbibtexのテスト\cite{ダム}。
+jbibtexのテスト\cite{人名表記}。
+jbibtexのテスト\cite{EUC日本語TeX}。
+jbibtexのテスト\cite{multi}。
+jbibtexのテスト\cite{marumoji}。
+jbibtexのテスト\cite{maru}。
+
+\section{yomi に平仮名を使う例}
+
+jbibtexのテスト\cite{goto-h}。
+jbibtexのテスト\cite{磯崎-h}。
+jbibtexのテスト\cite{斉藤-h}。
+jbibtexのテスト\cite{multi-h}。
+
+\section{ソフトウェア科学会用のテストデータ}
+
+jbibtexのテスト\cite{ama}。
+jbibtexのテスト\cite{Arv}。
+jbibtexのテスト\cite{cha}。
+jbibtexのテスト\cite{dav}。
+jbibtexのテスト\cite{den}。
+jbibtexのテスト\cite{fis}。
+jbibtexのテスト\cite{gajski}。
+jbibtexのテスト\cite{suna1}。
+jbibtexのテスト\cite{suna2}。
+jbibtexのテスト\cite{toko1}。
+jbibtexのテスト\cite{toko2}。
+jbibtexのテスト\cite{suna86}。
+
+\section{人工知能学会誌用テストデータ}
+
+jbibtexのテスト\cite{onda}。
+jbibtexのテスト\cite{近藤}。
+jbibtexのテスト\cite{JSAI-1}。
+jbibtexのテスト\cite{grosz}。
+
+\section{改行位置のテスト}
+
+jbibtexのテスト\cite{改行位置2a}。
+jbibtexのテスト\cite{改行位置2b}。
+jbibtexのテスト\cite{改行位置3a}。
+jbibtexのテスト\cite{改行位置3b}。
+jbibtexのテスト\cite{改行位置3c}。
+% set3対応フォント+dviwareなら、「𠮷」もUTF-8で直接書ける。
+\ifx\withsetthree\withsetthreetmp\else
+jbibtexのテスト\cite{改行位置4a}。
+jbibtexのテスト\cite{改行位置4b}。
+jbibtexのテスト\cite{改行位置4c}。
+jbibtexのテスト\cite{改行位置4d}。
+\fi
+
+\section{upTeX用テストデータ}
+jbibtexのテスト\cite{森鷗外:百物語}。
+jbibtexのテスト\cite{里見弴:極楽とんぼ}。
+jbibtexのテスト\cite{国書:丿乀集}。
+jbibtexのテスト\cite{グラハム:Unicode™標準入門}。
+jbibtexのテスト\cite{test:misc0}。
+jbibtexのテスト\cite{test:misc1}。
+jbibtexのテスト\cite{test:misc2}。
+% set3対応フォント+dviwareなら、「𠮷」もUTF-8で直接書ける。
+\ifx\withsetthree\withsetthreetmp\else
+jbibtexのテスト\cite{髙島𠮷野}。
+\fi
+
+%欧文8bit多バイトをタグに使うのはうまくいっていない。
+%jbibtexのテスト\cite{Lautréamont}。
+%jbibtexのテスト\cite{Schnitzler}。
+%jbibtexのテスト\cite{Булгаков}。
+
+
+%\bibliographystyle{jplain}
+\bibliographystyle{jalpha}
+%\bibliographystyle{jabbrv}
+%\bibliographystyle{junsrt}
+%\bibliographystyle{jname}
+
+%\bibliographystyle{tipsj}%% 情報処理学会論文誌
+%\bibliographystyle{jipsj}%% 情報処理学会欧文論文誌
+%\bibliographystyle{tieice}%% 電子情報通信学会論文誌
+%\bibliographystyle{jorsj}%% 日本オペレーションズリサーチ学会論文誌
+
+\bibliography{jxampl,linebreak,jbtest}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/jbtest.bib b/language/japanese/uptex-base/samples/jbtest.bib
new file mode 100644
index 0000000000..41f4491d86
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jbtest.bib
@@ -0,0 +1,122 @@
+@book{森鷗外:百物語,
+ yomi = "Mori Ogai",
+ author = "森 鷗外",
+ title = "百物語",
+ publisher = "中央公論",
+ year = 1911
+}
+
+@book{里見弴:極楽とんぼ,
+ yomi = "Satomi Ton",
+ author = "里見 弴",
+ title = "極楽とんぼ",
+ publisher = "岩波文庫",
+ year = 1961
+}
+
+
+@book{国書:丿乀集,
+ yomi = "Kokusho",
+ author = "国書",
+ title = "丿乀集"
+}
+
+@book{グラハム:Unicode™標準入門,
+ yomi = "Gurahamu",
+ author = "トニー・グラハム",
+ title = "Unicode™標準入門",
+ publisher = "翔泳社",
+ year = 2001,
+}
+
+"、",","を消す処理、
+書名の最後が"."のとき、”.”を足さない処理などのテスト
+
+@book{test:misc0,
+ author = "テスト てすと and 名無 権兵衛、 何 誰兵衛, 無名 戦士 and β, α",
+ yomi = "Tesuto Tesuto and Gombe Nanashi、 Darebe Nan, Senshi Mumei and Arufa Beta",
+ title = "UTF-8版jbibtexのテスト: ±α、β,γ。§абв.",
+ publisher = "Ω出版社",
+ year = 2007,
+}
+
+@book{test:misc1,
+ author = "テスト てすと and 名無 権兵衛、 何 誰兵衛, 無名 戦士 and β, α",
+ yomi = "Tesuto Tesuto and Gombe Nanashi、 Darebe Nan, Senshi Mumei and Arufa Beta",
+ title = "びっくり⁉",
+ publisher = "Ω出版社",
+ year = 2007,
+}
+
+@book{test:misc2,
+ author = "テスト てすと and 名無 権兵衛、 何 誰兵衛, 無名 戦士 and β, α",
+ yomi = "Tesuto Tesuto and Gombe Nanashi、 Darebe Nan, Senshi Mumei and Arufa Beta",
+ title = "大丈夫。",
+ publisher = "Ω出版社",
+ year = 2007,
+}
+
+BMP超
+
+@book{髙島𠮷野,
+ author = "髙島 𠮷野",
+ yomi = "Yoshino Takashima",
+ title = "夢か幻か⁇",
+ publisher = "安全㐧一",
+ isbn = "0-000000-00-0",
+ year = 2007,
+}
+
+@BOOK{改行位置4a,
+ author = "改行 位置",
+ yomi = "Ichi Kaigyo",
+ title = "改行位置が正しくなるか?",
+ publisher = "開業堂",
+ year = 2007,
+ note = "改行位置のテスト。𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷"
+}
+
+@BOOK{改行位置4b,
+ author = "改行 位置",
+ yomi = "Ichi Kaigyo",
+ title = "改行位置が正しくなるか?",
+ publisher = "開業堂",
+ year = 2007,
+ note = "改行位置のテスト。a𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷"
+}
+
+@BOOK{改行位置4c,
+ author = "改行 位置",
+ yomi = "Ichi Kaigyo",
+ title = "改行位置が正しくなるか?",
+ publisher = "開業堂",
+ year = 2007,
+ note = "改行位置のテスト。ab𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷"
+}
+
+@BOOK{改行位置4d,
+ author = "改行 位置",
+ yomi = "Ichi Kaigyo",
+ title = "改行位置が正しくなるか?",
+ publisher = "開業堂",
+ year = 2007,
+ note = "改行位置のテスト。abc𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷"
+}
+
+babel + UTF8の8ビット多バイトのタグは上手くいっていない。
+
+@book{Lautréamont,
+ author = "Conte de Lautréamont",
+ title = "Les Chants de Maldoror",
+}
+
+@book{Schnitzler,
+ author = "A. Schnitzler",
+ title = "Die Frau des Weisen",
+}
+
+@book{Булгаков,
+ author = "М. Булгаков",
+ title = "Мастер и Маргарита",
+}
+
diff --git a/language/japanese/uptex-base/samples/jis_uni_variation.tex b/language/japanese/uptex-base/samples/jis_uni_variation.tex
new file mode 100644
index 0000000000..e464eed5fd
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jis_uni_variation.tex
@@ -0,0 +1,236 @@
+\documentclass{ujarticle}
+\usepackage[uplatex,noreplace]{otf}
+\usepackage{color}
+\oddsidemargin-15mm
+\evensidemargin-15mm
+\topmargin-20mm
+\textheight255mm
+\textwidth180mm
+
+\font\jismin = jis at 10pt
+
+\newcommand{\MKTx}[2]{%
+ \textcolor{yellow}{\frame{\textcolor{blue}{{\jismin\kchar"#1}}}}%
+ \textcolor{yellow}{\frame{\textcolor{blue}{{\kchar\jis"#1}}}}%
+ {\small(#2)}
+}
+\newcommand{\UTFx}[1]{%
+ \textcolor{yellow}{\frame{\textcolor{blue}{{\kchar\ucs"#1}}}}%
+ \textcolor{yellow}{\frame{\textcolor{blue}{\UTF{#1}}}}{\small U+#1}}
+\newcommand{\CIDx}[1]{%
+ \textcolor{yellow}{\frame{\textcolor{blue}{\CID{#1}}}}{\small cid#1}}
+
+\edef\bs{$\backslash$\kern0em}
+
+
+\begin{document}
+\begin{center}
+{\large upTeX用JIS→Unicode変換に関する調査}
+\end{center}
+
+\section{variation tableの実状}
+ptexencでは、JIS←Unicodeの変換の際に、JIS--Unicode間での変換表のばらつき
+を吸収するための多対一変換を行うテーブルを持っている。
+実用的に用いられている変換表はほぼこれでカバーできていると思う。
+upTeXで、JIS→Unicodeの変換を行う場合は、
+JISで書かれたファイルの入力と\bs jis, \bs kuten などのプリミティヴを
+使用した場合に行われる。
+この場合に、実装依存ではなく安定した変換を行いたい。
+この際の対応関係を
+どうすべきか検討するため、現状を調査する。
+
+\parindent0mm
+\begin{tabular}{l@{~}l|l@{~}l@{~}|l@{~}c@{~}|l}\hline
+JIS & H, V & UCS2 & UniJIS-UTF16 & 実装例 & upTeX & 備考\\\hline
+\MKTx{2126}{1-1-6} & \CIDx{638}
+ & \UTFx{2022} & \CIDx{119} & ※ & & BULLET \\\cline{3-7}
+ & & \UTFx{2219} & \CIDx{117} & ※ & & BULLET OPERATOR\\\cline{3-7}
+ & & \UTFx{22C5} & 該当なし & ※ & & DOT OPERATOR\\\cline{3-7}
+ & & \UTFx{30FB} & \CIDx{638} & [g][J][W][M] & (1) & KATAKANA MIDDLE DOT\\\hline\hline
+
+\MKTx{2131}{1-1-17} & \CIDx{649}
+ & \UTFx{203E} & \CIDx{226} & [M98] & & OVERLINE\\\cline{3-7}
+ & & \UTFx{FFE3} & \CIDx{649} & [g][J][W][M99] & (1) & FULLWIDTH MACRON\\\hline\hline
+
+\MKTx{213D}{1-1-29} & \CIDx{661}
+ & \UTFx{2012} & \CIDx{114} & ※ & & FIGURE DASH \\\cline{3-7}
+ & & \UTFx{2013} & \CIDx{114} & ※ & & EN DASH \\\cline{3-7}
+ & & \UTFx{2014} & \CIDx{138} & [J][Ja140][M] & & EM DASH \\\cline{3-7}
+ & & \UTFx{2015} & \CIDx{661} & [g][W][Ja131] & (2) & HORIZONTAL BAR \\\hline\hline
+
+\MKTx{2141}{1-1-33} & \CIDx{665}
+ & \UTFx{223C} & \CIDx{100} & ※ & & TILDE OPERATOR \\\cline{3-7}
+ & & \UTFx{223E} & 該当なし & ※ & & INVERTED LASY S\\\cline{3-7}
+ & & \UTFx{301C} & \CIDx{665} & [J][M] & (3) &WAVE DASH \\\cline{3-7}
+ & & \UTFx{FF5E} & \CIDx{665} & [g][W] & & FULLWIDTH TILDE \\\hline\hline
+
+\MKTx{2142}{1-1-34} & \CIDx{666}
+ & \UTFx{2016} & \CIDx{666} & [J][M] & (4) & DOUBLE VERTICAL LINE \\\cline{3-7}
+ & & \UTFx{2225} & \CIDx{15489}{\small(\#)} & [g][W] & & PARALLEL TO (X0213:1-2-52)\\\hline\hline
+
+\MKTx{2143}{1-1-35} & \CIDx{667}
+ & \UTFx{2223} & 該当なし & ※ & & DIVIDES\\\cline{3-7}
+ & & \UTFx{FF5C} & \CIDx{667} & [g][J][W][M] & (1) & FULLWIDTH VERTICAL LINE \\\hline\hline
+
+\MKTx{2144}{1-1-36} & \CIDx{668}
+ & \UTFx{2026} & \CIDx{668} & [g][J][W][M99] & (1) & HORIZONTAL ELLIPSIS \\\cline{3-7}
+ & & \UTFx{22EF} & 該当なし & [M98]& & MIDLINE HORIZONTAL ELLIPSIS \\\hline\hline
+
+\MKTx{215D}{1-1-61} & \CIDx{693}
+ & \UTFx{2212} & \CIDx{693} & [J][M] & (3) & MINUS SIGN \\\cline{3-7}
+ & & \UTFx{FF0D} & \CIDx{693} & [g][W] & & FULLWIDTH HYPHEN-MINUS \\\hline\hline
+
+\MKTx{216F}{1-1-79} & \CIDx{711}
+ & \UTFx{00A5} & \CIDx{61} & [J] & & YEN SIGN\\\cline{3-7}
+ & & \UTFx{FFE5} & \CIDx{711} & [g] (J)[W][M] & (5) & FULLWIDTH YEN SIGN\\\hline\hline
+
+\MKTx{2171}{1-1-81} & \CIDx{713}
+ & \UTFx{00A2} & \CIDx{102} & [J][M] & & CENT SIGN \\\cline{3-7}
+ & & \UTFx{FFE0} & \CIDx{713} & [g][W] & (5) & FULLWIDTH CENT SIGN \\\hline\hline
+
+\MKTx{2172}{1-1-82} & \CIDx{714}
+ & \UTFx{00A3} & \CIDx{103} & [J][M] & & POUND SIGN \\\cline{3-7}
+ & & \UTFx{FFE1} & \CIDx{714} & [g][W] & (5) & FULLWIDTH POUND SIGN \\\hline\hline
+
+\MKTx{224C}{1-2-44} & \CIDx{751}
+ & \UTFx{00AC} & \CIDx{153} & [J][M] & & NOT SIGN \\\cline{3-7}
+ & & \UTFx{FFE2} & \CIDx{751} & [g][W] & (5) & FULLWIDTH NOT SIGN \\\hline\hline
+
+\MKTx{227E}{1-2-94} & \CIDx{779}
+ & \UTFx{20DD} & \CIDx{16328}{\small(\#)} & ※ & & COMBINING ENCLOSING CIRCLE\\\cline{3-7}
+ & & \UTFx{25EF} & \CIDx{779} & [g][J][W][M] & (1) & LARGE CIRCLE\\\hline
+
+\end{tabular}\\
+
+\parindent1zw
+\baselineskip10pt
+
+※: 実装未確認、[J](J): JISの変換表、[W]: Windows CP932の変換表、
+[M98]: Mac OSの1998年8月版までの変換表、[M99]: Mac OSのそれ以降の変換表、
+[M]: Mac OSの変換表、
+[Ja131]: Java, JRE1.3.1までの変換表、[Ja140]: Java, JRE1.4.0以降の変換表。
+Javaの表は、EUC/Shift\_JIS/JISで微妙に異なっている。
+[g]: libs/gd/jisx0208.hの変換表(ptexencでiconv不使用時に利用)。
+(\#): AJ1-5。
+JIS1-1-79の[J](J): JISでは、JIS X 0201ローマ字の円記号(いわゆる半角の円記号)と
+区別する必要がある場合は後者、特に区別する必要がない場合は
+前者ということになっているらしいが、
+前者を採用している実装はかなり少数派と思われる。
+
+参考: {\tt http://euc.jp/i18n/ucsnote.ja.html},
+{\tt http://hp.vector.co.jp/authors/VA010341/unicode/}, \\
+{\tt http://www.ingrid.org/java/i18n/unicode.html},
+{\tt http://www.asahi-net.or.jp/~hc3j-tkg/unicode/}, \\
+{\tt http://www.y-adagio.com/public/standards/tr\_xml\_jpf/kaisetsu.htm}
+
+\vspace{3mm}
+\baselineskip15pt
+
+上記の※は主に
+``http://euc.jp/i18n/ucsnote.ja.html''から採用されたものと思うが、
+この表はかなり広く似た文字を拾い集めたものであって、
+実装例が稀な例を含んでいる。実装例の稀なものまで考慮する必然性はない。
+
+gdの変換表は、Windows CP932と同等と思われる。
+Java, Macの変換表は
+旧いものを除くと、(この表に含まれている文字の範囲では)JISと同等と
+思われる。JIS X 0201ローマ字のいわゆる半角円記号(0x5c)をUnicodeの
+どこに対応付けるかで若干異なっているそうだが、
+pTeX/upTeXでは、JIS X 0201の半角円記号(0x5c)は
+ASCIIのバックスラッシュ(0x5c)と区別することが不可能であるため、
+0x5c→U+005Cの変換を採用する他ない。
+
+以上のような状況からすると、upTeXでのJIS→Unicode変換表の影響については
+[W][J]の二者を考慮しておけば問題ないと思われる。
+なお、JISの変換表は、規格上では規定ではなく参考扱いであり、
+この変換表に従わなくとも規格違反にはならないそうだ。
+
+
+\section{upTeXでのJIS→Unicode変換表の好ましい形態}
+upTeXでは、「JISで書かれたpTeX用のソースを
+非常に少ない変更でupTeXでも同等にタイプセットできる」
+という方針にしている。
+また
+「pTeXでは、min10.\{tfm,vf\}→rml.\{tfm,vf\}→CMapのH→dvipsまたは
+dvipdfmx出力」
+「upTeXでは、upjisr-h.\{tfm,vf\}→uprml-h.\{tfm,vf\}→CMapのUniJIS-UTF16-H→
+dvipsまたはdvipdfmx出力」
+を基本に考えている。
+同様の最終出力を想定した場合に、文字コード→CIDのマッピングの変更は
+vfや、新規のCMapの利用などでも可能であるが、
+既存のCMap(HやUniJIS-UTF16-H)で出来るだけ可能にしておきたい(2)(4)(5)。
+
+また、Windowsの変換表は文字の意味上JISやUnicodeの規定から
+かけはなれた変換を行っているものがある。
+組版上の副作用がない範囲内ではJISの変換表を優先させたい(3)。
+
+また、JIS X 0213で区別されている文字は、
+この対応表の結果でも区別できるようにしておきたい(4)。
+
+
+\parindent0mm
+\begin{tabular}{ccp{145mm}}
+分類 & 実装例 & upTeXでの採用の理由\\\hline
+(1) & [J][W] & 対抗の候補の実装例が稀で、考慮に値しないと思われる。\\
+(2) & [W] & [J]に従うと、JIS\&HとUnicode\&UniJIS-UTF16-Hで異なる結果
+ になってしまう。[W]では、JISの規定上文字の意味を変更していることに
+ になってしまうが、やむを得ない。\\
+(3) & [J] & CMapの結果上差異はないが、文字の意味としては[W]の変換は
+ 誤っていると思われる。\\
+(4) & [J] & [W]に従うと、JIS\&HとUnicode\&UniJIS-UTF16-Hで異なる結果
+ になる上AJ1-4外になりしかも変換の文字の意味として
+ 誤っていると思われる。[W]のUnicodeの値は、JIS X 0213で別字に割り当てられ
+ ており整合性が悪い。\\
+(5) & [W] & [J]に従うと、JIS+CMapのHとUnicode+CMapのUniJIS-UTF16-Hで異なる結果
+ になってしまうが、[W]でも``FULLWIDTH''の差のみで文字の意味を変更していることにはならない。\\
+(6) & [J][W] & 下記。JIS→Unicodeの変換表には揺らぎがないが、CIDとの対応では互換性が無い。
+ 文字コード変換部分以外 (vf, CMapなど) に別途要対策。\\\hline
+\end{tabular}
+
+\parindent1zw
+
+結果的には、[J]でも[W]でもない変換表がupTeXにとっては好ましい。
+「変換表の乱立に拍車を掛ける」という批判もあるかもしれないので、
+副作用について考えてみる。
+upTeX(内部Unicode動作)でJIS→Unicodeの変換をした場合、
+再度Unicode→JISに変換することは、わずかな例外
+(端末への出力で、端末の環境がEUCなどJIS系であった場合)のみであり、
+ファイル出力などでUnicode→JIS変換が利用されることはない。
+JIS→Unicode→JISのラウンドトリップは保証されている。
+副作用があるとすれば、
+JIS→Unicodeの変換したファイル出力(logやauxなど)を、
+例えばWindowsで入出力がUTF-8だが内部がCP932で動作しているような
+ソフトで編集をすると、
+文字欠けなどの危険がある。
+しかし、そのようなケースは稀だと思われるし、
+考慮しなくていいだろう。
+JIS→Unicodeの変換が安定であることのメリットの方が
+大きいと判断する。
+
+\section{upTeXでのUnicode→CID変換}
+下記の例は、JIS→Unicodeの変換については疑義がなく明解だが、
+CIDとの対応を含めて考えると、
+「pTeXでは、min10.\{tfm,vf\}→rml.\{tfm,vf\}→CMapのH→dvipsまたは
+dvipdfmx出力」
+「upTeXでは、upjisr-h.\{tfm,vf\}→uprml-h.\{tfm,vf\}→CMapのUniJIS-UTF16-H→
+dvipsまたはdvipdfmx出力」
+という方針では対応できず、別途対策が必要。
+UniJIS-UTF16-Hの代わりにUniJIS-UCS2-HでOKという話ならAdobe標準CMapの切り替えで対応可能であるが。
+文字コード変換部分ではどうにもならないので、
+vfかCMapの機能を使わざるを得ない。
+現在、「upjisr-h.vf → JISコード\&rml.\{tfm,vf\} →CMapのH」の
+対応付けを行うコースを最有力と考えている。
+
+\parindent0mm
+\begin{tabular}{l@{~}l|l@{~}l@{~}|l@{~}c@{~}|l}\hline
+JIS & H, V & UCS2 & UniJIS-UTF16 & 実装例 & upTeX & 備考\\\hline
+\MKTx{2148}{1-1-40} & \CIDx{672}
+ & \UTFx{201C} & \CIDx{108} & [g][J][W][M] & (6) & LEFT DOUBLE QUOTATION MARK\\\cline{3-7}
+ & & 該当なし & \CIDx{672} & & & \\\hline\hline
+
+\MKTx{2149}{1-1-41} & \CIDx{673}
+ & \UTFx{201D} & \CIDx{122} & [g][J][M][W] & (6) & RIGHT DOUBLE QUOTATION MARK \\\cline{3-7}
+ & & 該当なし & \CIDx{673} & & & \\\hline
+\end{tabular}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/jstr-euc-incl.tex b/language/japanese/uptex-base/samples/jstr-euc-incl.tex
new file mode 100644
index 0000000000..1aae5928da
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jstr-euc-incl.tex
@@ -0,0 +1,6 @@
+\documentclass{jarticle}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+\begin{document}
+\includegraphics{jstr-euc.1}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/jstr-euc.mp b/language/japanese/uptex-base/samples/jstr-euc.mp
new file mode 100644
index 0000000000..abd5b26068
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jstr-euc.mp
@@ -0,0 +1,10 @@
+prologues:=1;
+beginfig(1);
+string s;
+s:="֥å㡼ަֵȡ";
+u=2;
+draw (80,180)--(260,180)--(260,20)--(80,20)--cycle;
+label.lft(s infont "rmlv", (100,100));
+label.urt(s infont "rml", (100,100));
+endfig;
+end.
diff --git a/language/japanese/uptex-base/samples/jstr-jis-incl.tex b/language/japanese/uptex-base/samples/jstr-jis-incl.tex
new file mode 100644
index 0000000000..2b204dfb56
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jstr-jis-incl.tex
@@ -0,0 +1,6 @@
+\documentclass{jarticle}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+\begin{document}
+\includegraphics{jstr-jis.1}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/jstr-jis.mp b/language/japanese/uptex-base/samples/jstr-jis.mp
new file mode 100644
index 0000000000..2e4eb045d2
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jstr-jis.mp
@@ -0,0 +1,10 @@
+prologues:=1;
+beginfig(1);
+string s;
+s:="$B!V%-%c%C%A%c!<!^&A!"9b4V5H!#!W(B";
+u=2;
+draw (80,180)--(260,180)--(260,20)--(80,20)--cycle;
+label.lft(s infont "rmlv", (100,100));
+label.urt(s infont "rml", (100,100));
+endfig;
+end.
diff --git a/language/japanese/uptex-base/samples/jstr-sjis-incl.tex b/language/japanese/uptex-base/samples/jstr-sjis-incl.tex
new file mode 100644
index 0000000000..8af5f72873
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jstr-sjis-incl.tex
@@ -0,0 +1,6 @@
+\documentclass{jarticle}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+\begin{document}
+\includegraphics{jstr-sjis.1}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/jstr-sjis.mp b/language/japanese/uptex-base/samples/jstr-sjis.mp
new file mode 100644
index 0000000000..2d04288c54
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jstr-sjis.mp
@@ -0,0 +1,10 @@
+prologues:=1;
+beginfig(1);
+string s;
+s:="uLb`[}AԋgBv";
+u=2;
+draw (80,180)--(260,180)--(260,20)--(80,20)--cycle;
+label.lft(s infont "rmlv", (100,100));
+label.urt(s infont "rml", (100,100));
+endfig;
+end.
diff --git a/language/japanese/uptex-base/samples/jstr-uptex-incl.tex b/language/japanese/uptex-base/samples/jstr-uptex-incl.tex
new file mode 100644
index 0000000000..c5fb953140
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jstr-uptex-incl.tex
@@ -0,0 +1,6 @@
+\documentclass{ujarticle}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+\begin{document}
+\includegraphics{jstr-uptex.1}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/jstr-uptex.mp b/language/japanese/uptex-base/samples/jstr-uptex.mp
new file mode 100644
index 0000000000..314ce6b835
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jstr-uptex.mp
@@ -0,0 +1,10 @@
+prologues:=1;
+beginfig(1);
+string s;
+s:="「キャッチャー±α、髙閒𠮷。」";
+u=2;
+draw (80,180)--(260,180)--(260,20)--(80,20)--cycle;
+label.lft(s infont "urmlv", (100,100));
+label.urt(s infont "urml", (100,100));
+endfig;
+end.
diff --git a/language/japanese/uptex-base/samples/jstr-utf8-incl.tex b/language/japanese/uptex-base/samples/jstr-utf8-incl.tex
new file mode 100644
index 0000000000..1069b123cf
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jstr-utf8-incl.tex
@@ -0,0 +1,6 @@
+\documentclass{jarticle}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+\begin{document}
+\includegraphics{jstr-utf8.1}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/jstr-utf8.mp b/language/japanese/uptex-base/samples/jstr-utf8.mp
new file mode 100644
index 0000000000..3a02f10489
--- /dev/null
+++ b/language/japanese/uptex-base/samples/jstr-utf8.mp
@@ -0,0 +1,10 @@
+prologues:=1;
+beginfig(1);
+string s;
+s:="「キャッチャー±α、高間吉。」";
+u=2;
+draw (80,180)--(260,180)--(260,20)--(80,20)--cycle;
+label.lft(s infont "rmlv", (100,100));
+label.urt(s infont "rml", (100,100));
+endfig;
+end.
diff --git a/language/japanese/uptex-base/samples/kinsoku-chk-utf8.tex b/language/japanese/uptex-base/samples/kinsoku-chk-utf8.tex
new file mode 100644
index 0000000000..1c3a6794f8
--- /dev/null
+++ b/language/japanese/uptex-base/samples/kinsoku-chk-utf8.tex
@@ -0,0 +1,87 @@
+\documentclass{ujarticle}
+
+\oddsidemargin0mm
+\evensidemargin0mm
+\topmargin-10mm
+\textwidth157mm
+\textheight245mm
+
+
+\begin{document}
+\section{禁則処理}
+\begin{center}
+ \begin{tabular}{|p{8mm}|p{12mm}|p{16mm}|p{20mm}|p{24mm}|p{28mm}|}\hline
+\gdef\txt{(一二)(一二三)}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{〔一二〕〔一二三〕}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{[一二][一二三]}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{{一二}{一二三}}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{〈一二〉〈一二三〉}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{《一二》《一二三》}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{「一二」「一二三」}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{『一二』『一二三』}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{【一二】【一二三】}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+ \end{tabular}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{|p{8mm}|p{12mm}|p{16mm}|p{20mm}|p{24mm}|p{28mm}|}\hline
+%\gdef\txt{⦅一二⦆⦅二三⦆}
+% \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{⦅一二⦆⦅一二三⦆}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{〘一二〙〘一二三〙}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{〖一二〗〖一二三〗}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{〝一二〟〝一二三〟}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{«一二»«一二三»}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{屡〻屡〻屡〻屡〻}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{あっ‼きゃっ‼}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{€123€1234}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{あヽたヾあヽたヾ}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{アゝタゞアゝタゞ}
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+ \end{tabular}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{|p{5mm}|p{6mm}|p{7mm}|p{8mm}|p{9mm}|p{10mm}|}\hline
+\gdef\txt{「カ」「キ」「ク」「ケ」「コ」}%
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{ガギ「グ」、パピ「プ」。}%
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+ \end{tabular}
+\end{center}
+
+\prebreakpenalty`。=0
+\prebreakpenalty`、=0
+\prebreakpenalty`゙=0
+\prebreakpenalty`゚=0
+\prebreakpenalty`」=0
+\postbreakpenalty`「=0
+\begin{center}
+ \begin{tabular}{|p{5mm}|p{6mm}|p{7mm}|p{8mm}|p{9mm}|p{10mm}|}\hline
+\gdef\txt{「カ」「キ」「ク」「ケ」「コ」}%
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+\gdef\txt{ガギ「グ」、パピ「プ」。}%
+ \txt&\txt&\txt&\txt&\txt&\txt\\\hline
+ \end{tabular}
+\end{center}
+
+\end{document}
+
diff --git a/language/japanese/uptex-base/samples/linebreak.bib b/language/japanese/uptex-base/samples/linebreak.bib
new file mode 100644
index 0000000000..26084d6c9e
--- /dev/null
+++ b/language/japanese/uptex-base/samples/linebreak.bib
@@ -0,0 +1,45 @@
+
+@BOOK{$B2~9T0LCV(B2a,
+ author = "$B2~9T(B $B0LCV(B",
+ yomi = "Ichi Kaigyo",
+ title = "$B2~9T0LCV$,@5$7$/$J$k$+!)(B",
+ publisher = "$B3+6HF2(B",
+ year = 2007,
+ note = "$B2~9T0LCV$N%F%9%H!#&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J(B"
+}
+
+@BOOK{$B2~9T0LCV(B2b,
+ author = "$B2~9T(B $B0LCV(B",
+ yomi = "Ichi Kaigyo",
+ title = "$B2~9T0LCV$,@5$7$/$J$k$+!)(B",
+ publisher = "$B3+6HF2(B",
+ year = 2007,
+ note = "$B2~9T0LCV$N%F%9%H!#(Ba$B&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J(B"
+}
+
+@BOOK{$B2~9T0LCV(B3a,
+ author = "$B2~9T(B $B0LCV(B",
+ yomi = "Ichi Kaigyo",
+ title = "$B2~9T0LCV$,@5$7$/$J$k$+!)(B",
+ publisher = "$B3+6HF2(B",
+ year = 2007,
+ note = "$B2~9T0LCV$N%F%9%H!#0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B"
+}
+
+@BOOK{$B2~9T0LCV(B3b,
+ author = "$B2~9T(B $B0LCV(B",
+ yomi = "Ichi Kaigyo",
+ title = "$B2~9T0LCV$,@5$7$/$J$k$+!)(B",
+ publisher = "$B3+6HF2(B",
+ year = 2007,
+ note = "$B2~9T0LCV$N%F%9%H!#(Ba$B0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B"
+}
+
+@BOOK{$B2~9T0LCV(B3c,
+ author = "$B2~9T(B $B0LCV(B",
+ yomi = "Ichi Kaigyo",
+ title = "$B2~9T0LCV$,@5$7$/$J$k$+!)(B",
+ publisher = "$B3+6HF2(B",
+ year = 2007,
+ note = "$B2~9T0LCV$N%F%9%H!#(Ba$B0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B"
+}
diff --git a/language/japanese/uptex-base/samples/min10x.tfm b/language/japanese/uptex-base/samples/min10x.tfm
new file mode 100644
index 0000000000..4a5887742c
--- /dev/null
+++ b/language/japanese/uptex-base/samples/min10x.tfm
Binary files differ
diff --git a/language/japanese/uptex-base/samples/misc-check-h-utf8.tex b/language/japanese/uptex-base/samples/misc-check-h-utf8.tex
new file mode 100644
index 0000000000..dbc807e724
--- /dev/null
+++ b/language/japanese/uptex-base/samples/misc-check-h-utf8.tex
@@ -0,0 +1,366 @@
+\documentclass{ujarticle}
+
+%%%%%%%%
+% hyperref 関連の制御をコマンドラインから行う
+% ①,②,③ のどれかを実行すればよい。
+% ① 何もしない
+% $ uplatex misc-check-utf8.tex
+% ② hyperref + dvipdfmx
+% $ uplatex "\def\withhyperref{dvipdfmx}\input" misc-check-utf8.tex
+% ③ hyperref + dvips + modified "convert-euc.txt" + distiller
+% $ uplatex "\def\withhyperref{dvips}\input" misc-check-utf8.tex
+%%%%%%
+\makeatletter
+\def\@dvipdfmx{dvipdfmx}
+\def\@dvips{dvips}
+\ifx\withhyperref\@dvipdfmx
+
+%% for hyperref + dvipdfmx
+\usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true,%
+bookmarkstype=toc]{hyperref}
+\AtBeginDvi{\special{pdf:tounicode UTF8-UTF16}}
+%%
+
+\fi
+\ifx\withhyperref\@dvips
+
+%% for hyperref + dvips + modified "convert-euc.txt" + distiller
+\usepackage[dvips,bookmarks=true,bookmarksnumbered=true,%
+bookmarkstype=toc]{hyperref}
+%%
+
+\fi
+\makeatother
+%%%%%%%%
+
+\oddsidemargin0mm
+\evensidemargin0mm
+\topmargin-15mm
+\textwidth162mm
+\textheight245mm
+
+\begin{document}
+\section{漢数字}
+
+\kansuji 1234567890
+\quad
+一二三四五六七八九〇
+\quad
+\char\kuten"104C\char\kuten"2653\char\kuten"1B10\char\kuten"1B2D\char\kuten"183E
+\char\kuten"2F1B\char\kuten"1C17\char\kuten"280C\char\kuten"1645\char\kuten"011B
+\quad
+\char\jis"306C\char\jis"4673\char\jis"3B30\char\jis"3B4D\char\jis"385E
+\char\jis"4F3B\char\jis"3C37\char\jis"482C\char\jis"3665\char\jis"213B
+
+\char\euc"B0EC\char\euc"C6F3\char\euc"BBB0\char\euc"BBCD\char\euc"B8DE
+\char\euc"CFBB\char\euc"BCB7\char\euc"C8AC\char\euc"B6E5\char\euc"A1BB
+\quad
+\char\sjis"88EA\char\sjis"93F1\char\sjis"8E4F\char\sjis"8E6C\char\sjis"8CDC
+\char\sjis"985A\char\sjis"8EB5\char\sjis"94AA\char\sjis"8BE3\char\sjis"815A
+\quad
+\char\ucs"4E00\char\ucs"4E8C\char\ucs"4E09\char\ucs"56DB\char\ucs"4E94
+\char\ucs"516D\char\ucs"4E03\char\ucs"516B\char\ucs"4E5D\char\ucs"3007
+\quad
+\char"4E00\char"4E8C\char"4E09\char"56DB\char"4E94
+\char"516D\char"4E03\char"516B\char"4E5D\char"3007
+
+\kansujichar1=`壹
+\kansujichar2=`弐
+\kansujichar3=`參
+\kansujichar4=`肆
+\kansujichar5=`伍
+\kansuji 12345
+
+\section{拗音、句読点など}
+\begin{tabular}{rl}
+default &
+ひらがな,カムチャッカ.
+~~
+ちょっと、待って。きっと、ショック。
+~~
+‘回’ “回” \\
+
+\if0
+umin10.tfm &
+\font\uminten = umin10 at 10pt
+{\uminten
+ひらがな,カムチャッカ.
+~~
+ちょっと、待って。きっと、ショック。
+~~
+‘回’ “回”
+}\\
+\fi
+
+\if0
+ujis.tfm &
+\font\ujisten = ujis at 10pt
+{\ujisten
+ひらがな,カムチャッカ.
+~~
+ちょっと、待って。きっと、ショック。
+~~
+‘回’ “回”
+}\\
+\fi
+
+upjisr-h.tfm &
+\font\upjisrten = upjisr-h at 9.62216pt
+{\upjisrten
+ひらがな,カムチャッカ.
+~~
+ちょっと、待って。きっと、ショック。
+~~
+‘回’ “回”
+}\\
+
+\end{tabular}
+
+\section{約物}
+\subsection{JIS X 0208にある括弧類}
+‘回’ “回” (回) 〔回〕 [回] {回} 〈回〉 《回》 「回」 『回』 【回】
+
+{\gt
+‘回’ “回” (回) 〔回〕 [回] {回} 〈回〉 《回》 「回」 『回』 【回】
+}
+
+%‘回’ “回” は、upTeX-0.13 で改善した。
+
+\subsection{JIS X 0213で追加された括弧類}
+⦅回⦆ 〘回〙 〖回〗 〝回〟
+
+{\gt
+⦅回⦆ 〘回〙 〖回〗 〝回〟
+}
+
+% {\gt 〖回〗} は、KozGoProVI-Medium.otfならうまくいくはず。
+
+\subsection{縦組みでの動作が気になるもの}
+回回:回回;回回、回回。回回,回回.
+
+㍾㍽㍼㍻㋿ ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻
+
+→←↑↓ ☞☜☝☟ ⇨⇦⇧⇩ ➡⬅⬆⬇⮕
+
+①=① ②≒② ③≠③ ④≡④ ⑤―⑤ ⑥−⑥ ⑦‐⑦ ⑧゠⑧ ⑨‥⑨ ⑩…⑩ ⑪〜⑪ ⑫ー⑫
+
+{\gt
+回回:回回;回回、回回。回回,回回.
+
+㍾㍽㍼㍻㋿ ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻
+
+→←↑↓ ☞☜☝☟ ⇨⇦⇧⇩ ➡⬅⬆⬇⮕
+
+①=① ②≒② ③≠③ ④≡④ ⑤―⑤ ⑥−⑥ ⑦‐⑦ ⑧゠⑧ ⑨‥⑨ ⑩…⑩ ⑪〜⑪ ⑫ー⑫
+}
+
+\section{いわゆる『JIS外字』←不正確な言い方だが}
+JIS X 0208, JIS X 0213では、別のコードポイントの文字に包摂されている
+異体字(JIS X 0221ではまた話が別)や、その他の例。
+
+髙島屋 \char"9AD9島屋\quad% はしご高
+内田百閒 内田百\char"9592\quad% 月間
+杮落とし \char"676E落とし\quad% こけら、JIS X 0212には含まれている
+安全㐧一 安全\char"3427一\quad% 第の略字 CJK Ideographs Extension A
+%𠮷野家 \char"20BB7野家% 土吉, CJK Extension B, 要set3対応
+
+{\gt
+髙島屋 \char"9AD9島屋\quad% はしご高
+内田百閒 内田百\char"9592\quad% 月間
+杮落とし \char"676E落とし\quad% こけら、JIS X 0212には含まれている
+安全㐧一 安全\char"3427一\quad% 第の略字 CJK Ideographs Extension A
+%𠮷野家 \char"20BB7野家% 土吉, CJK Extension B, 要set3対応
+}
+
+\section{いわゆる『新JIS』『JIS2004』}
+\subsection{いろいろな例}
+JIS X 0213で第3,4水準に追加された文字の例。JIS X 0212(補助漢字)に収録されていた字も含む。
+
+〼〽♮♫♬♩♤♠♢♦♡♥♧♣☖☗〠☎☀☁☂☃♨ゔゕゖヷヸヹヺ⅓⅔⅕✓⌘␣⏎㈱㈲
+
+①②③④⑤❶❷❸❹❺⓵⓶⓷⓸⓹ⅰⅱⅲⅳⅴⅠⅡⅢⅣⅤⓐⓑⓒⓓⓔ㋐㋑㋒㋓㋔
+
+鄧小平 李承燁 里見弴 草彅剛 朴璐美 森鷗外 森雞二 王銘琬 宮﨑あおい 蔣介石
+
+你好 深圳 東日本旅客鉃道株式会社 尾骶骨 生酛仕込 凮月堂 㐂寿 仐寿 圓壔函數
+
+啞然 火焰 嚙む 任俠 長身瘦軀 石鹼 屢〻 刺繡 醬油 蟬時雨 隔靴搔痒 奥飛驒 簞笥 摑む
+
+充塡 顚末 祈禱 瀆職 土囊 潑溂 醱酵 頰紅 素麵 麴町 蓬萊 蠟燭 攢竹
+
+\subsection{JIS X 0208 AB包摂29組}
+{\gt
+\noindent
+A: 唖焔鴎噛侠躯鹸麹屡繍蒋醤蝉掻騨箪掴填顛祷涜嚢溌醗頬麺莱蝋攅\\
+B: 啞焰鷗嚙俠軀鹼麴屢繡蔣醬蟬搔驒簞摑塡顚禱瀆囊潑醱頰麵萊蠟攢
+}
+
+\subsection{JIS X 0213:2004追加漢字 (10字)}
+\noindent
+俱剝%𠮟
+吞噓姸屛幷瘦繫 (1字はextension B (BMP外))
+
+\section{Fullwidth formがあるもの}
+% upTeX v.0.10以降では、\kchar\ucs"00A3 など、U+00FF 以下は欧文になる。
+% 和文フォントで表示するには、\char → \kchar にする必要がある。
+£\kchar\ucs"00A3% pound sign
+
+£\kchar\ucs"FFE1% fullwidth pound sign
+
+¥\kchar\ucs"00A5% yen sign
+
+¥\kchar\ucs"FFE5% fullwidth yen sign
+
+
+\section{日本語フォントのギリシャ文字(αβγ)、キリル文字(абв)}
+\char\ucs"03B1\char\ucs"03B2\char\ucs"03B3
+\char\ucs"0391\char\ucs"0392\char\ucs"0393
+\quad
+\char"03B1\char"03B2\char"03B3
+\char"0391\char"0392\char"0393
+\quad
+αβγΑΒΓ
+
+\char\ucs"0430\char\ucs"0431\char\ucs"0432
+\char\ucs"0410\char\ucs"0411\char\ucs"0412
+\quad
+\char"0430\char"0431\char"0432
+\char"0410\char"0411\char"0412
+\quad
+абвАБВ
+
+\section{verbatim, verb}
+\begin{verbatim}
+abcABC \¥¥
+αβγΑΒΓ
+髙島屋
+内田百閒
+杮落とし
+安全㐧一
+\end{verbatim}
+%𠮷野家
+
+\verb+abcABC \¥¥+
+\verb-αβγΑΒΓ-
+\verb!髙島屋!
+\verb/内田百閒/
+\verb#杮落とし#
+\verb|安全㐧一|
+%\verb=𠮷野家=
+
+\edef\bs{$\backslash$\kern0em}
+\section{コントロールワード}
+\newcommand\東西{東と西---east and west.}
+\newcommand\aZ{aからZ---a to Z.}
+\東西 \aZ
+
+{
+
+\kcatcode"FF71=17
+\newcommand\マズー{マズー}
+\マズー
+
+\kcatcode"FF70=17
+\newcommand\マズー{マズー}
+\マズー
+
+}
+
+\section{日本語フォントのU+0000〜U+00FF}
+\noindent
+\kcatcode"005C=18
+5C:\kchar"005C, 7C:\kchar"007C, 7D:\kchar"007D, 7E:\kchar"007E
+\kcatcode"005C=15
+
+\noindent
+A0:\kchar"00A0, A4:\kchar"00A4, A5:\kchar"00A5, A6:\kchar"00A6, A7:\kchar"00A7, A8:\kchar"00A8,
+A9:\kchar"00A9, AA:\kchar"00AA, AB:\kchar"00AB, AC:\kchar"00AC, AD:\kchar"00AD, AE:\kchar"00AE,\\
+AF:\kchar"00AF, B0:\kchar"00B0, B1:\kchar"00B1, B4:\kchar"00B4, B5:\kchar"00B5, B6:\kchar"00B6,
+B7:\kchar"00B7, B8:\kchar"00B8, B9:\kchar"00B9, BA:\kchar"00BA, BB:\kchar"00BB, BF:\kchar"00BF,\\
+C6:\kchar"00C6, D7:\kchar"00D7, D8:\kchar"00D8, DF:\kchar"00DF, E6:\kchar"00E6, F7:\kchar"00F7,
+F8:\kchar"00F8
+
+\noindent
+\kchardef\セクション=`§
+\kchardef\段落記号=`¶
+\kchardef\×=`×
+\kchardef\÷=`÷
+\bs kchardef:\セクション\段落記号\×\÷\quad
+\bs kchar:\kchar`§\kchar`¶\kchar`×\kchar`÷\quad
+UTF-8:§¶×÷
+
+
+\[
+ x_{例えば「§\kchar"A7\セクション 」}= y_{『¶\kchar"B6\段落記号 』}
+\]
+
+\section{半角片仮名、カタカナ。}
+!アイウエオ!\raisebox{-.12zh}{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}!~~
+!アイウエオ!\raisebox{-.12zh}{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}!
+
+(・∀・)イイ~~
+(~゚Д゚)マズー
+
+{\bfseries
+!アイウエオ!\raisebox{-.12zh}{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}!~~
+!アイウエオ!\raisebox{-.12zh}{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}!
+
+(・∀・)イイ~~
+(~゚Д゚)マズー
+}
+
+{\small
+\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}
+
+{\normalsize
+\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}
+
+{\Large
+\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}
+
+\newcommand{\chkvartable}[2]{%
+\ifnum\jis"#1="#2
+ \typeout{check: jis 0x#1 -> ucs 0x#2 : OK!}%
+\else
+ \typeout{check: jis 0x#1 -> ucs 0x#2 : NG!}%
+\fi
+}
+\chkvartable{2126}{30FB}
+\chkvartable{2131}{FFE3}
+\chkvartable{213D}{2015}
+\chkvartable{2141}{301C}
+\chkvartable{2142}{2016}
+\chkvartable{2143}{FF5C}
+\chkvartable{2144}{2026}
+\chkvartable{215D}{2212}
+\chkvartable{216F}{FFE5}
+\chkvartable{2171}{FFE0}
+\chkvartable{2172}{FFE1}
+\chkvartable{224C}{FFE2}
+\chkvartable{227E}{25EF}
+
+
+% kcode_pos などのテスト。
+\typeout{αβγδεζηθικαβγδεζηθικαβγδεζηθικαβγδεζηθικαβγδεζηθικ}
+
+\typeout{一二三四五六七八九〇}
+\typeout{一二三四五六七八九〇一二三四五六七八九〇}
+
+\typeout{一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+\typeout{a一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+\typeout{ab一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+
+\typeout{一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+\typeout{一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+\typeout{一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+
+\typeout{〼〽♮♫♬♩♤♠♢♦♡♥♧♣☖☗〠☎☀☁☂☃♨ゔゕゖヷヸヹヺ⅓⅔⅕✓⌘␣⏎㈱㈲}
+\typeout{①②③④⑤❶❷❸❹❺⓵⓶⓷⓸⓹ⅰⅱⅲⅳⅴⅠⅡⅢⅣⅤⓐⓑⓒⓓⓔ㋐㋑㋒㋓㋔}
+\typeout{αβγΑΒΓ 髙島屋 内田百閒 杮落とし 安全㐧一 𠮷野家 カタカナ。}
+\typeout{科学技術}
+\typeout{科学技术}
+\typeout{科學技術}
+\typeout{과학기술}
+
+\end{document}
+
diff --git a/language/japanese/uptex-base/samples/misc-check-v-utf8.tex b/language/japanese/uptex-base/samples/misc-check-v-utf8.tex
new file mode 100644
index 0000000000..adbc56d0bb
--- /dev/null
+++ b/language/japanese/uptex-base/samples/misc-check-v-utf8.tex
@@ -0,0 +1,333 @@
+\documentclass[landscape]{utarticle}
+
+%%%%%%%%
+% hyperref 関連の制御をコマンドラインから行う
+% ①,②,③ のどれかを実行すればよい。
+% ① 何もしない
+% $ uplatex misc-check-utf8.tex
+% ② hyperref + dvipdfmx
+% $ uplatex "\def\withhyperref{dvipdfmx}\input" misc-check-utf8.tex
+% ③ hyperref + dvips + modified "convert-euc.txt" + distiller
+% $ uplatex "\def\withhyperref{dvips}\input" misc-check-utf8.tex
+%%%%%%
+\makeatletter
+\def\@dvipdfmx{dvipdfmx}
+\def\@dvips{dvips}
+\ifx\withhyperref\@dvipdfmx
+
+%% for hyperref + dvipdfmx
+\usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true,%
+bookmarkstype=toc]{hyperref}
+\AtBeginDvi{\special{pdf:tounicode UTF8-UTF16}}
+%%
+
+\fi
+\ifx\withhyperref\@dvips
+
+%% for hyperref + dvips + modified "convert-euc.txt" + distiller
+\usepackage[dvips,bookmarks=true,bookmarksnumbered=true,%
+bookmarkstype=toc]{hyperref}
+%%
+
+\fi
+\makeatother
+%%%%%%%%
+
+\oddsidemargin0mm
+\evensidemargin0mm
+\topmargin-15mm
+\textwidth162mm
+\textheight245mm
+
+\begin{document}
+\section{漢数字}
+
+\kansuji 1234567890
+\quad
+一二三四五六七八九〇
+\quad
+\char\kuten"104C\char\kuten"2653\char\kuten"1B10\char\kuten"1B2D\char\kuten"183E
+\char\kuten"2F1B\char\kuten"1C17\char\kuten"280C\char\kuten"1645\char\kuten"011B
+\quad
+\char\jis"306C\char\jis"4673\char\jis"3B30\char\jis"3B4D\char\jis"385E
+\char\jis"4F3B\char\jis"3C37\char\jis"482C\char\jis"3665\char\jis"213B
+
+\char\euc"B0EC\char\euc"C6F3\char\euc"BBB0\char\euc"BBCD\char\euc"B8DE
+\char\euc"CFBB\char\euc"BCB7\char\euc"C8AC\char\euc"B6E5\char\euc"A1BB
+\quad
+\char\sjis"88EA\char\sjis"93F1\char\sjis"8E4F\char\sjis"8E6C\char\sjis"8CDC
+\char\sjis"985A\char\sjis"8EB5\char\sjis"94AA\char\sjis"8BE3\char\sjis"815A
+\quad
+\char\ucs"4E00\char\ucs"4E8C\char\ucs"4E09\char\ucs"56DB\char\ucs"4E94
+\char\ucs"516D\char\ucs"4E03\char\ucs"516B\char\ucs"4E5D\char\ucs"3007
+\quad
+\char"4E00\char"4E8C\char"4E09\char"56DB\char"4E94
+\char"516D\char"4E03\char"516B\char"4E5D\char"3007
+
+\kansujichar1=`壹
+\kansujichar2=`弐
+\kansujichar3=`參
+\kansujichar4=`肆
+\kansujichar5=`伍
+\kansuji 12345
+
+\section{拗音、句読点など}
+\begin{tabular}{rl}
+default &
+ひらがな,カムチャッカ.
+~~
+ちょっと、待って。きっと、ショック。
+~~
+‘回’ “回” \\
+
+\if0
+utmin10.tfm &
+\font\uminten = utmin10 at 10pt
+{\uminten
+ひらがな,カムチャッカ.
+~~
+ちょっと、待って。きっと、ショック。
+~~
+‘回’ “回”
+}\\
+\fi
+
+\if0
+ujis-v.tfm &
+\font\ujisten = ujis-v at 10pt
+{\ujisten
+ひらがな,カムチャッカ.
+~~
+ちょっと、待って。きっと、ショック。
+~~
+‘回’ “回”
+}\\
+\fi
+
+upjisr-v.tfm &
+\font\upjisrten = upjisr-v at 9.62216pt
+{\upjisrten
+ひらがな,カムチャッカ.
+~~
+ちょっと、待って。きっと、ショック。
+~~
+‘回’ “回”
+}\\
+
+\end{tabular}
+
+\section{約物}
+\subsection{JIS X 0208にある括弧類}
+‘回’ “回” (回) 〔回〕 [回] {回} 〈回〉 《回》 「回」 『回』 【回】
+
+{\gt
+‘回’ “回” (回) 〔回〕 [回] {回} 〈回〉 《回》 「回」 『回』 【回】
+}
+
+%‘回’ “回” は、縦組では UniJISup-UTF16-V により改善する。
+
+\subsection{JIS X 0213で追加された括弧類}
+⦅回⦆ 〘回〙 〖回〗 〝回〟
+
+{\gt
+⦅回⦆ 〘回〙 〖回〗 〝回〟
+}
+
+% {\gt 〖回〗} は、KozGoProVI-Medium.otfならうまくいくはず。
+
+\subsection{縦組みでの動作が気になるもの}
+回回:回回;回回、回回。回回,回回.
+
+㍾㍽㍼㍻㋿ ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻
+
+→←↑↓ ☞☜☝☟ ⇨⇦⇧⇩ ➡⬅⬆⬇⮕
+
+①=① ②≒② ③≠③ ④≡④ ⑤―⑤ ⑥−⑥ ⑦‐⑦ ⑧゠⑧ ⑨‥⑨ ⑩…⑩ ⑪〜⑪ ⑫ー⑫
+
+{\gt
+回回:回回;回回、回回。回回,回回.
+
+㍾㍽㍼㍻㋿ ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻
+
+→←↑↓ ☞☜☝☟ ⇨⇦⇧⇩ ➡⬅⬆⬇⮕
+
+①=① ②≒② ③≠③ ④≡④ ⑤―⑤ ⑥−⑥ ⑦‐⑦ ⑧゠⑧ ⑨‥⑨ ⑩…⑩ ⑪〜⑪ ⑫ー⑫
+}
+
+% 一部は UniJISup-UTF16-V により改善する。
+
+\section{いわゆる『JIS外字』←不正確な言い方だが}
+JIS X 0208, JIS X 0213では、別のコードポイントの文字に包摂されている
+異体字(JIS X 0221ではまた話が別)や、その他の例。
+
+髙島屋 \char"9AD9島屋\quad% はしご高
+内田百閒 内田百\char"9592\quad% 月間
+杮落とし \char"676E落とし\quad% こけら、JIS X 0212には含まれている
+安全㐧一 安全\char"3427一\quad% 第の略字 CJK Ideographs Extension A
+%𠮷野家 \char"20BB7野家% 土吉, CJK Extension B, 要set3対応
+
+{\gt
+髙島屋 \char"9AD9島屋\quad% はしご高
+内田百閒 内田百\char"9592\quad% 月間
+杮落とし \char"676E落とし\quad% こけら、JIS X 0212には含まれている
+安全㐧一 安全\char"3427一\quad% 第の略字 CJK Ideographs Extension A
+%𠮷野家 \char"20BB7野家% 土吉, CJK Extension B, 要set3対応
+}
+
+\section{いわゆる『新JIS』『JIS2004』}
+\subsection{いろいろな例}
+JIS X 0213で第3,4水準に追加された文字の例。JIS X 0212(補助漢字)に収録されていた字も含む。
+
+〼〽♮♫♬♩♤♠♢♦♡♥♧♣☖☗〠☎☀☁☂☃♨ゔゕゖヷヸヹヺ⅓⅔⅕✓⌘␣⏎㈱㈲
+
+①②③④⑤❶❷❸❹❺⓵⓶⓷⓸⓹ⅰⅱⅲⅳⅴⅠⅡⅢⅣⅤⓐⓑⓒⓓⓔ㋐㋑㋒㋓㋔
+
+鄧小平 李承燁 里見弴 草彅剛 朴璐美 森鷗外 森雞二 王銘琬 宮﨑あおい 蔣介石
+
+你好 深圳 東日本旅客鉃道株式会社 尾骶骨 生酛仕込 凮月堂 㐂寿 仐寿 圓壔函數
+
+啞然 火焰 嚙む 任俠 長身瘦軀 石鹼 屢〻 刺繡 醬油 蟬時雨 隔靴搔痒 奥飛驒 簞笥 摑む
+
+充塡 顚末 祈禱 瀆職 土囊 潑溂 醱酵 頰紅 素麵 麴町 蓬萊 蠟燭 攢竹
+
+\subsection{JIS X 0208 AB包摂29組}
+{\gt
+\noindent
+A: 唖焔鴎噛侠躯鹸麹屡繍蒋醤蝉掻騨箪掴填顛祷涜嚢溌醗頬麺莱蝋攅\\
+B: 啞焰鷗嚙俠軀鹼麴屢繡蔣醬蟬搔驒簞摑塡顚禱瀆囊潑醱頰麵萊蠟攢
+}
+
+\subsection{JIS X 0213:2004追加漢字 (10字)}
+\noindent
+俱剝%𠮟
+吞噓姸屛幷瘦繫 (1字はextension B (BMP外))
+
+\section{Fullwidth formがあるもの}
+% upTeX v.0.10以降では、\kchar\ucs"00A3 など、U+00FF 以下は欧文になる。
+% 和文フォントで表示するには、\char → \kchar にする必要がある。
+£\kchar\ucs"00A3% pound sign
+
+£\kchar\ucs"FFE1% fullwidth pound sign
+
+¥\kchar\ucs"00A5% yen sign
+
+¥\kchar\ucs"FFE5% fullwidth yen sign
+
+
+\section{日本語フォントのギリシャ文字(αβγ)、キリル文字(абв)}
+\char\ucs"03B1\char\ucs"03B2\char\ucs"03B3
+\char\ucs"0391\char\ucs"0392\char\ucs"0393
+\quad
+\char"03B1\char"03B2\char"03B3
+\char"0391\char"0392\char"0393
+\quad
+αβγΑΒΓ
+
+\char\ucs"0430\char\ucs"0431\char\ucs"0432
+\char\ucs"0410\char\ucs"0411\char\ucs"0412
+\quad
+\char"0430\char"0431\char"0432
+\char"0410\char"0411\char"0412
+\quad
+абвАБВ
+
+\section{verbatim, verb}
+\begin{verbatim}
+abcABC \¥¥
+αβγΑΒΓ
+髙島屋
+内田百閒
+杮落とし
+安全㐧一
+\end{verbatim}
+%𠮷野家
+
+\verb+abcABC \¥¥+
+\verb-αβγΑΒΓ-
+\verb!髙島屋!
+\verb/内田百閒/
+\verb#杮落とし#
+\verb|安全㐧一|
+%\verb=𠮷野家=
+
+\edef\bs{$\backslash$\kern0em}
+\section{コントロールワード}
+\newcommand\東西{東と西---east and west.}
+\newcommand\aZ{aからZ---a to Z.}
+\東西 \aZ
+
+
+\section{日本語フォントのU+0000〜U+00FF}
+\noindent
+\kcatcode"005C=18
+5C:\kchar"005C, 7C:\kchar"007C, 7D:\kchar"007D, 7E:\kchar"007E
+\kcatcode"005C=15
+
+\noindent
+A0:\kchar"00A0, A4:\kchar"00A4, A5:\kchar"00A5, A6:\kchar"00A6, A7:\kchar"00A7, A8:\kchar"00A8,
+A9:\kchar"00A9, AA:\kchar"00AA, AB:\kchar"00AB, AC:\kchar"00AC, AD:\kchar"00AD, AE:\kchar"00AE,\\
+AF:\kchar"00AF, B0:\kchar"00B0, B1:\kchar"00B1, B4:\kchar"00B4, B5:\kchar"00B5, B6:\kchar"00B6,
+B7:\kchar"00B7, B8:\kchar"00B8, B9:\kchar"00B9, BA:\kchar"00BA, BB:\kchar"00BB, BF:\kchar"00BF,\\
+C6:\kchar"00C6, D7:\kchar"00D7, D8:\kchar"00D8, DF:\kchar"00DF, E6:\kchar"00E6, F7:\kchar"00F7,
+F8:\kchar"00F8
+
+\noindent
+\kchardef\セクション=`§
+\kchardef\段落記号=`¶
+\kchardef\×=`×
+\kchardef\÷=`÷
+\bs kchardef:\セクション\段落記号\×\÷\quad
+\bs kchar:\kchar`§\kchar`¶\kchar`×\kchar`÷\quad
+UTF-8:§¶×÷
+
+
+\[
+ x_{例えば「§\kchar"A7\セクション 」}= y_{『¶\kchar"B6\段落記号 』}
+\]
+
+\newcommand{\chkvartable}[2]{%
+\ifnum\jis"#1="#2
+ \typeout{check: jis 0x#1 -> ucs 0x#2 : OK!}%
+\else
+ \typeout{check: jis 0x#1 -> ucs 0x#2 : NG!}%
+\fi
+}
+\chkvartable{2126}{30FB}
+\chkvartable{2131}{FFE3}
+\chkvartable{213D}{2015}
+\chkvartable{2141}{301C}
+\chkvartable{2142}{2016}
+\chkvartable{2143}{FF5C}
+\chkvartable{2144}{2026}
+\chkvartable{215D}{2212}
+\chkvartable{216F}{FFE5}
+\chkvartable{2171}{FFE0}
+\chkvartable{2172}{FFE1}
+\chkvartable{224C}{FFE2}
+\chkvartable{227E}{25EF}
+
+
+% kcode_pos などのテスト。
+\typeout{αβγδεζηθικαβγδεζηθικαβγδεζηθικαβγδεζηθικαβγδεζηθικ}
+
+\typeout{一二三四五六七八九〇}
+\typeout{一二三四五六七八九〇一二三四五六七八九〇}
+
+\typeout{一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+\typeout{a一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+\typeout{ab一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+
+\typeout{一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+\typeout{一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+\typeout{一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇}
+
+\typeout{〼〽♮♫♬♩♤♠♢♦♡♥♧♣☖☗〠☎☀☁☂☃♨ゔゕゖヷヸヹヺ⅓⅔⅕✓⌘␣⏎㈱㈲}
+\typeout{①②③④⑤❶❷❸❹❺⓵⓶⓷⓸⓹ⅰⅱⅲⅳⅴⅠⅡⅢⅣⅤⓐⓑⓒⓓⓔ㋐㋑㋒㋓㋔}
+\typeout{αβγΑΒΓ 髙島屋 内田百閒 杮落とし 安全㐧一 𠮷野家 カタカナ。}
+\typeout{科学技術}
+\typeout{科学技术}
+\typeout{科學技術}
+\typeout{과학기술}
+
+\end{document}
+
diff --git a/language/japanese/uptex-base/samples/otfsmpl-uplatex.tex b/language/japanese/uptex-base/samples/otfsmpl-uplatex.tex
new file mode 100644
index 0000000000..8f7aeb9f45
--- /dev/null
+++ b/language/japanese/uptex-base/samples/otfsmpl-uplatex.tex
@@ -0,0 +1,135 @@
+\documentclass{ujarticle}
+\textwidth170mm
+\textheight240mm
+\oddsidemargin0mm
+\topmargin-10mm
+%\usepackage[uplatex,multi,noreplace]{otf}
+\usepackage[uplatex,multi]{otf}% upTeX-0.24以降では、noreplaceなしで動くようになった。
+\pagestyle{empty}
+\parindent=0zw
+\begin{document}
+\Large
+森\UTF{9DD7}外\textbf{森\UTF{9DD7}外}%
+森\CID{7646}外\textbf{森\CID{7646}外}\\%
+森鷗外\textbf{森鷗外}森\char"9DD7外\textbf{森\char"9DD7外}%
+森\kchar"9DD7外\textbf{森\kchar"9DD7外}
+
+内田百\UTF{9592}\textbf{内田百\UTF{9592}}%
+内田百\CID{8685}\textbf{内田百\CID{8685}}\\%
+内田百閒\textbf{内田百閒}内田百\char"9592\textbf{内田百\char"9592}%
+内田百\kchar"9592\textbf{内田百\kchar"9592}
+
+\UTF{9ad9}橋さん\textbf{\UTF{9ad9}橋さん}%
+\CID{8705}橋さん\textbf{\CID{8705}橋さん}\\%
+髙橋さん\textbf{髙橋さん}\char"9AD9橋さん\textbf{\char"9AD9橋さん}%
+\kchar"9AD9橋さん\textbf{\kchar"9AD9橋さん}
+
+鼻濁音「\CID{16382}」とか\textbf{「\CID{13706}野家」}とかも出せます。
+
+% set3対応フォント+dviwareなら、「𠮷野家」もUTF-8で直接書ける。
+\UTF{20BB7}野家\textbf{\UTF{20BB7}野家}%
+\CID{13706}野家\textbf{\CID{13706}野家}\\%
+𠮷野家\textbf{𠮷野家}\char"20BB7野家\textbf{\char"20BB7野家}%
+\kchar"20BB7野家\textbf{\kchar"20BB7野家}
+
+\CID{239}\CID{331}∀\CID{331}\CID{240}\CID{344}\CID{344}~~
+\CID{239}\CID{326}\CID{389}Д\CID{389}\CID{240}\CID{373}\CID{355}\CID{388}\CID{342}
+
+\CID{239}・∀・\CID{240}イイ~~
+\CID{239}\CID{326}゚Д゚\CID{240}マズー
+
+(・∀・)イイ~~
+(~゚Д゚)マズー
+
+アイウエオ\raisebox{-.12zh}{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}~~
+アイウエオ\raisebox{-.12zh}{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}
+
+\vskip2zh
+\edef\bs{$\backslash$\kern0em}
+\begin{tabular}{c|ccc|cc|l}
+ & \multicolumn{3}{|c}{upTeX} & \multicolumn{2}{|c|}{UTF/OTF} & \\
+UCS & UTF-8 & \bs char & \bs kchar & \bs UTF & \bs CID & 備考 \\\hline
+U+9D0E & 鴎 & \char"9D0E & \kchar"9D0E & \UTF{9D0E} & \CID{1322} & メ鴎 \\
+U+9DD7 & 鷗 & \char"9DD7 & \kchar"9D0E & \UTF{9DD7} & \CID{7646} & 品鴎 \\
+U+9593 & 間 & \char"9593 & \kchar"9593 & \UTF{9593} & \CID{1554} & 日間 \\
+U+9592 & 閒 & \char"9592 & \kchar"9592 & \UTF{9592} & \CID{8685} & 月間 \\
+U+9AD8 & 高 & \char"9AD8 & \kchar"9AD8 & \UTF{9AD8} & \CID{2036} & 口高 \\
+U+9AD9 & 髙 & \char"9AD9 & \kchar"9AD9 & \UTF{9AD9} & \CID{8705} & 梯子高 \\
+U+5409 & 吉 & \char"5409 & \kchar"5409 & \UTF{5409} & \CID{1634} & 士吉 \\
+U+20BB7 & 𠮷 & \char"20BB7 & \kchar"20BB7 & \UTF{20BB7} & \CID{13706} & 土吉 \\
+\end{tabular}
+
+\vskip2zh
+\ajMaru{1}\ajMaru{2}\ajMaru{3}%
+\ajKuroMaru{1}\ajKuroMaru{2}\ajKuroMaru{3}%
+\ajKaku{1}\ajKaku{2}\ajKaku{3}%
+\ajKuroKaku{1}\ajKuroKaku{2}\ajKuroKaku{3}%
+\ajMaruKaku{1}\ajMaruKaku{2}\ajMaruKaku{3}%
+\ajKuroMaruKaku{1}\ajKuroMaruKaku{2}\ajKuroMaruKaku{3}%
+\ajKakko{1}\ajKakko{2}\ajKakko{3}%
+\ajRoman{1}\ajRoman{2}\ajRoman{3}%
+\ajroman{1}\ajroman{2}\ajroman{3}%
+\ajPeriod{1}\ajPeriod{2}\ajPeriod{3}
+
+①②③❶❷❸⑴⑵⑶ⅠⅡⅢⅰⅱⅲ⒈⒉⒊
+
+\ajLig{株式会社}\ajLig{有限会社}\ajLig{財団法人}
+\ajLig{明治}\ajLig{大正}\ajLig{昭和}\ajLig{平成}
+{\bfseries
+\ajLig{株式会社}\ajLig{有限会社}\ajLig{財団法人}
+\ajLig{明治}\ajLig{大正}\ajLig{昭和}\ajLig{平成}}
+
+㍿㍾㍽㍼㍻
+{\bfseries
+㍿㍾㍽㍼㍻}
+
+\ajClub\ajHeart\ajSpade\ajDiamond
+\ajvarClub\ajvarHeart\ajvarSpade\ajvarDiamond
+\ajPhone\ajPostal\ajvarPostal
+\ajSun\ajCloud\ajUmbrella\ajSnowman
+
+♣♡♠♢♧♥♤♦☎〠〶☀☁☂☃
+
+
+\DeclareFontFamily{JY2}{jpnrm}{}
+\DeclareFontFamily{JY2}{schrm}{}
+\DeclareFontFamily{JY2}{tchrm}{}
+\DeclareFontFamily{JY2}{korrm}{}
+\DeclareFontShape{JY2}{jpnrm}{m}{n}{<->s*[0.962216]upjpnrm-h}{}
+\DeclareFontShape{JY2}{schrm}{m}{n}{<->s*[0.962216]upschrm-h}{}
+\DeclareFontShape{JY2}{tchrm}{m}{n}{<->s*[0.962216]uptchrm-h}{}
+\DeclareFontShape{JY2}{korrm}{m}{n}{<->s*[0.962216]upkorrm-h}{}
+\DeclareRobustCommand\jpnrm{\kanjifamily{jpnrm}\selectfont}
+\DeclareRobustCommand\schrm{\kanjifamily{schrm}\selectfont}
+\DeclareRobustCommand\tchrm{\kanjifamily{tchrm}\selectfont}
+\DeclareRobustCommand\korrm{\kanjifamily{korrm}\selectfont}
+\DeclareFontFamily{JY2}{jpngt}{}
+\DeclareFontShape{JY2}{jpngt}{m}{n}{<->s*[0.962216]upjpngt-h}{}
+\DeclareRobustCommand\jpngt{\kanjifamily{jpngt}\selectfont}
+
+\jpnrm 科学技術~
+\kchar"79D1\kchar"5B66\kchar"6280\kchar"8853~
+\UTF{79d1}\UTF{5b66}\UTF{6280}\UTF{8853}~
+\CID{1354}\CID{1462}\CID{1621}\CID{2395}
+
+\schrm 科学技术~
+\kchar"79D1\kchar"5B66\kchar"6280\kchar"672F~
+\UTFC{79d1}\UTFC{5b66}\UTFC{6280}\UTFC{672f}~
+\CIDC{2387}\CIDC{4048}\CIDC{2095}\CIDC{3468}
+
+\tchrm 科學技術~
+\kchar"79D1\kchar"5B78\kchar"6280\kchar"8853~
+\UTFT{79d1}\UTFT{5b78}\UTFT{6280}\UTFT{8853}~
+\CIDT{1989}\CIDT{4778}\CIDT{1190}\CIDT{2964}
+
+\korrm 과학기술~
+\kchar"ACFC\kchar"D559\kchar"AE30\kchar"C220~
+\UTFK{acfc}\UTFK{d559}\UTFK{ae30}\UTFK{c220}~
+\CIDK{1175}\CIDK{3295}\CIDK{1245}\CIDK{2303}
+
+\jpngt 科学技術~
+\kchar"79D1\kchar"5B66\kchar"6280\kchar"8853~
+{\gtfamily\UTF{79d1}\UTF{5b66}\UTF{6280}\UTF{8853}~
+\CID{1354}\CID{1462}\CID{1621}\CID{2395}}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/punctuation.tex b/language/japanese/uptex-base/samples/punctuation.tex
new file mode 100644
index 0000000000..7c22634e68
--- /dev/null
+++ b/language/japanese/uptex-base/samples/punctuation.tex
@@ -0,0 +1,395 @@
+\documentclass[twocolumn]{ujarticle}
+\textwidth 170mm
+\textheight 230mm
+\topmargin 0mm
+\leftmargin 0mm
+\rightmargin 0mm
+
+\usepackage{color}
+\usepackage{plext}
+%\usepackage[uplatex]{otf}
+
+% U+00AB, U+00BB, U+00B7 が全て全角幅でデザインされている「HGGothicE」を使う
+% for uptex-fonts
+%\AtBeginDvi{\special{pdf:mapline uprml-h UniJIS-UTF16-H :0:HGRGE.TTC}}
+%\AtBeginDvi{\special{pdf:mapline uprml-hq UniJIS-UCS2-H :0:HGRGE.TTC}}
+%\AtBeginDvi{\special{pdf:mapline uprml-v UniJIS-UTF16-V :0:HGRGE.TTC}}
+% for japanese-otf-uptex
+%\AtBeginDvi{\special{pdf:mapline uphminr-h UniJIS-UTF16-H :0:HGRGE.TTC}}
+%\AtBeginDvi{\special{pdf:mapline otf-cjmr-h Identity-H :0:HGRGE.TTC}}
+%\AtBeginDvi{\special{pdf:mapline uphminr-v UniJIS-UTF16-V :0:HGRGE.TTC}}
+
+\newcommand{\Bracket}[2]{%
+ \textcolor{green}{\fbox{\textcolor{black}{#1}}}雪%
+ \textcolor{green}{\fbox{\textcolor{black}{#2}}}%
+ \textcolor{green}{\fbox{\textcolor{black}{\inhibitglue #1}}}雪%
+ \textcolor{green}{\fbox{\textcolor{black}{#2\inhibitglue}}}%
+%%% vvv 色無し vvv %%%
+% \fbox{#1}雪\fbox{#2}%
+% \fbox{\inhibitglue #1}雪\fbox{#2\inhibitglue}%
+}
+\newcommand{\BracketUCS}[2]{%
+ \Bracket{\kchar"#1}{\kchar"#2} {\footnotesize U+#1, U+#2}%
+}
+\newcommand{\Punct}[1]{%
+ 雪\textcolor{green}{\fbox{\textcolor{black}{#1}}}雪%
+ \textcolor{green}{\fbox{\textcolor{black}{\inhibitglue #1\inhibitglue}}}雪%
+%%% vvv 色無し vvv %%%
+% 雪\fbox{#1}雪%
+% \fbox{\inhibitglue #1\inhibitglue}雪%
+}
+\newcommand{\PunctUCS}[1]{%
+ \Punct{\kchar"#1} {\footnotesize U+#1}%"
+}
+
+\DeclareFontFamily{JY2}{jpnrm}{}
+\DeclareFontFamily{JY2}{schrm}{}
+\DeclareFontFamily{JY2}{tchrm}{}
+\DeclareFontFamily{JY2}{korrm}{}
+\DeclareFontShape{JY2}{jpnrm}{m}{n}{<->s*[0.962216]upjpnrm-h}{}
+\DeclareFontShape{JY2}{schrm}{m}{n}{<->s*[0.962216]upschrm-h}{}
+\DeclareFontShape{JY2}{tchrm}{m}{n}{<->s*[0.962216]uptchrm-h}{}
+\DeclareFontShape{JY2}{korrm}{m}{n}{<->s*[0.962216]upkorrm-h}{}
+\DeclareFontShape{JY2}{jpnrm}{bx}{n}{<->ssub*jpnrm/m/n}{}
+\DeclareFontShape{JY2}{schrm}{bx}{n}{<->ssub*schrm/m/n}{}
+\DeclareFontShape{JY2}{tchrm}{bx}{n}{<->ssub*tchrm/m/n}{}
+\DeclareFontShape{JY2}{korrm}{bx}{n}{<->ssub*korrm/m/n}{}
+\DeclareFontFamily{JT2}{jpnrm}{}
+\DeclareFontFamily{JT2}{schrm}{}
+\DeclareFontFamily{JT2}{tchrm}{}
+\DeclareFontFamily{JT2}{korrm}{}
+\DeclareFontShape{JT2}{jpnrm}{m}{n}{<->s*[0.962216]upjpnrm-v}{}
+\DeclareFontShape{JT2}{schrm}{m}{n}{<->s*[0.962216]upschrm-v}{}
+\DeclareFontShape{JT2}{tchrm}{m}{n}{<->s*[0.962216]uptchrm-v}{}
+\DeclareFontShape{JT2}{korrm}{m}{n}{<->s*[0.962216]upkorrm-v}{}
+\DeclareFontShape{JT2}{jpnrm}{bx}{n}{<->ssub*jpnrm/m/n}{}
+\DeclareFontShape{JT2}{schrm}{bx}{n}{<->ssub*schrm/m/n}{}
+\DeclareFontShape{JT2}{tchrm}{bx}{n}{<->ssub*tchrm/m/n}{}
+\DeclareFontShape{JT2}{korrm}{bx}{n}{<->ssub*korrm/m/n}{}
+\DeclareRobustCommand\jpnrm{\kanjifamily{jpnrm}\selectfont}
+\DeclareRobustCommand\schrm{\kanjifamily{schrm}\selectfont}
+\DeclareRobustCommand\tchrm{\kanjifamily{tchrm}\selectfont}
+\DeclareRobustCommand\korrm{\kanjifamily{korrm}\selectfont}
+
+\begin{document}
+\parindent0pt
+\fboxsep0pt
+
+\section{括弧類}
+\subsection{日本語}
+{%\jpnrm
+
+%\Bracket{«}{»} \BracketUCS{00AB}{00BB}\\% Adobe-Japan1-7には和文用グリフがない
+\Bracket{‘}{’} \BracketUCS{2018}{2019}\\
+\Bracket{“}{”} \BracketUCS{201C}{201D}\\
+\Bracket{〈}{〉} \BracketUCS{2329}{232A}\\
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300A}{300B}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+\Bracket{〖}{〗} \BracketUCS{3016}{3017}\\
+\Bracket{〘}{〙} \BracketUCS{3018}{3019}\\
+%\Bracket{〚}{〛} \BracketUCS{301A}{301B}\\% Adobe-Japan1-7には無い
+\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\% 日本では標準的ではない
+\Bracket{〝}{〟} \BracketUCS{301D}{301F}\\
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+\Bracket{⦅}{⦆} \BracketUCS{FF5F}{FF60}\\
+
+\parbox<t>{19zw}{
+
+%\Bracket{«}{»} \BracketUCS{00AB}{00BB}\\% Adobe-Japan1-7には和文用グリフがない
+%\Bracket{‘}{’} \BracketUCS{2018}{2019}\\% 標準的ではない
+%\Bracket{“}{”} \BracketUCS{201C}{201D}\\% 標準的ではない
+%\Bracket{〈}{〉} \BracketUCS{2329}{232A}\\% 標準的ではない
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300A}{300B}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+\Bracket{〖}{〗} \BracketUCS{3016}{3017}\\
+\Bracket{〘}{〙} \BracketUCS{3018}{3019}\\
+%\Bracket{〚}{〛} \BracketUCS{301A}{301B}\\% Adobe-Japan1-7には無い
+\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\% 日本では標準的ではない。UniJISup-UTF16-Vでは割り当てた。
+\Bracket{〝}{〟} \BracketUCS{301D}{301F}\\
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+\Bracket{⦅}{⦆} \BracketUCS{FF5F}{FF60}\\
+
+}
+
+}
+
+\subsection{中国語・簡体字 {\schrm 简体中文}}
+{\schrm
+
+\Bracket{‘}{’} \BracketUCS{2018}{2019}\\
+\Bracket{“}{”} \BracketUCS{201C}{201D}\\
+\Bracket{〈}{〉} \BracketUCS{2329}{232A}\\
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300A}{300B}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+\Bracket{〖}{〗} \BracketUCS{3016}{3017}\\
+\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+
+\parbox<t>{19zw}{
+
+%\Bracket{‘}{’} \BracketUCS{2018}{2019}\\% 標準的ではない
+%\Bracket{“}{”} \BracketUCS{201C}{201D}\\% 標準的ではない
+%\Bracket{〈}{〉} \BracketUCS{2329}{232A}\\% 標準的ではない
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300A}{300B}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+\Bracket{〖}{〗} \BracketUCS{3016}{3017}\\
+%\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\% 標準的ではない
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+
+}
+
+}
+
+\subsection{中国語・繁体字 {\tchrm 繁體中文}}
+{\tchrm
+
+\Bracket{‘}{’} \BracketUCS{2018}{2019}\\
+\Bracket{“}{”} \BracketUCS{201C}{201D}\\
+\Bracket{〈}{〉} \BracketUCS{2329}{232A}\\
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300A}{300B}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\
+\Bracket{﹙}{﹚} \BracketUCS{FE59}{FE5A}\\
+\Bracket{﹛}{﹜} \BracketUCS{FE5B}{FE5C}\\
+\Bracket{﹝}{﹞} \BracketUCS{FE5D}{FE5E}\\
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+
+\parbox<t>{19zw}{
+
+%\Bracket{‘}{’} \BracketUCS{2018}{2019}\\% 標準的ではない
+%\Bracket{“}{”} \BracketUCS{201C}{201D}\\% 標準的ではない
+%\Bracket{〈}{〉} \BracketUCS{2329}{232A}\\% 標準的ではない
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300A}{300B}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+%\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\% Adobe-CNS1-7には無い
+%\Bracket{﹙}{﹚} \BracketUCS{FE59}{FE5A}\\% Adobe-CNS1-7には無い
+%\Bracket{﹛}{﹜} \BracketUCS{FE5B}{FE5C}\\% Adobe-CNS1-7には無い
+%\Bracket{﹝}{﹞} \BracketUCS{FE5D}{FE5E}\\% Adobe-CNS1-7には無い
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+%\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\% Adobe-CNS1-7には無い
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+
+}
+
+}
+
+\subsection{韓国語 {\korrm 한국어}}
+{\korrm
+
+\Bracket{«}{»} \BracketUCS{00AB}{00BB}\\% 全角になるはず
+\Bracket{‘}{’} \BracketUCS{2018}{2019}\\
+\Bracket{“}{”} \BracketUCS{201C}{201D}\\
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300A}{300B}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+\Bracket{〖}{〗} \BracketUCS{3016}{3017}\\
+\Bracket{〘}{〙} \BracketUCS{3018}{3019}\\
+%\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\% 全角になるはず。標準的ではない
+%\Bracket{〝}{〟} \BracketUCS{301D}{301F}\\% 全角になるはず。標準的ではない
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+
+\parbox<t>{22zw}{
+
+\Bracket{«}{»} \BracketUCS{00AB}{00BB}\\% 全角になるはず
+%\Bracket{‘}{’} \BracketUCS{2018}{2019}\\% 標準的ではない
+%\Bracket{“}{”} \BracketUCS{201C}{201D}\\% 標準的ではない
+\Bracket{〈}{〉} \BracketUCS{3008}{3009}\\
+\Bracket{《}{》} \BracketUCS{300A}{300B}\\
+\Bracket{「}{」} \BracketUCS{300A}{300B}\\
+\Bracket{『}{』} \BracketUCS{300E}{300F}\\
+\Bracket{【}{】} \BracketUCS{3010}{3011}\\
+\Bracket{〔}{〕} \BracketUCS{3014}{3015}\\
+%\Bracket{〖}{〗} \BracketUCS{3016}{3017}\\% Adobe-Korea1-2には無い
+%\Bracket{〘}{〙} \BracketUCS{3018}{3019}\\% Adobe-Korea1-2には無い
+%\Bracket{〝}{〞} \BracketUCS{301D}{301E}\\% 全角になるはず。標準的ではない
+%\Bracket{〝}{〟} \BracketUCS{301D}{301F}\\% 全角になるはず。標準的ではない
+\Bracket{(}{)} \BracketUCS{FF08}{FF09}\\
+\Bracket{[}{]} \BracketUCS{FF3B}{FF3D}\\
+\Bracket{{}{}} \BracketUCS{FF5B}{FF5D}\\
+
+}
+
+}
+
+\section{句読点など}
+\subsection{日本語}
+{%\jpnrm
+
+%\Punct{·} \PunctUCS{00B7}\\% Adobe-Japan1-7には和文用グリフがない
+\Punct{・} \PunctUCS{30FB}\\
+\Punct{:} \PunctUCS{FF1A}\\
+\Punct{;} \PunctUCS{FF1B}\\
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+\Punct{―} \PunctUCS{2015}\\
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+\parbox<t>{14zw}{
+
+%\Punct{·} \PunctUCS{00B7}\\% Adobe-Japan1-7には和文用グリフがない
+\Punct{・} \PunctUCS{30FB}\\
+\Punct{:} \PunctUCS{FF1A}\\
+%\Punct{;} \PunctUCS{FF1B}\\% Adobe-Japan1-7には縦組み用グリフがない
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+\Punct{―} \PunctUCS{2015}\\
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+}
+
+}
+
+\subsection{中国語・簡体字 {\schrm 简体中文}}
+{\schrm
+
+\Punct{·} \PunctUCS{00B7}\\
+\Punct{・} \PunctUCS{30FB}\\
+\Punct{:} \PunctUCS{FF1A}\\
+\Punct{;} \PunctUCS{FF1B}\\
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+\Punct{―} \PunctUCS{2015}\\
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+\parbox<t>{14zw}{
+
+\Punct{·} \PunctUCS{00B7}\\
+\Punct{・} \PunctUCS{30FB}\\
+\Punct{:} \PunctUCS{FF1A}\\
+\Punct{;} \PunctUCS{FF1B}\\
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+\Punct{―} \PunctUCS{2015}\\
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+}
+
+}
+
+\subsection{中国語・繁体字 {\tchrm 繁體中文}}
+{\tchrm
+
+\Punct{·} \PunctUCS{00B7}\\
+%\Punct{・} \PunctUCS{30FB}\\% Adobe-CNS1-7には無い
+\Punct{:} \PunctUCS{FF1A}\\
+\Punct{;} \PunctUCS{FF1B}\\
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+%\Punct{―} \PunctUCS{2015}\\% Adobe-CNS1-7には無い
+\Punct{…} \PunctUCS{2025}\\
+\Punct{‥} \PunctUCS{2026}\\
+
+\parbox<t>{14zw}{
+
+\Punct{·} \PunctUCS{00B7}\\
+%\Punct{・} \PunctUCS{30FB}\\% Adobe-CNS1-7には無い
+\Punct{:} \PunctUCS{FF1A}\\
+\Punct{;} \PunctUCS{FF1B}\\
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+%\Punct{―} \PunctUCS{2015}\\% Adobe-CNS1-7には無い
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+}
+
+}
+
+\subsection{韓国語 {\korrm 한국어}}
+{\korrm
+
+\Punct{·} \PunctUCS{00B7}\\
+\Punct{・} \PunctUCS{30FB}\\
+\Punct{:} \PunctUCS{FF1A}\\
+\Punct{;} \PunctUCS{FF1B}\\
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+%\Punct{―} \PunctUCS{2015}\\% Adobe-Korea1-2には無い
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+\parbox<t>{14zw}{
+
+\Punct{·} \PunctUCS{00B7}\\
+\Punct{・} \PunctUCS{30FB}\\
+\Punct{:} \PunctUCS{FF1A}\\
+\Punct{;} \PunctUCS{FF1B}\\
+\Punct{、} \PunctUCS{3001}\\
+\Punct{。} \PunctUCS{3002}\\
+\Punct{,} \PunctUCS{FF0C}\\
+\Punct{.} \PunctUCS{FF0E}\\
+\Punct{—} \PunctUCS{2014}\\
+%\Punct{―} \PunctUCS{2015}\\% Adobe-Korea1-2には無い
+\Punct{‥} \PunctUCS{2025}\\
+\Punct{…} \PunctUCS{2026}\\
+
+}
+
+}
+
+\end{document}
+
diff --git a/language/japanese/uptex-base/samples/sangoku-uplatex.tex b/language/japanese/uptex-base/samples/sangoku-uplatex.tex
new file mode 100644
index 0000000000..8fa1b21dbb
--- /dev/null
+++ b/language/japanese/uptex-base/samples/sangoku-uplatex.tex
@@ -0,0 +1,66 @@
+\documentclass[twocolumn]{utarticle}
+
+\usepackage{color}
+
+\newcommand{\hojo}[1]{\textcolor{red}{#1}}
+\newcommand{\newjis}[1]{\textcolor{blue}{#1}}
+
+\begin{document}
+
+\section{伝 羅貫中「三國演義」}
+
+\subsection*{第一回~~宴桃園豪傑三結義 斬\newjis{黃}巾英雄首立功}
+
+話説天下大勢、分久必合、合久必分。周末七國分爭、\newjis{幷}\footnote{青字はJIS第3,4水準(JIS X 0213)の文字。}入於秦。及秦
+滅之後、楚・漢分爭、又\newjis{幷}入於漢。漢朝自高祖斬白蛇而起義、一統天下。
+後來光武中興、傳至獻帝、遂分爲三國。推其致亂之由、殆始於桓・靈二
+帝。桓帝禁錮善類、崇信宦官。及桓帝崩、靈帝\newjis{卽}位、大將軍竇武・太傅
+陳蕃、共相輔佐。時有宦官曹節等弄權、竇武・陳蕃謀誅之、機事不密、
+反爲所害、中涓自此愈\newjis{橫}。
+
+建寧二年四月望日、帝御\newjis{溫德}殿。方陞座、殿角狂風驟起、只見一條大
+青蛇、從梁上飛將下來、蟠於椅上。帝驚倒、左右急救入宮、百官\newjis{俱}奔避。
+須臾、蛇不見了。忽然大雷大雨、加以冰雹、落到半夜方止、壞却房屋無
+數。建寧四年二月、洛陽地震。又海水泛溢、沿海居民、盡被大浪捲入海
+中。光和元年、雌\hojo{雞}\footnote{赤字はJIS補助漢字(JIS X 0212)の文字。大部分はJIS第3,4水準(JIS X 0213)にも再度収録されている。}化雄。六月朔、\newjis{黑}氣十餘丈、飛入\newjis{溫德}殿中。秋七月、
+有虹見於玉堂、五原山岸、盡皆崩裂。種種不祥、非止一端。帝下詔問羣
+臣以災異之由、議\newjis{郞}蔡\hojo{邕}上疏、以爲\hojo{蜺}墮\hojo{雞}化、乃婦寺干政之所致、言頗
+切直。帝覽奏歎息、因起更衣。曹節在後竊視、悉宣告左右。遂以他事陷
+\hojo{邕}於罪、放歸田里。後張讓・趙忠・封\hojo{諝}\footnote{この字はJIS第3,4水準(JIS X 0213)にも収録されていない。}・段珪・曹節・侯覽・蹇碩・程
+曠・夏\hojo{惲}・郭勝十人朋比爲奸、號爲「十常侍」。帝尊信張讓、呼爲「阿
+父」、朝政日非、以致天下人心思亂、盜賊蜂起。
+
+時鉅鹿郡有兄弟三人。一名張角、一名張寶、一名張梁。那張角本是個
+不第秀才。因入山採藥、遇一老人、碧眼童顏、手執藜杖、喚角至一洞中、
+以天書三巻授之曰、『此名《太平要術》。汝得之、當代天宣化、普救世
+人。若萌異心、必獲惡報。』角拜問姓名。老人曰、『吾乃南華老仙也。』
+言訖、化陣清風而去。
+
+角得此書、曉夜攻習、能呼風喚雨、號爲「太平道人」。中平元年正月
+内、疫氣流行、張角散施符水、爲人治病、自稱「大賢良師」。角有徒弟
+五百餘人、雲游四方、皆能書符念咒。次後徒衆日多、角乃立三十六方、
+大方萬餘人、小方六七千、各立渠帥、稱爲「將軍」。訛言、『蒼天已死、
+\newjis{黃}天當立。』又云、『歳在甲子、天下大吉。』令人各以白土、書「甲子」
+二字於家中大門上。青・幽・徐・冀・荊・揚・\hojo{兗}・豫八州之人、家家侍
+奉大賢良師張角名字。角遣其黨馬元義、暗齎金帛、結交中涓封\hojo{諝}、以爲
+内應。角與二弟商議曰、『至難得者、民心也。今民心已順、若不乘勢取
+天下、誠爲可惜。』遂一面私造\newjis{黃}旗、約期舉事。一面使弟子唐州、馳書
+報封\hojo{諝}。唐州乃逕赴省中告變。帝召大將軍何進調兵擒馬元義、斬之。次
+收封\hojo{諝}等一干人下獄。張角聞知事露、星夜舉兵、自稱「天公將軍」、張
+寶稱「地公將軍」、張梁稱「人公將軍」。申言於衆曰、『今漢運將終、
+大聖人出。汝等皆宜順天從正、以樂太平。』四方百姓、裹\newjis{黃}巾從張角反
+者、四五十萬。賊勢浩大、官軍望風而靡。何進奏帝火速降詔、令各處備
+禦、討賊立功。一面遣中\newjis{郞}將盧植・皇甫嵩・朱雋、各引精兵、分三路討
+之。
+
+且説張角一軍、前犯幽州界分。幽州太守劉焉、乃江夏竟陵人氏、漢魯
+恭王之後也。當時聞得賊兵將至、召校尉鄒靖計議。靖曰、『賊兵衆、我
+兵寡、明公宜作速招軍應敵。』劉焉然其説、隨\newjis{卽}出榜招募義兵。榜文行
+到\hojo{涿}縣、引出\hojo{涿}縣中一個英雄。
+
+\end{document}
+
+このテキストは坂口丈幸さんのページ(http://rtk.art.coocan.jp/)で
+フリーで公開されているUTF-8のテキストをJIS X 0213+JIS X 0212の範囲に
+変換したものです。
+
diff --git a/language/japanese/uptex-base/samples/sangoku-uptex.tex b/language/japanese/uptex-base/samples/sangoku-uptex.tex
new file mode 100644
index 0000000000..12d2f9bca7
--- /dev/null
+++ b/language/japanese/uptex-base/samples/sangoku-uptex.tex
@@ -0,0 +1,57 @@
+伝 羅貫中「三國演義」
+
+第一回~~宴桃園豪傑三結義 斬黃巾英雄首立功
+
+話説天下大勢、分久必合、合久必分。周末七國分爭、幷入於秦。及秦
+滅之後、楚・漢分爭、又幷入於漢。漢朝自高祖斬白蛇而起義、一統天下。
+後來光武中興、傳至獻帝、遂分爲三國。推其致亂之由、殆始於桓・靈二
+帝。桓帝禁錮善類、崇信宦官。及桓帝崩、靈帝卽位、大將軍竇武・太傅
+陳蕃、共相輔佐。時有宦官曹節等弄權、竇武・陳蕃謀誅之、機事不密、
+反爲所害、中涓自此愈橫。
+
+建寧二年四月望日、帝御溫德殿。方陞座、殿角狂風驟起、只見一條大
+青蛇、從梁上飛將下來、蟠於椅上。帝驚倒、左右急救入宮、百官俱奔避。
+須臾、蛇不見了。忽然大雷大雨、加以冰雹、落到半夜方止、壞却房屋無
+數。建寧四年二月、洛陽地震。又海水泛溢、沿海居民、盡被大浪捲入海
+中。光和元年、雌雞化雄。六月朔、黑氣十餘丈、飛入溫德殿中。秋七月、
+有虹見於玉堂、五原山岸、盡皆崩裂。種種不祥、非止一端。帝下詔問羣
+臣以災異之由、議郞蔡邕上疏、以爲蜺墮雞化、乃婦寺干政之所致、言頗
+切直。帝覽奏歎息、因起更衣。曹節在後竊視、悉宣告左右。遂以他事陷
+邕於罪、放歸田里。後張讓・趙忠・封諝・段珪・曹節・侯覽・蹇碩・程
+曠・夏惲・郭勝十人朋比爲奸、號爲「十常侍」。帝尊信張讓、呼爲「阿
+父」、朝政日非、以致天下人心思亂、盜賊蜂起。
+
+時鉅鹿郡有兄弟三人。一名張角、一名張寶、一名張梁。那張角本是個
+不第秀才。因入山採藥、遇一老人、碧眼童顏、手執藜杖、喚角至一洞中、
+以天書三巻授之曰、『此名《太平要術》。汝得之、當代天宣化、普救世
+人。若萌異心、必獲惡報。』角拜問姓名。老人曰、『吾乃南華老仙也。』
+言訖、化陣清風而去。
+
+角得此書、曉夜攻習、能呼風喚雨、號爲「太平道人」。中平元年正月
+内、疫氣流行、張角散施符水、爲人治病、自稱「大賢良師」。角有徒弟
+五百餘人、雲游四方、皆能書符念咒。次後徒衆日多、角乃立三十六方、
+大方萬餘人、小方六七千、各立渠帥、稱爲「將軍」。訛言、『蒼天已死、
+黃天當立。』又云、『歳在甲子、天下大吉。』令人各以白土、書「甲子」
+二字於家中大門上。青・幽・徐・冀・荊・揚・兗・豫八州之人、家家侍
+奉大賢良師張角名字。角遣其黨馬元義、暗齎金帛、結交中涓封諝、以爲
+内應。角與二弟商議曰、『至難得者、民心也。今民心已順、若不乘勢取
+天下、誠爲可惜。』遂一面私造黃旗、約期舉事。一面使弟子唐州、馳書
+報封諝。唐州乃逕赴省中告變。帝召大將軍何進調兵擒馬元義、斬之。次
+收封諝等一干人下獄。張角聞知事露、星夜舉兵、自稱「天公將軍」、張
+寶稱「地公將軍」、張梁稱「人公將軍」。申言於衆曰、『今漢運將終、
+大聖人出。汝等皆宜順天從正、以樂太平。』四方百姓、裹黃巾從張角反
+者、四五十萬。賊勢浩大、官軍望風而靡。何進奏帝火速降詔、令各處備
+禦、討賊立功。一面遣中郞將盧植・皇甫嵩・朱雋、各引精兵、分三路討
+之。
+
+且説張角一軍、前犯幽州界分。幽州太守劉焉、乃江夏竟陵人氏、漢魯
+恭王之後也。當時聞得賊兵將至、召校尉鄒靖計議。靖曰、『賊兵衆、我
+兵寡、明公宜作速招軍應敵。』劉焉然其説、隨卽出榜招募義兵。榜文行
+到涿縣、引出涿縣中一個英雄。
+
+\end
+
+このテキストは坂口丈幸さんのページ(http://rtk.art.coocan.jp/)で
+フリーで公開されているUTF-8のテキストをJIS X 0213+JIS X 0212の範囲に
+変換したものです。
+
diff --git a/language/japanese/uptex-base/samples/set3-check-h-utf8.tex b/language/japanese/uptex-base/samples/set3-check-h-utf8.tex
new file mode 100644
index 0000000000..15c62a0ca0
--- /dev/null
+++ b/language/japanese/uptex-base/samples/set3-check-h-utf8.tex
@@ -0,0 +1,166 @@
+\documentclass{ujarticle}
+
+%%%%%%%%
+% hyperref 関連の制御をコマンドラインから行う
+% ①,②,③ のどれかを実行すればよい。
+% ① 何もしない
+% $ uplatex misc-check-utf8.tex
+% ② hyperref + dvipdfmx
+% $ uplatex "\def\withhyperref{dvipdfmx}\input" misc-check-utf8.tex
+% ③ hyperref + dvips + modified "convert-euc.txt" + distiller
+% $ uplatex "\def\withhyperref{dvips}\input" misc-check-utf8.tex
+%%%%%%
+\makeatletter
+\def\@dvipdfmx{dvipdfmx}
+\def\@dvips{dvips}
+\ifx\withhyperref\@dvipdfmx
+
+%% for hyperref + dvipdfmx
+\usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true,%
+bookmarkstype=toc]{hyperref}
+\AtBeginDvi{\special{pdf:tounicode UTF8-UTF16}}
+%%
+
+\fi
+\ifx\withhyperref\@dvips
+
+%% for hyperref + dvips + modified "convert-euc.txt" + distiller
+\usepackage[dvips,bookmarks=true,bookmarksnumbered=true,%
+bookmarkstype=toc]{hyperref}
+%%
+
+\fi
+\makeatother
+%%%%%%%%
+
+\oddsidemargin0mm
+\evensidemargin0mm
+\topmargin-15mm
+\textwidth162mm
+\textheight245mm
+
+%\DeclareFontFamily{JY2}{mcw}{}
+%\DeclareFontFamily{JY2}{gtw}{}
+%\DeclareFontShape{JY2}{mcw}{m}{n}{<->s*[0.962216]upjpnrm-h}{}
+%\DeclareFontShape{JY2}{gtw}{m}{n}{<->s*[0.962216]upjpngt-h}{}
+%\DeclareFontShape{JY2}{gt}{m}{n}{<->s*[0.962216]upjpngt-h}{}
+%\DeclareFontShape{JY2}{mcw}{bx}{n}{<->ssub*gt/m/n}{}
+%\DeclareFontShape{JY2}{gtw}{bx}{n}{<->ssub*gt/m/n}{}
+%\DeclareFontShape{JY2}{gt}{bx}{n}{<->ssub*gt/m/n}{}
+%\DeclareRobustCommand\mcw{\kanjifamily{mcw}\selectfont}
+%\DeclareRobustCommand\gtw{\kanjifamily{gtw}\selectfont}
+%\renewcommand\mcdefault{mcw}
+%\renewcommand\gtdefault{gtw}
+
+\begin{document}
+
+\section{いわゆる『JIS外字』←不正確な言い方だが}
+
+JIS X 0208, JIS X 0213では、別のコードポイントの文字に包摂されている
+異体字(JIS X 0221ではまた話が別)や、その他の例。
+
+髙島屋 \kchar"9AD9島屋\quad% はしご高
+内田百閒 内田百\kchar"9592\quad% 月間
+杮落とし \kchar"676E落とし\quad% こけら、JIS X 0212には含まれている
+安全㐧一 安全\kchar"3427一\quad% 第の略字 CJK Ideographs Extension A
+𠮷野家 \kchar"20BB7野家% 土吉, CJK Extension B, 要set3対応
+
+{\gt
+髙島屋 \kchar"9AD9島屋\quad% はしご高
+内田百閒 内田百\kchar"9592\quad% 月間
+杮落とし \kchar"676E落とし\quad% こけら、JIS X 0212には含まれている
+安全㐧一 安全\kchar"3427一\quad% 第の略字 CJK Ideographs Extension A
+𠮷野家 \kchar"20BB7野家% 土吉, CJK Extension B, 要set3対応
+}
+
+\section{いわゆる『新JIS』『JIS2004』}
+\subsection{JIS X 0213:2004追加漢字 (10字)}
+\noindent
+俱剝𠮟吞噓姸屛幷瘦繫
+
+\subsection{Extension B (BMP外)の文字(303字): 𠀋𠆢𠘨𡈽𠮟など}
+\noindent
+𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠑊𠔉𠗖𠘨𠝏𠠇𠠺𠢹𠥼𠦝
+𠫓𠬝𠵅𠷡𠺕𠹭𠹤𠽟𡈁𡈽𡉕𡉻𡉴𡋤𡋗𡌛𡋽𡌶𡍄𡏄
+𡑮𡑭𡗗𦰩𡙇𡜆𡝂𡢽𡧃𡱖𡴭𡚴𡵅𡵸𡵢𡶡𡶜𡶒𡶷𡷠
+𡸴𡸳𡼞𡽶𡿺𢅻𢌞𢎭𢛳𢡛𢢫𢦏𢪸𢭏𢭐𢭆𢰝𢮦𢰤𢷡
+𣇄𣇃𣇵𣆶𣍲𣏓𣏒𣏐𣏤𣏕𣏚𣏟𣑊𣑑𣑋𣑥𣓤𣕚𣗄𣖔
+𣘹𣙇𣘸𣘺𣜿𣜜𣝣𣜌𣝤𣟿𣟧𣠤𣠽𣪘𣱿𣳾𣴀𣵀𣷺𣷹
+𣷓𣽾𤂖𤄃𤇆𤇾𤎼𤘩𤚥𤟱𤢖𤩍𤭖𤭯𤰖𤴔𤸎𤸷𤹪𤺋
+𥁊𥁕𥄢𥆩𥇥𥇍𥈞𥉌𥐮𥒎𥓙𥔎𥖧𥝱𥞩𥞴𥧄𥧔𥫤𥫣
+𥫱𥮲𥱋𥱤𥶡𥸮𥹖𥹥𥹢𥻘𥻂𥻨𥼣𥽜𥿠𥿔𦀌𥿻𦀗𦁠
+𦃭𦉰𦊆𦍌𣴎𦐂𦙾𦚰𦜝𦣝𦣪𦥑𦥯𦧝𦨞𦩘𦪌𦪷𦫿𦱳
+𦳝𦹀𦹥𦾔𦿸𦿶𦿷𧃴𧄍𧄹𧏛𧏚𧏾𧐐𧑉𧘕𧘔𧘱𧚄𧚓
+𧜎𧜣𧝒𧦅𧪄𧮳𧮾𧯇𧲸𧶠𧸐𧾷𨂊𨂻𨉷𨊂𨋳𨏍𨐌𨑕
+𨕫𨗈𨗉𨛗𨛺𨥉𨥆𨥫𨦇𨦈𨦺𨦻𨨞𨨩𨩱𨩃𨪙𨫍𨫤𨫝
+𨯁𨯯𨴐𨵱𨷻𨸟𨸶𨺉𨻫𨼲𨿸𩊠𩊱𩒐𩗏𩙿𩛰𩜙𩝐𩣆
+𩩲𩷛𩸽𩸕𩺊𩹉𩻄𩻩𩻛𩿎𪀯𪀚𪃹𪂂𪆐𢈘𪎌𪐷𪗱𪘂
+𪘚𪚲𠮟\\
+%
+% KozGoPro-Medium.otfでは、かなり欠けている。
+% KozGoProVI-Medium.otfならうまくいくはず。
+{\gt
+𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠑊𠔉𠗖𠘨𠝏𠠇𠠺𠢹𠥼𠦝
+𠫓𠬝𠵅𠷡𠺕𠹭𠹤𠽟𡈁𡈽𡉕𡉻𡉴𡋤𡋗𡌛𡋽𡌶𡍄𡏄
+𡑮𡑭𡗗𦰩𡙇𡜆𡝂𡢽𡧃𡱖𡴭𡚴𡵅𡵸𡵢𡶡𡶜𡶒𡶷𡷠
+𡸴𡸳𡼞𡽶𡿺𢅻𢌞𢎭𢛳𢡛𢢫𢦏𢪸𢭏𢭐𢭆𢰝𢮦𢰤𢷡
+𣇄𣇃𣇵𣆶𣍲𣏓𣏒𣏐𣏤𣏕𣏚𣏟𣑊𣑑𣑋𣑥𣓤𣕚𣗄𣖔
+𣘹𣙇𣘸𣘺𣜿𣜜𣝣𣜌𣝤𣟿𣟧𣠤𣠽𣪘𣱿𣳾𣴀𣵀𣷺𣷹
+𣷓𣽾𤂖𤄃𤇆𤇾𤎼𤘩𤚥𤟱𤢖𤩍𤭖𤭯𤰖𤴔𤸎𤸷𤹪𤺋
+𥁊𥁕𥄢𥆩𥇥𥇍𥈞𥉌𥐮𥒎𥓙𥔎𥖧𥝱𥞩𥞴𥧄𥧔𥫤𥫣
+𥫱𥮲𥱋𥱤𥶡𥸮𥹖𥹥𥹢𥻘𥻂𥻨𥼣𥽜𥿠𥿔𦀌𥿻𦀗𦁠
+𦃭𦉰𦊆𦍌𣴎𦐂𦙾𦚰𦜝𦣝𦣪𦥑𦥯𦧝𦨞𦩘𦪌𦪷𦫿𦱳
+𦳝𦹀𦹥𦾔𦿸𦿶𦿷𧃴𧄍𧄹𧏛𧏚𧏾𧐐𧑉𧘕𧘔𧘱𧚄𧚓
+𧜎𧜣𧝒𧦅𧪄𧮳𧮾𧯇𧲸𧶠𧸐𧾷𨂊𨂻𨉷𨊂𨋳𨏍𨐌𨑕
+𨕫𨗈𨗉𨛗𨛺𨥉𨥆𨥫𨦇𨦈𨦺𨦻𨨞𨨩𨩱𨩃𨪙𨫍𨫤𨫝
+𨯁𨯯𨴐𨵱𨷻𨸟𨸶𨺉𨻫𨼲𨿸𩊠𩊱𩒐𩗏𩙿𩛰𩜙𩝐𩣆
+𩩲𩷛𩸽𩸕𩺊𩹉𩻄𩻩𩻛𩿎𪀯𪀚𪃹𪂂𪆐𢈘𪎌𪐷𪗱𪘂
+𪘚𪚲𠮟
+}
+
+\section{verbatim, verb}
+\begin{verbatim}
+abcABC \¥¥
+αβγΑΒΓ
+髙島屋
+内田百閒
+杮落とし
+安全㐧一
+𠮷野家
+\end{verbatim}
+
+\verb+abcABC \¥¥+
+\verb-αβγΑΒΓ-
+\verb!髙島屋!
+\verb/内田百閒/
+\verb#杮落とし#
+\verb|安全㐧一|
+\verb=𠮷野家=
+
+\edef\bs{$\backslash$\kern0em}
+\section{コントロールワード}
+\def\𠮷野家{この``\bs 𠮷野家''のように、BMP超のCJK Ideographs Extension Bの文字でもコントロールワードに使えます。}
+\𠮷野家
+
+\newcommand\東西{東と西---east and west.}
+\東西
+
+\newif\if土の𠮷
+\土の𠮷true
+\def\test土の𠮷{%
+\if土の𠮷
+ 土の𠮷です。
+\else
+ 士の吉です。
+\fi}
+\土の𠮷true\test土の𠮷\quad\土の𠮷false\test土の𠮷
+
+
+% kcode_pos などのテスト。
+\typeout{𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷}
+\typeout{a𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷}
+\typeout{ab𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷}
+\typeout{abc𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷}
+
+\end{document}
+
diff --git a/language/japanese/uptex-base/samples/show_kcat.tex b/language/japanese/uptex-base/samples/show_kcat.tex
new file mode 100644
index 0000000000..f68bfffa39
--- /dev/null
+++ b/language/japanese/uptex-base/samples/show_kcat.tex
@@ -0,0 +1,328 @@
+%%% memo
+% not_cjk=15 {is not cjk characters}
+% kanji=16 {kanji}
+% kana=17 {hiragana, katakana}
+% other_kchar=18 {cjk symbol codes}
+% hangul=19 {hangul codes}
+
+\def\KC#1#2{[#1] \the\kcatcode"#2}
+\def\kc#1#2{[#1] \the\kcatcode`#1,\the\kcatcode"#2\ifnum`#1="#2 \else !! No match !!\fi}
+\def\kco#1{\the\kcatcode"#1}
+
+\message{not cjk:}
+\message{\KC{A}{0041}}% U+0041 Basic Latin
+\message{\KC{À}{00C0}}% U+00C0 "Latin-1 Letters" in Latin-1 Supplement
+\message{\KC{Ā}{0100}}% U+0100 Latin Extended-A
+\message{\KC{ƀ}{0180}}% U+0180 Latin Extended-B
+\message{\KC{Ḁ}{1E00}}% U+1E00 Latin Extended Additional
+
+\message{kanji:}
+\message{\kc{⺀}{2E80}}% U+2E80 CJK Radicals Supplement
+\message{\kc{⼀}{2F00}}% U+2F00 Kangxi Radicals
+\message{\kc{⿰}{2FF0}}% U+2FF0 Ideographic Description Characters
+\message{\kc{ㄅ}{3105}}% U+3105 Bopomofo
+\message{\kc{㆐}{3190}}% U+3190 Kanbun
+\message{\kc{ㆠ}{31A0}}% U+31A0 Bopomofo Extended
+\message{\kc{㇀}{31C0}}% U+31C0 CJK Strokes
+\message{\kc{㐀}{3400}}% U+3400 CJK Unified Ideographs Extension A
+\message{\kc{一}{4E00}}% U+4E00 CJK Unified Ideographs
+\message{\kc{豈}{F900}}% U+F900 CJK Compatibility Ideographs
+\message{\kc{𠀀}{20000}}% U+20000 CJK Unified Ideographs Extension B
+\message{\kc{𪜀}{2A700}}% U+2A700 CJK Unified Ideographs Extension C
+\message{\kc{𫝀}{2B740}}% U+2B740 CJK Unified Ideographs Extension D
+\message{\kc{𫠠}{2B820}}% U+2B820 CJK Unified Ideographs Extension E
+\message{\kc{𬺰}{2CEB0}}% U+2CEB0 CJK Unified Ideographs Extension F
+\message{\kc{丽}{2F800}}% U+2F800 CJK Compatibility Ideographs Supplement
+
+\message{kana:}
+\message{\kc{あ}{3042}}% U+3042 Hiragana
+\message{\kc{ア}{30A2}}% U+30A2 Katakana
+\message{\kc{ㇰ}{31F0}}% U+31F0 Katakana Phonetic Extensions
+\message{\kc{𛀀}{1B000}}% U+1B000 Kana Supplement
+\message{\kc{𛄀}{1B100}}% U+1B100 Kana Extended-A
+\message{\kc{𛅐}{1B150}}% U+1B150 Small Kana Extension
+\message{\kc{0}{FF10}}% U+FF10 "Fullwidth ASCII variants" in Halfwidth and Fullwidth Forms
+\message{\kc{ヲ}{FF66}}% U+FF66 "Halfwidth Katakana variants" in Halfwidth and Fullwidth Forms
+
+\message{other kchar:}
+\message{\kc{§}{00A7}}% U+00A7 Latin-1 Supplement
+\message{\kc{@}{FF20}}% U+FF20 Halfwidth and Fullwidth Forms
+
+\message{hangul:}
+\message{\kc{ᄀ}{1100}}% U+1100 Hangul Jamo
+\message{\kc{ㄱ}{3131}}% U+3131 Hangul Compatibility Jamo
+\message{\kc{ꥠ}{A960}}% U+A960 Hangul Jamo Extended-A
+\message{\kc{가}{AC00}}% U+AC00 Hangul Syllables
+\message{\kc{ힰ}{D7B0}}% U+D7B0 Hangul Jamo Extended-B
+
+\message{others:}
+\message{\kco{0250}}% IPA Extensions
+\message{\kco{02B0}}% Spacing Modifier Letters
+\message{\kco{0300}}% Combining Diacritical Marks
+\message{\kco{0370}}% Greek and Coptic
+\message{\kco{0400}}% Cyrillic
+\message{\kco{0500}}% Cyrillic Supplement
+\message{\kco{0530}}% Armenian
+\message{\kco{0590}}% Hebrew
+\message{\kco{0600}}% Arabic
+\message{\kco{0700}}% Syriac
+\message{\kco{0750}}% Arabic Supplement
+\message{\kco{0780}}% Thaana
+\message{\kco{07C0}}% NKo
+\message{\kco{0800}}% Samaritan
+\message{\kco{0840}}% Mandaic
+\message{\kco{0860}}% Syriac Supplement
+\message{\kco{08A0}}% Arabic Extended-A
+\message{\kco{0900}}% Devanagari
+\message{\kco{0980}}% Bengali
+\message{\kco{0A00}}% Gurmukhi
+\message{\kco{0A80}}% Gujarati
+\message{\kco{0B00}}% Oriya
+\message{\kco{0B80}}% Tamil
+\message{\kco{0C00}}% Telugu
+\message{\kco{0C80}}% Kannada
+\message{\kco{0D00}}% Malayalam
+\message{\kco{0D80}}% Sinhala
+\message{\kco{0E00}}% Thai
+\message{\kco{0E80}}% Lao
+\message{\kco{0F00}}% Tibetan
+\message{\kco{1000}}% Myanmar
+\message{\kco{10A0}}% Georgian
+\message{\kco{1200}}% Ethiopic
+\message{\kco{1380}}% Ethiopic Supplement
+\message{\kco{13A0}}% Cherokee
+\message{\kco{1400}}% Unified Canadian Aboriginal Syllabics
+\message{\kco{1680}}% Ogham
+\message{\kco{16A0}}% Runic
+\message{\kco{1700}}% Tagalog
+\message{\kco{1720}}% Hanunoo
+\message{\kco{1740}}% Buhid
+\message{\kco{1760}}% Tagbanwa
+\message{\kco{1780}}% Khmer
+\message{\kco{1800}}% Mongolian
+\message{\kco{18B0}}% Unified Canadian Aboriginal Syllabics Extended
+\message{\kco{1900}}% Limbu
+\message{\kco{1950}}% Tai Le
+\message{\kco{1980}}% New Tai Lue
+\message{\kco{19E0}}% Khmer Symbols
+\message{\kco{1A00}}% Buginese
+\message{\kco{1A20}}% Tai Tham
+\message{\kco{1AB0}}% Combining Diacritical Marks Extended
+\message{\kco{1B00}}% Balinese
+\message{\kco{1B80}}% Sundanese
+\message{\kco{1BC0}}% Batak
+\message{\kco{1C00}}% Lepcha
+\message{\kco{1C50}}% Ol Chiki
+\message{\kco{1C80}}% Cyrillic Extended-C
+\message{\kco{1C90}}% Georgian Extended
+\message{\kco{1CC0}}% Sundanese Supplement
+\message{\kco{1CD0}}% Vedic Extensions
+\message{\kco{1D00}}% Phonetic Extensions
+\message{\kco{1D80}}% Phonetic Extensions Supplement
+\message{\kco{1DC0}}% Combining Diacritical Marks Supplement
+\message{\kco{1F00}}% Greek Extended
+\message{\kco{2000}}% General Punctuation
+\message{\kco{2070}}% Superscripts and Subscripts
+\message{\kco{20A0}}% Currency Symbols
+\message{\kco{20D0}}% Combining Diacritical Marks for Symbols
+\message{\kco{2100}}% Letterlike Symbols
+\message{\kco{2150}}% Number Forms
+\message{\kco{2190}}% Arrows
+\message{\kco{2200}}% Mathematical Operators
+\message{\kco{2300}}% Miscellaneous Technical
+\message{\kco{2400}}% Control Pictures
+\message{\kco{2440}}% Optical Character Recognition
+\message{\kco{2460}}% Enclosed Alphanumerics
+\message{\kco{2500}}% Box Drawing
+\message{\kco{2580}}% Block Elements
+\message{\kco{25A0}}% Geometric Shapes
+\message{\kco{2600}}% Miscellaneous Symbols
+\message{\kco{2700}}% Dingbats
+\message{\kco{27C0}}% Miscellaneous Mathematical Symbols-A
+\message{\kco{27F0}}% Supplemental Arrows-A
+\message{\kco{2800}}% Braille Patterns
+\message{\kco{2900}}% Supplemental Arrows-B
+\message{\kco{2980}}% Miscellaneous Mathematical Symbols-B
+\message{\kco{2A00}}% Supplemental Mathematical Operators
+\message{\kco{2B00}}% Miscellaneous Symbols and Arrows
+\message{\kco{2C00}}% Glagolitic
+\message{\kco{2C60}}% Latin Extended-C
+\message{\kco{2C80}}% Coptic
+\message{\kco{2D00}}% Georgian Supplement
+\message{\kco{2D30}}% Tifinagh
+\message{\kco{2D80}}% Ethiopic Extended
+\message{\kco{2DE0}}% Cyrillic Extended-A
+\message{\kco{2E00}}% Supplemental Punctuation
+\message{\kco{3000}}% CJK Symbols and Punctuation
+\message{\kco{3200}}% Enclosed CJK Letters and Months
+\message{\kco{3300}}% CJK Compatibility
+\message{\kco{4DC0}}% Yijing Hexagram Symbols
+\message{\kco{A000}}% Yi Syllables
+\message{\kco{A490}}% Yi Radicals
+\message{\kco{A4D0}}% Lisu
+\message{\kco{A500}}% Vai
+\message{\kco{A640}}% Cyrillic Extended-B
+\message{\kco{A6A0}}% Bamum
+\message{\kco{A700}}% Modifier Tone Letters
+\message{\kco{A720}}% Latin Extended-D
+\message{\kco{A800}}% Syloti Nagri
+\message{\kco{A830}}% Common Indic Number Forms
+\message{\kco{A840}}% Phags-pa
+\message{\kco{A880}}% Saurashtra
+\message{\kco{A8E0}}% Devanagari Extended
+\message{\kco{A900}}% Kayah Li
+\message{\kco{A930}}% Rejang
+\message{\kco{A980}}% Javanese
+\message{\kco{A9E0}}% Myanmar Extended-B
+\message{\kco{AA00}}% Cham
+\message{\kco{AA60}}% Myanmar Extended-A
+\message{\kco{AA80}}% Tai Viet
+\message{\kco{AAE0}}% Meetei Mayek Extensions
+\message{\kco{AB00}}% Ethiopic Extended-A
+\message{\kco{AB30}}% Latin Extended-E
+\message{\kco{AB70}}% Cherokee Supplement
+\message{\kco{ABC0}}% Meetei Mayek
+\message{\kco{D800}}% High Surrogates
+\message{\kco{DB80}}% High Private Use Surrogates
+\message{\kco{DC00}}% Low Surrogates
+\message{\kco{E000}}% Private Use Area
+\message{\kco{FB00}}% Alphabetic Presentation Forms
+\message{\kco{FB50}}% Arabic Presentation Forms-A
+\message{\kco{FE00}}% Variation Selectors
+\message{\kco{FE10}}% Vertical Forms
+\message{\kco{FE20}}% Combining Half Marks
+\message{\kco{FE30}}% CJK Compatibility Forms
+\message{\kco{FE50}}% Small Form Variants
+\message{\kco{FE70}}% Arabic Presentation Forms-B
+\message{\kco{FF00}}% Halfwidth and Fullwidth Forms
+\message{\kco{FFF0}}% Specials
+\message{\kco{10000}}% Linear B Syllabary
+\message{\kco{10080}}% Linear B Ideograms
+\message{\kco{10100}}% Aegean Numbers
+\message{\kco{10140}}% Ancient Greek Numbers
+\message{\kco{10190}}% Ancient Symbols
+\message{\kco{101D0}}% Phaistos Disc
+\message{\kco{10280}}% Lycian
+\message{\kco{102A0}}% Carian
+\message{\kco{102E0}}% Coptic Epact Numbers
+\message{\kco{10300}}% Old Italic
+\message{\kco{10330}}% Gothic
+\message{\kco{10350}}% Old Permic
+\message{\kco{10380}}% Ugaritic
+\message{\kco{103A0}}% Old Persian
+\message{\kco{10400}}% Deseret
+\message{\kco{10450}}% Shavian
+\message{\kco{10480}}% Osmanya
+\message{\kco{104B0}}% Osage
+\message{\kco{10500}}% Elbasan
+\message{\kco{10530}}% Caucasian Albanian
+\message{\kco{10600}}% Linear A
+\message{\kco{10800}}% Cypriot Syllabary
+\message{\kco{10840}}% Imperial Aramaic
+\message{\kco{10860}}% Palmyrene
+\message{\kco{10880}}% Nabataean
+\message{\kco{108E0}}% Hatran
+\message{\kco{10900}}% Phoenician
+\message{\kco{10920}}% Lydian
+\message{\kco{10980}}% Meroitic Hieroglyphs
+\message{\kco{109A0}}% Meroitic Cursive
+\message{\kco{10A00}}% Kharoshthi
+\message{\kco{10A60}}% Old South Arabian
+\message{\kco{10A80}}% Old North Arabian
+\message{\kco{10AC0}}% Manichaean
+\message{\kco{10B00}}% Avestan
+\message{\kco{10B40}}% Inscriptional Parthian
+\message{\kco{10B60}}% Inscriptional Pahlavi
+\message{\kco{10B80}}% Psalter Pahlavi
+\message{\kco{10C00}}% Old Turkic
+\message{\kco{10C80}}% Old Hungarian
+\message{\kco{10D00}}% Hanifi Rohingya
+\message{\kco{10E60}}% Rumi Numeral Symbols
+\message{\kco{10F00}}% Old Sogdian
+\message{\kco{10F30}}% Sogdian
+\message{\kco{10FE0}}% Elymaic
+\message{\kco{11000}}% Brahmi
+\message{\kco{11080}}% Kaithi
+\message{\kco{110D0}}% Sora Sompeng
+\message{\kco{11100}}% Chakma
+\message{\kco{11150}}% Mahajani
+\message{\kco{11180}}% Sharada
+\message{\kco{111E0}}% Sinhala Archaic Numbers
+\message{\kco{11200}}% Khojki
+\message{\kco{11280}}% Multani
+\message{\kco{112B0}}% Khudawadi
+\message{\kco{11300}}% Grantha
+\message{\kco{11400}}% Newa
+\message{\kco{11480}}% Tirhuta
+\message{\kco{11580}}% Siddham
+\message{\kco{11600}}% Modi
+\message{\kco{11660}}% Mongolian Supplement
+\message{\kco{11680}}% Takri
+\message{\kco{11700}}% Ahom
+\message{\kco{11800}}% Dogra
+\message{\kco{118A0}}% Warang Citi
+\message{\kco{119A0}}% Nandinagari
+\message{\kco{11A00}}% Zanabazar Square
+\message{\kco{11A50}}% Soyombo
+\message{\kco{11AC0}}% Pau Cin Hau
+\message{\kco{11C00}}% Bhaiksuki
+\message{\kco{11C70}}% Marchen
+\message{\kco{11D00}}% Masaram Gondi
+\message{\kco{11D60}}% Gunjala Gondi
+\message{\kco{11EE0}}% Makasar
+\message{\kco{11FC0}}% Tamil Supplement
+\message{\kco{12000}}% Cuneiform
+\message{\kco{12400}}% Cuneiform Numbers and Punctuation
+\message{\kco{12480}}% Early Dynastic Cuneiform
+\message{\kco{13000}}% Egyptian Hieroglyphs
+\message{\kco{13430}}% Egyptian Hieroglyph Format Controls
+\message{\kco{14400}}% Anatolian Hieroglyphs
+\message{\kco{16800}}% Bamum Supplement
+\message{\kco{16A40}}% Mro
+\message{\kco{16AD0}}% Bassa Vah
+\message{\kco{16B00}}% Pahawh Hmong
+\message{\kco{16E40}}% Medefaidrin
+\message{\kco{16F00}}% Miao
+\message{\kco{16FE0}}% Ideographic Symbols and Punctuation
+\message{\kco{17000}}% Tangut
+\message{\kco{18800}}% Tangut Components
+\message{\kco{1B170}}% Nushu
+\message{\kco{1BC00}}% Duployan
+\message{\kco{1BCA0}}% Shorthand Format Controls
+\message{\kco{1D000}}% Byzantine Musical Symbols
+\message{\kco{1D100}}% Musical Symbols
+\message{\kco{1D200}}% Ancient Greek Musical Notation
+\message{\kco{1D2E0}}% Mayan Numerals
+\message{\kco{1D300}}% Tai Xuan Jing Symbols
+\message{\kco{1D360}}% Counting Rod Numerals
+\message{\kco{1D400}}% Mathematical Alphanumeric Symbols
+\message{\kco{1D800}}% Sutton SignWriting
+\message{\kco{1E000}}% Glagolitic Supplement
+\message{\kco{1E100}}% Nyiakeng Puachue Hmong
+\message{\kco{1E2C0}}% Wancho
+\message{\kco{1E800}}% Mende Kikakui
+\message{\kco{1E900}}% Adlam
+\message{\kco{1EC70}}% Indic Siyaq Numbers
+\message{\kco{1ED00}}% Ottoman Siyaq Numbers
+\message{\kco{1EE00}}% Arabic Mathematical Alphabetic Symbols
+\message{\kco{1F000}}% Mahjong Tiles
+\message{\kco{1F030}}% Domino Tiles
+\message{\kco{1F0A0}}% Playing Cards
+\message{\kco{1F100}}% Enclosed Alphanumeric Supplement
+\message{\kco{1F200}}% Enclosed Ideographic Supplement
+\message{\kco{1F300}}% Miscellaneous Symbols and Pictographs
+\message{\kco{1F600}}% Emoticons
+\message{\kco{1F650}}% Ornamental Dingbats
+\message{\kco{1F680}}% Transport and Map Symbols
+\message{\kco{1F700}}% Alchemical Symbols
+\message{\kco{1F780}}% Geometric Shapes Extended
+\message{\kco{1F800}}% Supplemental Arrows-C
+\message{\kco{1F900}}% Supplemental Symbols and Pictographs
+\message{\kco{1FA00}}% Chess Symbols
+\message{\kco{1FA70}}% Symbols and Pictographs Extended-A
+\message{\kco{E0000}}% Tags
+\message{\kco{E0100}}% Variation Selectors Supplement
+\message{\kco{F0000}}% Supplementary Private Use Area-A
+\message{\kco{100000}}% Supplementary Private Use Area-B
+
+\end
diff --git a/language/japanese/uptex-base/samples/simple-euc.tex b/language/japanese/uptex-base/samples/simple-euc.tex
new file mode 100644
index 0000000000..585d5b0b6a
--- /dev/null
+++ b/language/japanese/uptex-base/samples/simple-euc.tex
@@ -0,0 +1,94 @@
+\documentclass{jarticle}
+\topmargin 0mm
+\textheight 230mm
+\begin{document}
+\section{󥳡ǥ󥰤Υƥ}
+\today Ǥ
+
+ΥեEUC-JPǥ󥳡ɤƤޤ
+
+\ifnum\jis"2121="A1A1
+ EUC%
+\else
+ SJIS%
+\fi
+Τ褦Ǥ
+
+\typeout{ΥեEUC-JPǥ󥳡ɤƤޤ}
+
+\section{}
+
+\kansuji 1234567890
+\quad\quad
+󻰻͸ϻȬ塻
+
+\char\kuten"104C\char\kuten"2653\char\kuten"1B10\char\kuten"1B2D\char\kuten"183E
+\char\kuten"2F1B\char\kuten"1C17\char\kuten"280C\char\kuten"1645\char\kuten"011B
+\quad\quad
+\char\jis"306C\char\jis"4673\char\jis"3B30\char\jis"3B4D\char\jis"385E
+\char\jis"4F3B\char\jis"3C37\char\jis"482C\char\jis"3665\char\jis"213B
+
+\char\euc"B0EC\char\euc"C6F3\char\euc"BBB0\char\euc"BBCD\char\euc"B8DE
+\char\euc"CFBB\char\euc"BCB7\char\euc"C8AC\char\euc"B6E5\char\euc"A1BB
+\quad\quad
+\char\sjis"88EA\char\sjis"93F1\char\sjis"8E4F\char\sjis"8E6C\char\sjis"8CDC
+\char\sjis"985A\char\sjis"8EB5\char\sjis"94AA\char\sjis"8BE3\char\sjis"815A
+
+\makeatletter
+\ifx\ucs\@undefined
+\else
+ \char\ucs"4E00\char\ucs"4E8C\char\ucs"4E09\char\ucs"56DB\char\ucs"4E94
+ \char\ucs"516D\char\ucs"4E03\char\ucs"516B\char\ucs"4E5D\char\ucs"3007
+\fi
+\makeatother
+
+\kansujichar1=`
+\kansujichar2=`
+\kansujichar3=`
+\kansujichar4=`
+\kansujichar5=`
+\kansuji 12345
+
+\section{uppercase, lowercase}
+
+abc, ABC, $E=mc^2$; 012. 󻰡
+
+\uppercase{abc, ABC, $E=mc^2$; 012. 󻰡}
+
+\lowercase{abc, ABC, $E=mc^2$; 012. 󻰡}
+
+\section{dvi2ttyβ}
+\parindent 0mm
+
+123456789012345678901234567890123456789012345678901234567890\\
+a123456789012345678901234567890123456789012345678901234567890\\
+ab123456789012345678901234567890123456789012345678901234567890\\
+abc123456789012345678901234567890123456789012345678901234567890\\
+
+¦æĦŦƦǦȦɦʦ¦æĦŦƦǦȦɦʦ¦æĦŦƦǦȦɦ\\
+a¦æĦŦƦǦȦɦʦ¦æĦŦƦǦȦɦʦ¦æĦŦƦǦȦɦ\\
+ab¦æĦŦƦǦȦɦʦ¦æĦŦƦǦȦɦʦ¦æĦŦƦǦȦɦ\\
+abc¦æĦŦƦǦȦɦʦ¦æĦŦƦǦȦɦʦ¦æĦŦƦǦȦɦ\\
+
+󻰻͸ϻȬ塻󻰻͸ϻȬ塻󻰻͸ϻȬ塻\\
+a󻰻͸ϻȬ塻󻰻͸ϻȬ塻󻰻͸ϻȬ塻\\
+ab󻰻͸ϻȬ塻󻰻͸ϻȬ塻󻰻͸ϻȬ塻\\
+abc󻰻͸ϻȬ塻󻰻͸ϻȬ塻󻰻͸ϻȬ塻\\
+
+\begin{flushleft}
+left left\\
+
+\end{flushleft}
+
+\begin{center}
+center center\\
+
+\end{center}
+
+\begin{flushright}
+right right\\
+
+\end{flushright}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/simple-jis.tex b/language/japanese/uptex-base/samples/simple-jis.tex
new file mode 100644
index 0000000000..bfacafc7a4
--- /dev/null
+++ b/language/japanese/uptex-base/samples/simple-jis.tex
@@ -0,0 +1,94 @@
+\documentclass{jarticle}
+\topmargin 0mm
+\textheight 230mm
+\begin{document}
+\section{$B%(%s%3!<%G%#%s%0$N%F%9%H(B}
+$B:#F|$O(B\today $B$G$9!#(B
+
+$B$3$N%U%!%$%k$O(BISO-2022-JP$B$G%(%s%3!<%I$5$l$F$$$^$9!#(B
+
+$BFbIt%3!<%I$O(B
+\ifnum\jis"2121="A1A1
+ EUC%
+\else
+ SJIS%
+\fi
+$B$N$h$&$G$9!#(B
+
+\typeout{$B$3$N%U%!%$%k$O(BISO-2022-JP$B$G%(%s%3!<%I$5$l$F$$$^$9!#(B}
+
+\section{$B4A?t;z(B}
+
+\kansuji 1234567890
+\quad\quad
+$B0lFs;0;M8^O;<7H,6e!;(B
+
+\char\kuten"104C\char\kuten"2653\char\kuten"1B10\char\kuten"1B2D\char\kuten"183E
+\char\kuten"2F1B\char\kuten"1C17\char\kuten"280C\char\kuten"1645\char\kuten"011B
+\quad\quad
+\char\jis"306C\char\jis"4673\char\jis"3B30\char\jis"3B4D\char\jis"385E
+\char\jis"4F3B\char\jis"3C37\char\jis"482C\char\jis"3665\char\jis"213B
+
+\char\euc"B0EC\char\euc"C6F3\char\euc"BBB0\char\euc"BBCD\char\euc"B8DE
+\char\euc"CFBB\char\euc"BCB7\char\euc"C8AC\char\euc"B6E5\char\euc"A1BB
+\quad\quad
+\char\sjis"88EA\char\sjis"93F1\char\sjis"8E4F\char\sjis"8E6C\char\sjis"8CDC
+\char\sjis"985A\char\sjis"8EB5\char\sjis"94AA\char\sjis"8BE3\char\sjis"815A
+
+\makeatletter
+\ifx\ucs\@undefined
+\else
+ \char\ucs"4E00\char\ucs"4E8C\char\ucs"4E09\char\ucs"56DB\char\ucs"4E94
+ \char\ucs"516D\char\ucs"4E03\char\ucs"516B\char\ucs"4E5D\char\ucs"3007
+\fi
+\makeatother
+
+\kansujichar1=`$BTe(B
+\kansujichar2=`$BFu(B
+\kansujichar3=`$BRT(B
+\kansujichar4=`$Bfh(B
+\kansujichar5=`$B8`(B
+\kansuji 12345
+
+\section{uppercase, lowercase}
+
+abc, ABC, $E=mc^2$; 012. $B$"$$$&!"0lFs;0!#(B
+
+\uppercase{abc, ABC, $E=mc^2$; 012. $B$"$$$&!"0lFs;0!#(B}
+
+\lowercase{abc, ABC, $E=mc^2$; 012. $B$"$$$&!"0lFs;0!#(B}
+
+\section{dvi2tty$B$N2~9T(B}
+\parindent 0mm
+
+123456789012345678901234567890123456789012345678901234567890\\
+a123456789012345678901234567890123456789012345678901234567890\\
+ab123456789012345678901234567890123456789012345678901234567890\\
+abc123456789012345678901234567890123456789012345678901234567890\\
+
+$B&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J(B\\
+a$B&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J(B\\
+ab$B&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J(B\\
+abc$B&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J(B\\
+
+$B0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B\\
+a$B0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B\\
+ab$B0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B\\
+abc$B0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B\\
+
+\begin{flushleft}
+left left\\
+$B:8:8:8(B
+\end{flushleft}
+
+\begin{center}
+center center\\
+$BCfCfCf(B
+\end{center}
+
+\begin{flushright}
+right right\\
+$B1&1&1&(B
+\end{flushright}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/simple-sjis.tex b/language/japanese/uptex-base/samples/simple-sjis.tex
new file mode 100644
index 0000000000..da97dd52ad
--- /dev/null
+++ b/language/japanese/uptex-base/samples/simple-sjis.tex
@@ -0,0 +1,94 @@
+\documentclass{jarticle}
+\topmargin 0mm
+\textheight 230mm
+\begin{document}
+\section{GR[fBÕeXg}
+\today łB
+
+̃t@CShift\_JISŃGR[hĂ܂B
+
+R[h
+\ifnum\jis"2121="A1A1
+ EUC%
+\else
+ SJIS%
+\fi
+̂悤łB
+
+\typeout{̃t@CShift_JISŃGR[hĂ܂B}
+
+\section{}
+
+\kansuji 1234567890
+\quad\quad
+OlܘZZ
+
+\char\kuten"104C\char\kuten"2653\char\kuten"1B10\char\kuten"1B2D\char\kuten"183E
+\char\kuten"2F1B\char\kuten"1C17\char\kuten"280C\char\kuten"1645\char\kuten"011B
+\quad\quad
+\char\jis"306C\char\jis"4673\char\jis"3B30\char\jis"3B4D\char\jis"385E
+\char\jis"4F3B\char\jis"3C37\char\jis"482C\char\jis"3665\char\jis"213B
+
+\char\euc"B0EC\char\euc"C6F3\char\euc"BBB0\char\euc"BBCD\char\euc"B8DE
+\char\euc"CFBB\char\euc"BCB7\char\euc"C8AC\char\euc"B6E5\char\euc"A1BB
+\quad\quad
+\char\sjis"88EA\char\sjis"93F1\char\sjis"8E4F\char\sjis"8E6C\char\sjis"8CDC
+\char\sjis"985A\char\sjis"8EB5\char\sjis"94AA\char\sjis"8BE3\char\sjis"815A
+
+\makeatletter
+\ifx\ucs\@undefined
+\else
+ \char\ucs"4E00\char\ucs"4E8C\char\ucs"4E09\char\ucs"56DB\char\ucs"4E94
+ \char\ucs"516D\char\ucs"4E03\char\ucs"516B\char\ucs"4E5D\char\ucs"3007
+\fi
+\makeatother
+
+\kansujichar1=`
+\kansujichar2=`
+\kansujichar3=`
+\kansujichar4=`
+\kansujichar5=`
+\kansuji 12345
+
+\section{uppercase, lowercase}
+
+abc, ABC, $E=mc^2$; 012. AOB
+
+\uppercase{abc, ABC, $E=mc^2$; 012. AOB}
+
+\lowercase{abc, ABC, $E=mc^2$; 012. AOB}
+
+\section{dvi2ttỷs}
+\parindent 0mm
+
+123456789012345678901234567890123456789012345678901234567890\\
+a123456789012345678901234567890123456789012345678901234567890\\
+ab123456789012345678901234567890123456789012345678901234567890\\
+abc123456789012345678901234567890123456789012345678901234567890\\
+
+ƒÃăŃƃǃȃƒÃăŃƃǃȃƒÃăŃƃǃ\\
+aƒÃăŃƃǃȃƒÃăŃƃǃȃƒÃăŃƃǃ\\
+abƒÃăŃƃǃȃƒÃăŃƃǃȃƒÃăŃƃǃ\\
+abcƒÃăŃƃǃȃƒÃăŃƃǃȃƒÃăŃƃǃ\\
+
+OlܘZZOlܘZZOlܘZZ\\
+aOlܘZZOlܘZZOlܘZZ\\
+abOlܘZZOlܘZZOlܘZZ\\
+abcOlܘZZOlܘZZOlܘZZ\\
+
+\begin{flushleft}
+left left\\
+
+\end{flushleft}
+
+\begin{center}
+center center\\
+
+\end{center}
+
+\begin{flushright}
+right right\\
+EEE
+\end{flushright}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/simple-u-jis.tex b/language/japanese/uptex-base/samples/simple-u-jis.tex
new file mode 100644
index 0000000000..e472920e94
--- /dev/null
+++ b/language/japanese/uptex-base/samples/simple-u-jis.tex
@@ -0,0 +1,87 @@
+\documentclass{ujarticle}
+\topmargin 0mm
+\textheight 230mm
+\begin{document}
+\section{$B%(%s%3!<%G%#%s%0$N%F%9%H(B}
+$B$3$N%U%!%$%k$O(BISO-2022-JP$B$G%(%s%3!<%I$5$l$F$$$^$9!#(B
+
+$BFbIt%3!<%I$O(B
+\ifnum\jis"2121="3000
+ UTF32$B2~(B(uptex)%
+\else
+ ????%
+\fi
+$B$N$h$&$G$9!#(B
+
+\typeout{$B$3$N%U%!%$%k$O(BISO-2022-JP$B$G%(%s%3!<%I$5$l$F$$$^$9!#(B}
+
+\section{$B4A?t;z(B}
+
+\kansuji 1234567890
+\quad\quad
+$B0lFs;0;M8^O;<7H,6e!;(B
+
+\char\kuten"104C\char\kuten"2653\char\kuten"1B10\char\kuten"1B2D\char\kuten"183E
+\char\kuten"2F1B\char\kuten"1C17\char\kuten"280C\char\kuten"1645\char\kuten"011B
+\quad\quad
+\char\jis"306C\char\jis"4673\char\jis"3B30\char\jis"3B4D\char\jis"385E
+\char\jis"4F3B\char\jis"3C37\char\jis"482C\char\jis"3665\char\jis"213B
+
+\char\euc"B0EC\char\euc"C6F3\char\euc"BBB0\char\euc"BBCD\char\euc"B8DE
+\char\euc"CFBB\char\euc"BCB7\char\euc"C8AC\char\euc"B6E5\char\euc"A1BB
+\quad\quad
+\char\sjis"88EA\char\sjis"93F1\char\sjis"8E4F\char\sjis"8E6C\char\sjis"8CDC
+\char\sjis"985A\char\sjis"8EB5\char\sjis"94AA\char\sjis"8BE3\char\sjis"815A
+
+\char\ucs"4E00\char\ucs"4E8C\char\ucs"4E09\char\ucs"56DB\char\ucs"4E94
+\char\ucs"516D\char\ucs"4E03\char\ucs"516B\char\ucs"4E5D\char\ucs"3007
+
+\kansujichar1=`$BTe(B
+\kansujichar2=`$BFu(B
+\kansujichar3=`$BRT(B
+\kansujichar4=`$Bfh(B
+\kansujichar5=`$B8`(B
+\kansuji 12345
+
+\section{uppercase, lowercase}
+
+abc, ABC, $E=mc^2$; 012. $B$"$$$&!"0lFs;0!#(B
+
+\uppercase{abc, ABC, $E=mc^2$; 012. $B$"$$$&!"0lFs;0!#(B}
+
+\lowercase{abc, ABC, $E=mc^2$; 012. $B$"$$$&!"0lFs;0!#(B}
+
+\section{dvi2tty$B$N2~9T(B}
+\parindent 0mm
+
+123456789012345678901234567890123456789012345678901234567890\\
+a123456789012345678901234567890123456789012345678901234567890\\
+ab123456789012345678901234567890123456789012345678901234567890\\
+abc123456789012345678901234567890123456789012345678901234567890\\
+
+$B&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J(B\\
+a$B&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J(B\\
+ab$B&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J(B\\
+abc$B&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J&A&B&C&D&E&F&G&H&I&J(B\\
+
+$B0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B\\
+a$B0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B\\
+ab$B0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B\\
+abc$B0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;0lFs;0;M8^O;<7H,6e!;(B\\
+
+\begin{flushleft}
+left left\\
+$B:8:8:8(B
+\end{flushleft}
+
+\begin{center}
+center center\\
+$BCfCfCf(B
+\end{center}
+
+\begin{flushright}
+right right\\
+$B1&1&1&(B
+\end{flushright}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/simple-u-utf8.tex b/language/japanese/uptex-base/samples/simple-u-utf8.tex
new file mode 100644
index 0000000000..de35011d73
--- /dev/null
+++ b/language/japanese/uptex-base/samples/simple-u-utf8.tex
@@ -0,0 +1,92 @@
+\documentclass{ujarticle}
+\topmargin 0mm
+\textheight 230mm
+\begin{document}
+\section{エンコーディングのテスト}
+このファイルはUTF8でエンコードされています。
+
+内部コードは
+\ifnum\jis"2121="3000
+ UTF32改(uptex)%
+\else
+ ????%
+\fi
+のようです。
+
+\typeout{このファイルはUTF-8でエンコードされています。}
+
+\section{漢数字}
+
+\kansuji 1234567890
+\quad\quad
+一二三四五六七八九〇
+
+\char\kuten"104C\char\kuten"2653\char\kuten"1B10\char\kuten"1B2D\char\kuten"183E
+\char\kuten"2F1B\char\kuten"1C17\char\kuten"280C\char\kuten"1645\char\kuten"011B
+\quad\quad
+\char\jis"306C\char\jis"4673\char\jis"3B30\char\jis"3B4D\char\jis"385E
+\char\jis"4F3B\char\jis"3C37\char\jis"482C\char\jis"3665\char\jis"213B
+
+\char\euc"B0EC\char\euc"C6F3\char\euc"BBB0\char\euc"BBCD\char\euc"B8DE
+\char\euc"CFBB\char\euc"BCB7\char\euc"C8AC\char\euc"B6E5\char\euc"A1BB
+\quad\quad
+\char\sjis"88EA\char\sjis"93F1\char\sjis"8E4F\char\sjis"8E6C\char\sjis"8CDC
+\char\sjis"985A\char\sjis"8EB5\char\sjis"94AA\char\sjis"8BE3\char\sjis"815A
+
+\char\ucs"4E00\char\ucs"4E8C\char\ucs"4E09\char\ucs"56DB\char\ucs"4E94
+\char\ucs"516D\char\ucs"4E03\char\ucs"516B\char\ucs"4E5D\char\ucs"3007
+
+\kansujichar1=`壹
+\kansujichar2=`弐
+\kansujichar3=`參
+\kansujichar4=`肆
+\kansujichar5=`伍
+\kansuji 12345
+
+\section{uppercase, lowercase}
+
+abc, ABC, $E=mc^2$; 012. あいう、一二三。
+
+\uppercase{abc, ABC, $E=mc^2$; 012. あいう、一二三。}
+
+\lowercase{abc, ABC, $E=mc^2$; 012. あいう、一二三。}
+
+\section{dvi2ttyの改行}
+\parindent 0mm
+
+123456789012345678901234567890123456789012345678901234567890\\
+a123456789012345678901234567890123456789012345678901234567890\\
+ab123456789012345678901234567890123456789012345678901234567890\\
+abc123456789012345678901234567890123456789012345678901234567890\\
+
+αβγδεζηθικαβγδεζηθικαβγδεζηθικ\\
+aαβγδεζηθικαβγδεζηθικαβγδεζηθικ\\
+abαβγδεζηθικαβγδεζηθικαβγδεζηθικ\\
+abcαβγδεζηθικαβγδεζηθικαβγδεζηθικ\\
+
+一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇\\
+a一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇\\
+ab一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇\\
+abc一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇\\
+
+𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹\\
+a𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹\\
+ab𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹\\
+abc𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹𠂉𠀋𠂢𠂤𠆢𠈓𠌫𠎁𠍱𠏹\\
+
+\begin{flushleft}
+left left\\
+左左左
+\end{flushleft}
+
+\begin{center}
+center center\\
+中中中
+\end{center}
+
+\begin{flushright}
+right right\\
+右右右
+\end{flushright}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/simple-utf8.tex b/language/japanese/uptex-base/samples/simple-utf8.tex
new file mode 100644
index 0000000000..c238744d64
--- /dev/null
+++ b/language/japanese/uptex-base/samples/simple-utf8.tex
@@ -0,0 +1,94 @@
+\documentclass{jarticle}
+\topmargin 0mm
+\textheight 230mm
+\begin{document}
+\section{エンコーディングのテスト}
+今日は\today です。
+
+このファイルはUTF-8でエンコードされています。
+
+内部コードは
+\ifnum\jis"2121="A1A1
+ EUC%
+\else
+ SJIS%
+\fi
+のようです。
+
+\typeout{このファイルはUTF-8でエンコードされています。}
+
+\section{漢数字}
+
+\kansuji 1234567890
+\quad\quad
+一二三四五六七八九〇
+
+\char\kuten"104C\char\kuten"2653\char\kuten"1B10\char\kuten"1B2D\char\kuten"183E
+\char\kuten"2F1B\char\kuten"1C17\char\kuten"280C\char\kuten"1645\char\kuten"011B
+\quad\quad
+\char\jis"306C\char\jis"4673\char\jis"3B30\char\jis"3B4D\char\jis"385E
+\char\jis"4F3B\char\jis"3C37\char\jis"482C\char\jis"3665\char\jis"213B
+
+\char\euc"B0EC\char\euc"C6F3\char\euc"BBB0\char\euc"BBCD\char\euc"B8DE
+\char\euc"CFBB\char\euc"BCB7\char\euc"C8AC\char\euc"B6E5\char\euc"A1BB
+\quad\quad
+\char\sjis"88EA\char\sjis"93F1\char\sjis"8E4F\char\sjis"8E6C\char\sjis"8CDC
+\char\sjis"985A\char\sjis"8EB5\char\sjis"94AA\char\sjis"8BE3\char\sjis"815A
+
+\makeatletter
+\ifx\ucs\@undefined
+\else
+ \char\ucs"4E00\char\ucs"4E8C\char\ucs"4E09\char\ucs"56DB\char\ucs"4E94
+ \char\ucs"516D\char\ucs"4E03\char\ucs"516B\char\ucs"4E5D\char\ucs"3007
+\fi
+\makeatother
+
+\kansujichar1=`壹
+\kansujichar2=`弐
+\kansujichar3=`參
+\kansujichar4=`肆
+\kansujichar5=`伍
+\kansuji 12345
+
+\section{uppercase, lowercase}
+
+abc, ABC, $E=mc^2$; 012. あいう、一二三。
+
+\uppercase{abc, ABC, $E=mc^2$; 012. あいう、一二三。}
+
+\lowercase{abc, ABC, $E=mc^2$; 012. あいう、一二三。}
+
+\section{dvi2ttyの改行}
+\parindent 0mm
+
+123456789012345678901234567890123456789012345678901234567890\\
+a123456789012345678901234567890123456789012345678901234567890\\
+ab123456789012345678901234567890123456789012345678901234567890\\
+abc123456789012345678901234567890123456789012345678901234567890\\
+
+αβγδεζηθικαβγδεζηθικαβγδεζηθικ\\
+aαβγδεζηθικαβγδεζηθικαβγδεζηθικ\\
+abαβγδεζηθικαβγδεζηθικαβγδεζηθικ\\
+abcαβγδεζηθικαβγδεζηθικαβγδεζηθικ\\
+
+一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇\\
+a一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇\\
+ab一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇\\
+abc一二三四五六七八九〇一二三四五六七八九〇一二三四五六七八九〇\\
+
+\begin{flushleft}
+left left\\
+左左左
+\end{flushleft}
+
+\begin{center}
+center center\\
+中中中
+\end{center}
+
+\begin{flushright}
+right right\\
+右右右
+\end{flushright}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/testrun.bat b/language/japanese/uptex-base/samples/testrun.bat
new file mode 100755
index 0000000000..ca3d43f07a
--- /dev/null
+++ b/language/japanese/uptex-base/samples/testrun.bat
@@ -0,0 +1,135 @@
+del *.dvi *.aux *.log *.ps *.pdf *.1 *.mpx
+
+rem misc
+for %%f in (misc set3) ^
+do ( ^
+uplatex %%f-check-utf8 && ^
+uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-utf8.tex && ^
+uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-utf8.tex && ^
+updvitype -kanji=uptex %%f-check-utf8.dvi > %%f-check-utf8.pdvitype && ^
+updvipdfmx %%f-check-utf8 && ^
+uplatex "\def\withhyperref{dvips}\input" %%f-check-utf8.tex && ^
+updvips %%f-check-utf8 && ^
+uplatex %%f-check-utf8 )
+for %%f in (misc) ^
+do ( ^
+uplatex %%f-check-v-utf8 && ^
+uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-v-utf8.tex && ^
+uplatex "\def\withhyperref{dvipdfmx}\input" %%f-check-v-utf8.tex && ^
+updvitype -kanji=uptex %%f-check-v-utf8.dvi > %%f-check-v-utf8.pdvitype && ^
+updvipdfmx -l %%f-check-v-utf8 && ^
+uplatex "\def\withhyperref{dvips}\input" %%f-check-v-utf8.tex && ^
+updvips -t landscape %%f-check-v-utf8 && ^
+uplatex %%f-check-v-utf8 )
+
+rem kinsoku
+uplatex kinsoku-chk-utf8
+dvipdfmx kinsoku-chk-utf8
+updvips kinsoku-chk-utf8
+
+rem widow
+platex widow
+move widow.dvi widow-platex.dvi
+dvipdfmx widow-platex.dvi
+uplatex widow
+move widow.dvi widow-u-uptex.dvi
+dvipdfmx widow-u-uptex.dvi
+
+rem uptex
+uptex sangoku-uptex
+dvipdfmx sangoku-uptex
+updvips sangoku-uptex
+
+rem uplatex
+uplatex sangoku-uplatex
+dvipdfmx sangoku-uplatex
+updvips sangoku-uplatex
+
+rem aozora
+for %%c in (ujarticle ujreport ujbook utarticle utreport utbook) ^
+do ( ^
+uplatex aozora-%%c-utf8 && ^
+dvipdfmx aozora-%%c-utf8 && ^
+updvips aozora-%%c-utf8 )
+
+rem adobe
+for %%c in (jp kr gb cns) ^
+do ( ^
+uptex adobe-%%c-utf8 && ^
+updvipdfmx adobe-%%c-utf8 && ^
+updvips adobe-%%c-utf8 )
+
+rem jbib
+uplatex jbib2-utf8.tex
+upjbibtex -kanji=uptex --kanji-internal=uptex jbib2-utf8
+uplatex jbib2-utf8.tex
+uplatex jbib2-utf8.tex
+
+rem jmpost
+for %%f in (area jstr) ^
+do ( ^
+upjmpost -kanji=uptex -tex=uplatex %%f-uptex.mp && ^
+uplatex %%f-uptex-incl.tex && ^
+updvips %%f-uptex-incl.dvi && ^
+updvipdfmx %%f-uptex-incl.dvi )
+
+rem updvi2tty
+platex -kanji=jis simple-jis.tex
+move simple-jis.dvi simple-jis-platex.dvi
+for %%f in (j e s u) ^
+do ( ^
+updvi2tty -w 62 -o simple-jis-platex-%%f.dvi2tty -E %%f simple-jis-platex.dvi )
+uplatex simple-u-jis.tex
+move simple-u-jis.dvi simple-u-jis-uptex.dvi
+for %%f in (j e s u) ^
+do ( ^
+updvi2tty -w 62 -o simple-u-jis-uptex-%%f.dvi2tty -E %%f simple-u-jis-uptex.dvi )
+
+
+rem
+rem following samples require the utf package
+rem
+
+rem utf
+uplatex utfsmpl-uplatex
+updvipdfmx utfsmpl-uplatex
+updvips utfsmpl-uplatex
+
+rem
+rem following samples require the otf package
+rem
+
+rem otf
+uplatex otfsmpl-uplatex
+updvipdfmx otfsmpl-uplatex
+updvips otfsmpl-uplatex
+
+rem adobe
+for %%c in (jp kr gb cns) ^
+do ( ^
+uplatex "\def\adobe{%%c}\input" adobe-cid && ^
+move adobe-cid.dvi adobe-%%c-mc-cid.dvi && ^
+updvipdfmx adobe-%%c-mc-cid && ^
+updvips adobe-%%c-mc-cid )
+for %%c in (jp kr cns) ^
+do ( ^
+uplatex "\def\adobe{%%c}\def\family{gt}\input" adobe-cid && ^
+move adobe-cid.dvi adobe-%%c-gt-cid.dvi && ^
+updvipdfmx adobe-%%c-gt-cid && ^
+updvips adobe-%%c-gt-cid )
+
+rem uotftest
+for %%o in (default deluxe expert bold noreplace) ^
+do ( ^
+uplatex "\def\option{%%o}\def\class{ujarticle}\input" uotftest-utf8.tex && ^
+move uotftest-utf8.dvi uotftest-%%o-h-uplatex.dvi && ^
+updvipdfmx uotftest-%%o-h-uplatex.dvi && ^
+uplatex "\def\option{%%o}\def\class{utarticle}\input" uotftest-utf8.tex && ^
+move uotftest-utf8.dvi uotftest-%%o-v-uplatex.dvi && ^
+updvipdfmx uotftest-%%o-v-uplatex.dvi && ^
+platex "\def\option{%%o}\def\class{jarticle}\input" uotftest.tex && ^
+move uotftest.dvi uotftest-%%o-h-platex.dvi && ^
+dvipdfmx uotftest-%%o-h-platex.dvi && ^
+platex "\def\option{%%o}\def\class{tarticle}\input" uotftest.tex && ^
+move uotftest.dvi uotftest-%%o-v-platex.dvi && ^
+dvipdfmx uotftest-%%o-v-platex.dvi )
diff --git a/language/japanese/uptex-base/samples/texxet-jis.tex b/language/japanese/uptex-base/samples/texxet-jis.tex
new file mode 100644
index 0000000000..d76dc154e4
--- /dev/null
+++ b/language/japanese/uptex-base/samples/texxet-jis.tex
@@ -0,0 +1,37 @@
+% For eplatex or euplatex
+
+% autodetect kanji-internal code
+\ifnum\jis"2121="3000
+% euplatex
+\documentclass{ujarticle}
+\def\pLaTeXorupLaTeX{$\epsilon$-up\LaTeX}
+\else
+% eplatex
+\documentclass{jarticle}
+\def\pLaTeXorupLaTeX{$\epsilon$-p\LaTeX}
+\fi
+
+\DeclareFontShape{OT1}{cmr}{bxrev}{n}{<-> xbmc10}{} % for right-to-left text
+\DeclareTextFontCommand{\revrm}{\fontseries{bxrev}\fontshape{n}\selectfont}
+\def\TeXXeT{\TeX-\revrm{\TeXXeTstate=1\beginR\TeX-\endR}}
+
+\begin{document}
+
+\section{\TeXXeT $B$N%F%9%H(B}
+\pLaTeXorupLaTeX $B$G%F%9%H$7$F$$$^$9!#(B
+
+\parindent0mm
+
+``Yes, we can.'' offline enilffo shuffle elffuhs file elif
+
+\TeXXeTstate=1\beginR
+``Yes, we can.'' offline enilffo shuffle elffuhs file elif
+\endR
+
+$B%b!<%K%s%0L<!#(B $BK\EDH~F`;R!%(B $B$H$i$d(B
+
+\TeXXeTstate=1\beginR
+$B%b!<%K%s%0L<!#(B $BK\EDH~F`;R!%(B $B$H$i$d(B
+\endR
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/umin10x.tfm b/language/japanese/uptex-base/samples/umin10x.tfm
new file mode 100644
index 0000000000..5a5ad9c4ef
--- /dev/null
+++ b/language/japanese/uptex-base/samples/umin10x.tfm
Binary files differ
diff --git a/language/japanese/uptex-base/samples/utfsmpl-uplatex.tex b/language/japanese/uptex-base/samples/utfsmpl-uplatex.tex
new file mode 100644
index 0000000000..6c55b7a84d
--- /dev/null
+++ b/language/japanese/uptex-base/samples/utfsmpl-uplatex.tex
@@ -0,0 +1,96 @@
+\documentclass{ujarticle}
+\textwidth170mm
+\textheight240mm
+\oddsidemargin0mm
+\topmargin-10mm
+\usepackage[uplatex]{utf}
+%\usepackage[uplatex,noreplace]{otf}
+%\usepackage[uplatex]{otf}% upTeX-0.24以降では、noreplaceなしで動くようになった。
+\pagestyle{empty}
+\parindent=0zw
+\begin{document}
+\Large
+森\UTF{9DD7}外\textbf{森\UTF{9DD7}外}%
+森\CID{7646}外\textbf{森\CID{7646}外}\\%
+森鷗外\textbf{森鷗外}森\char"9DD7外\textbf{森\char"9DD7外}%
+森\kchar"9DD7外\textbf{森\kchar"9DD7外}
+
+内田百\UTF{9592}\textbf{内田百\UTF{9592}}%
+内田百\CID{8685}\textbf{内田百\CID{8685}}\\%
+内田百閒\textbf{内田百閒}内田百\char"9592\textbf{内田百\char"9592}%
+内田百\kchar"9592\textbf{内田百\kchar"9592}
+
+\UTF{9ad9}橋さん\textbf{\UTF{9ad9}橋さん}%
+\CID{8705}橋さん\textbf{\CID{8705}橋さん}\\%
+髙橋さん\textbf{髙橋さん}\char"9AD9橋さん\textbf{\char"9AD9橋さん}%
+\kchar"9AD9橋さん\textbf{\kchar"9AD9橋さん}
+
+鼻濁音「\CID{16382}」とか\textbf{「\CID{13706}野家」}とかも出せます。
+% set3対応フォント+dviwareなら、「𠮷野家」もUTF-8で直接書ける。
+%\textbf{𠮷野家\char"20BB7野家\kchar"20BB7野家}
+
+\CID{239}\CID{331}∀\CID{331}\CID{240}\CID{344}\CID{344}~~
+\CID{239}\CID{326}\CID{389}Д\CID{389}\CID{240}\CID{373}\CID{355}\CID{388}\CID{342}
+
+\CID{239}・∀・\CID{240}イイ~~
+\CID{239}\CID{326}゚Д゚\CID{240}マズー
+
+(・∀・)イイ~~
+(~゚Д゚)マズー
+
+アイウエオ\raisebox{-.12zh}{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}~~
+アイウエオ\raisebox{-.12zh}{\frame{ア}\frame{イ}\frame{ウ}\frame{エ}\frame{オ}}
+
+\vskip2zh
+\edef\bs{$\backslash$\kern0em}
+\begin{tabular}{c|ccc|cc|l}
+ & \multicolumn{3}{|c}{upTeX} & \multicolumn{2}{|c|}{UTF/OTF} & \\
+UCS & UTF-8 & \bs char & \bs kchar & \bs UTF & \bs CID & 備考 \\\hline
+U+9D0E & 鴎 & \char"9D0E & \kchar"9D0E & \UTF{9D0E} & \CID{1322} & メ鴎 \\
+U+9DD7 & 鷗 & \char"9DD7 & \kchar"9D0E & \UTF{9DD7} & \CID{7646} & 品鴎 \\
+U+9593 & 間 & \char"9593 & \kchar"9593 & \UTF{9593} & \CID{1554} & 日間 \\
+U+9592 & 閒 & \char"9592 & \kchar"9592 & \UTF{9592} & \CID{8685} & 月間 \\
+U+9AD8 & 高 & \char"9AD8 & \kchar"9AD8 & \UTF{9AD8} & \CID{2036} & 口高 \\
+U+9AD9 & 髙 & \char"9AD9 & \kchar"9AD9 & \UTF{9AD9} & \CID{8705} & 梯子高 \\
+%U+5409 & 吉 & \char"5409 & \kchar"5409 & \UTF{5409} & \CID{1634} & 士吉 \\
+%U+20BB7 & 𠮷 & \char"20BB7 & \kchar"20BB7 & --- & \CID{13706} & 土吉 \\
+\end{tabular}
+
+\vskip2zh
+\ajMaru{1}\ajMaru{2}\ajMaru{3}%
+\ajKuroMaru{1}\ajKuroMaru{2}\ajKuroMaru{3}%
+\ajKaku{1}\ajKaku{2}\ajKaku{3}%
+\ajKuroKaku{1}\ajKuroKaku{2}\ajKuroKaku{3}%
+\ajMaruKaku{1}\ajMaruKaku{2}\ajMaruKaku{3}%
+\ajKuroMaruKaku{1}\ajKuroMaruKaku{2}\ajKuroMaruKaku{3}%
+\ajKakko{1}\ajKakko{2}\ajKakko{3}%
+\ajRoman{1}\ajRoman{2}\ajRoman{3}%
+\ajroman{1}\ajroman{2}\ajroman{3}%
+\ajPeriod{1}\ajPeriod{2}\ajPeriod{3}
+
+①②③❶❷❸⑴⑵⑶ⅠⅡⅢⅰⅱⅲ⒈⒉⒊
+
+\ajLig{株式会社}\ajLig{有限会社}\ajLig{財団法人}
+\ajLig{明治}\ajLig{大正}\ajLig{昭和}\ajLig{平成}
+{\bfseries
+\ajLig{株式会社}\ajLig{有限会社}\ajLig{財団法人}
+\ajLig{明治}\ajLig{大正}\ajLig{昭和}\ajLig{平成}}
+
+㍿㍾㍽㍼㍻
+{\bfseries
+㍿㍾㍽㍼㍻}
+
+\ajClub\ajHeart\ajSpade\ajDiamond
+\ajvarClub\ajvarHeart\ajvarSpade\ajvarDiamond
+\ajPhone\ajPostal\ajvarPostal
+\ajSun\ajCloud\ajUmbrella\ajSnowman
+
+♣♡♠♢♧♥♤♦☎〠〶☀☁☂☃
+
+
+科学技術~
+\kchar"79D1\kchar"5B66\kchar"6280\kchar"8853~
+\UTF{79d1}\UTF{5b66}\UTF{6280}\UTF{8853}~
+\CID{1354}\CID{1462}\CID{1621}\CID{2395}
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/widow.tex b/language/japanese/uptex-base/samples/widow.tex
new file mode 100644
index 0000000000..df6b21538b
--- /dev/null
+++ b/language/japanese/uptex-base/samples/widow.tex
@@ -0,0 +1,109 @@
+\documentclass{article}
+\textheight240mm
+\topmargin-10mm
+\pagestyle{empty}
+\begin{document}
+\parindent0pt
+\kanjiskip=0zw plus .5zw minus -.05zw
+\edef\bs{$\backslash$\kern0em}
+
+\jcharwidowpenalty=10000
+
+(1) \bs jcharwidowpenalty$B"*(B10000\\
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!#(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!$(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!%(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9(B}}
+
+\kcatcode`$B$9(B=18% other_kchar
+
+(2) $B$+$J"*(Bother\_kchar\\
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!#(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!$(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!%(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9(B}}
+
+\kcatcode`$B$9(B=16% kanji
+
+(3) $B$+$J"*(Bkanji\\
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!#(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!$(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!%(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9(B}}
+
+
+\kcatcode`$B$9(B=17% kana
+\kcatcode`$B!#(B=18% other_kchar
+\kcatcode`$B!%(B=17% kana
+
+(4) $B$+$J"*(Bkana, $B!V!#!W"*(Bother\_kchar, $B!V!%!W"*(Bkana\\
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!#(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!$(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!%(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9(B}}
+
+
+\kcatcode`$B$9(B=17% kana
+\kcatcode`$B!#(B=17% kana
+\kcatcode`$B!%(B=18% other_kchar
+
+(5) $B$+$J"*(Bkana, $B!V!#!W"*(Bkana, $B!V!%!W"*(Bother\_kchar\\
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!#(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!$(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!%(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9(B}}
+
+
+\jcharwidowpenalty=0
+\kcatcode`$B$9(B=17% kana
+
+(6) \bs jcharwidowpenalty$B"*(B0\\
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!#(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!$(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9!%(B}}
+
+\fbox{\parbox{32.5zw}{%
+$B?M$NL\$NFO$+$L$H$3$m$KCn$O@x$_!"(B
+$B?M$N<j$NFO$+$L$H$3$m$KCn$O@3$_$^$9(B}}
+
+
+\end{document}
diff --git a/language/japanese/uptex-base/samples/yaku-jsc-jis.tex b/language/japanese/uptex-base/samples/yaku-jsc-jis.tex
new file mode 100644
index 0000000000..ecb071a5d1
--- /dev/null
+++ b/language/japanese/uptex-base/samples/yaku-jsc-jis.tex
@@ -0,0 +1,69 @@
+\makeatletter
+\def\@default{default}
+\def\jsbook{jsbook}
+\ifx\class\@undefined
+ \def\class{jsarticle}
+\fi
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+ \documentclass{\class}
+\else
+ \documentclass[\option]{\class}
+\fi
+\makeatother
+
+\DeclareFontFamily{JY1}{min}{}
+\DeclareFontFamily{JY1}{jis}{}
+\DeclareFontShape{JY1}{min}{m}{n}{<->s*[0.961]min10}{}
+\DeclareFontShape{JY1}{jis}{m}{n}{<->s*[0.961]jis}{}
+\DeclareRobustCommand\minten{\kanjifamily{min}\selectfont}
+\DeclareRobustCommand\jis{\kanjifamily{jis}\selectfont}
+
+\begin{document}
+option: \option
+\ifx\class\jsbook
+\chapter{$B?7%I%-%e%a%s%H%/%i%9(B}
+\fi
+\section{$BY92;!"6gFIE@$J$I(B}
+\xdef\testtext{%
+$B%+%`%A%c%C%+!%(B
+$B$A$g$C$H!"BT$C$F!#$-$C$H!$%7%g%C%/!%(B~~
+$B!F2s!G(B $B!H2s!I(B }%
+\begin{tabular}{rl}\hline
+default & \testtext\\\hline
+
+min10.tfm &
+{\minten \testtext}\\\hline
+
+jis.tfm &
+{\jis \testtext}\\\hline
+
+\end{tabular}
+
+\section{$BJ8;z$N%5%$%:$J$I(B}
+\xdef\testtext{%
+\frame{$B!'(B}~~\frame{$B!H(B}\frame{$B2s(B}\frame{$B!'(B}\frame{$B2s(B}\frame{$B!I(B}~~$B!H2s!'2s!I(B}%
+
+{\huge
+\begin{tabular}{rl}
+default & \testtext\\
+
+min10.tfm &
+{\minten \testtext}\\
+
+jis.tfm &
+{\jis \testtext}\\
+
+\end{tabular}
+}
+
+\section{$B3g8LN`(B}
+\subsection{JIS X 0208$B$K$"$k$b$N(B}
+$B!F2s!G(B $B!H2s!I(B $B!J2s!K(B $B!L2s!M(B $B!N2s!O(B $B!P2s!Q(B $B!R2s!S(B $B!T2s!U(B $B!V2s!W(B $B!X2s!Y(B $B!Z2s![(B
+
+{\gt
+$B!F2s!G(B $B!H2s!I(B $B!J2s!K(B $B!L2s!M(B $B!N2s!O(B $B!P2s!Q(B $B!R2s!S(B $B!T2s!U(B $B!V2s!W(B $B!X2s!Y(B $B!Z2s![(B
+}
+\end{document}
diff --git a/language/japanese/uptex-base/samples/yaku-jsc-utf8.tex b/language/japanese/uptex-base/samples/yaku-jsc-utf8.tex
new file mode 100644
index 0000000000..8c72b4b27a
--- /dev/null
+++ b/language/japanese/uptex-base/samples/yaku-jsc-utf8.tex
@@ -0,0 +1,91 @@
+\makeatletter
+\def\@default{default}
+\def\jsbook{jsbook}
+\ifx\class\@undefined
+ \def\class{jsarticle}
+\fi
+\ifx\option\@undefined
+ \def\option{default}
+\fi
+\ifx\option\@default
+ \documentclass[uplatex]{\class}
+\else
+ \documentclass[uplatex,\option]{\class}
+\fi
+\makeatother
+
+\DeclareFontFamily{JY2}{umin}{}
+\DeclareFontFamily{JY2}{ujis}{}
+\DeclareFontFamily{JY2}{upjisr}{}
+\DeclareFontShape{JY2}{umin}{m}{n}{<->s*[0.961]umin10}{}
+\DeclareFontShape{JY2}{ujis}{m}{n}{<->s*[0.961]ujis}{}
+\DeclareFontShape{JY2}{upjisr}{m}{n}{<->s*[0.92469]upjisr-h}{}
+\DeclareRobustCommand\umin{\kanjifamily{umin}\selectfont}
+\DeclareRobustCommand\ujis{\kanjifamily{ujis}\selectfont}
+\DeclareRobustCommand\upjisr{\kanjifamily{upjisr}\selectfont}
+
+\begin{document}
+option: uplatex and \option
+\ifx\class\jsbook
+\chapter{新ドキュメントクラス}
+\fi
+\section{拗音、句読点など}
+\xdef\testtext{%
+カムチャッカ.
+ちょっと、待って。きっと,ショック.~~
+‘回’ “回” }%
+\begin{tabular}{rl}\hline
+default & \testtext\\\hline
+
+\if0
+umin10.tfm &
+{\umin \testtext}\\\hline
+
+ujis.tfm &
+{\ujis \testtext}\\\hline
+\fi
+
+upjisr-h.tfm &
+{\upjisr \testtext}\\\hline
+
+\end{tabular}
+
+\section{文字のサイズなど}
+\xdef\testtext{%
+\frame{:}~~\frame{“}\frame{回}\frame{:}\frame{回}\frame{”}~~“回:回”}%
+
+{\huge
+\begin{tabular}{rl}
+default & \testtext\\
+
+\if0
+umin10.tfm &
+{\umin \testtext}\\
+
+ujis.tfm &
+{\ujis \testtext}\\
+\fi
+
+upjisr-h.tfm &
+{\upjisr \testtext}\\
+
+\end{tabular}
+}
+
+\section{括弧類}
+\subsection{JIS X 0208にあるもの}
+‘回’ “回” (回) 〔回〕 [回] {回} 〈回〉 《回》 「回」 『回』 【回】
+
+{\gt
+‘回’ “回” (回) 〔回〕 [回] {回} 〈回〉 《回》 「回」 『回』 【回】
+}
+
+\subsection{JIS X 0213で追加されたもの}
+⦅回⦆ 〘回〙 〖回〗 〝回〟
+
+{\gt
+⦅回⦆ 〘回〙 〖回〗 〝回〟
+}
+
+{\gt 〖回〗} は、KozGoProVI-Medium.otfならうまくいくはず。
+\end{document}
diff --git a/language/japanese/uptex-base/ukinsoku.tex b/language/japanese/uptex-base/ukinsoku.tex
new file mode 100644
index 0000000000..197ada5bd8
--- /dev/null
+++ b/language/japanese/uptex-base/ukinsoku.tex
@@ -0,0 +1,411 @@
+%% (Last update: 2019/05/12 ttk, texjporg)
+%%
+\ifnum\ucs"3000="3000 \else
+ \errhelp{Please try to run (e)uptex with option
+ `-kanji-internal=uptex'.}%
+ \errmessage{This file should be read with
+ internal Kanji encoding Unicode}\@@end
+\fi
+%%
+%% default kcatcode, workaround for upTeX 1.24
+\edef\upTeXVersionNumber{\the\uptexversion\uptexrevision}%
+\def\upTeXRevIpXXIV{1.24}%
+\ifx\upTeXVersionNumber\upTeXRevIpXXIV
+ \kcatcode"FF00=16% Halfwidth and Fullwidth Forms -> 16(kanji)
+ \message{### special kcatcode setting to work around for upTeX 1.24 ###}
+\fi
+\let\upTeXVersionNumber\relax
+\let\upTeXRevIpXXIV\relax
+%%
+%% 行頭、行末禁則パラメータ
+%%
+%% 1byte characters
+\prebreakpenalty`!=10000
+\prebreakpenalty`"=10000
+\postbreakpenalty`\#=500
+\postbreakpenalty`\$=500
+\prebreakpenalty`\%=500
+\prebreakpenalty`\&=500
+\postbreakpenalty`\`=10000
+\prebreakpenalty`'=10000
+\prebreakpenalty`)=10000
+\postbreakpenalty`(=10000
+\prebreakpenalty`*=500
+\prebreakpenalty`+=500
+\prebreakpenalty`-=10000
+\prebreakpenalty`.=10000
+\prebreakpenalty`,=10000
+\prebreakpenalty`/=500
+\prebreakpenalty`;=10000
+\prebreakpenalty`?=10000
+\prebreakpenalty`:=10000
+\prebreakpenalty`]=10000
+\postbreakpenalty`[=10000
+%%全角文字
+\prebreakpenalty`、=10000
+\prebreakpenalty`。=10000
+\prebreakpenalty`,=10000
+\prebreakpenalty`.=10000
+\prebreakpenalty`・=10000
+\prebreakpenalty`:=10000
+\prebreakpenalty`;=10000
+\prebreakpenalty`?=10000
+\prebreakpenalty`!=10000
+\prebreakpenalty`゛=10000%\jis"212B
+\prebreakpenalty`゜=10000%\jis"212C
+\prebreakpenalty`´=10000%\jis"212D
+\postbreakpenalty``=10000%\jis"212E
+\prebreakpenalty`々=10000%\jis"2139
+\prebreakpenalty`…=250%\jis"2144
+\prebreakpenalty`‥=250%\jis"2145
+\postbreakpenalty`‘=10000%\jis"2146
+\prebreakpenalty`’=10000%\jis"2147
+\postbreakpenalty`“=10000%\jis"2148
+\prebreakpenalty`”=10000%\jis"2149
+\prebreakpenalty`)=10000
+\postbreakpenalty`(=10000
+\prebreakpenalty`}=10000
+\postbreakpenalty`{=10000
+\prebreakpenalty`]=10000
+\postbreakpenalty`[=10000
+%%\postbreakpenalty`‘=10000
+%%\prebreakpenalty`’=10000
+\postbreakpenalty`〔=10000%\jis"214C
+\prebreakpenalty`〕=10000%\jis"214D
+\postbreakpenalty`〈=10000%\jis"2152
+\prebreakpenalty`〉=10000%\jis"2153
+\postbreakpenalty`《=10000%\jis"2154
+\prebreakpenalty`》=10000%\jis"2155
+\postbreakpenalty`「=10000%\jis"2156
+\prebreakpenalty`」=10000%\jis"2157
+\postbreakpenalty`『=10000%\jis"2158
+\prebreakpenalty`』=10000%\jis"2159
+\postbreakpenalty`【=10000%\jis"215A
+\prebreakpenalty`】=10000%\jis"215B
+\prebreakpenalty`ー=10000
+\prebreakpenalty`+=200
+\prebreakpenalty`−=200% U+2212 MINUS SIGN
+\prebreakpenalty`-=200% U+FF0D FULLWIDTH HYPHEN-MINUS
+\prebreakpenalty`==200
+\postbreakpenalty`#=200
+\postbreakpenalty`$=200
+\prebreakpenalty`%=200
+\prebreakpenalty`&=200
+\prebreakpenalty`ぁ=150
+\prebreakpenalty`ぃ=150
+\prebreakpenalty`ぅ=150
+\prebreakpenalty`ぇ=150
+\prebreakpenalty`ぉ=150
+\prebreakpenalty`っ=150
+\prebreakpenalty`ゃ=150
+\prebreakpenalty`ゅ=150
+\prebreakpenalty`ょ=150
+\prebreakpenalty`ゎ=150%\jis"246E
+\prebreakpenalty`ァ=150
+\prebreakpenalty`ィ=150
+\prebreakpenalty`ゥ=150
+\prebreakpenalty`ェ=150
+\prebreakpenalty`ォ=150
+\prebreakpenalty`ッ=150
+\prebreakpenalty`ャ=150
+\prebreakpenalty`ュ=150
+\prebreakpenalty`ョ=150
+\prebreakpenalty`ヮ=150%\jis"256E
+\prebreakpenalty`ヵ=150%\jis"2575
+\prebreakpenalty`ヶ=150%\jis"2576
+%% kinsoku JIS X 0208 additional
+\prebreakpenalty`ヽ=10000
+\prebreakpenalty`ヾ=10000
+\prebreakpenalty`ゝ=10000
+\prebreakpenalty`ゞ=10000
+%%
+%% kinsoku JIS X 0213
+%%
+\prebreakpenalty`〳=10000
+\prebreakpenalty`〴=10000
+\prebreakpenalty`〵=10000
+\prebreakpenalty`〻=10000
+\postbreakpenalty`⦅=10000
+\prebreakpenalty`⦆=10000
+\postbreakpenalty`⦅=10000
+\prebreakpenalty`⦆=10000
+\postbreakpenalty`〘=10000
+\prebreakpenalty`〙=10000
+\postbreakpenalty`〖=10000
+\prebreakpenalty`〗=10000
+\postbreakpenalty`«=10000
+\prebreakpenalty`»=10000
+\postbreakpenalty`〝=10000
+\prebreakpenalty`〟=10000
+\prebreakpenalty`‼=10000
+\prebreakpenalty`⁇=10000
+\prebreakpenalty`⁈=10000
+\prebreakpenalty`⁉=10000
+\postbreakpenalty`¡=10000
+\postbreakpenalty`¿=10000
+\prebreakpenalty`ː=10000
+\prebreakpenalty`·=10000
+\prebreakpenalty"AA=10000% ª
+\prebreakpenalty"BA=10000% º
+\prebreakpenalty`¹=10000
+\prebreakpenalty`²=10000
+\prebreakpenalty`³=10000
+\postbreakpenalty`€=10000
+\prebreakpenalty`ゕ=150
+\prebreakpenalty`ゖ=150
+\prebreakpenalty`ㇰ=150
+\prebreakpenalty`ㇱ=150
+\prebreakpenalty`ㇲ=150
+\prebreakpenalty`ㇳ=150
+\prebreakpenalty`ㇴ=150
+\prebreakpenalty`ㇵ=150
+\prebreakpenalty`ㇶ=150
+\prebreakpenalty`ㇷ=150
+\prebreakpenalty`ㇸ=150
+\prebreakpenalty`ㇹ=150
+%%\prebreakpenalty`ㇷ゚=150
+\prebreakpenalty`ㇺ=150
+\prebreakpenalty`ㇻ=150
+\prebreakpenalty`ㇼ=150
+\prebreakpenalty`ㇽ=150
+\prebreakpenalty`ㇾ=150
+\prebreakpenalty`ㇿ=150
+%%
+%% kinsoku JIS X 0212
+%%
+%%\postbreakpenalty`¡=10000
+%%\postbreakpenalty`¿=10000
+%%\prebreakpenalty"BA=10000% º
+%%\prebreakpenalty"AA=10000% ª
+\prebreakpenalty`™=10000
+%%
+%% kinsoku 半角片仮名
+%%
+\prebreakpenalty`。=10000
+\prebreakpenalty`、=10000
+\prebreakpenalty`゙=10000
+\prebreakpenalty`゚=10000
+\prebreakpenalty`」=10000
+\postbreakpenalty`「=10000
+%%
+%% xspcode
+\xspcode`(=1
+\xspcode`)=2
+\xspcode`[=1
+\xspcode`]=2
+\xspcode``=1
+\xspcode`'=2
+\xspcode`;=2
+\xspcode`,=2
+\xspcode`.=2
+%% for 8bit Latin
+\xspcode"80=3
+\xspcode"81=3
+\xspcode"82=3
+\xspcode"83=3
+\xspcode"84=3
+\xspcode"85=3
+\xspcode"86=3
+\xspcode"87=3
+\xspcode"88=3
+\xspcode"89=3
+\xspcode"8A=3
+\xspcode"8B=3
+\xspcode"8C=3
+\xspcode"8D=3
+\xspcode"8E=3
+\xspcode"8F=3
+\xspcode"90=3
+\xspcode"91=3
+\xspcode"92=3
+\xspcode"93=3
+\xspcode"94=3
+\xspcode"95=3
+\xspcode"96=3
+\xspcode"97=3
+\xspcode"98=3
+\xspcode"99=3
+\xspcode"9A=3
+\xspcode"9B=3
+\xspcode"9C=3
+\xspcode"9D=3
+\xspcode"9E=3
+\xspcode"9F=3
+\xspcode"A0=3
+\xspcode"A1=3
+\xspcode"A2=3
+\xspcode"A3=3
+\xspcode"A4=3
+\xspcode"A5=3
+\xspcode"A6=3
+\xspcode"A7=3
+\xspcode"A8=3
+\xspcode"A9=3
+\xspcode"AA=3
+\xspcode"AB=3
+\xspcode"AC=3
+\xspcode"AD=3
+\xspcode"AE=3
+\xspcode"AF=3
+\xspcode"B0=3
+\xspcode"B1=3
+\xspcode"B2=3
+\xspcode"B3=3
+\xspcode"B4=3
+\xspcode"B5=3
+\xspcode"B6=3
+\xspcode"B7=3
+\xspcode"B8=3
+\xspcode"B9=3
+\xspcode"BA=3
+\xspcode"BB=3
+\xspcode"BC=3
+\xspcode"BD=3
+\xspcode"BE=3
+\xspcode"BF=3
+\xspcode"C0=3
+\xspcode"C1=3
+\xspcode"C2=3
+\xspcode"C3=3
+\xspcode"C4=3
+\xspcode"C5=3
+\xspcode"C6=3
+\xspcode"C7=3
+\xspcode"C8=3
+\xspcode"C9=3
+\xspcode"CA=3
+\xspcode"CB=3
+\xspcode"CC=3
+\xspcode"CD=3
+\xspcode"CE=3
+\xspcode"CF=3
+\xspcode"D0=3
+\xspcode"D1=3
+\xspcode"D2=3
+\xspcode"D3=3
+\xspcode"D4=3
+\xspcode"D5=3
+\xspcode"D6=3
+\xspcode"D7=3
+\xspcode"D8=3
+\xspcode"D9=3
+\xspcode"DA=3
+\xspcode"DB=3
+\xspcode"DC=3
+\xspcode"DD=3
+\xspcode"DE=3
+\xspcode"DF=3
+\xspcode"E0=3
+\xspcode"E1=3
+\xspcode"E2=3
+\xspcode"E3=3
+\xspcode"E4=3
+\xspcode"E5=3
+\xspcode"E6=3
+\xspcode"E7=3
+\xspcode"E8=3
+\xspcode"E9=3
+\xspcode"EA=3
+\xspcode"EB=3
+\xspcode"EC=3
+\xspcode"ED=3
+\xspcode"EE=3
+\xspcode"EF=3
+\xspcode"F0=3
+\xspcode"F1=3
+\xspcode"F2=3
+\xspcode"F3=3
+\xspcode"F4=3
+\xspcode"F5=3
+\xspcode"F6=3
+\xspcode"F7=3
+\xspcode"F8=3
+\xspcode"F9=3
+\xspcode"FA=3
+\xspcode"FB=3
+\xspcode"FC=3
+\xspcode"FD=3
+\xspcode"FE=3
+\xspcode"FF=3
+%%
+%% inhibitxspcode
+\inhibitxspcode`、=1
+\inhibitxspcode`。=1
+\inhibitxspcode`,=1
+\inhibitxspcode`.=1
+\inhibitxspcode`;=1
+\inhibitxspcode`?=1
+\inhibitxspcode`)=1
+\inhibitxspcode`(=2
+\inhibitxspcode`]=1
+\inhibitxspcode`[=2
+\inhibitxspcode`}=1
+\inhibitxspcode`{=2
+\inhibitxspcode`‘=2
+\inhibitxspcode`’=1
+\inhibitxspcode`“=2
+\inhibitxspcode`”=1
+\inhibitxspcode`〔=2
+\inhibitxspcode`〕=1
+\inhibitxspcode`〈=2
+\inhibitxspcode`〉=1
+\inhibitxspcode`《=2
+\inhibitxspcode`》=1
+\inhibitxspcode`「=2
+\inhibitxspcode`」=1
+\inhibitxspcode`『=2
+\inhibitxspcode`』=1
+\inhibitxspcode`【=2
+\inhibitxspcode`】=1
+\inhibitxspcode`—=0% U+2014 EM DASH
+\inhibitxspcode`―=0% U+2015 HORIZONTAL BAR
+\inhibitxspcode`〜=0% U+301C WAVE DASH
+\inhibitxspcode`~=0% U+FF5E FULLWIDTH TILDE
+\inhibitxspcode`…=0
+\inhibitxspcode`¥=0% U+00A5 YEN SIGN
+\inhibitxspcode`¥=0% U+FFE5 FULLWIDTH YEN SIGN
+\inhibitxspcode`°=1
+\inhibitxspcode`′=1
+\inhibitxspcode`″=1
+%%
+%% inhibitxspcode JIS X 0213
+%%
+\inhibitxspcode`⦅=2
+\inhibitxspcode`⦆=1
+\inhibitxspcode`⦅=2
+\inhibitxspcode`⦆=1
+\inhibitxspcode`〘=2
+\inhibitxspcode`〙=1
+\inhibitxspcode`〖=2
+\inhibitxspcode`〗=1
+\inhibitxspcode`«=2
+\inhibitxspcode`»=1
+\inhibitxspcode`〝=2
+\inhibitxspcode`〟=1
+\inhibitxspcode`‼=1
+\inhibitxspcode`⁇=1
+\inhibitxspcode`⁈=1
+\inhibitxspcode`⁉=1
+\inhibitxspcode`¡=2
+\inhibitxspcode`¿=2
+\inhibitxspcode"AA=1% ª
+\inhibitxspcode"BA=1% º
+\inhibitxspcode`¹=1
+\inhibitxspcode`²=1
+\inhibitxspcode`³=1
+\inhibitxspcode`€=2
+%%
+%% inhibitxspcode JIS X 0212
+%%
+%%\inhibitxspcode`¡=2
+%%\inhibitxspcode`¿=2
+%%\inhibitxspcode"BA=1% º
+%%\inhibitxspcode"AA=1% ª
+\inhibitxspcode`™=1
+%%
+%% inhibitxspcode 半角片仮名
+%%
+\inhibitxspcode`。=1
+\inhibitxspcode`、=1
+\inhibitxspcode`「=2
+\inhibitxspcode`」=1
diff --git a/language/japanese/uptex-base/uptex.ini b/language/japanese/uptex-base/uptex.ini
new file mode 100644
index 0000000000..121e41524a
--- /dev/null
+++ b/language/japanese/uptex-base/uptex.ini
@@ -0,0 +1,4 @@
+%% for upTeX (Unicode pTeX)
+\input uptex.tex
+\dump
+\endinput
diff --git a/language/japanese/uptex-base/uptex.tex b/language/japanese/uptex-base/uptex.tex
new file mode 100644
index 0000000000..3e251e13ca
--- /dev/null
+++ b/language/japanese/uptex-base/uptex.tex
@@ -0,0 +1,58 @@
+% This is the upTeX format (community edition)
+% last update: texjporg 2017/10/18
+%
+% pTeX format file:
+% (C)copyright ASCII corporation,1987,1995,1997
+% and modified for upTeX
+%
+\input plain
+\catcode`@=11 % at signs act like letters
+\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
+ \nobreak#1\@sf\vfootnote{#1}}
+\catcode`@=12 % at signs are no longer letters
+%
+\font\tenmin=upjisr-h % mincho(KANJI)
+\font\sevenmin=upjisr-h at 7pt
+\font\fivemin=upjisr-h at 5pt
+%
+\font\tengt=upjisg-h % gothic(KANJI)
+\font\sevengt=upjisg-h at 7pt
+\font\fivegt=upjisg-h at 5pt
+%
+\font\tentmin=upjisr-v % mincho(KANJI,tate)
+\font\seventmin=upjisr-v at 7pt
+\font\fivetmin=upjisr-v at 5pt
+%
+\font\tentgt=upjisg-v % gothic(KANJI,tate)
+\font\seventgt=upjisg-v at 7pt
+\font\fivetgt=upjisg-v at 5pt
+%
+\newfam\minfam % \min is family 8
+\newfam\gtfam % \gt is family 9
+\newfam\tminfam % \tmin is family 10
+\newfam\tgtfam % \tgt is family 11
+%
+\def\mc{\iftdir\fam\tminfam\else\fam\minfam\fi\tentmin\tenmin}%
+\textfont\minfam=\tenmin\scriptfont\minfam=\sevenmin%
+\scriptscriptfont\minfam=\fivemin
+\textfont\tminfam=\tentmin\scriptfont\tminfam=\seventmin%
+\scriptscriptfont\tminfam=\fivetmin
+%
+\def\gt{\iftdir\fam\tgtfam\else\fam\gtfam\fi\tentgt\tengt}%
+\textfont\gtfam=\tengt\scriptfont\gtfam=\sevengt%
+\scriptscriptfont\gtfam=\fivegt
+\textfont\tgtfam=\tentgt\scriptfont\tgtfam=\seventgt%
+\scriptscriptfont\tgtfam=\fivetgt
+%
+\input ukinsoku
+\mc % select mincho font
+\kanjiskip=0pt plus .4pt minus .4pt
+%\xkanjiskip=2.5pt plus 1pt minus 1pt
+\xkanjiskip=.25zw plus 1pt minus 1pt
+\autospacing\autoxspacing
+\jcharwidowpenalty=500
+%
+% identifies the current format based on plain
+\def\fmtname{uptex}
+\edef\fmtversion{\fmtversion\space p1.0c_u00}
diff --git a/language/japanese/zxjafbfont/LICENSE b/language/japanese/zxjafbfont/LICENSE
new file mode 100644
index 0000000000..788b1d69d9
--- /dev/null
+++ b/language/japanese/zxjafbfont/LICENSE
@@ -0,0 +1,24 @@
+$BK\%=%U%H%&%'%"$O(B MIT $B%i%$%;%s%9$N2<$GG[I[$5$l$^$9!#Cx:n8"$O:n<T$G$"$k(B
+$B!VH,EP?rG7!JJLL>(B ZR$B!K!W$KB0$7$^$9!#$^$?K\%=%U%H%&%'%"$OL5J]>Z$G$9!#(B
+
+The MIT License
+
+Copyright (c) 2009-2011 Takayuki YATO (a.k.a. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/zxjafbfont/README b/language/japanese/zxjafbfont/README
new file mode 100644
index 0000000000..9971e8d7a6
--- /dev/null
+++ b/language/japanese/zxjafbfont/README
@@ -0,0 +1,24 @@
+ZXjafbfont パッケージ
+
+前提環境
+ XeTeX および xeCJK パッケージが正しくインストールおよび設定されていること。
+
+インストール
+ - *.sty → $TEXMF/tex/xelatex/ZXjafbfont/
+
+使用法
+ xeCJK(または zxjatype)より後に zxjafbfont パッケージを読み込む。
+ \usepackage[...]{xeCJK} % または zxjatype
+ \usepackage{zxjafbfont}
+ 代替として用いるフォントファミリを xeCJK の \setCJKfamilyfont (または
+ zxjatype の \setjafamilyfont)命令で宣言する。
+ \setCJKfamilyfont{altcjk}{Some CJK Family}
+ 文書中の任意の場所(プレアンブルでも本文でも可)で \setCJKfallbackfamily
+ 命令で宣言したファミリ名を指定すと、それ以降で指定のファミリが代替として
+ 自動的に用いられるようになる。
+ \setCJKfallbackfamily{altcjk}
+ \unsetCJKfallbackfamily 命令で代替の指定を解除できる。
+ \unsetCJKfallbackfamily
+
+En toi Pythmeni tes TeXnopoleos ~電脳世界の奥底にて~
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/zxjafbfont/zxjafbfont.sty b/language/japanese/zxjafbfont/zxjafbfont.sty
new file mode 100644
index 0000000000..762a0d5ec5
--- /dev/null
+++ b/language/japanese/zxjafbfont/zxjafbfont.sty
@@ -0,0 +1,63 @@
+%
+% zxjafbfont.sty
+%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zxjafbfont}[2011/02/20 v0.2]
+
+%% preparations
+\def\zxjx@pkgname{zxjafbfont}
+\def\zxjx@error{\PackageError\zxjx@pkgname}
+%
+\RequirePackage{xeCJK}
+
+%%------ User interface
+
+%%<*> \setCJKfallbackfamily{<CJK_family_name>}
+\newcommand*\setCJKfallbackfamily[1]{%
+ \let\CJKsymbol\zxjx@CJKsymbol
+ \edef\zxjx@fb@family{#1}}
+
+%%<*> \unsetCJKfallbackfamily
+\newcommand*\unsetCJKfallbackfamily{%
+ \let\CJKsymbol\zxjx@org@CJKsymbol
+ \let\zxjx@fb@family\relax}
+
+%% \zxjx@fb@family
+\let\zxjx@fb@family\relax
+
+%%------ Patch to xeCJK procedures
+
+%% \zxjx@enter@local
+\def\zxjx@enter@local{%
+ \bgroup \let\zxjx@maybe@egroup\egroup
+ \zxjx@revoke@ingress}
+\let\zxjx@maybe@egroup\@empty
+\def\zxjx@preto@ictoks#1#2#3{%
+ \chardef\zxjx@x=#1\chardef\zxjx@y=#2\relax
+ \XeTeXinterchartoks\zxjx@x\zxjx@y\expandafter{%
+ \expandafter#3\the\XeTeXinterchartoks\zxjx@x\zxjx@y}}
+\@for\zxjx@a:=1,2,3\do{%
+ \@for\zxjx@b:=0,1,2,3,4,5,6,255\do{%
+ \zxjx@preto@ictoks\zxjx@a\zxjx@b{\zxjx@maybe@egroup}}}
+\def\zxjx@revoke@ingress{%
+ % Segfaults would occur unless \relax is there... (why?)
+ \XeTeXinterchartoks 255 1{\relax}%
+ \XeTeXinterchartoks 255 2{\relax}%
+ \XeTeXinterchartoks 255 3{\relax}}
+\chardef\zxjx@geta="3013
+
+%% \zxjx@CJKsymbol
+\def\zxjx@CJKsymbol#1{%
+ \zxjx@enter@local
+ \chardef\zxjx@uc=`#1\relax
+ \unless\iffontchar\font\zxjx@uc
+ \CJKfamily\zxjx@fb@family \xeCJK@setfont
+ \fi
+ \zxjx@uc}
+\let\zxjx@org@CJKsymbol\CJKsymbol
+
+%%------ all done
+\endinput
+%% EOF
diff --git a/language/japanese/zxjafont/LICENSE b/language/japanese/zxjafont/LICENSE
new file mode 100644
index 0000000000..534324b756
--- /dev/null
+++ b/language/japanese/zxjafont/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2019 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/zxjafont/README-ja.md b/language/japanese/zxjafont/README-ja.md
new file mode 100644
index 0000000000..2b21240e5d
--- /dev/null
+++ b/language/japanese/zxjafont/README-ja.md
@@ -0,0 +1,55 @@
+ZXjafont パッケージバンドル
+===========================
+
+LaTeX: 一般的な和文フォント設定のプリセット
+
+XeLaTeX + fontspec でのフォントファミリ名を直接指定する方式は「好きな
+フォントを指定する」という点では、 pLaTeX よりも格段に使い易いが、日本語
+を扱うためには必ず何らかの設定を行う必要があり、これが煩わしく感じられる
+場合もある。本パッケージでは、pLaTeX において一般的に行われている設定を
+予め用意しておいて、簡単に呼び出せるようにしている。
+
+### 前提環境
+
+ * フォーマット: LaTeX
+ * エンジン: XeTeX
+ * 依存パッケージ:
+ - fontspec
+
+### インストール
+
+TDS 1.1 に従ったシステムでは、各ファイルを次の場所に移動する。
+
+ - `*.sty` → $TEXMF/tex/xelatex/zxjafont
+
+### ライセンス
+
+本パッケージは MIT ライセンスの下で配布される。
+
+
+zxjafont パッケージ ー 本体
+---------------------------
+
+詳細についてはマニュアル `zxjafont.pdf` を参照されたい。
+
+
+更新履歴
+--------
+
+ * Version 0.5 〈2019/06/29〉
+ - 非推奨のプリセットを廃止した。
+ - 他パッケージとの互換のため、オプションやプリセットの別名を追加。
+ * Version 0.4 〈2018/05/04〉
+ - プリセット追加:`yu-win10`、`sourcehan(-jp)`、`noto(-jp)`、`ume`。
+ - オプション追加:`90jis`、`jis2004`。
+ - 非推奨のプリセットの使用を警告する。
+ * Version 0.3 〈2015/05/08〉
+ - プリセット設定を pxchfon のものに合わせた。
+ * Version 0.2a 〈2013/01/28〉
+ - 新版の zxjatype への対応。
+ * Version 0.2 〈2009/12/22〉
+ - 最初の公開版。
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/zxjafont/README.md b/language/japanese/zxjafont/README.md
new file mode 100644
index 0000000000..94d039d587
--- /dev/null
+++ b/language/japanese/zxjafont/README.md
@@ -0,0 +1,49 @@
+ZXjafont Package
+================
+
+LaTeX: Set up Japanese font families for XeLaTeX
+
+Font selection using fontspec package is very flexible and powerful.
+But users who are used to pLaTeX often feel the setting bothersome,
+as there is no default working font setting (that involves Japanese
+fonts) and they always must give one. This package prepares some
+popular font settings as “presets” and allows users to use them
+simply by referring to their name.
+
+### SYSTEM REQUIREMENTS
+
+ - TeX format: XeLaTeX.
+ - Prerequisite packages: fontspec.
+
+### INSTALLATION
+
+Move the files as follows (in a system compliant to TDS 1.1):
+
+ - `*.sty` → $TEXMF/tex/xelatex/zxjafont/
+
+And rehash your TEXMF trees if necessary.
+
+### LICENSE
+
+This package is distributed under the MIT License.
+
+Revision History
+----------------
+
+ * Version 0.5 〈2019/06/29〉
+ - More aliases are provided.
+ - The deprecated presets are abolished.
+ * Version 0.4 〈2018/05/04〉
+ - New preets: `yu-win10`, `sourcehan(-jp)`, `noto(-jp)`, `ume`.
+ - New options: `90jis`, `jis2004`.
+ - The use of deprecated presets is warned.
+ * Version 0.3 〈2015/05/08〉
+ - Presets made more alike those of pxchfon.
+ * Version 0.2a 〈2013/01/28〉
+ - Adjustment for new zxjatype.
+ * Version 0.2 〈2009/12/22〉
+ - First public version.
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/language/japanese/zxjafont/zxjafont.pdf b/language/japanese/zxjafont/zxjafont.pdf
new file mode 100644
index 0000000000..0026524f08
--- /dev/null
+++ b/language/japanese/zxjafont/zxjafont.pdf
Binary files differ
diff --git a/language/japanese/zxjafont/zxjafont.sty b/language/japanese/zxjafont/zxjafont.sty
new file mode 100644
index 0000000000..4ba6b6a64a
--- /dev/null
+++ b/language/japanese/zxjafont/zxjafont.sty
@@ -0,0 +1,427 @@
+%%
+%% This is file 'zxjafont.sty'.
+%%
+%% Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zxjafont}[2019/06/29 v0.5]
+\def\zxjf@pkgname{zxjafont}
+
+%% preparation
+\RequirePackage{ifxetex}\RequireXeTeX
+\providecommand{\bxDebug}[1]{}
+
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{fontspec}
+\RequirePackage{keyval}
+\RequirePackage{etoolbox}
+
+%% errors
+\def\zxjf@err@ivval#1#2{%
+ \PackageError\zxjf@pkgname
+ {Invalid value '#2' for option #1}\@ehc}
+
+%--------------------------------------- handle options
+
+%% constants
+\chardef\zxjf@cjkshape@@none=0
+\chardef\zxjf@cjkshape@@xc=1 % 90jis
+\chardef\zxjf@cjkshape@@mmiv=2 % jis2004
+
+%% variables
+\let\zxjf@main@preset\relax
+\let\zxjf@sub@preset\@empty
+\newif\ifzxjf@prop
+\newif\ifzxjf@oneweight
+\let\zxjf@cjkshape\zxjf@cjkshape@@none
+\let\zxjf@scale\relax
+\let\zxjf@feat\@empty
+\newif\ifzxjf@zxjatype
+
+%% \zxjf@main@preset
+\def\zxjf@all@main@preset{%
+ %(uniweight)
+ ms,ipa,ipaex,%
+ %(multiweight)
+ ms-hg,ipa-hg,ipaex-hg,moga,moga-90,ume,%
+ kozuka-pro,kozuka-pr6,kozuka-pr6n,hiragino-pro,hiragino-pron,%
+ morisawa-pro,morisawa-pr6n,yu-win,yu-win10,yu-osx,%
+ sourcehan,sourcehan-jp,noto,noto-jp,%
+ %(alias)
+ kozuka,morisawa,moga-mobo-ex,noto-otf}
+
+%% \zxjf@main@sub@preset
+\def\zxjf@all@sub@preset{%
+ hg,hiraginomg-pro,hiraginomg-pron,mobo,mobo-90,maruberi,%
+ hiraginomg}
+
+% preset options
+\def\zxjf@do#1{\DeclareOption{#1}{\def\zxjf@main@preset{#1}}}
+\@for\zxjf@x:=\zxjf@all@main@preset\do{%
+ \expandafter\zxjf@do\expandafter{\zxjf@x}}
+\def\zxjf@do#1{\DeclareOption{#1}{\zxjf@add@sub@preset{#1}}}
+\@for\zxjf@x:=\zxjf@all@sub@preset\do{%
+ \expandafter\zxjf@do\expandafter{\zxjf@x}}
+\def\zxjf@add@sub@preset#1{%
+ \edef\zxjf@sub@preset{\zxjf@sub@preset#1,}}
+% 'prop'
+\DeclareOption{prop}{\zxjf@proptrue}
+\DeclareOption{noprop}{\zxjf@propfalse}
+% 'oneweight'
+\DeclareOption{oneweight}{\zxjf@oneweighttrue}
+\DeclareOption{nooneweight}{\zxjf@oneweightfalse}
+% '90jis'/'jis2004'
+\DeclareOption{jis90}{\let\zxjf@cjkshape\zxjf@cjkshape@@xc}
+\DeclareOption{90jis}{\let\zxjf@cjkshape\zxjf@cjkshape@@xc}
+\DeclareOption{jis2004}{\let\zxjf@cjkshape\zxjf@cjkshape@@mmiv}
+\DeclareOption{2004jis}{\let\zxjf@cjkshape\zxjf@cjkshape@@mmiv}
+
+% abolished presets
+\@onlypreamble\zxjf@err@abpre
+\def\zxjf@err@abpre#1{%
+ \PackageError\zxjf@pkgname
+ {The old preset '#1' is *abolished*}{\@ehc}}
+\@for\zxjf@x:={%
+ kozuka4,kozuka6,kozuka6n,hiragino,ms-dx,ipa-dx,hiragino-dx%
+}\do{\DeclareOption{\zxjf@x}{\zxjf@err@abpre{\CurrentOption}}}
+
+%% options using keyval
+\DeclareOption*{\def\zxjf@nxt{\setkeys{zxjf}}%
+ \expandafter\zxjf@nxt\expandafter{\CurrentOption}}
+% 'scale=<real>'
+\define@key{zxjf}{scale}{\def\zxjf@scale{#1}}
+% 'feature=<text>'
+\define@key{zxjf}{feature}{\def\zxjf@feat{#1}}
+
+%% dispatch
+\let\@org@use@ption\@use@ption
+\def\@use@ption{\csname ds@\CurrentOption \endcsname}
+\ProcessOptions*
+\let\@use@ption\@org@use@ption
+
+%% preset must be given
+\ifx\zxjf@main@preset\relax
+ \PackageError\zxjf@pkgname
+ {Preset name not specified}
+ {You must give one of the following names as option.\MessageBreak
+ \space\space\zxjf@all@main@preset}
+\expandafter\endinput\fi\relax
+
+%% detect bxjatype
+\@ifpackageloaded{zxjatype}{\zxjf@zxjatypetrue}{}
+\AtBeginDocument{%
+ \unless\ifzxjf@zxjatype
+ \@ifpackageloaded{zxjatype}{%
+ \PackageError\zxjf@pkgname
+ {zxjatype must be loaded before me}\@ehc
+ }{}%
+ \fi}
+\ifzxjf@zxjatype\ifzxjf@prop
+ \PackageError\zxjf@pkgname
+ {Option 'prop' cannot be used with zxjatype}\@ehc
+ \zxjf@propfalse
+\fi\fi
+
+%% decide scale factor
+\ifx\zxjf@scale\relax
+ % If zxjatype is used, try \JaFontScale, \zxjt@scale,
+ % and \__zxjt_scale_tl.
+ \ifzxjf@zxjatype
+ \ifdefined\JaFontScale \let\zxjf@scale\JaFontScale
+ \else\ifdefined\zxjt@scale \let\zxjf@scale\zxjt@scale
+ \else\ifcsname __zxjt_scale_tl\endcsname
+ \letcs\zxjf@scale{__zxjt_scale_tl}
+ \fi\fi\fi
+ \fi
+ \ifx\zxjf@scale\relax % still unknown
+ % Try \Cjascale and \jsScale.
+ \ifdefined\Cjascale \let\zxjf@scale\Cjascale
+ \else\ifdefined\jsScale \let\zxjf@scale\jsScale
+ \fi\fi
+ \fi
+ \ifx\zxjf@scale\relax % still unknown
+ \def\zxjf@scale{1}%
+ \fi
+\fi
+
+%% resolve CJKshape
+\edef\zxjf@feat{%
+ \ifcase\zxjf@cjkshape % none
+ \or CJKShape=JIS1990,% 90jis
+ \or CJKShape=JIS2004,% jis2004
+ \fi
+ \zxjf@feat}
+
+%% \zxjf@xfeat
+% All fontspec options including scale.
+\edef\zxjf@xfeat{Scale=\zxjf@scale,\zxjf@feat}
+\bxDebug{zxjafont>>scale=\zxjf@scale/feat={\zxjf@feat}/%
+ preset=\zxjf@main@preset/\zxjf@sub@preset}
+
+%--------------------------------------- font setup helpers
+
+%% \zxjf@setmainfont{<attributes>}{<fam_name>}, etc.
+\ifzxjf@zxjatype
+\def\zxjf@setmainfont#1{\setjamainfont[\zxjf@xfeat,#1]}
+\def\zxjf@setsansfont#1{\setjasansfont[\zxjf@xfeat,#1]}
+\def\zxjf@setmonofont#1{\setjamonofont[\zxjf@xfeat,#1]}
+\def\zxjf@newfamily#1#2#3{%
+ \csedef{#1family}{%
+ \expandonce{\csname a#1family\endcsname}\noexpand\CJKfamily{#1}}%
+ \expandafter\newfontfamily\csname a#1family\endcsname[\zxjf@feat,#2]{#3}%
+ \setjafamilyfont{#1}[\zxjf@xfeat,#2]{#3}}
+\else
+\def\zxjf@setmainfont#1{\setmainfont[\zxjf@xfeat,#1]}
+\def\zxjf@setsansfont#1{\setsansfont[\zxjf@xfeat,#1]}
+\def\zxjf@setmonofont#1{\setmonofont[\zxjf@xfeat,#1]}
+\def\zxjf@newfamily#1#2{%
+ \expandafter\newfontfamily\csname #1family\endcsname[\zxjf@xfeat,#2]}
+\fi
+
+%--------------------------------------- preset japanese font mappings
+
+%% \zxjf@declare@preset{<name>}{<text>}, etc.
+\def\zxjf@declare@preset#1{%
+ \expandafter\zxjf@decl@preset@a\csname zxjf@the@preset@#1\endcsname}
+\def\zxjf@decl@preset@a#1{\@onlypreamble#1\def#1}
+\zxjf@declare@preset{}{}
+\@onlypreamble\zxjf@uniweight
+\def\zxjf@uniweight#1#2{%
+ \zxjf@uniweight@opt{#1}{#2}{}}
+\@onlypreamble\zxjf@uniweight@opt
+\def\zxjf@uniweight@opt#1#2#3{%
+ \zxjf@setmainfont{#3,BoldFont=#2}{#1}%
+ \zxjf@setsansfont{#3}{#2}%
+ \zxjf@setmonofont{#3}{#2}}
+\@onlypreamble\zxjf@multiweight
+\def\zxjf@multiweight#1#2#3#4#5{%
+ \zxjf@multiweight@opt{#1}{#2}{#3}{#4}{#5}{}}
+\@onlypreamble\zxjf@multiweight@opt
+\def\zxjf@multiweight@opt#1#2#3#4#5#6{%
+ \ifzxjf@oneweight
+ \zxjf@setmainfont{#6,BoldFont=#5}{#1}%
+ \zxjf@setsansfont{#6}{#5}%
+ \zxjf@setmonofont{#6}{#5}%
+ \else
+ \zxjf@setmainfont{#6,BoldFont=#2}{#1}%
+ \zxjf@setsansfont{#6,BoldFont=#4}{#3}%
+ \zxjf@setmonofont{#6,BoldFont=#4}{#3}%
+ \fi}
+%% \zxjf@declare@preset@with@prop{<name>}{<text>}
+\def\zxjf@declare@preset@with@prop#1#2{%
+ \zxjf@declare@preset{#1}{#2{RawFeature=-palt;-kern}}%
+ \zxjf@declare@preset{#1/prop}{#2{RawFeature=+palt;+kern}}}
+
+%% \zxjf@declare@preset@alias{<name1>}{<name2>}
+\def\zxjf@declare@preset@alias#1#2{%
+ \csletcs{zxjf@the@preset@#1}{zxjf@the@preset@#2}}
+%% \zxjf@declare@preset@alias@with@prop{<name1>}{<name2>}
+\def\zxjf@declare@preset@alias@with@prop#1#2{%
+ \zxjf@declare@preset@alias{#1}{#2}%
+ \zxjf@declare@preset@alias{#1/prop}{#2/prop}}
+
+%% \zxjf@use@preset{<name>}
+\def\zxjf@use@preset#1{%
+ \undef\zxjf@nxt
+ \ifzxjf@prop \letcs\zxjf@nxt{zxjf@the@preset@#1/prop}\fi
+ \unless\ifdefined\zxjf@nxt \letcs\zxjf@nxt{zxjf@the@preset@#1}\fi
+ \zxjf@nxt}
+
+%% definitions of main preset mappings
+\zxjf@declare@preset{ms}{%
+ \zxjf@uniweight{MS-Mincho}{MS-Gothic}}
+\zxjf@declare@preset{ms/prop}{%
+ \zxjf@uniweight{MS-PMincho}{MS-PGothic}}
+\zxjf@declare@preset{ms-hg}{%
+ \zxjf@multiweight{MS-Mincho}{HGMinchoE}%
+ {HGGothicM}{HGGothicE}{MS-Gothic}}
+\zxjf@declare@preset{ms-hg/prop}{%
+ \zxjf@multiweight{MS-PMincho}{HGPMinchoE}%
+ {HGPGothicM}{HGGothicE}{MS-PGothic}}
+\zxjf@declare@preset{ipa}{%
+ \zxjf@uniweight{IPAMincho}{IPAGothic}}
+\zxjf@declare@preset{ipa/prop}{%
+ \zxjf@uniweight{IPAPMincho}{IPAPGothic}}
+\zxjf@declare@preset{ipa-hg}{%
+ \zxjf@multiweight{IPAMincho}{HGMinchoE}%
+ {HGGothicM}{HGGothicE}{IPAGothic}}
+\zxjf@declare@preset{ipa-hg/prop}{%
+ \zxjf@multiweight{IPAPMincho}{HGPMinchoE}%
+ {HGPGothicM}{HGGothicE}{IPAPGothic}}
+\zxjf@declare@preset{ipaex}{%
+ \zxjf@uniweight{ipaexm.ttf}{ipaexg.ttf}}
+\zxjf@declare@preset{ipaex-hg}{%
+ \zxjf@multiweight{ipaexm.ttf}{HGSMinchoE}%
+ {HGSGothicM}{HGSGothicE}{ipaexg.ttf}}
+\zxjf@declare@preset{moga}{%
+ \zxjf@multiweight{MogaExMincho}{MogaExMincho Bold}%
+ {MogaExGothic}{MogaExGothic Bold}{MogaExGothic}}
+\zxjf@declare@preset{moga-90}{%
+ \zxjf@multiweight{MogaEx90Mincho}{MogaEx90Mincho Bold}%
+ {MogaEx90Gothic}{MogaEx90Gothic Bold}{MogaEx90Gothic}}
+\zxjf@declare@preset{ume}{%
+ \zxjf@multiweight{Ume Mincho}{Ume Mincho}%
+ {Ume Gothic}{Ume Gothic O5}{Ume Gothic O5}}
+\zxjf@declare@preset{kozuka-pro}{%
+ \zxjf@multiweight@opt{KozMinPro-Regular}{KozMinPro-Bold}%
+ {KozGoPro-Regular}{KozGoPro-Bold}%
+ {KozGoPro-Medium}{RawFeature=-palt;-kern}}
+\zxjf@declare@preset{kozuka-pro/prop}{%
+ \zxjf@multiweight@opt{KozMinPro-Regular}{KozMinPro-Bold}%
+ {KozGoPro-Regular}{KozGoPro-Bold}%
+ {KozGoPro-Medium}{RawFeature=+palt;+kern}}
+\zxjf@declare@preset{kozuka-pr6}{%
+ \zxjf@multiweight@opt{KozMinProVI-Regular}{KozMinProVI-Bold}%
+ {KozGoProVI-Regular}{KozGoProVI-Bold}%
+ {KozGoProVI-Medium}{RawFeature=-palt;-kern}}
+\zxjf@declare@preset{kozuka-pr6/prop}{%
+ \zxjf@multiweight@opt{KozMinProVI-Regular}{KozMinProVI-Bold}%
+ {KozGoProVI-Regular}{KozGoProVI-Bold}%
+ {KozGoProVI-Medium}{RawFeature=+palt;+kern}}
+\zxjf@declare@preset{kozuka-pr6n}{%
+ \zxjf@multiweight@opt{KozMinPr6N-Regular}{KozMinPr6N-Bold}%
+ {KozGoPr6N-Regular}{KozGoPr6N-Bold}%
+ {KozGoPr6N-Medium}{RawFeature=-palt;-kern}}
+\zxjf@declare@preset{kozuka-pr6n/prop}{%
+ \zxjf@multiweight@opt{KozMinPr6N-Regular}{KozMinPr6N-Bold}%
+ {KozGoPr6N-Regular}{KozGoPr6N-Bold}%
+ {KozGoPr6N-Medium}{RawFeature=+palt;+kern}}
+\zxjf@declare@preset{hiragino-pro}{%
+ \zxjf@multiweight@opt{Hiragino Mincho Pro W3}{Hiragino Mincho Pro W6}%
+ {Hiragino Kaku Gothic Pro W3}{Hiragino Kaku Gothic Pro W6}%
+ {Hiragino Kaku Gothic Pro W6}{RawFeature=-palt;-kern}}
+\zxjf@declare@preset{hiragino-pro/prop}{%
+ \zxjf@multiweight@opt{Hiragino Mincho Pro W3}{Hiragino Mincho Pro W6}%
+ {Hiragino Kaku Gothic Pro W3}{Hiragino Kaku Gothic Pro W6}%
+ {Hiragino Kaku Gothic Pro W6}{RawFeature=+palt;+kern}}
+\zxjf@declare@preset{hiragino-pron}{%
+ \zxjf@multiweight@opt{Hiragino Mincho ProN W3}{Hiragino Mincho ProN W6}%
+ {Hiragino Kaku Gothic ProN W3}{Hiragino Kaku Gothic ProN W6}%
+ {Hiragino Kaku Gothic ProN W6}{RawFeature=-palt;-kern}}
+\zxjf@declare@preset{hiragino-pron/prop}{%
+ \zxjf@multiweight@opt{Hiragino Mincho ProN W3}{Hiragino Mincho ProN W6}%
+ {Hiragino Kaku Gothic ProN W3}{Hiragino Kaku Gothic ProN W6}%
+ {Hiragino Kaku Gothic ProN W6}{RawFeature=+palt;+kern}}
+\zxjf@declare@preset{morisawa-pro}{%
+ \zxjf@multiweight@opt{A-OTF-RyuminPro-Light.otf}{A-OTF-FutoMinA101Pro-Bold.otf}%
+ {A-OTF-GothicBBBPro-Medium.otf}{A-OTF-FutoGoB101Pro-Bold.otf}%
+ {A-OTF-GothicBBBPro-Medium.otf}{RawFeature=-palt;-kern}}
+\zxjf@declare@preset{morisawa-pro/prop}{%
+ \zxjf@multiweight@opt{A-OTF-RyuminPro-Light.otf}{A-OTF-FutoMinA101Pro-Bold.otf}%
+ {A-OTF-GothicBBBPro-Medium.otf}{A-OTF-FutoGoB101Pro-Bold.otf}%
+ {A-OTF-GothicBBBPro-Medium.otf}{RawFeature=+palt;+kern}}
+\zxjf@declare@preset{morisawa-pr6n}{%
+ \zxjf@multiweight@opt{A-OTF-RyuminPr6N-Light.otf}{A-OTF-FutoMinA101Pr6N-Bold.otf}%
+ {A-OTF-GothicBBBPr6N-Medium.otf}{A-OTF-FutoGoB101Pr6N-Bold.otf}%
+ {A-OTF-GothicBBBPr6N-Medium.otf}{RawFeature=-palt;-kern}}
+\zxjf@declare@preset{morisawa-pr6n/prop}{%
+ \zxjf@multiweight@opt{A-OTF-RyuminPr6N-Light.otf}{A-OTF-FutoMinA101Pr6N-Bold.otf}%
+ {A-OTF-GothicBBBPr6N-Medium.otf}{A-OTF-FutoGoB101Pr6N-Bold.otf}%
+ {A-OTF-GothicBBBPr6N-Medium.otf}{RawFeature=+palt;+kern}}
+\zxjf@declare@preset{yu-win}{%
+ \zxjf@multiweight@opt{YuMincho-Regular}{YuMincho-Demibold}%
+ {YuGothic-Regular}{YuGothic-Bold}%
+ {YuGothic-Regular}{RawFeature=-palt;-kern}}
+\zxjf@declare@preset{yu-win/prop}{%
+ \zxjf@multiweight@opt{YuMincho-Regular}{YuMincho-Demibold}%
+ {YuGothic-Regular}{YuGothic-Bold}%
+ {YuGothic-Regular}{RawFeature=+palt;+kern}}
+\zxjf@declare@preset@with@prop{yu-win10}{%
+ \zxjf@multiweight@opt{YuMincho-Regular}{YuMincho-Demibold}%
+ {YuGothic-Regular}{YuGothic-Bold}%
+ {YuGothic-Medium}}
+\zxjf@declare@preset{yu-osx}{%
+ \zxjf@multiweight@opt{YuMincho-Medium}{YuMincho-Demibold}%
+ {YuGothic-Medium}{YuGothic-Bold}%
+ {YuGothic-Medium}{RawFeature=-palt;-kern}}
+\zxjf@declare@preset{yu-osx/prop}{%
+ \zxjf@multiweight@opt{YuMincho-Medium}{YuMincho-Demibold}%
+ {YuGothic-Medium}{YuGothic-Bold}%
+ {YuGothic-Medium}{RawFeature=+palt;+kern}}
+\zxjf@declare@preset@with@prop{sourcehan}{%
+ \zxjf@multiweight@opt{SourceHanSerif-Regular}{SourceHanSerif-Bold}%
+ {SourceHanSans-Regular}{SourceHanSans-Bold}%
+ {SourceHanSans-Medium}}
+\zxjf@declare@preset@with@prop{sourcehan-jp}{%
+ \zxjf@multiweight@opt{SourceHanSerifJP-Regular}{SourceHanSerifJP-Bold}%
+ {SourceHanSansJP-Regular}{SourceHanSansJP-Bold}%
+ {SourceHanSansJP-Medium}}
+\zxjf@declare@preset@with@prop{noto}{%
+ \zxjf@multiweight@opt{NotoSerifCJKjp-Regular}{NotoSerifCJKjp-Bold}%
+ {NotoSansCJKjp-Regular}{NotoSansCJKjp-Bold}%
+ {NotoSansCJKjp-Medium}}
+\zxjf@declare@preset@with@prop{noto-jp}{%
+ \zxjf@multiweight@opt{NotoSerifJP-Regular}{NotoSerifJP-Bold}%
+ {NotoSansJP-Regular}{NotoSansJP-Bold}%
+ {NotoSansJP-Medium}}
+%(alias)
+\zxjf@declare@preset@alias@with@prop{kozuka}{kozuka-pro}
+\zxjf@declare@preset@alias@with@prop{morisawa}{morisawa-pro}
+\zxjf@declare@preset@alias{moga-mobo-ex}{moga}
+\zxjf@declare@preset@alias{noto-otf}{noto}
+
+%% definitions of sub preset mappings
+\zxjf@declare@preset{hg}{%
+ \zxjf@newfamily{hgmc}{BoldFont=HGSMinchoE}{HGSMinchoB}%
+ \zxjf@newfamily{hgpr}{}{HGSSoeiPresenceEB}%
+ \zxjf@newfamily{hggt}{BoldFont=HGSGothicE}{HGSGothicM}%
+ \zxjf@newfamily{hggu}{}{HGSSoeiKakugothicUB}%
+ \zxjf@newfamily{hgmg}{}{HGMaruGothicMPRO}%
+ \zxjf@newfamily{hgkk}{}{HGSKyokashotai}%
+ \zxjf@newfamily{hgks}{}{HGSeikaishotaiPRO}%
+ \zxjf@newfamily{hggs}{}{HGSGyoshotai}%
+ \zxjf@newfamily{hgpp}{}{HGSSoeiKakupoptai}%
+}
+\zxjf@declare@preset{hg/prop}{%
+ \zxjf@newfamily{hgmc}{BoldFont=HGPMinchoE}{HGPMinchoB}%
+ \zxjf@newfamily{hgpr}{}{HGPSoeiPresenceEB}%
+ \zxjf@newfamily{hggt}{BoldFont=HGPGothicE}{HGPGothicM}%
+ \zxjf@newfamily{hggu}{}{HGPSoeiKakugothicUB}%
+ \zxjf@newfamily{hgmg}{}{HGMaruGothicMPRO}%
+ \zxjf@newfamily{hgkk}{}{HGPKyokashotai}%
+ \zxjf@newfamily{hgks}{}{HGSeikaishotaiPRO}%
+ \zxjf@newfamily{hggs}{}{HGPGyoshotai}%
+ \zxjf@newfamily{hgpp}{}{HGPSoeiKakupoptai}%
+}
+\zxjf@declare@preset{hiraginomg-pro}{%
+ \zxjf@newfamily{hmg}{RawFeature=-palt;-kern}{Hiragino Maru Gothic Pro W4}}
+\zxjf@declare@preset{hiraginomg-pro/prop}{%
+ \zxjf@newfamily{hmg}{RawFeature=+palt;+kern}{Hiragino Maru Gothic Pro W4}}
+\zxjf@declare@preset{hiraginomg-pron}{%
+ \zxjf@newfamily{hmg}{RawFeature=-palt;-kern}{Hiragino Maru Gothic ProN W4}}
+\zxjf@declare@preset{hiraginomg-pron/prop}{%
+ \zxjf@newfamily{hmg}{RawFeature=+palt;+kern}{Hiragino Maru Gothic ProN W4}}
+\zxjf@declare@preset@alias{hiraginomg}{hiraginomg-pro}
+\zxjf@declare@preset@alias{hiraginomg/prop}{hiraginomg-pro/prop}
+
+\zxjf@declare@preset{mobo}{%
+ \zxjf@newfamily{mobo}{Bold=MoboExGothic Bold}{MoboExGothic}}
+\zxjf@declare@preset{mobo-90}{%
+ \zxjf@newfamily{mobo}{Bold=MoboEx90Gothic Bold}{MoboEx90Gothic}}
+\zxjf@declare@preset{maruberi}{%
+ \zxjf@newfamily{mmg}{}{MotoyaLMaru}}
+
+%% ... and invokes the specified one!
+\zxjf@use@preset{\zxjf@main@preset}
+\@for\zxjf@x:=\zxjf@sub@preset\do{\zxjf@use@preset\zxjf@x}
+
+%--------------------------------------- and some extras
+
+%%<*> \useeasyjapanesesettings
+\newcommand*\useeasyjapanesesettings{%
+\XeTeXlinebreaklocale "ja"\relax
+\XeTeXlinebreakskip=0pt plus 1pt minus 0.1pt\relax
+\XeTeXlinebreakpenalty=0\relax
+}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/language/japanese/zxjafont/zxjafont.tex b/language/japanese/zxjafont/zxjafont.tex
new file mode 100644
index 0000000000..c3b52a9358
--- /dev/null
+++ b/language/japanese/zxjafont/zxjafont.tex
@@ -0,0 +1,285 @@
+% 文字コードは UTF-8
+% xelatex で組版する
+\documentclass[xelatex,ja=standard,jafont=ipaex,
+ a4paper]{bxjsarticle}
+\xeCJKDeclareCharClass{CJK}{`■,`※}
+\usepackage{color}
+\definecolor{myblue}{rgb}{0,0,0.75}
+\definecolor{mygreen}{rgb}{0,0.45,0}
+\usepackage[colorlinks,hyperfootnotes=false]{hyperref}
+\hypersetup{linkcolor=myblue,urlcolor=mygreen}
+\usepackage{bxtexlogo}
+\bxtexlogoimport{*}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+\newcommand{\PkgVersion}{0.5}
+\newcommand{\PkgDate}{2019/06/29}
+\newcommand{\Pkg}[1]{\textsf{#1}}
+\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
+\newcommand{\Note}{\par\noindent ※}
+\newcommand{\Means}{:\ }
+%-----------------------------------------------------------
+\begin{document}
+\title{\Pkg{zxjafont} パッケージ(v\PkgVersion)}
+\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')}
+\date{v\PkgVersion\quad[\PkgDate]}
+\maketitle
+
+%===========================================================
+\section{概要}
+
+{\XeLaTeX}+\Pkg{fontspec}でのフォントファミリ名を直接指定する方式は
+「好きなフォントを指定する」という点では、
+{\pLaTeX}\>よりも格段に使い易いが、
+日本語を扱うためには必ず何らかの設定を行う必要があり、
+これが煩わしく感じられる場合もある。
+本パッケージでは、{\pLaTeX}\>において
+一般的に行われている設定を予め用意しておいて、
+簡単に呼び出せるようにしている。
+
+\paragraph{前提環境}\mbox{}
+\begin{itemize}
+\item フォーマット\Means {\LaTeX}
+\item エンジン\Means {\XeTeX}
+\item 依存パッケージ\Means \Pkg{fontspec}パッケージ
+\end{itemize}
+
+%===========================================================
+\section{使い方}
+
+以下のようにパッケージを読み込むだけである。
+(ユーザ命令・環境はない。)
+\begin{quote}\small
+|\usepackage[|\Meta{メイン設定}|,|\Meta{サブ設定}|,|%
+\Meta{他オプション}|]{zxjafont}|
+\end{quote}
+
+\Meta{メイン設定}は1つだけ指定できるが、
+\Meta{サブ設定}と\Meta{他オプション}は任意個数指定可能である。
+もし\Pkg{fontspec}が未読込の場合は自動的に読み込む。
+{\XeLaTeX}\>には和文と欧文の元来の区別がないので、
+このパッケージで指定するフォントが全ての文字に通用する。
+ただし、\Pkg{zxjatype}パッケージでは和文と欧文を区別するので、
+それと併用の場合は和文のみにフォント設定が適用される。
+
+%-------------------
+\subsection{メイン設定}
+
+総称ファミリの設定
+(\Pkg{fontspec}の |\setmainfont|、|\setsansfont|、|\setmonofont|)
+を行うもの。
+
+\Note 「メイン設定」は\Pkg{pxchfon}パッケージにおける
+「プリセット設定」をそのまま
+(ただし明朝・ゴシック2ウェイトに縮減して)
+引き継いでいる。
+設定内容の詳細については、\Pkg{pxchfon}の説明書を
+参照してほしい。
+
+\paragraph{単ウェイト用の設定}
+明朝・ゴシック各々1ウェイトのみを用いる設定。
+セリフ(|\rmfamily|)に明朝、
+サンセリフ(|\sffamily|)と等幅(|\ttfamily|)にゴシックを割り当てる。
+さらに、{\pLaTeX}\>の習慣に合わせて、
+セリフの太字(|\bfseries|)もゴシックにする。
+(これは必ずしも好ましい設定ではないことに注意。)
+
+\begin{itemize}
+\item |ms|\Means
+MS フォント。
+\item |ipa|\Means
+IPAフォント。
+\item |ipaex|\Means
+IPAexフォント。
+\end{itemize}
+\Note {\XeTeX}\>は「フォント非埋込のPDF生成」に対応していない。
+
+\paragraph{多ウェイト用の設定}
+明朝・ゴシック各々2ウェイトを用いる設定
+\footnote{\Pkg{fontspec}では3ウェイト以上の設定ができない。)}。
+セリフに明朝、サンセリフと等幅にゴシックを割り当て、
+各々について通常(|\mdseries|)と太字(|\bfseries|)
+を個別に設定する。
+\begin{itemize}
+\item |ms-hg|\Means
+ MSフォント + HGフォント。
+ \Note HGフォント = Microsoft Office 付属の日本語フォント
+\item |ipa-hg|\Means
+ IPAフォント + HGフォント。
+\item |ipaex-hg|\Means
+ IPAexフォント + HGフォント。
+\item |moga|\Means
+ Mogaフォント(2004JIS字形)。
+ \Note MogaEx系統が用いられる。
+\item |moga-90|\Means
+ Mogaフォント(90/2000JIS字形)。
+ \Note MogaEx90系統が用いられる。
+\item |ume|\Means
+ 梅フォント。
+\item |kozuka-pro|\Means
+ 小塚フォント(Pro版)。
+\item |kozuka-pr6|\Means
+ 小塚フォント(Pr6版)。
+\item |kozuka-pr6n|\Means
+ 小塚フォント(Pr6N版)。
+\item |hiragino-pro|\Means
+ ヒラギノフォント基本6書体セット(Pro/Std版)。
+\item |hiragino-pron|\Means
+ ヒラギノフォント基本6書体セット(ProN/StdN版)。
+\item |morisawa-pro|\Means
+ モリサワフォント基本7書体(Pro版)。
+\item |morisawa-pr6n|\Means
+ モリサワフォント基本7書体(Pr6N版)。
+\item |yu-win|\Means
+ 游書体(Windows~8.1搭載版)。
+\item |yu-win10|\Means
+ 游書体(Windows~10搭載版)。%TODO
+\item |yu-osx|\Means
+ 游書体(macOS搭載版)。
+\item |sourcehan|\Means
+ Source Han Serif(源ノ明朝)+ Source Han Sans(源ノ角ゴシック)、
+ 非サブセット版%TODO
+ \footnote{つまり、地域別サブセットOTF版以外のもの。
+ 後掲の |noto| も同じ。}。
+\item |sourcehan-jp|\Means
+ Source Han Serif + Source Han Sans、
+ 日本用地域別サブセット版。
+\item |noto|\Means
+ Noto Serif CJK + Noto Sans CJK、
+ 非サブセット版。
+\item |noto-jp|\Means
+ Noto Serif JP + Noto Sans JP、
+ 日本用地域別サブセット版。
+\end{itemize}
+
+\paragraph{他パッケージとの互換用のオプション}
+\mbox{}
+%\Pkg{ptex-fontmaps}のプリセット名を別名として用意した。
+
+\begin{itemize}
+\item |kozuka|\Means
+ |kozuka-pro| の別名。
+ (\Pkg{ptex-fontmaps}でのプリセット名。)
+\item |morisawa|\Means
+ |morisawa-pro| の別名。
+ (\Pkg{ptex-fontmaps}でのプリセット名。)
+\item |moga-mobo-ex|\Means
+ |moga| の別名。
+ (\Pkg{ptex-fontmaps}でのプリセット名。)
+\item |noto-otf|\Means
+ |noto| の別名。
+ (\Pkg{luatexja-preset}でのプリセット名。)
+\end{itemize}
+
+\Note なお、|hiragino-pro| と同義の\Pkg{ptex-fontmaps}の
+プリセット名は |hiragino| であるが、本パッケージの |hiragino| は
+旧版で用いられていた設定であり |hiragino-pro| とは異なる。
+
+\paragraph{廃止されたプリセット設定}
+
+0.2a版以前で用意されていた次のプリセット設定は、
+0.5版において廃止された。
+現在は指定するとエラーが発生する。
+
+\begin{quote}
+|kozuka4|、|kozuka6|、|kozuka6n|、|hiragino|、
+|ms-dx|、|ipa-dx|、|hiragino-dx|
+\end{quote}
+
+%-------------------
+\subsection{サブ設定}
+
+\Pkg{fontspec}では使用するフォントを |\newfontfamily| 命令で
+増やすことができる。
+それを利用した追加設定である。
+
+\begin{itemize}
+\item |hg|\Means
+Microsoft Officeのフォント(HGフォント)に対応する、
+以下のファミリ命令が定義される。
+\begin{itemize}
+\item |\hgmcfamily|\Means HGS明朝B、太字=HGS明朝E。
+\item |\hgprfamily|\Means HGS創英プレゼンスEB
+\item |\hggtfamily|\Means HGSゴシックM、太字=HGSゴシックE。
+\item |\hggufamily|\Means HGS創英角ゴシックUB
+\item |\hgmgfamily|\Means HG丸ゴシックM-PRO
+\item |\hgkkfamily|\Means HGS教科書体
+\item |\hgksfamily|\Means HG正楷書体-PRO
+\item |\hggsfamily|\Means HGS行書体
+\item |\hgppfamily|\Means HGS創英角ポップ体
+\end{itemize}
+
+\item |hiraginomg|\Means
+ヒラギノの丸ゴシックを使う設定。
+\begin{itemize}
+\item |\hmgfamily|\Means ヒラギノ丸ゴ Pro W4
+\end{itemize}
+
+\item |mobo|\Means
+Moboフォント(2004JIS字形)を使う設定。
+\begin{itemize}
+\item |\mobofamily|\Means Moboフォント(2004JIS字形)
+\end{itemize}
+
+\item |mobo-90|\Means
+Moboフォント(90/2000JIS字形)を使う設定。
+\begin{itemize}
+\item |\mobofamily|\Means Moboフォント(90/2000JIS字形)
+\end{itemize}
+
+\item |maruberi|\Means
+マルベリフォントを使う設定。
+\begin{itemize}
+\item |\mmgfamily|\Means モトヤLマルベリ3等幅
+\end{itemize}
+\end{itemize}
+\Note \Pkg{fontspec}では取り扱うフォントのウェイトを通常(|\mdseries|)
+と太字(|\bfseries|)の2つに制限している。
+多くのOSでの扱いに合わせているようである。
+
+%-------------------
+\subsection{その他のオプション}
+
+\begin{itemize}
+\item |oneweight|\Means
+複数ウェイト用のメイン設定を単ウェイトとして用いる。
+\Note \Pkg{pxchfon}の説明書において |\setminchofont|
+と |\setgothicfont| で設定されているウェイトのフォント
+が用いられる。
+\item |nooneweight|\Means
+|oneweight|の否定。
+
+\item |prop|\Means
+プロポーショナル幅のフォントを用いる。
+例えば、「IPA明朝」の代わりに「IPA P明朝」、
+「HGS行書体」の代わりに「HGP行書体」を指定する。
+既定で用いるのは等幅のフォントだが、
+「欧文のみプロポーショナル」の変種(HGフォントの場合「HGS~」名称のもの)
+がある場合はそれを優先させている。
+\Note \Pkg{zxjatype}を用いる場合は、
+和文は等幅フォントを用いることが前提なので、
+このオプションは指定できない(エラーになる)。
+\item |noprop|\Means
+|prop|の否定。
+
+\item |scale=|\Meta{実数}\Means
+スケール値(\Pkg{fontspec}の |Scale| 属性の値)。
+既定値は、\Pkg{BXjscls}の文書クラスおよび
+\Pkg{zxjatype}パッケージで指定されている場合はその値、
+なければ1となる。
+
+\item |jis90|/|90jis|\Means
+90JIS字形(2000JIS字形)の使用を指定する。
+
+\item |jis2004|/|2004jis|\Means
+2004JIS字形の使用を指定する。
+
+\item |feature={|\Meta{属性リスト}|}|\Means
+このパッケージで指定されるフォント全体に通用する
+\Pkg{fontspec}の属性の指定。
+
+\end{itemize}
+
+%===========================================================
+\end{document}
+%% EOF
diff --git a/language/japanese/zxjatype/LICENSE b/language/japanese/zxjatype/LICENSE
new file mode 100644
index 0000000000..fbe40a0146
--- /dev/null
+++ b/language/japanese/zxjatype/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/language/japanese/zxjatype/README-ja.md b/language/japanese/zxjatype/README-ja.md
new file mode 100644
index 0000000000..9574b7b40c
--- /dev/null
+++ b/language/japanese/zxjatype/README-ja.md
@@ -0,0 +1,86 @@
+ZXjatype バンドル
+=================
+
+LaTeX: XeLaTeX と xeCJK パッケージを利用した日本語組版の支援
+
+本パッケージは、日本語組版に適した [xeCJK パッケージ]の設定を提供する。
+
+[xeCJK パッケージ]: https://www.ctan.org/pkg/xecjk
+
+### 前提環境
+
+ * フォーマット: LaTeX
+ * エンジン: XeTeX(0.9995 版以降)
+ * 前提パッケージ:
+ - etoolbox
+ - xeCJK
+
+### インストール
+
+ - `*.sty` → $TEXMF/tex/xelatex/zxjatype/
+
+
+zxjatype パッケージ ― 本体
+---------------------------
+
+まだ解説が書けておりません…。基本的な機能の説明については以下の Web
+ページで行っていますのでそちらを参照してください。
+
+ * [ZXjatype パッケージ]
+ (http://zrbabbler.sp.land.to/zxjatype.html)
+
+
+更新履歴
+--------
+
+ * Version 0.6c ‹2018/05/03›
+ - バグ修正。
+
+ * Version 0.6b ‹2017/08/03›
+ - (試験的) `(no)useinhibitglue` オプション。
+ - (試験的) `(no)kanakinsoku` オプション。
+
+ * Version 0.6a ‹2017/08/02›
+ - バグ修正。
+
+ * Version 0.6 ‹2012/09/09›
+ - xeCJK 3.x 版に対応させる。xeCJK 3.x 版用に新たに実装されたコードは
+ 2.x 版と併用できないので、zxjatype 0.5 版のコードをそのまま残して
+ xeCJK が 2.x 版の場合はそちらを有効にする。
+ - 実装上の制限により、日本語用に特別に調整した句読点スタイル quasijis
+ の実装を止めた。日本語には、xeCJK で用意された句読点スタイルの
+ fullwidth を使用する。
+ - `\setCJK...font` 命令でも `\setjafontscale` の設定が効くようにする、
+ すなわち `\setja...font` 命令の動作と同じにする。
+ - `\setjafontscale{}` (空引数)で和文スケール設定を付加しない設定に切り
+ 替えられるようにした。
+ - `\[no]usejafamilyinverbatim` 命令を廃止した。
+
+ * Version 0.5 ‹2012/05/01›
+ - 「行頭禁則の仮名」+「開き括弧」の間の空きが入らない現象を修正。
+ - xeCJK の「大きな」内部マクロに対してパッチを当てる処理を etoolbox
+ の `\patchcmd` で行うように変更。
+
+ * Version 0.4 ‹2010/08/15›
+ - xeCJK 2.3.10 版/2.3.15 版での動作を確認。
+ - 一部の命令の名前を変更。基本的にこのパッケージで提供される命令の名前は
+ \CJK.. や \xeCJK.. で始まらないようにした。(ただしその結果として、命令
+ の出自によって「接頭辞」がまちまちになってしまっている。)
+
+ * Version 0.3a ‹2009/11/18›
+
+ * Version 0.3 ‹2009/11/16›
+ - `\[no]jafamilyinverbatim` 追加。
+ - `\textrawja`/`\textrawen` 追加。
+ - `rawjatext`/`rawentext` 追加。
+ - bxbase の `\Ux`/`\UI` のドライバを追加。
+
+ * Version 0.2a ‹2009/11/01›
+ - リリース作業のミスで生じたバグを修正。
+
+ * Version 0.2 ‹2009/10/25›
+ - 最初の公開版。
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/zxjatype/README.md b/language/japanese/zxjatype/README.md
new file mode 100644
index 0000000000..2c5dda651d
--- /dev/null
+++ b/language/japanese/zxjatype/README.md
@@ -0,0 +1,60 @@
+ZXjatype Package
+================
+
+LaTeX: Standard conforming typesetting of Japanese, for XeLaTeX
+
+This package tries to provide working configuration of the [xeCJK package]
+suitable for Japanese typesetting.
+
+[xeCJK package]: https://www.ctan.org/pkg/xecjk
+
+### System requirement
+
+ * TeX format: LaTeX
+ * TeX engine: XeTeX (v0.9995 or later)
+ * Dependent packages:
+ - etoolbox
+ - xeCJK
+
+### Installation
+
+ - `*.sty` → $TEXMF/tex/xelatex/zxjatype/
+
+
+The zxjatype package
+--------------------
+
+### Package loading
+
+ \usepackage[<option>...,<xeCJK option>...]{zxjatype}
+
+The following options are available:
+
+ * `default`: Enables the setting for Japanese document from the
+ beginning.
+ * `nodefault`: Negation of `default`. The default settings of xeCJK
+ will used.
+
+All other options are passed to xeCJK.
+
+### Usage
+
+ * `\zxjapanesestyle`: Applies the setting for Japanese document.
+
+Revision History
+----------------
+
+ * Version 0.6c ‹2018/05/03›
+ * Version 0.6b ‹2017/08/03›
+ * Version 0.6a ‹2017/08/02›
+ * Version 0.6 ‹2012/09/09›
+ * Version 0.5 ‹2012/05/01›
+ * Version 0.4 ‹2010/08/15›
+ * Version 0.3a ‹2009/11/18›
+ * Version 0.3 ‹2009/11/16›
+ * Version 0.2a ‹2009/11/01›
+ * Version 0.2 ‹2009/10/25›
+
+--------------------
+Takayuki YATO (aka. "ZR")
+https://github.com/zr-tex8r
diff --git a/language/japanese/zxjatype/example/example.pdf b/language/japanese/zxjatype/example/example.pdf
new file mode 100644
index 0000000000..b7db2c2240
--- /dev/null
+++ b/language/japanese/zxjatype/example/example.pdf
Binary files differ
diff --git a/language/japanese/zxjatype/example/example.tex b/language/japanese/zxjatype/example/example.tex
new file mode 100644
index 0000000000..3101ad53a5
--- /dev/null
+++ b/language/japanese/zxjatype/example/example.tex
@@ -0,0 +1,96 @@
+\documentclass[a4paper]{bxjsarticle}
+\usepackage[oldxetex]{zxjatype}
+\setjamainfont{IPA明朝}
+\setjasansfont{IPAゴシック}
+\setjamonofont{IPAゴシック}
+\usepackage{xltxtra}
+% 欧文は既定の LM フォント
+\begin{document}
+\title{{\XeLaTeX}で日本語する件について}
+\author{ZR}
+\date{2010年\ 某月\ 某日}
+\maketitle
+
+\section{{\XeTeX}\>の紹介}
+
+\subsection{{\XeTeX}\>とは}
+
+{\XeTeX}\>はJonathan Kew氏による\>{\TeX}\>の拡張で符号空間を
+Unicode全体(BMP以外も含む)に拡大したものである。
+既存の\>{\TeX}\>のUnicode拡張としてはOmega(Ω)
+があるが、{\XeTeX}\>はこれとは別の拡張となっている。%
+(なお、Omegaの後継にあたるUnicode拡張\>{\TeX}\>が\>%
+{Lua\TeX}\>である。)
+
+{\XeTeX}\>のもう一つの大きな特徴は、現在の標準的なフォント技術を
+内部に取り込んでいることである。
+元々の\>{\TeX}\>が「特定の技術基盤に依存しない」という思想で設計されている
+ことはよく知られているが、これはフォント関係の技術についても当てはまり、
+フォントの扱いは\>{\TeX}\>本体(すなわち\>{\TeX}\>ソースをDVI%
+ファイルに変換する)ではなくDVIウェア(DVIファイルを扱う
+ソフトウェア)が行う。
+このため、{\TeX}\>の機能自体は30年前からほとんど変わっていないにも
+関わらず、dvipdfmxと組み合わせてOpenTypeフォントを埋め込んだ%
+PDF文書を作成するということが可能になっている。
+しかしその代償として、例えば新しいフォントを使えるようにするために一定の作業が
+必要になるなどの短所を持ち合わせている。
+{\XeTeX}\>はこの点に関して「非依存性」を捨てて、システムで使用可能な
+フォントを直接扱うことで、何も設定しなくても好きなフォントを使うことが可能に
+なっている。
+また、従来の\>{\TeX}\>では難しい、フォントのもつ情報を利用した高度なリガチャ・
+アクセント付加・位置異形の処理も自由に使うことが可能になっている。
+
+\subsection{{\XeTeX}\>の出力例}
+
+{\XeTeX}\>のもつ能力の一端を示す例をあげる。
+これは\>{\XeLaTeX}({\XeTeX}\>上で動く\>{\LaTeX})の文書である。
+
+\jafamilyinverbatim % verbatim を和文フォントで出力
+\begin{quote}\small\begin{verbatim}
+% このファイルの文字コードは UTF-8
+\documentclass[a4paper]{article}
+\usepackage{xltxtra} % これは後で解説
+\newfontfamily\fchr{Charis SIL} % \fchr でフォント“Charis SIL”に切替
+\newfontfamily\fipm{IPA明朝} % \fipm でフォント“IPA明朝”に切替
+ % \faru でデーヴァナーガリー文字用の設定を施した“Arial Unicode MS”に切替
+\newfontfamily\faru[Script=Devanagari]{Arial Unicode MS}
+ % \showUC は何の変哲のない LaTeX のマクロ
+\newcommand*\showUC[1]{\ \texttt{\footnotesize U+#1}}
+\begin{document}
+\begin{itemize}
+\item {\fipm 土\symbol{"571F}}\showUC{571F} /
+ {\fipm 圡\symbol{"5721}}\showUC{5721} /
+ {\fipm 𡈽\symbol{"2123D}}\showUC{2123D}
+\item {\fchr j}\showUC{006A} + {\fchr\symbol{"0302}}\showUC{0302}
+ = {\fchr j\symbol{"0302}}
+\item {\fipm か}\showUC{304B} + {\fipm\symbol{"309A}}\showUC{309A}
+ = {\fipm か\symbol{"309A}}
+\item {\faru \symbol{"915}}\showUC{0915} + {\faru\symbol{"93F}}\showUC{093F}
+ = {\faru \symbol{"915}\symbol{"93F}}
+\end{itemize}
+
+\end{document}
+\end{verbatim}\end{quote}
+
+上の文書をxelatexコマンドで組版すると以下の出力を含む%
+PDF文書が得られる。
+
+\begin{center}
+\frame{\includegraphics{xetexsamp01.pdf}}
+\end{center}
+
+\nojafamilyinverbatim % verbatim を欧文フォントで出力
+
+上の文書において、\verb|\symbol{"xx}|\>は符号位置がxx(16進)である
+文字を出力する\>{\LaTeX}\>コマンドである。
+{\XeLaTeX}\>ではこれがUnicode符号空間で使えることが出力の
+1行目から判る。%
+(従来の\>{\LaTeX}\>では8ビットの値のみ。)
+勿論、UTF-8で直接書いた文字も出力されている。
+2行目以下ではUnicode結合文字を用いた文字合成の例を示している。%
+\verb|j\symbol{"0302}|\>はjの直後にU+0302の文字
+(結合曲アクセント)を書いたのと同じで、これはUnicodeの規則で
+「ĵ(曲アクセント付j)」を表す。
+2行目を見ると正しく合成が行われていることが判る。
+
+\end{document}
diff --git a/language/japanese/zxjatype/example/xetexsamp01.pdf b/language/japanese/zxjatype/example/xetexsamp01.pdf
new file mode 100644
index 0000000000..27fa004c44
--- /dev/null
+++ b/language/japanese/zxjatype/example/xetexsamp01.pdf
Binary files differ
diff --git a/language/japanese/zxjatype/zxjatype.sty b/language/japanese/zxjatype/zxjatype.sty
new file mode 100644
index 0000000000..dba68ee443
--- /dev/null
+++ b/language/japanese/zxjatype/zxjatype.sty
@@ -0,0 +1,1041 @@
+%%
+%% This is file 'zxjatype.sty'.
+%%
+%% Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zxjatype}[2018/05/03 v0.6c ZX Japanese typeset]
+\RequirePackage{ifxetex}\RequireXeTeX
+
+%% code guards
+\edef\zxjt@restore@codes{%
+ \catcode34=\the\catcode34%
+ \catcode39=\the\catcode39%
+ \catcode43=\the\catcode43%
+ \catcode45=\the\catcode45%
+ \catcode46=\the\catcode46%
+ \catcode47=\the\catcode47%
+ \catcode58=\the\catcode58%
+ \catcode60=\the\catcode60%
+ \catcode62=\the\catcode62%
+ \catcode63=\the\catcode63%
+ \catcode94=\the\catcode94%
+ \catcode96=\the\catcode96%
+ \endlinechar=\the\endlinechar%
+\relax}
+\catcode34=12 % <">
+\catcode39=12 % <'>
+\catcode43=12 % <+>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode60=12 % <<>
+\catcode62=12 % <>>
+\catcode63=12 % <?>
+\catcode94=7 % <^>
+\catcode96=12 % <`>
+\AtEndOfPackage{%
+ \zxjt@restore@codes
+ \let\zxjt@restore@codes\@undefined
+}
+\endlinechar=13 %
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% BOOTSTRAP CODE
+%
+
+%% definitions
+\def\zxjt@pkgname{zxjatype}
+\newif\ifzxjt@default
+\newif\ifzxjt@checksingle
+\newif\ifzxjt@adjustcharclass
+\newif\ifzxjt@kanakinsoku
+\newif\ifzxjt@useinhibitglue
+\providecommand*\bxDebug{\@gobble}
+
+%% process options
+\DeclareOption{default}{\zxjt@defaulttrue}
+\DeclareOption{nodefault}{\zxjt@defaultfalse}
+\DeclareOption{oldxetex}{% no longer supported
+ \PackageError\zxjt@pkgname
+ {'oldxetex' is no longer supported}\@ehc
+}
+\DeclareOption{CJKchecksingle}{\zxjt@checksingletrue}
+\DeclareOption{noCJKchecksingle}{\zxjt@checksinglefalse}
+% effective only in 'new-age' code
+\DeclareOption{adjustcharclass}{\zxjt@adjustcharclasstrue}
+\DeclareOption{noadjustcharclass}{\zxjt@adjustcharclassfalse}
+\DeclareOption{kanakinsoku}{\zxjt@kanakinsokutrue}
+\DeclareOption{nokanakinsoku}{\zxjt@kanakinsokufalse}
+\DeclareOption{useinhibitglue}{\zxjt@useinhibitgluetrue}
+\DeclareOption{nouseinhibitglue}{\zxjt@useinhibitgluefalse}
+%
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{xeCJK}}
+\ExecuteOptions{default,CJKchecksingle,adjustcharclass}
+\ProcessOptions\relax
+
+%% load xeCJK package
+\@ifpackageloaded{xeCJK}{}{%
+ \RequirePackage{xeCJK}%
+}
+\@ifpackagelater{xeCJK}{2012/05/01}{%
+ \bxDebug{xeCJK v3.x found.}%
+ \let\zxjt@go@to@main\@empty
+}{%
+ \bxDebug{xeCJK v2.x found.}%
+ \long\def\zxjt@go@to@main#1\zxjt@begin@old@code{}%
+}
+
+%% jump to main code
+\zxjt@go@to@main
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% NEW-AGE CODE
+
+%% load packages
+\RequirePackage{xparse} % xeCJK has already done it...
+\ExplSyntaxOn
+
+%%-------------------------------------- transition
+
+%% \l__zxjt_default_bool
+\bool_new:N \l__zxjt_default_bool
+\ifzxjt@default
+ \bool_set_true:N \l__zxjt_default_bool
+\fi
+%% \l__zxjt_checksingle_bool
+\bool_new:N \l__zxjt_checksingle_bool
+\ifzxjt@checksingle
+ \bool_set_true:N \l__zxjt_checksingle_bool
+\fi
+%% \l__zxjt_adjustcharclass_bool
+\bool_new:N \l__zxjt_adjustcharclass_bool
+\ifzxjt@adjustcharclass
+ \bool_set_true:N \l__zxjt_adjustcharclass_bool
+\fi
+%% \l__zxjt_kanakinsoku_bool
+\bool_new:N \l__zxjt_kanakinsoku_bool
+\ifzxjt@kanakinsoku
+ \bool_set_true:N \l__zxjt_kanakinsoku_bool
+\fi
+%% \l__zxjt_useinhibitglue_bool
+\bool_new:N \l__zxjt_useinhibitglue_bool
+\ifzxjt@useinhibitglue
+ \bool_set_true:N \l__zxjt_useinhibitglue_bool
+\fi
+
+%%-------------------------------------- error messages
+
+%% \c__zxjt_pkgname_tl
+\tl_const:Nn \c__zxjt_pkgname_tl { zxjatype }
+%
+\cs_new:Npn \__zxjt_msg_new:nn
+ { \msg_new:nnn { \c__zxjt_pkgname_tl } }
+\cs_new:Npn \__zxjt_error:nx
+ { \msg_error:nnx { \c__zxjt_pkgname_tl } }
+\cs_new:Npn \__zxjt_error:n
+ { \msg_error:nn { \c__zxjt_pkgname_tl } }
+%
+\__zxjt_msg_new:nn { xeCJK-incompatible }
+ {
+ Some~incompatible~settings~used~inside~xeCJK.\\
+ This~command~will~not~work~properly.
+ }
+\__zxjt_msg_new:nn { jafamilyinverbatim-disabled }
+ {
+ \token_to_str:N \(no)jafamilyinverbatim \c_space_tl
+ ~is~disabled~in~this~version.
+ }
+\__zxjt_msg_new:nn { CJKfam-failed }
+ {
+ Cannot~switch~to~CJK~family,~since~fetching~the~information~for\\
+ the~current~family~has~failed~for~some~reason.\\
+ (family=#1)
+ }
+
+%%-------------------------------------- helper functions
+
+%% temporary variables
+\tl_new:N \g__zxjt_tmpa_tl
+\dim_new:N \l__zxjt_tmpa_dim
+\box_new:N \g__zxjt_tmpa_box
+
+%% \c__zxjt_Default_class_int
+%% \c__zxjt_CJK_class_int
+%% \c__zxjt_FullLeft_class_int
+% The integer constants for char-classes. These classes are predefined in
+% XeLaTeX kernel, and not likely to change in near future.
+\int_const:Nn \c__zxjt_Default_class_int { 0 }
+\int_const:Nn \c__zxjt_CJK_class_int { 1 }
+\int_const:Nn \c__zxjt_FullLeft_class_int { 2 }
+
+%% \__zxjt_boundary:
+% Invokes the interchar-tokens for transition to the boundary class (255).
+% (A mere \scan_stop: suffices?)
+\cs_new:Nn \__zxjt_boundary:
+ {
+ \ifhmode
+ \hbox:n {}
+ \fi
+ }
+
+%% \__zxjt_leavevmode:
+% The well-known \leavevmode.
+\cs_new:Nn \__zxjt_leavevmode:
+ { \hbox_unpack:N \c_empty_box }
+
+%% \__zxjt_swap_doccmd:NN \cmdA \cmdB
+% Swaps the meaning of two document commands \cmdA and \cmdB. Although \cmdA
+% could call its submacros (\[cmdA code] etc.) produced by xparse mechanism,
+% one only has to simply swap the meaning of macros \cmdA and \cmdB.
+\cs_new:Nn \__zxjt_swap_doccmd:NN
+ {
+ \cs_set_eq:NN \__zxjt_swap_tmp: #1
+ \cs_set_eq:NN #1 #2
+ \cs_set_eq:NN #2 \__zxjt_swap_tmp:
+ \cs_undefine:N \__zxjt_swap_tmp:
+ }
+
+%%-------------------------------------- font-declaration hooks
+
+% The \setCJKxxxfont commands of xeCJK are redefined so that a hook
+% \__zxjt_after_decl_CJKfam:n {<CJK_fam_name>} is invoked on each declration
+% of a CJK family, including a generic one (\CJKrmdefault etc.).
+% If the declaration is done in the preamble then the execution of hook will
+% be delayed until the beginning of the document.
+
+%% Adds a hook to \setCJKxxxfont commands.
+\NewDocumentCommand \__setCJKmainfont { O{} m }
+ {
+ \__setCJKmainfont [ \l__zxjt_scale_spec_tl #1 ] { #2 }
+ \exp_args:Nx \__zxjt_after_decl_CJKfam:n { \CJKrmdefault }
+ }
+\__zxjt_swap_doccmd:NN \__setCJKmainfont \setCJKmainfont
+\NewDocumentCommand \__setCJKsansfont { O{} m }
+ {
+ \__setCJKsansfont [ \l__zxjt_scale_spec_tl #1 ] { #2 }
+ \exp_args:Nx \__zxjt_after_decl_CJKfam:n { \CJKsfdefault }
+ }
+\__zxjt_swap_doccmd:NN \__setCJKsansfont \setCJKsansfont
+\NewDocumentCommand \__setCJKmonofont { O{} m }
+ {
+ \__setCJKmonofont [ \l__zxjt_scale_spec_tl #1 ] { #2 }
+ \exp_args:Nx \__zxjt_after_decl_CJKfam:n { \CJKttdefault }
+ }
+\__zxjt_swap_doccmd:NN \__setCJKmonofont \setCJKmonofont
+\NewDocumentCommand \__setCJKfamilyfont { m O{} m }
+ {
+ \__setCJKfamilyfont { #1 } [ \l__zxjt_scale_spec_tl #2 ] { #3 }
+ \__zxjt_after_decl_CJKfam:n { #1 }
+ }
+\__zxjt_swap_doccmd:NN \__setCJKfamilyfont \setCJKfamilyfont
+
+%% \g__zxjt_CJKfam_seq
+% The record of CJK-family names declared in the preamble.
+\seq_new:N \g__zxjt_CJKfam_seq
+%% \__zxjt_after_decl_CJKfam:n {<fam_name>}
+% The hook.
+% (in the preamble)
+\cs_new:Nn \__zxjt_after_decl_CJKfam:n
+ {
+ \seq_gput_right:Nn \g__zxjt_CJKfam_seq { #1 }
+ }
+% (in the document body)
+\cs_new:Nn \__zxjt_after_decl_CJKfam_db:n
+ {
+ \__zxjt_inspect_CJKfam_info:n { #1 }
+ \__zxjt_invoke_ext_hook:n { #1 }
+ }
+%% The begin-document hook.
+% Processes the entires in \g__zxjt_CJKfam_seq and alters the definition of
+% \__zxjt_after_decl_CJKfam:n.
+\AtBeginDocument
+ {
+ \cs_set_eq:NN \__zxjt_after_decl_CJKfam:n \__zxjt_after_decl_CJKfam_db:n
+ \seq_remove_duplicates:N \g__zxjt_CJKfam_seq
+ \seq_map_function:NN \g__zxjt_CJKfam_seq \__zxjt_after_decl_CJKfam:n
+ \seq_gclear:N \g__zxjt_CJKfam_seq
+ }
+
+%%-------------------------------------- font-selection hooks
+
+% The \CJKfamily of xeCJK is redefined so that a hook
+% \__zxjt_after_decl_CJKfam:n {<CJK_fam_name>} is invoked. The CJK-family
+% name given is recorded in \l__zxjt_CJKfam_tl.
+% NB. \l__zxjt_CJKfam_tl should be same as \xeCJK@family.
+
+%% Adds a hook to \CJKfamily command.
+\NewDocumentCommand \__CJKfamily { m }
+ {
+ \__CJKfamily { #1 }
+ \exp_args:Nx \__zxjt_after_sel_CJKfam:n { #1 }
+ }
+\__zxjt_swap_doccmd:NN \__CJKfamily \CJKfamily
+
+%% \__zxjt_after_decl_CJKfam:n {<fam_name>}
+% The hook.
+\cs_new:Nn \__zxjt_after_sel_CJKfam:n
+ {
+ \tl_set:Nn \l__zxjt_CJKfam_tl { #1 }
+ }
+
+%--------------------------------------- CJK-family inspection
+
+% \__zxjt_inspect_CJKfam_info:n tries to know the NFSS family correspoding to
+% the given CJK-family name (without hacking into xeCJK internal) in the
+% following way:
+% - A text including a CJK letter is typeset in an hbok with a "fresh"
+% CJK-family.
+% - This process would trigger the declaration of the fontspec family
+% corresponding to the CJk-family in issue.
+% - So a hook is attached in advance to \fontspec_set_family:Nnn; the hook
+% record the NFSS family into a temporary global variable.
+
+%% \g__zxjt_CJKfam_prop
+% The map from CJK-family names to NFSS family names.
+\prop_new:N \g__zxjt_CJKfam_prop
+%% \g__zxjt_onefam_info_tl
+\tl_new:N \g__zxjt_onefam_info_tl
+%% \l__zxjt_onefam_info_tl
+\tl_new:N \l__zxjt_onefam_info_tl
+%% \__zxjt_inspect_CJKfam_info:n {<CJK_fam_name>}
+% Tries to fetch the NFSS family name corresponding the given CJK family
+% name; if it succeeds, then the obtained name will be recorded in the map
+% \g__zxjt_CJKfam_prop.
+\cs_new:Nn \__zxjt_inspect_CJKfam_info:n
+ {
+ \prop_if_in:NnF \g__zxjt_CJKfam_prop { #1 }
+ { \__zxjt_inspect_CJKfam_info_aux_i:n { #1 } }
+ }
+\cs_new:Nn \__zxjt_inspect_CJKfam_info_aux_i:n
+ {
+ \tl_gclear:N \g__zxjt_onefam_info_tl
+ \int_compare:nNnT { \XeTeXcharclass "5B57 } = { \c__zxjt_CJK_class_int }
+ {
+ \group_begin:
+ \cs_set_eq:NN \__zxjt_org_set_family:Nnn \fontspec_set_family:Nnn
+ \cs_set:Nn \fontspec_set_family:Nnn {
+ \__zxjt_org_set_family:Nnn ##1 { ##2 } { ##3 }
+ \cs_gset_eq:NN \g__zxjt_onefam_info_tl ##1
+ }
+ \__CJKfamily { #1 }
+ \hbox_set:Nn \l_tmpa_box { ^^^^5b57 }
+ \group_end:
+ }
+ \bxDebug { family( #1 )~<=~ \g__zxjt_onefam_info_tl }
+ \tl_if_empty:NF \g__zxjt_onefam_info_tl
+ {
+ \prop_put:NnV \g__zxjt_CJKfam_prop { #1 } \g__zxjt_onefam_info_tl
+ }
+ }
+
+%--------------------------------------- external hook
+
+%%<+> \zxJaFamilyFontHook
+% The variable to store the hook code.
+\tl_clear_new:N \zxJaFamilyFontHook
+%%<+> \zxJaFamilyName
+% The variable holds the name of the declared CJK family name when the hook
+% is invoked.
+\tl_clear_new:N \zxJaFamilyName
+
+%% \__zxjt_invoke_ext_hook:n {<CJK_fam_name>}
+% Invokes the external hook code.
+\cs_new:Nn \__zxjt_invoke_ext_hook:n
+ {
+ \tl_set:Nn \zxJaFamilyName { #1 }
+ \zxJaFamilyFontHook
+ }
+
+%%-------------------------------------- switching to CJK-family
+
+%% \g__zxjt_encoding_tl
+% The encoding used for CJK-families.
+\tl_new:N \g__zxjt_encoding_tl
+\tl_gset:Nn \g__zxjt_encoding_tl { EU1 }
+
+%% \__zxjt_use_CJKfam:
+% Switches the NFSS family to the family corresponding to the current CJK-
+% family (designated by \CJKfamily etc.).
+\cs_new:Nn \__zxjt_use_CJKfam:
+ {
+ \exp_args:NNx
+ \prop_get:NnNTF \g__zxjt_CJKfam_prop { \l__zxjt_CJKfam_tl }
+ \l__zxjt_onefam_info_tl
+ {
+ \bxDebug { family(\l__zxjt_CJKfam_tl)~=>~\l__zxjt_onefam_info_tl }
+ \fontencoding { \g__zxjt_encoding_tl }
+ \fontfamily { \l__zxjt_onefam_info_tl }
+ \selectfont
+ }
+ {
+ \__zxjt_error:nx { CJKfam-failed } { \l__zxjt_CJKfam_tl }
+ }
+ }
+
+%%-------------------------------------- inhibitglue
+
+%%<*> \inhibitglue
+% Cancles adjustment glues around this command.
+% NB: This is different from suppressing all adjustment; only glues vanish,
+% so punctuation characters will have a truncated width.
+\bool_if:nT
+ % if \inhibitglue does not seem to have a valid definition, one is provided
+ % by this package.
+ { ( \cs_if_free_p:N \inhibitglue )
+ || ( \cs_if_eq_p:NN \inhibitglue \scan_stop: )
+ || ( \cs_if_eq_p:NN \inhibitglue \c_empty_tl )
+ || ( \cs_if_eq_p:NN \inhibitglue \prg_do_nothing: ) }
+ {
+ \cs_undefine:N \inhibitglue
+ \bool_if:NTF \l__zxjt_useinhibitglue_bool
+ {
+ \NewDocumentCommand \inhibitglue {}
+ {
+ \scan_stop:
+ \__zxjt_leavevmode:
+ % cancels left-side glue
+ \unskip \unskip \unskip
+ % cancels right-side glue to come, which is tricky...
+ \__zxjt_cancel_postglue:
+ }
+ }
+ {
+ \NewDocumentCommand \inhibitglue {} {}
+ }
+ }
+
+%% \__zxjt_cancel_postglue:
+% Tries to cancel the right-side glue coming from adjustment process done
+% by xeCJK. This is implemented as follows:
+% - Peek the following token.
+% - If the token is a non-letter character and has the FullLeft char-class,
+% then proceed; otherwise stop here.
+% - Measure the left-side glue of the character.
+% - Put the negative of the measured glue.
+\cs_new:Nn \__zxjt_cancel_postglue:
+ {
+ \peek_after:Nw \__zxjt_cancel_postglue_aux_i:
+ }
+\cs_new:Nn \__zxjt_cancel_postglue_aux_i:
+ {
+ \token_if_other:NT \l_peek_token { \__zxjt_cancel_postglue_aux_ii:N }
+ }
+\cs_new:Nn \__zxjt_cancel_postglue_aux_ii:N
+ {
+ \bool_if:nT
+ { ! (\token_if_cs_p:N #1 )
+ && ( \int_compare_p:nNn
+ { \XeTeXcharclass `#1 } = \c__zxjt_FullLeft_class_int ) }
+ {
+ \__zxjt_measure_leftglue:N #1
+ \skip_horizontal:N \l__zxjt_leftglue_skip
+ }
+ #1
+ }
+
+%% \l__zxjt_leftglue_skip
+% The left-side cenceling glue resulted from the measurement.
+\skip_new:N \l__zxjt_leftglue_skip
+
+%% \__zxjt_measure_leftglue:N {<char>}
+\cs_new:Nn \__zxjt_measure_leftglue:N
+ {
+ \group_begin:
+ \hbox_set:Nn \l_tmpa_box { #1 }
+ \skip_set:Nn \l__zxjt_tmpa_dim { \box_wd:N \l_tmpa_box }
+ \vbox_set:Nn \l_tmpa_box
+ {
+ \dim_set:Nn \hsize { 2\l__zxjt_tmpa_dim }
+ \noindent
+ \hbox:n {} \newline
+ #1
+ }
+ \vbox_set:Nn \l_tmpb_box
+ {
+ \vbox_unpack:N \l_tmpa_box
+ \box_gset_to_last:N \g__zxjt_tmpa_box
+ }
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \hbox_unpack:N \g__zxjt_tmpa_box
+ \unskip \unskip
+ }
+ \dim_set:Nn \l__zxjt_tmpa_dim
+ { \l__zxjt_tmpa_dim - \box_wd:N \l_tmpa_box }
+ \dim_compare:nNnTF { \l__zxjt_tmpa_dim } > { \c_zero_dim }
+ {
+ \skip_set:Nn \l__zxjt_leftglue_skip
+ { -\l__zxjt_tmpa_dim minus -\l__zxjt_tmpa_dim }
+ }
+ { \skip_zero:N \l__zxjt_leftglue_skip }
+ \tl_gset:Nx \g__zxjt_tmpa_tl
+ { \skip_use:N \l__zxjt_leftglue_skip }
+ \group_end:
+ \skip_set:Nn \l__zxjt_leftglue_skip { \g__zxjt_tmpa_tl }
+ \bxDebug { postglue(#1)~=~\skip_use:N \l__zxjt_leftglue_skip }
+ }
+
+%%-------------------------------------- char-class adjustment
+
+%% \__zxjt_adjust_charclass:n
+\cs_new:Nn \__zxjt_adjust_charclass:n
+ {
+ \xeCJKDeclareCharClass {#1}
+ {
+ % Assigning 'FullRight' to small kana letters enables kinsoku at
+ % the left side, but sometimes disrupts spacing around them
+ % (these letters must be behaved same as ordinary kana/kanji letters
+ % with respect to spacing). Moreover kinsoku before small kana
+ % is criticized as "too strong" to use as default by some experts.
+ % So they are treated as normal CJK letters.
+ "3041, "3043, "3045, "3047, "3049, "3063, "3083, "3085, "3087, "308E,
+ "3095, "3096, "30A1, "30A3, "30A5, "30A7, "30A9, "30C3, "30E3, "30E5,
+ "30E7, "30EE, "30F5, "30F6, "30FC, "31F0, "31F1, "31F2, "31F3, "31F4,
+ "31F5, "31F6, "31F7, "31F8, "31F9, "31FA, "31FB, "31FC, "31FD, "31FE,
+ "31FF, "309D, "309E, "30FD, "30FE,
+ }
+ \xeCJKDeclareCharClass { FullRight }
+ {
+ % U+2015 is treated same as U+2014.
+ "2015, "309B, "309C,
+ }
+ }
+
+%% Dispatches adjustment if 'adjustcharclass' option is set.
+\bool_if:NT \l__zxjt_adjustcharclass_bool
+ {
+ \bool_if:NTF \l__zxjt_kanakinsoku_bool
+ { \__zxjt_adjust_charclass:n { FullRight } }
+ { \__zxjt_adjust_charclass:n { CJK } }
+ \xeCJKsetup { LongPunct+ = { ^^^^2015 } }
+ }
+
+%%-------------------------------------- public commands
+
+%%<*> \setjamainfont / \setjasansfont / \setjamonofont
+%%<*> \setjafamilyfont / \jafamily
+% Now these are synonymous to corresponding \...CJK... commands.
+\NewDocumentCommand \setjamainfont {}
+ { \setCJKmainfont }
+\NewDocumentCommand \setjasansfont {}
+ { \setCJKsansfont }
+\NewDocumentCommand \setjamonofont {}
+ { \setCJKmonofont }
+\NewDocumentCommand \setjafamilyfont {}
+ { \setCJKfamilyfont }
+\NewDocumentCommand \jafamily {}
+ { \CJKfamily }
+
+%%<*> \zxjapanesestyle
+%% Switches to a setting suitable for Japanese typesetting.
+\NewDocumentCommand { \zxjapanesestyle } {}
+ {
+ \xeCJKsetup
+ {
+ AllowBreakBetweenPuncts = true,
+ PunctStyle = fullwidth,
+ }
+ \zxusejapaneseparameters
+ }
+
+%%<*> \zxusejapaneseparameters
+%% Sets some xeCJK parameters to values suiable for Japanese.
+\NewDocumentCommand { \zxusejapaneseparameters } {}
+ {
+ \xeCJKsetup
+ {
+ CJKglue =
+ { \hspace { 0pt plus .08\baselineskip minus .008\baselineskip } },
+ CJKecglue =
+ { \hspace { 0.25em plus 0.15em minus 0.05em } },
+ }
+ }
+%%<*> \zxuseoriginalparameters
+%% Reets some xeCJK parameters to their original values.
+\NewDocumentCommand { \zxuseoriginalparameters } {}
+ {
+ \xeCJKsetup
+ {
+ CJKglue =
+ { \hspace { 0pt plus .08\baselineskip } },
+ CJKecglue =
+ { \c_space_token },
+ }
+ }
+
+%% \__zxjt_scale_tl
+% The scale value to be applied to CJK fonts.
+\tl_new:N \__zxjt_scale_tl
+%% \l__zxjt_scale_spec_tl
+\tl_new:N \l__zxjt_scale_spec_tl
+
+%%<*> \setjafontscale{<real>}
+%% Sets the value of \__zxjt_scale_tl, which defaults to 1.
+\NewDocumentCommand \setjafontscale { m }
+ {
+ % NB: the argument is not expanded
+ \tl_set:Nn \__zxjt_scale_tl { #1 }
+ \tl_if_blank:VTF \__zxjt_scale_tl
+ { \tl_clear:N \l__zxjt_scale_spec_tl }
+ {
+ \tl_set:Nn \l__zxjt_scale_spec_tl
+ { Scale = \__zxjt_scale_tl , }
+ }
+ }
+
+%%<*> \[no]jafamilyinverbatim
+% NB: THESE COMMADS ARE DISABLED at the current version.
+\NewDocumentCommand \jafamilyinverbatim {}
+ { \__zxjt_error_jafamilyinverbatim: }
+\NewDocumentCommand \nojafamilyinverbatim {}
+ { \__zxjt_error_jafamilyinverbatim: }
+\cs_new:Nn \__zxjt_error_jafamilyinverbatim:
+ {
+ \__zxjt_error:n { jafamilyinverbatim-disabled }
+ \cs_set_eq:NN \__zxjt_error_jafamilyinverbatim: \prg_do_nothing:
+ }
+
+%% Shorthand commands \< and \>
+\AtBeginDocument
+ {
+ % \< is equated with \inhibitglue only if it is undefined.
+ \cs_if_free:NT \<
+ { \cs_set_eq:NN \< \inhibitglue }
+ % \> is redefined so it does \CJKecglue in text mode, only if it is
+ % not changed from the original LaTeX definition.
+ \tl_set:Nn \l_tmpa_tl { \mskip \medmuskip }
+ \token_if_eq_meaning:NNT \> \l_tmpa_tl
+ {
+ \cs_set:Npn \>
+ {
+ \ifmmode
+ \mskip \medmuskip
+ \else
+ \CJKecglue \scan_stop:
+ \fi
+ }
+ }
+ }
+
+%%<*> \textrawja {<text>}
+% Prints the text in the current CJK font, without xeCJK processing.
+\NewDocumentCommand \textrawja {}
+ { \__zxjt_text_raw:nn { \__zxjt_use_CJKfam: } }
+%%<*> \textrawen {<text>}
+% Prints the text in the current non-CJK font, without xeCJK processing.
+\NewDocumentCommand \textrawen {}
+ { \__zxjt_text_raw:nn { \prg_do_nothing: } }
+\cs_new:Nn \__zxjt_text_raw:nn
+ {
+ \__zxjt_leavevmode:
+ \__zxjt_boundary:
+ \group_begin:
+ \xeCJKsetup { xeCJKactive = false }
+ #1#2
+ \group_end:
+ \__zxjt_boundary:
+ }
+
+%%<*> rawjatext/rawentext environments
+\NewDocumentEnvironment { rawjatext } {}
+ { \__zxjt_raw_text:n { \__zxjt_use_CJKfam: } }
+ { \__zxjt_boundary: }
+\NewDocumentEnvironment { rawentext } {}
+ { \__zxjt_raw_text:n { \prg_do_nothing: } }
+ { \__zxjt_boundary: }
+\cs_new:Nn \__zxjt_raw_text:n
+ {
+ \__zxjt_leavevmode:
+ \__zxjt_boundary:
+ \xeCJKsetup { xeCJKactive = false }
+ #1
+ }
+
+%%-------------------------------------- initial settings
+
+%% cooperation with BXJS classes
+\setjafontscale { }
+\cs_if_exist:NT \jsDocClass
+ {
+ \setjafontscale { \jsScale }
+ }
+\cs_if_exist:NT \Cjascale
+ {
+ \setjafontscale { \Cjascale }
+ }
+
+%% drivers for \UI & \Ux
+\cs_set:Npn \zxjt@Ux
+ { \char \bxUcv }
+\cs_set:Npn \zxjt@Uxh #1
+ { \char "#1 \c_space_tl }
+\cs_set:Npn \zxjt@UI
+ {
+ \group_begin:
+ \__zxjt_use_CJKfam:
+ \char \bxUcv
+ \group_end:
+ }
+\cs_set:Npn \zxjt@UIh #1
+ {
+ \group_begin:
+ \__zxjt_use_CJKfam:
+ \char "#1 \c_space_tl
+ \group_end:
+ }
+
+%% when option 'checksingle' is set
+\bool_if:NT \l__zxjt_checksingle_bool
+ {
+ \xeCJKsetup
+ { CheckSingle = true }
+ }
+
+%% when option 'default' is set
+\bool_if:NT \l__zxjt_default_bool
+ { \zxjapanesestyle }
+
+%%-------------------------------------- all done
+\ExplSyntaxOff
+\endinput
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% NEW-AGE CODE
+\zxjt@begin@old@code
+
+%% load prerequisite packages
+\RequirePackage{etoolbox}
+\endlinechar=-1 %
+
+%%%% definitions
+%\def\zxjt@pkgname{zxjatype}
+\def\zxjt@error{\PackageError\zxjt@pkgname}
+\def\zxjt@warn{\PackageWarningNoLine\zxjt@pkgname}
+%
+\newcount\zxjt@olspc
+\newcount\zxjt@orspc
+\newcount\zxjt@lspc
+\newcount\zxjt@rspc
+\newcount\zxjt@lbspc
+\newcount\zxjt@raspc
+\newcount\zxjt@cnta
+\newcount\zxjt@cntb
+\newif\ifzxjt@jafamilyinverbatim
+\newif\ifzxjt@patch@success
+
+% make 'checksingle' effective
+\ifzxjt@checksingle
+ \let\xeCJK@i@i\xeCJK@checksingle
+\fi
+
+
+%%-------- Patches to xeCJK's internal macros
+
+\zxjt@patch@successtrue
+% \xeCJK@setkern
+\@gobble{\if}%if-match
+\patchcmd{\xeCJK@setkern}
+ {\fi\ifnum\xeCJK@cnta<0}
+ {\else\zxjt@patch@xeCJK@setkern#1#2\fi\ifnum\xeCJK@cnta<0}
+ {}{\zxjt@patch@successfalse}
+\@gobble{\fi}%if-match
+% \xeCJK@punctrule
+\@gobble{\if\if}%if-match
+\patchcmd{\xeCJK@punctrule}
+ {\fi\xeCJK@cntd=\xeCJK@cntc}
+ {\else\zxjt@patch@xeCJK@punctrule#1{#2}\fi\xeCJK@cntd=\xeCJK@cntc}
+ {}{\zxjt@patch@successfalse}
+%
+\ifzxjt@patch@success
+ \bxDebug{Patch applied to xeCJK.}
+\else
+ \zxjt@error{Failed in patching to xeCJK}
+ {Package loading is aborted right now.}
+ \zxjt@restore@codes
+\expandafter\endinput\fi\relax
+
+%%-------- User interface
+
+%%<*> \zxjapanesestyle
+%% Switches to a setting suitable for Japanese typesetting.
+\newcommand*\zxjapanesestyle{
+ \punctstyle{quasijis}
+ \xeCJKallowbreakbetweenpuncts
+ %\CJKaddspaces
+ \zxusejapaneseparameters
+}
+
+%%<*> \zxusejapaneseparameters
+%% Sets some xeCJK parameters to values suiable for Japanese.
+\newcommand*\zxusejapaneseparameters{
+\def\CJKglue{\hskip \z@ \@plus .08\baselineskip \@minus .008\baselineskip}
+\CJKsetecglue{\hskip 0.25em\@plus 0.15em\@minus 0.05em}
+}
+
+%%<*> \zxuseoriginalparameters
+%% Reets some xeCJK parameters to their original values.
+\newcommand*\zxuseoriginalparameters{
+\def\CJKglue{\hskip \z@ \@plus .08\baselineskip}
+\CJKsetecglue{ }
+}
+
+%%<*> \setjamainfont[<features>]{<font_name>}
+%%<*> \setjasansfont[<features>]{<font_name>}
+%%<*> \setjamonofont[<features>]{<font_name>}
+%%<*> \setjafamilyfont{<CJK_family_name>}[<features>]{<font_name>}
+%% Same as setCJK...font, except that 'Scale=\zxjt@scale' is specified as a feature.
+\def\setjamainfont{\zxjt@newfontfamily{rm}}
+\def\setjasansfont{\zxjt@newfontfamily{sf}}
+\def\setjamonofont{\zxjt@newfontfamily{tt}}
+\def\setjafamilyfont{\zxjt@newfontfamily}
+\def\zxjt@newfontfamily#1{
+ \@ifnextchar[{\zxjt@newfontfamily@a{#1}}
+ {\zxjt@newfontfamily@a{#1}[]}}
+\def\zxjt@newfontfamily@a#1[#2]{
+ \def\zxJaFamilyName{#1}\zxJaFamilyFontHook
+ \xeCJK@newfontfamily@{#1}[Scale=\zxjt@scale,#2]}
+
+%%<*> \jafamily{<CJK_family_name>}
+\let\jafamily\CJKfamily
+\let\zxjafamily\CJKfamily
+
+%%<+> \zxJaFamilyFontHook
+%% Hook set in \setja...font commands. The new family name is
+%% stored in \zxJaFamilyName.
+\let\zxJaFamilyFontHook\@empty
+
+%%<*> \setjafontscale{<real>}
+%% Sets the value of \zxjt@scale, which defaults to 1.
+\def\setjafontscale#1{\def\zxjt@scale{#1}}
+\setjafontscale{1}
+
+%% <*> \>
+\def\>{\ifmmode\mskip\medmuskip\else \CJKecglue\relax \fi}
+
+%%<*> \zxinhibitglue
+%% Removes a intercharacter glue inserted for space adjustment.
+\protected\def\inhibitglue{
+ \relax\leavevmode % build bounadry
+ \ifdim\lastskip=\zxjt@icgprobe@value\relax
+ \unskip\unskip\unskip % removes the adjuster skip plus probe skips
+ \bxDebug{cancel glue right}%
+ \fi
+ \kern-\zxjt@icgprobe@value\kern\zxjt@icgprobe@value % probe for forward check
+}
+\AtBeginDocument{
+ \ifx\<\@undefined \let\<\inhibitglue \fi
+}
+
+%%-------- Define a new punctrule 'quasijis'
+% The punctrule 'quasijis' is a spacing rule which roughly implements the rule
+% descrived in JIS X 4051 on the xeCJK system.
+
+%% \xeCJK@ps@quasijis
+% NB: The package should not depend on its value (10).
+\def\xeCJK@ps@quasijis{10}
+
+%% \zxjt@icgprobe@value
+\def\zxjt@icgprobe@value{10sp}
+
+%% \zxjt@cpar
+\def\zxjt@cpar#1#2{%
+ \ifcsname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @#1@#2\endcsname
+ \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @#1@#2\endcsname
+ \else 0
+ \fi\relax
+}
+
+%% \zxjt@patch@xeCJK@setkern
+\def\zxjt@patch@xeCJK@setkern#1#2{
+ \ifnum\xeCJK@punctstyle=\xeCJK@ps@quasijis\relax
+ \zxjt@lbspc=\zxjt@cpar{loglue}{#1}
+ \zxjt@rspc=\zxjt@cpar{roglue}{#1}
+ \zxjt@lspc=\zxjt@cpar{loglue}{#2}
+ \zxjt@raspc=\zxjt@cpar{roglue}{#2}
+ \ifnum\zxjt@lspc=25
+ \xeCJK@cnta=25\relax
+ \else\ifnum\zxjt@rspc=25
+ \xeCJK@cnta=25\relax
+ \else\ifnum\numexpr\zxjt@lbspc+\zxjt@rspc=0\relax
+ \xeCJK@cnta=\numexpr\zxjt@rspc+\zxjt@lspc\relax
+ \else\ifnum\numexpr\zxjt@lspc+\zxjt@raspc=0\relax
+ \xeCJK@cnta=\numexpr\zxjt@rspc+\zxjt@lspc\relax
+ \else
+ \xeCJK@cnta=\numexpr\zxjt@rspc+\zxjt@lspc-50\relax
+ \ifnum\xeCJK@cnta<0 \xeCJK@cnta=0 \fi
+ \fi\fi\fi\fi
+ \bxDebug{<#1>\the\zxjt@rspc+<#2>\the\zxjt@lspc::\the\xeCJK@cnta}
+ \fi
+}
+
+%% \zxjt@patch@xeCJK@punctrule
+\def\zxjt@patch@xeCJK@punctrule#1#2{
+ \ifnum\xeCJK@punctstyle=\xeCJK@ps@quasijis\relax
+ \zxjt@olspc=\csname xeCJK@\xeCJK@bboxname @lspace@#1\endcsname\relax
+ \zxjt@orspc=\csname xeCJK@\xeCJK@bboxname @rspace@#1\endcsname\relax
+ % limit sum of both side-bearings to either 0 or 50
+ \zxjt@lspc=0 \zxjt@rspc=0\relax
+ \ifcsname zxjt@jisfullwidth@#1\endcsname
+ \else\ifnum\zxjt@olspc>40\relax
+ \zxjt@lspc=50\relax
+ \else\ifnum\zxjt@orspc>40\relax
+ \zxjt@rspc=50\relax
+ \else
+ \ifnum\zxjt@olspc>15 \ifnum\zxjt@orspc>15\relax
+ \zxjt@lspc=25 \zxjt@rspc=25\relax
+ \fi\fi
+ \fi\fi\fi
+ \xeCJK@cnta=\csname zxjt@#2spc\endcsname
+ \xeCJK@cntc=\xeCJK@cnta
+ \xeCJK@cntd=\xeCJK@cnta
+ \bxDebug{<#1>:\the\zxjt@lspc/\the\zxjt@rspc}
+ \fi
+}
+
+%% \zxjt@jis@fullwidth{<char>}
+\def\zxjt@jis@fullwidth#1{
+ \expandafter\def\csname zxjt@jisfullwidth@#1\endcsname{}
+}
+\zxjt@jis@fullwidth{^^^^ff01}% FULLWIDTH EXCLAMATION MARK
+
+%%------ adjustment for Japanese font scaling
+
+%% \zxjt@lettodimenx{<CSname>}
+\def\zxjt@lettodimenx#1{
+ \expandafter\let\expandafter\zxjt@dimenx\csname#1\endcsname
+}
+
+%% \zxjt@outputglue
+\def\zxjt@outputglue{
+ \ifnum\xeCJK@punctstyle=\xeCJK@ps@quasijis\relax
+ \ifdim\lastkern=\zxjt@icgprobe@value\relax
+ \unkern\unkern
+ \bxDebug{cancel glue left}%
+ \else
+ {\xeCJK@setfont % switch to CJK font
+ \hskip\zxjt@dimenx\space\@minus\zxjt@dimenx
+ \hskip-\zxjt@icgprobe@value\hskip\zxjt@icgprobe@value}
+ \fi
+ \else
+ \hskip\zxjt@dimenx\space\@plus0.1em \@minus0.1em\relax
+ \fi
+}
+
+%% REVISE: \xeCJK@i@ii
+\def\xeCJK@i@ii#1{
+ \xeCJK@punctrule{#1}{l}
+ \zxjt@lettodimenx{xeCJK\xeCJK@punctstyle\xeCJK@bboxname @lglue@#1}
+ \zxjt@outputglue
+ \xeCJK@setprepunct{#1}}
+
+%% REVISE: \xeCJK@afterpostpunct
+\def\xeCJK@afterpostpunct{
+ \vrule width \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname
+ @rrule@\xeCJK@lastpunct\endcsname depth \z@ height \z@
+ \zxjt@lettodimenx{xeCJK\xeCJK@punctstyle\xeCJK@bboxname @rglue@\xeCJK@lastpunct}
+ \zxjt@outputglue}
+
+%%------ add hook to \verbatim@font
+
+%%<*> \[no]jafamilyinverbatim
+\let\jafamilyinverbatim\zxjt@jafamilyinverbatimtrue
+\let\nojafamilyinverbatim\zxjt@jafamilyinverbatimfalse
+
+%% \zxjt@verbatim@font
+\def\zxjt@verbatim@font{
+ \ifnum\XeTeXinterchartokenstate>\z@
+ \XeTeXinterchartokenstate\z@
+ \ifzxjt@jafamilyinverbatim
+ \CJKfamily{tt}\xeCJK@setfont
+ \fi
+ \fi}
+\AtBeginDocument{
+ \g@addto@macro\verbatim@font{\zxjt@verbatim@font}
+}
+
+%%------ raw input
+
+%%<*> \textrawja/\textrawen
+\DeclareRobustCommand\textrawja{
+ \zxjt@text@raw{\zxjt@setCJKfont}}
+\DeclareRobustCommand\textrawen{
+ \zxjt@text@raw{\relax}}
+\def\zxjt@text@raw#1#2{
+ \leavevmode\zxjt@boundary{\XeTeXinterchartokenstate\z@#1#2}
+ \zxjt@boundary}
+
+%%<*> rawjatext/rawentext (environment)
+\newenvironment{rawjatext}
+ {\zxjt@raw@text{\zxjt@setCJKfont}}{\zxjt@boundary}
+\newenvironment{rawentext}
+ {\zxjt@raw@text{\relax}}{\zxjt@boundary}
+\def\zxjt@raw@text#1{
+ \zxjt@boundary\XeTeXinterchartokenstate\z@#1}
+
+%% \zxjt@boundary
+\def\zxjt@boundary{\ifhmode\hbox{}\fi}
+
+%% \zxjt@setCJKfont
+% Sometimes needed instead of \xeCJK@setfont.
+\def\zxjt@setCJKfont{
+ \csname xeCJK@font@\xeCJK@family\endcsname}
+
+%%------ other adaptations
+
+% make U+2015 behave similarly as U+2014
+\xeCJK@postPunct{20}{15}
+\expandafter\def\csname xeCJK@specialpunct^^^^2015\endcsname{}
+
+%% fix to \xeCJK@@checksingle
+\def\zxjt@xeCJK@@checksingle{%
+ \ifcat ^^^^3002\@let@token \expandafter\xeCJK@@@checksingle
+ \else \expandafter\xeCJK@setcurrentchar@i \fi}
+\ifx\xeCJK@@checksingle\zxjt@xeCJK@@checksingle
+\def\xeCJK@@checksingle{%
+ \ifcat ^^^^3002\noexpand\@let@token \expandafter\xeCJK@@@checksingle
+ \else \expandafter\xeCJK@setcurrentchar@i \fi}
+\fi
+\let\zxjt@xeCJK@@checksingle\@undefined
+
+%%------ initial settings
+
+% cooperation with BXJS classes
+\ifx\jsDocClass\@undefined\else
+\edef\zxjt@scale{\jsScale}
+%\let\jsInhibitGlue\inhibitglue
+\fi
+
+% drivers for \UI & \Ux
+\def\zxjt@Ux{\char\bxUcv}
+\def\zxjt@Uxh#1{\char"#1 }
+\def\zxjt@UI{{\xeCJK@setfont\char\bxUcv}}
+\def\zxjt@UIh#1{{\xeCJK@setfont\char"#1 }}
+
+% when option 'default' is set
+\ifzxjt@default
+ \zxjapanesestyle
+\fi
+
+% verbatim font
+\jafamilyinverbatim
+
+%%------ backward compatibility
+
+\def\zxjt@compat#1#2{\ifx#1\@undefined \let#1#2\fi}
+\zxjt@compat\xeCJKjapanesestyle\zxjapanesestyle
+\zxjt@compat\xeCJKusejapaneseparameters\zxusejapaneseparameters
+\zxjt@compat\xeCJKuseoriginalparameters\zxuseoriginalparameters
+\zxjt@compat\CJKinhibitglue\inhibitglue
+
+%%------ all done
+\endlinechar `\^^M
+\endinput
+%% EOF